summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bin/build_release_package.pl13
-rwxr-xr-xconfigure.exebin1187840 -> 1187840 bytes
-rw-r--r--demos/spreadsheet/spreadsheetdelegate.cpp6
-rw-r--r--dist/changes-4.5.220
-rw-r--r--doc/src/3rdparty.qdoc136
-rw-r--r--doc/src/designer-manual.qdoc134
-rw-r--r--doc/src/emb-fonts.qdoc2
-rw-r--r--doc/src/emb-makeqpf.qdoc9
-rw-r--r--doc/src/images/designer-choosing-form.pngbin38078 -> 39080 bytes
-rw-r--r--doc/src/images/rgbController-arrangement.pngbin0 -> 10813 bytes
-rw-r--r--doc/src/images/rgbController-configure-connection1.pngbin0 -> 23241 bytes
-rw-r--r--doc/src/images/rgbController-configure-connection2.pngbin0 -> 28655 bytes
-rw-r--r--doc/src/images/rgbController-final-layout.pngbin0 -> 11275 bytes
-rw-r--r--doc/src/images/rgbController-form-gridLayout.pngbin0 -> 11235 bytes
-rw-r--r--doc/src/images/rgbController-property-editing.pngbin0 -> 9158 bytes
-rw-r--r--doc/src/images/rgbController-screenshot.pngbin0 -> 8995 bytes
-rw-r--r--doc/src/images/rgbController-selectForLayout.pngbin0 -> 20981 bytes
-rw-r--r--doc/src/images/rgbController-signalsAndSlots.pngbin0 -> 10050 bytes
-rw-r--r--doc/src/index.qdoc7
-rw-r--r--doc/src/installation.qdoc2
-rw-r--r--doc/src/qset.qdoc9
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp2
-rw-r--r--doc/src/snippets/picture/picture.cpp2
-rw-r--r--doc/src/tools-list.qdoc6
-rw-r--r--doc/src/topics.qdoc2
-rw-r--r--examples/dialogs/sipdialog/dialog.cpp13
-rw-r--r--examples/dialogs/sipdialog/main.cpp2
-rw-r--r--examples/itemviews/puzzle/puzzle.pro5
-rw-r--r--examples/network/googlesuggest/googlesuggest.pro4
-rw-r--r--examples/qtconcurrent/imagescaling/imagescaling.pro2
-rw-r--r--examples/qtconcurrent/qtconcurrent.pro5
-rw-r--r--examples/sql/sqlwidgetmapper/sqlwidgetmapper.pro3
-rw-r--r--examples/widgets/movie/movie.pro8
-rw-r--r--mkspecs/common/wince.conf7
-rw-r--r--qmake/generators/symbian/symmake.cpp3
-rw-r--r--qmake/generators/symbian/symmake.h1
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp2
-rw-r--r--qmake/generators/win32/winmakefile.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/effectwidget.cpp3
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp5
-rw-r--r--src/corelib/arch/qatomic_windows.h14
-rw-r--r--src/corelib/global/qglobal.cpp49
-rw-r--r--src/corelib/io/qdatastream.cpp92
-rw-r--r--src/corelib/io/qsettings.cpp13
-rw-r--r--src/corelib/kernel/qobject.cpp2
-rw-r--r--src/corelib/tools/qcryptographichash.cpp2
-rw-r--r--src/corelib/tools/qlistdata.cpp6
-rw-r--r--src/corelib/tools/qmap.cpp6
-rw-r--r--src/corelib/tools/qstringlist.cpp2
-rw-r--r--src/gui/dialogs/qfiledialog.cpp17
-rw-r--r--src/gui/dialogs/qfilesystemmodel.cpp11
-rw-r--r--src/gui/dialogs/qfilesystemmodel_p.h25
-rw-r--r--src/gui/dialogs/qfontdialog.cpp8
-rw-r--r--src/gui/dialogs/qfontdialog_mac.mm40
-rw-r--r--src/gui/dialogs/qmessagebox.cpp2
-rw-r--r--src/gui/embedded/qkbdtty_qws.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp6
-rw-r--r--src/gui/image/qicon.cpp9
-rw-r--r--src/gui/image/qpixmap.cpp95
-rw-r--r--src/gui/image/qpixmap_qws.cpp14
-rw-r--r--src/gui/image/qpixmap_win.cpp45
-rw-r--r--src/gui/image/qpixmap_x11.cpp28
-rw-r--r--src/gui/itemviews/qheaderview.cpp4
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.cpp3
-rw-r--r--src/gui/itemviews/qtreeview.cpp8
-rw-r--r--src/gui/kernel/qapplication_win.cpp29
-rw-r--r--src/gui/kernel/qcocoaapplicationdelegate_mac.mm2
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm28
-rw-r--r--src/gui/kernel/qcocoaview_mac_p.h1
-rw-r--r--src/gui/kernel/qcursor.cpp4
-rw-r--r--src/gui/kernel/qkeysequence.cpp2
-rw-r--r--src/gui/kernel/qwidget_x11.cpp3
-rw-r--r--src/gui/painting/qpainterpath.cpp8
-rw-r--r--src/gui/painting/qprinter.cpp32
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp8
-rw-r--r--src/gui/styles/qgtkstyle.cpp65
-rw-r--r--src/gui/styles/qs60style.cpp281
-rw-r--r--src/gui/styles/qs60style_p.h17
-rw-r--r--src/gui/styles/qs60style_s60.cpp491
-rw-r--r--src/gui/styles/qs60style_simulated.cpp9
-rw-r--r--src/gui/styles/qstylesheetstyle.cpp9
-rw-r--r--src/gui/text/qfontengine_win.cpp6
-rw-r--r--src/gui/text/qfontmetrics.cpp12
-rw-r--r--src/gui/widgets/qtabbar.cpp11
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp3
-rw-r--r--src/network/socket/qabstractsocket.cpp28
-rw-r--r--src/network/ssl/qsslcertificate.cpp2
-rw-r--r--src/network/ssl/qsslsocket_openssl.cpp25
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp3
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h4
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp191
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp23
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp15
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp42
-rw-r--r--src/svg/qsvggenerator.cpp2
-rw-r--r--tests/auto/qcombobox/tst_qcombobox.cpp8
-rw-r--r--tests/auto/qdatastream/tst_qdatastream.cpp8
-rw-r--r--tests/auto/qdate/tst_qdate.cpp26
-rw-r--r--tests/auto/qfiledialog/tst_qfiledialog.cpp33
-rw-r--r--tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp65
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp38
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp16
-rw-r--r--tests/auto/qicon/tst_qicon.cpp43
-rw-r--r--tests/auto/qmake/tst_qmake.cpp16
-rw-r--r--tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp10
-rw-r--r--tests/auto/qtreeview/tst_qtreeview.cpp29
-rw-r--r--tests/auto/selftests/expected_skip.txt2
-rw-r--r--tests/auto/selftests/skip/tst_skip.cpp6
-rw-r--r--tests/auto/selftests/tst_selftests.cpp5
-rw-r--r--tools/assistant/lib/fulltextsearch/qclucene_global_p.h16
-rw-r--r--tools/assistant/tools/assistant/centralwidget.cpp166
-rw-r--r--tools/assistant/tools/assistant/centralwidget.h10
-rw-r--r--tools/assistant/translations/qt_help.pro3
-rw-r--r--tools/assistant/translations/translations.pro3
-rw-r--r--tools/configure/configureapp.cpp44
-rw-r--r--tools/designer/src/components/formeditor/qdesigner_resource.cpp34
-rw-r--r--tools/qdoc3/doc.cpp4
-rw-r--r--tools/qdoc3/main.cpp4
-rw-r--r--tools/qdoc3/test/classic.css8
-rw-r--r--translations/assistant_da.ts1166
-rw-r--r--translations/qt_da.ts7745
-rw-r--r--translations/qt_help_da.ts387
-rw-r--r--translations/translations.pri2
124 files changed, 11016 insertions, 1161 deletions
diff --git a/bin/build_release_package.pl b/bin/build_release_package.pl
index 44b0fb1..62390eb 100644
--- a/bin/build_release_package.pl
+++ b/bin/build_release_package.pl
@@ -116,8 +116,8 @@ if (@ARGV)
runSystemCmd("attrib -A ${epocroot}\\${winscwDbgDir}\\*");
# Build Qt
- runSystemCmd("configure -platform win32-mwc -xplatform symbian-abld -openssl-linked -qt-sql-sqlite -system-sqlite -confirm-license -opensource");
- buildDir("src", $qtRootDir, $platform, $build);
+ runSystemCmd("configure -platform win32-mwc -xplatform symbian-abld -qt-sql-sqlite -system-sqlite -confirm-license -opensource");
+ buildDir("src", $qtRootDir, $platform, $build, "winscw");
# Copy misc stuff
runSystemCmd("xcopy ${qtRootDir}\\bin\\* ${releaseDirQt}\\bin /F /R /Y /I /D");
@@ -143,7 +143,8 @@ if (@ARGV)
# Also build demos & examples and add fluidlauncher sis
buildDir("examples", $qtRootDir, $platform, $build);
buildDir("demos", $qtRootDir, $platform, $build);
- parsePkgFile($demoAppPkgFileName, $epocroot, $build, $platform, $releaseDirEpocroot, $qtRootDirForMatch, $releaseDirQt);
+ # Do not include binaries for demo apps as winscw versions are not BC accross all S60 platform versions
+ #parsePkgFile($demoAppPkgFileName, $epocroot, $build, $platform, $releaseDirEpocroot, $qtRootDirForMatch, $releaseDirQt);
createSis($demoAppPkgFileName, $releaseDirSis, "selfsigned.cer", "selfsigned.key", $demoAppSisFileNameBase);
}
@@ -270,11 +271,15 @@ sub buildDir
my $qtRootDir = $_[1];
my $platform = $_[2];
my $build = $_[3];
+ my $extra = $_[4];
chdir($buildDir);
runSystemCmd("qmake");
runSystemCmd("bldmake bldfiles");
runSystemCmd("abld build ${platform} ${build}");
- runSystemCmd("abld build winscw udeb");
+ if ($extra =~ m/winscw/i)
+ {
+ runSystemCmd("abld build winscw udeb");
+ }
chdir($qtRootDir);
}
diff --git a/configure.exe b/configure.exe
index 9b6621f..c4b5d7f 100755
--- a/configure.exe
+++ b/configure.exe
Binary files differ
diff --git a/demos/spreadsheet/spreadsheetdelegate.cpp b/demos/spreadsheet/spreadsheetdelegate.cpp
index 465c92f..2916757 100644
--- a/demos/spreadsheet/spreadsheetdelegate.cpp
+++ b/demos/spreadsheet/spreadsheetdelegate.cpp
@@ -51,7 +51,7 @@ QWidget *SpreadSheetDelegate::createEditor(QWidget *parent,
{
if (index.column() == 1) {
QDateTimeEdit *editor = new QDateTimeEdit(parent);
- editor->setDisplayFormat("dd/M/yyy");
+ editor->setDisplayFormat("dd/M/yyyy");
editor->setCalendarPopup(true);
return editor;
}
@@ -93,7 +93,7 @@ void SpreadSheetDelegate::setEditorData(QWidget *editor,
if (dateEditor) {
dateEditor->setDate(QDate::fromString(
index.model()->data(index, Qt::EditRole).toString(),
- "d/M/yy"));
+ "d/M/yyyy"));
}
}
}
@@ -107,7 +107,7 @@ void SpreadSheetDelegate::setModelData(QWidget *editor,
} else {
QDateTimeEdit *dateEditor = qobject_cast<QDateTimeEdit *>(editor);
if (dateEditor) {
- model->setData(index, dateEditor->date().toString("dd/M/yyy"));
+ model->setData(index, dateEditor->date().toString("dd/M/yyyy"));
}
}
}
diff --git a/dist/changes-4.5.2 b/dist/changes-4.5.2
index 1e00208..dcb77d6 100644
--- a/dist/changes-4.5.2
+++ b/dist/changes-4.5.2
@@ -139,6 +139,26 @@ Qt for Windows CE
* Plugins *
****************************************************************************
+- directfb
+ * Make sure we pick an approriate format for pixmaps. E.g. use the same as
+ the primary surface for opaque pixmaps and pick an appropriate one for
+ transparent pixmaps if the primary surface format is not transparent.
+ * Properly fall back to the raster engine for pens that aren't solidcolor
+ * Properly fall back to raster engine with "mirrored" scales
+ * Make sure window surfaces are the approriate pixel format and created in
+ video memory if supported
+ * Fix clipping bug that would cause painting errors
+ * Fix various crash bugs
+ * Fix bugs when transforming/copying pixmaps with alpha channel
+ * Fix various bugs with regards to painting with alpha channel/porter duff
+ * Optimize a coupld of internal functions to slightly speed up drawing
+ * Optimize raster fall backs
+ * Allow more customization for Flipping options
+ * Fix drawing with opacity != 1.0
+ * Support for better logging when trying to debug performance problems.
+ * Fix bug in keyboard handling that caused modifiers not to work
+ * Get rid of some compiler warnings
+
****************************************************************************
* Important Behavior Changes *
diff --git a/doc/src/3rdparty.qdoc b/doc/src/3rdparty.qdoc
index a87878e..23dfb12 100644
--- a/doc/src/3rdparty.qdoc
+++ b/doc/src/3rdparty.qdoc
@@ -61,6 +61,15 @@
\tableofcontents
+ \section1 DES (\c des.cpp)
+
+ \e{Implementation of DES encryption for NTLM\br
+ Copyright 1997-2005 Simon Tatham.\br
+ This software is released under the MIT license.}
+
+ See \c src/3rdparty/des/des.cpp for more information about the terms and
+ conditions under which the code is supplied.
+
\section1 FreeType 2 (\c freetype) version 2.3.6
\e{The FreeType project is a team of volunteers who develop free, portable
@@ -108,18 +117,6 @@
See \c src/3rdparty/harfbuzz/COPYING.FTL and src/3rdparty/harfbuzz/COPYING.GPL
for license details.
- \section1 MD5 (\c md5.cpp and \c md5.h)
-
- \e{This code implements the MD5 message-digest algorithm.
- The algorithm is due to Ron Rivest. This code was
- written by Colin Plumb in 1993, no copyright is claimed.
- This code is in the public domain; do with it what you wish.} -- quoted from
- \c src/3rdparty/md5/md5.h
-
- See \c src/3rdparty/md5/md5.cpp and \c src/3rdparty/md5/md5.h for more
- information about the terms and conditions under which the code is
- supplied.
-
\section1 The Independent JPEG Group's JPEG Software (\c libjpeg) version 6b
\e{This package contains C software to implement JPEG image compression and
@@ -132,6 +129,29 @@
See \c src/3rdparty/libjpeg/README for license details.
+ \section1 MD4 (\c md4.cpp and \c md4.h)
+
+ \e{MD4 (RFC-1320) message digest.\br
+ Modified from MD5 code by Andrey Panin <pazke@donpac.ru>\br\br
+ Written by Solar Designer <solar@openwall.com> in 2001, and placed in\br
+ the public domain. There's absolutely no warranty.}
+
+ See \c src/3rdparty/md4/md4.cpp and \c src/3rdparty/md4/md4.h for more
+ information about the terms and conditions under which the code is
+ supplied.
+
+ \section1 MD5 (\c md5.cpp and \c md5.h)
+
+ \e{This code implements the MD5 message-digest algorithm.
+ The algorithm is due to Ron Rivest. This code was
+ written by Colin Plumb in 1993, no copyright is claimed.
+ This code is in the public domain; do with it what you wish.} -- quoted from
+ \c src/3rdparty/md5/md5.h
+
+ See \c src/3rdparty/md5/md5.cpp and \c src/3rdparty/md5/md5.h for more
+ information about the terms and conditions under which the code is
+ supplied.
+
\section1 MNG Library (\c libmng) version 1.0.10
\e{The libmng library supports decoding, displaying, encoding, and various
@@ -152,6 +172,56 @@
See \c src/3rdparty/libpng/LICENSE for license details.
+ \section1 The ptmalloc memory allocator (\c ptmalloc3) version 1.8
+
+ \e ptmcalloc3 is a scalable concurrent memory allocator suitable
+ for use in multi-threaded programs.
+
+ \hr
+
+ Copyright (c) 2001-2006 Wolfram Gloger
+
+ Permission to use, copy, modify, distribute, and sell this software
+ and its documentation for any purpose is hereby granted without fee,
+ provided that (i) the above copyright notices and this permission
+ notice appear in all copies of the software and related documentation,
+ and (ii) the name of Wolfram Gloger may not be used in any advertising
+ or publicity relating to the software.
+
+ THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+ IN NO EVENT SHALL WOLFRAM GLOGER BE LIABLE FOR ANY SPECIAL,
+ INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY
+ DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY
+ OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+ \hr
+
+ See \c src/3rdparty/ptmalloc/COPYRIGHT for license details.
+
+ \section1 SHA-1 (\c sha1.cpp)
+
+ \e{Based on the public domain implementation of the SHA-1 algorithm\br
+ Copyright (C) Dominik Reichl <dominik.reichl@t-online.de>}
+
+ See \c src/3rdparty/sha1/sha1.cpp for more information about the terms and
+ conditions under which the code is supplied.
+
+ \section1 SQLite (\c sqlite) version 3.5.9
+
+ \e{SQLite is a small C library that implements a
+ self-contained, embeddable, zero-configuration SQL database engine.}
+ -- quoted from \l{http://www.sqlite.org/}{www.sqlite.org}.
+
+ According to the comments in the source files, the code is in the public
+ domain. See the
+ \l{http://www.sqlite.org/copyright.html}{SQLite Copyright} page on the
+ SQLite web site for further information.
+
\section1 TIFF Software Distribution (\c libtiff) version 3.8.2
\e {libtiff is a set of C functions (a library) that support the
@@ -212,17 +282,6 @@
See \c src/3rdparty/libtiff/COPYRIGHT for license details.
- \section1 SQLite (\c sqlite) version 3.5.9
-
- \e{SQLite is a small C library that implements a
- self-contained, embeddable, zero-configuration SQL database engine.}
- -- quoted from \l{http://www.sqlite.org/}{www.sqlite.org}.
-
- According to the comments in the source files, the code is in the public
- domain. See the
- \l{http://www.sqlite.org/copyright.html}{SQLite Copyright} page on the
- SQLite web site for further information.
-
\section1 Wintab API (\c wintab)
Wintab is a de facto API for pointing devices on Windows. The
@@ -238,35 +297,4 @@
src/3rdparty/zlib/README.
See \c src/3rdparty/zlib/README for license details.
-
- \section1 The ptmalloc memory allocator (\c ptmalloc3) version 1.8
-
- \e ptmcalloc3 is a scalable concurrent memory allocator suitable
- for use in multi-threaded programs.
-
- \hr
-
- Copyright (c) 2001-2006 Wolfram Gloger
-
- Permission to use, copy, modify, distribute, and sell this software
- and its documentation for any purpose is hereby granted without fee,
- provided that (i) the above copyright notices and this permission
- notice appear in all copies of the software and related documentation,
- and (ii) the name of Wolfram Gloger may not be used in any advertising
- or publicity relating to the software.
-
- THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
- IN NO EVENT SHALL WOLFRAM GLOGER BE LIABLE FOR ANY SPECIAL,
- INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY
- DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY
- OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-
- \hr
-
- See \c src/3rdparty/ptmalloc/COPYRIGHT for license details.
*/
diff --git a/doc/src/designer-manual.qdoc b/doc/src/designer-manual.qdoc
index 03b74e6..4b8de32 100644
--- a/doc/src/designer-manual.qdoc
+++ b/doc/src/designer-manual.qdoc
@@ -58,7 +58,8 @@
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.
+ \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}.
@@ -235,6 +236,7 @@
\page designer-to-know.html
\contentspage {Qt Designer Manual}{Contents}
+
\title Getting to Know Qt Designer
\tableofcontents
@@ -298,12 +300,12 @@
\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.
@@ -357,7 +359,7 @@
using a grid. The coordinates on the screenshot show the position of each
widget within the grid.
- \image addressbook-tutorial-part3-labeled-layout.png
+ \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
@@ -366,7 +368,7 @@
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.
+ same time, maximize the use of available space.
Qt's layouts help when you:
@@ -408,6 +410,7 @@
\page designer-quick-start.html
\contentspage {Qt Designer Manual}{Contents}
+
\title A Quick Start to Qt Designer
Using \QD involves \bold four basic steps:
@@ -419,16 +422,14 @@
\o Preview the form
\endlist
- \omit
\image rgbController-screenshot.png
- \endomit
- 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.
+ 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
+ \table
\row
\i \inlineimage designer-choosing-form.png
\i \bold{Choosing a Form}
@@ -436,39 +437,32 @@
You start by choosing \gui Widget from the \gui{New Form} dialog.
\endtable
- Then you drag three labels, three spin boxes and three vertical sliders
- on to your form. You can roughly arrange them according to how you would
- like them to be laid out.
- \omit
\table
- \row \o \inlineimage rgbController-widgetBox.png
- \o \inlineimage rgbController-arrangement.png
+ \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
- \endomit
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 Shift while you select
+ 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}.
- \omit
\table
\row
\i \inlineimage rgbController-form-gridLayout.png
\i \inlineimage rgbController-selectForLayout.png
\endtable
- \endomit
Repeat the step for the other two labels along with their corresponding
- spin boxes and sliders as well. Your form will now look similar to the
- screenshot below.
-
- \omit
- \image rgbController-almostLaidOut.png
- \endomit
+ spin boxes and sliders as well.
The next step is to combine all three layouts into one \bold{main layout}.
It is important that your form has a main layout; otherwise, the widgets
@@ -476,24 +470,26 @@
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.
+ 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.
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 do this, 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.
+ 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.
- \omit
\table
\row
\i \inlineimage rgbController-signalsAndSlots.png
@@ -503,17 +499,19 @@
\gui{Configure Connection} dialog, shown below, will pop up. Select the
correct signal and slot and click \gui OK.
\endtable
- \endomit
- \omit
- \image rgbController-configureConnection.png
- \endomit
+ \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.
@@ -521,7 +519,6 @@
Since RGB values range between 0 and 255, we need to limit the spin box
and slider to that particular range.
- \omit
\table
\row
\i \inlineimage rgbController-property-editing.png
@@ -532,21 +529,14 @@
\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.
+ process for the remaining spin boxes and sliders.
\endtable
- \endomit
- Now, we preview your form to see how it would look in your application. To
- preview your form, press \key{Ctrl + R} or select \gui Preview from the
- \gui Form menu.
-
- \omit
- \image rgbController-preview.png
- \endomit
-
- 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 used to manage the
- child widgets respond to different window sizes.
+ 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.
*/
@@ -788,11 +778,11 @@
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
+ 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
+ \endlist
\section2 Dynamic Properties
@@ -804,12 +794,12 @@
\image designer-property-editor-toolbar.png
- To add a dynamic property, clcik on the \gui Add button
+ 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
+ . 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
+ color groups by clickinig on the \gui Configure button
\inlineimage designer-property-editor-configure.png
.
@@ -911,7 +901,7 @@
\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
@@ -1138,7 +1128,7 @@
spacers just provide spacing hints to layouts, so they cannot be connected
to other objects.
-
+
\target HighlightedObjects
\table
\row
@@ -1177,7 +1167,7 @@
\image designer-connection-dialog.png
- To complete the connection, select a signal from the source object and a
+ 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.
@@ -1720,22 +1710,22 @@
\i \bold{Resource Files}
Within the resource browser, you can open existing resource files or
- create new ones. Click the \gui{Edit Resources} button
+ 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
+ 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}
+ 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
+ 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.
@@ -1747,15 +1737,15 @@
\i \inlineimage designer-edit-resource.png
\i \bold{Editing Resource Files}
- Press the
+ 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
+ \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
+ resource editor, and pressing the
\inlineimage designer-remove-resource-entry-button.png
button.
\endtable
@@ -2563,7 +2553,7 @@ pixmap property in the property editor.
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.
@@ -2664,7 +2654,7 @@ pixmap property in the property editor.
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
+ You can either create a new QExtensionFactory and reimplement the
QExtensionFactory::createExtension() function:
\snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 8
diff --git a/doc/src/emb-fonts.qdoc b/doc/src/emb-fonts.qdoc
index 3ed23c3..86e169d 100644
--- a/doc/src/emb-fonts.qdoc
+++ b/doc/src/emb-fonts.qdoc
@@ -131,7 +131,7 @@
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 \c makeqpf tool, included in the
+ 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.
diff --git a/doc/src/emb-makeqpf.qdoc b/doc/src/emb-makeqpf.qdoc
index ca33eda..8f5d10b 100644
--- a/doc/src/emb-makeqpf.qdoc
+++ b/doc/src/emb-makeqpf.qdoc
@@ -44,7 +44,10 @@
\title makeqpf
\ingroup qt-embedded-linux
- \c makeqpf is not part of Qt 4. However, Qt 4 can still read QPF
- files generated by Qt 2 or 3. To generate QPF files, use makeqpf from Qt 2
- or 3.
+ \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/images/designer-choosing-form.png b/doc/src/images/designer-choosing-form.png
index fa6e470..bee4b29 100644
--- a/doc/src/images/designer-choosing-form.png
+++ b/doc/src/images/designer-choosing-form.png
Binary files differ
diff --git a/doc/src/images/rgbController-arrangement.png b/doc/src/images/rgbController-arrangement.png
new file mode 100644
index 0000000..d9e8bab
--- /dev/null
+++ b/doc/src/images/rgbController-arrangement.png
Binary files differ
diff --git a/doc/src/images/rgbController-configure-connection1.png b/doc/src/images/rgbController-configure-connection1.png
new file mode 100644
index 0000000..4e5dcf2
--- /dev/null
+++ b/doc/src/images/rgbController-configure-connection1.png
Binary files differ
diff --git a/doc/src/images/rgbController-configure-connection2.png b/doc/src/images/rgbController-configure-connection2.png
new file mode 100644
index 0000000..f3fcc62
--- /dev/null
+++ b/doc/src/images/rgbController-configure-connection2.png
Binary files differ
diff --git a/doc/src/images/rgbController-final-layout.png b/doc/src/images/rgbController-final-layout.png
new file mode 100644
index 0000000..d32a93e
--- /dev/null
+++ b/doc/src/images/rgbController-final-layout.png
Binary files differ
diff --git a/doc/src/images/rgbController-form-gridLayout.png b/doc/src/images/rgbController-form-gridLayout.png
new file mode 100644
index 0000000..c8f3dcf
--- /dev/null
+++ b/doc/src/images/rgbController-form-gridLayout.png
Binary files differ
diff --git a/doc/src/images/rgbController-property-editing.png b/doc/src/images/rgbController-property-editing.png
new file mode 100644
index 0000000..64fc500
--- /dev/null
+++ b/doc/src/images/rgbController-property-editing.png
Binary files differ
diff --git a/doc/src/images/rgbController-screenshot.png b/doc/src/images/rgbController-screenshot.png
new file mode 100644
index 0000000..6019233
--- /dev/null
+++ b/doc/src/images/rgbController-screenshot.png
Binary files differ
diff --git a/doc/src/images/rgbController-selectForLayout.png b/doc/src/images/rgbController-selectForLayout.png
new file mode 100644
index 0000000..7a8e184
--- /dev/null
+++ b/doc/src/images/rgbController-selectForLayout.png
Binary files differ
diff --git a/doc/src/images/rgbController-signalsAndSlots.png b/doc/src/images/rgbController-signalsAndSlots.png
new file mode 100644
index 0000000..2ba3aba
--- /dev/null
+++ b/doc/src/images/rgbController-signalsAndSlots.png
Binary files differ
diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc
index 4ead9e4..23e8623 100644
--- a/doc/src/index.qdoc
+++ b/doc/src/index.qdoc
@@ -153,6 +153,7 @@
<li><a href="overviews.html">All Overviews and HOWTOs</a></li>
<li><a href="gallery.html">Qt Widget Gallery</a></li>
<li><a href="http://doc.trolltech.com/extras/qt43-class-chart.pdf">Class Chart</a></li>
+ <li><a href="qtglobal.html">Qt Global Declarations</a></li>
</ul>
</td>
<td valign="top">
@@ -207,10 +208,10 @@
<td valign="top">
<ul>
<li><a href="http://www.qtsoftware.com/products/add-on-products">Qt Solutions</a></li>
- <li><a href="http://www.qtsoftware.com/products/qt/3rdparty/">Partner Add-ons</a></li>
+ <li><a href="http://www.qtsoftware.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://www.qtsoftware.com/support/">Support</a></li>
- <li><a href="http://www.qtsoftware.com/support/training/">Training</a></li>
+ <li><a href="http://www.qtsoftware.com/support-services/support-services/">Support</a></li>
+ <li><a href="http://www.qtsoftware.com/support-services/training/">Training</a></li>
</ul>
</td>
<td valign="top">
diff --git a/doc/src/installation.qdoc b/doc/src/installation.qdoc
index 3270dae..319420b 100644
--- a/doc/src/installation.qdoc
+++ b/doc/src/installation.qdoc
@@ -921,8 +921,6 @@ in the \l{Qt for Windows CE Requirements} document.
\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-arm-g++ (thumb)
- \o GCC 4.1.1 \o 1.7M \o 2.8M \o 4.0M \o 9.8M \o 409K \o 796K \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
diff --git a/doc/src/qset.qdoc b/doc/src/qset.qdoc
index afbedc3..6326219 100644
--- a/doc/src/qset.qdoc
+++ b/doc/src/qset.qdoc
@@ -685,11 +685,12 @@
*/
/*!
- \typedef QSet::iterator::iterator_category
- \typedef QSet::const_iterator::iterator_category
+ \typedef QSet::iterator::iterator_category
+ \typedef QSet::const_iterator::iterator_category
- \internal
-*/
+ Synonyms for \e {std::bidirectional_iterator_tag} indicating
+ these iterators are bidirectional iterators.
+ */
/*!
\typedef QSet::iterator::difference_type
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp
index a57de9d..d9e38ed 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp
@@ -6,7 +6,7 @@ public:
{
qreal penWidth = 1;
return QRectF(-10 - penWidth / 2, -10 - penWidth / 2,
- 20 + penWidth / 2, 20 + penWidth / 2);
+ 20 + penWidth, 20 + penWidth);
}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
diff --git a/doc/src/snippets/picture/picture.cpp b/doc/src/snippets/picture/picture.cpp
index 07cedbf..be171c6 100644
--- a/doc/src/snippets/picture/picture.cpp
+++ b/doc/src/snippets/picture/picture.cpp
@@ -66,7 +66,7 @@ int main()
QPicture picture;
picture.load("drawing.pic"); // load picture
QPainter painter;
- painter.begin(&myWidget); // paint in myWidget
+ painter.begin(&myImage); // paint in myImage
painter.drawPicture(0, 0, picture); // draw the picture at (0,0)
painter.end(); // painting done
//! [1]
diff --git a/doc/src/tools-list.qdoc b/doc/src/tools-list.qdoc
index 7af9936..caef268 100644
--- a/doc/src/tools-list.qdoc
+++ b/doc/src/tools-list.qdoc
@@ -58,12 +58,10 @@
\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).
- \omit
- \row \o \l{emb-qvfb.html}{qvfb}
+ \row \o \l{The Virtual Framebuffer}{qvfb}
\o Run and test embedded applications on the desktop.
- \row \o \l{emb-makeqpf.html}{makeqpf}
+ \row \o \l{makeqpf}
\o Create pre-rendered fonts for embedded devices.
- \endomit
\row \o \l{moc}{Meta-Object Compiler (moc)}
\o Generate meta-object information for QObject subclasses.
\row \o \l{User Interface Compiler (uic)}
diff --git a/doc/src/topics.qdoc b/doc/src/topics.qdoc
index 301f0d4..6ef3a89 100644
--- a/doc/src/topics.qdoc
+++ b/doc/src/topics.qdoc
@@ -286,11 +286,9 @@ including ARM, Intel x86, MIPS and SH-4.
\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}
- \o \l {Qt Examples#Qt for Embedded Linux}{Examples}
\endlist
\o
\list
- \o \l {Qt for Embedded Linux Classes}{Classes}
\o \l {Windows CE - Using shadow builds}{Using shadow builds}
\o \l {Windows CE - Working with Custom SDKs}{Working with Custom SDKs}
\endlist
diff --git a/examples/dialogs/sipdialog/dialog.cpp b/examples/dialogs/sipdialog/dialog.cpp
index 9f1b9ad..653b518 100644
--- a/examples/dialogs/sipdialog/dialog.cpp
+++ b/examples/dialogs/sipdialog/dialog.cpp
@@ -90,7 +90,7 @@ Dialog::Dialog()
//! [Dialog constructor part4]
//! [Dialog constructor part5]
- connect(button, SIGNAL(pressed()),
+ connect(button, SIGNAL(clicked()),
qApp, SLOT(closeAllWindows()));
connect(QApplication::desktop(), SIGNAL(workAreaResized(int)),
this, SLOT(desktopResized(int)));
@@ -111,14 +111,13 @@ void Dialog::reactToSIP()
{
QRect availableGeometry = QApplication::desktop()->availableGeometry(0);
- if (desktopGeometry.width() == availableGeometry.width()) {
- if (desktopGeometry.height() > availableGeometry.height()) {
+ if (desktopGeometry != availableGeometry) {
+ if (windowState() | Qt::WindowMaximized)
setWindowState(windowState() & ~Qt::WindowMaximized);
- setGeometry(availableGeometry);
- } else {
- setWindowState(windowState() | Qt::WindowMaximized);
- }
+
+ setGeometry(availableGeometry);
}
+
desktopGeometry = availableGeometry;
}
//! [reactToSIP() function]
diff --git a/examples/dialogs/sipdialog/main.cpp b/examples/dialogs/sipdialog/main.cpp
index 5fcbfd8..fec6de2 100644
--- a/examples/dialogs/sipdialog/main.cpp
+++ b/examples/dialogs/sipdialog/main.cpp
@@ -48,6 +48,6 @@ int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Dialog dialog;
- dialog.exec();
+ return dialog.exec();
}
//! [main() function]
diff --git a/examples/itemviews/puzzle/puzzle.pro b/examples/itemviews/puzzle/puzzle.pro
index e5ee3dd..de17a69 100644
--- a/examples/itemviews/puzzle/puzzle.pro
+++ b/examples/itemviews/puzzle/puzzle.pro
@@ -14,3 +14,8 @@ sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/puzzle
INSTALLS += target sources
include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+wince* {
+ DEPLOYMENT_PLUGIN += qjpeg qgif qtiff
+}
+
diff --git a/examples/network/googlesuggest/googlesuggest.pro b/examples/network/googlesuggest/googlesuggest.pro
index afd600f..33b79de 100644
--- a/examples/network/googlesuggest/googlesuggest.pro
+++ b/examples/network/googlesuggest/googlesuggest.pro
@@ -3,7 +3,7 @@ SOURCES = main.cpp searchbox.cpp googlesuggest.cpp
HEADERS = searchbox.h googlesuggest.h
# install
-target.path = $$[QT_INSTALL_EXAMPLES]/webkit/googlesuggest
+target.path = $$[QT_INSTALL_EXAMPLES]/network/googlesuggest
sources.files = $$SOURCES $$HEADERS *.pro
-sources.path = $$[QT_INSTALL_EXAMPLES]/webkit/googlesuggest
+sources.path = $$[QT_INSTALL_EXAMPLES]/network/googlesuggest
INSTALLS += target sources
diff --git a/examples/qtconcurrent/imagescaling/imagescaling.pro b/examples/qtconcurrent/imagescaling/imagescaling.pro
index 2040e7c..180571c 100644
--- a/examples/qtconcurrent/imagescaling/imagescaling.pro
+++ b/examples/qtconcurrent/imagescaling/imagescaling.pro
@@ -13,3 +13,5 @@ sources.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent/imagescaling
INSTALLS += target sources
include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+wince*: DEPLOYMENT_PLUGIN += qgif qjpeg qtiff
diff --git a/examples/qtconcurrent/qtconcurrent.pro b/examples/qtconcurrent/qtconcurrent.pro
index b21cb17..a30c0bd 100644
--- a/examples/qtconcurrent/qtconcurrent.pro
+++ b/examples/qtconcurrent/qtconcurrent.pro
@@ -1,10 +1,13 @@
TEMPLATE = subdirs
SUBDIRS = imagescaling \
map \
- progressdialog \
runfunction \
wordcount
+!wince* {
+ SUBDIRS += progressdialog
+}
+
# install
target.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS qtconcurrent.pro README
diff --git a/examples/sql/sqlwidgetmapper/sqlwidgetmapper.pro b/examples/sql/sqlwidgetmapper/sqlwidgetmapper.pro
index 1881fce..c216a30 100644
--- a/examples/sql/sqlwidgetmapper/sqlwidgetmapper.pro
+++ b/examples/sql/sqlwidgetmapper/sqlwidgetmapper.pro
@@ -8,3 +8,6 @@ target.path = $$[QT_INSTALL_EXAMPLES]/sql/sqlwidgetmapper
sources.files = $$SOURCES $$HEADERS *.pro
sources.path = $$[QT_INSTALL_EXAMPLES]/sql/sqlwidgetmapper
INSTALLS += target sources
+
+wince*: DEPLOYMENT_PLUGIN += qsqlite
+
diff --git a/examples/widgets/movie/movie.pro b/examples/widgets/movie/movie.pro
index f5c94d3..fe011d2 100644
--- a/examples/widgets/movie/movie.pro
+++ b/examples/widgets/movie/movie.pro
@@ -9,3 +9,11 @@ sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/movie
INSTALLS += target sources
include($$QT_SOURCE_TREE/examples/examplebase.pri)
+
+wince*: {
+ addFiles.sources += *.mng
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ DEPLOYMENT_PLUGIN += qmng
+}
+
diff --git a/mkspecs/common/wince.conf b/mkspecs/common/wince.conf
index d017cae..d6e4ba7 100644
--- a/mkspecs/common/wince.conf
+++ b/mkspecs/common/wince.conf
@@ -19,7 +19,8 @@ QMAKE_YACCFLAGS = -d
QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t-
QMAKE_CFLAGS_WARN_ON = -W3
QMAKE_CFLAGS_WARN_OFF = -W0
-QMAKE_CFLAGS_RELEASE = -O2 -GL -MD
+QMAKE_CFLAGS_RELEASE = -O2 -MD
+QMAKE_CFLAGS_LTCG = -GL
QMAKE_CFLAGS_DEBUG = -DDEBUG -D_DEBUG -Zi -MDd
QMAKE_CFLAGS_YACC =
@@ -34,6 +35,7 @@ QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON -w34100 -w34189
QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
QMAKE_CXXFLAGS_STL_ON = -EHsc
QMAKE_CXXFLAGS_STL_OFF =
@@ -55,8 +57,9 @@ QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO /NODEFAULTLIB:OLDNAMES.LIB
-QMAKE_LFLAGS_RELEASE = /LTCG /INCREMENTAL:NO
+QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
QMAKE_LFLAGS_DEBUG = /DEBUG
+QMAKE_LFLAGS_LTCG = /LTCG
QMAKE_LIBS_NETWORK = ws2.lib
QMAKE_LIBS_OPENGL =
QMAKE_LIBS_COMPAT =
diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp
index 5c9ec13..c5f13f6 100644
--- a/qmake/generators/symbian/symmake.cpp
+++ b/qmake/generators/symbian/symmake.cpp
@@ -116,9 +116,6 @@ QString SymbianMakefileGenerator::canonizePath(const QString& origPath)
SymbianMakefileGenerator::SymbianMakefileGenerator() : MakefileGenerator() { }
SymbianMakefileGenerator::~SymbianMakefileGenerator() { }
-// check this out
-bool SymbianMakefileGenerator::writeStubMakefile(QTextStream &t) { t; return false; }
-
void SymbianMakefileGenerator::writeHeader(QTextStream &t) {
t << "// ============================================================================" << endl;
t << "// * Makefile for building: " << escapeFilePath(var("TARGET")) << endl;
diff --git a/qmake/generators/symbian/symmake.h b/qmake/generators/symbian/symmake.h
index 06732b5..09c7267 100644
--- a/qmake/generators/symbian/symmake.h
+++ b/qmake/generators/symbian/symmake.h
@@ -52,7 +52,6 @@ protected:
QString fixPathForMmp(const QString& origPath, const QDir& parentDir);
QString canonizePath(const QString& origPath);
- virtual bool writeStubMakefile(QTextStream &t);
virtual bool writeMakefile(QTextStream &t);
bool generatePkgFile(const QString &compiler, const QString &config, const QString &iconFile);
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index bbbb027..76c17ef 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -574,7 +574,7 @@ void VcprojGenerator::writeSubDirs(QTextStream &t)
}
// We assume project filename is [QMAKE_ORIG_TARGET].vcproj
- QString vcproj = unescapeFilePath(fixFilename(tmp_vcproj.project->first("QMAKE_ORIG_TARGET")) + project->first("VCPROJ_EXTENSION"));
+ QString vcproj = unescapeFilePath(tmp_vcproj.project->first("QMAKE_ORIG_TARGET") + project->first("VCPROJ_EXTENSION"));
QString vcprojDir = qmake_getpwd();
// If file doesn't exsist, then maybe the users configuration
diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp
index 87f55cf..c7f00dd 100644
--- a/qmake/generators/win32/winmakefile.cpp
+++ b/qmake/generators/win32/winmakefile.cpp
@@ -626,7 +626,7 @@ void Win32MakefileGenerator::writeStandardParts(QTextStream &t)
// do this here so we can set DEST_TARGET to be the complete path to the final target if it is needed.
QString orgDestDir = var("DESTDIR");
QString destDir = Option::fixPathToTargetOS(orgDestDir, false);
- if (orgDestDir.endsWith('/') || orgDestDir.endsWith(Option::dir_sep))
+ if (!destDir.isEmpty() && (orgDestDir.endsWith('/') || orgDestDir.endsWith(Option::dir_sep)))
destDir += Option::dir_sep;
QString target = QString(project->first("TARGET")+project->first("TARGET_EXT"));
target.remove("\"");
diff --git a/src/3rdparty/phonon/phonon/effectwidget.cpp b/src/3rdparty/phonon/phonon/effectwidget.cpp
index da5a51a..d5c6c81 100644
--- a/src/3rdparty/phonon/phonon/effectwidget.cpp
+++ b/src/3rdparty/phonon/phonon/effectwidget.cpp
@@ -165,6 +165,7 @@ void EffectWidgetPrivate::autogenerateUi()
if (minValue == -1. && maxValue == 1.) {
//Special case values between -1 and 1.0 to use a slider for improved usability
QSlider *slider = new QSlider(Qt::Horizontal, q);
+ control = slider;
slider->setRange(-SLIDER_RANGE, +SLIDER_RANGE);
slider->setValue(int(SLIDER_RANGE * value.toDouble()));
slider->setTickPosition(QSlider::TicksBelow);
@@ -188,10 +189,10 @@ void EffectWidgetPrivate::autogenerateUi()
break;
}
+ if (control) {
#ifndef QT_NO_TOOLTIP
control->setToolTip(para.description());
#endif
- if (control) {
#ifndef QT_NO_SHORTCUT
label->setBuddy(control);
#endif
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
index 5dc6363..e565476 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
@@ -268,7 +268,7 @@ void QWebFrame::addToJavaScriptWindowObject(const QString &name, QObject *object
}
/*!
- Returns the frame's content, converted to HTML.
+ Returns the frame's content as HTML, enclosed in HTML and BODY tags.
\sa setHtml(), toPlainText()
*/
@@ -280,7 +280,8 @@ QString QWebFrame::toHtml() const
}
/*!
- Returns the content of this frame converted to plain text.
+ Returns the content of this frame converted to plain text, completely
+ stripped of all HTML formatting.
\sa toHtml()
*/
diff --git a/src/corelib/arch/qatomic_windows.h b/src/corelib/arch/qatomic_windows.h
index c795ea6..a1a5a7d 100644
--- a/src/corelib/arch/qatomic_windows.h
+++ b/src/corelib/arch/qatomic_windows.h
@@ -220,6 +220,9 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueTo
#if !defined(Q_OS_WINCE) && !defined(Q_CC_MWERKS)
// use compiler intrinsics for all atomic functions
+//those functions need to be define in the global namespace
+QT_END_NAMESPACE
+
extern "C" {
long __cdecl _InterlockedIncrement(volatile long *);
long __cdecl _InterlockedDecrement(volatile long *);
@@ -252,6 +255,9 @@ extern "C" {
# define _InterlockedExchangeAddPointer(a,b) \
_InterlockedExchangeAdd(reinterpret_cast<volatile long *>(a), long(b))
# endif
+
+QT_BEGIN_NAMESPACE
+
inline bool QBasicAtomicInt::ref()
{
return _InterlockedIncrement(reinterpret_cast<volatile long *>(&_q_value)) != 0;
@@ -334,6 +340,8 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueTo
#define Q_ARGUMENT_TYPE
#endif
+QT_END_NAMESPACE
+
extern "C" {
long __cdecl InterlockedIncrement(long Q_ARGUMENT_TYPE * lpAddend);
long __cdecl InterlockedDecrement(long Q_ARGUMENT_TYPE * lpAddend);
@@ -350,6 +358,8 @@ long __cdecl InterlockedExchangeAdd(long Q_ARGUMENT_TYPE * Addend, long Value);
# pragma intrinsic (_InterlockedExchangeAdd)
#endif
+QT_BEGIN_NAMESPACE
+
#endif
@@ -408,6 +418,8 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueTo
// MinGW's definition, such that we pick up variations in the headers.
#ifndef __INTERLOCKED_DECLARED
#define __INTERLOCKED_DECLARED
+QT_END_NAMESPACE
+
extern "C" {
__declspec(dllimport) long __stdcall InterlockedCompareExchange(long *, long, long);
__declspec(dllimport) long __stdcall InterlockedIncrement(long *);
@@ -415,6 +427,8 @@ extern "C" {
__declspec(dllimport) long __stdcall InterlockedExchange(long *, long);
__declspec(dllimport) long __stdcall InterlockedExchangeAdd(long *, long);
}
+
+QT_BEGIN_NAMESPACE
#endif
inline bool QBasicAtomicInt::ref()
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index 4538dc4..ca243e7 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -132,7 +132,8 @@ QT_BEGIN_NAMESPACE
If you want to use QFlags for your own enum types, use
the Q_DECLARE_FLAGS() and Q_DECLARE_OPERATORS_FOR_FLAGS().
- For example:
+
+ Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 1
@@ -449,14 +450,18 @@ QT_BEGIN_NAMESPACE
function. You can retrieve the minimum and maximum of two given
objects using qMin() and qMax() respectively. All these functions
return a corresponding template type; the template types can be
- replaced by any other type. For example:
+ replaced by any other type.
+
+ Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 3
<QtGlobal> also contains functions that generate messages from the
given string argument: qCritical(), qDebug(), qFatal() and
qWarning(). These functions call the message handler with the
- given message. For example:
+ given message.
+
+ Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 4
@@ -701,7 +706,9 @@ QT_BEGIN_NAMESPACE
\relates <QtGlobal>
Wraps the signed 64-bit integer \a literal in a
- platform-independent way. For example:
+ platform-independent way.
+
+ Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 8
@@ -712,7 +719,9 @@ QT_BEGIN_NAMESPACE
\relates <QtGlobal>
Wraps the unsigned 64-bit integer \a literal in a
- platform-independent way. For example:
+ platform-independent way.
+
+ Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 9
@@ -741,7 +750,11 @@ QT_BEGIN_NAMESPACE
/*! \fn const T &qAbs(const T &value)
\relates <QtGlobal>
- Returns the absolute value of \a value. For example:
+ Compares \a value to the 0 of type T and returns the absolute
+ value. Thus if T is \e {double}, then \a value is compared to
+ \e{(double) 0}.
+
+ Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 10
*/
@@ -749,7 +762,9 @@ QT_BEGIN_NAMESPACE
/*! \fn int qRound(qreal value)
\relates <QtGlobal>
- Rounds \a value to the nearest integer. For example:
+ Rounds \a value to the nearest integer.
+
+ Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 11
*/
@@ -757,7 +772,9 @@ QT_BEGIN_NAMESPACE
/*! \fn qint64 qRound64(qreal value)
\relates <QtGlobal>
- Rounds \a value to the nearest 64-bit integer. For example:
+ Rounds \a value to the nearest 64-bit integer.
+
+ Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 12
*/
@@ -765,7 +782,9 @@ QT_BEGIN_NAMESPACE
/*! \fn const T &qMin(const T &value1, const T &value2)
\relates <QtGlobal>
- Returns the minimum of \a value1 and \a value2. For example:
+ Returns the minimum of \a value1 and \a value2.
+
+ Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 13
@@ -775,7 +794,9 @@ QT_BEGIN_NAMESPACE
/*! \fn const T &qMax(const T &value1, const T &value2)
\relates <QtGlobal>
- Returns the maximum of \a value1 and \a value2. For example:
+ Returns the maximum of \a value1 and \a value2.
+
+ Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 14
@@ -786,7 +807,9 @@ QT_BEGIN_NAMESPACE
\relates <QtGlobal>
Returns \a value bounded by \a min and \a max. This is equivalent
- to qMax(\a min, qMin(\a value, \a max)). For example:
+ to qMax(\a min, qMin(\a value, \a max)).
+
+ Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 15
@@ -932,7 +955,9 @@ QT_BEGIN_NAMESPACE
4.1.2, the QT_VERSION macro will expand to 0x040102.
You can use QT_VERSION to use the latest Qt features where
- available. For example:
+ available.
+
+ Example:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 16
diff --git a/src/corelib/io/qdatastream.cpp b/src/corelib/io/qdatastream.cpp
index b203899..e324ffe 100644
--- a/src/corelib/io/qdatastream.cpp
+++ b/src/corelib/io/qdatastream.cpp
@@ -622,11 +622,16 @@ QDataStream &QDataStream::operator>>(qint16 &i)
setStatus(ReadPastEnd);
}
} else {
- register uchar *p = (uchar *)(&i);
+ union {
+ qint16 val1;
+ char val2[2];
+ } x;
+ char *p = x.val2;
char b[2];
if (dev->read(b, 2) == 2) {
*p++ = b[1];
*p = b[0];
+ i = x.val1;
} else {
setStatus(ReadPastEnd);
}
@@ -660,13 +665,18 @@ QDataStream &QDataStream::operator>>(qint32 &i)
setStatus(ReadPastEnd);
}
} else { // swap bytes
- uchar *p = (uchar *)(&i);
+ union {
+ qint32 val1;
+ char val2[4];
+ } x;
+ char *p = x.val2;
char b[4];
if (dev->read(b, 4) == 4) {
*p++ = b[3];
*p++ = b[2];
*p++ = b[1];
*p = b[0];
+ i = x.val1;
} else {
setStatus(ReadPastEnd);
}
@@ -703,7 +713,12 @@ QDataStream &QDataStream::operator>>(qint64 &i)
setStatus(ReadPastEnd);
}
} else { // swap bytes
- uchar *p = (uchar *)(&i);
+ union {
+ qint64 val1;
+ char val2[8];
+ } x;
+
+ char *p = x.val2;
char b[8];
if (dev->read(b, 8) == 8) {
*p++ = b[7];
@@ -714,6 +729,7 @@ QDataStream &QDataStream::operator>>(qint64 &i)
*p++ = b[2];
*p++ = b[1];
*p = b[0];
+ i = x.val1;
} else {
setStatus(ReadPastEnd);
}
@@ -751,13 +767,19 @@ QDataStream &QDataStream::operator>>(float &f)
setStatus(ReadPastEnd);
}
} else { // swap bytes
- uchar *p = (uchar *)(&f);
+ union {
+ float val1;
+ char val2[4];
+ } x;
+
+ char *p = x.val2;
char b[4];
if (dev->read(b, 4) == 4) {
*p++ = b[3];
*p++ = b[2];
*p++ = b[1];
*p = b[0];
+ f = x.val1;
} else {
setStatus(ReadPastEnd);
}
@@ -788,7 +810,11 @@ QDataStream &QDataStream::operator>>(double &f)
setStatus(ReadPastEnd);
}
} else { // swap bytes
- register uchar *p = (uchar *)(&f);
+ union {
+ double val1;
+ char val2[8];
+ } x;
+ char *p = x.val2;
char b[8];
if (dev->read(b, 8) == 8) {
*p++ = b[7];
@@ -799,13 +825,18 @@ QDataStream &QDataStream::operator>>(double &f)
*p++ = b[2];
*p++ = b[1];
*p = b[0];
+ f = x.val1;
} else {
setStatus(ReadPastEnd);
}
}
#else
//non-standard floating point format
- register uchar *p = (uchar *)(&f);
+ union {
+ double val1;
+ char val2[8];
+ } x;
+ char *p = x.val2;
char b[8];
if (dev->read(b, 8) == 8) {
if (noswap) {
@@ -827,6 +858,7 @@ QDataStream &QDataStream::operator>>(double &f)
*p++ = b[Q_DF(1)];
*p = b[Q_DF(0)];
}
+ f = x.val1;
} else {
setStatus(ReadPastEnd);
}
@@ -970,7 +1002,12 @@ QDataStream &QDataStream::operator<<(qint16 i)
if (noswap) {
dev->write((char *)&i, sizeof(qint16));
} else { // swap bytes
- register uchar *p = (uchar *)(&i);
+ union {
+ qint16 val1;
+ char val2[2];
+ } x;
+ x.val1 = i;
+ char *p = x.val2;
char b[2];
b[1] = *p++;
b[0] = *p;
@@ -992,7 +1029,12 @@ QDataStream &QDataStream::operator<<(qint32 i)
if (noswap) {
dev->write((char *)&i, sizeof(qint32));
} else { // swap bytes
- register uchar *p = (uchar *)(&i);
+ union {
+ qint32 val1;
+ char val2[4];
+ } x;
+ x.val1 = i;
+ char *p = x.val2;
char b[4];
b[3] = *p++;
b[2] = *p++;
@@ -1022,13 +1064,18 @@ QDataStream &QDataStream::operator<<(qint64 i)
{
CHECK_STREAM_PRECOND(*this)
if (version() < 6) {
- quint32 i1 = i & 0xffffffff;
- quint32 i2 = i >> 32;
- *this << i2 << i1;
+ quint32 i1 = i & 0xffffffff;
+ quint32 i2 = i >> 32;
+ *this << i2 << i1;
} else if (noswap) { // no conversion needed
dev->write((char *)&i, sizeof(qint64));
} else { // swap bytes
- register uchar *p = (uchar *)(&i);
+ union {
+ qint64 val1;
+ char val2[8];
+ } x;
+ x.val1 = i;
+ char *p = x.val2;
char b[8];
b[7] = *p++;
b[6] = *p++;
@@ -1077,7 +1124,12 @@ QDataStream &QDataStream::operator<<(float f)
if (noswap) { // no conversion needed
dev->write((char *)&g, sizeof(float));
} else { // swap bytes
- register uchar *p = (uchar *)(&g);
+ union {
+ float val1;
+ char val2[4];
+ } x;
+ x.val1 = f;
+ char *p = x.val2;
char b[4];
b[3] = *p++;
b[2] = *p++;
@@ -1103,7 +1155,12 @@ QDataStream &QDataStream::operator<<(double f)
if (noswap) {
dev->write((char *)&f, sizeof(double));
} else {
- register uchar *p = (uchar *)(&f);
+ union {
+ double val1;
+ char val2[8];
+ } x;
+ x.val1 = f;
+ char *p = x.val2;
char b[8];
b[7] = *p++;
b[6] = *p++;
@@ -1116,7 +1173,12 @@ QDataStream &QDataStream::operator<<(double f)
dev->write(b, 8);
}
#else
- register uchar *p = (uchar *)(&f);
+ union {
+ double val1;
+ char val2[8];
+ } x;
+ x.val1 = f;
+ char *p = x.val2;
char b[8];
if (noswap) {
b[Q_DF(0)] = *p++;
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index 14fc2d4..6152518 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -3468,7 +3468,7 @@ void QSettings::setPath(Format format, Scope scope, const QString &path)
\typedef QSettings::SettingsMap
Typedef for QMap<QString, QVariant>.
-
+
\sa registerFormat()
*/
@@ -3479,6 +3479,11 @@ void QSettings::setPath(Format format, Scope scope, const QString &path)
\snippet doc/src/snippets/code/src_corelib_io_qsettings.cpp 27
+ \c ReadFunc is used in \c registerFormat() as a pointer to a function
+ that reads a set of key/value pairs. \c ReadFunc should read all the
+ options in one pass, and return all the settings in the \c SettingsMap
+ container, which is initially empty.
+
\sa WriteFunc, registerFormat()
*/
@@ -3489,6 +3494,10 @@ void QSettings::setPath(Format format, Scope scope, const QString &path)
\snippet doc/src/snippets/code/src_corelib_io_qsettings.cpp 28
+ \c WriteFunc is used in \c registerFormat() as a pointer to a function
+ that writes a set of key/value pairs. \c WriteFunc is only called once,
+ so you need to output the settings in one go.
+
\sa ReadFunc, registerFormat()
*/
@@ -3504,7 +3513,7 @@ void QSettings::setPath(Format format, Scope scope, const QString &path)
extension associated to the format (without the '.').
The \a readFunc and \a writeFunc parameters are pointers to
- functions that read and write a set of (key, value) pairs. The
+ functions that read and write a set of key/value pairs. The
QIODevice parameter to the read and write functions is always
opened in binary mode (i.e., without the QIODevice::Text flag).
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 6ea2d9f..310bd41 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -2068,7 +2068,7 @@ void QObject::deleteLater()
or
- \tt{/*: ... \starslash}
+ \tt{\begincomment: ... \endcomment}
Examples:
diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp
index 9063ae4..917679c 100644
--- a/src/corelib/tools/qcryptographichash.cpp
+++ b/src/corelib/tools/qcryptographichash.cpp
@@ -78,7 +78,7 @@ public:
QCryptographicHash can be used to generate cryptographic hashes of binary or text data.
- Currently MD4, MD5, and SHA1 are supported.
+ Currently MD4, MD5, and SHA-1 are supported.
*/
/*!
diff --git a/src/corelib/tools/qlistdata.cpp b/src/corelib/tools/qlistdata.cpp
index d40b6b6..34a5d80 100644
--- a/src/corelib/tools/qlistdata.cpp
+++ b/src/corelib/tools/qlistdata.cpp
@@ -1173,7 +1173,8 @@ void **QListData::erase(void **xi)
/*! \typedef QList::iterator::iterator_category
- \internal
+ A synonym for \e {std::random_access_iterator_tag} indicating
+ this iterator is a random access iterator.
*/
/*! \typedef QList::iterator::difference_type
@@ -1432,7 +1433,8 @@ void **QListData::erase(void **xi)
/*! \typedef QList::const_iterator::iterator_category
- \internal
+ A synonym for \e {std::random_access_iterator_tag} indicating
+ this iterator is a random access iterator.
*/
/*! \typedef QList::const_iterator::difference_type
diff --git a/src/corelib/tools/qmap.cpp b/src/corelib/tools/qmap.cpp
index 0699400..07df28d 100644
--- a/src/corelib/tools/qmap.cpp
+++ b/src/corelib/tools/qmap.cpp
@@ -902,7 +902,8 @@ void QMapData::dump()
/*! \typedef QMap::iterator::iterator_category
- \internal
+ A synonym for \e {std::bidirectional_iterator_tag} indicating
+ this iterator is a bidirectional iterator.
*/
/*! \typedef QMap::iterator::pointer
@@ -1123,7 +1124,8 @@ void QMapData::dump()
/*! \typedef QMap::const_iterator::iterator_category
- \internal
+ A synonym for \e {std::bidirectional_iterator_tag} indicating
+ this iterator is a bidirectional iterator.
*/
/*! \typedef QMap::const_iterator::pointer
diff --git a/src/corelib/tools/qstringlist.cpp b/src/corelib/tools/qstringlist.cpp
index e22f122..cf1bff8 100644
--- a/src/corelib/tools/qstringlist.cpp
+++ b/src/corelib/tools/qstringlist.cpp
@@ -621,8 +621,6 @@ int QtPrivate::QStringList_lastIndexOf(const QStringList *that, QRegExp &rx, int
the list, searching forward from index position \a from. Returns
-1 if no item matched.
- By default, this function is case sensitive.
-
\sa lastIndexOf(), contains(), QList::indexOf()
*/
diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp
index 789b364..7d61eac 100644
--- a/src/gui/dialogs/qfiledialog.cpp
+++ b/src/gui/dialogs/qfiledialog.cpp
@@ -568,8 +568,9 @@ bool QFileDialogPrivate::canBeNativeDialog()
}
/*!
- Sets the given \a option to be enabled if \a on is true;
- otherwise, clears the given \a option.
+ \since 4.5
+ Sets the given \a option to be enabled if \a on is true; otherwise,
+ clears the given \a option.
\sa options, testOption()
*/
@@ -779,6 +780,7 @@ void QFileDialog::selectFile(const QString &filename)
}
QModelIndex index = d->model->index(filename);
+ QString file;
if (!index.isValid()) {
// save as dialog where we want to input a default value
QString text = filename;
@@ -793,13 +795,13 @@ void QFileDialog::selectFile(const QString &filename)
)
text = text.remove(0,1);
}
- if (!isVisible() || !d->lineEdit()->hasFocus())
- d->lineEdit()->setText(text);
+ file = text;
} else {
- d->qFileDialogUi->listView->selectionModel()->clear();
- if (!isVisible() || !d->lineEdit()->hasFocus())
- d->lineEdit()->setText(index.data().toString());
+ file = index.data().toString();
}
+ d->qFileDialogUi->listView->selectionModel()->clear();
+ if (!isVisible() || !d->lineEdit()->hasFocus())
+ d->lineEdit()->setText(file);
}
/**
@@ -2110,6 +2112,7 @@ void QFileDialogPrivate::createWidgets()
#else
model->setNameFilterDisables(false);
#endif
+ model->d_func()->disableRecursiveSort = true;
QFileDialog::connect(model, SIGNAL(fileRenamed(const QString &, const QString &, const QString &)), q, SLOT(_q_fileRenamed(const QString &, const QString &, const QString &)));
QFileDialog::connect(model, SIGNAL(rootPathChanged(const QString &)),
q, SLOT(_q_pathChanged(const QString &)));
diff --git a/src/gui/dialogs/qfilesystemmodel.cpp b/src/gui/dialogs/qfilesystemmodel.cpp
index 49a3f2e..44adc75 100644
--- a/src/gui/dialogs/qfilesystemmodel.cpp
+++ b/src/gui/dialogs/qfilesystemmodel.cpp
@@ -1095,6 +1095,7 @@ private:
*/
void QFileSystemModelPrivate::sortChildren(int column, const QModelIndex &parent)
{
+ Q_Q(QFileSystemModel);
QFileSystemModelPrivate::QFileSystemNode *indexNode = node(parent);
if (indexNode->children.count() == 0)
return;
@@ -1118,6 +1119,16 @@ void QFileSystemModelPrivate::sortChildren(int column, const QModelIndex &parent
indexNode->visibleChildren.append(values.at(i).first->fileName);
values.at(i).first->isVisible = true;
}
+
+ if (!disableRecursiveSort) {
+ for (int i = 0; i < q->rowCount(parent); ++i) {
+ const QModelIndex childIndex = q->index(i, 0, parent);
+ QFileSystemModelPrivate::QFileSystemNode *indexNode = node(childIndex);
+ //Only do a recursive sort on visible nodes
+ if (indexNode->isVisible)
+ sortChildren(column, childIndex);
+ }
+ }
}
/*!
diff --git a/src/gui/dialogs/qfilesystemmodel_p.h b/src/gui/dialogs/qfilesystemmodel_p.h
index 0a1265a..af4fada 100644
--- a/src/gui/dialogs/qfilesystemmodel_p.h
+++ b/src/gui/dialogs/qfilesystemmodel_p.h
@@ -164,9 +164,12 @@ public:
QHash<QString, QFileSystemNode *>::const_iterator iterator;
for(iterator = children.constBegin() ; iterator != children.constEnd() ; ++iterator) {
//On windows the root (My computer) has no path so we don't want to add a / for nothing (e.g. /C:/)
- if (!path.isEmpty())
- iterator.value()->updateIcon(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName);
- else
+ if (!path.isEmpty()) {
+ if (path.endsWith(QLatin1Char('/')))
+ iterator.value()->updateIcon(iconProvider, path + iterator.value()->fileName);
+ else
+ iterator.value()->updateIcon(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName);
+ } else
iterator.value()->updateIcon(iconProvider, iterator.value()->fileName);
}
}
@@ -177,9 +180,12 @@ public:
QHash<QString, QFileSystemNode *>::const_iterator iterator;
for(iterator = children.constBegin() ; iterator != children.constEnd() ; ++iterator) {
//On windows the root (My computer) has no path so we don't want to add a / for nothing (e.g. /C:/)
- if (!path.isEmpty())
- iterator.value()->retranslateStrings(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName);
- else
+ if (!path.isEmpty()) {
+ if (path.endsWith(QLatin1Char('/')))
+ iterator.value()->retranslateStrings(iconProvider, path + iterator.value()->fileName);
+ else
+ iterator.value()->retranslateStrings(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName);
+ } else
iterator.value()->retranslateStrings(iconProvider, iterator.value()->fileName);
}
}
@@ -202,7 +208,8 @@ public:
readOnly(true),
setRootPath(false),
filters(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs),
- nameFilterDisables(true) // false on windows, true on mac and unix
+ nameFilterDisables(true), // false on windows, true on mac and unix
+ disableRecursiveSort(false)
{
delayedSortTimer.setSingleShot(true);
}
@@ -288,6 +295,10 @@ public:
QDir::Filters filters;
QHash<const QFileSystemNode*, bool> bypassFilters;
bool nameFilterDisables;
+ //This flag is an optimization for the QFileDialog
+ //It enable a sort which is not recursive, it means
+ //we sort only what we see.
+ bool disableRecursiveSort;
#ifndef QT_NO_REGEXP
QList<QRegExp> nameFilters;
#endif
diff --git a/src/gui/dialogs/qfontdialog.cpp b/src/gui/dialogs/qfontdialog.cpp
index 4c5bf4f..aa1c553 100644
--- a/src/gui/dialogs/qfontdialog.cpp
+++ b/src/gui/dialogs/qfontdialog.cpp
@@ -337,6 +337,14 @@ void QFontDialogPrivate::init()
QFontDialog::~QFontDialog()
{
+#ifdef Q_WS_MAC
+ Q_D(QFontDialog);
+ if (d->delegate) {
+ QFontDialogPrivate::closeCocoaFontPanel(d->delegate);
+ QFontDialogPrivate::sharedFontPanelAvailable = true;
+ return;
+ }
+#endif
}
/*!
diff --git a/src/gui/dialogs/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm
index 50917a1..3be53db 100644
--- a/src/gui/dialogs/qfontdialog_mac.mm
+++ b/src/gui/dialogs/qfontdialog_mac.mm
@@ -47,6 +47,7 @@
#include <private/qapplication_p.h>
#include <private/qfont_p.h>
#include <private/qfontengine_p.h>
+#include <private/qt_cocoa_helpers_mac_p.h>
#include <private/qt_mac_p.h>
#include <qdebug.h>
#import <AppKit/AppKit.h>
@@ -123,16 +124,16 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont)
QFont newFont;
if (cocoaFont) {
int pSize = qRound([cocoaFont pointSize]);
- QString family(QCFString::toQString(reinterpret_cast<CFStringRef>([cocoaFont familyName])));
- QString typeface(QCFString::toQString(reinterpret_cast<CFStringRef>([cocoaFont fontName])));
-// qDebug() << "original family" << family << "typeface" << typeface << "psize" << pSize;
+ QString family(qt_mac_NSStringToQString([cocoaFont familyName]));
+ QString typeface(qt_mac_NSStringToQString([cocoaFont fontName]));
+
int hyphenPos = typeface.indexOf(QLatin1Char('-'));
if (hyphenPos != -1) {
typeface.remove(0, hyphenPos + 1);
} else {
typeface = QLatin1String("Normal");
}
-// qDebug() << " massaged family" << family << "typeface" << typeface << "psize" << pSize;
+
newFont = QFontDatabase().font(family, typeface, pSize);
newFont.setUnderline(resolveFont.underline());
newFont.setStrikeOut(resolveFont.strikeOut());
@@ -566,6 +567,7 @@ void *QFontDialogPrivate::openCocoaFontPanel(const QFont &initial,
void QFontDialogPrivate::closeCocoaFontPanel(void *delegate)
{
+ QMacCocoaAutoReleasePool pool;
QCocoaFontPanelDelegate *theDelegate = static_cast<QCocoaFontPanelDelegate *>(delegate);
NSWindow *ourPanel = [theDelegate actualPanel];
[ourPanel close];
@@ -597,15 +599,37 @@ QFont QFontDialogPrivate::execCocoaFontPanel(bool *ok, const QFont &initial,
}
}
-void QFontDialogPrivate::setFont(void * delegate, const QFont &font)
+void QFontDialogPrivate::setFont(void *delegate, const QFont &font)
{
+ QMacCocoaAutoReleasePool pool;
QFontEngine *fe = font.d->engineForScript(QUnicodeTables::Common);
+ NSFontManager *mgr = [NSFontManager sharedFontManager];
+ NSFont *nsFont = 0;
+
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
if (qstrcmp(fe->name(), "CoreText") == 0) {
- const NSFont *nsFont = reinterpret_cast<const NSFont *>(static_cast<QCoreTextFontEngineMulti *>(fe)->ctfont);
- [[NSFontManager sharedFontManager] setSelectedFont:nsFont isMultiple:NO];
- }
+ nsFont = reinterpret_cast<const NSFont *>(static_cast<QCoreTextFontEngineMulti *>(fe)->ctfont);
+ } else
#endif
+ {
+ int weight = 5;
+ NSFontTraitMask mask = 0;
+ if (font.style() == QFont::StyleItalic) {
+ mask |= NSItalicFontMask;
+ }
+ if (font.weight() == QFont::Bold) {
+ weight = 9;
+ mask |= NSBoldFontMask;
+ }
+
+ NSFontManager *mgr = [NSFontManager sharedFontManager];
+ nsFont = [mgr fontWithFamily:qt_mac_QStringToNSString(font.family())
+ traits:mask
+ weight:weight
+ size:font.pointSize()];
+ }
+
+ [mgr setSelectedFont:nsFont isMultiple:NO];
[static_cast<QCocoaFontPanelDelegate *>(delegate) setQtFont:font];
}
diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp
index 220faa3..00baf01 100644
--- a/src/gui/dialogs/qmessagebox.cpp
+++ b/src/gui/dialogs/qmessagebox.cpp
@@ -1723,7 +1723,7 @@ void QMessageBox::aboutQt(QWidget *parent, const QString &title)
QMessageBox *msgBox = new QMessageBox(parent);
msgBox->setAttribute(Qt::WA_DeleteOnClose);
msgBox->setWindowTitle(title.isEmpty() ? tr("About Qt") : title);
- msgBox->setText(translatedTextAboutQt);
+ msgBox->setInformativeText(translatedTextAboutQt);
QPixmap pm(QLatin1String(":/trolltech/qmessagebox/images/qtlogo-64.png"));
if (!pm.isNull())
diff --git a/src/gui/embedded/qkbdtty_qws.cpp b/src/gui/embedded/qkbdtty_qws.cpp
index b588e55..7c162bc 100644
--- a/src/gui/embedded/qkbdtty_qws.cpp
+++ b/src/gui/embedded/qkbdtty_qws.cpp
@@ -97,6 +97,7 @@ private slots:
private:
QWSPC101KeyboardHandler *handler;
struct termios origTermData;
+ int originalKbdMode;
};
QWSTtyKeyboardHandler::QWSTtyKeyboardHandler(const QString &device)
@@ -156,6 +157,7 @@ QWSTtyKbPrivate::QWSTtyKbPrivate(QWSPC101KeyboardHandler *h, const QString &devi
tcgetattr(kbdFD, &termdata);
#if defined(Q_OS_LINUX)
+ ioctl(kbdFD, KDGKBMODE, &originalKbdMode);
# ifdef QT_QWS_USE_KEYCODES
ioctl(kbdFD, KDSKBMODE, K_MEDIUMRAW);
# else
@@ -202,7 +204,7 @@ QWSTtyKbPrivate::~QWSTtyKbPrivate()
{
if (kbdFD >= 0) {
#if defined(Q_OS_LINUX)
- ioctl(kbdFD, KDSKBMODE, K_XLATE);
+ ioctl(kbdFD, KDSKBMODE, originalKbdMode);
#endif
tcsetattr(kbdFD, TCSANOW, &origTermData);
::close(kbdFD);
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 4908296..e8ace65 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -1522,6 +1522,10 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo
if (visible == quint32(newVisible))
return;
+ // Don't show child if parent is not visible
+ if (parent && newVisible && !parent->d_ptr->visible)
+ return;
+
// Modify the property.
const QVariant newVisibleVariant(q_ptr->itemChange(QGraphicsItem::ItemVisibleChange,
quint32(newVisible)));
diff --git a/src/gui/graphicsview/qgraphicswidget.cpp b/src/gui/graphicsview/qgraphicswidget.cpp
index 7f02fb9..7781258 100644
--- a/src/gui/graphicsview/qgraphicswidget.cpp
+++ b/src/gui/graphicsview/qgraphicswidget.cpp
@@ -1887,8 +1887,10 @@ void QGraphicsWidget::insertAction(QAction *before, QAction *action)
}
d->actions.insert(pos, action);
- QActionPrivate *apriv = action->d_func();
- apriv->graphicsWidgets.append(this);
+ if (index == -1) {
+ QActionPrivate *apriv = action->d_func();
+ apriv->graphicsWidgets.append(this);
+ }
QActionEvent e(QEvent::ActionAdded, action, before);
QApplication::sendEvent(this, &e);
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp
index a880a13..0799ea7 100644
--- a/src/gui/image/qicon.cpp
+++ b/src/gui/image/qicon.cpp
@@ -428,10 +428,13 @@ bool QPixmapIconEngine::read(QDataStream &in)
in >> sz;
in >> mode;
in >> state;
- if (pm.isNull())
+ if (pm.isNull()) {
addFile(fileName, sz, QIcon::Mode(mode), QIcon::State(state));
- else
- addPixmap(pm, QIcon::Mode(mode), QIcon::State(state));
+ } else {
+ QPixmapIconEngineEntry pe(fileName, sz, QIcon::Mode(mode), QIcon::State(state));
+ pe.pixmap = pm;
+ pixmaps += pe;
+ }
}
return true;
}
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index 3ef5be3..f85e21a 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -2021,4 +2021,99 @@ QPixmapData* QPixmap::pixmapData() const
return data;
}
+/*!
+ \enum QPixmap::HBitmapFormat
+
+ \bold{Win32 only:} This enum defines how the conversion between \c
+ HBITMAP and QPixmap is performed.
+
+ \warning This enum is only available on Windows.
+
+ \value NoAlpha The alpha channel is ignored and always treated as
+ being set to fully opaque. This is preferred if the \c HBITMAP is
+ used with standard GDI calls, such as \c BitBlt().
+
+ \value PremultipliedAlpha The \c HBITMAP is treated as having an
+ alpha channel and premultiplied colors. This is preferred if the
+ \c HBITMAP is accessed through the \c AlphaBlend() GDI function.
+
+ \value Alpha The \c HBITMAP is treated as having a plain alpha
+ channel. This is the preferred format if the \c HBITMAP is going
+ to be used as an application icon or systray icon.
+
+ \sa fromWinHBITMAP(), toWinHBITMAP()
+*/
+
+/*! \fn HBITMAP QPixmap::toWinHBITMAP(HBitmapFormat format) const
+ \bold{Win32 only:} Creates a \c HBITMAP equivalent to the QPixmap,
+ based on the given \a format. Returns the \c HBITMAP handle.
+
+ It is the caller's responsibility to free the \c HBITMAP data
+ after use.
+
+ \warning This function is only available on Windows.
+
+ \sa fromWinHBITMAP()
+*/
+
+/*! \fn QPixmap QPixmap::fromWinHBITMAP(HBITMAP bitmap, HBitmapFormat format)
+ \bold{Win32 only:} Returns a QPixmap that is equivalent to the
+ given \a bitmap. The conversion is based on the specified \a
+ format.
+
+ \warning This function is only available on Windows.
+
+ \sa toWinHBITMAP(), {QPixmap#Pixmap Conversion}{Pixmap Conversion}
+
+*/
+
+/*! \fn const QX11Info &QPixmap::x11Info() const
+ \bold{X11 only:} Returns information about the configuration of
+ the X display used to display the widget.
+
+ \warning This function is only available on X11.
+
+ \sa {QPixmap#Pixmap Information}{Pixmap Information}
+*/
+
+/*! \fn Qt::HANDLE QPixmap::x11PictureHandle() const
+ \bold{X11 only:} Returns the X11 Picture handle of the pixmap for
+ XRender support.
+
+ This function will return 0 if XRender support is not compiled
+ into Qt, if the XRender extension is not supported on the X11
+ display, or if the handle could not be created. Use of this
+ function is not portable.
+
+ \warning This function is only available on X11.
+
+ \sa {QPixmap#Pixmap Information}{Pixmap Information}
+*/
+
+/*! \fn int QPixmap::x11SetDefaultScreen(int screen)
+ \internal
+*/
+
+/*! \fn void QPixmap::x11SetScreen(int screen)
+ \internal
+*/
+
+/*! \fn QRgb* QPixmap::clut() const
+ \internal
+*/
+
+/*! \fn int QPixmap::numCols() const
+ \internal
+*/
+
+/*! \fn const uchar* QPixmap::qwsBits() const
+ \internal
+ \since 4.1
+*/
+
+/*! \fn int QPixmap::qwsBytesPerLine() const
+ \internal
+ \since 4.1
+*/
+
QT_END_NAMESPACE
diff --git a/src/gui/image/qpixmap_qws.cpp b/src/gui/image/qpixmap_qws.cpp
index 6cc7981..7e383ab 100644
--- a/src/gui/image/qpixmap_qws.cpp
+++ b/src/gui/image/qpixmap_qws.cpp
@@ -109,9 +109,6 @@ QPixmap QPixmap::grabWindow(WId window, int x, int y, int w, int h)
return QPixmap::fromImage(img);
}
-/*!
- \internal
-*/
QRgb* QPixmap::clut() const
{
if (data->classId() == QPixmapData::RasterClass) {
@@ -122,9 +119,6 @@ QRgb* QPixmap::clut() const
return 0;
}
-/*!
- \internal
-*/
int QPixmap::numCols() const
{
if (data->classId() == QPixmapData::RasterClass) {
@@ -135,10 +129,6 @@ int QPixmap::numCols() const
return 0;
}
-/*!
- \internal
- \since 4.1
-*/
const uchar* QPixmap::qwsBits() const
{
if (data->classId() == QPixmapData::RasterClass) {
@@ -149,10 +139,6 @@ const uchar* QPixmap::qwsBits() const
return 0;
}
-/*!
- \internal
- \since 4.1
-*/
int QPixmap::qwsBytesPerLine() const
{
if (data->classId() == QPixmapData::RasterClass) {
diff --git a/src/gui/image/qpixmap_win.cpp b/src/gui/image/qpixmap_win.cpp
index cbe9004..6a8b38a 100644
--- a/src/gui/image/qpixmap_win.cpp
+++ b/src/gui/image/qpixmap_win.cpp
@@ -119,42 +119,6 @@ QPixmap QPixmap::grabWindow(WId winId, int x, int y, int w, int h )
return pixmap;
}
-
-
-/*!
- \enum QPixmap::HBitmapFormat
-
- This enum defines how the conversion between \c HBITMAP
- and QPixmap is performed.
-
- \warning This enum is only available on Windows.
-
- \value NoAlpha The alpha channel is ignored and always treated as
- being set to fully opaque. This is preferred if the \c HBITMAP is
- used with standard GDI calls, such as \c BitBlt().
-
- \value PremultipliedAlpha The \c HBITMAP is treated as having an
- alpha channel and premultiplied colors. This is preferred if the
- \c HBITMAP is accessed through the \c AlphaBlend() GDI function.
-
- \value Alpha The \c HBITMAP is treated as having a plain alpha
- channel. This is the preferred format if the \c HBITMAP is going
- to be used as an application icon or systray icon.
-
- \sa fromWinHBITMAP(), toWinHBITMAP()
-*/
-
-/*!
- Creates a \c HBITMAP equivalent to the QPixmap, based on the given
- \a format. Returns the \c HBITMAP handle.
-
- It is the caller's responsibility to free the \c HBITMAP data
- after use.
-
- \warning This function is only available on Windows.
-
- \sa fromWinHBITMAP()
-*/
HBITMAP QPixmap::toWinHBITMAP(HBitmapFormat format) const
{
HBITMAP bitmap = 0;
@@ -209,15 +173,6 @@ HBITMAP QPixmap::toWinHBITMAP(HBitmapFormat format) const
return bitmap;
}
-/*!
- Returns a QPixmap that is equivalent to the given \a bitmap. The
- conversion is based on the specified \a format.
-
- \warning This function is only available on Windows.
-
- \sa toWinHBITMAP(), {QPixmap#Pixmap Conversion}{Pixmap Conversion}
-
-*/
QPixmap QPixmap::fromWinHBITMAP(HBITMAP bitmap, HBitmapFormat format)
{
// Verify size
diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp
index 38916c7..d2e8d84 100644
--- a/src/gui/image/qpixmap_x11.cpp
+++ b/src/gui/image/qpixmap_x11.cpp
@@ -1914,9 +1914,6 @@ QPixmap QX11PixmapData::transformed(const QTransform &transform,
}
}
-/*!
- \internal
-*/
int QPixmap::x11SetDefaultScreen(int screen)
{
int old = defaultScreen;
@@ -1924,9 +1921,6 @@ int QPixmap::x11SetDefaultScreen(int screen)
return old;
}
-/*!
- \internal
-*/
void QPixmap::x11SetScreen(int screen)
{
if (paintingActive()) {
@@ -2034,14 +2028,6 @@ bool QX11PixmapData::hasAlphaChannel() const
return d == 32;
}
-/*!
- Returns information about the configuration of the X display used to display
- the widget.
-
- \warning This function is only available on X11.
-
- \sa {QPixmap#Pixmap Information}{Pixmap Information}
-*/
const QX11Info &QPixmap::x11Info() const
{
if (data->classId() == QPixmapData::X11Class)
@@ -2098,20 +2084,6 @@ QPaintEngine* QX11PixmapData::paintEngine() const
return that->pengine;
}
-/*!
- Returns the X11 Picture handle of the pixmap for XRender
- support.
-
- This function will return 0 if XRender support is not compiled
- into Qt, if the XRender extension is not supported on the X11
- display, or if the handle could not be created. Use of this
- function is not portable.
-
- \warning This function is only available on X11.
-
- \sa {QPixmap#Pixmap Information}{Pixmap Information}
-*/
-
Qt::HANDLE QPixmap::x11PictureHandle() const
{
#ifndef QT_NO_XRENDER
diff --git a/src/gui/itemviews/qheaderview.cpp b/src/gui/itemviews/qheaderview.cpp
index d373163..f888f5f 100644
--- a/src/gui/itemviews/qheaderview.cpp
+++ b/src/gui/itemviews/qheaderview.cpp
@@ -1267,8 +1267,10 @@ void QHeaderView::setSortIndicator(int logicalIndex, Qt::SortOrder order)
d->sortIndicatorSection = logicalIndex;
d->sortIndicatorOrder = order;
- if (logicalIndex >= d->sectionCount)
+ if (logicalIndex >= d->sectionCount) {
+ emit sortIndicatorChanged(logicalIndex, order);
return; // nothing to do
+ }
if (old != logicalIndex
&& ((logicalIndex >= 0 && resizeMode(logicalIndex) == ResizeToContents)
diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp
index 43feda8..92dfd19 100644
--- a/src/gui/itemviews/qsortfilterproxymodel.cpp
+++ b/src/gui/itemviews/qsortfilterproxymodel.cpp
@@ -1518,7 +1518,8 @@ void QSortFilterProxyModel::setSourceModel(QAbstractItemModel *sourceModel)
d->clear_mapping();
reset();
- d->update_source_sort_column();
+ if (d->update_source_sort_column() && d->dynamic_sortfilter)
+ d->sort();
}
/*!
diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
index 62c1277..1070648 100644
--- a/src/gui/itemviews/qtreeview.cpp
+++ b/src/gui/itemviews/qtreeview.cpp
@@ -246,7 +246,7 @@ void QTreeView::setModel(QAbstractItemModel *model)
connect(d->model, SIGNAL(modelAboutToBeReset()), SLOT(_q_modelAboutToBeReset()));
if (d->sortingEnabled)
- sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
+ d->_q_sortIndicatorChanged(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
}
/*!
@@ -846,17 +846,19 @@ void QTreeView::setExpanded(const QModelIndex &index, bool expanded)
void QTreeView::setSortingEnabled(bool enable)
{
Q_D(QTreeView);
- d->sortingEnabled = enable;
header()->setSortIndicatorShown(enable);
header()->setClickable(enable);
if (enable) {
+ //sortByColumn has to be called before we connect or set the sortingEnabled flag
+ // because otherwise it will not call sort on the model.
+ sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
connect(header(), SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)),
this, SLOT(_q_sortIndicatorChanged(int, Qt::SortOrder)));
- sortByColumn(header()->sortIndicatorSection(), header()->sortIndicatorOrder());
} else {
disconnect(header(), SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)),
this, SLOT(_q_sortIndicatorChanged(int, Qt::SortOrder)));
}
+ d->sortingEnabled = enable;
}
bool QTreeView::isSortingEnabled() const
diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp
index f14ad6f..239ee14 100644
--- a/src/gui/kernel/qapplication_win.cpp
+++ b/src/gui/kernel/qapplication_win.cpp
@@ -1675,20 +1675,23 @@ LRESULT CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam
// send the context menu event is a different one
if (!alienWidget->testAttribute(Qt::WA_NativeWindow) && !alienWidget->testAttribute(Qt::WA_PaintOnScreen)) {
alienWidget = QApplication::widgetAt(globalPos);
- pos = alienWidget->mapFromGlobal(globalPos);
+ if (alienWidget)
+ pos = alienWidget->mapFromGlobal(globalPos);
}
- SHRGINFO shrg;
- shrg.cbSize = sizeof(shrg);
- shrg.hwndClient = hwnd;
- shrg.ptDown.x = GET_X_LPARAM(lParam);
- shrg.ptDown.y = GET_Y_LPARAM(lParam);
- shrg.dwFlags = SHRG_RETURNCMD | SHRG_NOANIMATION;
- resolveAygLibs();
- if (ptrRecognizeGesture && (ptrRecognizeGesture(&shrg) == GN_CONTEXTMENU)) {
- if (qApp->activePopupWidget())
- qApp->activePopupWidget()->close();
- QContextMenuEvent e(QContextMenuEvent::Mouse, pos, globalPos);
- result = qt_sendSpontaneousEvent(alienWidget, &e);
+ if (alienWidget) {
+ SHRGINFO shrg;
+ shrg.cbSize = sizeof(shrg);
+ shrg.hwndClient = hwnd;
+ shrg.ptDown.x = GET_X_LPARAM(lParam);
+ shrg.ptDown.y = GET_Y_LPARAM(lParam);
+ shrg.dwFlags = SHRG_RETURNCMD | SHRG_NOANIMATION;
+ resolveAygLibs();
+ if (ptrRecognizeGesture && (ptrRecognizeGesture(&shrg) == GN_CONTEXTMENU)) {
+ if (qApp->activePopupWidget())
+ qApp->activePopupWidget()->close();
+ QContextMenuEvent e(QContextMenuEvent::Mouse, pos, globalPos);
+ result = qt_sendSpontaneousEvent(alienWidget, &e);
+ }
}
}
}
diff --git a/src/gui/kernel/qcocoaapplicationdelegate_mac.mm b/src/gui/kernel/qcocoaapplicationdelegate_mac.mm
index 9a24645..2ca6a3d 100644
--- a/src/gui/kernel/qcocoaapplicationdelegate_mac.mm
+++ b/src/gui/kernel/qcocoaapplicationdelegate_mac.mm
@@ -90,6 +90,7 @@
QT_BEGIN_NAMESPACE
extern void onApplicationChangedActivation(bool); // qapplication_mac.mm
+extern void qt_release_apple_event_handler(); //qapplication_mac.mm
QT_END_NAMESPACE
QT_FORWARD_DECLARE_CLASS(QDesktopWidgetImplementation)
@@ -207,7 +208,6 @@ static void cleanupCocoaApplicationDelegate()
{
Q_UNUSED(aNotification);
inLaunch = false;
- extern void qt_release_apple_event_handler(); //qapplication_mac.mm
qt_release_apple_event_handler();
}
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index 4ceae3f..f1a7f39 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -789,10 +789,22 @@ extern "C" {
bool wheelOK = false;
Qt::KeyboardModifiers keyMods = qt_cocoaModifiers2QtModifiers([theEvent modifierFlags]);
+ QWidget *widgetToGetMouse = qwidget;
+ if (widgetToGetMouse->testAttribute(Qt::WA_TransparentForMouseEvents)) {
+ // Simulate passing the event through since Cocoa doesn't do that for us.
+ // Start by building a tree up.
+ NSView *candidateView = [self viewUnderTransparentForMouseView:self
+ widget:widgetToGetMouse
+ withWindowPoint:windowPoint];
+ if (candidateView != nil) {
+ widgetToGetMouse = QWidget::find(WId(candidateView));
+ }
+ }
+
// Mouse wheel deltas seem to tick in at increments of 0.1. Qt widgets
- // expect the delta to be a multiple of 120.
+ // expect the delta to be a multiple of 120.
const int ScrollFactor = 10 * 120;
- // The qMax(...) factor reduces the
+ // The qMax(...) factor reduces the
// acceleration for large wheel deltas.
int deltaX = [theEvent deltaX] * ScrollFactor * qMax(0.6, 1.1 - qAbs([theEvent deltaX]));
int deltaY = [theEvent deltaY] * ScrollFactor * qMax(0.6, 1.1 - qAbs([theEvent deltaY]));
@@ -800,10 +812,10 @@ extern "C" {
if (deltaX != 0) {
QWheelEvent qwe(qlocal, qglobal, deltaX, buttons, keyMods, Qt::Horizontal);
- qt_sendSpontaneousEvent(qwidget, &qwe);
+ qt_sendSpontaneousEvent(widgetToGetMouse, &qwe);
wheelOK = qwe.isAccepted();
if (!wheelOK && QApplicationPrivate::focus_widget
- && QApplicationPrivate::focus_widget != qwidget) {
+ && QApplicationPrivate::focus_widget != widgetToGetMouse) {
QWheelEvent qwe2(QApplicationPrivate::focus_widget->mapFromGlobal(qglobal), qglobal,
deltaX, buttons, keyMods, Qt::Horizontal);
qt_sendSpontaneousEvent(QApplicationPrivate::focus_widget, &qwe2);
@@ -813,10 +825,10 @@ extern "C" {
if (deltaY) {
QWheelEvent qwe(qlocal, qglobal, deltaY, buttons, keyMods, Qt::Vertical);
- qt_sendSpontaneousEvent(qwidget, &qwe);
+ qt_sendSpontaneousEvent(widgetToGetMouse, &qwe);
wheelOK = qwe.isAccepted();
if (!wheelOK && QApplicationPrivate::focus_widget
- && QApplicationPrivate::focus_widget != qwidget) {
+ && QApplicationPrivate::focus_widget != widgetToGetMouse) {
QWheelEvent qwe2(QApplicationPrivate::focus_widget->mapFromGlobal(qglobal), qglobal,
deltaY, buttons, keyMods, Qt::Vertical);
qt_sendSpontaneousEvent(QApplicationPrivate::focus_widget, &qwe2);
@@ -828,10 +840,10 @@ extern "C" {
// Qt doesn't explicitly support wheels with a Z component. In a misguided attempt to
// try to be ahead of the pack, I'm adding this extra value.
QWheelEvent qwe(qlocal, qglobal, deltaZ, buttons, keyMods, (Qt::Orientation)3);
- qt_sendSpontaneousEvent(qwidget, &qwe);
+ qt_sendSpontaneousEvent(widgetToGetMouse, &qwe);
wheelOK = qwe.isAccepted();
if (!wheelOK && QApplicationPrivate::focus_widget
- && QApplicationPrivate::focus_widget != qwidget) {
+ && QApplicationPrivate::focus_widget != widgetToGetMouse) {
QWheelEvent qwe2(QApplicationPrivate::focus_widget->mapFromGlobal(qglobal), qglobal,
deltaZ, buttons, keyMods, (Qt::Orientation)3);
qt_sendSpontaneousEvent(QApplicationPrivate::focus_widget, &qwe2);
diff --git a/src/gui/kernel/qcocoaview_mac_p.h b/src/gui/kernel/qcocoaview_mac_p.h
index 983c762..527b1a6 100644
--- a/src/gui/kernel/qcocoaview_mac_p.h
+++ b/src/gui/kernel/qcocoaview_mac_p.h
@@ -59,6 +59,7 @@ QT_FORWARD_DECLARE_CLASS(QWidgetPrivate);
QT_FORWARD_DECLARE_CLASS(QWidget);
QT_FORWARD_DECLARE_CLASS(QEvent);
QT_FORWARD_DECLARE_CLASS(QCocoaDropData);
+QT_FORWARD_DECLARE_CLASS(QStringList);
QT_BEGIN_NAMESPACE
struct DnDParams
diff --git a/src/gui/kernel/qcursor.cpp b/src/gui/kernel/qcursor.cpp
index c24abc4..21a4287 100644
--- a/src/gui/kernel/qcursor.cpp
+++ b/src/gui/kernel/qcursor.cpp
@@ -375,7 +375,9 @@ void QCursorData::cleanup()
return;
for (int shape = 0; shape <= Qt::LastCursor; ++shape) {
- delete qt_cursorTable[shape];
+ // In case someone has a static QCursor defined with this shape
+ if (!qt_cursorTable[shape]->ref.deref())
+ delete qt_cursorTable[shape];
qt_cursorTable[shape] = 0;
}
QCursorData::initialized = false;
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index 352d26a..3bcf9e3 100644
--- a/src/gui/kernel/qkeysequence.cpp
+++ b/src/gui/kernel/qkeysequence.cpp
@@ -629,8 +629,6 @@ const uint QKeySequencePrivate::numberOfKeyBindings = sizeof(QKeySequencePrivate
This enum represent standard key bindings. They can be used to
assign platform dependent keyboard shortcuts to a QAction.
- QKeyEvent also provides the function QKeyEvent::standardKey() to
- query if it matches an existing key binding.
Note that the key bindings are platform dependent. The currently
bound shortcuts can be queried using keyBindings().
diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp
index 6202b35..6250fb77 100644
--- a/src/gui/kernel/qwidget_x11.cpp
+++ b/src/gui/kernel/qwidget_x11.cpp
@@ -1509,7 +1509,6 @@ QWidget *QWidget::keyboardGrabber()
void QWidget::activateWindow()
{
- Q_D(QWidget);
QWidget *tlw = window();
if (tlw->isVisible() && !tlw->d_func()->topData()->embedded && !X11->deferred_map.contains(tlw)) {
if (X11->userTime == 0)
@@ -2487,6 +2486,8 @@ void QWidgetPrivate::scroll_sys(int dx, int dy, const QRect &r)
QRect sr = valid_rect ? r : clipRect();
if (just_update)
q->update();
+ else if (!valid_rect)
+ dirty.translate(dx, dy);
int x1, y1, x2, y2, w = sr.width(), h = sr.height();
if (dx > 0) {
diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp
index 9ce16d3..1b2c4e3 100644
--- a/src/gui/painting/qpainterpath.cpp
+++ b/src/gui/painting/qpainterpath.cpp
@@ -2695,7 +2695,7 @@ qreal QPainterPath::length() const
/*!
Returns percentage of the whole path at the specified length \a len.
- Note that similarly to other percent methods, the percentage measurment
+ Note that similarly to other percent methods, the percentage measurement
is not linear with regards to the length, if curves are present
in the path. When curves are present the percentage argument is mapped
to the t parameter of the Bezier equations.
@@ -2812,7 +2812,7 @@ static inline QBezier bezierAtT(const QPainterPath &path, qreal t, qreal *starti
Returns the point at at the percentage \a t of the current path.
The argument \a t has to be between 0 and 1.
- Note that similarly to other percent methods, the percentage measurment
+ Note that similarly to other percent methods, the percentage measurement
is not linear with regards to the length, if curves are present
in the path. When curves are present the percentage argument is mapped
to the t parameter of the Bezier equations.
@@ -2843,7 +2843,7 @@ QPointF QPainterPath::pointAtPercent(qreal t) const
Positive values for the angles mean counter-clockwise while negative values
mean the clockwise direction. Zero degrees is at the 3 o'clock position.
- Note that similarly to the other percent methods, the percentage measurment
+ Note that similarly to the other percent methods, the percentage measurement
is not linear with regards to the length if curves are present
in the path. When curves are present the percentage argument is mapped
to the t parameter of the Bezier equations.
@@ -2875,7 +2875,7 @@ qreal QPainterPath::angleAtPercent(qreal t) const
Returns the slope of the path at the percentage \a t. The
argument \a t has to be between 0 and 1.
- Note that similarly to other percent methods, the percentage measurment
+ Note that similarly to other percent methods, the percentage measurement
is not linear with regards to the length, if curves are present
in the path. When curves are present the percentage argument is mapped
to the t parameter of the Bezier equations.
diff --git a/src/gui/painting/qprinter.cpp b/src/gui/painting/qprinter.cpp
index 5090b3a..ed72077 100644
--- a/src/gui/painting/qprinter.cpp
+++ b/src/gui/painting/qprinter.cpp
@@ -480,26 +480,26 @@ void QPrinterPrivate::addToManualSetList(QPrintEngine::PrintEnginePropertyKey ke
\value A7 74 x 105 mm
\value A8 52 x 74 mm
\value A9 37 x 52 mm
- \value B0 1030 x 1456 mm
- \value B1 728 x 1030 mm
- \value B10 32 x 45 mm
- \value B2 515 x 728 mm
- \value B3 364 x 515 mm
- \value B4 257 x 364 mm
- \value B5 182 x 257 mm, 7.17 x 10.13 inches
- \value B6 128 x 182 mm
- \value B7 91 x 128 mm
- \value B8 64 x 91 mm
- \value B9 45 x 64 mm
+ \value B0 1000 x 1414 mm
+ \value B1 707 x 1000 mm
+ \value B2 500 x 707 mm
+ \value B3 353 x 500 mm
+ \value B4 250 x 353 mm
+ \value B5 176 x 250 mm, 6.93 x 9.84 inches
+ \value B6 125 x 176 mm
+ \value B7 88 x 125 mm
+ \value B8 62 x 88 mm
+ \value B9 33 x 62 mm
+ \value B10 31 x 44 mm
\value C5E 163 x 229 mm
\value Comm10E 105 x 241 mm, U.S. Common 10 Envelope
\value DLE 110 x 220 mm
- \value Executive 7.5 x 10 inches, 191 x 254 mm
+ \value Executive 7.5 x 10 inches, 190.5 x 254 mm
\value Folio 210 x 330 mm
- \value Ledger 432 x 279 mm
- \value Legal 8.5 x 14 inches, 216 x 356 mm
- \value Letter 8.5 x 11 inches, 216 x 279 mm
- \value Tabloid 279 x 432 mm
+ \value Ledger 431.8 x 279.4 mm
+ \value Legal 8.5 x 14 inches, 215.9 x 355.6 mm
+ \value Letter 8.5 x 11 inches, 215.9 x 279.4 mm
+ \value Tabloid 279.4 x 431.8 mm
\value Custom Unknown, or a user defined size.
With setFullPage(false) (the default), the metrics will be a bit
diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp
index 3fd1ffb..89df869 100644
--- a/src/gui/painting/qtextureglyphcache.cpp
+++ b/src/gui/painting/qtextureglyphcache.cpp
@@ -92,8 +92,8 @@ void QTextureGlyphCache::populate(const QTextItemInt &ti,
int glyph_height = metrics.height.ceil().toInt();
if (glyph_height == 0 || glyph_width == 0)
continue;
- glyph_width += margin * 2 + 2;
- glyph_height += margin * 2 + 2;
+ glyph_width += margin * 2 + 4;
+ glyph_height += margin * 2 + 4;
// align to 8-bit boundary
if (m_type == QFontEngineGlyphCache::Raster_Mono)
glyph_width = (glyph_width+7)&~7;
@@ -189,7 +189,11 @@ void QImageTextureGlyphCache::createTextureData(int width, int height)
int QImageTextureGlyphCache::glyphMargin() const
{
+#ifdef Q_WS_MAC
return 2;
+#else
+ return m_type == QFontEngineGlyphCache::Raster_RGBMask ? 2 : 0;
+#endif
}
void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g)
diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp
index 86653df..0e54af8 100644
--- a/src/gui/styles/qgtkstyle.cpp
+++ b/src/gui/styles/qgtkstyle.cpp
@@ -940,10 +940,6 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
case PE_FrameLineEdit: {
GtkWidget *gtkEntry = QGtk::gtkWidget(QLS("GtkEntry"));
- if (option->state & State_HasFocus)
- GTK_WIDGET_SET_FLAGS(gtkEntry, GTK_HAS_FOCUS);
- else
- GTK_WIDGET_UNSET_FLAGS(gtkEntry, GTK_HAS_FOCUS);
gboolean interior_focus;
gint focus_line_width;
@@ -957,6 +953,9 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
if (!interior_focus && option->state & State_HasFocus)
rect.adjust(focus_line_width, focus_line_width, -focus_line_width, -focus_line_width);
+
+ if (option->state & State_HasFocus)
+ GTK_WIDGET_SET_FLAGS(gtkEntry, GTK_HAS_FOCUS);
gtkPainter.paintShadow(gtkEntry, "entry", rect, option->state & State_Enabled ?
GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE,
GTK_SHADOW_IN, gtkEntry->style,
@@ -965,6 +964,9 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
gtkPainter.paintShadow(gtkEntry, "entry", option->rect, option->state & State_Enabled ?
GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE,
GTK_SHADOW_IN, gtkEntry->style, QLS("GtkEntryShadowIn"));
+
+ if (option->state & State_HasFocus)
+ GTK_WIDGET_UNSET_FLAGS(gtkEntry, GTK_HAS_FOCUS);
}
break;
@@ -1050,17 +1052,13 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
GTK_WIDGET_SET_FLAGS(gtkButton, GTK_HAS_DEFAULT);
gtkPainter.paintBox(gtkButton, "buttondefault", buttonRect, state, GTK_SHADOW_IN,
style, isDefault ? QLS("d") : QString());
- } else
- GTK_WIDGET_UNSET_FLAGS(gtkButton, GTK_HAS_DEFAULT);
+ }
bool hasFocus = option->state & State_HasFocus;
if (hasFocus) {
key += QLS("def");
GTK_WIDGET_SET_FLAGS(gtkButton, GTK_HAS_FOCUS);
-
- } else {
- GTK_WIDGET_UNSET_FLAGS(gtkButton, GTK_HAS_FOCUS);
}
if (!interiorFocus)
@@ -1071,6 +1069,10 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
gtkPainter.paintBox(gtkButton, "button", buttonRect, state, shadow,
style, key);
+ if (isDefault)
+ GTK_WIDGET_UNSET_FLAGS(gtkButton, GTK_HAS_DEFAULT);
+ if (hasFocus)
+ GTK_WIDGET_UNSET_FLAGS(gtkButton, GTK_HAS_FOCUS);
}
break;
@@ -1334,6 +1336,8 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
GtkWidget *gtkToggleButton = QGtk::gtkWidget(buttonPath);
QGtk::gtk_widget_set_direction(gtkToggleButton, reverse ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR);
if (gtkToggleButton && (appears_as_list || comboBox->editable)) {
+ if (focus)
+ GTK_WIDGET_SET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS);
// Draw the combo box as a line edit with a button next to it
if (comboBox->editable || appears_as_list) {
GtkStateType frameState = (state == GTK_STATE_PRELIGHT) ? GTK_STATE_NORMAL : state;
@@ -1347,22 +1351,16 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
else
frameRect.setRight(arrowButtonRect.left());
- // Required for inner blue highlight with clearlooks
- if (focus) {
- GTK_WIDGET_SET_FLAGS(gtkEntry, GTK_HAS_FOCUS);
- GTK_WIDGET_SET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS);
-
- } else {
- GTK_WIDGET_UNSET_FLAGS(gtkEntry, GTK_HAS_FOCUS);
- GTK_WIDGET_UNSET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS);
- }
-
// Fill the line edit background
// We could have used flat_box with "entry_bg" but that is probably not worth the overhead
uint resolve_mask = option->palette.resolve();
int xt = gtkEntry->style->xthickness;
int yt = gtkEntry->style->ythickness;
QRect contentRect = frameRect.adjusted(xt, yt, -xt, -yt);
+ // Required for inner blue highlight with clearlooks
+ if (focus)
+ GTK_WIDGET_SET_FLAGS(gtkEntry, GTK_HAS_FOCUS);
+
if (widget && widget->testAttribute(Qt::WA_SetPalette) &&
resolve_mask & (1 << QPalette::Base)) // Palette overridden by user
p->fillRect(contentRect, option->palette.base().color());
@@ -1376,6 +1374,8 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
GTK_SHADOW_IN, gtkEntry->style, entryPath +
QString::number(focus) + QString::number(comboBox->editable) +
QString::number(option->direction));
+ if (focus)
+ GTK_WIDGET_UNSET_FLAGS(gtkEntry, GTK_HAS_FOCUS);
}
GtkStateType buttonState = GTK_STATE_NORMAL;
@@ -1394,22 +1394,21 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
gtkCachedPainter.paintBox( gtkToggleButton, "button", arrowButtonRect, buttonState,
shadow, gtkToggleButton->style, buttonPath +
QString::number(focus) + QString::number(option->direction));
-
+ if (focus)
+ GTK_WIDGET_UNSET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS);
} else {
// Draw combo box as a button
QRect buttonRect = option->rect;
- if (focus) { // Clearlooks actually check the widget for the default state
+ if (focus) // Clearlooks actually check the widget for the default state
GTK_WIDGET_SET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS);
-
- } else {
- GTK_WIDGET_UNSET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS);
- }
-
gtkCachedPainter.paintBox(gtkToggleButton, "button",
buttonRect, state,
shadow, gtkToggleButton->style,
buttonPath + QString::number(focus));
+ if (focus)
+ GTK_WIDGET_UNSET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS);
+
// Draw the separator between label and arrows
QString vSeparatorPath = buttonPath + QLS(".GtkHBox.GtkVSeparator");
@@ -1775,15 +1774,12 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
shadow = GTK_SHADOW_IN;
style = gtkPainter.getStyle(gtkSpinButton);
- if (option->state & State_HasFocus)
- GTK_WIDGET_SET_FLAGS(gtkSpinButton, GTK_HAS_FOCUS);
- else
- GTK_WIDGET_UNSET_FLAGS(gtkSpinButton, GTK_HAS_FOCUS);
QString key;
-
- if (option->state & State_HasFocus)
+ if (option->state & State_HasFocus) {
key = QLS("f");
+ GTK_WIDGET_SET_FLAGS(gtkSpinButton, GTK_HAS_FOCUS);
+ }
uint resolve_mask = option->palette.resolve();
@@ -1816,6 +1812,9 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom
gtkPainter.paintBox( gtkSpinButton, "spinbutton_down", downRect, GTK_STATE_PRELIGHT, GTK_SHADOW_OUT, style, key);
else
gtkPainter.paintBox( gtkSpinButton, "spinbutton_down", downRect, GTK_STATE_NORMAL, GTK_SHADOW_OUT, style, key);
+
+ if (option->state & State_HasFocus)
+ GTK_WIDGET_UNSET_FLAGS(gtkSpinButton, GTK_HAS_FOCUS);
}
if (spinBox->buttonSymbols == QAbstractSpinBox::PlusMinus) {
@@ -2344,7 +2343,7 @@ void QGtkStyle::drawControl(ControlElement element,
case CE_SizeGrip: {
GtkWidget *gtkStatusbar = QGtk::gtkWidget(QLS("GtkStatusbar.GtkFrame"));
QRect gripRect = option->rect.adjusted(0, 0, -gtkStatusbar->style->xthickness, -gtkStatusbar->style->ythickness);
- gtkPainter.paintResizeGrip( gtkStatusbar, "window", gripRect, GTK_STATE_NORMAL,
+ gtkPainter.paintResizeGrip( gtkStatusbar, "statusbar", gripRect, GTK_STATE_NORMAL,
GTK_SHADOW_OUT, QApplication::isRightToLeft() ?
GDK_WINDOW_EDGE_SOUTH_WEST : GDK_WINDOW_EDGE_SOUTH_EAST,
gtkStatusbar->style);
diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 58ee29f..fde1cc6 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -96,6 +96,8 @@ const short *QS60StylePrivate::m_pmPointer = QS60StylePrivate::data[0];
// theme background texture
QPixmap *QS60StylePrivate::m_background = 0;
+QPalette *QS60StylePrivate::m_themePalette = 0;
+
const struct QS60StylePrivate::frameElementCenter QS60StylePrivate::m_frameElementsData[] = {
{SE_ButtonNormal, QS60StyleEnums::SP_QsnFrButtonTbCenter},
{SE_ButtonPressed, QS60StyleEnums::SP_QsnFrButtonTbCenterPressed},
@@ -119,7 +121,8 @@ const int KNotFound = -1;
QS60StylePrivate::~QS60StylePrivate()
{
- deleteBackground();
+ clearCaches(); //deletes also background image
+ delete m_themePalette;
}
void QS60StylePrivate::drawSkinElement(SkinElements element, QPainter *painter,
@@ -291,7 +294,7 @@ QVariant QS60StylePrivate::styleProperty(const char *name) const
return QVariant();
}
-QColor QS60StylePrivate::stateColor(const QColor& color, const QStyleOption *option)
+QColor QS60StylePrivate::stateColor(const QColor &color, const QStyleOption *option)
{
QColor retColor (color);
if (option && !(option->state & QStyle::State_Enabled)) {
@@ -446,116 +449,18 @@ void QS60StylePrivate::setThemePalette(QApplication *app) const
return;
QPalette widgetPalette = QPalette(Qt::white);
-
- // basic colors
- widgetPalette.setColor(QPalette::WindowText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
- widgetPalette.setColor(QPalette::ButtonText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
- widgetPalette.setColor(QPalette::Text,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
- widgetPalette.setColor(QPalette::ToolTipText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 55, 0));
- widgetPalette.setColor(QPalette::BrightText, widgetPalette.color(QPalette::WindowText).lighter());
- widgetPalette.setColor(QPalette::HighlightedText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 10, 0));
- widgetPalette.setColor(QPalette::Link,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnHighlightColors, 3, 0));
- widgetPalette.setColor(QPalette::LinkVisited, widgetPalette.color(QPalette::Link).darker());
- widgetPalette.setColor(QPalette::Highlight,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnHighlightColors, 2, 0));
- // set these as transparent so that styled full screen theme background is visible
- widgetPalette.setColor(QPalette::AlternateBase, Qt::transparent);
- widgetPalette.setBrush(QPalette::Window, QS60StylePrivate::backgroundTexture());
- widgetPalette.setColor(QPalette::Base, Qt::transparent);
- // set button and tooltipbase based on pixel colors
- const QColor buttonColor = colorFromFrameGraphics(QS60StylePrivate::SF_ButtonNormal);
- widgetPalette.setColor(QPalette::Button, buttonColor );
- widgetPalette.setColor(QPalette::Light, widgetPalette.color(QPalette::Button).lighter());
- widgetPalette.setColor(QPalette::Dark, widgetPalette.color(QPalette::Button).darker());
- widgetPalette.setColor(QPalette::Midlight, widgetPalette.color(QPalette::Button).lighter(125));
- widgetPalette.setColor(QPalette::Mid, widgetPalette.color(QPalette::Button).darker(150));
- widgetPalette.setColor(QPalette::Shadow, Qt::black);
- QColor toolTipColor = colorFromFrameGraphics(QS60StylePrivate::SF_ToolTip);
- widgetPalette.setColor(QPalette::ToolTipBase, toolTipColor );
-
+ setThemePalette(&widgetPalette);
app->setPalette(widgetPalette);
}
-void QS60StylePrivate::setThemePalette(QWidget *widget) const
+void QS60StylePrivate::setThemePalette(QStyleOption *option) const
{
- if(!widget)
- return;
- QPalette widgetPalette = widget->palette();
+ setThemePalette(&option->palette);
+}
- // widget specific colors and fonts
- if (qobject_cast<QSlider *>(widget)){
- widgetPalette.setColor(QPalette::All, QPalette::WindowText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnLineColors, 8, 0));
- QApplication::setPalette(widgetPalette, "QSlider");
- } else if (qobject_cast<QPushButton *>(widget)){
- const QFont suggestedFont = s60Font(
- QS60StyleEnums::FC_Primary, widget->font().pointSizeF());
- widget->setFont(suggestedFont);
- widgetPalette.setColor(QPalette::Active, QPalette::ButtonText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
- widgetPalette.setColor(QPalette::Inactive, QPalette::ButtonText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
- const QStyleOption opt;
- widgetPalette.setColor(QPalette::Disabled, QPalette::ButtonText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, &opt));
- QApplication::setPalette(widgetPalette, "QPushButton");
- } else if (qobject_cast<QToolButton *>(widget)){
- const QFont suggestedFont = s60Font(
- QS60StyleEnums::FC_Primary, widget->font().pointSizeF());
- widget->setFont(suggestedFont);
- widgetPalette.setColor(QPalette::Active, QPalette::ButtonText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
- widgetPalette.setColor(QPalette::Inactive, QPalette::ButtonText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
- QApplication::setPalette(widgetPalette, "QToolButton");
- } else if (qobject_cast<QHeaderView *>(widget)){
- const QFont suggestedFont = s60Font(
- QS60StyleEnums::FC_Secondary, widget->font().pointSizeF());
- widget->setFont(suggestedFont);
- widgetPalette.setColor(QPalette::Active, QPalette::ButtonText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 23, 0));
- QHeaderView* header = qobject_cast<QHeaderView *>(widget);
- widgetPalette.setColor(QPalette::Button, Qt::transparent );
- if ( header->viewport() )
- header->viewport()->setPalette(widgetPalette);
- QApplication::setPalette(widgetPalette, "QHeaderView");
- } else if (qobject_cast<QMenuBar *>(widget)){
- widgetPalette.setColor(QPalette::All, QPalette::ButtonText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 8, 0));
- QApplication::setPalette(widgetPalette, "QMenuBar");
- } else if (qobject_cast<QTabBar *>(widget)){
- widgetPalette.setColor(QPalette::Active, QPalette::WindowText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 4, 0));
- QApplication::setPalette(widgetPalette, "QTabBar");
- } else if (qobject_cast<QTableView *>(widget)){
- widgetPalette.setColor(QPalette::All, QPalette::Text,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 22, 0));
- QApplication::setPalette(widgetPalette, "QTableView");
- } else if (qobject_cast<QGroupBox *>(widget)){
- const QFont suggestedFont = s60Font(
- QS60StyleEnums::FC_Title, widget->font().pointSizeF());
- widget->setFont(suggestedFont);
- } else if (qobject_cast<QLineEdit *>(widget)) {
- widgetPalette.setColor(QPalette::All, QPalette::HighlightedText,
- QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 24, 0));
- QApplication::setPalette(widgetPalette, "QLineEdit");
- } else if (qobject_cast<QDial *> (widget)) {
- const QColor color(QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
- widgetPalette.setColor(QPalette::WindowText, color);
- widgetPalette.setColor(QPalette::Button, QApplication::palette().color(QPalette::Button));
- widgetPalette.setColor(QPalette::Dark, color.darker());
- widgetPalette.setColor(QPalette::Light, color.lighter());
- QApplication::setPalette(widgetPalette, "QDial");
- } else if (qobject_cast<QScrollArea *>(widget)) {
- widgetPalette.setBrush(QPalette::Window, QBrush());
- QApplication::setPalette(widgetPalette, "QScrollArea");
- }
+QPalette* QS60StylePrivate::themePalette()
+{
+ return m_themePalette;
}
void QS60StylePrivate::setBackgroundTexture(QApplication *app) const
@@ -689,6 +594,167 @@ void QS60StylePrivate::refreshUI()
}
}
+void QS60StylePrivate::setFont(QWidget *widget) const
+{
+ QS60StyleEnums::FontCategories fontCategory = QS60StyleEnums::FC_Undefined;
+ if (!widget)
+ return;
+ if (qobject_cast<QPushButton *>(widget)){
+ fontCategory = QS60StyleEnums::FC_Primary;
+ } else if (qobject_cast<QToolButton *>(widget)){
+ fontCategory = QS60StyleEnums::FC_Primary;
+ } else if (qobject_cast<QHeaderView *>(widget)){
+ fontCategory = QS60StyleEnums::FC_Secondary;
+ } else if (qobject_cast<QGroupBox *>(widget)){
+ fontCategory = QS60StyleEnums::FC_Title;
+ }
+ if (fontCategory != QS60StyleEnums::FC_Undefined) {
+ const QFont suggestedFont =
+ s60Font(fontCategory, widget->font().pointSizeF());
+ widget->setFont(suggestedFont);
+ }
+}
+
+void QS60StylePrivate::setThemePalette(QWidget *widget) const
+{
+ if(!widget)
+ return;
+ QPalette widgetPalette = widget->palette();
+
+ //header view and its viewport need to be set 100% transparent button color, since drawing code will
+ //draw transparent theme graphics there.
+ if (qobject_cast<QHeaderView *>(widget)){
+ widgetPalette.setColor(QPalette::Active, QPalette::ButtonText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 23, 0));
+ QHeaderView* header = qobject_cast<QHeaderView *>(widget);
+ widgetPalette.setColor(QPalette::Button, Qt::transparent );
+ if ( header->viewport() )
+ header->viewport()->setPalette(widgetPalette);
+ QApplication::setPalette(widgetPalette, "QHeaderView");
+ }
+}
+
+void QS60StylePrivate::setThemePalette(QPalette *palette) const
+{
+ if (!palette)
+ return;
+
+ // basic colors
+ palette->setColor(QPalette::WindowText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
+ palette->setColor(QPalette::ButtonText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
+ palette->setColor(QPalette::Text,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
+ palette->setColor(QPalette::ToolTipText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 55, 0));
+ palette->setColor(QPalette::BrightText, palette->color(QPalette::WindowText).lighter());
+ palette->setColor(QPalette::HighlightedText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 10, 0));
+ palette->setColor(QPalette::Link,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnHighlightColors, 3, 0));
+ palette->setColor(QPalette::LinkVisited, palette->color(QPalette::Link).darker());
+ palette->setColor(QPalette::Highlight,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnHighlightColors, 2, 0));
+ // set these as transparent so that styled full screen theme background is visible
+ palette->setColor(QPalette::AlternateBase, Qt::transparent);
+ palette->setBrush(QPalette::Window, QS60StylePrivate::backgroundTexture());
+ palette->setColor(QPalette::Base, Qt::transparent);
+ // set button and tooltipbase based on pixel colors
+ const QColor buttonColor = this->colorFromFrameGraphics(QS60StylePrivate::SF_ButtonNormal);
+ palette->setColor(QPalette::Button, buttonColor );
+ palette->setColor(QPalette::Light, palette->color(QPalette::Button).lighter());
+ palette->setColor(QPalette::Dark, palette->color(QPalette::Button).darker());
+ palette->setColor(QPalette::Midlight, palette->color(QPalette::Button).lighter(125));
+ palette->setColor(QPalette::Mid, palette->color(QPalette::Button).darker(150));
+ palette->setColor(QPalette::Shadow, Qt::black);
+ QColor toolTipColor = this->colorFromFrameGraphics(QS60StylePrivate::SF_ToolTip);
+ palette->setColor(QPalette::ToolTipBase, toolTipColor );
+
+ setThemePaletteHash(palette);
+ QS60StylePrivate::storeThemePalette(palette);
+}
+
+void QS60StylePrivate::storeThemePalette(QPalette *palette)
+{
+ //store specified palette for latter use.
+ if (m_themePalette) {
+ delete m_themePalette;
+ m_themePalette = 0;
+ }
+ m_themePalette = new QPalette(*palette);
+}
+
+// set widget specific palettes
+void QS60StylePrivate::setThemePaletteHash(QPalette *palette) const
+{
+ if (!palette)
+ return;
+
+ //store the original palette
+ QPalette widgetPalette = *palette;
+
+ widgetPalette.setColor(QPalette::All, QPalette::WindowText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnLineColors, 8, 0));
+ QApplication::setPalette(widgetPalette, "QSlider");
+ // return to original palette after each widget
+ widgetPalette = *palette;
+
+ widgetPalette.setColor(QPalette::Active, QPalette::ButtonText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
+ widgetPalette.setColor(QPalette::Inactive, QPalette::ButtonText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
+ const QStyleOption opt;
+ widgetPalette.setColor(QPalette::Disabled, QPalette::ButtonText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, &opt));
+ QApplication::setPalette(widgetPalette, "QPushButton");
+ widgetPalette = *palette;
+
+ widgetPalette.setColor(QPalette::Active, QPalette::ButtonText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
+ widgetPalette.setColor(QPalette::Inactive, QPalette::ButtonText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
+ QApplication::setPalette(widgetPalette, "QToolButton");
+ widgetPalette = *palette;
+
+ widgetPalette.setColor(QPalette::Active, QPalette::ButtonText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 23, 0));
+ QApplication::setPalette(widgetPalette, "QHeaderView");
+ widgetPalette = *palette;
+
+ widgetPalette.setColor(QPalette::All, QPalette::ButtonText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 8, 0));
+ QApplication::setPalette(widgetPalette, "QMenuBar");
+ widgetPalette = *palette;
+
+ widgetPalette.setColor(QPalette::Active, QPalette::WindowText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 4, 0));
+ QApplication::setPalette(widgetPalette, "QTabBar");
+ widgetPalette = *palette;
+
+ widgetPalette.setColor(QPalette::All, QPalette::Text,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 22, 0));
+ QApplication::setPalette(widgetPalette, "QTableView");
+ widgetPalette = *palette;
+
+ widgetPalette.setColor(QPalette::All, QPalette::HighlightedText,
+ QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 24, 0));
+ QApplication::setPalette(widgetPalette, "QLineEdit");
+ widgetPalette = *palette;
+
+ const QColor color(QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, 0));
+ widgetPalette.setColor(QPalette::WindowText, color);
+ widgetPalette.setColor(QPalette::Button, QApplication::palette().color(QPalette::Button));
+ widgetPalette.setColor(QPalette::Dark, color.darker());
+ widgetPalette.setColor(QPalette::Light, color.lighter());
+ QApplication::setPalette(widgetPalette, "QDial");
+ widgetPalette = *palette;
+
+ widgetPalette.setBrush(QPalette::Window, QBrush());
+ QApplication::setPalette(widgetPalette, "QScrollArea");
+ widgetPalette = *palette;
+}
+
QSize QS60StylePrivate::partSize(QS60StyleEnums::SkinParts part, SkinElementFlags flags)
{
QSize result(20, 20);
@@ -2552,6 +2618,7 @@ void QS60Style::polish(QWidget *widget)
widget->setAttribute(Qt::WA_StyledBackground);
}
d->setThemePalette(widget);
+ d->setFont(widget);
}
void QS60Style::unpolish(QWidget *widget)
diff --git a/src/gui/styles/qs60style_p.h b/src/gui/styles/qs60style_p.h
index 8a872fc..88b07b3 100644
--- a/src/gui/styles/qs60style_p.h
+++ b/src/gui/styles/qs60style_p.h
@@ -381,8 +381,13 @@ public:
// calculates average color based on button skin graphics (minus borders).
QColor colorFromFrameGraphics(QS60StylePrivate::SkinFrameElements frame) const;
+
+ //set theme palette for application
void setThemePalette(QApplication *application) const;
- void setThemePalette(QWidget *widget) const;
+ //set theme palette for style option
+ void setThemePalette(QStyleOption *option) const;
+ //access to theme palette
+ static QPalette* themePalette();
static int focusRectPenWidth();
@@ -407,7 +412,6 @@ public:
static QPixmap frame(SkinFrameElements frame, const QSize &size,
SkinElementFlags flags = KDefaultSkinElementFlags);
-
static QPixmap backgroundTexture();
private:
@@ -426,6 +430,13 @@ private:
static void refreshUI();
+ // set S60 font for widget
+ void setFont(QWidget *widget) const;
+ void setThemePalette(QWidget *widget) const;
+ void setThemePalette(QPalette *palette) const;
+ void setThemePaletteHash(QPalette *palette) const;
+ static void QS60StylePrivate::storeThemePalette(QPalette *palette);
+
static QSize partSize(QS60StyleEnums::SkinParts part,
SkinElementFlags flags = KDefaultSkinElementFlags);
static QPixmap part(QS60StyleEnums::SkinParts part, const QSize &size,
@@ -438,6 +449,8 @@ private:
// Contains background texture.
static QPixmap *m_background;
const static SkinElementFlags KDefaultSkinElementFlags;
+ // defined theme palette
+ static QPalette *m_themePalette;
QPalette m_originalPalette;
};
diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp
index ddee4ba..105f6be 100644
--- a/src/gui/styles/qs60style_s60.cpp
+++ b/src/gui/styles/qs60style_s60.cpp
@@ -105,198 +105,198 @@ private:
};
const partMapEntry QS60StyleModeSpecifics::m_partMap[] = {
- /* SP_QgnGrafBarWait */ {KAknsIIDQgnGrafBarWaitAnim, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafBarFrameCenter */ {KAknsIIDQgnGrafBarFrameCenter, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafBarFrameSideL */ {KAknsIIDQgnGrafBarFrameSideL, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafBarFrameSideR */ {KAknsIIDQgnGrafBarFrameSideR, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafBarProgress */ {KAknsIIDQgnGrafBarProgress, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafScrollArrowDown */ {KAknsIIDQgnGrafScrollArrowDown, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafScrollArrowLeft */ {KAknsIIDQgnGrafScrollArrowLeft, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafScrollArrowRight */ {KAknsIIDQgnGrafScrollArrowRight, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafScrollArrowUp */ {KAknsIIDQgnGrafScrollArrowUp, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafTabActiveL */ {KAknsIIDQgnGrafTabActiveL, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafTabActiveM */ {KAknsIIDQgnGrafTabActiveM, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafTabActiveR */ {KAknsIIDQgnGrafTabActiveR, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafTabPassiveL */ {KAknsIIDQgnGrafTabPassiveL, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafTabPassiveM */ {KAknsIIDQgnGrafTabPassiveM, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnGrafTabPassiveR */ {KAknsIIDQgnGrafTabPassiveR, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnIndiCheckboxOff */ {KAknsIIDQgnIndiCheckboxOff, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnIndiCheckboxOn */ {KAknsIIDQgnIndiCheckboxOn, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafBarWait */ {KAknsIIDQgnGrafBarWaitAnim, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafBarFrameCenter */ {KAknsIIDQgnGrafBarFrameCenter, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafBarFrameSideL */ {KAknsIIDQgnGrafBarFrameSideL, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafBarFrameSideR */ {KAknsIIDQgnGrafBarFrameSideR, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafBarProgress */ {KAknsIIDQgnGrafBarProgress, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafScrollArrowDown */ {KAknsIIDQgnGrafScrollArrowDown, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafScrollArrowLeft */ {KAknsIIDQgnGrafScrollArrowLeft, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafScrollArrowRight */ {KAknsIIDQgnGrafScrollArrowRight, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafScrollArrowUp */ {KAknsIIDQgnGrafScrollArrowUp, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafTabActiveL */ {KAknsIIDQgnGrafTabActiveL, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafTabActiveM */ {KAknsIIDQgnGrafTabActiveM, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafTabActiveR */ {KAknsIIDQgnGrafTabActiveR, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafTabPassiveL */ {KAknsIIDQgnGrafTabPassiveL, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafTabPassiveM */ {KAknsIIDQgnGrafTabPassiveM, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnGrafTabPassiveR */ {KAknsIIDQgnGrafTabPassiveR, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnIndiCheckboxOff */ {KAknsIIDQgnIndiCheckboxOff, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnIndiCheckboxOn */ {KAknsIIDQgnIndiCheckboxOn, EDrawIcon, ES60_AllReleases, -1,-1},
// Following 5 items (SP_QgnIndiHlColSuper - SP_QgnIndiHlLineStraight) are available starting from S60 release 3.2.
// In 3.1 CommonStyle drawing is used for these QTreeView elements, since no similar icons in AVKON UI.
- /* SP_QgnIndiHlColSuper */ {KAknsIIDNone, EDrawIcon, ES60_None, EAknsMajorGeneric, 0x17d5 /* KAknsIIDQgnIndiHlColSuper */},
- /* SP_QgnIndiHlExpSuper */ {KAknsIIDNone, EDrawIcon, ES60_None, EAknsMajorGeneric, 0x17d6 /* KAknsIIDQgnIndiHlExpSuper */},
- /* SP_QgnIndiHlLineBranch */ {KAknsIIDNone, EDrawIcon, ES60_None, EAknsMajorGeneric, 0x17d7 /* KAknsIIDQgnIndiHlLineBranch */},
- /* SP_QgnIndiHlLineEnd */ {KAknsIIDNone, EDrawIcon, ES60_None, EAknsMajorGeneric, 0x17d8 /* KAknsIIDQgnIndiHlLineEnd */},
- /* SP_QgnIndiHlLineStraight */ {KAknsIIDNone, EDrawIcon, ES60_None, EAknsMajorGeneric, 0x17d9 /* KAknsIIDQgnIndiHlLineStraight */},
- /* SP_QgnIndiMarkedAdd */ {KAknsIIDQgnIndiMarkedAdd, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnIndiNaviArrowLeft */ {KAknsIIDQgnGrafScrollArrowLeft, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnIndiNaviArrowRight */ {KAknsIIDQgnGrafScrollArrowRight, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnIndiRadiobuttOff */ {KAknsIIDQgnIndiRadiobuttOff, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnIndiRadiobuttOn */ {KAknsIIDQgnIndiRadiobuttOn, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnIndiSliderEdit */ {KAknsIIDQgnIndiSliderEdit, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnIndiSubMenu */ {KAknsIIDQgnIndiSubmenu, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnNoteErased */ {KAknsIIDQgnNoteErased, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnNoteError */ {KAknsIIDQgnNoteError, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnNoteInfo */ {KAknsIIDQgnNoteInfo, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnNoteOk */ {KAknsIIDQgnNoteOk, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnNoteQuery */ {KAknsIIDQgnNoteQuery, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnNoteWarning */ {KAknsIIDQgnNoteWarning, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnPropFileSmall */ {KAknsIIDQgnPropFileSmall, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnPropFolderCurrent */ {KAknsIIDQgnPropFolderCurrent, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnPropFolderSmall */ {KAknsIIDQgnPropFolderSmall, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnPropFolderSmallNew */ {KAknsIIDQgnPropFolderSmallNew, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QgnPropPhoneMemcLarge */ {KAknsIIDQgnPropPhoneMemcLarge, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnIndiHlColSuper */ {KAknsIIDNone, EDrawIcon, ES60_3_1, EAknsMajorGeneric, 0x17d5 /* KAknsIIDQgnIndiHlColSuper */},
+ /* SP_QgnIndiHlExpSuper */ {KAknsIIDNone, EDrawIcon, ES60_3_1, EAknsMajorGeneric, 0x17d6 /* KAknsIIDQgnIndiHlExpSuper */},
+ /* SP_QgnIndiHlLineBranch */ {KAknsIIDNone, EDrawIcon, ES60_3_1, EAknsMajorGeneric, 0x17d7 /* KAknsIIDQgnIndiHlLineBranch */},
+ /* SP_QgnIndiHlLineEnd */ {KAknsIIDNone, EDrawIcon, ES60_3_1, EAknsMajorGeneric, 0x17d8 /* KAknsIIDQgnIndiHlLineEnd */},
+ /* SP_QgnIndiHlLineStraight */ {KAknsIIDNone, EDrawIcon, ES60_3_1, EAknsMajorGeneric, 0x17d9 /* KAknsIIDQgnIndiHlLineStraight */},
+ /* SP_QgnIndiMarkedAdd */ {KAknsIIDQgnIndiMarkedAdd, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnIndiNaviArrowLeft */ {KAknsIIDQgnGrafScrollArrowLeft, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnIndiNaviArrowRight */ {KAknsIIDQgnGrafScrollArrowRight, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnIndiRadiobuttOff */ {KAknsIIDQgnIndiRadiobuttOff, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnIndiRadiobuttOn */ {KAknsIIDQgnIndiRadiobuttOn, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnIndiSliderEdit */ {KAknsIIDQgnIndiSliderEdit, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnIndiSubMenu */ {KAknsIIDQgnIndiSubmenu, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnNoteErased */ {KAknsIIDQgnNoteErased, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnNoteError */ {KAknsIIDQgnNoteError, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnNoteInfo */ {KAknsIIDQgnNoteInfo, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnNoteOk */ {KAknsIIDQgnNoteOk, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnNoteQuery */ {KAknsIIDQgnNoteQuery, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnNoteWarning */ {KAknsIIDQgnNoteWarning, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnPropFileSmall */ {KAknsIIDQgnPropFileSmall, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnPropFolderCurrent */ {KAknsIIDQgnPropFolderCurrent, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnPropFolderSmall */ {KAknsIIDQgnPropFolderSmall, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnPropFolderSmallNew */ {KAknsIIDQgnPropFolderSmallNew, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QgnPropPhoneMemcLarge */ {KAknsIIDQgnPropPhoneMemcLarge, EDrawIcon, ES60_AllReleases, -1,-1},
// 3.1 & 3.2 do not have pressed state for scrollbar, so use normal scrollbar graphics instead.
- /* SP_QsnCpScrollHandleBottomPressed*/ {KAknsIIDQsnCpScrollHandleBottom, EDrawIcon, ES60_3_1 | ES60_3_2, EAknsMajorGeneric, 0x20f8}, /*KAknsIIDQsnCpScrollHandleBottomPressed*/
- /* SP_QsnCpScrollHandleMiddlePressed*/ {KAknsIIDQsnCpScrollHandleMiddle, EDrawIcon, ES60_3_1 | ES60_3_2, EAknsMajorGeneric, 0x20f9}, /*KAknsIIDQsnCpScrollHandleMiddlePressed*/
- /* SP_QsnCpScrollHandleTopPressed*/ {KAknsIIDQsnCpScrollHandleTop, EDrawIcon, ES60_3_1 | ES60_3_2, EAknsMajorGeneric, 0x20fa}, /*KAknsIIDQsnCpScrollHandleTopPressed*/
-
- /* SP_QsnBgScreen */ {KAknsIIDQsnBgScreen, EDrawBackground, ES60_AllReleases, -1,-1},
-
- /* SP_QsnCpScrollBgBottom */ {KAknsIIDQsnCpScrollBgBottom, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QsnCpScrollBgMiddle */ {KAknsIIDQsnCpScrollBgMiddle, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QsnCpScrollBgTop */ {KAknsIIDQsnCpScrollBgTop, EDrawIcon, ES60_AllReleases, -1,-1},
-
- /* SP_QsnCpScrollHandleBottom */ {KAknsIIDQsnCpScrollHandleBottom, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QsnCpScrollHandleMiddle */ {KAknsIIDQsnCpScrollHandleMiddle, EDrawIcon, ES60_AllReleases, -1,-1},
- /* SP_QsnCpScrollHandleTop */ {KAknsIIDQsnCpScrollHandleTop, EDrawIcon, ES60_AllReleases, -1,-1},
-
- /* SP_QsnFrButtonTbCornerTl */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_AllReleases, -1,-1}, //todo: use "normal button" from 5.0 onwards
- /* SP_QsnFrButtonTbCornerTr */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbCornerBl */ {KAknsIIDQsnFrButtonTbCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbCornerBr */ {KAknsIIDQsnFrButtonTbCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbSideT */ {KAknsIIDQsnFrButtonTbSideT, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbSideB */ {KAknsIIDQsnFrButtonTbSideB, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbSideL */ {KAknsIIDQsnFrButtonTbSideL, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbSideR */ {KAknsIIDQsnFrButtonTbSideR, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbCenter */ {KAknsIIDQsnFrButtonTbCenter, EDrawIcon, ES60_AllReleases, -1,-1},
-
- /* SP_QsnFrButtonTbCornerTlPressed */{KAknsIIDQsnFrButtonTbCornerTlPressed, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbCornerTrPressed */{KAknsIIDQsnFrButtonTbCornerTrPressed, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbCornerBlPressed */{KAknsIIDQsnFrButtonTbCornerBlPressed, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbCornerBrPressed */{KAknsIIDQsnFrButtonTbCornerBrPressed, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbSideTPressed */ {KAknsIIDQsnFrButtonTbSideTPressed, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbSideBPressed */ {KAknsIIDQsnFrButtonTbSideBPressed, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbSideLPressed */ {KAknsIIDQsnFrButtonTbSideLPressed, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbSideRPressed */ {KAknsIIDQsnFrButtonTbSideRPressed, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrButtonTbCenterPressed */ {KAknsIIDQsnFrButtonTbCenterPressed, EDrawIcon, ES60_AllReleases, -1,-1},
-
- /* SP_QsnFrCaleCornerTl */ {KAknsIIDQsnFrCaleCornerTl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleCornerTr */ {KAknsIIDQsnFrCaleCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleCornerBl */ {KAknsIIDQsnFrCaleCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleCornerBr */ {KAknsIIDQsnFrCaleCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleGSideT */ {KAknsIIDQsnFrCaleSideT, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleGSideB */ {KAknsIIDQsnFrCaleSideB, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleGSideL */ {KAknsIIDQsnFrCaleSideL, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleGSideR */ {KAknsIIDQsnFrCaleSideR, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleCenter */ {KAknsIIDQsnFrCaleCenter, ENoDraw, ES60_AllReleases, -1,-1},
-
- /* SP_QsnFrCaleHeadingCornerTl */ {KAknsIIDQsnFrCaleHeadingCornerTl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleHeadingCornerTr */ {KAknsIIDQsnFrCaleHeadingCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleHeadingCornerBl */ {KAknsIIDQsnFrCaleHeadingCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleHeadingCornerBr */ {KAknsIIDQsnFrCaleHeadingCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleHeadingSideT */ {KAknsIIDQsnFrCaleHeadingSideT, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleHeadingSideB */ {KAknsIIDQsnFrCaleHeadingSideB, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleHeadingSideL */ {KAknsIIDQsnFrCaleHeadingSideL, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleHeadingSideR */ {KAknsIIDQsnFrCaleHeadingSideR, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrCaleHeadingCenter */ {KAknsIIDQsnFrCaleHeadingCenter, ENoDraw, ES60_AllReleases, -1,-1},
-
- /* SP_QsnFrInputCornerTl */ {KAknsIIDQsnFrInputCornerTl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrInputCornerTr */ {KAknsIIDQsnFrInputCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrInputCornerBl */ {KAknsIIDQsnFrInputCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrInputCornerBr */ {KAknsIIDQsnFrInputCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrInputSideT */ {KAknsIIDQsnFrInputSideT, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrInputSideB */ {KAknsIIDQsnFrInputSideB, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrInputSideL */ {KAknsIIDQsnFrInputSideL, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrInputSideR */ {KAknsIIDQsnFrInputSideR, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrInputCenter */ {KAknsIIDQsnFrInputCenter, ENoDraw, ES60_AllReleases, -1,-1},
-
- /* SP_QsnFrListCornerTl */ {KAknsIIDQsnFrListCornerTl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrListCornerTr */ {KAknsIIDQsnFrListCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrListCornerBl */ {KAknsIIDQsnFrListCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrListCornerBr */ {KAknsIIDQsnFrListCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrListSideT */ {KAknsIIDQsnFrListSideT, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrListSideB */ {KAknsIIDQsnFrListSideB, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrListSideL */ {KAknsIIDQsnFrListSideL, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrListSideR */ {KAknsIIDQsnFrListSideR, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrListCenter */ {KAknsIIDQsnFrListCenter, ENoDraw, ES60_AllReleases, -1,-1},
-
- /* SP_QsnFrPopupCornerTl */ {KAknsIIDQsnFrPopupCornerTl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrPopupCornerTr */ {KAknsIIDQsnFrPopupCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrPopupCornerBl */ {KAknsIIDQsnFrPopupCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrPopupCornerBr */ {KAknsIIDQsnFrPopupCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrPopupSideT */ {KAknsIIDQsnFrPopupSideT, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrPopupSideB */ {KAknsIIDQsnFrPopupSideB, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrPopupSideL */ {KAknsIIDQsnFrPopupSideL, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrPopupSideR */ {KAknsIIDQsnFrPopupSideR, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrPopupCenter */ {KAknsIIDQsnFrPopupCenter, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnCpScrollHandleBottomPressed*/ {KAknsIIDQsnCpScrollHandleBottom, EDrawIcon, ES60_3_1 | ES60_3_2, EAknsMajorGeneric, 0x20f8}, /*KAknsIIDQsnCpScrollHandleBottomPressed*/
+ /* SP_QsnCpScrollHandleMiddlePressed*/ {KAknsIIDQsnCpScrollHandleMiddle, EDrawIcon, ES60_3_1 | ES60_3_2, EAknsMajorGeneric, 0x20f9}, /*KAknsIIDQsnCpScrollHandleMiddlePressed*/
+ /* SP_QsnCpScrollHandleTopPressed*/ {KAknsIIDQsnCpScrollHandleTop, EDrawIcon, ES60_3_1 | ES60_3_2, EAknsMajorGeneric, 0x20fa}, /*KAknsIIDQsnCpScrollHandleTopPressed*/
+
+ /* SP_QsnBgScreen */ {KAknsIIDQsnBgScreen, EDrawBackground, ES60_AllReleases, -1,-1},
+
+ /* SP_QsnCpScrollBgBottom */ {KAknsIIDQsnCpScrollBgBottom, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QsnCpScrollBgMiddle */ {KAknsIIDQsnCpScrollBgMiddle, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QsnCpScrollBgTop */ {KAknsIIDQsnCpScrollBgTop, EDrawIcon, ES60_AllReleases, -1,-1},
+
+ /* SP_QsnCpScrollHandleBottom */ {KAknsIIDQsnCpScrollHandleBottom, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QsnCpScrollHandleMiddle */ {KAknsIIDQsnCpScrollHandleMiddle, EDrawIcon, ES60_AllReleases, -1,-1},
+ /* SP_QsnCpScrollHandleTop */ {KAknsIIDQsnCpScrollHandleTop, EDrawIcon, ES60_AllReleases, -1,-1},
+
+ /* SP_QsnFrButtonTbCornerTl */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_AllReleases, -1,-1}, //todo: use "normal button" from 5.0 onwards
+ /* SP_QsnFrButtonTbCornerTr */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbCornerBl */ {KAknsIIDQsnFrButtonTbCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbCornerBr */ {KAknsIIDQsnFrButtonTbCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbSideT */ {KAknsIIDQsnFrButtonTbSideT, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbSideB */ {KAknsIIDQsnFrButtonTbSideB, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbSideL */ {KAknsIIDQsnFrButtonTbSideL, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbSideR */ {KAknsIIDQsnFrButtonTbSideR, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbCenter */ {KAknsIIDQsnFrButtonTbCenter, EDrawIcon, ES60_AllReleases, -1,-1},
+
+ /* SP_QsnFrButtonTbCornerTlPressed */{KAknsIIDQsnFrButtonTbCornerTlPressed, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbCornerTrPressed */{KAknsIIDQsnFrButtonTbCornerTrPressed, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbCornerBlPressed */{KAknsIIDQsnFrButtonTbCornerBlPressed, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbCornerBrPressed */{KAknsIIDQsnFrButtonTbCornerBrPressed, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbSideTPressed */ {KAknsIIDQsnFrButtonTbSideTPressed, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbSideBPressed */ {KAknsIIDQsnFrButtonTbSideBPressed, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbSideLPressed */ {KAknsIIDQsnFrButtonTbSideLPressed, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbSideRPressed */ {KAknsIIDQsnFrButtonTbSideRPressed, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrButtonTbCenterPressed */ {KAknsIIDQsnFrButtonTbCenterPressed, EDrawIcon, ES60_AllReleases, -1,-1},
+
+ /* SP_QsnFrCaleCornerTl */ {KAknsIIDQsnFrCaleCornerTl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleCornerTr */ {KAknsIIDQsnFrCaleCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleCornerBl */ {KAknsIIDQsnFrCaleCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleCornerBr */ {KAknsIIDQsnFrCaleCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleGSideT */ {KAknsIIDQsnFrCaleSideT, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleGSideB */ {KAknsIIDQsnFrCaleSideB, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleGSideL */ {KAknsIIDQsnFrCaleSideL, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleGSideR */ {KAknsIIDQsnFrCaleSideR, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleCenter */ {KAknsIIDQsnFrCaleCenter, ENoDraw, ES60_AllReleases, -1,-1},
+
+ /* SP_QsnFrCaleHeadingCornerTl */ {KAknsIIDQsnFrCaleHeadingCornerTl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleHeadingCornerTr */ {KAknsIIDQsnFrCaleHeadingCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleHeadingCornerBl */ {KAknsIIDQsnFrCaleHeadingCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleHeadingCornerBr */ {KAknsIIDQsnFrCaleHeadingCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleHeadingSideT */ {KAknsIIDQsnFrCaleHeadingSideT, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleHeadingSideB */ {KAknsIIDQsnFrCaleHeadingSideB, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleHeadingSideL */ {KAknsIIDQsnFrCaleHeadingSideL, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleHeadingSideR */ {KAknsIIDQsnFrCaleHeadingSideR, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrCaleHeadingCenter */ {KAknsIIDQsnFrCaleHeadingCenter, ENoDraw, ES60_AllReleases, -1,-1},
+
+ /* SP_QsnFrInputCornerTl */ {KAknsIIDQsnFrInputCornerTl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrInputCornerTr */ {KAknsIIDQsnFrInputCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrInputCornerBl */ {KAknsIIDQsnFrInputCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrInputCornerBr */ {KAknsIIDQsnFrInputCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrInputSideT */ {KAknsIIDQsnFrInputSideT, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrInputSideB */ {KAknsIIDQsnFrInputSideB, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrInputSideL */ {KAknsIIDQsnFrInputSideL, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrInputSideR */ {KAknsIIDQsnFrInputSideR, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrInputCenter */ {KAknsIIDQsnFrInputCenter, ENoDraw, ES60_AllReleases, -1,-1},
+
+ /* SP_QsnFrListCornerTl */ {KAknsIIDQsnFrListCornerTl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrListCornerTr */ {KAknsIIDQsnFrListCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrListCornerBl */ {KAknsIIDQsnFrListCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrListCornerBr */ {KAknsIIDQsnFrListCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrListSideT */ {KAknsIIDQsnFrListSideT, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrListSideB */ {KAknsIIDQsnFrListSideB, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrListSideL */ {KAknsIIDQsnFrListSideL, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrListSideR */ {KAknsIIDQsnFrListSideR, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrListCenter */ {KAknsIIDQsnFrListCenter, ENoDraw, ES60_AllReleases, -1,-1},
+
+ /* SP_QsnFrPopupCornerTl */ {KAknsIIDQsnFrPopupCornerTl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrPopupCornerTr */ {KAknsIIDQsnFrPopupCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrPopupCornerBl */ {KAknsIIDQsnFrPopupCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrPopupCornerBr */ {KAknsIIDQsnFrPopupCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrPopupSideT */ {KAknsIIDQsnFrPopupSideT, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrPopupSideB */ {KAknsIIDQsnFrPopupSideB, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrPopupSideL */ {KAknsIIDQsnFrPopupSideL, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrPopupSideR */ {KAknsIIDQsnFrPopupSideR, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrPopupCenter */ {KAknsIIDQsnFrPopupCenter, ENoDraw, ES60_AllReleases, -1,-1},
// ToolTip graphics different in 3.1 vs. 3.2+.
- /* SP_QsnFrPopupPreviewCornerTl */ {KAknsIIDQsnFrPopupCornerTl, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c5}, /* KAknsIIDQsnFrPopupPreviewCornerTl */
- /* SP_QsnFrPopupPreviewCornerTr */ {KAknsIIDQsnFrPopupCornerTr, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c6},
- /* SP_QsnFrPopupPreviewCornerBl */ {KAknsIIDQsnFrPopupCornerBl, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c3},
- /* SP_QsnFrPopupPreviewCornerBr */ {KAknsIIDQsnFrPopupCornerBr, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c4},
- /* SP_QsnFrPopupPreviewSideT */ {KAknsIIDQsnFrPopupSideT, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19ca},
- /* SP_QsnFrPopupPreviewSideB */ {KAknsIIDQsnFrPopupSideB, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c7},
- /* SP_QsnFrPopupPreviewSideL */ {KAknsIIDQsnFrPopupSideL, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c8},
- /* SP_QsnFrPopupPreviewSideR */ {KAknsIIDQsnFrPopupSideR, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c9},
- /* SP_QsnFrPopupPreviewCenter */ {KAknsIIDQsnFrPopupCenter, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c2},
-
- /* SP_QsnFrSetOptCornerTl */ {KAknsIIDQsnFrSetOptCornerTl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrSetOptCornerTr */ {KAknsIIDQsnFrSetOptCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrSetOptCornerBl */ {KAknsIIDQsnFrSetOptCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrSetOptCornerBr */ {KAknsIIDQsnFrSetOptCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrSetOptSideT */ {KAknsIIDQsnFrSetOptSideT, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrSetOptSideB */ {KAknsIIDQsnFrSetOptSideB, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrSetOptSideL */ {KAknsIIDQsnFrSetOptSideL, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrSetOptSideR */ {KAknsIIDQsnFrSetOptSideR, ENoDraw, ES60_AllReleases, -1,-1},
- /* SP_QsnFrSetOptCenter */ {KAknsIIDQsnFrSetOptCenter, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrPopupPreviewCornerTl */ {KAknsIIDQsnFrPopupCornerTl, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c5}, /* KAknsIIDQsnFrPopupPreviewCornerTl */
+ /* SP_QsnFrPopupPreviewCornerTr */ {KAknsIIDQsnFrPopupCornerTr, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c6},
+ /* SP_QsnFrPopupPreviewCornerBl */ {KAknsIIDQsnFrPopupCornerBl, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c3},
+ /* SP_QsnFrPopupPreviewCornerBr */ {KAknsIIDQsnFrPopupCornerBr, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c4},
+ /* SP_QsnFrPopupPreviewSideT */ {KAknsIIDQsnFrPopupSideT, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19ca},
+ /* SP_QsnFrPopupPreviewSideB */ {KAknsIIDQsnFrPopupSideB, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c7},
+ /* SP_QsnFrPopupPreviewSideL */ {KAknsIIDQsnFrPopupSideL, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c8},
+ /* SP_QsnFrPopupPreviewSideR */ {KAknsIIDQsnFrPopupSideR, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c9},
+ /* SP_QsnFrPopupPreviewCenter */ {KAknsIIDQsnFrPopupCenter, ENoDraw, ES60_3_1, EAknsMajorSkin, 0x19c2},
+
+ /* SP_QsnFrSetOptCornerTl */ {KAknsIIDQsnFrSetOptCornerTl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrSetOptCornerTr */ {KAknsIIDQsnFrSetOptCornerTr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrSetOptCornerBl */ {KAknsIIDQsnFrSetOptCornerBl, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrSetOptCornerBr */ {KAknsIIDQsnFrSetOptCornerBr, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrSetOptSideT */ {KAknsIIDQsnFrSetOptSideT, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrSetOptSideB */ {KAknsIIDQsnFrSetOptSideB, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrSetOptSideL */ {KAknsIIDQsnFrSetOptSideL, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrSetOptSideR */ {KAknsIIDQsnFrSetOptSideR, ENoDraw, ES60_AllReleases, -1,-1},
+ /* SP_QsnFrSetOptCenter */ {KAknsIIDQsnFrSetOptCenter, ENoDraw, ES60_AllReleases, -1,-1},
// No toolbar frame for 5.0+ releases.
- /* SP_QsnFrPopupSubCornerTl */ {KAknsIIDQsnFrPopupSubCornerTl, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
- /* SP_QsnFrPopupSubCornerTr */ {KAknsIIDQsnFrPopupSubCornerTr, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
- /* SP_QsnFrPopupSubCornerBl */ {KAknsIIDQsnFrPopupSubCornerBl, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
- /* SP_QsnFrPopupSubCornerBr */ {KAknsIIDQsnFrPopupSubCornerBr, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
- /* SP_QsnFrPopupSubSideT */ {KAknsIIDQsnFrPopupSubSideT, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
- /* SP_QsnFrPopupSubSideB */ {KAknsIIDQsnFrPopupSubSideB, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
- /* SP_QsnFrPopupSubSideL */ {KAknsIIDQsnFrPopupSubSideL, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
- /* SP_QsnFrPopupSubSideR */ {KAknsIIDQsnFrPopupSubSideR, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
- /* SP_QsnFrPopupSubCenter */ {KAknsIIDQsnFrPopupCenterSubmenu, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
+ /* SP_QsnFrPopupSubCornerTl */ {KAknsIIDQsnFrPopupSubCornerTl, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
+ /* SP_QsnFrPopupSubCornerTr */ {KAknsIIDQsnFrPopupSubCornerTr, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
+ /* SP_QsnFrPopupSubCornerBl */ {KAknsIIDQsnFrPopupSubCornerBl, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
+ /* SP_QsnFrPopupSubCornerBr */ {KAknsIIDQsnFrPopupSubCornerBr, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
+ /* SP_QsnFrPopupSubSideT */ {KAknsIIDQsnFrPopupSubSideT, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
+ /* SP_QsnFrPopupSubSideB */ {KAknsIIDQsnFrPopupSubSideB, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
+ /* SP_QsnFrPopupSubSideL */ {KAknsIIDQsnFrPopupSubSideL, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
+ /* SP_QsnFrPopupSubSideR */ {KAknsIIDQsnFrPopupSubSideR, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
+ /* SP_QsnFrPopupSubCenter */ {KAknsIIDQsnFrPopupCenterSubmenu, ENoDraw, ES60_3_1 | ES60_3_2, -1,-1},
// Toolbar graphics is different in 3.1/3.2 vs. 5.0
- /* SP_QsnFrSctrlButtonCornerTl */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2301}, /* KAknsIIDQgnFrSctrlButtonCornerTl*/
- /* SP_QsnFrSctrlButtonCornerTr */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2302},
- /* SP_QsnFrSctrlButtonCornerBl */ {KAknsIIDQsnFrButtonTbCornerBl, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2303},
- /* SP_QsnFrSctrlButtonCornerBr */ {KAknsIIDQsnFrButtonTbCornerBr, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2304},
- /* SP_QsnFrSctrlButtonSideT */ {KAknsIIDQsnFrButtonTbSideT, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2305},
- /* SP_QsnFrSctrlButtonSideB */ {KAknsIIDQsnFrButtonTbSideB, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2306},
- /* SP_QsnFrSctrlButtonSideL */ {KAknsIIDQsnFrButtonTbSideL, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2307},
- /* SP_QsnFrSctrlButtonSideR */ {KAknsIIDQsnFrButtonTbSideR, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2308},
- /* SP_QsnFrSctrlButtonCenter */ {KAknsIIDQsnFrButtonTbCenter, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2309}, /*KAknsIIDQgnFrSctrlButtonCenter*/
+ /* SP_QsnFrSctrlButtonCornerTl */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2301}, /* KAknsIIDQgnFrSctrlButtonCornerTl*/
+ /* SP_QsnFrSctrlButtonCornerTr */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2302},
+ /* SP_QsnFrSctrlButtonCornerBl */ {KAknsIIDQsnFrButtonTbCornerBl, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2303},
+ /* SP_QsnFrSctrlButtonCornerBr */ {KAknsIIDQsnFrButtonTbCornerBr, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2304},
+ /* SP_QsnFrSctrlButtonSideT */ {KAknsIIDQsnFrButtonTbSideT, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2305},
+ /* SP_QsnFrSctrlButtonSideB */ {KAknsIIDQsnFrButtonTbSideB, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2306},
+ /* SP_QsnFrSctrlButtonSideL */ {KAknsIIDQsnFrButtonTbSideL, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2307},
+ /* SP_QsnFrSctrlButtonSideR */ {KAknsIIDQsnFrButtonTbSideR, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2308},
+ /* SP_QsnFrSctrlButtonCenter */ {KAknsIIDQsnFrButtonTbCenter, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2309}, /*KAknsIIDQgnFrSctrlButtonCenter*/
// No pressed state for toolbar button in 3.1/3.2.
- /* SP_QsnFrSctrlButtonCornerTlPressed */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2621}, /*KAknsIIDQsnFrSctrlButtonCornerTlPressed*/
- /* SP_QsnFrSctrlButtonCornerTrPressed */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2622},
- /* SP_QsnFrSctrlButtonCornerBlPressed */ {KAknsIIDQsnFrButtonTbCornerBl, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2623},
- /* SP_QsnFrSctrlButtonCornerBrPressed */ {KAknsIIDQsnFrButtonTbCornerBr, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2624},
- /* SP_QsnFrSctrlButtonSideTPressed */ {KAknsIIDQsnFrButtonTbSideT, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2625},
- /* SP_QsnFrSctrlButtonSideBPressed */ {KAknsIIDQsnFrButtonTbSideB, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2626},
- /* SP_QsnFrSctrlButtonSideLPressed */ {KAknsIIDQsnFrButtonTbSideL, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2627},
- /* SP_QsnFrSctrlButtonSideRPressed */ {KAknsIIDQsnFrButtonTbSideR, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2628},
- /* SP_QsnFrSctrlButtonCenterPressed */ {KAknsIIDQsnFrButtonTbCenter, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2629},
+ /* SP_QsnFrSctrlButtonCornerTlPressed */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2621}, /*KAknsIIDQsnFrSctrlButtonCornerTlPressed*/
+ /* SP_QsnFrSctrlButtonCornerTrPressed */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2622},
+ /* SP_QsnFrSctrlButtonCornerBlPressed */ {KAknsIIDQsnFrButtonTbCornerBl, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2623},
+ /* SP_QsnFrSctrlButtonCornerBrPressed */ {KAknsIIDQsnFrButtonTbCornerBr, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2624},
+ /* SP_QsnFrSctrlButtonSideTPressed */ {KAknsIIDQsnFrButtonTbSideT, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2625},
+ /* SP_QsnFrSctrlButtonSideBPressed */ {KAknsIIDQsnFrButtonTbSideB, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2626},
+ /* SP_QsnFrSctrlButtonSideLPressed */ {KAknsIIDQsnFrButtonTbSideL, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2627},
+ /* SP_QsnFrSctrlButtonSideRPressed */ {KAknsIIDQsnFrButtonTbSideR, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2628},
+ /* SP_QsnFrSctrlButtonCenterPressed */ {KAknsIIDQsnFrButtonTbCenter, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x2629},
// No inactive button graphics in 3.1/3.2
- /* SP_QsnFrButtonCornerTlInactive */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b1}, /*KAknsIIDQsnFrButtonCornerTlInactive*/
- /* SP_QsnFrButtonCornerTrInactive */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b2},
- /* SP_QsnFrButtonCornerBlInactive */ {KAknsIIDQsnFrButtonTbCornerBl, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b3},
- /* SP_QsnFrButtonCornerTrInactive */ {KAknsIIDQsnFrButtonTbCornerBr, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b4},
- /* SP_QsnFrButtonSideTInactive */ {KAknsIIDQsnFrButtonTbSideT, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b5},
- /* SP_QsnFrButtonSideBInactive */ {KAknsIIDQsnFrButtonTbSideB, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b6},
- /* SP_QsnFrButtonSideLInactive */ {KAknsIIDQsnFrButtonTbSideL, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b7},
- /* SP_QsnFrButtonSideRInactive */ {KAknsIIDQsnFrButtonTbSideR, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b8},
- /* SP_QsnFrButtonCenterInactive */ {KAknsIIDQsnFrButtonTbCenter, EDrawIcon,ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b9}
+ /* SP_QsnFrButtonCornerTlInactive */ {KAknsIIDQsnFrButtonTbCornerTl, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b1}, /*KAknsIIDQsnFrButtonCornerTlInactive*/
+ /* SP_QsnFrButtonCornerTrInactive */ {KAknsIIDQsnFrButtonTbCornerTr, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b2},
+ /* SP_QsnFrButtonCornerBlInactive */ {KAknsIIDQsnFrButtonTbCornerBl, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b3},
+ /* SP_QsnFrButtonCornerTrInactive */ {KAknsIIDQsnFrButtonTbCornerBr, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b4},
+ /* SP_QsnFrButtonSideTInactive */ {KAknsIIDQsnFrButtonTbSideT, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b5},
+ /* SP_QsnFrButtonSideBInactive */ {KAknsIIDQsnFrButtonTbSideB, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b6},
+ /* SP_QsnFrButtonSideLInactive */ {KAknsIIDQsnFrButtonTbSideL, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b7},
+ /* SP_QsnFrButtonSideRInactive */ {KAknsIIDQsnFrButtonTbSideR, ENoDraw, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b8},
+ /* SP_QsnFrButtonCenterInactive */ {KAknsIIDQsnFrButtonTbCenter, EDrawIcon, ES60_3_1 | ES60_3_2, EAknsMajorSkin, 0x21b9}
};
@@ -622,65 +622,63 @@ QPixmap QS60StyleModeSpecifics::createSkinnedGraphicsL(
QPixmap result;
switch (drawType) {
- case EDrawIcon:
- {
- TInt fallbackGraphicID = -1;
- HBufC* iconFile = HBufC::NewLC( KMaxFileName );
- TPtr fileNamePtr = iconFile->Des();
- fallbackInfo(part, fileNamePtr, fallbackGraphicID);
- // todo: could we instead use AknIconUtils::AvkonIconFileName(); to avoid allocating each time?
-
- CFbsBitmap *icon = 0;
- CFbsBitmap *iconMask = 0;
- const TInt fallbackGraphicsMaskID =
- fallbackGraphicID == KErrNotFound?KErrNotFound:fallbackGraphicID+1; //masks are auto-generated as next in mif files
-// QS60WindowSurface::unlockBitmapHeap();
- AknsUtils::CreateIconLC(skinInstance, skinId, icon, iconMask, fileNamePtr, fallbackGraphicID , fallbackGraphicsMaskID);
- User::LeaveIfError(AknIconUtils::SetSize(icon, targetSize, EAspectRatioNotPreserved));
- User::LeaveIfError(AknIconUtils::SetSize(iconMask, targetSize, EAspectRatioNotPreserved));
- result = fromFbsBitmap(icon, iconMask, flags, qt_TDisplayMode2Format(icon->DisplayMode()));
- CleanupStack::PopAndDestroy(3); // iconMask, icon, iconFile
-// QS60WindowSurface::lockBitmapHeap();
- break;
- }
- case EDrawBackground:
- {
-// QS60WindowSurface::unlockBitmapHeap();
- CFbsBitmap *background = new (ELeave) CFbsBitmap(); //offscreen
- CleanupStack::PushL(background);
- User::LeaveIfError(background->Create(targetSize, EColor16MA));
-
- CFbsBitmapDevice* dev = CFbsBitmapDevice::NewL(background);
- CleanupStack::PushL(dev);
- CFbsBitGc* gc = NULL;
- User::LeaveIfError(dev->CreateContext(gc));
- CleanupStack::PushL(gc);
-
- CAknsBasicBackgroundControlContext* bgContext = CAknsBasicBackgroundControlContext::NewL(
- skinId,
- targetSize,
- EFalse);
- CleanupStack::PushL(bgContext);
-
- const TBool drawn = AknsDrawUtils::DrawBackground(
- skinInstance,
- bgContext,
- NULL,
- *gc,
- TPoint(),
- targetSize,
- KAknsDrawParamDefault | KAknsDrawParamRGBOnly);
-
- if (drawn)
- result = fromFbsBitmap(background, NULL, flags, QImage::Format_RGB32);
-
- CleanupStack::PopAndDestroy(4, background); //background, dev, gc, bgContext
-// QS60WindowSurface::lockBitmapHeap();
- break;
- }
+ case EDrawIcon: {
+ TInt fallbackGraphicID = -1;
+ HBufC* iconFile = HBufC::NewLC( KMaxFileName );
+ TPtr fileNamePtr = iconFile->Des();
+ fallbackInfo(part, fileNamePtr, fallbackGraphicID);
+ // todo: could we instead use AknIconUtils::AvkonIconFileName(); to avoid allocating each time?
+
+ CFbsBitmap *icon = 0;
+ CFbsBitmap *iconMask = 0;
+ const TInt fallbackGraphicsMaskID =
+ fallbackGraphicID == KErrNotFound?KErrNotFound:fallbackGraphicID+1; //masks are auto-generated as next in mif files
+ // QS60WindowSurface::unlockBitmapHeap();
+ AknsUtils::CreateIconLC(skinInstance, skinId, icon, iconMask, fileNamePtr, fallbackGraphicID , fallbackGraphicsMaskID);
+ User::LeaveIfError(AknIconUtils::SetSize(icon, targetSize, EAspectRatioNotPreserved));
+ User::LeaveIfError(AknIconUtils::SetSize(iconMask, targetSize, EAspectRatioNotPreserved));
+ result = fromFbsBitmap(icon, iconMask, flags, qt_TDisplayMode2Format(icon->DisplayMode()));
+ CleanupStack::PopAndDestroy(3); // iconMask, icon, iconFile
+ // QS60WindowSurface::lockBitmapHeap();
+ break;
+ }
+ case EDrawBackground: {
+ // QS60WindowSurface::unlockBitmapHeap();
+ CFbsBitmap *background = new (ELeave) CFbsBitmap(); //offscreen
+ CleanupStack::PushL(background);
+ User::LeaveIfError(background->Create(targetSize, EColor16MA));
+
+ CFbsBitmapDevice* dev = CFbsBitmapDevice::NewL(background);
+ CleanupStack::PushL(dev);
+ CFbsBitGc* gc = NULL;
+ User::LeaveIfError(dev->CreateContext(gc));
+ CleanupStack::PushL(gc);
+
+ CAknsBasicBackgroundControlContext* bgContext = CAknsBasicBackgroundControlContext::NewL(
+ skinId,
+ targetSize,
+ EFalse);
+ CleanupStack::PushL(bgContext);
+
+ const TBool drawn = AknsDrawUtils::DrawBackground(
+ skinInstance,
+ bgContext,
+ NULL,
+ *gc,
+ TPoint(),
+ targetSize,
+ KAknsDrawParamDefault | KAknsDrawParamRGBOnly);
+
+ if (drawn)
+ result = fromFbsBitmap(background, NULL, flags, QImage::Format_RGB32);
+
+ CleanupStack::PopAndDestroy(4, background); //background, dev, gc, bgContext
+ // QS60WindowSurface::lockBitmapHeap();
+ break;
+ }
}
- return result; // TODO: Let fromFbsBitmap return a QPixmap
+ return result;
}
QPixmap QS60StyleModeSpecifics::createSkinnedGraphicsL(QS60StylePrivate::SkinFrameElements frameElement,
@@ -695,7 +693,6 @@ QPixmap QS60StyleModeSpecifics::createSkinnedGraphicsL(QS60StylePrivate::SkinFra
rotatedBy90or270 ? TSize(size.height(), size.width()) : qt_QSize2TSize(size);
MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-
QPixmap result;
// QS60WindowSurface::unlockBitmapHeap();
@@ -739,7 +736,7 @@ QPixmap QS60StyleModeSpecifics::createSkinnedGraphicsL(QS60StylePrivate::SkinFra
skinInstance->GetCachedItemData(frameSkinID,EAknsITMaskedBitmap));
if (skinMaskedBmp && skinMaskedBmp->Mask())
maskDepth = skinMaskedBmp->Mask()->DisplayMode();
- }
+ }
if (maskDepth != ENone) {
CFbsBitmap *frameMask = new (ELeave) CFbsBitmap(); //offscreen
CleanupStack::PushL(frameMask);
@@ -767,11 +764,10 @@ QPixmap QS60StyleModeSpecifics::createSkinnedGraphicsL(QS60StylePrivate::SkinFra
result = fromFbsBitmap(frame, frameMask, flags, QImage::Format_ARGB32);
}
CleanupStack::PopAndDestroy(3, frameMask);
- }
}
+ }
CleanupStack::PopAndDestroy(3, frame); //frame, bitmapDev, bitmapGc
-
- return result; // TODO: Let fromFbsBitmap return a QPixmap
+ return result;
}
void QS60StyleModeSpecifics::frameIdAndCenterId(QS60StylePrivate::SkinFrameElements frameElement, TAknsItemID &frameId, TAknsItemID &centerId)
@@ -1073,9 +1069,10 @@ QPixmap QS60StyleModeSpecifics::generateMissingThemeGraphic(QS60StyleEnums::Skin
return QPixmap();
} else {
QPixmap result = skinnedGraphics(updatedPart, size, flags);
- // TODO: fix this
QStyleOption opt;
- //opt.palette = q->standardPalette();
+ QPalette *themePalette = QS60StylePrivate::themePalette();
+ if (themePalette)
+ opt.palette = *themePalette;
// For now, always generate new icon based on "selected". In the future possibly, expand
// this to consist other possibilities as well.
@@ -1094,9 +1091,10 @@ QPixmap QS60StylePrivate::part(QS60StyleEnums::SkinParts part,
QS60WindowSurface::lockBitmapHeap();
if (flags & SF_StateDisabled && !QS60StyleModeSpecifics::disabledPartGraphic(part)) {
- // TODO: fix this
QStyleOption opt;
-// opt.palette = q->standardPalette();
+ QPalette *themePalette = QS60StylePrivate::themePalette();
+ if (themePalette)
+ opt.palette = *themePalette;
result = QApplication::style()->generatedIconPixmap(QIcon::Disabled, result, &opt);
}
@@ -1113,9 +1111,10 @@ QPixmap QS60StylePrivate::frame(SkinFrameElements frame, const QSize &size, Skin
QS60WindowSurface::lockBitmapHeap();
if (flags & SF_StateDisabled && !QS60StyleModeSpecifics::disabledFrameGraphic(frame)) {
- // TODO: fix this
QStyleOption opt;
-// opt.palette = q->standardPalette();
+ QPalette *themePalette = QS60StylePrivate::themePalette();
+ if (themePalette)
+ opt.palette = *themePalette;
result = QApplication::style()->generatedIconPixmap(QIcon::Disabled, result, &opt);
}
return result;
diff --git a/src/gui/styles/qs60style_simulated.cpp b/src/gui/styles/qs60style_simulated.cpp
index 7131640..929f987 100644
--- a/src/gui/styles/qs60style_simulated.cpp
+++ b/src/gui/styles/qs60style_simulated.cpp
@@ -93,9 +93,10 @@ QPixmap QS60StylePrivate::part(QS60StyleEnums::SkinParts part, const QSize &size
QPixmap result = QPixmap::fromImage(partImage);
if (flags & SF_StateDisabled) {
- // TODO: fix this
QStyleOption opt;
-// opt.palette = q->standardPalette();
+ QPalette *themePalette = QS60StylePrivate::themePalette();
+ if (themePalette)
+ opt.palette = *themePalette;
result = QApplication::style()->generatedIconPixmap(QIcon::Disabled, result, &opt);
}
@@ -268,9 +269,7 @@ void QS60Style::setS60Theme(const QHash<QString, QPicture> &parts,
QS60StyleModeSpecifics::m_colors = colors;
d->clearCaches(QS60StylePrivate::CC_ThemeChange);
d->setBackgroundTexture(qApp);
-
- foreach (QWidget *widget, QApplication::allWidgets())
- d->setThemePalette(widget);
+ d->setThemePalette(qApp);
}
QPoint qt_s60_fill_background_offset(const QWidget *targetWidget)
diff --git a/src/gui/styles/qstylesheetstyle.cpp b/src/gui/styles/qstylesheetstyle.cpp
index 714b8c5..bd80bb6 100644
--- a/src/gui/styles/qstylesheetstyle.cpp
+++ b/src/gui/styles/qstylesheetstyle.cpp
@@ -5252,9 +5252,12 @@ int QStyleSheetStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWi
#ifndef QT_NO_COMBOBOX
if (qobject_cast<const QComboBox *>(w)) {
QAbstractItemView *view = qFindChild<QAbstractItemView *>(w);
- QRenderRule subRule = renderRule(view, PseudoElement_None);
- if (subRule.hasBox() || !subRule.hasNativeBorder())
- return QFrame::NoFrame;
+ if (view) {
+ view->ensurePolished();
+ QRenderRule subRule = renderRule(view, PseudoElement_None);
+ if (subRule.hasBox() || !subRule.hasNativeBorder())
+ return QFrame::NoFrame;
+ }
}
#endif // QT_NO_COMBOBOX
break;
diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp
index bf3a176..7341665 100644
--- a/src/gui/text/qfontengine_win.cpp
+++ b/src/gui/text/qfontengine_win.cpp
@@ -1406,8 +1406,8 @@ QNativeImage *QFontEngineWin::drawGDIGlyph(HFONT font, glyph_t glyph, int margin
#endif
#endif
- QNativeImage *ni = new QNativeImage(iw + 2 * margin + 2,
- ih + 2 * margin + 2,
+ QNativeImage *ni = new QNativeImage(iw + 2 * margin + 4,
+ ih + 2 * margin + 4,
QNativeImage::systemFormat(), true);
ni->image.fill(0xffffffff);
@@ -1449,7 +1449,7 @@ QImage QFontEngineWin::alphaMapForGlyph(glyph_t glyph, const QTransform &xform)
font = CreateFontIndirectW(&lf);
}
- QNativeImage *mask = drawGDIGlyph(font, glyph, 2, xform);
+ QNativeImage *mask = drawGDIGlyph(font, glyph, 0, xform);
if (mask == 0)
return QImage();
diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp
index 88d0610..87da628 100644
--- a/src/gui/text/qfontmetrics.cpp
+++ b/src/gui/text/qfontmetrics.cpp
@@ -670,8 +670,8 @@ QRect QFontMetrics::boundingRect(const QString &text) const
Returns the rectangle that is covered by ink if character \a ch
were to be drawn at the origin of the coordinate system.
- Note that the bounding rectangle may extend to the left of (0, 0),
- e.g. for italicized fonts, and that the text output may cover \e
+ Note that the bounding rectangle may extend to the left of (0, 0)
+ (e.g., for italicized fonts), and that the text output may cover \e
all pixels in the bounding rectangle. For a space character the rectangle
will usually be empty.
@@ -724,7 +724,7 @@ QRect QFontMetrics::boundingRect(QChar ch) const
\o Qt::AlignCenter (== \c{Qt::AlignHCenter | Qt::AlignVCenter})
\o Qt::TextSingleLine ignores newline characters in the text.
\o Qt::TextExpandTabs expands tabs (see below)
- \o Qt::TextShowMnemonic interprets "&amp;x" as \underline{x}, i.e. underlined.
+ \o Qt::TextShowMnemonic interprets "&x" as \underline{x}; i.e., underlined.
\o Qt::TextWordWrap breaks the text to fit the rectangle.
\endlist
@@ -781,7 +781,7 @@ QRect QFontMetrics::boundingRect(const QRect &rect, int flags, const QString &te
\list
\o Qt::TextSingleLine ignores newline characters.
\o Qt::TextExpandTabs expands tabs (see below)
- \o Qt::TextShowMnemonic interprets "&amp;x" as \underline{x}, i.e. underlined.
+ \o Qt::TextShowMnemonic interprets "&x" as \underline{x}; i.e., underlined.
\o Qt::TextWordBreak breaks the text to fit the rectangle.
\endlist
@@ -1500,7 +1500,7 @@ QRectF QFontMetricsF::boundingRect(QChar ch) const
\o Qt::AlignCenter (== \c{Qt::AlignHCenter | Qt::AlignVCenter})
\o Qt::TextSingleLine ignores newline characters in the text.
\o Qt::TextExpandTabs expands tabs (see below)
- \o Qt::TextShowMnemonic interprets "&amp;x" as \underline{x}, i.e. underlined.
+ \o Qt::TextShowMnemonic interprets "&x" as \underline{x}; i.e., underlined.
\o Qt::TextWordWrap breaks the text to fit the rectangle.
\endlist
@@ -1559,7 +1559,7 @@ QRectF QFontMetricsF::boundingRect(const QRectF &rect, int flags, const QString&
\list
\o Qt::TextSingleLine ignores newline characters.
\o Qt::TextExpandTabs expands tabs (see below)
- \o Qt::TextShowMnemonic interprets "&amp;x" as \underline{x}, i.e. underlined.
+ \o Qt::TextShowMnemonic interprets "&x" as \underline{x}; i.e., underlined.
\o Qt::TextWordBreak breaks the text to fit the rectangle.
\endlist
diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp
index 69221ba..785d772 100644
--- a/src/gui/widgets/qtabbar.cpp
+++ b/src/gui/widgets/qtabbar.cpp
@@ -1536,9 +1536,10 @@ void QTabBar::paintEvent(QPaintEvent *)
}
if (!d->dragInProgress)
p.drawControl(QStyle::CE_TabBarTab, tab);
- else
- d->movingTab->setGeometry(tab.rect);
-
+ else {
+ int taboverlap = style()->pixelMetric(QStyle::PM_TabBarTabOverlap, 0, this);
+ d->movingTab->setGeometry(tab.rect.adjusted(-taboverlap, 0, taboverlap, 0));
+ }
}
// Only draw the tear indicator if necessary. Most of the time we don't need too.
@@ -1805,7 +1806,9 @@ void QTabBarPrivate::setupMovableTab()
if (!movingTab)
movingTab = new QWidget(q);
+ int taboverlap = q->style()->pixelMetric(QStyle::PM_TabBarTabOverlap, 0 ,q);
QRect grabRect = q->tabRect(pressedIndex);
+ grabRect.adjust(-taboverlap, 0, taboverlap, 0);
QPixmap grabImage(grabRect.size());
grabImage.fill(Qt::transparent);
@@ -1813,7 +1816,7 @@ void QTabBarPrivate::setupMovableTab()
QStyleOptionTabV3 tab;
q->initStyleOption(&tab, pressedIndex);
- tab.rect.moveTopLeft(QPoint(0, 0));
+ tab.rect.moveTopLeft(QPoint(taboverlap, 0));
p.drawControl(QStyle::CE_TabBarTab, tab);
p.end();
diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp
index 79c3d1a..6f715e5 100644
--- a/src/network/access/qnetworkreplyimpl.cpp
+++ b/src/network/access/qnetworkreplyimpl.cpp
@@ -382,7 +382,8 @@ void QNetworkReplyImplPrivate::feed(const QByteArray &data)
void QNetworkReplyImplPrivate::feed(QIODevice *data)
{
Q_Q(QNetworkReplyImpl);
- Q_ASSERT(q->isOpen());
+ if (!q->isOpen())
+ return;
// read until EOF from data
if (copyDevice) {
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 768cafb..b6f91e4 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -99,7 +99,7 @@
the client has read the data). Note that Qt does not limit the
write buffer size. You can monitor its size by listening to this
signal.
-
+
The readyRead() signal is emitted every time a new chunk of data
has arrived. bytesAvailable() then returns the number of bytes
that are available for reading. Typically, you would connect the
@@ -199,9 +199,10 @@
parameter describes the type of error that occurred.
QAbstractSocket::SocketError is not a registered metatype, so for queued
- connections, you will have to register it with Q_REGISTER_METATYPE.
+ connections, you will have to register it with Q_DECLARE_METATYPE() and
+ qRegisterMetaType().
- \sa error(), errorString()
+ \sa error(), errorString(), {Creating Custom Qt Types}
*/
/*!
@@ -211,9 +212,10 @@
The \a socketState parameter is the new state.
QAbstractSocket::SocketState is not a registered metatype, so for queued
- connections, you will have to register it with Q_REGISTER_METATYPE.
+ connections, you will have to register it with Q_REGISTER_METATYPE() and
+ qRegisterMetaType().
- \sa state()
+ \sa state(), {Creating Custom Qt Types}
*/
/*!
@@ -1865,9 +1867,9 @@ bool QAbstractSocket::waitForDisconnected(int msecs)
}
/*!
- Aborts the current connection and resets the socket. Unlike
- disconnectFromHost(), this function immediately closes the socket, discarding
- any pending data in the write buffer.
+ Aborts the current connection and resets the socket. Unlike disconnectFromHost(),
+ this function immediately closes the socket, discarding any pending data in the
+ write buffer.
\sa disconnectFromHost(), close()
*/
@@ -2164,7 +2166,12 @@ void QAbstractSocket::setPeerName(const QString &name)
}
/*!
- Disconnects the socket's connection with the host.
+ Closes the I/O device for the socket, disconnects the socket's connection with the
+ host, closes the socket, and resets the name, address, port number and underlying
+ socket descriptor.
+
+ See QIODevice::close() for a description of the actions that occur when an I/O
+ device is closed.
\sa abort()
*/
@@ -2457,7 +2464,8 @@ QNetworkProxy QAbstractSocket::proxy() const
#endif // QT_NO_NETWORKPROXY
#ifdef QT3_SUPPORT
-/*! \enum QAbstractSocket::Error
+/*!
+ \enum QAbstractSocket::Error
\compat
Use QAbstractSocket::SocketError instead.
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index a2ba644..7b554dc 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -267,7 +267,7 @@ QByteArray QSslCertificate::serialNumber() const
/*!
Returns a cryptographic digest of this certificate. By default,
- and MD5 digest will be generated, but you can also specify a
+ an MD5 digest will be generated, but you can also specify a
custom \a algorithm.
*/
QByteArray QSslCertificate::digest(QCryptographicHash::Algorithm algorithm) const
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
index 6f8cf42..cb101af 100644
--- a/src/network/ssl/qsslsocket_openssl.cpp
+++ b/src/network/ssl/qsslsocket_openssl.cpp
@@ -482,30 +482,7 @@ void QSslSocketPrivate::resetDefaultCiphers()
QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
{
-#ifdef QQ_OS_UNIX
- // Check known locations for the system's default bundle. ### On Windows,
- // we should use CAPI to find the bundle, and not rely on default unix
- // locations.
- const char *standardLocations[] = {"/etc/ssl/certs/",
-#if 0
- // KDE uses KConfig for its SSL store,
- // but it also stores the bundle at
- // this location
- "$HOME/.kde/share/apps/kssl/ca-bundle.crt",
-#endif
- 0};
- const char **it = standardLocations;
- QStringList nameFilter;
- nameFilter << QLatin1String("*.pem") << QLatin1String("*.crt");
- while (*it) {
- if (QDirIterator(QLatin1String(*it), nameFilter).hasNext())
- return certificatesFromPath(QLatin1String(*it));
- ++it;
- }
-#endif
-
- // Qt provides a default bundle when we cannot detect the system's default
- // bundle.
+ // Qt provides a default bundle of certificates
QFile caBundle(QLatin1String(":/trolltech/network/ssl/qt-ca-bundle.crt"));
if (caBundle.open(QIODevice::ReadOnly | QIODevice::Text))
return QSslCertificate::fromDevice(&caBundle);
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index a74f044..beb4da6 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -926,6 +926,9 @@ void QGL2PaintEngineEx::drawCachedGlyphs(const QPointF &p, const QTextItemInt &t
const QImage &image = cache->image();
int margin = cache->glyphMargin();
+ if (image.isNull())
+ return;
+
glActiveTexture(QT_BRUSH_TEXTURE_UNIT);
d->ctx->d_func()->bindTexture(image, GL_TEXTURE_2D, GL_RGBA, true);
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h
index 13f0a8f..180acaf 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h
@@ -61,8 +61,6 @@ public:
void lockDirectFB(uint flags);
void unlockDirectFB();
- inline bool forceRasterPrimitives() const { return forceRaster; }
-
// Reimplemented from QCustomRasterPaintDevice:
void* memory() const;
QImage::Format format() const;
@@ -77,7 +75,6 @@ protected:
dfbSurface(0),
lockedImage(0),
screen(scr),
- forceRaster(false),
lock(0),
mem(0)
{}
@@ -95,7 +92,6 @@ protected:
QImage *lockedImage;
QDirectFBScreen *screen;
int bpl;
- bool forceRaster;
uint lock;
uchar *mem;
private:
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
index a68bc8f..2fb533a 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
@@ -81,7 +81,7 @@ template <> inline const bool* ptr<bool>(const bool &) { return 0; }
template <typename device, typename T1, typename T2, typename T3>
static void rasterFallbackWarn(const char *msg, const char *func, const device *dev,
int scale, bool matrixRotShear, bool simplePen,
- bool dfbHandledClip, bool forceRasterPrimitives,
+ bool dfbHandledClip,
const char *nameOne, const T1 &one,
const char *nameTwo, const T2 &two,
const char *nameThree, const T3 &three)
@@ -98,8 +98,7 @@ static void rasterFallbackWarn(const char *msg, const char *func, const device *
dbg << "scale" << scale
<< "matrixRotShear" << matrixRotShear
<< "simplePen" << simplePen
- << "dfbHandledClip" << dfbHandledClip
- << "forceRasterPrimitives" << forceRasterPrimitives;
+ << "dfbHandledClip" << dfbHandledClip;
const T1 *t1 = ptr(one);
const T2 *t2 = ptr(two);
@@ -125,7 +124,6 @@ static void rasterFallbackWarn(const char *msg, const char *func, const device *
__FUNCTION__, state()->painter->device(), \
d_func()->scale, d_func()->matrixRotShear, \
d_func()->simplePen, d_func()->dfbCanHandleClip(), \
- d_func()->forceRasterPrimitives, \
#one, one, #two, two, #three, three); \
if (op & (QT_DIRECTFB_DISABLE_RASTERFALLBACKS)) \
return;
@@ -140,7 +138,6 @@ static void rasterFallbackWarn(const char *msg, const char *func, const device *
__FUNCTION__, state()->painter->device(), \
d_func()->scale, d_func()->matrixRotShear, \
d_func()->simplePen, d_func()->dfbCanHandleClip(), \
- d_func()->forceRasterPrimitives, \
#one, one, #two, two, #three, three);
#else
#define RASTERFALLBACK(op, one, two, three)
@@ -218,8 +215,8 @@ public:
void setTransform(const QTransform &m);
void setPen(const QPen &pen);
- void setCompositionMode(QPainter::CompositionMode mode);
- void setOpacity(quint8 value);
+ inline void setCompositionMode(QPainter::CompositionMode mode);
+ inline void setOpacity(quint8 value);
void setRenderHints(QPainter::RenderHints hints);
inline void setDFBColor(const QColor &color);
@@ -263,7 +260,6 @@ private:
QPen pen;
bool antialiased;
- bool forceRasterPrimitives;
bool simplePen;
@@ -280,14 +276,12 @@ private:
quint8 opacity;
- quint32 drawFlagsFromCompositionMode, blitFlagsFromCompositionMode;
- DFBSurfacePorterDuffRule porterDuffRule;
-
bool dirtyClip;
bool dfbHandledClip;
bool ignoreSystemClip;
QDirectFBPaintDevice *dfbDevice;
void *lockedMemory;
+ bool unsupportedCompositionMode;
QDirectFBPaintEngine *q;
friend class QDirectFBPaintEngine;
@@ -407,9 +401,8 @@ void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount)
Q_D(QDirectFBPaintEngine);
d->updateClip();
const QBrush &brush = state()->brush;
- if (!d->dfbCanHandleClip() || d->matrixRotShear
- || !d->simplePen || d->forceRasterPrimitives
- || !d->isSimpleBrush(brush)) {
+ if (d->unsupportedCompositionMode || !d->dfbCanHandleClip() || d->matrixRotShear
+ || !d->simplePen || !d->isSimpleBrush(brush)) {
RASTERFALLBACK(DRAW_RECTS, rectCount, VOID_ARG(), VOID_ARG());
d->lock();
QRasterPaintEngine::drawRects(rects, rectCount);
@@ -433,9 +426,8 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount)
Q_D(QDirectFBPaintEngine);
d->updateClip();
const QBrush &brush = state()->brush;
- if (!d->dfbCanHandleClip() || d->matrixRotShear
- || !d->simplePen || d->forceRasterPrimitives
- || !d->isSimpleBrush(brush)) {
+ if (d->unsupportedCompositionMode || !d->dfbCanHandleClip() || d->matrixRotShear
+ || !d->simplePen || !d->isSimpleBrush(brush)) {
RASTERFALLBACK(DRAW_RECTS, rectCount, VOID_ARG(), VOID_ARG());
d->lock();
QRasterPaintEngine::drawRects(rects, rectCount);
@@ -458,7 +450,7 @@ void QDirectFBPaintEngine::drawLines(const QLine *lines, int lineCount)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (!d->simplePen || !d->dfbCanHandleClip() || d->forceRasterPrimitives) {
+ if (d->unsupportedCompositionMode || !d->simplePen || !d->dfbCanHandleClip()) {
RASTERFALLBACK(DRAW_LINES, lineCount, VOID_ARG(), VOID_ARG());
d->lock();
QRasterPaintEngine::drawLines(lines, lineCount);
@@ -476,7 +468,7 @@ void QDirectFBPaintEngine::drawLines(const QLineF *lines, int lineCount)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (!d->simplePen || !d->dfbCanHandleClip() || d->forceRasterPrimitives) {
+ if (d->unsupportedCompositionMode || !d->simplePen || !d->dfbCanHandleClip()) {
RASTERFALLBACK(DRAW_LINES, lineCount, VOID_ARG(), VOID_ARG());
d->lock();
QRasterPaintEngine::drawLines(lines, lineCount);
@@ -516,7 +508,8 @@ void QDirectFBPaintEngine::drawImage(const QRectF &r, const QImage &image,
d->updateClip();
#if !defined QT_NO_DIRECTFB_PREALLOCATED || defined QT_DIRECTFB_IMAGECACHE
- if (d->matrixRotShear
+ if (d->unsupportedCompositionMode
+ || d->matrixRotShear
|| d->scale == QDirectFBPaintEnginePrivate::NegativeScale
|| !d->dfbCanHandleClip(r)
#ifndef QT_DIRECTFB_IMAGECACHE
@@ -560,7 +553,7 @@ void QDirectFBPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pixmap,
RASTERFALLBACK(DRAW_PIXMAP, r, pixmap.size(), sr);
d->lock();
QRasterPaintEngine::drawPixmap(r, pixmap, sr);
- } else if (!d->dfbCanHandleClip(r) || d->matrixRotShear
+ } else if (d->unsupportedCompositionMode || !d->dfbCanHandleClip(r) || d->matrixRotShear
|| d->scale == QDirectFBPaintEnginePrivate::NegativeScale) {
RASTERFALLBACK(DRAW_PIXMAP, r, pixmap.size(), sr);
const QImage *img = static_cast<QDirectFBPixmapData*>(pixmap.pixmapData())->buffer(DSLF_READ);
@@ -592,7 +585,7 @@ void QDirectFBPaintEngine::drawTiledPixmap(const QRectF &r,
RASTERFALLBACK(DRAW_TILED_PIXMAP, r, pixmap.size(), sp);
d->lock();
QRasterPaintEngine::drawTiledPixmap(r, pixmap, sp);
- } else if (!d->dfbCanHandleClip(r) || d->matrixRotShear || !sp.isNull()
+ } else if (d->unsupportedCompositionMode || !d->dfbCanHandleClip(r) || d->matrixRotShear || !sp.isNull()
|| d->scale == QDirectFBPaintEnginePrivate::NegativeScale) {
RASTERFALLBACK(DRAW_TILED_PIXMAP, r, pixmap.size(), sp);
const QImage *img = static_cast<QDirectFBPixmapData*>(pixmap.pixmapData())->buffer(DSLF_READ);
@@ -688,11 +681,9 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (d->dfbCanHandleClip(rect) && !d->matrixRotShear) {
+ if (!d->unsupportedCompositionMode && d->dfbCanHandleClip(rect) && !d->matrixRotShear) {
switch (brush.style()) {
case Qt::SolidPattern: {
- if (d->forceRasterPrimitives)
- break;
d->unlock();
d->setDFBColor(brush.color());
const QRect r = d->transform.mapRect(rect).toRect();
@@ -720,7 +711,7 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QColor &color)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (!d->dfbCanHandleClip() || d->matrixRotShear || d->forceRasterPrimitives) {
+ if (d->unsupportedCompositionMode || !d->dfbCanHandleClip() || d->matrixRotShear) {
RASTERFALLBACK(FILL_RECT, rect, color, VOID_ARG());
d->lock();
QRasterPaintEngine::fillRect(rect, color);
@@ -737,38 +728,32 @@ void QDirectFBPaintEngine::drawColorSpans(const QSpan *spans, int count,
uint color)
{
Q_D(QDirectFBPaintEngine);
- if (d->forceRasterPrimitives) {
- RASTERFALLBACK(DRAW_COLORSPANS, count, color, VOID_ARG());
- d->lock();
- QRasterPaintEngine::drawColorSpans(spans, count, color);
- } else {
- color = INV_PREMUL(color);
-
- QVarLengthArray<DFBRegion> lines(count);
- int j = 0;
- for (int i = 0; i < count; ++i) {
- if (spans[i].coverage == 255) {
- lines[j].x1 = spans[i].x;
- lines[j].y1 = spans[i].y;
- lines[j].x2 = spans[i].x + spans[i].len - 1;
- lines[j].y2 = spans[i].y;
- ++j;
- } else {
- DFBSpan span = { spans[i].x, spans[i].len };
- uint c = BYTE_MUL(color, spans[i].coverage);
- // ### how does this play with setDFBColor
- d->surface->SetColor(d->surface,
- qRed(c), qGreen(c), qBlue(c), qAlpha(c));
- d->surface->FillSpans(d->surface, spans[i].y, &span, 1);
- }
- }
- if (j > 0) {
+ color = INV_PREMUL(color);
+
+ QVarLengthArray<DFBRegion> lines(count);
+ int j = 0;
+ for (int i = 0; i < count; ++i) {
+ if (spans[i].coverage == 255) {
+ lines[j].x1 = spans[i].x;
+ lines[j].y1 = spans[i].y;
+ lines[j].x2 = spans[i].x + spans[i].len - 1;
+ lines[j].y2 = spans[i].y;
+ ++j;
+ } else {
+ DFBSpan span = { spans[i].x, spans[i].len };
+ uint c = BYTE_MUL(color, spans[i].coverage);
+ // ### how does this play with setDFBColor
d->surface->SetColor(d->surface,
- qRed(color), qGreen(color), qBlue(color),
- qAlpha(color));
- d->surface->DrawLines(d->surface, lines.data(), j);
+ qRed(c), qGreen(c), qBlue(c), qAlpha(c));
+ d->surface->FillSpans(d->surface, spans[i].y, &span, 1);
}
}
+ if (j > 0) {
+ d->surface->SetColor(d->surface,
+ qRed(color), qGreen(color), qBlue(color),
+ qAlpha(color));
+ d->surface->DrawLines(d->surface, lines.data(), j);
+ }
}
void QDirectFBPaintEngine::drawBufferSpan(const uint *buffer, int bufsize,
@@ -803,11 +788,11 @@ void QDirectFBPaintEngine::initImageCache(int size)
QDirectFBPaintEnginePrivate::QDirectFBPaintEnginePrivate(QDirectFBPaintEngine *p)
- : surface(0), antialiased(false), forceRasterPrimitives(false), simplePen(false),
+ : surface(0), antialiased(false), simplePen(false),
matrixRotShear(false), scale(NoScale), lastLockedHeight(-1),
- fbWidth(-1), fbHeight(-1), opacity(255), drawFlagsFromCompositionMode(0),
- blitFlagsFromCompositionMode(0), porterDuffRule(DSPD_SRC_OVER), dirtyClip(true),
- dfbHandledClip(false), dfbDevice(0), lockedMemory(0), q(p)
+ fbWidth(-1), fbHeight(-1), opacity(255), dirtyClip(true),
+ dfbHandledClip(false), dfbDevice(0), lockedMemory(0),
+ unsupportedCompositionMode(false), q(p)
{
fb = QDirectFBScreen::instance()->dfb();
ignoreSystemClip = QDirectFBScreen::instance()->directFBFlags() & QDirectFBScreen::IgnoreSystemClip;
@@ -896,13 +881,12 @@ void QDirectFBPaintEnginePrivate::begin(QPaintDevice *device)
device->devType());
}
lockedMemory = 0;
- forceRasterPrimitives = dfbDevice->forceRasterPrimitives();
surface->GetSize(surface, &fbWidth, &fbHeight);
setTransform(QTransform());
antialiased = false;
- opacity = 255;
+ setOpacity(255);
setCompositionMode(q->state()->compositionMode());
dirtyClip = true;
setPen(q->state()->pen);
@@ -930,72 +914,13 @@ void QDirectFBPaintEnginePrivate::setPen(const QPen &p)
void QDirectFBPaintEnginePrivate::setCompositionMode(QPainter::CompositionMode mode)
{
- blitFlagsFromCompositionMode = DSBLIT_NOFX;
- drawFlagsFromCompositionMode = DSDRAW_NOFX;
-
- bool blend = true;
- switch (mode) {
- case QPainter::CompositionMode_SourceOver:
- porterDuffRule = DSPD_SRC_OVER;
- break;
- case QPainter::CompositionMode_DestinationOver:
- porterDuffRule = DSPD_DST_OVER;
- break;
- case QPainter::CompositionMode_Clear:
- porterDuffRule = DSPD_CLEAR;
- blend = false;
- break;
- case QPainter::CompositionMode_Source:
- porterDuffRule = DSPD_SRC;
- blend = false;
- break;
- case QPainter::CompositionMode_Destination:
- porterDuffRule = DSPD_NONE; // ### need to double check this
- blend = false;
- return;
- case QPainter::CompositionMode_SourceIn:
- porterDuffRule = DSPD_SRC_IN;
- break;
- case QPainter::CompositionMode_DestinationIn:
- porterDuffRule = DSPD_DST_IN;
- break;
- case QPainter::CompositionMode_SourceOut:
- porterDuffRule = DSPD_SRC_OUT;
- break;
- case QPainter::CompositionMode_DestinationOut:
- porterDuffRule = DSPD_DST_OUT;
- break;
- case QPainter::CompositionMode_Xor:
- porterDuffRule = DSPD_XOR;
- blitFlagsFromCompositionMode |= DSBLIT_XOR;
- drawFlagsFromCompositionMode |= DSDRAW_XOR;
- break;
-// case QPainter::CompositionMode_Plus: // ???
-// porterDuffRule = DSPD_ADD;
-// break;
- default:
- qWarning("QDirectFBPaintEnginePrivate::setCompositionMode(): "
- "mode %d not implemented", mode);
- return;
- }
- // intentially not comparing with current porterDuffRule. surface might have changed.
- if (blend) {
- blitFlagsFromCompositionMode |= DSBLIT_BLEND_ALPHACHANNEL;
- drawFlagsFromCompositionMode |= DSDRAW_BLEND;
- }
- if (opacity != 255) {
- setOpacity(opacity);
- }
+ unsupportedCompositionMode = (mode != QPainter::CompositionMode_SourceOver);
}
+
void QDirectFBPaintEnginePrivate::setOpacity(quint8 op)
{
opacity = op;
- if (opacity == 255) {
- blitFlagsFromCompositionMode &= ~DSBLIT_BLEND_COLORALPHA;
- } else {
- blitFlagsFromCompositionMode |= DSBLIT_BLEND_COLORALPHA;
- }
}
void QDirectFBPaintEnginePrivate::setRenderHints(QPainter::RenderHints hints)
@@ -1009,15 +934,9 @@ void QDirectFBPaintEnginePrivate::setRenderHints(QPainter::RenderHints hints)
void QDirectFBPaintEnginePrivate::prepareForBlit(bool alpha)
{
- quint32 blittingFlags = blitFlagsFromCompositionMode;
- if (alpha) {
- surface->SetPorterDuff(surface,
- (blittingFlags & DSBLIT_BLEND_COLORALPHA)
- ? DSPD_NONE
- : porterDuffRule);
- } else {
- blittingFlags &= ~DSBLIT_BLEND_ALPHACHANNEL;
- surface->SetPorterDuff(surface, DSPD_NONE);
+ quint32 blittingFlags = alpha ? DSBLIT_BLEND_ALPHACHANNEL : DSBLIT_NOFX;
+ if (opacity != 255) {
+ blittingFlags |= DSBLIT_BLEND_COLORALPHA;
}
surface->SetColor(surface, 0xff, 0xff, 0xff, opacity);
surface->SetBlittingFlags(surface, DFBSurfaceBlittingFlags(blittingFlags));
@@ -1028,15 +947,9 @@ void QDirectFBPaintEnginePrivate::setDFBColor(const QColor &color)
Q_ASSERT(surface);
const quint8 alpha = (opacity == 255 ?
color.alpha() : ALPHA_MUL(color.alpha(), opacity));
- surface->SetColor(surface,
- color.red(), color.green(), color.blue(), alpha);
- quint32 drawingFlags = drawFlagsFromCompositionMode;
- if (alpha == 255) {
- drawingFlags &= ~DSDRAW_BLEND;
- }
+ surface->SetColor(surface, color.red(), color.green(), color.blue(), alpha);
surface->SetPorterDuff(surface, DSPD_NONE);
- // PorterDuff messes up alpha values for primitives
- surface->SetDrawingFlags(surface, DFBSurfaceDrawingFlags(drawingFlags));
+ surface->SetDrawingFlags(surface, alpha == 255 ? DSDRAW_NOFX : DSDRAW_BLEND);
}
void QDirectFBPaintEnginePrivate::drawLines(const QLine *lines, int n)
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
index c9b676a..dba1b51 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
@@ -76,7 +76,6 @@ void QDirectFBPixmapData::resize(int width, int height)
format,
QDirectFBScreen::TrackSurface);
alpha = false;
- forceRaster = (format == QImage::Format_RGB32);
if (!dfbSurface) {
invalidate();
qWarning("QDirectFBPixmapData::resize(): Unable to allocate surface");
@@ -187,7 +186,6 @@ void QDirectFBPixmapData::fromImage(const QImage &i,
}
dfbSurface = screen->copyToDFBSurface(img, format,
QDirectFBScreen::TrackSurface);
- forceRaster = (format == QImage::Format_RGB32);
if (!dfbSurface) {
qWarning("QDirectFBPixmapData::fromImage()");
invalidate();
@@ -216,7 +214,6 @@ void QDirectFBPixmapData::copy(const QPixmapData *data, const QRect &rect)
invalidate();
return;
}
- forceRaster = (format == QImage::Format_RGB32);
if (hasAlpha) {
dfbSurface->Clear(dfbSurface, 0, 0, 0, 0);
@@ -268,7 +265,6 @@ void QDirectFBPixmapData::fill(const QColor &color)
screen->releaseDFBSurface(dfbSurface);
format = screen->alphaPixmapFormat();
dfbSurface = screen->createDFBSurface(size, screen->alphaPixmapFormat(), QDirectFBScreen::TrackSurface);
- forceRaster = false;
setSerialNumber(++global_ser_no);
if (!dfbSurface) {
qWarning("QDirectFBPixmapData::fill()");
@@ -277,24 +273,7 @@ void QDirectFBPixmapData::fill(const QColor &color)
}
}
- if (forceRaster) {
- // in DSPF_RGB32 all dfb drawing causes the Alpha byte to be
- // set to 0. This causes issues for the raster engine.
- uchar *mem = QDirectFBScreen::lockSurface(dfbSurface, DSLF_WRITE, &bpl);
- if (mem) {
- const int h = QPixmapData::height();
- const int w = QPixmapData::width() * 4; // 4 bytes per 32 bit pixel
- const int c = color.rgba();
- for (int i = 0; i < h; ++i) {
- memset(mem, c, w);
- mem += bpl;
- }
- dfbSurface->Unlock(dfbSurface);
- }
- } else {
- dfbSurface->Clear(dfbSurface, color.red(), color.green(), color.blue(),
- color.alpha());
- }
+ dfbSurface->Clear(dfbSurface, color.red(), color.green(), color.blue(), color.alpha());
}
QPixmap QDirectFBPixmapData::transformed(const QTransform &transform,
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
index 98e32ed..9e35a66 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
@@ -958,9 +958,6 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
return false;
}
- if (displayArgs.contains(QLatin1String("debug"), Qt::CaseInsensitive))
- printDirectFBInfo(d_ptr->dfb, d_ptr->dfbSurface);
-
// Work out what format we're going to use for surfaces with an alpha channel
d_ptr->alphaPixmapFormat = QDirectFBScreen::getImageFormat(d_ptr->dfbSurface);
setPixelFormat(d_ptr->alphaPixmapFormat);
@@ -971,12 +968,17 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
case QImage::Format_RGB444:
d_ptr->alphaPixmapFormat = QImage::Format_ARGB4444_Premultiplied;
break;
+ case QImage::Format_RGB32:
+ qWarning("QDirectFBScreen::connect(). Qt/DirectFB does not work with the RGB32 pixelformat. "
+ "We recommmend using ARGB instead");
+ return false;
+ case QImage::Format_Indexed8:
+ qWarning("QDirectFBScreen::connect(). Qt/DirectFB does not work with the LUT8 pixelformat.");
+ return false;
case QImage::NImageFormats:
case QImage::Format_Invalid:
case QImage::Format_Mono:
case QImage::Format_MonoLSB:
- case QImage::Format_Indexed8:
- case QImage::Format_RGB32:
case QImage::Format_RGB888:
case QImage::Format_RGB16:
case QImage::Format_RGB555:
@@ -1037,6 +1039,9 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
setGraphicsSystem(d_ptr);
+ if (displayArgs.contains(QLatin1String("debug"), Qt::CaseInsensitive))
+ printDirectFBInfo(d_ptr->dfb, d_ptr->dfbSurface);
+
return true;
}
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
index cd8796b..330eb88 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
@@ -127,7 +127,6 @@ void QDirectFBWindowSurface::createWindow()
dfbSurface->Release(dfbSurface);
dfbWindow->GetSurface(dfbWindow, &dfbSurface);
- forceRaster = (format == QImage::Format_RGB32);
#endif
}
#endif // QT_NO_DIRECTFB_WM
@@ -164,7 +163,6 @@ void QDirectFBWindowSurface::setGeometry(const QRect &rect, const QRegion &mask)
rect.width(), rect.height() };
result = primarySurface->GetSubSurface(primarySurface, &r, &dfbSurface);
}
- forceRaster = (dfbSurface && QDirectFBScreen::getImageFormat(dfbSurface) == QImage::Format_RGB32);
} else {
const bool isResize = rect.size() != geometry().size();
#ifdef QT_NO_DIRECTFB_WM
@@ -179,7 +177,6 @@ void QDirectFBWindowSurface::setGeometry(const QRect &rect, const QRegion &mask)
}
dfbSurface = screen->createDFBSurface(rect.size(), screen->pixelFormat(), QDirectFBScreen::DontTrackSurface);
- forceRaster = (dfbSurface && QDirectFBScreen::getImageFormat(dfbSurface) == QImage::Format_RGB32);
} else {
Q_ASSERT(dfbSurface);
}
@@ -242,31 +239,28 @@ void QDirectFBWindowSurface::setPermanentState(const QByteArray &state)
#endif
}
-bool QDirectFBWindowSurface::scroll(const QRegion &region, int dx, int dy)
+static inline void scrollSurface(IDirectFBSurface *surface, const QRect &r, int dx, int dy)
{
- if (!dfbSurface || !(flipFlags & DSFLIP_BLIT))
- return false;
-
- const QVector<QRect> rects = region.rects();
- const int n = rects.size();
-
- QVarLengthArray<DFBRectangle, 8> dfbRects(n);
- QVarLengthArray<DFBPoint, 8> dfbPoints(n);
+ surface->SetBlittingFlags(surface, DSBLIT_NOFX);
+ const DFBRectangle rect = { r.x(), r.y(), r.width(), r.height() };
+ surface->Blit(surface, surface, &rect, r.x() + dx, r.y() + dy);
+}
- for (int i = 0; i < n; ++i) {
- const QRect r = rects.at(i);
- dfbRects[i].x = r.x();
- dfbRects[i].y = r.y();
- dfbRects[i].w = r.width();
- dfbRects[i].h = r.height();
- dfbPoints[i].x = r.x() + dx;
- dfbPoints[i].y = r.y() + dy;
- }
+bool QDirectFBWindowSurface::scroll(const QRegion &region, int dx, int dy)
+{
+ if (!dfbSurface || !(flipFlags & DSFLIP_BLIT) || region.isEmpty())
+ return false;
dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
- dfbSurface->BatchBlit(dfbSurface, dfbSurface,
- dfbRects.data(), dfbPoints.data(), n);
- dfbSurface->ReleaseSource(dfbSurface);
+ if (region.numRects() == 1) {
+ ::scrollSurface(dfbSurface, region.boundingRect(), dx, dy);
+ } else {
+ const QVector<QRect> rects = region.rects();
+ const int n = rects.size();
+ for (int i=0; i<n; ++i) {
+ ::scrollSurface(dfbSurface, rects.at(i), dx, dy);
+ }
+ }
return true;
}
diff --git a/src/svg/qsvggenerator.cpp b/src/svg/qsvggenerator.cpp
index e822da5..fd4c875 100644
--- a/src/svg/qsvggenerator.cpp
+++ b/src/svg/qsvggenerator.cpp
@@ -261,7 +261,7 @@ public:
constantAlpha &= (stops.at(i).second.alpha() == alpha);
if (!constantAlpha) {
- const qreal spacing = 0.02;
+ const qreal spacing = qreal(0.02);
QGradientStops newStops;
QRgb fromColor = PREMUL(stops.at(0).second.rgba());
QRgb toColor;
diff --git a/tests/auto/qcombobox/tst_qcombobox.cpp b/tests/auto/qcombobox/tst_qcombobox.cpp
index 620cd07..13ffd67 100644
--- a/tests/auto/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/qcombobox/tst_qcombobox.cpp
@@ -2174,7 +2174,7 @@ void tst_QComboBox::noScrollbar_data()
QTest::newRow("everything and more") << QString::fromLatin1("QAbstractItemView { border: 1px 3px 5px 1px solid blue; "
" padding: 2px 5px 3px 1px; margin: 2px 5px 3px 1px; } "
" QAbstractItemView::item { border: 2px solid green; "
- " padding: 1px 1px 2px 2px margin: 1px; } " );
+ " padding: 1px 1px 2px 2px; margin: 1px; } " );
}
void tst_QComboBox::noScrollbar()
@@ -2182,10 +2182,11 @@ void tst_QComboBox::noScrollbar()
QStringList initialContent;
initialContent << "foo" << "bar" << "foobar" << "moo";
QFETCH(QString, stylesheet);
+ QString oldCss = qApp->styleSheet();
+ qApp->setStyleSheet(stylesheet);
{
QComboBox comboBox;
- comboBox.setStyleSheet(stylesheet);
comboBox.addItems(initialContent);
comboBox.show();
comboBox.resize(200, comboBox.height());
@@ -2199,7 +2200,6 @@ void tst_QComboBox::noScrollbar()
{
QTableWidget *table = new QTableWidget(2,2);
QComboBox comboBox;
- comboBox.setStyleSheet(stylesheet);
comboBox.setView(table);
comboBox.setModel(table->model());
comboBox.show();
@@ -2210,6 +2210,8 @@ void tst_QComboBox::noScrollbar()
QVERIFY(!comboBox.view()->horizontalScrollBar()->isVisible());
QVERIFY(!comboBox.view()->verticalScrollBar()->isVisible());
}
+
+ qApp->setStyleSheet(oldCss);
}
void tst_QComboBox::setItemDelegate()
diff --git a/tests/auto/qdatastream/tst_qdatastream.cpp b/tests/auto/qdatastream/tst_qdatastream.cpp
index 544c8c3..93f2b18 100644
--- a/tests/auto/qdatastream/tst_qdatastream.cpp
+++ b/tests/auto/qdatastream/tst_qdatastream.cpp
@@ -469,7 +469,7 @@ void tst_QDataStream::writeQString(QDataStream* s)
{
QString test(QStringData(dataIndex(QTest::currentDataTag())));
*s << test;
- *s << QString("Faen her spyr man");
+ *s << QString("Her er det noe tekst");
*s << test;
*s << QString();
*s << test;
@@ -487,7 +487,7 @@ void tst_QDataStream::readQString(QDataStream *s)
*s >> S;
QCOMPARE(S, test);
*s >> S;
- QCOMPARE(S, QString("Faen her spyr man"));
+ QCOMPARE(S, QString("Her er det noe tekst"));
*s >> S;
QCOMPARE(S, test);
*s >> S;
@@ -540,7 +540,7 @@ void tst_QDataStream::writeQRegExp(QDataStream* s)
{
QRegExp test(QRegExpData(dataIndex(QTest::currentDataTag())));
*s << test;
- *s << QString("Faen her spyr man");
+ *s << QString("Her er det noe tekst");
*s << test;
*s << QString("nonempty");
*s << test;
@@ -557,7 +557,7 @@ void tst_QDataStream::readQRegExp(QDataStream *s)
*s >> R;
QCOMPARE(R, test);
*s >> S;
- QCOMPARE(S, QString("Faen her spyr man"));
+ QCOMPARE(S, QString("Her er det noe tekst"));
*s >> R;
QCOMPARE(R, test);
*s >> S;
diff --git a/tests/auto/qdate/tst_qdate.cpp b/tests/auto/qdate/tst_qdate.cpp
index d4273d0..4d6c80c 100644
--- a/tests/auto/qdate/tst_qdate.cpp
+++ b/tests/auto/qdate/tst_qdate.cpp
@@ -82,6 +82,8 @@ private slots:
void operator_gt_eq();
void fromString_data();
void fromString();
+ void fromString_format_data();
+ void fromString_format();
void toString_format_data();
void toString_format();
void isLeapYear();
@@ -618,6 +620,30 @@ void tst_QDate::fromString()
QCOMPARE( QDate::fromString( str2, Qt::ISODate ), d1 );
}
+void tst_QDate::fromString_format_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("format");
+ QTest::addColumn<QDate>("date");
+
+ //year with yy is always 19xx for compatibility
+ QTest::newRow( "data0" ) << QString("21052006") << QString("ddMMyyyy") << QDate(2006,5,21);
+ QTest::newRow( "data1" ) << QString("210506") << QString("ddMMyy") << QDate(1906,5,21);
+ QTest::newRow( "data2" ) << QString("21/5/2006") << QString("d/M/yyyy") << QDate(2006,5,21);
+ QTest::newRow( "data3" ) << QString("21/5/06") << QString("d/M/yy") << QDate(1906,5,21);
+ QTest::newRow( "data4" ) << QString("20060521") << QString("yyyyMMdd") << QDate(2006,5,21);
+ QTest::newRow( "data5" ) << QString("060521") << QString("yyMMdd") << QDate(1906,5,21);
+}
+
+void tst_QDate::fromString_format()
+{
+ QFETCH( QString, string );
+ QFETCH( QString, format );
+ QFETCH( QDate, date );
+
+ QCOMPARE( QDate::fromString( string, format ), date );
+}
+
void tst_QDate::toString_format_data()
{
QTest::addColumn<QDate>("t");
diff --git a/tests/auto/qfiledialog/tst_qfiledialog.cpp b/tests/auto/qfiledialog/tst_qfiledialog.cpp
index f5bcfec..b4fd0c5 100644
--- a/tests/auto/qfiledialog/tst_qfiledialog.cpp
+++ b/tests/auto/qfiledialog/tst_qfiledialog.cpp
@@ -159,6 +159,7 @@ private slots:
void task218353_relativePaths();
void task251321_sideBarHiddenEntries();
void task251341_sideBarRemoveEntries();
+ void task254490_selectFileMultipleTimes();
private:
QByteArray userSettings;
@@ -1991,5 +1992,37 @@ void tst_QFiledialog::task251341_sideBarRemoveEntries()
current.rmdir("testDir");
}
+void tst_QFiledialog::task254490_selectFileMultipleTimes()
+{
+ QString tempPath = QDir::tempPath();
+ QTemporaryFile *t;
+ t = new QTemporaryFile;
+ t->open();
+ QNonNativeFileDialog fd(0, "TestFileDialog");
+
+ fd.setDirectory(tempPath);
+ fd.setViewMode(QFileDialog::List);
+ fd.setAcceptMode(QFileDialog::AcceptSave);
+ fd.setFileMode(QFileDialog::AnyFile);
+
+ //This should select the file in the QFileDialog
+ fd.selectFile(t->fileName());
+
+ //This should clear the selection and write it into the filename line edit
+ fd.selectFile("new_file.txt");
+
+ fd.show();
+ QTest::qWait(250);
+
+ QLineEdit *lineEdit = qFindChild<QLineEdit*>(&fd, "fileNameEdit");
+ QVERIFY(lineEdit);
+ QCOMPARE(lineEdit->text(),QLatin1String("new_file.txt"));
+ QListView *list = qFindChild<QListView*>(&fd, "listView");
+ QVERIFY(list);
+ QCOMPARE(list->selectionModel()->selectedRows(0).count(), 0);
+
+ t->deleteLater();
+}
+
QTEST_MAIN(tst_QFiledialog)
#include "tst_qfiledialog.moc"
diff --git a/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp
index 963fccc..ae60332 100644
--- a/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -43,6 +43,7 @@
#include <QtTest/QtTest>
#include "../../../src/gui/dialogs/qfilesystemmodel_p.h"
#include <QFileIconProvider>
+#include <QTreeView>
#include "../../shared/util.h"
#include <QTime>
#include <QStyle>
@@ -121,6 +122,7 @@ private slots:
void setData_data();
void setData();
+ void sort_data();
void sort();
void mkdir();
@@ -486,8 +488,12 @@ void tst_QFileSystemModel::rowsInserted()
} else {
QCOMPARE(model->index(model->rowCount(root) - 1, 0, root).data().toString(), QString("b"));
}
- if (spy0.count() > 0)
- if (count == 0) QCOMPARE(spy0.count(), 0); else QVERIFY(spy0.count() >= 1);
+ if (spy0.count() > 0) {
+ if (count == 0)
+ QCOMPARE(spy0.count(), 0);
+ else
+ QVERIFY(spy0.count() >= 1);
+ }
if (count == 0) QCOMPARE(spy1.count(), 0); else QVERIFY(spy1.count() >= 1);
QVERIFY(createFiles(tmp, QStringList(".hidden_file"), 5 + count));
@@ -761,6 +767,19 @@ void tst_QFileSystemModel::setData()
QTRY_COMPARE(model->rowCount(root), files.count());
}
+class MyFriendFileSystemModel : public QFileSystemModel
+{
+ friend class tst_QFileSystemModel;
+ Q_DECLARE_PRIVATE(QFileSystemModel)
+};
+
+void tst_QFileSystemModel::sort_data()
+{
+ QTest::addColumn<bool>("fileDialogMode");
+ QTest::newRow("standard usage") << false;
+ QTest::newRow("QFileDialog usage") << true;
+}
+
void tst_QFileSystemModel::sort()
{
QTemporaryFile file;
@@ -772,8 +791,48 @@ void tst_QFileSystemModel::sort()
model->sort(0, Qt::AscendingOrder);
model->sort(0, Qt::DescendingOrder);
QVERIFY(idx.column() != 0);
-}
+ QFETCH(bool, fileDialogMode);
+
+ MyFriendFileSystemModel *myModel = new MyFriendFileSystemModel();
+ QTreeView *tree = new QTreeView();
+
+ if (fileDialogMode)
+ myModel->d_func()->disableRecursiveSort = true;
+
+ const QString dirPath = QString("%1/sortTemp").arg(QDir::tempPath());
+ QDir dir(dirPath);
+ dir.mkpath(dirPath);
+ QVERIFY(dir.exists());
+ dir.mkdir("a");
+ dir.mkdir("b");
+ dir.mkdir("c");
+ dir.mkdir("d");
+ dir.mkdir("e");
+ dir.mkdir("f");
+ dir.mkdir("g");
+ QTemporaryFile tempFile(dirPath + "/rXXXXXX");
+ tempFile.open();
+ myModel->setRootPath(QDir::rootPath());
+ tree->setModel(myModel);
+ tree->show();
+ QTest::qWait(500);
+ tree->expand(myModel->index(dir.absolutePath(), 0));
+ while (dir.cdUp())
+ {
+ tree->expand(myModel->index(dir.absolutePath(), 0));
+ }
+ QTest::qWait(250);
+ //File dialog Mode means sub trees are not sorted, only the current root
+ if (fileDialogMode)
+ QVERIFY(myModel->index(0, 1, myModel->index(dirPath, 0)).data(QFileSystemModel::FilePathRole).toString() != dirPath + QLatin1String("/a"));
+ else
+ QCOMPARE(myModel->index(0, 1, myModel->index(dirPath, 0)).data(QFileSystemModel::FilePathRole).toString(), dirPath + QLatin1String("/a"));
+
+ delete tree;
+ delete myModel;
+
+}
void tst_QFileSystemModel::mkdir()
{
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index 58a17ea..34a6ab1 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -226,6 +226,7 @@ private slots:
void task240400_clickOnTextItem_data();
void task240400_clickOnTextItem();
void task243707_addChildBeforeParent();
+ void task197802_childrenVisibility();
};
void tst_QGraphicsItem::init()
@@ -5346,7 +5347,7 @@ void tst_QGraphicsItem::task243707_addChildBeforeParent()
// inconsistent internal state that can cause a crash. This test shows
// one such crash.
QGraphicsScene scene;
- QGraphicsWidget *widget = new QGraphicsWidget;
+ QGraphicsWidget *widget = new QGraphicsWidget;
QGraphicsWidget *widget2 = new QGraphicsWidget(widget);
scene.addItem(widget2);
QVERIFY(!widget2->parentItem());
@@ -5355,6 +5356,41 @@ void tst_QGraphicsItem::task243707_addChildBeforeParent()
QVERIFY(!widget2->commonAncestorItem(widget));
}
+void tst_QGraphicsItem::task197802_childrenVisibility()
+{
+ QGraphicsScene scene;
+ QGraphicsRectItem item(QRectF(0,0,20,20));
+
+ QGraphicsRectItem *item2 = new QGraphicsRectItem(QRectF(0,0,10,10), &item);
+ scene.addItem(&item);
+
+ //freshly created: both visible
+ QVERIFY(item.isVisible());
+ QVERIFY(item2->isVisible());
+
+ //hide child: parent visible, child not
+ item2->hide();
+ QVERIFY(item.isVisible());
+ QVERIFY(!item2->isVisible());
+
+ //hide parent: parent and child invisible
+ item.hide();
+ QVERIFY(!item.isVisible());
+ QVERIFY(!item2->isVisible());
+
+ //ask to show the child: parent and child invisible anyways
+ item2->show();
+ QVERIFY(!item.isVisible());
+ QVERIFY(!item2->isVisible());
+
+ //show the parent: both parent and child visible
+ item.show();
+ QVERIFY(item.isVisible());
+ QVERIFY(item2->isVisible());
+
+ delete item2;
+}
+
void tst_QGraphicsItem::boundingRegion_data()
{
QTest::addColumn<QLineF>("line");
diff --git a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
index b85abd3..1917357 100644
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -51,6 +51,7 @@
#include <qlineedit.h>
#include <qboxlayout.h>
#include <qaction.h>
+#include <qwidgetaction.h>
#include "../../shared/util.h"
@@ -147,6 +148,7 @@ private slots:
void setSizes();
void closePopupOnOutsideClick();
void defaultSize();
+ void shortcutsDeletion();
// Task fixes
void task236127_bspTreeIndexFails();
@@ -1782,6 +1784,20 @@ void tst_QGraphicsWidget::defaultSize()
}
+void tst_QGraphicsWidget::shortcutsDeletion()
+{
+ QGraphicsWidget *widget = new QGraphicsWidget;
+ QGraphicsWidget *widget2 = new QGraphicsWidget;
+ widget->setMinimumSize(40, 40);
+ QWidgetAction *del = new QWidgetAction(widget);
+ del->setIcon(QIcon("edit-delete"));
+ del->setShortcut(Qt::Key_Delete);
+ del->setShortcutContext(Qt::WidgetShortcut);
+ widget2->addAction(del);
+ widget2->addAction(del);
+ delete widget;
+}
+
class ProxyStyle : public QCommonStyle
{
public:
diff --git a/tests/auto/qicon/tst_qicon.cpp b/tests/auto/qicon/tst_qicon.cpp
index c7bee47..4cbc0e7 100644
--- a/tests/auto/qicon/tst_qicon.cpp
+++ b/tests/auto/qicon/tst_qicon.cpp
@@ -76,6 +76,8 @@ private slots:
void svg();
void addFile();
void availableSizes();
+ void streamAvailableSizes_data();
+ void streamAvailableSizes();
void task184901_badCache();
void task223279_inconsistentAddFile();
@@ -541,6 +543,47 @@ void tst_QIcon::availableSizes()
}
}
+void tst_QIcon::streamAvailableSizes_data()
+{
+ QTest::addColumn<QIcon>("icon");
+
+ QIcon icon;
+ icon.addFile(":/image.png", QSize(32,32));
+ QTest::newRow( "32x32" ) << icon;
+ icon.addFile(":/image.png", QSize(64,64));
+ QTest::newRow( "64x64" ) << icon;
+ icon.addFile(":/image.png", QSize(128,128));
+ QTest::newRow( "128x128" ) << icon;
+ icon.addFile(":/image.png", QSize(256,256));
+ QTest::newRow( "256x256" ) << icon;
+}
+
+void tst_QIcon::streamAvailableSizes()
+{
+ QFETCH(QIcon, icon);
+
+ QByteArray ba;
+ // write to QByteArray
+ {
+ QBuffer buffer(&ba);
+ buffer.open(QIODevice::WriteOnly);
+ QDataStream stream(&buffer);
+ stream << icon;
+ }
+
+ // read from QByteArray
+ {
+ QBuffer buffer(&ba);
+ buffer.open(QIODevice::ReadOnly);
+ QDataStream stream(&buffer);
+ QIcon i;
+ stream >> i;
+ QCOMPARE(i.isNull(), icon.isNull());
+ QCOMPARE(i.availableSizes(), icon.availableSizes());
+ }
+}
+
+
static inline bool operator<(const QSize &lhs, const QSize &rhs)
{
if (lhs.width() < rhs.width())
diff --git a/tests/auto/qmake/tst_qmake.cpp b/tests/auto/qmake/tst_qmake.cpp
index 70f1f3c..1178c81 100644
--- a/tests/auto/qmake/tst_qmake.cpp
+++ b/tests/auto/qmake/tst_qmake.cpp
@@ -63,6 +63,7 @@ public slots:
private slots:
void simple_app();
+ void simple_app_shadowbuild();
void simple_lib();
void simple_dll();
void subdirs();
@@ -143,6 +144,21 @@ void tst_qmake::simple_app()
QVERIFY( test_compiler.removeMakefile( workDir ) );
}
+void tst_qmake::simple_app_shadowbuild()
+{
+ QString workDir = base_path + "/testdata/simple_app";
+ QString buildDir = base_path + "/testdata/simple_app_build";
+
+ QVERIFY( test_compiler.qmake( workDir, "simple_app", buildDir ));
+ QVERIFY( test_compiler.make( buildDir ));
+ QVERIFY( test_compiler.exists( buildDir, "simple_app", Exe, "1.0.0" ));
+ QVERIFY( test_compiler.makeClean( buildDir ));
+ QVERIFY( test_compiler.exists( buildDir, "simple_app", Exe, "1.0.0" )); // Should still exist after a make clean
+ QVERIFY( test_compiler.makeDistClean( buildDir ));
+ QVERIFY( !test_compiler.exists( buildDir, "simple_app", Exe, "1.0.0" )); // Should not exist after a make distclean
+ QVERIFY( test_compiler.removeMakefile( buildDir ) );
+}
+
void tst_qmake::simple_dll()
{
QString workDir = base_path + "/testdata/simple_dll";
diff --git a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
index bd66fdf..80d90a6 100644
--- a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
+++ b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
@@ -2585,6 +2585,16 @@ void tst_QSortFilterProxyModel::task248868_dynamicSorting()
QModelIndex index = proxy1.index(row, 0, QModelIndex());
QCOMPARE(proxy1.data(index, Qt::DisplayRole).toString(), expected.at(row));
}
+
+ //set up the sorting before seting the model up
+ QSortFilterProxyModel proxy2;
+ proxy2.setDynamicSortFilter(true);
+ proxy2.sort(0);
+ proxy2.setSourceModel(&model2);
+ for (int row = 0; row < proxy2.rowCount(QModelIndex()); ++row) {
+ QModelIndex index = proxy2.index(row, 0, QModelIndex());
+ QCOMPARE(proxy2.data(index, Qt::DisplayRole).toString(), expected.at(row));
+ }
}
class QtTestModel: public QAbstractItemModel
diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp
index 3612f2e..e7d548f 100644
--- a/tests/auto/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/qtreeview/tst_qtreeview.cpp
@@ -229,6 +229,7 @@ private slots:
void task238873_avoidAutoReopening();
void task244304_clickOnDecoration();
void task246536_scrollbarsNotWorking();
+ void task254234_proxySort();
};
class QtTestModel: public QAbstractItemModel
@@ -2503,7 +2504,6 @@ void tst_QTreeView::sortByColumn()
QCOMPARE(view.header()->sortIndicatorSection(), 0);
QCOMPARE(view.model()->data(view.model()->index(0,0)).toString(), QString::fromLatin1("a"));
QCOMPARE(view.model()->data(view.model()->index(1,0)).toString(), QString::fromLatin1("b"));
-
}
/*
@@ -3282,5 +3282,32 @@ void tst_QTreeView::task246536_scrollbarsNotWorking()
QVERIFY(o.count > 0);
}
+void tst_QTreeView::task254234_proxySort()
+{
+ //based on tst_QTreeView::sortByColumn
+ // it used not to work when setting the source of a proxy after enabling sorting
+ QTreeView view;
+ QStandardItemModel model(4,2);
+ model.setItem(0,0,new QStandardItem("b"));
+ model.setItem(1,0,new QStandardItem("d"));
+ model.setItem(2,0,new QStandardItem("c"));
+ model.setItem(3,0,new QStandardItem("a"));
+ model.setItem(0,1,new QStandardItem("e"));
+ model.setItem(1,1,new QStandardItem("g"));
+ model.setItem(2,1,new QStandardItem("h"));
+ model.setItem(3,1,new QStandardItem("f"));
+
+ view.sortByColumn(1);
+ view.setSortingEnabled(true);
+
+ QSortFilterProxyModel proxy;
+ proxy.setDynamicSortFilter(true);
+ view.setModel(&proxy);
+ proxy.setSourceModel(&model);
+ QCOMPARE(view.header()->sortIndicatorSection(), 1);
+ QCOMPARE(view.model()->data(view.model()->index(0,1)).toString(), QString::fromLatin1("h"));
+ QCOMPARE(view.model()->data(view.model()->index(1,1)).toString(), QString::fromLatin1("g"));
+}
+
QTEST_MAIN(tst_QTreeView)
#include "tst_qtreeview.moc"
diff --git a/tests/auto/selftests/expected_skip.txt b/tests/auto/selftests/expected_skip.txt
index ba41e67..f3be5b5 100644
--- a/tests/auto/selftests/expected_skip.txt
+++ b/tests/auto/selftests/expected_skip.txt
@@ -7,7 +7,7 @@ SKIP : tst_Skip::emptytest() skipping all
Loc: [/home/fenglich/dev/qt-4.3/tests/auto/selftests/skip/tst_skip.cpp(45)]
SKIP : tst_Skip::singleSkip(local 1) skipping one
Loc: [/home/fenglich/dev/qt-4.3/tests/auto/selftests/skip/tst_skip.cpp(64)]
-this line should only be reached once (true)
+QDEBUG : tst_Skip::singleSkip(local 2) this line should only be reached once (true)
PASS : tst_Skip::singleSkip()
PASS : tst_Skip::cleanupTestCase()
Totals: 3 passed, 0 failed, 3 skipped
diff --git a/tests/auto/selftests/skip/tst_skip.cpp b/tests/auto/selftests/skip/tst_skip.cpp
index b1a3936..437cf62 100644
--- a/tests/auto/selftests/skip/tst_skip.cpp
+++ b/tests/auto/selftests/skip/tst_skip.cpp
@@ -70,7 +70,7 @@ void tst_Skip::test_data()
void tst_Skip::test()
{
- printf("this line should never be reached, since we skip in the _data function\n");
+ qDebug("this line should never be reached, since we skip in the _data function");
}
void tst_Skip::emptytest_data()
@@ -80,7 +80,7 @@ void tst_Skip::emptytest_data()
void tst_Skip::emptytest()
{
- printf("this line should never be reached, since we skip in the _data function\n");
+ qDebug("this line should never be reached, since we skip in the _data function");
}
void tst_Skip::singleSkip_data()
@@ -95,7 +95,7 @@ void tst_Skip::singleSkip()
QFETCH(bool, booll);
if (!booll)
QSKIP("skipping one", SkipSingle);
- printf("this line should only be reached once (%s)\n", booll ? "true" : "false");
+ qDebug("this line should only be reached once (%s)", booll ? "true" : "false");
}
QTEST_MAIN(tst_Skip)
diff --git a/tests/auto/selftests/tst_selftests.cpp b/tests/auto/selftests/tst_selftests.cpp
index 103fd79..6776b12 100644
--- a/tests/auto/selftests/tst_selftests.cpp
+++ b/tests/auto/selftests/tst_selftests.cpp
@@ -295,6 +295,11 @@ void tst_Selftests::initTestCase()
m_checkXMLBlacklist.append("differentexec");
m_checkXMLBlacklist.append("qexecstringlist");
m_checkXMLBlacklist.append("benchliboptions");
+
+ /* These tests use printf and therefore corrupt the testlog */
+ m_checkXMLBlacklist.append("subtest");
+ m_checkXMLBlacklist.append("globaldata");
+ m_checkXMLBlacklist.append("warnings");
}
void tst_Selftests::checkXML() const
diff --git a/tools/assistant/lib/fulltextsearch/qclucene_global_p.h b/tools/assistant/lib/fulltextsearch/qclucene_global_p.h
index 2a9d146..3dba45a 100644
--- a/tools/assistant/lib/fulltextsearch/qclucene_global_p.h
+++ b/tools/assistant/lib/fulltextsearch/qclucene_global_p.h
@@ -29,6 +29,14 @@
#include <QtCore/QChar>
#include <QtCore/QString>
+#if !defined(_MSC_VER) && defined(_CL_HAVE_WCHAR_H) && defined(_CL_HAVE_WCHAR_T)
+# if !defined(TCHAR)
+# define TCHAR wchar_t
+# endif
+#else
+# include <windows.h>
+#endif
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -87,14 +95,6 @@ QT_BEGIN_NAMESPACE
# define CL_NS2(sub,sub2)
#endif
-#if !defined(_MSC_VER) && defined(_CL_HAVE_WCHAR_H) && defined(_CL_HAVE_WCHAR_T)
-# if !defined(TCHAR)
-# define TCHAR wchar_t
-# endif
-#else
-# include <windows.h>
-#endif
-
namespace {
TCHAR* QStringToTChar(const QString &str)
{
diff --git a/tools/assistant/tools/assistant/centralwidget.cpp b/tools/assistant/tools/assistant/centralwidget.cpp
index b78f346..52d48d5 100644
--- a/tools/assistant/tools/assistant/centralwidget.cpp
+++ b/tools/assistant/tools/assistant/centralwidget.cpp
@@ -87,6 +87,7 @@ namespace {
FindWidget::FindWidget(QWidget *parent)
: QWidget(parent)
+ , appPalette(qApp->palette())
{
QHBoxLayout *hboxLayout = new QHBoxLayout(this);
QString resourcePath = QLatin1String(":/trolltech/assistant/images/");
@@ -148,6 +149,34 @@ FindWidget::~FindWidget()
{
}
+void FindWidget::hideEvent(QHideEvent* event)
+{
+#if !defined(QT_NO_WEBKIT)
+ // TODO: remove this once webkit supports setting the palette
+ if (!event->spontaneous())
+ qApp->setPalette(appPalette);
+#else
+ Q_UNUSED(event);
+#endif
+}
+
+void FindWidget::showEvent(QShowEvent* event)
+{
+#if !defined(QT_NO_WEBKIT)
+ // TODO: remove this once webkit supports setting the palette
+ if (!event->spontaneous()) {
+ QPalette p = appPalette;
+ p.setColor(QPalette::Inactive, QPalette::Highlight,
+ p.color(QPalette::Active, QPalette::Highlight));
+ p.setColor(QPalette::Inactive, QPalette::HighlightedText,
+ p.color(QPalette::Active, QPalette::HighlightedText));
+ qApp->setPalette(p);
+ }
+#else
+ Q_UNUSED(event);
+#endif
+}
+
void FindWidget::updateButtons()
{
if (editFind->text().isEmpty()) {
@@ -245,12 +274,14 @@ CentralWidget::CentralWidget(QHelpEngine *engine, MainWindow *parent)
SLOT(showTabBarContextMenu(QPoint)));
}
- QPalette p = qApp->palette();
+#if defined(QT_NO_WEBKIT)
+ QPalette p = palette();
p.setColor(QPalette::Inactive, QPalette::Highlight,
p.color(QPalette::Active, QPalette::Highlight));
p.setColor(QPalette::Inactive, QPalette::HighlightedText,
p.color(QPalette::Active, QPalette::HighlightedText));
- qApp->setPalette(p);
+ setPalette(p);
+#endif
}
CentralWidget::~CentralWidget()
@@ -848,60 +879,64 @@ void CentralWidget::keyPressEvent(QKeyEvent *e)
QWidget::keyPressEvent(e);
}
-void CentralWidget::find(QString ttf, bool forward, bool backward)
+void CentralWidget::find(const QString &ttf, bool forward, bool backward)
{
- QTextCursor cursor;
- QTextDocument *doc = 0;
- QTextBrowser *browser = 0;
-
- HelpViewer *viewer = currentHelpViewer();
QPalette p = findWidget->editFind->palette();
p.setColor(QPalette::Active, QPalette::Base, Qt::white);
-#if !defined(QT_NO_WEBKIT)
- Q_UNUSED(forward)
- Q_UNUSED(doc)
- Q_UNUSED(browser)
-
- if (viewer) {
- QWebPage::FindFlags options;
- if (backward)
- options |= QWebPage::FindBackward;
+ if (!ttf.isEmpty()) {
+ HelpViewer *viewer = currentHelpViewer();
- if (findWidget->checkCase->isChecked())
- options |= QWebPage::FindCaseSensitively;
+ bool found = false;
+#if !defined(QT_NO_WEBKIT)
+ if (viewer) {
+ QWebPage::FindFlags options;
+ if (backward)
+ options |= QWebPage::FindBackward;
- bool found = viewer->findText(ttf, options);
- findWidget->labelWrapped->hide();
+ if (findWidget->checkCase->isChecked())
+ options |= QWebPage::FindCaseSensitively;
- if (!found) {
- options |= QWebPage::FindWrapsAroundDocument;
found = viewer->findText(ttf, options);
+ findWidget->labelWrapped->hide();
if (!found) {
- p.setColor(QPalette::Active, QPalette::Base, QColor(255, 102, 102));
- } else {
- findWidget->labelWrapped->show();
+ options |= QWebPage::FindWrapsAroundDocument;
+ found = viewer->findText(ttf, options);
+ if (found)
+ findWidget->labelWrapped->show();
}
+ } else if (tabWidget->currentWidget() == m_searchWidget) {
+ QTextBrowser *browser = qFindChild<QTextBrowser*>(m_searchWidget);
+ found = findInTextBrowser(browser, ttf, forward, backward);
}
- }
#else
- if (viewer) {
- doc = viewer->document();
- cursor = viewer->textCursor();
- browser = qobject_cast<QTextBrowser*>(viewer);
- }
+ QTextBrowser *browser = qobject_cast<QTextBrowser*>(viewer);
+ if (tabWidget->currentWidget() == m_searchWidget)
+ browser = qFindChild<QTextBrowser*>(m_searchWidget);
+ found = findInTextBrowser(browser, ttf, forward, backward);
+#endif
- if (tabWidget->currentWidget() == m_searchWidget) {
- QTextBrowser *browser = qFindChild<QTextBrowser*>(m_searchWidget);
- if (browser) {
- doc = browser->document();
- cursor = browser->textCursor();
- }
+ if (!found)
+ p.setColor(QPalette::Active, QPalette::Base, QColor(255, 102, 102));
}
- if (!browser || !doc || cursor.isNull())
- return;
+ if (!findWidget->isVisible())
+ findWidget->show();
+ findWidget->editFind->setPalette(p);
+}
+
+bool CentralWidget::findInTextBrowser(QTextBrowser* browser, const QString &ttf,
+ bool forward, bool backward)
+{
+ if (!browser)
+ return false;
+
+ QTextDocument *doc = browser->document();
+ QTextCursor cursor = browser->textCursor();
+
+ if (!doc || cursor.isNull())
+ return false;
QTextDocument::FindFlags options;
@@ -910,44 +945,33 @@ void CentralWidget::find(QString ttf, bool forward, bool backward)
QTextCursor::MoveAnchor);
}
- QTextCursor newCursor = cursor;
+ if (backward)
+ options |= QTextDocument::FindBackward;
- if (!ttf.isEmpty()) {
- if (backward)
- options |= QTextDocument::FindBackward;
-
- if (findWidget->checkCase->isChecked())
- options |= QTextDocument::FindCaseSensitively;
+ if (findWidget->checkCase->isChecked())
+ options |= QTextDocument::FindCaseSensitively;
- if (findWidget->checkWholeWords->isChecked())
- options |= QTextDocument::FindWholeWords;
+ if (findWidget->checkWholeWords->isChecked())
+ options |= QTextDocument::FindWholeWords;
- newCursor = doc->find(ttf, cursor, options);
- findWidget->labelWrapped->hide();
+ findWidget->labelWrapped->hide();
+ bool found = true;
+ QTextCursor newCursor = doc->find(ttf, cursor, options);
+ if (newCursor.isNull()) {
+ QTextCursor ac(doc);
+ ac.movePosition(options & QTextDocument::FindBackward
+ ? QTextCursor::End : QTextCursor::Start);
+ newCursor = doc->find(ttf, ac, options);
if (newCursor.isNull()) {
- QTextCursor ac(doc);
- ac.movePosition(options & QTextDocument::FindBackward
- ? QTextCursor::End : QTextCursor::Start);
- newCursor = doc->find(ttf, ac, options);
- if (newCursor.isNull()) {
- p.setColor(QPalette::Active, QPalette::Base, QColor(255, 102, 102));
- newCursor = cursor;
- } else {
- findWidget->labelWrapped->show();
- }
+ found = false;
+ newCursor = cursor;
+ } else {
+ findWidget->labelWrapped->show();
}
}
-#endif
-
- if (!findWidget->isVisible())
- findWidget->show();
-
-#if defined(QT_NO_WEBKIT)
- if (browser)
- browser->setTextCursor(newCursor);
-#endif
- findWidget->editFind->setPalette(p);
+ browser->setTextCursor(newCursor);
+ return found;
}
void CentralWidget::updateBrowserFont()
diff --git a/tools/assistant/tools/assistant/centralwidget.h b/tools/assistant/tools/assistant/centralwidget.h
index e3ce200..d59dbe5 100644
--- a/tools/assistant/tools/assistant/centralwidget.h
+++ b/tools/assistant/tools/assistant/centralwidget.h
@@ -55,6 +55,7 @@ class QLabel;
class QAction;
class QCheckBox;
class QLineEdit;
+class QTextBrowser;
class QToolButton;
class HelpViewer;
@@ -79,6 +80,10 @@ signals:
void findNext();
void findPrevious();
+protected:
+ void hideEvent(QHideEvent* event);
+ void showEvent(QShowEvent * event);
+
private slots:
void updateButtons();
@@ -94,6 +99,7 @@ private:
QToolButton *toolPrevious;
QCheckBox *checkWholeWords;
+ QPalette appPalette;
friend class CentralWidget;
};
@@ -176,7 +182,9 @@ private slots:
private:
void connectSignals();
bool eventFilter(QObject *object, QEvent *e);
- void find(QString ttf, bool forward, bool backward);
+ void find(const QString &ttf, bool forward, bool backward);
+ bool findInTextBrowser(QTextBrowser* browser, const QString &ttf,
+ bool forward, bool backward);
void initPrinter();
QString quoteTabTitle(const QString &title) const;
void highlightSearchTerms();
diff --git a/tools/assistant/translations/qt_help.pro b/tools/assistant/translations/qt_help.pro
index efad6bf..e6208a6 100644
--- a/tools/assistant/translations/qt_help.pro
+++ b/tools/assistant/translations/qt_help.pro
@@ -44,5 +44,6 @@ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/qt_help_de.ts \
$$[QT_INSTALL_TRANSLATIONS]/qt_help_pl.ts \
$$[QT_INSTALL_TRANSLATIONS]/qt_help_untranslated.ts \
$$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_CN.ts \
- $$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_TW.ts
+ $$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_TW.ts \
+ $$[QT_INSTALL_TRANSLATIONS]/qt_help_da.ts
error("This is a dummy profile to be used for translations ONLY.")
diff --git a/tools/assistant/translations/translations.pro b/tools/assistant/translations/translations.pro
index 58de554..8572123 100644
--- a/tools/assistant/translations/translations.pro
+++ b/tools/assistant/translations/translations.pro
@@ -45,4 +45,5 @@ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/assistant_de.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_pl.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_untranslated.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_zh_CN.ts \
- $$[QT_INSTALL_TRANSLATIONS]/assistant_zh_TW.ts
+ $$[QT_INSTALL_TRANSLATIONS]/assistant_zh_TW.ts \
+ $$[QT_INSTALL_TRANSLATIONS]/assistant_da.ts
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 4ac93f6..81ddf4a 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -1381,6 +1381,7 @@ void Configure::applySpecSpecifics()
dictionary[ "WEBKIT" ] = "no";
dictionary[ "PHONON" ] = "yes";
dictionary[ "DIRECTSHOW" ] = "no";
+ dictionary[ "LTCG" ] = "yes";
// We only apply MMX/IWMMXT for mkspecs we know they work
if (dictionary[ "XQMAKESPEC" ].startsWith("wincewm")) {
dictionary[ "MMX" ] = "yes";
@@ -3646,12 +3647,15 @@ void Configure::readLicense()
dictionary["PLATFORM NAME"] = "Qt for S60";
else
dictionary["PLATFORM NAME"] = "Qt for Windows";
+ dictionary["LICENSE FILE"] = sourcePath;
+
bool openSource = false;
+ bool hasOpenSource = QFile::exists(dictionary["LICENSE FILE"] + "/LICENSE.GPL3") || QFile::exists(dictionary["LICENSE FILE"] + "/LICENSE.LGPL");
if (dictionary["BUILDNOKIA"] == "yes" || dictionary["BUILDTYPE"] == "commercial") {
openSource = false;
} else if (dictionary["BUILDTYPE"] == "opensource") {
openSource = true;
- } else {
+ } else if (hasOpenSource) { // No Open Source? Just display the commercial license right away
forever {
char accept = '?';
cout << "Which edition of Qt do you want to use ?" << endl;
@@ -3669,28 +3673,23 @@ void Configure::readLicense()
}
}
}
- if (openSource) {
- dictionary["LICENSE FILE"] = sourcePath;
- if (QFile::exists(dictionary["LICENSE FILE"] + "/LICENSE.GPL3") || QFile::exists(dictionary["LICENSE FILE"] + "/LICENSE.LGPL")) {
- cout << endl << "This is the " << dictionary["PLATFORM NAME"] << " Open Source Edition." << endl;
- licenseInfo["LICENSEE"] = "Open Source";
- dictionary["EDITION"] = "OpenSource";
- dictionary["QT_EDITION"] = "QT_EDITION_OPENSOURCE";
- cout << endl;
- if (!showLicense(dictionary["LICENSE FILE"])) {
- cout << "Configuration aborted since license was not accepted";
- dictionary["DONE"] = "error";
- return;
- }
+ if (hasOpenSource && openSource) {
+ cout << endl << "This is the " << dictionary["PLATFORM NAME"] << " Open Source Edition." << endl;
+ licenseInfo["LICENSEE"] = "Open Source";
+ dictionary["EDITION"] = "OpenSource";
+ dictionary["QT_EDITION"] = "QT_EDITION_OPENSOURCE";
+ cout << endl;
+ if (!showLicense(dictionary["LICENSE FILE"])) {
+ cout << "Configuration aborted since license was not accepted";
+ dictionary["DONE"] = "error";
return;
}
-#ifndef COMMERCIAL_VERSION
- else {
- cout << endl << "Cannot find the GPL license files!" << endl;
+ } else if (openSource) {
+ cout << endl << "Cannot find the GPL license files! Please download the Open Source version of the library." << endl;
dictionary["DONE"] = "error";
}
-#else
- } else {
+#ifdef COMMERCIAL_VERSION
+ else {
Tools::checkLicense(dictionary, licenseInfo, firstLicensePath());
if (dictionary["DONE"] != "error" && dictionary["BUILDNOKIA"] != "yes") {
// give the user some feedback, and prompt for license acceptance
@@ -3702,7 +3701,12 @@ void Configure::readLicense()
}
}
}
-#endif // COMMERCIAL_VERSION
+#else // !COMMERCIAL_VERSION
+ else {
+ cout << endl << "Cannot build commercial edition from the open source version of the library." << endl;
+ dictionary["DONE"] = "error";
+ }
+#endif
}
void Configure::reloadCmdLine()
diff --git a/tools/designer/src/components/formeditor/qdesigner_resource.cpp b/tools/designer/src/components/formeditor/qdesigner_resource.cpp
index 75a53b7..064da9b 100644
--- a/tools/designer/src/components/formeditor/qdesigner_resource.cpp
+++ b/tools/designer/src/components/formeditor/qdesigner_resource.cpp
@@ -159,6 +159,7 @@ private:
QDesignerFormEditorInterface *m_core;
DesignerPixmapCache *m_pixmapCache;
DesignerIconCache *m_iconCache;
+ const QDesignerLanguageExtension *m_lang;
bool m_saveRelative;
mutable QMap<QString, bool> m_usedQrcFiles;
mutable QMap<QString, bool> m_loadedQrcFiles;
@@ -168,13 +169,18 @@ QDesignerResourceBuilder::QDesignerResourceBuilder(QDesignerFormEditorInterface
m_core(core),
m_pixmapCache(pixmapCache),
m_iconCache(iconCache),
+ m_lang(qt_extension<QDesignerLanguageExtension *>(core->extensionManager(), core)),
m_saveRelative(true)
{
}
-static inline void setIconPixmap(QIcon::Mode m, QIcon::State s, const QDir &workingDirectory, const QString &v, PropertySheetIconValue &icon)
+static inline void setIconPixmap(QIcon::Mode m, QIcon::State s, const QDir &workingDirectory,
+ QString path, PropertySheetIconValue &icon,
+ const QDesignerLanguageExtension *lang = 0)
{
- icon.setPixmap(m, s, PropertySheetPixmapValue(QFileInfo(workingDirectory, v).absoluteFilePath()));
+ if (lang == 0 || !lang->isLanguageResource(path))
+ path = QFileInfo(workingDirectory, path).absoluteFilePath();
+ icon.setPixmap(m, s, PropertySheetPixmapValue(path));
}
QVariant QDesignerResourceBuilder::loadResource(const QDir &workingDirectory, const DomProperty *property) const
@@ -184,7 +190,11 @@ QVariant QDesignerResourceBuilder::loadResource(const QDir &workingDirectory, co
PropertySheetPixmapValue pixmap;
DomResourcePixmap *dp = property->elementPixmap();
if (!dp->text().isEmpty()) {
- pixmap.setPath(QFileInfo(workingDirectory, dp->text()).absoluteFilePath());
+ if (m_lang != 0 && m_lang->isLanguageResource(dp->text())) {
+ pixmap.setPath(dp->text());
+ } else {
+ pixmap.setPath(QFileInfo(workingDirectory, dp->text()).absoluteFilePath());
+ }
#ifdef OLD_RESOURCE_FORMAT
if (dp->hasAttributeResource())
m_loadedQrcFiles.insert(QFileInfo(workingDirectory, dp->attributeResource()).absoluteFilePath(), false);
@@ -198,24 +208,24 @@ QVariant QDesignerResourceBuilder::loadResource(const QDir &workingDirectory, co
DomResourceIcon *di = property->elementIconSet();
if (const int flags = iconStateFlags(di)) { // new, post 4.4 format
if (flags & NormalOff)
- setIconPixmap(QIcon::Normal, QIcon::Off, workingDirectory, di->elementNormalOff()->text(), icon);
+ setIconPixmap(QIcon::Normal, QIcon::Off, workingDirectory, di->elementNormalOff()->text(), icon, m_lang);
if (flags & NormalOn)
- setIconPixmap(QIcon::Normal, QIcon::On, workingDirectory, di->elementNormalOn()->text(), icon);
+ setIconPixmap(QIcon::Normal, QIcon::On, workingDirectory, di->elementNormalOn()->text(), icon, m_lang);
if (flags & DisabledOff)
- setIconPixmap(QIcon::Disabled, QIcon::Off, workingDirectory, di->elementDisabledOff()->text(), icon);
+ setIconPixmap(QIcon::Disabled, QIcon::Off, workingDirectory, di->elementDisabledOff()->text(), icon, m_lang);
if (flags & DisabledOn)
- setIconPixmap(QIcon::Disabled, QIcon::On, workingDirectory, di->elementDisabledOn()->text(), icon);
+ setIconPixmap(QIcon::Disabled, QIcon::On, workingDirectory, di->elementDisabledOn()->text(), icon, m_lang);
if (flags & ActiveOff)
- setIconPixmap(QIcon::Active, QIcon::Off, workingDirectory, di->elementActiveOff()->text(), icon);
+ setIconPixmap(QIcon::Active, QIcon::Off, workingDirectory, di->elementActiveOff()->text(), icon, m_lang);
if (flags & ActiveOn)
- setIconPixmap(QIcon::Active, QIcon::On, workingDirectory, di->elementActiveOn()->text(), icon);
+ setIconPixmap(QIcon::Active, QIcon::On, workingDirectory, di->elementActiveOn()->text(), icon, m_lang);
if (flags & SelectedOff)
- setIconPixmap(QIcon::Selected, QIcon::Off, workingDirectory, di->elementSelectedOff()->text(), icon);
+ setIconPixmap(QIcon::Selected, QIcon::Off, workingDirectory, di->elementSelectedOff()->text(), icon, m_lang);
if (flags & SelectedOn)
- setIconPixmap(QIcon::Selected, QIcon::On, workingDirectory, di->elementSelectedOn()->text(), icon);
+ setIconPixmap(QIcon::Selected, QIcon::On, workingDirectory, di->elementSelectedOn()->text(), icon, m_lang);
} else {
#ifdef OLD_RESOURCE_FORMAT
- setIconPixmap(QIcon::Normal, QIcon::Off, workingDirectory, di->text(), icon);
+ setIconPixmap(QIcon::Normal, QIcon::Off, workingDirectory, di->text(), icon, m_lang);
if (di->hasAttributeResource())
m_loadedQrcFiles.insert(QFileInfo(workingDirectory, di->attributeResource()).absoluteFilePath(), false);
#endif
diff --git a/tools/qdoc3/doc.cpp b/tools/qdoc3/doc.cpp
index 61d0ed6..397fbfa 100644
--- a/tools/qdoc3/doc.cpp
+++ b/tools/qdoc3/doc.cpp
@@ -1265,9 +1265,7 @@ void DocParser::parse(const QString& source,
}
else {
append(Atom::ParaLeft);
- append(Atom::String,
- "This is an overloaded member function, "
- "provided for convenience.");
+ append(Atom::String,"This is an overloaded function.");
append(Atom::ParaRight);
x = getMetaCommandArgument(cmdStr);
}
diff --git a/tools/qdoc3/main.cpp b/tools/qdoc3/main.cpp
index 3e6f832..5c247fa 100644
--- a/tools/qdoc3/main.cpp
+++ b/tools/qdoc3/main.cpp
@@ -43,6 +43,7 @@
main.cpp
*/
+#include <qglobal.h>
#include <QtCore>
#include <stdlib.h>
#include "apigenerator.h"
@@ -136,7 +137,8 @@ static void printHelp()
*/
static void printVersion()
{
- Location::information(tr("qdoc version 4.4.1"));
+ QString s = QString(tr("qdoc version ")) + QString(QT_VERSION_STR);
+ Location::information(s);
}
/*!
diff --git a/tools/qdoc3/test/classic.css b/tools/qdoc3/test/classic.css
index 6cf7377..f22a77a 100644
--- a/tools/qdoc3/test/classic.css
+++ b/tools/qdoc3/test/classic.css
@@ -77,10 +77,10 @@ table.annotated td {
table tr pre
{
- padding-top: none;
- padding-bottom: none;
- padding-left: none;
- padding-right: none;
+ padding-top: 0px;
+ padding-bottom: 0px;
+ padding-left: 0px;
+ padding-right: 0px;
border: none;
background: none
}
diff --git a/translations/assistant_da.ts b/translations/assistant_da.ts
new file mode 100644
index 0000000..8d134fc
--- /dev/null
+++ b/translations/assistant_da.ts
@@ -0,0 +1,1166 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="da">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/>
+ <source>&amp;Close</source>
+ <translation>&amp;Luk</translation>
+ </message>
+</context>
+<context>
+ <name>AboutLabel</name>
+ <message>
+ <location line="-14"/>
+ <source>Warning</source>
+ <translation>Advarsel</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Unable to launch external application.
+</source>
+ <translation>Kunne ikke starte ekstern applikation.
+</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>BookmarkDialog</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+185"/>
+ <location line="+18"/>
+ <location line="+36"/>
+ <location line="+24"/>
+ <location line="+32"/>
+ <source>Bookmarks</source>
+ <translation>Favoritter</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui"/>
+ <source>Add Bookmark</source>
+ <translation>Føj til Favoritter</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Bookmark:</source>
+ <translation>Favorit:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Add in Folder:</source>
+ <translation>Føj til mappen:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>+</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location/>
+ <source>New Folder</source>
+ <translation>Ny mappe</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="-69"/>
+ <source>Delete Folder</source>
+ <translation>Slet mappe</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Rename Folder</source>
+ <translation>Omdøb mappe</translation>
+ </message>
+</context>
+<context>
+ <name>BookmarkManager</name>
+ <message>
+ <location line="+450"/>
+ <source>Bookmarks</source>
+ <translation>Favoritter</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Remove</source>
+ <translation>Fjern</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>You are going to delete a Folder, this will also&lt;br&gt;remove it&apos;s content. Are you sure to continue?</source>
+ <translation>Ved at slette denne mappe fjernes hele mappens&lt;br&gt;indhold. Ønsker du alligevel at slette?</translation>
+ </message>
+ <message>
+ <location line="+109"/>
+ <location line="+9"/>
+ <source>New Folder</source>
+ <translation>Ny mappe</translation>
+ </message>
+ <message>
+ <source>You are about to delete a folder which means that its content&lt;br&gt;will also be removed. Do you want to continue?</source>
+ <translation type="obsolete">Ved at slette denne mappe fjernes hele mappens indhold.&lt;br&gt;Ønsker du alligevel at slette?</translation>
+ </message>
+</context>
+<context>
+ <name>BookmarkWidget</name>
+ <message>
+ <location line="-391"/>
+ <source>Filter:</source>
+ <translation>Filter:</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Remove</source>
+ <translation>Fjern</translation>
+ </message>
+ <message>
+ <location line="-78"/>
+ <source>Delete Folder</source>
+ <translation>Slet mappe</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Rename Folder</source>
+ <translation>Omdøb mappe</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Show Bookmark</source>
+ <translation>Vis favorit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Show Bookmark in New Tab</source>
+ <translation>Vis favorit på ny fane</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Delete Bookmark</source>
+ <translation>Slet favorit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Rename Bookmark</source>
+ <translation>Omdøb favorit</translation>
+ </message>
+ <message>
+ <source>Search for:</source>
+ <translation type="obsolete">Søg efter:</translation>
+ </message>
+ <message>
+ <location line="+61"/>
+ <source>Add</source>
+ <translation>Tilføj</translation>
+ </message>
+</context>
+<context>
+ <name>CentralWidget</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+208"/>
+ <source>Add new page</source>
+ <translation>Tilføj ny side</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Close current page</source>
+ <translation>Luk nuværende side</translation>
+ </message>
+ <message>
+ <location line="+282"/>
+ <source>Print Document</source>
+ <translation>Udskriv dokument</translation>
+ </message>
+ <message>
+ <location line="+148"/>
+ <location line="+2"/>
+ <source>unknown</source>
+ <translation>ukendt</translation>
+ </message>
+ <message>
+ <location line="+91"/>
+ <source>Add New Page</source>
+ <translation>Tilføj ny side</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Close This Page</source>
+ <translation>Luk denne side</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Close Other Pages</source>
+ <translation>Luk de andre sider</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Add Bookmark for this Page...</source>
+ <translation>Føj denne side til Favoritter...</translation>
+ </message>
+ <message>
+ <location line="+259"/>
+ <source>Search</source>
+ <translation>Søg</translation>
+ </message>
+</context>
+<context>
+ <name>ContentWindow</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+155"/>
+ <source>Open Link</source>
+ <translation>Åbn link</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Open Link in New Tab</source>
+ <translation>Åbn link på ny fane</translation>
+ </message>
+</context>
+<context>
+ <name>FilterNameDialogClass</name>
+ <message>
+ <source>FilterNameDialog</source>
+ <translation type="obsolete">FilterNavnDialog</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/filternamedialog.ui"/>
+ <source>Filter Name:</source>
+ <translation>Filternavn:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Add Filter Name</source>
+ <translation>Tilføj filternavn</translation>
+ </message>
+</context>
+<context>
+ <name>FindWidget</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-876"/>
+ <source>&lt;img src=&quot;:/trolltech/assistant/images/wrap.png&quot;&gt;&amp;nbsp;Search wrapped</source>
+ <translation>&lt;img src=&quot;:/trolltech/assistant/images/wrap.png&quot;&gt;&amp;nbsp;Søgning gentaget fra start</translation>
+ </message>
+ <message>
+ <location line="-23"/>
+ <source>Previous</source>
+ <translation>Forrige</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Next</source>
+ <translation>Næste</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Case Sensitive</source>
+ <translation>Der skelnes mellem store og små bogstaver</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Whole words</source>
+ <translation>Hele ord</translation>
+ </message>
+ <message>
+ <source>&lt;img src=&quot;%1&quot;&gt;&amp;nbsp;Search wrapped</source>
+ <oldsource>&lt;img src=&quot;:/trolltech/assistant/images/wrap.png&quot;&gt;&amp;nbsp;Search wrapped</oldsource>
+ <translation type="obsolete">&lt;img src=&quot;%1&quot;&gt;&amp;nbsp;Søgning startet forfra</translation>
+ </message>
+</context>
+<context>
+ <name>FontPanel</name>
+ <message>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
+ <source>Font</source>
+ <translation>Skrifttype</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>&amp;Writing system</source>
+ <translation>&amp;Skrivesystem</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Family</source>
+ <translation>&amp;Familie</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&amp;Style</source>
+ <translation>&amp;Stil</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&amp;Point size</source>
+ <translation>&amp;Punktstørrelse</translation>
+ </message>
+</context>
+<context>
+ <name>HelpViewer</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+492"/>
+ <source>Help</source>
+ <translation>Hjælp</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-62"/>
+ <source>&lt;title&gt;Error 404...&lt;/title&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;The page could not be found&lt;/h1&gt;&lt;br&gt;&lt;h3&gt;&apos;%1&apos;&lt;/h3&gt;&lt;/div&gt;</source>
+ <translation>&lt;title&gt;Fejl 404...&lt;/title&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;Siden blev ikke fundet&lt;/h1&gt;&lt;br&gt;&lt;h3&gt;&apos;%1&apos;&lt;/h3&gt;&lt;/div&gt;</translation>
+ </message>
+ <message>
+ <location line="+125"/>
+ <source>Copy &amp;Link Location</source>
+ <translation>Kopiér &amp;linkets placering</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Open Link in New Tab Ctrl+LMB</source>
+ <translation>Åbn link på ny fane Ctrl+LMB</translation>
+ </message>
+ <message>
+ <location line="-275"/>
+ <source>Open Link in New Tab</source>
+ <translation>Åbn link på ny fane</translation>
+ </message>
+ <message>
+ <source>&lt;b&gt;Page not found:&lt;p&gt;%1.&lt;/p&gt;&lt;/b&gt;</source>
+ <translation type="obsolete">&lt;b&gt;Kunne ikke finde siden:&lt;p&gt;%1.&lt;/p&gt;&lt;/b&gt;</translation>
+ </message>
+ <message>
+ <location line="+209"/>
+ <source>Unable to launch external application.
+</source>
+ <translation>Kunne ikke starte ekstern applikation.
+</translation>
+ </message>
+</context>
+<context>
+ <name>IndexWindow</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/>
+ <source>&amp;Look for:</source>
+ <translation>&amp;Søg efter:</translation>
+ </message>
+ <message>
+ <location line="+68"/>
+ <source>Open Link</source>
+ <translation>Åbn link</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Open Link in New Tab</source>
+ <translation>Åbn link på ny fane</translation>
+ </message>
+</context>
+<context>
+ <name>InstallDialog</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+75"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
+ <source>Install Documentation</source>
+ <translation>Installér dokumentation</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Downloading documentation info...</source>
+ <translation>Downloader dokumentationsinformation...</translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>Download canceled.</source>
+ <translation>Download blev annulleret.</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <location line="+78"/>
+ <location line="+27"/>
+ <source>Done.</source>
+ <translation>Færdig.</translation>
+ </message>
+ <message>
+ <location line="-90"/>
+ <source>The file %1 already exists. Do you want to overwrite it?</source>
+ <translation>Filen %1 findes allerede. Ønsker du at overskrive?</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Unable to save the file %1: %2.</source>
+ <translation>Kunne ikke gemme filen %1: %2.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Downloading %1...</source>
+ <translation>Downloader %1...</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <location line="+42"/>
+ <location line="+38"/>
+ <source>Download failed: %1.</source>
+ <translation>Download mislykkedes: %1.</translation>
+ </message>
+ <message>
+ <location line="-70"/>
+ <source>Documentation info file is corrupt!</source>
+ <translation>Dokumentationsinformationsfilen er ødelagt!</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>Download failed: Downloaded file is corrupted.</source>
+ <translation>Download mislykkedes: Den downloadede fil er ødelagt.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Installing documentation %1...</source>
+ <translation>Installerer dokumentation %1...</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Error while installing documentation:
+%1</source>
+ <translation>Der opstod fejl under installation af dokumentation:
+%1</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
+ <source>Available Documentation:</source>
+ <translation>Tilgængeligt dokumentation:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Install</source>
+ <translation>Installér</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Installation Path:</source>
+ <translation>Installationssti:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>...</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+108"/>
+ <location line="+354"/>
+ <source>Index</source>
+ <translation>Indeks</translation>
+ </message>
+ <message>
+ <location line="-348"/>
+ <location line="+346"/>
+ <source>Contents</source>
+ <translation>Indhold</translation>
+ </message>
+ <message>
+ <location line="-341"/>
+ <location line="+345"/>
+ <source>Bookmarks</source>
+ <translation>Favoritter</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Search</source>
+ <translation>Søg</translation>
+ </message>
+ <message>
+ <location line="-335"/>
+ <location line="+208"/>
+ <location line="+476"/>
+ <source>Qt Assistant</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-508"/>
+ <location line="+5"/>
+ <source>Unfiltered</source>
+ <translation>Ufiltreret</translation>
+ </message>
+ <message>
+ <location line="+84"/>
+ <source>Page Set&amp;up...</source>
+ <translation>Side&amp;opsætning...</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Print Preview...</source>
+ <translation>Vis udskrift...</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Print...</source>
+ <translation>&amp;Udskriv...</translation>
+ </message>
+ <message>
+ <source>CTRL+P</source>
+ <translation type="obsolete">Ctrl+U</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>New &amp;Tab</source>
+ <translation>&amp;Ny Fane</translation>
+ </message>
+ <message>
+ <source>CTRL+T</source>
+ <translation type="obsolete">Ctrl+N</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Close Tab</source>
+ <translation>&amp;Luk fane</translation>
+ </message>
+ <message>
+ <source>CTRL+W</source>
+ <translation type="obsolete">Ctrl+L</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&amp;Quit</source>
+ <translation>&amp;Afslut</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>CTRL+Q</source>
+ <translation>Ctrl+A</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&amp;Copy selected Text</source>
+ <translation>&amp;Kopiér markeret tekst</translation>
+ </message>
+ <message>
+ <source>Ctrl+C</source>
+ <translation type="obsolete">Ctrl+K</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>&amp;Find in Text...</source>
+ <translation>&amp;Find i tekst...</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Find &amp;Next</source>
+ <translation>Find N&amp;æste</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Find &amp;Previous</source>
+ <translation>Find fo&amp;rrige</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Preferences...</source>
+ <translation>Indstillinger...</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Zoom &amp;in</source>
+ <translation>Zoom &amp;ind</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Zoom &amp;out</source>
+ <translation>Zoom u&amp;d</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Normal &amp;Size</source>
+ <translation>Normal &amp;størrelse</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Ctrl+0</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>ALT+C</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>ALT+I</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>ALT+S</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Home</source>
+ <translation>&amp;Hjem</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ctrl+Home</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Back</source>
+ <translation>&amp;Tilbage</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&amp;Forward</source>
+ <translation>Fr&amp;em</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Sync with Table of Contents</source>
+ <translation>Synkronisér med Indholdsfortegnelse</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Next Page</source>
+ <translation>Næste side</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ctrl+Alt+Right</source>
+ <translation>Ctrl+Alt+Højre</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Previous Page</source>
+ <translation>Forrige side</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ctrl+Alt+Left</source>
+ <translation>Ctrl+Alt+Venstre</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Add Bookmark...</source>
+ <translation>Føj til Favoritter...</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>About...</source>
+ <translation>Om...</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Navigation Toolbar</source>
+ <translation>Navigationsværktøjslinie</translation>
+ </message>
+ <message>
+ <location line="+76"/>
+ <source>Toolbars</source>
+ <translation>Værktøjslinier</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Filter Toolbar</source>
+ <translation>Filtrer værktøjslinie</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Filtered by:</source>
+ <translation>Filtreret efter:</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Address Toolbar</source>
+ <translation>Adresseværktøjslinie</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Address:</source>
+ <translation>Adresse:</translation>
+ </message>
+ <message>
+ <location line="+114"/>
+ <source>Could not find the associated content item.</source>
+ <translation>Det tilhørende indholdselement kunne ikke findes.</translation>
+ </message>
+ <message>
+ <source>This version of Qt Assistant is part of the Qt Open Source Edition, for use in the development of Open Source applications. Qt is a comprehensive C++ framework for cross-platform application development.</source>
+ <translation type="obsolete">Denne version af Qt Assistant er en del af Qt Open Source Edition til brug med henblik på udvikling af Open Source-applikationer. Qt er et omfattende C++ framework for cross-platform applikationsudvikling.</translation>
+ </message>
+ <message>
+ <source>This program is licensed to you under the terms of the Qt Commercial License Agreement. For details, see the file LICENSE that came with this software distribution.</source>
+ <translation type="obsolete">Dette program er omfattet af Qt Commercial License Agreement. Se filen LICENCE, der var vedlagt denne software-distribution, for yderligere detaljer.</translation>
+ </message>
+ <message>
+ <location line="+81"/>
+ <source>About %1</source>
+ <translation>Om %1</translation>
+ </message>
+ <message>
+ <location line="+113"/>
+ <source>Updating search index</source>
+ <translation>Opdaterer søgeindeks</translation>
+ </message>
+ <message>
+ <location line="-601"/>
+ <source>Looking for Qt Documentation...</source>
+ <translation>Søger efter Qt-dokumentation...</translation>
+ </message>
+ <message>
+ <location line="+195"/>
+ <source>&amp;Window</source>
+ <translation>&amp;Vindue</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Minimize</source>
+ <translation>Minimér</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ctrl+M</source>
+ <translation>Ctrl+M</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Zoom</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-136"/>
+ <source>&amp;File</source>
+ <translation>&amp;Filer</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>&amp;Edit</source>
+ <translation>&amp;Redigér</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>&amp;View</source>
+ <translation>&amp;Vis</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>&amp;Go</source>
+ <translation>&amp;Gå til</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>&amp;Bookmarks</source>
+ <translation>F&amp;avoritter</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&amp;Help</source>
+ <translation>&amp;Hjælp</translation>
+ </message>
+ <message>
+ <location line="-37"/>
+ <source>ALT+O</source>
+ <translation>Alt+F</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>CTRL+D</source>
+ <translation>Ctrl+Ø</translation>
+ </message>
+ <message>
+ <source>Ctrl+P</source>
+ <translation type="obsolete">Ctrl+U</translation>
+ </message>
+ <message>
+ <source>Ctrl+T</source>
+ <translation type="obsolete">Ctrl+N</translation>
+ </message>
+ <message>
+ <source>Ctrl+W</source>
+ <translation type="obsolete">Ctrl+L</translation>
+ </message>
+ <message>
+ <source>Ctrl+Q</source>
+ <translation type="obsolete">Ctrl+A</translation>
+ </message>
+ <message>
+ <source>Alt+C</source>
+ <translation type="obsolete">Alt+L</translation>
+ </message>
+ <message>
+ <source>Alt+O</source>
+ <translation type="obsolete">Alt+F</translation>
+ </message>
+ <message>
+ <source>Ctrl+D</source>
+ <translation type="obsolete">Ctrl+Ø</translation>
+ </message>
+</context>
+<context>
+ <name>PreferencesDialog</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+256"/>
+ <location line="+43"/>
+ <source>Add Documentation</source>
+ <translation>Tilføj dokumentation</translation>
+ </message>
+ <message>
+ <location line="-43"/>
+ <source>Qt Compressed Help Files (*.qch)</source>
+ <translation>Qt komprimeret hjælpefil (*.qch)</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>The specified file is not a valid Qt Help File!</source>
+ <translation>Den anførte fil er ikke en gyldig Qt hjælpefil!</translation>
+ </message>
+ <message>
+ <location line="-8"/>
+ <source>The namespace %1 is already registered!</source>
+ <translation>Navnerummet %1 er allerede registreret!</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>Remove Documentation</source>
+ <translation>Fjern dokumentation</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Some documents currently opened in Assistant reference the documentation you are attempting to remove. Removing the documentation will close those documents.</source>
+ <translation>Nogle dokumenter der pt er åbne i Assistant refererer til den dokumentation du prøver at fjerne. Fjernelse af dokumentation vil resultere i lukning af disse dokumenter.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+86"/>
+ <source>Use custom settings</source>
+ <translation>Benyt brugerdefineret opsætning</translation>
+ </message>
+</context>
+<context>
+ <name>PreferencesDialogClass</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.ui"/>
+ <source>Preferences</source>
+ <translation>Indstillinger</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Fonts</source>
+ <translation>Skrifttyper</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Font settings:</source>
+ <translation>Indstillinger for skrifttype:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Browser</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Application</source>
+ <translation>Applikation</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Filters</source>
+ <translation>Filtre</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Filter:</source>
+ <translation>Filter:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Attributes:</source>
+ <translation>Attributter:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>1</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Add</source>
+ <translation>Tilføj</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Remove</source>
+ <translation>Fjern</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Documentation</source>
+ <translation>Dokumentation</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Registered Documentation:</source>
+ <translation>Registreret dokumentation:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Add...</source>
+ <translation>Tilføj...</translation>
+ </message>
+ <message>
+ <source>Network</source>
+ <translation type="obsolete">Netværk</translation>
+ </message>
+ <message>
+ <source>Use Http Proxy</source>
+ <translation type="obsolete">Benyt Http Proxy</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Options</source>
+ <translation>Indstillinger</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Homepage</source>
+ <translation>Hjemmeside</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Current Page</source>
+ <translation>Nuværende side</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Restore to default</source>
+ <translation>Nulstil til default</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+112"/>
+ <source>The specified collection file does not exist!</source>
+ <translation>Den angivne hjælpesamling findes ikke!</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Missing collection file!</source>
+ <translation>Hjælpesamling mangler!</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Invalid URL!</source>
+ <translation>Ugyldig URL!</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Missing URL!</source>
+ <translation>URL mangler!</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <location line="+19"/>
+ <location line="+19"/>
+ <source>Unknown widget: %1</source>
+ <translation>Ukendt widget: %1</translation>
+ </message>
+ <message>
+ <location line="-34"/>
+ <location line="+19"/>
+ <location line="+19"/>
+ <source>Missing widget!</source>
+ <translation>Widget mangler!</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <location line="+12"/>
+ <source>The specified Qt help file does not exist!</source>
+ <translation>Den angivne Qt-hjælpefil findes ikke! </translation>
+ </message>
+ <message>
+ <location line="-7"/>
+ <location line="+12"/>
+ <source>Missing help file!</source>
+ <translation>Hjælpefilen mangler! </translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Missing filter argument!</source>
+ <translation>Manglende filterargument!</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Unknown option: %1</source>
+ <translation>Ukendt parameter: %1 </translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <location line="+2"/>
+ <source>Qt Assistant</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+203"/>
+ <source>Could not register documentation file
+%1
+
+Reason:
+%2</source>
+ <translation>Kunne ikke registrere dokumentationsfil
+%1
+
+Årsag:
+%2</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Documentation successfully registered.</source>
+ <translation>Dokumentationen blev registreret.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Could not unregister documentation file
+%1
+
+Reason:
+%2</source>
+ <translation>Kunne ikke afregistrere dokumentationsfil
+%1
+
+Årsag:
+%2</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Documentation successfully unregistered.</source>
+ <translation>Dokumentationen blev afregistreret.</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>Cannot load sqlite database driver!</source>
+ <translation>Kan ikke indlæse sqlite database-driver!</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>The specified collection file could not be read!</source>
+ <translation>Den angivne hjælpesamling kunne ikke læses!</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+167"/>
+ <location line="+1"/>
+ <source>Bookmark</source>
+ <translation>Favorit</translation>
+ </message>
+</context>
+<context>
+ <name>QtDocInstaller</name>
+ <message>
+ <source>The file %1 could not be registered successfully!
+
+Reason: %2</source>
+ <translation type="obsolete">Filen %1 kunne ikke registreres!
+
+Årsag: %2</translation>
+ </message>
+</context>
+<context>
+ <name>RemoteControl</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+157"/>
+ <source>Debugging Remote Control</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Received Command: %1 %2</source>
+ <translation>Modtaget kommando: %1 %2</translation>
+ </message>
+</context>
+<context>
+ <name>SearchWidget</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+195"/>
+ <source>&amp;Copy</source>
+ <translation>&amp;Kopiér</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Copy &amp;Link Location</source>
+ <translation>Kopiér &amp;linkets placering</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Open Link in New Tab</source>
+ <translation>Åbn link på ny fane</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Select All</source>
+ <translation>Markér alt</translation>
+ </message>
+ <message>
+ <source>Open Link</source>
+ <translation type="obsolete">Åbn link</translation>
+ </message>
+</context>
+<context>
+ <name>TopicChooser</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/>
+ <source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;:</source>
+ <translation>Vælg et emne for &lt;b&gt;%1&lt;/b&gt;:</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.ui"/>
+ <source>Choose Topic</source>
+ <translation>Vælg emne</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Topics</source>
+ <translation>&amp;Emner</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Display</source>
+ <translation>&amp;Vis</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Close</source>
+ <translation>&amp;Luk</translation>
+ </message>
+ <message>
+ <source>TopicChooser</source>
+ <translation type="obsolete">Emnevælger</translation>
+ </message>
+ <message>
+ <source>unnamed</source>
+ <translation type="obsolete">unavngivet</translation>
+ </message>
+</context>
+</TS>
diff --git a/translations/qt_da.ts b/translations/qt_da.ts
new file mode 100644
index 0000000..105b572
--- /dev/null
+++ b/translations/qt_da.ts
@@ -0,0 +1,7745 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="da_DK">
+<context>
+ <name>AudioOutput</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+375"/>
+ <source>&lt;html&gt;The audio playback device &lt;b&gt;%1&lt;/b&gt; does not work.&lt;br/&gt;Falling back to &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</source>
+ <translation>&lt;html&gt;Audio-playback-enheden&lt;b&gt;%1&lt;/b&gt; virker ikke.&lt;br/&gt;Falder tilbage til &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>&lt;html&gt;Switching to the audio playback device &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;which just became available and has higher preference.&lt;/html&gt;</source>
+ <translation>&lt;html&gt;Skifter til audio-playback-enheden, &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;der lige er blevet tilgængelig og har en højere præference.&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Revert back to device &apos;%1&apos;</source>
+ <translation>Gå tilbage til enheden &apos;%1&apos;</translation>
+ </message>
+</context>
+<context>
+ <name>CloseButton</name>
+ <message>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2252"/>
+ <source>Close Tab</source>
+ <translation>Luk fane</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/phonon/phononnamespace.cpp" line="+55"/>
+ <source>Notifications</source>
+ <translation>Meddelelser</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Music</source>
+ <translation>Musik</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Video</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Communication</source>
+ <translation>Kommunikation</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Games</source>
+ <translation>Spil</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Accessibility</source>
+ <translation>Tilgængelighed</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::Gstreamer::Backend</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+171"/>
+ <source>Warning: You do not seem to have the package gstreamer0.10-plugins-good installed.
+ Some video features have been disabled.</source>
+ <translation>Advarsel: Det ser ikke ud til, at gstreamer0.10-plugins-good pakken er installeret.
+ Nogle videofunktioner er deaktiveret.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Warning: You do not seem to have the base GStreamer plugins installed.
+ All audio and video support has been disabled</source>
+ <translation>Advarsel: Det ser ikke ud til, at base GStreamer plugins er installeret.
+ Al audio- og videosupport er deaktiveret</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::Gstreamer::MediaObject</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
+ <source>Cannot start playback.
+
+Check your Gstreamer installation and make sure you
+have libgstreamer-plugins-base installed.</source>
+ <translation>Kan ikke starte playback.
+
+Tjek Gstreamer-installationen og kontrollér, at
+libgstreamer-plugins-base er installeret.</translation>
+ </message>
+ <message>
+ <location line="+113"/>
+ <source>A required codec is missing. You need to install the following codec(s) to play this content: %0</source>
+ <translation>Der mangler et codec. Følgende codecs skal installeres for at afspille dette indhold: %0</translation>
+ </message>
+ <message>
+ <location line="+676"/>
+ <location line="+8"/>
+ <location line="+15"/>
+ <location line="+9"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+335"/>
+ <location line="+24"/>
+ <source>Could not open media source.</source>
+ <translation>Kunne ikke åbne mediekilden.</translation>
+ </message>
+ <message>
+ <location line="-403"/>
+ <source>Invalid source type.</source>
+ <translation>Ugyldig kilde.</translation>
+ </message>
+ <message>
+ <location line="+377"/>
+ <source>Could not locate media source.</source>
+ <translation>Kunne ikke lokalisere mediekilden.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Could not open audio device. The device is already in use.</source>
+ <translation>Kunne ikke åbne lydenheden. Enheden er allerede i brug.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Could not decode media source.</source>
+ <translation>Kunne ikke afkode mediekilden.</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::VolumeSlider</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/phonon/volumeslider.cpp" line="+42"/>
+ <location line="+18"/>
+ <source>Volume: %1%</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-15"/>
+ <location line="+18"/>
+ <location line="+54"/>
+ <source>Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1%</source>
+ <translation>Anvend denne skyder til at indstille lydstyrken. Længst til venstre er 0% og længst til højre er %1%</translation>
+ </message>
+</context>
+<context>
+ <name>Q3Accel</name>
+ <message>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
+ <source>%1, %2 not defined</source>
+ <translation>%1, %2 ikke definerede</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Ambiguous %1 not handled</source>
+ <translation>Tvetydig %1 ikke behandlet</translation>
+ </message>
+</context>
+<context>
+ <name>Q3DataTable</name>
+ <message>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
+ <source>True</source>
+ <translation>Sandt</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>False</source>
+ <translation>Falsk</translation>
+ </message>
+ <message>
+ <location line="+505"/>
+ <source>Insert</source>
+ <translation>Indsæt</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Update</source>
+ <translation>Opdater</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Delete</source>
+ <translation>Slet</translation>
+ </message>
+</context>
+<context>
+ <name>Q3FileDialog</name>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+865"/>
+ <source>Copy or Move a File</source>
+ <translation>Kopiér eller flyt en fil</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Read: %1</source>
+ <translation>Læs: %1</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+30"/>
+ <source>Write: %1</source>
+ <translation>Skriv: %1</translation>
+ </message>
+ <message>
+ <location line="-22"/>
+ <location line="+1579"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+ <message>
+ <location line="-157"/>
+ <location line="+49"/>
+ <location line="+2153"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+110"/>
+ <source>All Files (*)</source>
+ <translation>Alle filer (*)</translation>
+ </message>
+ <message>
+ <location line="-2089"/>
+ <source>Name</source>
+ <translation>Navn</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Size</source>
+ <translation>Størrelse</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Type</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Date</source>
+ <translation>Dato</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Attributes</source>
+ <translation>Attributter</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <location line="+2031"/>
+ <source>&amp;OK</source>
+ <translation>&amp;OK</translation>
+ </message>
+ <message>
+ <location line="-1991"/>
+ <source>Look &amp;in:</source>
+ <translation>Kig &amp;i:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <location line="+1981"/>
+ <location line="+16"/>
+ <source>File &amp;name:</source>
+ <translation>Fil&amp;navn:</translation>
+ </message>
+ <message>
+ <location line="-1996"/>
+ <source>File &amp;type:</source>
+ <translation>Fil&amp;type:</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Back</source>
+ <translation>Tilbage</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>One directory up</source>
+ <translation>En mappe op</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Create New Folder</source>
+ <translation>Opret ny folder</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>List View</source>
+ <translation>Listevisning</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Detail View</source>
+ <translation>Detaljevisning</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Preview File Info</source>
+ <translation>Vis filinformation</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Preview File Contents</source>
+ <translation>Vis filindhold</translation>
+ </message>
+ <message>
+ <location line="+88"/>
+ <source>Read-write</source>
+ <translation>Læs-skriv</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Read-only</source>
+ <translation>Skrivebeskyttet</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Write-only</source>
+ <translation>Write-only</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Inaccessible</source>
+ <translation>Utilgængelig</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Symlink to File</source>
+ <translation>Symlink til Fil</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Symlink to Directory</source>
+ <translation>Symlink til katalog</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Symlink to Special</source>
+ <translation>Symlink til Speciel</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>File</source>
+ <translation>Fil</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Dir</source>
+ <translation>Katalog</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Special</source>
+ <translation>Speciel</translation>
+ </message>
+ <message>
+ <location line="+704"/>
+ <location line="+2100"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+337"/>
+ <source>Open</source>
+ <translation>Åbn</translation>
+ </message>
+ <message>
+ <location line="-1990"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+84"/>
+ <source>Save As</source>
+ <translation>Gem som</translation>
+ </message>
+ <message>
+ <location line="+642"/>
+ <location line="+5"/>
+ <location line="+355"/>
+ <source>&amp;Open</source>
+ <translation>&amp;Åbn</translation>
+ </message>
+ <message>
+ <location line="-357"/>
+ <location line="+341"/>
+ <source>&amp;Save</source>
+ <translation>&amp;Gem</translation>
+ </message>
+ <message>
+ <location line="-334"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;Omdøb</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Delete</source>
+ <translation>&amp;Slet</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>R&amp;eload</source>
+ <translation>Gen&amp;indlæs</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Sort by &amp;Name</source>
+ <translation>Sortér efter n&amp;avn</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Sort by &amp;Size</source>
+ <translation>Sortér efter s&amp;tørrelse</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Sort by &amp;Date</source>
+ <translation>Sortér efter &amp;dato</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&amp;Unsorted</source>
+ <translation>&amp;Usorteret</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Sort</source>
+ <translation>Sortér</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Show &amp;hidden files</source>
+ <translation>Vis s&amp;kjulte filer</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>the file</source>
+ <translation>filen</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>the directory</source>
+ <translation>kataloget</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>the symlink</source>
+ <translation>symlinket</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Delete %1</source>
+ <translation>Slet %1</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&lt;qt&gt;Are you sure you wish to delete %1 &quot;%2&quot;?&lt;/qt&gt;</source>
+ <translation>&lt;qt&gt;Er du sikker på, at du vil slette %1 &quot;%2&quot;?&lt;/qt&gt;</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&amp;Yes</source>
+ <translation>&amp;Ja</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>&amp;No</source>
+ <translation>&amp;Nej</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>New Folder 1</source>
+ <translation>Ny folder 1</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>New Folder</source>
+ <translation>Ny folder</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>New Folder %1</source>
+ <translation>Ny folder %1</translation>
+ </message>
+ <message>
+ <location line="+98"/>
+ <source>Find Directory</source>
+ <translation>Find katalog</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <location line="+108"/>
+ <source>Directories</source>
+ <translation>Kataloger</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Directory:</source>
+ <translation>Katalog:</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <location line="+1110"/>
+ <source>Error</source>
+ <translation>Fejl</translation>
+ </message>
+ <message>
+ <location line="-1109"/>
+ <source>%1
+File not found.
+Check path and filename.</source>
+ <translation>%1
+Filen blev ikke fundet.
+Kontrollér sti og filnavn.</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="-289"/>
+ <source>All Files (*.*)</source>
+ <translation>Alle filer (*.*)</translation>
+ </message>
+ <message>
+ <location line="+375"/>
+ <source>Open </source>
+ <translation>Åbn</translation>
+ </message>
+ <message>
+ <location line="+155"/>
+ <source>Select a Directory</source>
+ <translation>Vælg et katalog</translation>
+ </message>
+</context>
+<context>
+ <name>Q3LocalFs</name>
+ <message>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+130"/>
+ <location line="+10"/>
+ <source>Could not read directory
+%1</source>
+ <translation>Kunne ikke læse katalog
+%1</translation>
+ </message>
+ <message>
+ <location line="+45"/>
+ <source>Could not create directory
+%1</source>
+ <translation>Kunne ikke oprette katalog
+%1</translation>
+ </message>
+ <message>
+ <location line="+34"/>
+ <source>Could not remove file or directory
+%1</source>
+ <translation>Kunne ikke fjerne fil eller katalog
+%1</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Could not rename
+%1
+to
+%2</source>
+ <translation>Kunne ikke omdøbe
+%1
+to
+%2</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Could not open
+%1</source>
+ <translation>Kunne ikke åbne
+%1</translation>
+ </message>
+ <message>
+ <location line="+68"/>
+ <source>Could not write
+%1</source>
+ <translation>Kunne ikke skrive
+%1</translation>
+ </message>
+</context>
+<context>
+ <name>Q3MainWindow</name>
+ <message>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
+ <source>Line up</source>
+ <translation>Linie op</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Customize...</source>
+ <translation>Tilpas...</translation>
+ </message>
+</context>
+<context>
+ <name>Q3NetworkProtocol</name>
+ <message>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
+ <source>Operation stopped by the user</source>
+ <translation>Brugeren stoppede handlingen</translation>
+ </message>
+</context>
+<context>
+ <name>Q3ProgressDialog</name>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
+ <location line="+61"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+</context>
+<context>
+ <name>Q3TabDialog</name>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+189"/>
+ <location line="+814"/>
+ <source>OK</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-356"/>
+ <source>Apply</source>
+ <translation>Udfør</translation>
+ </message>
+ <message>
+ <location line="+43"/>
+ <source>Help</source>
+ <translation>Hjælp</translation>
+ </message>
+ <message>
+ <location line="+45"/>
+ <source>Defaults</source>
+ <translation>Standarder</translation>
+ </message>
+ <message>
+ <location line="+50"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+</context>
+<context>
+ <name>Q3TextEdit</name>
+ <message>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5429"/>
+ <source>&amp;Undo</source>
+ <translation>&amp;Fortryd</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Redo</source>
+ <translation>&amp;Gendan</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Cu&amp;t</source>
+ <translation>&amp;Klip</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Copy</source>
+ <translation>K&amp;opiér</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&amp;Paste</source>
+ <translation>&amp;Sæt ind</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Clear</source>
+ <translation>Ryd</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location line="+2"/>
+ <source>Select All</source>
+ <translation>Markér alt</translation>
+ </message>
+</context>
+<context>
+ <name>Q3TitleBar</name>
+ <message>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+246"/>
+ <source>System</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Restore up</source>
+ <translation>Gendan op</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Minimize</source>
+ <translation>Minimer</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Restore down</source>
+ <translation>Gendan ned</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Maximize</source>
+ <translation>Maksimér</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Contains commands to manipulate the window</source>
+ <translation>Indeholder kommandoer til indstilling af vinduet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Puts a minimized back to normal</source>
+ <translation>Sætter et minimeret vindue til normal størrelse</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Moves the window out of the way</source>
+ <translation>Flytter vinduet væk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Puts a maximized window back to normal</source>
+ <translation>Sætter et maksimeret vindue til normal størrelse</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Makes the window full screen</source>
+ <translation>Gør vinduet til fuld skærm</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Closes the window</source>
+ <translation>Lukker vinduet</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Displays the name of the window and contains controls to manipulate it</source>
+ <translation>Viser vinduets navn og indeholder kontroller til indstilling af vinduet</translation>
+ </message>
+</context>
+<context>
+ <name>Q3ToolBar</name>
+ <message>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
+ <source>More...</source>
+ <translation>Mere...</translation>
+ </message>
+</context>
+<context>
+ <name>Q3UrlOperator</name>
+ <message>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+386"/>
+ <location line="+260"/>
+ <location line="+4"/>
+ <source>The protocol `%1&apos; is not supported</source>
+ <translation>Protokollen &apos;%1&apos; understøttes ikke</translation>
+ </message>
+ <message>
+ <location line="-260"/>
+ <source>The protocol `%1&apos; does not support listing directories</source>
+ <translation>Protokollen &apos;%1&apos; understøtter ikke opremsning af kataloger</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The protocol `%1&apos; does not support creating new directories</source>
+ <translation>Protokollen &apos;%1&apos; understøtter ikke oprettelse af nye kataloger</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The protocol `%1&apos; does not support removing files or directories</source>
+ <translation>Protokollen &apos;%1&apos; understøtter ikke, at filer eller kataloger fjernes</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The protocol `%1&apos; does not support renaming files or directories</source>
+ <translation>Protokollen &apos;%1&apos; understøtter ikke, at filer eller kataloger omdøbes</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The protocol `%1&apos; does not support getting files</source>
+ <translation>Protokollen &apos;%1&apos; understøtter ikke hentning af filer</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The protocol `%1&apos; does not support putting files</source>
+ <translation>Protokollen &apos;%1&apos; understøtter ikke upload af filer</translation>
+ </message>
+ <message>
+ <location line="+243"/>
+ <location line="+4"/>
+ <source>The protocol `%1&apos; does not support copying or moving files or directories</source>
+ <translation>Protokollen &apos;%1&apos; understøtter ikke kopiering eller flytning af filer eller kataloger</translation>
+ </message>
+ <message>
+ <location line="+237"/>
+ <location line="+1"/>
+ <source>(unknown)</source>
+ <translation>(ukendt)</translation>
+ </message>
+</context>
+<context>
+ <name>Q3Wizard</name>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+177"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annuller</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&lt; &amp;Back</source>
+ <translation>&lt; &amp;Tilbage</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Next &gt;</source>
+ <translation>&amp;Næste &gt;</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Finish</source>
+ <translation>&amp;Udfør</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Help</source>
+ <translation>&amp;Hjælp</translation>
+ </message>
+</context>
+<context>
+ <name>QAbstractSocket</name>
+ <message>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+868"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+615"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+657"/>
+ <location line="+26"/>
+ <source>Host not found</source>
+ <translation>Host blev ikke fundet</translation>
+ </message>
+ <message>
+ <location line="+50"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+3"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+4"/>
+ <source>Connection refused</source>
+ <translation>Forbindelse afvist</translation>
+ </message>
+ <message>
+ <location line="+141"/>
+ <source>Connection timed out</source>
+ <translation>Forbindelsen timed out</translation>
+ </message>
+ <message>
+ <location line="-547"/>
+ <location line="+787"/>
+ <location line="+208"/>
+ <source>Operation on socket is not supported</source>
+ <translation>Socket-operation ikke understøttet</translation>
+ </message>
+ <message>
+ <location line="+137"/>
+ <source>Socket operation timed out</source>
+ <translation>Socket-operation timed out</translation>
+ </message>
+ <message>
+ <location line="+380"/>
+ <source>Socket is not connected</source>
+ <translation>Socket ikke forbundet</translation>
+ </message>
+ <message>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="-8"/>
+ <source>Network unreachable</source>
+ <translation>Netværket er ikke tilgængeligt</translation>
+ </message>
+</context>
+<context>
+ <name>QAbstractSpinBox</name>
+ <message>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1199"/>
+ <source>&amp;Step up</source>
+ <translation>&amp;Trin op</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Step &amp;down</source>
+ <translation>Trin &amp;ned</translation>
+ </message>
+ <message>
+ <location line="-8"/>
+ <source>&amp;Select All</source>
+ <translation>&amp;Vælg alle</translation>
+ </message>
+</context>
+<context>
+ <name>QApplication</name>
+ <message>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+376"/>
+ <source>Activate</source>
+ <translation>Aktivér</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+352"/>
+ <source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
+ <translation>Eksekverbar &apos;%1&apos; kræver Qt %2, ikke fundet Qt %3.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Incompatible Qt Library Error</source>
+ <translation>Inkompatibel Qt Library fejl</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2247"/>
+ <source>QT_LAYOUT_DIRECTION</source>
+ <comment>Translate this string to the string &apos;LTR&apos; in left-to-right languages or to &apos;RTL&apos; in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</comment>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+2"/>
+ <source>Activates the program&apos;s main window</source>
+ <translation>Aktiverer programmets hovedvindue</translation>
+ </message>
+</context>
+<context>
+ <name>QAxSelect</name>
+ <message>
+ <location filename="../src/activeqt/container/qaxselect.ui"/>
+ <source>Select ActiveX Control</source>
+ <translation>Vælg ActiveX-kontrol</translation>
+ </message>
+ <message>
+ <location/>
+ <source>OK</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annuller</translation>
+ </message>
+ <message>
+ <location/>
+ <source>COM &amp;Object:</source>
+ <translation>COM &amp;Objekt:</translation>
+ </message>
+</context>
+<context>
+ <name>QCheckBox</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+114"/>
+ <source>Uncheck</source>
+ <translation>Fjern markering</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Check</source>
+ <translation>Kryds af</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Toggle</source>
+ <translation>Slå til/fra</translation>
+ </message>
+</context>
+<context>
+ <name>QColorDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1253"/>
+ <source>Hu&amp;e:</source>
+ <translation>Ton&amp;e:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Sat:</source>
+ <translation>&amp;Mæt:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Val:</source>
+ <translation>&amp;Vær:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Red:</source>
+ <translation>&amp;Rød:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Green:</source>
+ <translation>&amp;Grøn:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Bl&amp;ue:</source>
+ <translation>Bl&amp;å:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A&amp;lpha channel:</source>
+ <translation>Al&amp;fa-kanal:</translation>
+ </message>
+ <message>
+ <location line="+101"/>
+ <source>Select Color</source>
+ <translation>Vælg farve</translation>
+ </message>
+ <message>
+ <location line="+137"/>
+ <source>&amp;Basic colors</source>
+ <translation>&amp;Basisfarver</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Custom colors</source>
+ <translation>&amp;Egne farver</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Add to Custom Colors</source>
+ <translation>&amp;Føj til egne farver</translation>
+ </message>
+</context>
+<context>
+ <name>QComboBox</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
+ <location line="+65"/>
+ <source>Open</source>
+ <translation>Åbn</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+544"/>
+ <source>False</source>
+ <translation>Falsk</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>True</source>
+ <translation>Sandt</translation>
+ </message>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+0"/>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+</context>
+<context>
+ <name>QCoreApplication</name>
+ <message>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
+ <source>%1: key is empty</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: nøgle er tom</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>%1: unable to make key</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: kunne ikke lave nøgle</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>%1: ftok failed</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: ftok mislykkedes</translation>
+ </message>
+</context>
+<context>
+ <name>QDB2Driver</name>
+ <message>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1276"/>
+ <source>Unable to connect</source>
+ <translation>Kunne ikke skabe forbindelse</translation>
+ </message>
+ <message>
+ <location line="+303"/>
+ <source>Unable to commit transaction</source>
+ <translation>Kunne ikke gennemføre transaktion</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Kunne ikke tilbagetrække transaktion</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Unable to set autocommit</source>
+ <translation>Kunne ikke aktivere autocommit</translation>
+ </message>
+</context>
+<context>
+ <name>QDB2Result</name>
+ <message>
+ <location line="-1043"/>
+ <location line="+243"/>
+ <source>Unable to execute statement</source>
+ <translation>Kunne ikke udføre statement</translation>
+ </message>
+ <message>
+ <location line="-206"/>
+ <source>Unable to prepare statement</source>
+ <translation>Kunne ikke forberede udsagn</translation>
+ </message>
+ <message>
+ <location line="+196"/>
+ <source>Unable to bind variable</source>
+ <translation>Kunne ikke binde variabel</translation>
+ </message>
+ <message>
+ <location line="+92"/>
+ <source>Unable to fetch record %1</source>
+ <translation>Kunne ikke hente post %1</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Unable to fetch next</source>
+ <translation>Kunne ikke hente næste</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Unable to fetch first</source>
+ <translation>Kunne ikke hente første</translation>
+ </message>
+</context>
+<context>
+ <name>QDateTimeEdit</name>
+ <message>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2295"/>
+ <source>AM</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>am</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>PM</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>pm</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>QDial</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
+ <source>QDial</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>SpeedoMeter</source>
+ <translation>Speedometer</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>SliderHandle</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>QDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+597"/>
+ <source>What&apos;s This?</source>
+ <translation>Hvad er dette?</translation>
+ </message>
+ <message>
+ <location line="-115"/>
+ <source>Done</source>
+ <translation>Udført</translation>
+ </message>
+</context>
+<context>
+ <name>QDialogButtonBox</name>
+ <message>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1869"/>
+ <location line="+464"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+561"/>
+ <source>OK</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+0"/>
+ <source>&amp;OK</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Save</source>
+ <translation>&amp;Gem</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Save</source>
+ <translation>Gem</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Open</source>
+ <translation>Åbn</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annuller</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Close</source>
+ <translation>&amp;Luk</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Apply</source>
+ <translation>Udfør</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Reset</source>
+ <translation>Nulstil</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Help</source>
+ <translation>Hjælp</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Don&apos;t Save</source>
+ <translation>Gem ikke</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Discard</source>
+ <translation>Kassér</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Yes</source>
+ <translation>&amp;Ja</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Yes to &amp;All</source>
+ <translation>Ja til &amp;alle</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;No</source>
+ <translation>&amp;Nej</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>N&amp;o to All</source>
+ <translation>Ne&amp;j til alle</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Save All</source>
+ <translation>Gem alle</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Abort</source>
+ <translation>Afbryd</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Retry</source>
+ <translation>Prøv igen</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Ignore</source>
+ <translation>Ignorer</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Restore Defaults</source>
+ <translation>Gendan standardværdier</translation>
+ </message>
+ <message>
+ <location line="-29"/>
+ <source>Close without Saving</source>
+ <translation>Luk uden at gemme</translation>
+ </message>
+</context>
+<context>
+ <name>QDirModel</name>
+ <message>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+453"/>
+ <source>Name</source>
+ <translation>Navn</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Size</source>
+ <translation>Størrelse</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Kind</source>
+ <comment>Match OS X Finder</comment>
+ <translation>Type</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Type</source>
+ <comment>All other platforms</comment>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Date Modified</source>
+ <translation>Ændringsdato</translation>
+ </message>
+</context>
+<context>
+ <name>QDockWidget</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1239"/>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Dock</source>
+ <translation>Låst</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Float</source>
+ <translation>Flydende</translation>
+ </message>
+</context>
+<context>
+ <name>QDoubleSpinBox</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-537"/>
+ <source>More</source>
+ <translation>Mere</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Less</source>
+ <translation>Mindre</translation>
+ </message>
+</context>
+<context>
+ <name>QErrorMessage</name>
+ <message>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+192"/>
+ <source>Debug Message:</source>
+ <translation>Debug-besked:</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Warning:</source>
+ <translation>Advarsel:</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Fatal Error:</source>
+ <translation>Fatal fejl:</translation>
+ </message>
+ <message>
+ <location line="+193"/>
+ <source>&amp;Show this message again</source>
+ <translation>&amp;Vis denne besked igen</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;OK</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>QFile</name>
+ <message>
+ <location filename="../src/corelib/io/qfile.cpp" line="+708"/>
+ <location line="+141"/>
+ <source>Destination file exists</source>
+ <translation>Destinationsfil findes</translation>
+ </message>
+ <message>
+ <location line="-108"/>
+ <source>Cannot remove source file</source>
+ <translation>Kan ikke fjerne kildefil</translation>
+ </message>
+ <message>
+ <location line="+120"/>
+ <source>Cannot open %1 for input</source>
+ <translation>Kan ikke åbne %1 til input</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Cannot open for output</source>
+ <translation>Kan ikke åbne til output</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Failure to write block</source>
+ <translation>Kunne ikke skrive blok</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Cannot create %1 for output</source>
+ <translation>Kunne ikke oprette %1 til output</translation>
+ </message>
+</context>
+<context>
+ <name>QFileDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+514"/>
+ <location line="+447"/>
+ <source>All Files (*)</source>
+ <translation>Alle filer (*)</translation>
+ </message>
+ <message>
+ <location line="+222"/>
+ <source>Directories</source>
+ <translation>Kataloger</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <location line="+50"/>
+ <location line="+1467"/>
+ <location line="+75"/>
+ <source>&amp;Open</source>
+ <translation>&amp;Åbn</translation>
+ </message>
+ <message>
+ <location line="-1592"/>
+ <location line="+50"/>
+ <source>&amp;Save</source>
+ <translation>&amp;Gem</translation>
+ </message>
+ <message>
+ <location line="-733"/>
+ <source>Open</source>
+ <translation>Åbn</translation>
+ </message>
+ <message>
+ <location line="+1515"/>
+ <source>%1 already exists.
+Do you want to replace it?</source>
+ <translation>%1 findes allerede.
+Ønsker du at erstatte den?</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>%1
+File not found.
+Please verify the correct file name was given.</source>
+ <translation>%1
+Filen kunne ikke findes.
+Kontrollér, at det rigtige filnavn er indtastet.</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+402"/>
+ <source>My Computer</source>
+ <translation>Min computer</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1504"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;Omdøb</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Delete</source>
+ <translation>&amp;Slet</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Show &amp;hidden files</source>
+ <translation>Vis s&amp;kjulte filer</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+ <source>Back</source>
+ <translation>Tilbage</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+ <source>Parent Directory</source>
+ <translation>Ovenliggende katalog</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+ <source>List View</source>
+ <translation>Listevisning</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+ <source>Detail View</source>
+ <translation>Detaljevisning</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+ <source>Files of type:</source>
+ <translation>Filer af typen:</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+6"/>
+ <location line="+651"/>
+ <source>Directory:</source>
+ <translation>Katalog:</translation>
+ </message>
+ <message>
+ <location line="+791"/>
+ <location line="+861"/>
+ <source>%1
+Directory not found.
+Please verify the correct directory name was given.</source>
+ <translation>%1
+Katalog kunne ikke findes.
+Kontrollér, at det rigtige katalognavn er indtastet.</translation>
+ </message>
+ <message>
+ <location line="-218"/>
+ <source>&apos;%1&apos; is write protected.
+Do you want to delete it anyway?</source>
+ <translation>&apos;%1&apos; er skrivebeskyttet.
+Ønsker du alligevel at slette?</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Are sure you want to delete &apos;%1&apos;?</source>
+ <translation>Er du sikker på, at &apos;%1&apos; skal slettes?</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Could not delete directory.</source>
+ <translation>Kunne ikke slette kataloget.</translation>
+ </message>
+ <message>
+ <location line="+407"/>
+ <source>Recent Places</source>
+ <translation>Aktuelle steder</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+160"/>
+ <source>All Files (*.*)</source>
+ <translation>Alle filer (*.*)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2549"/>
+ <source>Save As</source>
+ <translation>Gem som</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+411"/>
+ <source>Drive</source>
+ <translation>Drev</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location line="+1"/>
+ <source>File</source>
+ <translation>Fil</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Unknown</source>
+ <translation>Ukendt</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-4"/>
+ <source>Find Directory</source>
+ <translation>Find katalog</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Show </source>
+ <translation>Vis</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+ <source>Forward</source>
+ <translation>Frem</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1969"/>
+ <source>New Folder</source>
+ <translation>Ny folder</translation>
+ </message>
+ <message>
+ <location line="-1962"/>
+ <source>&amp;New Folder</source>
+ <translation>&amp;Ny folder</translation>
+ </message>
+ <message>
+ <location line="+659"/>
+ <location line="+38"/>
+ <source>&amp;Choose</source>
+ <translation>&amp;Vælg</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+437"/>
+ <source>Remove</source>
+ <translation>Fjern</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-690"/>
+ <location line="+655"/>
+ <source>File &amp;name:</source>
+ <translation>&amp;Filnavn:</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+ <source>Look in:</source>
+ <translation>Søg i:</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_wince.ui"/>
+ <source>Create New Folder</source>
+ <translation>Opret ny folder</translation>
+ </message>
+</context>
+<context>
+ <name>QFileSystemModel</name>
+ <message>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+828"/>
+ <source>Invalid filename</source>
+ <translation>Ugyldigt filnavn</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&lt;b&gt;The name &quot;%1&quot; can not be used.&lt;/b&gt;&lt;p&gt;Try using another name, with fewer characters or no punctuations marks.</source>
+ <translation>&lt;b&gt;Navnet, %1, kan ikke benyttes.&lt;/b&gt;&lt;p&gt;Brug et andet navn med færre tegn og ingen kommatering.</translation>
+ </message>
+ <message>
+ <location line="+63"/>
+ <source>Name</source>
+ <translation>Navn</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Size</source>
+ <translation>Størrelse</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Kind</source>
+ <comment>Match OS X Finder</comment>
+ <translation>Type</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Type</source>
+ <comment>All other platforms</comment>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Date Modified</source>
+ <translation>Ændringsdato</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+242"/>
+ <source>My Computer</source>
+ <translation>Min computer</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Computer</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="-163"/>
+ <source>%1 TB</source>
+ <translation>%1 TB</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>%1 GB</source>
+ <translation>%1 GB</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>%1 MB</source>
+ <translation>%1 MB</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>%1 KB</source>
+ <translation>%1 KB&apos;</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>%1 bytes</source>
+ <translation>%1 bytes</translation>
+ </message>
+</context>
+<context>
+ <name>QFontDatabase</name>
+ <message>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+90"/>
+ <location line="+1176"/>
+ <source>Normal</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-1173"/>
+ <location line="+12"/>
+ <location line="+1149"/>
+ <source>Bold</source>
+ <translation>Fed</translation>
+ </message>
+ <message>
+ <location line="-1158"/>
+ <location line="+1160"/>
+ <source>Demi Bold</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-1157"/>
+ <location line="+18"/>
+ <location line="+1135"/>
+ <source>Black</source>
+ <translation>Sort</translation>
+ </message>
+ <message>
+ <location line="-1145"/>
+ <source>Demi</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+1145"/>
+ <source>Light</source>
+ <translation>Lys</translation>
+ </message>
+ <message>
+ <location line="-1004"/>
+ <location line="+1007"/>
+ <source>Italic</source>
+ <translation>Kursiv</translation>
+ </message>
+ <message>
+ <location line="-1004"/>
+ <location line="+1006"/>
+ <source>Oblique</source>
+ <translation>Skråt</translation>
+ </message>
+ <message>
+ <location line="+705"/>
+ <source>Any</source>
+ <translation>Alle</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Latin</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Greek</source>
+ <translation>Græsk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cyrillic</source>
+ <translation>Kyrillisk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Armenian</source>
+ <translation>Armensk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Hebrew</source>
+ <translation>Hebræisk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Arabic</source>
+ <translation>Arabisk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Syriac</source>
+ <translation>Syrisk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Thaana</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Devanagari</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Bengali</source>
+ <translation>Bengalsk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Gurmukhi</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Gujarati</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Oriya</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Tamil</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Telugu</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Kannada</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Malayalam</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Sinhala</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Thai</source>
+ <translation>Thailandsk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Lao</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Tibetan</source>
+ <translation>Tibetansk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Myanmar</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Georgian</source>
+ <translation>georgisk </translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Khmer</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Simplified Chinese</source>
+ <translation>Forenklet kinesisk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Traditional Chinese</source>
+ <translation>Traditionelt kinesisk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Japanese</source>
+ <translation>Japansk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Korean</source>
+ <translation>Koreansk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Vietnamese</source>
+ <translation>Vietnamesisk</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Symbol</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Ogham</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Runic</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>QFontDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+772"/>
+ <source>&amp;Font</source>
+ <translation>S&amp;krifttype</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Font st&amp;yle</source>
+ <translation>S&amp;til</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Size</source>
+ <translation>&amp;Størrelse</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Effects</source>
+ <translation>Effekter</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Stri&amp;keout</source>
+ <translation>&amp;Overstreget</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Underline</source>
+ <translation>&amp;Understreg</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Sample</source>
+ <translation>Eksempel</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Wr&amp;iting System</source>
+ <translation>Skr&amp;ivesystem</translation>
+ </message>
+ <message>
+ <location line="-604"/>
+ <location line="+247"/>
+ <source>Select Font</source>
+ <translation>Vælg skrifttype</translation>
+ </message>
+</context>
+<context>
+ <name>QFtp</name>
+ <message>
+ <location filename="../src/network/access/qftp.cpp" line="+826"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+683"/>
+ <source>Not connected</source>
+ <translation>Ingen forbindelse</translation>
+ </message>
+ <message>
+ <location line="+65"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+65"/>
+ <source>Host %1 not found</source>
+ <translation>Vært %1 ikke fundet</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+4"/>
+ <source>Connection refused to host %1</source>
+ <translation>Forbindelse til vært %1 afvist</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Connection timed out to host %1</source>
+ <translation>Forbindelsen timed out til host %1</translation>
+ </message>
+ <message>
+ <location line="+104"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+102"/>
+ <location line="+1451"/>
+ <source>Connected to host %1</source>
+ <translation>Tilsluttet vært %1</translation>
+ </message>
+ <message>
+ <location line="+219"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-1290"/>
+ <source>Connection refused for data connection</source>
+ <translation>Dataforbindelse afvist</translation>
+ </message>
+ <message>
+ <location line="+178"/>
+ <location line="+29"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+195"/>
+ <location line="+728"/>
+ <source>Unknown error</source>
+ <translation>Ukendt fejl</translation>
+ </message>
+ <message>
+ <location line="+889"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+77"/>
+ <source>Connecting to host failed:
+%1</source>
+ <translation>Forbindelse til vært mislykkedes:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Login failed:
+%1</source>
+ <translation>Login mislykkedes:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Listing directory failed:
+%1</source>
+ <translation>Opremsning af katalogindhold mislykkedes:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Changing directory failed:
+%1</source>
+ <translation>Ændring af katalog mislykkedes:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Downloading file failed:
+%1</source>
+ <translation>Downloading af fil mislykkedes:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Uploading file failed:
+%1</source>
+ <translation>Uploading af fil mislykkedes:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Removing file failed:
+%1</source>
+ <translation>Det mislykkedes at fjerne fil:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Creating directory failed:
+%1</source>
+ <translation>Oprettelse af katalog mislykkedes:
+%1</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+3"/>
+ <source>Removing directory failed:
+%1</source>
+ <translation>Det mislykkedes at fjerne katalog:
+%1</translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+25"/>
+ <location line="+250"/>
+ <source>Connection closed</source>
+ <translation>Forbindelse lukket</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-11"/>
+ <source>Host %1 found</source>
+ <translation>Vært %1 fundet</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Connection to %1 closed</source>
+ <translation>Forbindelse til %1 lukket</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Host found</source>
+ <translation>Vært fundet</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Connected to host</source>
+ <translation>Tilsluttet vært</translation>
+ </message>
+</context>
+<context>
+ <name>QHostInfo</name>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
+ <source>Unknown error</source>
+ <translation>Ukendt fejl</translation>
+ </message>
+</context>
+<context>
+ <name>QHostInfoAgent</name>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+178"/>
+ <location line="+9"/>
+ <location line="+64"/>
+ <location line="+31"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+180"/>
+ <location line="+9"/>
+ <location line="+40"/>
+ <location line="+27"/>
+ <source>Host not found</source>
+ <translation>Vært ikke fundet</translation>
+ </message>
+ <message>
+ <location line="-44"/>
+ <location line="+39"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-34"/>
+ <location line="+29"/>
+ <source>Unknown address type</source>
+ <translation>Ukendt adressetype</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-19"/>
+ <location line="+27"/>
+ <source>Unknown error</source>
+ <translation>Ukendt fejl</translation>
+ </message>
+</context>
+<context>
+ <name>QHttp</name>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="+1574"/>
+ <location line="+820"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+1160"/>
+ <location line="+567"/>
+ <source>Unknown error</source>
+ <translation>Ukendt fejl</translation>
+ </message>
+ <message>
+ <location line="-568"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="-370"/>
+ <source>Request aborted</source>
+ <translation>Forespørgsel blev annulleret</translation>
+ </message>
+ <message>
+ <location line="+579"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+381"/>
+ <source>No server set to connect to</source>
+ <translation>Ingen server at forbinde til</translation>
+ </message>
+ <message>
+ <location line="+164"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+56"/>
+ <source>Wrong content length</source>
+ <translation>Forkert indholdslængde</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+4"/>
+ <source>Server closed connection unexpectedly</source>
+ <translation>Serveren afsluttede uventet forbindelsen</translation>
+ </message>
+ <message>
+ <location line="+179"/>
+ <source>Unknown authentication method</source>
+ <translation>Ukendt autentifikationsmetode</translation>
+ </message>
+ <message>
+ <location line="+183"/>
+ <source>Error writing response to device</source>
+ <translation>Skrivefejl mens der blev skrevet til enheden</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+901"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+38"/>
+ <source>Connection refused</source>
+ <translation>Forbindelse afvist</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="-304"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-4"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
+ <source>Host %1 not found</source>
+ <translation>Vært %1 ikke fundet</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+10"/>
+ <location line="+19"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
+ <source>HTTP request failed</source>
+ <translation>HTTP anmodning mislykkedes</translation>
+ </message>
+ <message>
+ <location line="+73"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+69"/>
+ <source>Invalid HTTP response header</source>
+ <translation>Ugyldig HTTP-svar-header</translation>
+ </message>
+ <message>
+ <location line="+125"/>
+ <location line="+48"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+40"/>
+ <location line="+47"/>
+ <source>Invalid HTTP chunked body</source>
+ <translation>Ugyldig HTTP chunked body</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+294"/>
+ <source>Host %1 found</source>
+ <translation>Vært %1 fundet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Connected to host %1</source>
+ <translation>Tilsluttet vært %1</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Connection to %1 closed</source>
+ <translation>Forbindelse til %1 lukket</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Host found</source>
+ <translation>Vært fundet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Connected to host</source>
+ <translation>Tilsluttet vært</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-22"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+3"/>
+ <source>Connection closed</source>
+ <translation>Forbindelse lukket</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="-135"/>
+ <source>Proxy authentication required</source>
+ <translation>Kræver proxy-autentificering</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Authentication required</source>
+ <translation>Autentificering påkrævet</translation>
+ </message>
+ <message>
+ <location line="-138"/>
+ <source>Connection refused (or timed out)</source>
+ <translation>Forbindelse blev afvist (eller tid udløb)</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+6"/>
+ <source>Proxy requires authentication</source>
+ <translation>Proxy kræver autentificering</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Host requires authentication</source>
+ <translation>Vært kræver autentificering</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Data corrupted</source>
+ <translation>Data er ødelagt</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Unknown protocol specified</source>
+ <translation>En ukendt protokol blev angivet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>SSL handshake failed</source>
+ <translation>SSL handshake mislykkedes</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="-2263"/>
+ <source>HTTPS connection requested but SSL support not compiled in</source>
+ <translation>Der blevet anmodet om en HTTPS-forbindelse, men SSL understøttelse er ikke kompileret ind</translation>
+ </message>
+</context>
+<context>
+ <name>QHttpSocketEngine</name>
+ <message>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="-89"/>
+ <source>Did not receive HTTP response from proxy</source>
+ <translation>Modtog ikke HTTP-svar fra proxy</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Error parsing authentication request from proxy</source>
+ <translation>Fejl under fortolking af autentificeringsanmodning fra proxy</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>Authentication required</source>
+ <translation>Autentificering påkrævet</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Proxy denied connection</source>
+ <translation>Proxy nægtede forbindelse</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Error communicating with HTTP proxy</source>
+ <translation>Fejl under kommunikation med HTTP-proxy</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Proxy server not found</source>
+ <translation>Proxy-server kunne ikke findes</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Proxy connection refused</source>
+ <translation>Proxy-forbindelse nægtede</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Proxy server connection timed out</source>
+ <translation>Proxy-serverforbindelse timed out</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Proxy connection closed prematurely</source>
+ <translation>Proxy-forbindelse afsluttede i utide</translation>
+ </message>
+</context>
+<context>
+ <name>QIBaseDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1435"/>
+ <source>Error opening database</source>
+ <translation>Der opstod fejl ved åbning af database</translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>Could not start transaction</source>
+ <translation>Kunne ikke påbegynde transaktionen</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Unable to commit transaction</source>
+ <translation>Kunne ikke gennemføre transaktionen</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Kunne ikke tilbagetrække transaktionen</translation>
+ </message>
+</context>
+<context>
+ <name>QIBaseResult</name>
+ <message>
+ <location line="-1097"/>
+ <source>Unable to create BLOB</source>
+ <translation>Kunne ikke oprette BLOB</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Unable to write BLOB</source>
+ <translation>Kunne ikke skrive BLOB</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Unable to open BLOB</source>
+ <translation>Kunne ikke åbne BLOB</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Unable to read BLOB</source>
+ <translation>Kunne ikke læse BLOB</translation>
+ </message>
+ <message>
+ <location line="+125"/>
+ <location line="+189"/>
+ <source>Could not find array</source>
+ <translation>Kunne ikke finde array</translation>
+ </message>
+ <message>
+ <location line="-157"/>
+ <source>Could not get array data</source>
+ <translation>Kunne ikke hente arraydata</translation>
+ </message>
+ <message>
+ <location line="+212"/>
+ <source>Could not get query info</source>
+ <translation>Kunne ikke hente forespørgselsinfo</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Could not start transaction</source>
+ <translation>Kunne ikke påbegynde transaktionen</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Unable to commit transaction</source>
+ <translation>Kunne ikke gennemføre transaktionen</translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>Could not allocate statement</source>
+ <translation>Kunne ikke allokere statement</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Could not prepare statement</source>
+ <translation>Kunne ikke forberede udsagn</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <location line="+7"/>
+ <source>Could not describe input statement</source>
+ <translation>Kunne ikke beskrive input-statement</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Could not describe statement</source>
+ <translation>Kunne ikke beskrive statement</translation>
+ </message>
+ <message>
+ <location line="+115"/>
+ <source>Unable to close statement</source>
+ <translation>Kunne ikke lukke udsagn</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Unable to execute query</source>
+ <translation>Kunne ikke udføre forespørgsel</translation>
+ </message>
+ <message>
+ <location line="+46"/>
+ <source>Could not fetch next item</source>
+ <translation>Kunne ikke hente næste element</translation>
+ </message>
+ <message>
+ <location line="+160"/>
+ <source>Could not get statement info</source>
+ <translation>Kunne ikke hente udsagnsinformation</translation>
+ </message>
+</context>
+<context>
+ <name>QIODevice</name>
+ <message>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+1869"/>
+ <source>Permission denied</source>
+ <translation>Tilladelse nægtet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Too many open files</source>
+ <translation>Der er for mange åbne filer</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>No such file or directory</source>
+ <translation>Fil eller katalog findes ikke</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>No space left on device</source>
+ <translation>Ingen plads tilbage på enheden</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1536"/>
+ <source>Unknown error</source>
+ <translation>Ukendt fejl</translation>
+ </message>
+</context>
+<context>
+ <name>QInputContext</name>
+ <message>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+242"/>
+ <source>XIM</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>XIM input method</source>
+ <translation>XIM input-metode</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Windows input method</source>
+ <translation>Windows input-metode</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Mac OS X input method</source>
+ <translation>Mac OS X input-metode</translation>
+ </message>
+</context>
+<context>
+ <name>QInputDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
+ <source>Enter a value:</source>
+ <translation>Indtast en værdi:</translation>
+ </message>
+</context>
+<context>
+ <name>QLibrary</name>
+ <message>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+378"/>
+ <source>Could not mmap &apos;%1&apos;: %2</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Plugin verification data mismatch in &apos;%1&apos;</source>
+ <translation>Plugin-verifikationsdata er sat forkert sammen i &apos;%1&apos;</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Could not unmap &apos;%1&apos;: %2</source>
+ <translation>Der var ikke muligt at lave unmap på &apos;%1&apos;: %2 </translation>
+ </message>
+ <message>
+ <location line="+302"/>
+ <source>The plugin &apos;%1&apos; uses incompatible Qt library. (%2.%3.%4) [%5]</source>
+ <translation>Plugin &apos;%1&apos; bruger inkompatibelt Qt-bibliotek. (%2.%3.%4) [%5]</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>The plugin &apos;%1&apos; uses incompatible Qt library. Expected build key &quot;%2&quot;, got &quot;%3&quot;</source>
+ <translation>Plugin &apos;%1&apos; bruger inkompatibelt Qt-bibliotek. Forventet build key &quot;%2&quot;, hentede &quot;%3&quot;&apos;</translation>
+ </message>
+ <message>
+ <location line="+340"/>
+ <source>Unknown error</source>
+ <translation>Ukendt fejl&apos;</translation>
+ </message>
+ <message>
+ <location line="-377"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+280"/>
+ <source>The shared library was not found.</source>
+ <translation>DSO blev ikke fundet.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>The file &apos;%1&apos; is not a valid Qt plugin.</source>
+ <translation>Filen &apos;%1&apos; er ikke et gyldigt Qt-plugin.</translation>
+ </message>
+ <message>
+ <location line="+43"/>
+ <source>The plugin &apos;%1&apos; uses incompatible Qt library. (Cannot mix debug and release libraries.)</source>
+ <translation>Plugin &apos;%1&apos; bruger inkompatibelt Qt-bibliotek. (Ikke muligt at mikse debug og release-biblioteker)</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+209"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+99"/>
+ <source>Cannot load library %1: %2</source>
+ <translation>Kan ikke indlæse bibliotek %1: %2</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+26"/>
+ <source>Cannot unload library %1: %2</source>
+ <translation>Kan ikke afregistrere bibliotek %1: %2</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+15"/>
+ <source>Cannot resolve symbol &quot;%1&quot; in %2: %3</source>
+ <translation>Kan ikke løse symbol &quot;%1&quot; i %2: %3</translation>
+ </message>
+</context>
+<context>
+ <name>QLineEdit</name>
+ <message>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2680"/>
+ <source>&amp;Undo</source>
+ <translation>&amp;Fortryd</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&amp;Redo</source>
+ <translation>&amp;Gendan</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Cu&amp;t</source>
+ <translation>K&amp;lip</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&amp;Copy</source>
+ <translation>&amp;Kopiér</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&amp;Paste</source>
+ <translation>&amp;Sæt ind</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Delete</source>
+ <translation>Slet</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Select All</source>
+ <translation>Markér alt</translation>
+ </message>
+</context>
+<context>
+ <name>QLocalServer</name>
+ <message>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+226"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+233"/>
+ <source>%1: Name error</source>
+ <translation>%1: Navnefejl</translation>
+ </message>
+ <message>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="-8"/>
+ <source>%1: Permission denied</source>
+ <translation>%1: Tilladelse nægtet</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>%1: Address in use</source>
+ <translation>%1: Adresse i brug</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <location filename="../src/network/socket/qlocalserver_win.cpp" line="+158"/>
+ <source>%1: Unknown error %2</source>
+ <translation>%1: Ukendt fejl %2</translation>
+ </message>
+</context>
+<context>
+ <name>QLocalSocket</name>
+ <message>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+132"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+134"/>
+ <source>%1: Connection refused</source>
+ <translation>%1: Forbindelse afvist</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: Remote closed</source>
+ <translation>%1: Den anden ende lukkede</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
+ <location line="+43"/>
+ <source>%1: Invalid name</source>
+ <translation>%1: Ugyldigt navn</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: Socket access error</source>
+ <translation>%1: Fejl i socket-adgang</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: Socket resource error</source>
+ <translation>%1: Fejl i socket-ressource</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: Socket operation timed out</source>
+ <translation>%1: Socket-handling timed out</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: Datagram too large</source>
+ <translation>%1: Datagram er for stort</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="-48"/>
+ <source>%1: Connection error</source>
+ <translation>%1: Forbindelsesfejl</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: The socket operation is not supported</source>
+ <translation>%1: Socket-handlingen understøttes ikke</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1: Unknown error</source>
+ <translation>%1: Ukendt fejl</translation>
+ </message>
+ <message>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+4"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+10"/>
+ <source>%1: Unknown error %2</source>
+ <translation>%1: Ukendt fejl %2</translation>
+ </message>
+</context>
+<context>
+ <name>QMYSQLDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1252"/>
+ <source>Unable to open database &apos;</source>
+ <translation>Kunne ikke åbne databasen &apos;</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Unable to connect</source>
+ <translation>Kunne ikke forbinde</translation>
+ </message>
+ <message>
+ <location line="+127"/>
+ <source>Unable to begin transaction</source>
+ <translation>Kunne ikke påbegynde transaktionen</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Unable to commit transaction</source>
+ <translation>Kunne ikke gennemføre transaktionen</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Kunne ikke tilbagetrække transaktionen</translation>
+ </message>
+</context>
+<context>
+ <name>QMYSQLResult</name>
+ <message>
+ <location line="-935"/>
+ <source>Unable to fetch data</source>
+ <translation>Kunne ikke hente data</translation>
+ </message>
+ <message>
+ <location line="+183"/>
+ <source>Unable to execute query</source>
+ <translation>Kunne ikke udføre forespørgsel</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Unable to store result</source>
+ <translation>Kunne ikke gemme resultatet</translation>
+ </message>
+ <message>
+ <location line="+194"/>
+ <location line="+8"/>
+ <source>Unable to prepare statement</source>
+ <translation>Kunne ikke forberede udsagn</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Unable to reset statement</source>
+ <translation>Kunne ikke nulstille udsagn</translation>
+ </message>
+ <message>
+ <location line="+87"/>
+ <source>Unable to bind value</source>
+ <translation>Kunne ikke tildele værdi</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Unable to execute statement</source>
+ <translation>Kunne ikke udføre udsagn</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <location line="+21"/>
+ <source>Unable to bind outvalues</source>
+ <translation>Kunne ikke binde udværdier</translation>
+ </message>
+ <message>
+ <location line="-12"/>
+ <source>Unable to store statement results</source>
+ <translation>Kunne ikke gemme udsagnsresultater</translation>
+ </message>
+ <message>
+ <location line="-257"/>
+ <source>Unable to execute next query</source>
+ <translation>Kunne ikke udføre næste forespørgsel</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Unable to store next result</source>
+ <translation>Kunne ikke gemme næste resultat</translation>
+ </message>
+</context>
+<context>
+ <name>QMdiArea</name>
+ <message>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
+ <source>(Untitled)</source>
+ <translation>(Uden titel)</translation>
+ </message>
+</context>
+<context>
+ <name>QMdiSubWindow</name>
+ <message>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+280"/>
+ <source>%1 - [%2]</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+72"/>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+ <message>
+ <location line="-18"/>
+ <source>Minimize</source>
+ <translation>Minimér</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Restore Down</source>
+ <translation>Gendan Ned</translation>
+ </message>
+ <message>
+ <location line="+707"/>
+ <source>&amp;Restore</source>
+ <translation>&amp;Gendan</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Move</source>
+ <translation>&amp;Flyt</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Size</source>
+ <translation>&amp;Størrelse</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Mi&amp;nimize</source>
+ <translation>Mi&amp;nimér</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Ma&amp;ximize</source>
+ <translation>Ma&amp;ksimér</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Stay on &amp;Top</source>
+ <translation>Bliv &amp;oppe</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&amp;Close</source>
+ <translation>&amp;Luk</translation>
+ </message>
+ <message>
+ <location line="-787"/>
+ <source>- [%1]</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+58"/>
+ <source>Maximize</source>
+ <translation>Maksimér</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Unshade</source>
+ <translation>Fjern skygge</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Shade</source>
+ <translation>Skygge</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Restore</source>
+ <translation>Gendan</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Help</source>
+ <translation>Hjælp</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Menu</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>QMenu</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+157"/>
+ <location line="+225"/>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+ <message>
+ <location line="-224"/>
+ <location line="+225"/>
+ <source>Open</source>
+ <translation>Åbn</translation>
+ </message>
+ <message>
+ <location line="-223"/>
+ <location line="+225"/>
+ <location line="+51"/>
+ <source>Execute</source>
+ <translation>Udfør</translation>
+ </message>
+</context>
+<context>
+ <name>QMessageBox</name>
+ <message>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1111"/>
+ <source>Help</source>
+ <translation>Hjælp</translation>
+ </message>
+ <message>
+ <location line="-853"/>
+ <location line="+852"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
+ <location line="+8"/>
+ <source>OK</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+475"/>
+ <source>&lt;h3&gt;About Qt&lt;/h3&gt;&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://www.qtsoftware.com/qt/&quot;&gt;www.qtsoftware.com/qt&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <translation>&lt;h3&gt;Om Qt&lt;/h3&gt;&lt;p&gt;Dette program anvender Qt version %1.&lt;/p&gt;&lt;p&gt;Qt er et C++ toolkit til cross-platform applikationsudvikling.&lt;/p&gt;&lt;p&gt;Qt tilbyder single-source portabilitet til MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, og alle større kommercielle Unix-varianter. Qt er også tilgængeligt til indlejrede systemer som Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;Qt er tilgængeligt under tre forskellige licenser skabt med henblik på at imødekomme forskellige brugeres behov.&lt;/p&gt;&lt;p&gt;Qt licenseret under vores kommercielle licensaftale er passende for udvikling af proprietær/kommerciel software, hvor du ikke ønsker at dele sourcekode med tredie part, eller på anden vis ikke kan tiltræde vilkårerne i GNU LGPL version 2.1 eller GNU GPL version 3.0&lt;/p&gt;&lt;p&gt;Qt licenseret under GLU General Public License version 3.0 er passende for udvikling af Qt applikationer, hvor du ønsker at bruge softwaren i kombination med software under vilkårerne i GNU GPL version 3.0, eller hvor du ellers er villig til at overholde vilkårerne i GNU GPL version 3.0&lt;/p&gt;&lt;p&gt;See venligst &lt;a href=&quot;http://www.qtsoftware.com/products/licensing&quot;&gt;www.qtsoftware.com/products/licensing&lt;/a&gt; for et overblik over Qt licensforhold.&lt;/p&gt;&lt;p&gt;Qt er et Nokia produkt. Se &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for yderligere information.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location line="+34"/>
+ <source>About Qt</source>
+ <translation>Om Qt</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
+ <translation type="obsolete">&lt;p&gt;Dette program bruger Qt-version %1.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <location line="-1608"/>
+ <source>Show Details...</source>
+ <translation>Vis detaljer...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hide Details...</source>
+ <translation>Skjul detaljer...</translation>
+ </message>
+ <message>
+ <source>&lt;h3&gt;About Qt&lt;/h3&gt;%1&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for more information.&lt;/p&gt;</source>
+ <translation type="obsolete">&lt;h3&gt;Om Qt&lt;/h3&gt;%1&lt;p&gt;Qt er et C++ toolkit til cross-platform applikationsudvikling.&lt;/p&gt;&lt;p&gt;Qt tilbyder single-source portabilitet til MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, og alle større kommercielle Unix-varianter. Qt er også tilgængeligt til indlejrede systemer som Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt er et Nokia produkt. Se &lt;a href=&quot;http://qtsoftware.com/qt/&quot;&gt;qtsoftware.com/qt/&lt;/a&gt; for yderligere information.&lt;/p&gt;</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;This program uses Qt Open Source Edition version %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
+ <translation type="obsolete">&lt;p&gt;Dette program bruger Qt Open Source Edition version %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition er beregnet til udvikling af Open Source applikationer. En kommerciel Qt licens er nødvendig til udvikling af proprietære (lukket sourcekode) applikationer.&lt;/p&gt;&lt;p&gt;Se venligst &lt;a href=&quot;http://qtsoftware.com/company/model/&quot;&gt;qtsoftware.com/company/model/&lt;/a&gt; for et overblik over Qt licensforhold.&lt;/p&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>QMultiInputContext</name>
+ <message>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
+ <source>Select IM</source>
+ <translation>Markér IM</translation>
+ </message>
+</context>
+<context>
+ <name>QMultiInputContextPlugin</name>
+ <message>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+95"/>
+ <source>Multiple input method switcher</source>
+ <translation>Multiple input metode-switcher</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Multiple input method switcher that uses the context menu of the text widgets</source>
+ <translation>Multiple input metode-switcher, der benytter tekstkontrollernes kontekstmenuer</translation>
+ </message>
+</context>
+<context>
+ <name>QNativeSocketEngine</name>
+ <message>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+206"/>
+ <source>The remote host closed the connection</source>
+ <translation>Fjern-hosten lukkede forbindelsen</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Network operation timed out</source>
+ <translation>Netværksoperationen timed out</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Out of resources</source>
+ <translation>Ikke flere ressourcer</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Unsupported socket operation</source>
+ <translation>Socket-operation ikke understøttet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Protocol type not supported</source>
+ <translation>Protokoltypen understøttes ikke</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid socket descriptor</source>
+ <translation>Ugyldig socket-deskriptor</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Network unreachable</source>
+ <translation>Netværket er ikke tilgængeligt</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Permission denied</source>
+ <translation>Tilladelse nægtet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Connection timed out</source>
+ <translation>Forbindelsen timed out</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Connection refused</source>
+ <translation>Forbindelse afvist</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The bound address is already in use</source>
+ <translation>Den bundne adresse er allerede i brug</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The address is not available</source>
+ <translation>Adressen er ikke tilgængelig</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The address is protected</source>
+ <translation>Adressen er beskyttet</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Unable to send a message</source>
+ <translation>Kunne ikke sende en besked</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Unable to receive a message</source>
+ <translation>Kunne ikke modtage en besked</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Unable to write</source>
+ <translation>Kunne ikke skrive</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Network error</source>
+ <translation>Netværksfejl</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Another socket is already listening on the same port</source>
+ <translation>En anden socket lytter allerede på samme port</translation>
+ </message>
+ <message>
+ <location line="-66"/>
+ <source>Unable to initialize non-blocking socket</source>
+ <translation>Kunne ikke initialisere non-blocking socket</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Unable to initialize broadcast socket</source>
+ <translation>Kunne ikke initialisere broadcast-socket</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Attempt to use IPv6 socket on a platform with no IPv6 support</source>
+ <translation>Forsøg på at bruge IPv6-socket på en platform uden IPv6-support</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>Host unreachable</source>
+ <translation>Vært er ikke tilgængelig</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Datagram was too large to send</source>
+ <translation>Datagrammet var for stort til at blive sendt</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Operation on non-socket</source>
+ <translation>Handling på non-socket</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Unknown error</source>
+ <translation>Ukendt fejl</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>The proxy type is invalid for this operation</source>
+ <translation>Proxytypen er ugyldig til denne handling</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessCacheBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+65"/>
+ <source>Error opening %1</source>
+ <translation>Der opstod fejl i at åbne %1</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessFileBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+99"/>
+ <source>Request for opening non-local file %1</source>
+ <translation>Anmodning om at åbne ikke-lokal fil %1</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Error opening %1: %2</source>
+ <translation>Der opstod fejl i at åbne %1: %2</translation>
+ </message>
+ <message>
+ <location line="+56"/>
+ <source>Write error writing to %1: %2</source>
+ <translation>Skrivefejl mens der blev skrevet til %1: %2</translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>Cannot open %1: Path is a directory</source>
+ <translation>Kan ikke åbne %1: Stien er et katalog</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>Read error reading from %1: %2</source>
+ <translation>Læsefejl mens der blev læst fra %1: %2</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessFtpBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+165"/>
+ <source>No suitable proxy found</source>
+ <translation>Ingen passende proxy blev fundet</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Cannot open %1: is a directory</source>
+ <translation>Kan ikke åbne %1: Er et katalog</translation>
+ </message>
+ <message>
+ <location line="+130"/>
+ <source>Logging in to %1 failed: authentication required</source>
+ <translation>Der opstod fejl i at logge på %1: Autentificering kræves</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Error while downloading %1: %2</source>
+ <translation>Der opstod fejl i at downloade %1: %2</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Error while uploading %1: %2</source>
+ <translation>Der opstod fejl i at uploade %1: %2</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessHttpBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+597"/>
+ <source>No suitable proxy found</source>
+ <translation>Ingen passende proxy blev fundet</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkReply</name>
+ <message>
+ <location line="+128"/>
+ <source>Error downloading %1 - server replied: %2</source>
+ <translation>Der opstod fejl i at downloade %1 - serveren svarede: %2</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+68"/>
+ <source>Protocol &quot;%1&quot; is unknown</source>
+ <translation>Protokollen &quot;%1&quot; er ukendt</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkReplyImpl</name>
+ <message>
+ <location line="+432"/>
+ <location line="+22"/>
+ <source>Operation canceled</source>
+ <translation>Handling blev annulleret</translation>
+ </message>
+</context>
+<context>
+ <name>QOCIDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2069"/>
+ <source>Unable to logon</source>
+ <translation>Kunne ikke logge på</translation>
+ </message>
+ <message>
+ <location line="-144"/>
+ <source>Unable to initialize</source>
+ <comment>QOCIDriver</comment>
+ <translation>Kunne ikke initialisere</translation>
+ </message>
+ <message>
+ <location line="+215"/>
+ <source>Unable to begin transaction</source>
+ <translation>Kunne ikke påbegynde transaktionen</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Unable to commit transaction</source>
+ <translation>Kunne ikke gennemføre transaktionen</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Kunne ikke tilbagetrække transaktionen</translation>
+ </message>
+</context>
+<context>
+ <name>QOCIResult</name>
+ <message>
+ <location line="-963"/>
+ <location line="+161"/>
+ <location line="+15"/>
+ <source>Unable to bind column for batch execute</source>
+ <translation>Kunne ikke tildele kolonne til batch-udførsel</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Unable to execute batch statement</source>
+ <translation>Kunne ikke udføre batch-udsagn</translation>
+ </message>
+ <message>
+ <location line="+302"/>
+ <source>Unable to goto next</source>
+ <translation>Kunne ikke gå til den næste</translation>
+ </message>
+ <message>
+ <location line="+59"/>
+ <source>Unable to alloc statement</source>
+ <translation>Kunne ikke allokere udsagn</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Unable to prepare statement</source>
+ <translation>Kunne ikke forberede udsagn</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Unable to bind value</source>
+ <translation>Kunne ikke tildele værdi</translation>
+ </message>
+ <message>
+ <source>Unable to execute select statement</source>
+ <translation type="obsolete">Kunne ikke udføre det valgte udsagn</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Unable to execute statement</source>
+ <translation>Kunne ikke udføre udsagn</translation>
+ </message>
+</context>
+<context>
+ <name>QODBCDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1781"/>
+ <source>Unable to connect</source>
+ <translation>Kunne ikke forbinde</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Unable to connect - Driver doesn&apos;t support all needed functionality</source>
+ <translation>Kunne ikke forbinde. Driveren understøtter ikke alle de nødvendige funktionaliteter</translation>
+ </message>
+ <message>
+ <location line="+242"/>
+ <source>Unable to disable autocommit</source>
+ <translation>Kunne ikke slå auto-udfør fra</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Unable to commit transaction</source>
+ <translation>Kunne ikke gennemføre transaktionen</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Kunne ikke tilbagetrække transaktionen</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Unable to enable autocommit</source>
+ <translation>Kunne ikke slå auto-udfør til</translation>
+ </message>
+</context>
+<context>
+ <name>QODBCResult</name>
+ <message>
+ <location line="-1218"/>
+ <location line="+349"/>
+ <source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
+ <translation>QODBCResult::reset: Kunne ikke indstille &apos;SQL_CURSOR_STATIC&apos; til udsagnsattribut. Kontrollér ODBC-driver-konfigurationen</translation>
+ </message>
+ <message>
+ <location line="-332"/>
+ <location line="+626"/>
+ <source>Unable to execute statement</source>
+ <translation>Kunne ikke udføre udsagn</translation>
+ </message>
+ <message>
+ <location line="-555"/>
+ <source>Unable to fetch next</source>
+ <translation>Kunne ikke hente den næste</translation>
+ </message>
+ <message>
+ <location line="+279"/>
+ <source>Unable to prepare statement</source>
+ <translation>Kunne ikke forberede udsagn</translation>
+ </message>
+ <message>
+ <location line="+268"/>
+ <source>Unable to bind variable</source>
+ <translation>Kunne ikke tildele variabel</translation>
+ </message>
+ <message>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+194"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-475"/>
+ <location line="+578"/>
+ <source>Unable to fetch last</source>
+ <translation>Kunne ikke hente den sidste</translation>
+ </message>
+ <message>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-672"/>
+ <source>Unable to fetch</source>
+ <translation>Kunne ikke hente</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Unable to fetch first</source>
+ <translation>Kunne ikke hente den første</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Unable to fetch previous</source>
+ <translation>Kunne ikke hente den forrige</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../src/gui/util/qdesktopservices_mac.cpp" line="+165"/>
+ <source>Home</source>
+ <translation>Hjem</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+74"/>
+ <source>Operation not supported on %1</source>
+ <translation>Handling blev ikke understøttet på %1</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Invalid URI: %1</source>
+ <translation>Ugyldig URI: %1</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+175"/>
+ <source>Write error writing to %1: %2</source>
+ <translation>Skrivefejl mens der blev skrevet til %1: %2</translation>
+ </message>
+ <message>
+ <location line="+57"/>
+ <source>Read error reading from %1: %2</source>
+ <translation>Læsefejl mens der blev læst fra %1: %2</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>Socket error on %1: %2</source>
+ <translation>Socket-fejl på %1: %2</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Remote host closed the connection prematurely on %1</source>
+ <translation>Fjern-host lukkede forbindelsen for tidligt på %1</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Protocol error: packet of size 0 received</source>
+ <translation>Protokolfejl: Pakke på størrelsen 0 modtaget</translation>
+ </message>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+177"/>
+ <location line="+57"/>
+ <source>No host name given</source>
+ <translation>Hostnavn mangler</translation>
+ </message>
+</context>
+<context>
+ <name>QPPDOptionsModel</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1197"/>
+ <source>Name</source>
+ <translation>Navn</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Value</source>
+ <translation>Værdi</translation>
+ </message>
+</context>
+<context>
+ <name>QPSQLDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+763"/>
+ <source>Unable to connect</source>
+ <translation>Kunne ikke skabe forbindelse</translation>
+ </message>
+ <message>
+ <location line="+49"/>
+ <source>Could not begin transaction</source>
+ <translation>Kunne ikke påbegynde transaktion</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Could not commit transaction</source>
+ <translation>Kunne ikke gennemføre transaktion</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Could not rollback transaction</source>
+ <translation>Kunne ikke tilbagetrække transaktion</translation>
+ </message>
+ <message>
+ <location line="+358"/>
+ <source>Unable to subscribe</source>
+ <translation>Kunne ikke tilmelde</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Unable to unsubscribe</source>
+ <translation>Kunne ikke afmelde</translation>
+ </message>
+</context>
+<context>
+ <name>QPSQLResult</name>
+ <message>
+ <location line="-1058"/>
+ <source>Unable to create query</source>
+ <translation>Kunne ikke oprette forespørgsel</translation>
+ </message>
+ <message>
+ <location line="+374"/>
+ <source>Unable to prepare statement</source>
+ <translation>Kunne ikke forberede udsagn</translation>
+ </message>
+</context>
+<context>
+ <name>QPageSetupWidget</name>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
+ <source>Centimeters (cm)</source>
+ <translation>Centimeter (cm)</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Millimeters (mm)</source>
+ <translation>Millimeter (mm)</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Inches (in)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Points (pt)</source>
+ <translation>Point (pt)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupwidget.ui"/>
+ <source>Form</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Paper</source>
+ <translation>Papir</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Page size:</source>
+ <translation>Sidestørrelse:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Width:</source>
+ <translation>Vidde:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Height:</source>
+ <translation>Højde:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Paper source:</source>
+ <translation>Papirkilde:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Orientation</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Portrait</source>
+ <translation>Portræt</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Landscape</source>
+ <translation>Landskab</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Reverse landscape</source>
+ <translation>Omvendt landskab</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Reverse portrait</source>
+ <translation>Omvendt portræt</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Margins</source>
+ <translation>Margener</translation>
+ </message>
+ <message>
+ <location/>
+ <source>top margin</source>
+ <translation>Margen - øverst</translation>
+ </message>
+ <message>
+ <location/>
+ <source>left margin</source>
+ <translation>Margen - venstre</translation>
+ </message>
+ <message>
+ <location/>
+ <source>right margin</source>
+ <translation>Margen - højre</translation>
+ </message>
+ <message>
+ <location/>
+ <source>bottom margin</source>
+ <translation>Margen - bund</translation>
+ </message>
+</context>
+<context>
+ <name>QPluginLoader</name>
+ <message>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+24"/>
+ <source>Unknown error</source>
+ <translation>Ukendt fejl</translation>
+ </message>
+ <message>
+ <location line="-68"/>
+ <source>The plugin was not loaded.</source>
+ <translation>Plugin blev ikke indlæst.</translation>
+ </message>
+</context>
+<context>
+ <name>QPrintDialog</name>
+ <message>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+98"/>
+ <source>locally connected</source>
+ <translation>lokalt forbundet</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <location line="+225"/>
+ <source>Aliases: %1</source>
+ <translation>Aliasser: %1</translation>
+ </message>
+ <message>
+ <location line="+223"/>
+ <location line="+199"/>
+ <source>unknown</source>
+ <translation>Ukendt</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+329"/>
+ <source>A0 (841 x 1189 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A1 (594 x 841 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A2 (420 x 594 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A3 (297 x 420 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A4 (210 x 297 mm, 8.26 x 11.7 inches)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A5 (148 x 210 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A6 (105 x 148 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A7 (74 x 105 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A8 (52 x 74 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A9 (37 x 52 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B0 (1000 x 1414 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B1 (707 x 1000 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B2 (500 x 707 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B3 (353 x 500 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B4 (250 x 353 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B5 (176 x 250 mm, 6.93 x 9.84 inches)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B6 (125 x 176 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B7 (88 x 125 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B8 (62 x 88 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B9 (44 x 62 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B10 (31 x 44 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>C5E (163 x 229 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>DLE (110 x 220 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Executive (7.5 x 10 inches, 191 x 254 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Folio (210 x 330 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ledger (432 x 279 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Legal (8.5 x 14 inches, 216 x 356 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Letter (8.5 x 11 inches, 216 x 279 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Tabloid (279 x 432 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>US Common #10 Envelope (105 x 241 mm)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+268"/>
+ <source>OK</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+110"/>
+ <location line="+13"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
+ <source>Print</source>
+ <translation>Udskriv</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-357"/>
+ <source>Print To File ...</source>
+ <translation>Udskriv til fil...</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+19"/>
+ <source>Print range</source>
+ <translation>Udskriftsområde</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Print all</source>
+ <translation>Udskriv alle</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+80"/>
+ <source>File %1 is not writable.
+Please choose a different file name.</source>
+ <translation>Filen %1 kan ikke skrives.
+Vælg et andet filnavn.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1 already exists.
+Do you want to overwrite it?</source>
+ <translation>%1 findes allerede.
+Ønsker du at overskrive?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-227"/>
+ <source>File exists</source>
+ <translation>Fil findes</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&lt;qt&gt;Do you want to overwrite it?&lt;/qt&gt;</source>
+ <translation>&lt;qt&gt;Ønsker du at overskrive?&lt;/qt&gt;</translation>
+ </message>
+ <message>
+ <location line="+227"/>
+ <source>Print selection</source>
+ <translation>Udskriv markerede</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-8"/>
+ <source>%1 is a directory.
+Please choose a different file name.</source>
+ <translation>%1 er et katalog.
+Vælg et andet filnavn.</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="-232"/>
+ <source>A0</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A1</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A2</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A3</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A4</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A5</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A6</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A7</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A8</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A9</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B0</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B1</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B2</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B3</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B4</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B5</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B6</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B7</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B8</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B9</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B10</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>C5E</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>DLE</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Executive</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Folio</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ledger</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Legal</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Letter</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Tabloid</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>US Common #10 Envelope</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Custom</source>
+ <translation>Brugerdefineret</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-524"/>
+ <location line="+68"/>
+ <source>&amp;Options &gt;&gt;</source>
+ <translation>&amp;Indstillinger&gt;&gt;</translation>
+ </message>
+ <message>
+ <location line="-63"/>
+ <source>&amp;Print</source>
+ <translation>&amp;Udskriv</translation>
+ </message>
+ <message>
+ <location line="+67"/>
+ <source>&amp;Options &lt;&lt;</source>
+ <translation>&amp;Indstillinger&lt;&lt;</translation>
+ </message>
+ <message>
+ <location line="+253"/>
+ <source>Print to File (PDF)</source>
+ <translation>Udskriv til fil (PDF)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Print to File (Postscript)</source>
+ <translation>Udskriv til fil (Postscript)</translation>
+ </message>
+ <message>
+ <location line="+47"/>
+ <source>Local file</source>
+ <translation>Lokal fil</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Write %1 file</source>
+ <translation>Skriv %1 fil</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+1"/>
+ <source>The &apos;From&apos; value cannot be greater than the &apos;To&apos; value.</source>
+ <translation>&apos;Fra&apos;-værdien kan ikke være større end &apos;til&apos;-værdien.</translation>
+ </message>
+</context>
+<context>
+ <name>QPrintPreviewDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
+ <location line="+12"/>
+ <source>Page Setup</source>
+ <translation>Sideopsætning</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+252"/>
+ <source>%1%</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+79"/>
+ <source>Print Preview</source>
+ <translation>Vis udskrift</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Next page</source>
+ <translation>Næste side</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Previous page</source>
+ <translation>Forrige side</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>First page</source>
+ <translation>Første side</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Last page</source>
+ <translation>Sidste side</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Fit width</source>
+ <translation>Tilpas bredde</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Fit page</source>
+ <translation>Tilpas siden</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Zoom in</source>
+ <translation>Zoom ind</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Zoom out</source>
+ <translation>Zoom ud</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Portrait</source>
+ <translation>Portræt</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Landscape</source>
+ <translation>Landskab</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Show single page</source>
+ <translation>Vis enkelt side</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Show facing pages</source>
+ <translation>Vis sideopslag</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Show overview of all pages</source>
+ <translation>Vis oversigt af alle sider</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Print</source>
+ <translation>Udskriv</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Page setup</source>
+ <translation>Sideopsætning</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+ <message>
+ <location line="+151"/>
+ <source>Export to PDF</source>
+ <translation>Eksportér til PDF</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Export to PostScript</source>
+ <translation>Eksportér til PostScript</translation>
+ </message>
+</context>
+<context>
+ <name>QPrintPropertiesWidget</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintpropertieswidget.ui"/>
+ <source>Form</source>
+ <translation>Form</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Page</source>
+ <translation>Side</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Advanced</source>
+ <translation>Avanceret</translation>
+ </message>
+</context>
+<context>
+ <name>QPrintSettingsOutput</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintsettingsoutput.ui"/>
+ <source>Form</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Copies</source>
+ <translation>Kopier</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Print range</source>
+ <translation>Udskriv sider</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Print all</source>
+ <translation>Udskriv alle</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Pages from</source>
+ <translation>Sider fra</translation>
+ </message>
+ <message>
+ <location/>
+ <source>to</source>
+ <translation>til</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Selection</source>
+ <translation>Valg</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Output Settings</source>
+ <translation>Udskriftsindstillinger</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Copies:</source>
+ <translation>Kopier:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Collate</source>
+ <translation>Samordne</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Reverse</source>
+ <translation>Omvendt</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Options</source>
+ <translation>Valgmuligheder</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Color Mode</source>
+ <translation>Farvetilstand</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Color</source>
+ <translation>Farve</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Grayscale</source>
+ <translation>Gråskala</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Duplex Printing</source>
+ <translation>Dobbelsidet</translation>
+ </message>
+ <message>
+ <location/>
+ <source>None</source>
+ <translation>Ingen</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Long side</source>
+ <translation>Bog</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Short side</source>
+ <translation>Tavle</translation>
+ </message>
+</context>
+<context>
+ <name>QPrintWidget</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintwidget.ui"/>
+ <source>Form</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Printer</source>
+ <translation>&apos;</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&amp;Name:</source>
+ <translation>&amp;Navn:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>P&amp;roperties</source>
+ <translation>&amp;Egenskaber</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Location:</source>
+ <translation>Placering:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Preview</source>
+ <translation>Vis udskrift</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Type:</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Output &amp;file:</source>
+ <translation>Udskrifts&amp;fil:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>...</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>QProcess</name>
+ <message>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+475"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+147"/>
+ <source>Could not open input redirection for reading</source>
+ <translation>Kunne ikke åbne input redirection for læsning</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+36"/>
+ <source>Could not open output redirection for writing</source>
+ <translation>Kunne ikke åbne output redirection for skrivning</translation>
+ </message>
+ <message>
+ <location line="+235"/>
+ <source>Resource error (fork failure): %1</source>
+ <translation>Ressource fejl (fork fejl): %1</translation>
+ </message>
+ <message>
+ <location line="+259"/>
+ <location line="+53"/>
+ <location line="+74"/>
+ <location line="+67"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+422"/>
+ <location line="+50"/>
+ <location line="+75"/>
+ <location line="+42"/>
+ <location line="+54"/>
+ <source>Process operation timed out</source>
+ <translation>Proces-operation time out</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+533"/>
+ <location line="+52"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
+ <location line="+50"/>
+ <source>Error reading from process</source>
+ <translation>Fejl ved læsning fra proces</translation>
+ </message>
+ <message>
+ <location line="+47"/>
+ <location line="+779"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+140"/>
+ <source>Error writing to process</source>
+ <translation>Fejl ved skrivning til proces</translation>
+ </message>
+ <message>
+ <location line="-709"/>
+ <source>Process crashed</source>
+ <translation>Proces crashede</translation>
+ </message>
+ <message>
+ <location line="+912"/>
+ <source>No program defined</source>
+ <translation>Intet program defineret</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="-341"/>
+ <source>Process failed to start</source>
+ <translation>Processen kunne ikke starte</translation>
+ </message>
+</context>
+<context>
+ <name>QProgressDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+182"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+</context>
+<context>
+ <name>QPushButton</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="-8"/>
+ <source>Open</source>
+ <translation>Åbn</translation>
+ </message>
+</context>
+<context>
+ <name>QRadioButton</name>
+ <message>
+ <location line="+12"/>
+ <source>Check</source>
+ <translation>Kontrollér</translation>
+ </message>
+</context>
+<context>
+ <name>QRegExp</name>
+ <message>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+64"/>
+ <source>no error occurred</source>
+ <translation>der opstod ingen fejl</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>disabled feature used</source>
+ <translation>deaktiveret funktion blev brugt</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>bad char class syntax</source>
+ <translation>dårlig char class syntaks</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>bad lookahead syntax</source>
+ <translation>dårlig lookahead syntaks</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>bad repetition syntax</source>
+ <translation>dårlig gentagelsessyntaks</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>invalid octal value</source>
+ <translation>ugyldigt oktal-tal</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>missing left delim</source>
+ <translation>Manglende venstre delimiter</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>unexpected end</source>
+ <translation>uventet afslutning</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>met internal limit</source>
+ <translation>nåede interne grænse</translation>
+ </message>
+</context>
+<context>
+ <name>QSQLite2Driver</name>
+ <message>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+396"/>
+ <source>Error to open database</source>
+ <translation>Der opstod fejl ved åbning af database</translation>
+ </message>
+ <message>
+ <location line="+41"/>
+ <source>Unable to begin transaction</source>
+ <translation>Kunne ikke påbegynde transaktionen</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Unable to commit transaction</source>
+ <translation>Kunne ikke gennemføre transaktionen</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Unable to rollback Transaction</source>
+ <translation>Kunne ikke tilbagetrække transaktion</translation>
+ </message>
+</context>
+<context>
+ <name>QSQLite2Result</name>
+ <message>
+ <location line="-323"/>
+ <source>Unable to fetch results</source>
+ <translation>Kunne ikke hente resultater</translation>
+ </message>
+ <message>
+ <location line="+147"/>
+ <source>Unable to execute statement</source>
+ <translation>Kunne ikke udføre statement</translation>
+ </message>
+</context>
+<context>
+ <name>QSQLiteDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+528"/>
+ <source>Error opening database</source>
+ <translation>Der opstod fejl ved åbning af database</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Error closing database</source>
+ <translation>Der opstod fejl ved lukning af database</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Unable to begin transaction</source>
+ <translation>Kunne ikke påbegynde transaktionen</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Unable to commit transaction</source>
+ <translation>Kunne ikke gennemføre transaktion</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Kunne ikke tilbagetrække transaktion</translation>
+ </message>
+</context>
+<context>
+ <name>QSQLiteResult</name>
+ <message>
+ <location line="-400"/>
+ <location line="+66"/>
+ <location line="+8"/>
+ <source>Unable to fetch row</source>
+ <translation>Kunne ikke hente række</translation>
+ </message>
+ <message>
+ <location line="+63"/>
+ <source>Unable to execute statement</source>
+ <translation>Kunne ikke udføre udsagn</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Unable to reset statement</source>
+ <translation>Kunne ikke nulstille udsagn</translation>
+ </message>
+ <message>
+ <location line="+45"/>
+ <source>Unable to bind parameters</source>
+ <translation>Unable to bind parameters</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Parameter count mismatch</source>
+ <translation>Misforhold i parametertælling</translation>
+ </message>
+ <message>
+ <location line="-208"/>
+ <source>No query</source>
+ <translation>Ingen forespørgesel</translation>
+ </message>
+</context>
+<context>
+ <name>QScrollBar</name>
+ <message>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+448"/>
+ <source>Scroll here</source>
+ <translation>Scroll her</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Left edge</source>
+ <translation>Venstre kant</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Top</source>
+ <translation>Øverst</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Right edge</source>
+ <translation>Højre kant</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Bottom</source>
+ <translation>Bund</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Page left</source>
+ <translation>Side venstre</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+143"/>
+ <source>Page up</source>
+ <translation>Side øverst</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Page right</source>
+ <translation>Side højre</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+4"/>
+ <source>Page down</source>
+ <translation>Side ned</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Scroll left</source>
+ <translation>Scroll til venstre</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Scroll up</source>
+ <translation>Scroll op</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scroll right</source>
+ <translation>Scroll til højre</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Scroll down</source>
+ <translation>Scroll ned</translation>
+ </message>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-6"/>
+ <source>Line up</source>
+ <translation>Linie op</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Position</source>
+ <translation>Placering</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Line down</source>
+ <translation>Linie ned</translation>
+ </message>
+</context>
+<context>
+ <name>QSharedMemory</name>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+207"/>
+ <source>%1: unable to set key on lock</source>
+ <translation>%1: Kunne ikke oprette nøgle</translation>
+ </message>
+ <message>
+ <location line="+81"/>
+ <source>%1: create size is less then 0</source>
+ <translation>%1: create size is less then 0</translation>
+ </message>
+ <message>
+ <location line="+168"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+148"/>
+ <source>%1: unable to lock</source>
+ <translation>%1: Kunne ikke låse</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>%1: unable to unlock</source>
+ <translation>%1: Kunne ikke oprette nøgle</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+78"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+87"/>
+ <source>%1: permission denied</source>
+ <translation>%1: Tilladelse nægtet</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-22"/>
+ <source>%1: already exists</source>
+ <translation>%1: Findes allerede</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+9"/>
+ <source>%1: doesn&apos;t exists</source>
+ <translation>%1: Findes ikke</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+9"/>
+ <source>%1: out of resources</source>
+ <translation>%1: Ikke flere ressourcer</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+7"/>
+ <source>%1: unknown error %2</source>
+ <translation>%1: ukendt fejl %2</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>%1: key is empty</source>
+ <translation>%1: nøgle er tom</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>%1: unix key file doesn&apos;t exists</source>
+ <translation>%1: Kunne ikke oprette nøgle</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>%1: ftok failed</source>
+ <translation>%1: ftok mislykkedes</translation>
+ </message>
+ <message>
+ <location line="+51"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+15"/>
+ <source>%1: unable to make key</source>
+ <translation>%1: Kunne ikke oprette nøgle</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>%1: system-imposed size restrictions</source>
+ <translation>%1: System-pålagte størrelsesrestriktioner</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>%1: not attached</source>
+ <translation>%1: Ikke vedhæftet</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-27"/>
+ <source>%1: invalid size</source>
+ <translation>%1: Ugyldig størrelse</translation>
+ </message>
+ <message>
+ <location line="+68"/>
+ <source>%1: key error</source>
+ <translation>%1: Nøglefejl</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>%1: size query failed</source>
+ <translation>%1: Størrelsesforespørgsel mislykkedes</translation>
+ </message>
+</context>
+<context>
+ <name>QShortcut</name>
+ <message>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+373"/>
+ <source>Space</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Esc</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Tab</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Backtab</source>
+ <translation>Tilbage-tabulator</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Backspace</source>
+ <translation>Tilbage</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Return</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Enter</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ins</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Del</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Pause</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Print</source>
+ <translation>Udskriv</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>SysReq</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Home</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>End</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Left</source>
+ <translation>Venstre</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Up</source>
+ <translation>Op</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Right</source>
+ <translation>Højre</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Down</source>
+ <translation>Ned</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>PgUp</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>PgDown</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>CapsLock</source>
+ <translation>&apos;</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>NumLock</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>ScrollLock</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Menu</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Help</source>
+ <translation>Hjælp</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Back</source>
+ <translation>Tilbage</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Forward</source>
+ <translation>Frem</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Stop</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Refresh</source>
+ <translation>Opdater</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Volume Down</source>
+ <translation>Lydstyrke ned</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Volume Mute</source>
+ <translation>Lydstyrke mute</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Volume Up</source>
+ <translation>Lydstyrke op</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Bass Boost</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Bass Up</source>
+ <translation>Bass op</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Bass Down</source>
+ <translation>Bass ned</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Treble Up</source>
+ <translation>Diskant op</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Treble Down</source>
+ <translation>Diskant ned</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Media Play</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Media Stop</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Media Previous</source>
+ <translation>Media forrige</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Media Next</source>
+ <translation>Media næste</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Media Record</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Favorites</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Search</source>
+ <translation>Søg</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Standby</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Open URL</source>
+ <translation>Åbn URL</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch Mail</source>
+ <translation>Start mail</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch Media</source>
+ <translation>Start Media</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (0)</source>
+ <translation>Start (0)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (1)</source>
+ <translation>Start (1)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (2)</source>
+ <translation>Start (2)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (3)</source>
+ <translation>Start (3)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (4)</source>
+ <translation>Start (4)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (5)</source>
+ <translation>Start (5)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (6)</source>
+ <translation>Start (6)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (7)</source>
+ <translation>Start (7)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (8)</source>
+ <translation>Start (8)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (9)</source>
+ <translation>Start (9)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (A)</source>
+ <translation>Start (A)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (B)</source>
+ <translation>Start (B)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (C)</source>
+ <translation>Start (C)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (D)</source>
+ <translation>Start (D)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (E)</source>
+ <translation>Start (E)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (F)</source>
+ <translation>Start (F)</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Print Screen</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Page Up</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Page Down</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Caps Lock</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Num Lock</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Number Lock</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scroll Lock</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Insert</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Delete</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Escape</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>System Request</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Select</source>
+ <translation>Væg</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Yes</source>
+ <translation>Ja</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>No</source>
+ <translation>Nej</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Context1</source>
+ <translation>Kontekst1</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Context2</source>
+ <translation>Kontekst2</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Context3</source>
+ <translation>Kontekst3</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Context4</source>
+ <translation>Kontekst4</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Call</source>
+ <translation>Ring til</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangup</source>
+ <translation>Læg på</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Flip</source>
+ <translation>Vend</translation>
+ </message>
+ <message>
+ <location line="+527"/>
+ <location line="+122"/>
+ <source>Ctrl</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-121"/>
+ <location line="+125"/>
+ <source>Shift</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-124"/>
+ <location line="+122"/>
+ <source>Alt</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-121"/>
+ <location line="+117"/>
+ <source>Meta</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-25"/>
+ <source>+</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+46"/>
+ <source>F%1</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-720"/>
+ <source>Home Page</source>
+ <translation>Startside</translation>
+ </message>
+</context>
+<context>
+ <name>QSlider</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+151"/>
+ <source>Page left</source>
+ <translation>Side venstre</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Page up</source>
+ <translation>Side op</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Position</source>
+ <translation>Placering</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Page right</source>
+ <translation>Side højre</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Page down</source>
+ <translation>Side ned</translation>
+ </message>
+</context>
+<context>
+ <name>QSocks5SocketEngine</name>
+ <message>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="-67"/>
+ <source>Connection to proxy refused</source>
+ <translation>Proxy-forbindelse nægtede</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Connection to proxy closed prematurely</source>
+ <translation>Proxy-forbindelse afsluttede i utide</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Proxy host not found</source>
+ <translation>Proxy-host kunne ikke findes</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Connection to proxy timed out</source>
+ <translation>Proxy-serverforbindelse timed out</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Proxy authentication failed</source>
+ <translation>Proxy autentificering mislykkedes</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Proxy authentication failed: %1</source>
+ <translation>Proxy autentificering mislykkedes: %1</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>SOCKS version 5 protocol error</source>
+ <translation>SOCKS version 5 protokolfejl</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>General SOCKSv5 server failure</source>
+ <translation>General SOCKSv5 serverfejl</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Connection not allowed by SOCKSv5 server</source>
+ <translation>Forbindelse ikke tilladt a SOCKSv5-server</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>TTL expired</source>
+ <translation>TTL udløbet</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>SOCKSv5 command not supported</source>
+ <translation>SOCKSv5-kommando ikke understøttet</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Address type not supported</source>
+ <translation>Adressetype understøttes ikke</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Unknown SOCKSv5 proxy error code 0x%1</source>
+ <translation>Ukendt SOCKSv5 proxy fejlkode 0x%1</translation>
+ </message>
+ <message>
+ <location line="+685"/>
+ <source>Network operation timed out</source>
+ <translation>Netværksoperationen timed out</translation>
+ </message>
+</context>
+<context>
+ <name>QSpinBox</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-574"/>
+ <source>More</source>
+ <translation>Mere</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Less</source>
+ <translation>Mindre</translation>
+ </message>
+</context>
+<context>
+ <name>QSql</name>
+ <message>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+890"/>
+ <source>Delete</source>
+ <translation>Slet</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Delete this record?</source>
+ <translation>Slet denne post?</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <location line="+16"/>
+ <location line="+36"/>
+ <source>Yes</source>
+ <translation>Ja</translation>
+ </message>
+ <message>
+ <location line="-51"/>
+ <location line="+16"/>
+ <location line="+36"/>
+ <source>No</source>
+ <translation>Nej</translation>
+ </message>
+ <message>
+ <location line="-44"/>
+ <source>Insert</source>
+ <translation>Indsæt</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Update</source>
+ <translation>Opdater</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Save edits?</source>
+ <translation>Gem ændringer?</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Confirm</source>
+ <translation>Bekræft</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Cancel your edits?</source>
+ <translation>Skal dine ændringer annulleres?</translation>
+ </message>
+</context>
+<context>
+ <name>QSslSocket</name>
+ <message>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+569"/>
+ <source>Unable to write data: %1</source>
+ <translation>Kunne ikke skrive data: %1</translation>
+ </message>
+ <message>
+ <location line="+119"/>
+ <source>Error while reading: %1</source>
+ <translation>Der opstod en fejl under læsning af: %1</translation>
+ </message>
+ <message>
+ <location line="+96"/>
+ <source>Error during SSL handshake: %1</source>
+ <translation>Der opstod en fejl under SSL handshake: %1</translation>
+ </message>
+ <message>
+ <location line="-524"/>
+ <source>Error creating SSL context (%1)</source>
+ <translation>Der opstod fejl under oprettelse af SSL-kontekst (%1)</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Invalid or empty cipher list (%1)</source>
+ <translation>Ugyldig eller tom chifferliste (%1)</translation>
+ </message>
+ <message>
+ <location line="+62"/>
+ <source>Error creating SSL session, %1</source>
+ <translation>Der opstod fejl under oprettelse af SSL-session, %1</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Error creating SSL session: %1</source>
+ <translation>Der opstod fejl under oprettelse af SSL-session, %1</translation>
+ </message>
+ <message>
+ <location line="-61"/>
+ <source>Cannot provide a certificate with no key, %1</source>
+ <translation>Kan ikke give et certifikat uden nøgle, %1</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Error loading local certificate, %1</source>
+ <translation>Der opstod fejl under indlæsning af lokalt certifikat, %1</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Error loading private key, %1</source>
+ <translation>Der opstod fejl under indlæsning af privat nøgle, %1</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Private key does not certificate public key, %1</source>
+ <translation>Privat-nøgle autoriserer ikke offentlig-nøgle, %1</translation>
+ </message>
+</context>
+<context>
+ <name>QSystemSemaphore</name>
+ <message>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-41"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+66"/>
+ <source>%1: out of resources</source>
+ <translation>%1: Ikke flere ressourcer</translation>
+ </message>
+ <message>
+ <location line="-13"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+4"/>
+ <source>%1: permission denied</source>
+ <translation>%1: Tilladelse nægtet</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1: already exists</source>
+ <translation>%1: Findes allerede</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1: does not exist</source>
+ <translation>%1: Findes ikke</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+3"/>
+ <source>%1: unknown error %2</source>
+ <translation>%1: Ukendt fejl %2</translation>
+ </message>
+</context>
+<context>
+ <name>QTDSDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
+ <source>Unable to open connection</source>
+ <translation>Kunne ikke etablere forbindelsen</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Unable to use database</source>
+ <translation>Kunne ikke bruge databasen</translation>
+ </message>
+</context>
+<context>
+ <name>QTabBar</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="-326"/>
+ <source>Scroll Left</source>
+ <translation>Scroll til venstre</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Scroll Right</source>
+ <translation>Scroll til højre</translation>
+ </message>
+</context>
+<context>
+ <name>QTcpServer</name>
+ <message>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
+ <source>Operation on socket is not supported</source>
+ <translation>Socket-operation ikke understøttet</translation>
+ </message>
+</context>
+<context>
+ <name>QTextControl</name>
+ <message>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+1973"/>
+ <source>&amp;Undo</source>
+ <translation>&amp;Fortryd</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&amp;Redo</source>
+ <translation>&amp;Gendan</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Cu&amp;t</source>
+ <translation>K&amp;lip</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&amp;Copy</source>
+ <translation>&amp;Kopiér</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Copy &amp;Link Location</source>
+ <translation>Kopiér l&amp;ink</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>&amp;Paste</source>
+ <translation>&amp;Sæt ind</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Delete</source>
+ <translation>Slet</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Select All</source>
+ <translation>Markér alt</translation>
+ </message>
+</context>
+<context>
+ <name>QToolButton</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+254"/>
+ <location line="+6"/>
+ <source>Press</source>
+ <translation>Tryk på</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <location line="+8"/>
+ <source>Open</source>
+ <translation>Åbn</translation>
+ </message>
+</context>
+<context>
+ <name>QUdpSocket</name>
+ <message>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+169"/>
+ <source>This platform does not support IPv6</source>
+ <translation>Denne platform understøtter ikke IPv6</translation>
+ </message>
+</context>
+<context>
+ <name>QUndoGroup</name>
+ <message>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+386"/>
+ <source>Undo</source>
+ <translation>Fortryd</translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <source>Redo</source>
+ <translation>Gendan</translation>
+ </message>
+</context>
+<context>
+ <name>QUndoModel</name>
+ <message>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
+ <source>&lt;empty&gt;</source>
+ <translation>&lt;tom&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>QUndoStack</name>
+ <message>
+ <location filename="../src/gui/util/qundostack.cpp" line="+834"/>
+ <source>Undo</source>
+ <translation>Fortryd</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Redo</source>
+ <translation>Gendan</translation>
+ </message>
+</context>
+<context>
+ <name>QUnicodeControlCharacterMenu</name>
+ <message>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+884"/>
+ <source>LRM Left-to-right mark</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>RLM Right-to-left mark</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>ZWJ Zero width joiner</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>ZWNJ Zero width non-joiner</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>ZWSP Zero width space</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>LRE Start of left-to-right embedding</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>RLE Start of right-to-left embedding</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>LRO Start of left-to-right override</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>RLO Start of right-to-left override</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>PDF Pop directional formatting</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Insert Unicode control character</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>QWebFrame</name>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+692"/>
+ <source>Request cancelled</source>
+ <translation>Anmodning annulleret</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Request blocked</source>
+ <translation>Anmodning blokeret</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Cannot show URL</source>
+ <translation>Kan ikke vise URL</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Frame load interruped by policy change</source>
+ <translation>Billedindlæsning afbrudt af ændringer i retningslinier</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Cannot show mimetype</source>
+ <translation>Kan ikke vise MIME-type</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>File does not exist</source>
+ <translation>Filen findes ikke</translation>
+ </message>
+</context>
+<context>
+ <name>QWebPage</name>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+384"/>
+ <source>Bad HTTP request</source>
+ <translation>Dårlig HTTP-anmodning</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+42"/>
+ <source>Submit</source>
+ <comment>default label for Submit buttons in forms on web pages</comment>
+ <translation>Send</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Submit</source>
+ <comment>Submit (input element) alt text for &lt;input&gt; elements with no alt, title, or value</comment>
+ <translation>Send</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Reset</source>
+ <comment>default label for Reset buttons in forms on web pages</comment>
+ <translation>Nulstil</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>This is a searchable index. Enter search keywords: </source>
+ <comment>text that appears at the start of nearly-obsolete web pages in the form of a &apos;searchable index&apos;</comment>
+ <translation>Dette er et søgeindeks. Indtast søgeord:</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Choose File</source>
+ <comment>title for file button used in HTML forms</comment>
+ <translation>Vælg fil</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>No file selected</source>
+ <comment>text to display in file button used in HTML forms when no file is selected</comment>
+ <translation>Der er ikke valgt en fil</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Open in New Window</source>
+ <comment>Open in New Window context menu item</comment>
+ <translation>Åbn i nyt vindue</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Save Link...</source>
+ <comment>Download Linked File context menu item</comment>
+ <translation>Gem link...</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Copy Link</source>
+ <comment>Copy Link context menu item</comment>
+ <translation>Kopiér link</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Open Image</source>
+ <comment>Open Image in New Window context menu item</comment>
+ <translation>Åbn billede</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Save Image</source>
+ <comment>Download Image context menu item</comment>
+ <translation>Gem billede</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Copy Image</source>
+ <comment>Copy Link context menu item</comment>
+ <translation>Kopiér billede</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Open Frame</source>
+ <comment>Open Frame in New Window context menu item</comment>
+ <translation>Åbn faneblad</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Copy</source>
+ <comment>Copy context menu item</comment>
+ <translation>Kopiér</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Go Back</source>
+ <comment>Back context menu item</comment>
+ <translation>Gå tilbage</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Go Forward</source>
+ <comment>Forward context menu item</comment>
+ <translation>Gå frem</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Stop</source>
+ <comment>Stop context menu item</comment>
+ <translation>Stop</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Reload</source>
+ <comment>Reload context menu item</comment>
+ <translation>Genindlæs</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Cut</source>
+ <comment>Cut context menu item</comment>
+ <translation>Klip</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Paste</source>
+ <comment>Paste context menu item</comment>
+ <translation>Sæt ind</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>No Guesses Found</source>
+ <comment>No Guesses Found context menu item</comment>
+ <translation>Der er ikke fundet nogen gæt</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Ignore</source>
+ <comment>Ignore Spelling context menu item</comment>
+ <translation>Ignorér</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Add To Dictionary</source>
+ <comment>Learn Spelling context menu item</comment>
+ <translation>Tilføj til ordbog</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Search The Web</source>
+ <comment>Search The Web context menu item</comment>
+ <translation>Søg på nettet</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Look Up In Dictionary</source>
+ <comment>Look Up in Dictionary context menu item</comment>
+ <translation>Slå op i ordbog</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Open Link</source>
+ <comment>Open Link context menu item</comment>
+ <translation>Åbn link</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Ignore</source>
+ <comment>Ignore Grammar context menu item</comment>
+ <translation>Ignorér</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Spelling</source>
+ <comment>Spelling and Grammar context sub-menu item</comment>
+ <translation>Stavekontrol</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Show Spelling and Grammar</source>
+ <comment>menu item title</comment>
+ <translation>Vis stave- og grammatikkontrol</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hide Spelling and Grammar</source>
+ <comment>menu item title</comment>
+ <translation>Skjul stave- og grammatikkontrol</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Check Spelling</source>
+ <comment>Check spelling context menu item</comment>
+ <translation>Kør stavekontrol</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Check Spelling While Typing</source>
+ <comment>Check spelling while typing context menu item</comment>
+ <translation>Kør stavekontrol mens der tastes</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Check Grammar With Spelling</source>
+ <comment>Check grammar with spelling context menu item</comment>
+ <translation>Kør grammatikkontrol sammen med stavekontrol</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Fonts</source>
+ <comment>Font context sub-menu item</comment>
+ <translation>Skrifttyper</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Bold</source>
+ <comment>Bold context menu item</comment>
+ <translation>Fed</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Italic</source>
+ <comment>Italic context menu item</comment>
+ <translation>Kursiv</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Underline</source>
+ <comment>Underline context menu item</comment>
+ <translation>Understreget</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Outline</source>
+ <comment>Outline context menu item</comment>
+ <translation>Kontur</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Direction</source>
+ <comment>Writing direction context sub-menu item</comment>
+ <translation>Retning</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Text Direction</source>
+ <comment>Text direction context sub-menu item</comment>
+ <translation>Tekstretning</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Default</source>
+ <comment>Default writing direction context menu item</comment>
+ <translation>Standard</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>LTR</source>
+ <comment>Left to Right context menu item</comment>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>RTL</source>
+ <comment>Right to Left context menu item</comment>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Inspect</source>
+ <comment>Inspect Element context menu item</comment>
+ <translation>Inspicér</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>No recent searches</source>
+ <comment>Label for only item in menu that appears when clicking on the search field image, when no searches have been performed</comment>
+ <translation>Ingen aktuelle søgninger</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Recent searches</source>
+ <comment>label for first item in the menu that appears when clicking on the search field image, used as embedded menu title</comment>
+ <translation>Aktuelle søgninger</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Clear recent searches</source>
+ <comment>menu item in Recent Searches menu that empties menu&apos;s contents</comment>
+ <translation>Ryd aktuelle søgninger</translation>
+ </message>
+ <message>
+ <location line="+75"/>
+ <source>Unknown</source>
+ <comment>Unknown filesize FTP directory listing item</comment>
+ <translation>Ukendt</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>%1 (%2x%3 pixels)</source>
+ <comment>Title string for images</comment>
+ <translation>%1 (%2x%3 pixels)</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+185"/>
+ <source>Web Inspector - %2</source>
+ <translation>Web-inspektør - %2</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+58"/>
+ <source>Scroll here</source>
+ <translation>Scroll her</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Left edge</source>
+ <translation>Venstre kant</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Top</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Right edge</source>
+ <translation>Højre kant</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Bottom</source>
+ <translation>Bund</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Page left</source>
+ <translation>Side venstre</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Page up</source>
+ <translation>Side øverst</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Page right</source>
+ <translation>Side højre</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Page down</source>
+ <translation>Side ned</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Scroll left</source>
+ <translation>Scroll til venstre</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Scroll up</source>
+ <translation>Scroll op</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scroll right</source>
+ <translation>Scroll til højre</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Scroll down</source>
+ <translation>Scroll ned</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/FileChooserQt.cpp" line="+45"/>
+ <source>%n file(s)</source>
+ <comment>number of chosen file</comment>
+ <translation>
+ <numerusform>%n fil</numerusform>
+ <numerusform>%n filer</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1322"/>
+ <source>JavaScript Alert - %1</source>
+ <translation>JavaScript alert - %1</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>JavaScript Confirm - %1</source>
+ <translation>JavaScript Bekræft - %1</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>JavaScript Prompt - %1</source>
+ <translation>JavaScript Prompt - %1</translation>
+ </message>
+ <message>
+ <location line="+340"/>
+ <source>Move the cursor to the next character</source>
+ <translation>Flyt markør til næste tegn</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the previous character</source>
+ <translation>Flyt markør til forrige tegn</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the next word</source>
+ <translation>Flyt markør til næste ord</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the previous word</source>
+ <translation>Flyt markør til forrige ord</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the next line</source>
+ <translation>Flyt markør til næste linie</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the previous line</source>
+ <translation>Flyt markør til forrige linie</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the start of the line</source>
+ <translation>Flyt markør til starten af linien</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the end of the line</source>
+ <translation>Flyt markør til slutningen af linien</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the start of the block</source>
+ <translation>Flyt markør til starten af sektionen</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the end of the block</source>
+ <translation>Flyt markør til slutningen af sektionen</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the start of the document</source>
+ <translation>Flyt markør til starten af dokumentet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Move the cursor to the end of the document</source>
+ <translation>Flyt markør til slutningen af dokumentet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select all</source>
+ <translation>Markér alt</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the next character</source>
+ <translation>Vælg til næste tegn</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the previous character</source>
+ <translation>Vælg til forrige tegn</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the next word</source>
+ <translation>Vælg til næste ord</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the previous word</source>
+ <translation>Vælg til forrige ord</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the next line</source>
+ <translation>Vælg til næste linie</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the previous line</source>
+ <translation>Vælg til forrige linie</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the start of the line</source>
+ <translation>Vælg til starten af linien</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the end of the line</source>
+ <translation>Vælg til slutningen af linien</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the start of the block</source>
+ <translation>Vælg til starten af sektionen</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the end of the block</source>
+ <translation>Vælg til slutningen af sektionen</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the start of the document</source>
+ <translation>Vælg til starten af dokumentet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select to the end of the document</source>
+ <translation>Vælg til slutningen af dokumentet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Delete to the start of the word</source>
+ <translation>Slet til starten af ordet</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Delete to the end of the word</source>
+ <translation>Slet til slutningen af ordet</translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>Insert a new paragraph</source>
+ <translation>Indsæt et nyt afsnit</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation>Insert ny linie</translation>
+ </message>
+</context>
+<context>
+ <name>QWhatsThisAction</name>
+ <message>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+522"/>
+ <source>What&apos;s This?</source>
+ <translation>Hvad er dette?</translation>
+ </message>
+</context>
+<context>
+ <name>QWidget</name>
+ <message>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5340"/>
+ <source>*</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>QWizard</name>
+ <message>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+637"/>
+ <source>Go Back</source>
+ <translation>Gå tilbage</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Continue</source>
+ <translation>Fortsæt</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Commit</source>
+ <translation>Udfør</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Done</source>
+ <translation>Færdig</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Help</source>
+ <translation>Hjælp</translation>
+ </message>
+ <message>
+ <location line="-14"/>
+ <source>&lt; &amp;Back</source>
+ <translation>&lt; &amp;Tilbage</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>&amp;Finish</source>
+ <translation>&amp;Afslut</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Cancel</source>
+ <translation>Annuller</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&amp;Help</source>
+ <translation>&amp;Hjælp</translation>
+ </message>
+ <message>
+ <location line="-8"/>
+ <source>&amp;Next</source>
+ <translation>&amp;Næste</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>&amp;Next &gt;</source>
+ <translation>&amp;Næste &gt;</translation>
+ </message>
+</context>
+<context>
+ <name>QWorkspace</name>
+ <message>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1094"/>
+ <source>&amp;Restore</source>
+ <translation>&amp;Gendan</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Move</source>
+ <translation>&amp;Flyt</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&amp;Size</source>
+ <translation>&amp;Størrelse</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Mi&amp;nimize</source>
+ <translation>Mi&amp;nimér</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Ma&amp;ximize</source>
+ <translation>Ma&amp;ksimér</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&amp;Close</source>
+ <translation>&amp;Luk</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Stay on &amp;Top</source>
+ <translation>Bliv på &amp;toppen</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location line="+1059"/>
+ <source>Sh&amp;ade</source>
+ <translation>Sk&amp;ygge</translation>
+ </message>
+ <message>
+ <location line="-278"/>
+ <location line="+60"/>
+ <source>%1 - [%2]</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="-1837"/>
+ <source>Minimize</source>
+ <translation>Minimer</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Restore Down</source>
+ <translation>Gendan ned</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>Close</source>
+ <translation>Luk</translation>
+ </message>
+ <message>
+ <location line="+2053"/>
+ <source>&amp;Unshade</source>
+ <translation>&amp;Fjern skygge</translation>
+ </message>
+</context>
+<context>
+ <name>QXml</name>
+ <message>
+ <location filename="../src/xml/sax/qxml.cpp" line="+58"/>
+ <source>no error occurred</source>
+ <translation>der opstod ingen fejl</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>error triggered by consumer</source>
+ <translation>Fejltilstand rejst af datamodtager</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>unexpected end of file</source>
+ <translation>uventet afslutning på fil</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>more than one document type definition</source>
+ <translation>mere end én definition på dokumenttype</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>error occurred while parsing element</source>
+ <translation>der opstod fejl under fortolking af element</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>tag mismatch</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>error occurred while parsing content</source>
+ <translation>der opstod fejl under fortolking af indhold</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>unexpected character</source>
+ <translation>uventet tegn</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>invalid name for processing instruction</source>
+ <translation>Ugyldigt navn for processing instruction</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>version expected while reading the XML declaration</source>
+ <translation>version forventet under læsning af XML-deklaration</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>wrong value for standalone declaration</source>
+ <translation>Forkert værdi for fri deklaration</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>encoding declaration or standalone declaration expected while reading the XML declaration</source>
+ <translation>Enkodningsdeklaration eller fri deklaration forventet ved læsning af XML-deklaration</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>standalone declaration expected while reading the XML declaration</source>
+ <translation>fri deklaration forventet ved læsning af XML-deklaration</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>error occurred while parsing document type definition</source>
+ <translation>der opstod fejl under fortolking af dokumenttypedefinition</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>letter is expected</source>
+ <translation>bogstav forventet</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>error occurred while parsing comment</source>
+ <translation>der opstod fejl under fortolking af kommentar</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>error occurred while parsing reference</source>
+ <translation>der opstod fejl under fortolking af reference</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>internal general entity reference not allowed in DTD</source>
+ <translation>intern generel entitetsreference ikke tilladt i DTD</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>external parsed general entity reference not allowed in attribute value</source>
+ <translation>Eksternt parset generel entitetsreference ikke tilladt i attributværdi</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>external parsed general entity reference not allowed in DTD</source>
+ <translation>Eksternt parset generel entitetsreference ikke tilladt i DTD</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>unparsed entity reference in wrong context</source>
+ <translation>ufortolket enhedsreference i forkert kontekst</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>recursive entities</source>
+ <translation>rekursive entiteter</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>error in the text declaration of an external entity</source>
+ <translation>fejl i tekstdeklaration på en ekstern enhed</translation>
+ </message>
+</context>
+<context>
+ <name>QXmlStream</name>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+592"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1769"/>
+ <source>Extra content at end of document.</source>
+ <translation>Ekstra indhold sidst i dokumentet.</translation>
+ </message>
+ <message>
+ <location line="+222"/>
+ <source>Invalid entity value.</source>
+ <translation>Ugyldig enhedsværdi.</translation>
+ </message>
+ <message>
+ <location line="+107"/>
+ <source>Invalid XML character.</source>
+ <translation>Ugyldigt XML-tegn.</translation>
+ </message>
+ <message>
+ <location line="+259"/>
+ <source>Sequence &apos;]]&gt;&apos; not allowed in content.</source>
+ <translation>Sekvens &apos;]]&gt;&apos; ikke tilladt i indhold.</translation>
+ </message>
+ <message>
+ <location line="+309"/>
+ <source>Namespace prefix &apos;%1&apos; not declared</source>
+ <translation>Navnerumspræfiks &apos;%1&apos; ikke deklareret</translation>
+ </message>
+ <message>
+ <location line="+78"/>
+ <source>Attribute redefined.</source>
+ <translation>Attribut redefineret.</translation>
+ </message>
+ <message>
+ <location line="+115"/>
+ <source>Unexpected character &apos;%1&apos; in public id literal.</source>
+ <translation>Uventet tegn &apos;%1&apos; i public id værdi.</translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <source>Invalid XML version string.</source>
+ <translation>Ugyldigt XML-versionsstreng.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Unsupported XML version.</source>
+ <translation>XML-version understøttes ikke.</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>%1 is an invalid encoding name.</source>
+ <translation>%1 er et ugyldigt enkodningsnavn.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Encoding %1 is unsupported</source>
+ <translation>Enkodning %1 er ikke understøttet</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Standalone accepts only yes or no.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Invalid attribute in XML declaration.</source>
+ <translation>Ugyldig attribut i XML-deklaration.</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Premature end of document.</source>
+ <translation>Dokument sluttede for tidligt.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Invalid document.</source>
+ <translation>Ugyldigt dokument.</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>Expected </source>
+ <translation>Forventet</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>, but got &apos;</source>
+ <translation>, men fik &apos;</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Unexpected &apos;</source>
+ <translation>Uventet &apos;</translation>
+ </message>
+ <message>
+ <location line="+210"/>
+ <source>Expected character data.</source>
+ <translation>Forventet tegndata.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-995"/>
+ <source>Recursive entity detected.</source>
+ <translation>Rekursiv entitet opdaget.</translation>
+ </message>
+ <message>
+ <location line="+516"/>
+ <source>Start tag expected.</source>
+ <translation>Start-tag forventet.</translation>
+ </message>
+ <message>
+ <location line="+222"/>
+ <source>XML declaration not at start of document.</source>
+ <translation>XML-deklaration ikke i starten af dokumentet.</translation>
+ </message>
+ <message>
+ <location line="-31"/>
+ <source>NDATA in parameter entity declaration.</source>
+ <translation>NDATA i parameterentitetsdeklaration.</translation>
+ </message>
+ <message>
+ <location line="+34"/>
+ <source>%1 is an invalid processing instruction name.</source>
+ <translation>%1 er et ugyldigt processing-instruction-navn.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Invalid processing instruction name.</source>
+ <translation>Ugyldigt processing-instruction-navn.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="-521"/>
+ <location line="+12"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+164"/>
+ <location line="+53"/>
+ <source>Illegal namespace declaration.</source>
+ <translation>Ulovligt navnerumsdeklaration.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+15"/>
+ <source>Invalid XML name.</source>
+ <translation>Ugyldigt XML-navn.</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Opening and ending tag mismatch.</source>
+ <translation>Åbner og afslutter tag-mismatch.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Reference to unparsed entity &apos;%1&apos;.</source>
+ <translation>Reference to ufortolket enhed &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <location line="-13"/>
+ <location line="+61"/>
+ <location line="+40"/>
+ <source>Entity &apos;%1&apos; not declared.</source>
+ <translation>Enheden &apos;%1&apos; ikke deklareret.</translation>
+ </message>
+ <message>
+ <location line="-26"/>
+ <source>Reference to external entity &apos;%1&apos; in attribute value.</source>
+ <translation>Reference til ekstern enhed &apos;%1&apos; i attributværdi.</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>Invalid character reference.</source>
+ <translation>Ugyldig tegnreference.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="-75"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-823"/>
+ <source>Encountered incorrectly encoded content.</source>
+ <translation>Indhold med forkert enkodning læst.</translation>
+ </message>
+ <message>
+ <location line="+274"/>
+ <source>The standalone pseudo attribute must appear after the encoding.</source>
+ <translation>Den frie pseudo-attribut skal optræde efter enkodningen.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+562"/>
+ <source>%1 is an invalid PUBLIC identifier.</source>
+ <translation>%1 er en ugyldig PUBLIC identifier.</translation>
+ </message>
+</context>
+<context>
+ <name>QtXmlPatterns</name>
+ <message>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreebuilder.cpp" line="+205"/>
+ <source>An %1-attribute with value %2 has already been declared.</source>
+ <translation>En %1-attribut med værdi %2 er allerede erklæret.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>An %1-attribute must have a valid %2 as value, which %3 isn&apos;t.</source>
+ <translation>En %1-attribut skal have en gyldig %2 som værdi, hvilket %3 ikke er.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
+ <source>Network timeout.</source>
+ <translation>Netværk timeout.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+320"/>
+ <source>Element %1 can&apos;t be serialized because it appears outside the document element.</source>
+ <translation>Element %1 kan ikke serialiseres fordi det optræder udenfor dokument-elementet.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+80"/>
+ <source>Year %1 is invalid because it begins with %2.</source>
+ <translation>År %1 er ugyldigt da det begynder med %2.</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Day %1 is outside the range %2..%3.</source>
+ <translation>Dag %1 er udenfor intervallet %2..%3.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Month %1 is outside the range %2..%3.</source>
+ <translation>Måned %1 er udenfor intervallet %2..%3.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Overflow: Can&apos;t represent date %1.</source>
+ <translation>Overflow: Kan ikke repræsentere dato %1.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Day %1 is invalid for month %2.</source>
+ <translation>Dag %1 er ugyldig for månet %2.</translation>
+ </message>
+ <message>
+ <location line="+49"/>
+ <source>Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; </source>
+ <translation>Tidspunkt 24:%1:%2.%3 er ugyldigt. Timetal er 24, men minutter, sekunder og millisekunder er ikke alle 0; </translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Time %1:%2:%3.%4 is invalid.</source>
+ <translation>Tidspunkt %1:%2:%3.%4 er ugyldigt.</translation>
+ </message>
+ <message>
+ <location line="+115"/>
+ <source>Overflow: Date can&apos;t be represented.</source>
+ <translation>Overflow: Dato kan ikke repræsenteres.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
+ <location line="+15"/>
+ <source>At least one component must be present.</source>
+ <translation>Mindst en komponent skal være tilstede.</translation>
+ </message>
+ <message>
+ <location line="-7"/>
+ <source>At least one time component must appear after the %1-delimiter.</source>
+ <translation>Mindst en tidskomponent skal optræde efter %1-skillemærket.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qabstractfloatmathematician.cpp" line="+64"/>
+ <source>No operand in an integer division, %1, can be %2.</source>
+ <translation>Ingen operand i en heltalsdivision, %1, kan være %2.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>The first operand in an integer division, %1, cannot be infinity (%2).</source>
+ <translation>Den første operand i en heltalsdivision, %1, kan ikke være uendeligt (%2).</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>The second operand in a division, %1, cannot be zero (%2).</source>
+ <translation>Den anden operand i en division, %1, kan ikke være nul (%2).</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
+ <source>%1 is not a valid value of type %2.</source>
+ <translation>%1 er ikke en gyldig værdi af typen %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+223"/>
+ <source>When casting to %1 from %2, the source value cannot be %3.</source>
+ <translation>Ved cast til %1 fra %2, kan kildeværdien ikke være %3.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
+ <source>Integer division (%1) by zero (%2) is undefined.</source>
+ <translation>Heltalsdivision (%1) med nul (%2) er udefineret.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Division (%1) by zero (%2) is undefined.</source>
+ <translation>Division (%1) med nul (%2) er udefineret.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Modulus division (%1) by zero (%2) is undefined.</source>
+ <translation>Modulusdivision (%1) med nul (%2) er udefineret.</translation>
+ </message>
+ <message>
+ <location line="+122"/>
+ <location line="+32"/>
+ <source>Dividing a value of type %1 by %2 (not-a-number) is not allowed.</source>
+ <translation>Division af værdi af typen %1 med %2 (ikke et tal) er ikke tilladt.</translation>
+ </message>
+ <message>
+ <location line="-20"/>
+ <source>Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
+ <source>A value of type %1 cannot have an Effective Boolean Value.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+78"/>
+ <source>Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
+ <source>Value %1 of type %2 exceeds maximum (%3).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Value %1 of type %2 is below minimum (%3).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+91"/>
+ <source>A value of type %1 must contain an even number of digits. The value %2 does not.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>%1 is not valid as a value of type %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
+ <source>Operator %1 cannot be used on type %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Operator %1 cannot be used on atomic values of type %2 and %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+66"/>
+ <source>The namespace URI in the name for a computed attribute cannot be %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>The name for a computed attribute cannot have the namespace URI %1 with the local name %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
+ <source>Type error in cast, expected %1, received %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>When casting to %1 or types derived from it, the source value must be of the same type, or it must be a string literal. Type %2 is not allowed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcastingplatform.cpp" line="+134"/>
+ <source>No casting is possible with %1 as the target type.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>It is not possible to cast from %1 to %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Casting to %1 is not possible because it is an abstract type, and can therefore never be instantiated.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>It&apos;s not possible to cast the value %1 of type %2 to %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Failure when casting from %1 to %2: %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
+ <source>A comment cannot contain %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>A comment cannot end with a %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcomparisonplatform.cpp" line="+167"/>
+ <source>No comparisons can be done involving the type %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Operator %1 is not available between atomic values of type %2 and %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+86"/>
+ <source>An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+169"/>
+ <source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>No template by name %1 exists.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+106"/>
+ <source>A value of type %1 cannot be a predicate. A predicate must have either a numeric type or an Effective Boolean Value type.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>A positional predicate must evaluate to a single numeric value.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+113"/>
+ <source>The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>%1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+109"/>
+ <source>The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
+ <source>The data of a processing instruction cannot contain the string %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
+ <source>No namespace binding exists for the prefix %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+156"/>
+ <source>No namespace binding exists for the prefix %1 in %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+69"/>
+ <source>%1 is an invalid %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
+ <source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location line="+11"/>
+ <source>%1 requires at least %n argument(s). %2 is therefore invalid.</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+120"/>
+ <source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+74"/>
+ <source>The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+91"/>
+ <source>The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
+ <source>%1 is not a valid XML 1.0 character.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qcomparingaggregator.cpp" line="+197"/>
+ <source>The first argument to %1 cannot be of type %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+86"/>
+ <source>If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
+ <source>%1 was called.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+94"/>
+ <source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>In the replacement string, %1 can only be used to escape itself or %2, not %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+92"/>
+ <source>%1 matches newline characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1 and %2 match the start and end of a line.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Matches are case insensitive</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Whitespace characters are removed, except when they appear in character classes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+99"/>
+ <source>%1 is an invalid regular expression pattern: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>%1 is an invalid flag for regular expressions. Valid flags are:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+17"/>
+ <source>If the first argument is the empty sequence or a zero-length string (no namespace), a prefix cannot be specified. Prefix %1 was specified.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+346"/>
+ <source>It will not be possible to retrieve %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+54"/>
+ <source>The root node of the second argument to function %1 must be a document node. %2 is not a document node.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
+ <source>The default collection is undefined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>%1 cannot be retrieved</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+252"/>
+ <source>The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+87"/>
+ <source>A zone offset must be in the range %1..%2 inclusive. %3 is out of range.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>%1 is not a whole number of minutes.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
+ <source>Required cardinality is %1; got cardinality %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
+ <source>The item %1 did not match the required type %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+379"/>
+ <location line="+7253"/>
+ <source>%1 is an unknown schema type.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-6971"/>
+ <source>Only one %1 declaration can occur in the query prolog.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+188"/>
+ <source>The initialization of variable %1 depends on itself</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+63"/>
+ <source>No variable by name %1 exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
+ <source>The variable %1 is unused</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2841"/>
+ <source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>The encoding %1 is invalid. It must contain Latin characters only, must not contain whitespace, and must match the regular expression %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>No function with signature %1 is available</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+72"/>
+ <location line="+10"/>
+ <source>A default namespace declaration must occur before function, variable, and option declarations.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Namespace declarations must occur before function, variable, and option declarations.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Module imports must occur before function, variable, and option declarations.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+200"/>
+ <source>It is not possible to redeclare prefix %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Prefix %1 is already declared in the prolog.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+95"/>
+ <source>The name of an option must have a prefix. There is no default namespace for options.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+171"/>
+ <source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>The target namespace of a %1 cannot be empty.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>The module import feature is not supported</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+52"/>
+ <source>No value is available for the external variable by name %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-4154"/>
+ <source>A construct was encountered which only is allowed in XQuery.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+118"/>
+ <source>A template by name %1 has already been declared.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+3581"/>
+ <source>The keyword %1 cannot occur with any other mode name.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>The value of attribute %1 must of type %2, which %3 isn&apos;t.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+75"/>
+ <source>The prefix %1 can not be bound. By default, it is already bound to the namespace %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+312"/>
+ <source>A variable by name %1 has already been declared.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+135"/>
+ <source>A stylesheet function must have a prefixed name.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>The namespace %1 is reserved; therefore user defined functions may not use it. Try the predefined prefix %2, which exists for these cases.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>The namespace of a user defined function in a library module must be equivalent to the module namespace. In other words, it should be %1 instead of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+34"/>
+ <source>A function already exists with the signature %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>No external functions are supported. All supported functions can be used directly, without first declaring them as external</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>An argument by name %1 has already been declared. Every argument name must be unique.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+179"/>
+ <source>When function %1 is used for matching inside a pattern, the argument must be a variable reference or a string literal.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>In an XSL-T pattern, the first argument to function %1 must be a string literal, when used for matching.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>In an XSL-T pattern, the first argument to function %1 must be a literal or a variable reference, when used for matching.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>In an XSL-T pattern, function %1 cannot have a third argument.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>In an XSL-T pattern, only function %1 and %2, not %3, can be used for matching.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+63"/>
+ <source>In an XSL-T pattern, axis %1 cannot be used, only axis %2 or %3 can.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+126"/>
+ <source>%1 is an invalid template mode name.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>The name of a variable bound in a for-expression must be different from the positional variable. Hence, the two variables named %1 collide.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+758"/>
+ <source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+267"/>
+ <source>Each name of a template parameter must be unique; %1 is duplicated.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+129"/>
+ <source>The %1-axis is unsupported in XQuery</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+1150"/>
+ <source>%1 is not a valid name for a processing-instruction.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-7029"/>
+ <source>%1 is not a valid numeric literal.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6165"/>
+ <source>No function by name %1 is available.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+102"/>
+ <source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>%1 is an invalid namespace URI.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>It is not possible to bind to the prefix %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Two namespace declaration attributes have the same name: %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+89"/>
+ <source>The namespace URI must be a constant and cannot use enclosed expressions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>An attribute by name %1 has already appeared on this element.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+61"/>
+ <source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+458"/>
+ <source>The name %1 does not refer to any schema type.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>%1 is an complex type. Casting to complex types is not possible. However, casting to atomic types such as %2 works.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>%1 is not an atomic type. Casting is only possible to atomic types.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+145"/>
+ <location line="+71"/>
+ <source>%1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>The name of an extension expression must be in a namespace.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
+ <source>empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>zero or one</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>exactly one</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>one or more</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>zero or more</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+63"/>
+ <source>Required type is %1, but %2 was found.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Promoting %1 to %2 may cause loss of precision.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+49"/>
+ <source>The focus is undefined.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+86"/>
+ <source>It&apos;s not possible to add attributes after any other kind of node.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>An attribute by name %1 has already been created.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
+ <source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+60"/>
+ <source>Attribute %1 can&apos;t be serialized because it appears at the top level.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+314"/>
+ <source>%1 is an unsupported encoding.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>%1 contains octets which are disallowed in the requested encoding %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
+ <source>Ambiguous rule match.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+69"/>
+ <source>In a namespace constructor, the value for a namespace cannot be an empty string.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>The prefix must be a valid %1, which %2 is not.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>The prefix %1 cannot be bound.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Only the prefix %1 can be bound to %2 and vice versa.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qevaluationcache.cpp" line="+117"/>
+ <source>Circularity detected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
+ <source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-71"/>
+ <source>The parameter %1 is passed, but no corresponding %2 exists.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
+ <source>The URI cannot have a fragment</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+519"/>
+ <source>Element %1 is not allowed at this location.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Text nodes are not allowed at this location.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Parse error: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+62"/>
+ <source>The value of the XSL-T version attribute must be a value of type %1, which %2 isn&apos;t.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Running an XSL-T 1.0 stylesheet with a 2.0 processor.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+108"/>
+ <source>Unknown XSL-T attribute %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Attribute %1 and %2 are mutually exclusive.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+166"/>
+ <source>In a simplified stylesheet module, attribute %1 must be present.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+72"/>
+ <source>If element %1 has no attribute %2, it cannot have attribute %3 or %4.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Element %1 must have at least one of the attributes %2 or %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <source>At least one mode must be specified in the %1-attribute on element %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qmaintainingreader.cpp" line="+183"/>
+ <source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Attribute %1 cannot appear on the element %2. Only %3 is allowed, and the standard attributes.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Attribute %1 cannot appear on the element %2. Allowed is %3, %4, and the standard attributes.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Attribute %1 cannot appear on the element %2. Allowed is %3, and the standard attributes.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>XSL-T attributes on XSL-T elements must be in the null namespace, not in the XSL-T namespace which %1 is.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>The attribute %1 must appear on element %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>The element with local name %1 does not exist in XSL-T.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+123"/>
+ <source>Element %1 must come last.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>At least one %1-element must occur before %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Only one %1-element can appear.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>At least one %1-element must occur inside %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+58"/>
+ <source>When attribute %1 is present on %2, a sequence constructor cannot be used.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Element %1 must have either a %2-attribute or a sequence constructor.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+125"/>
+ <source>When a parameter is required, a default value cannot be supplied through a %1-attribute or a sequence constructor.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+270"/>
+ <source>Element %1 cannot have children.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+434"/>
+ <source>Element %1 cannot have a sequence constructor.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+86"/>
+ <location line="+9"/>
+ <source>The attribute %1 cannot appear on %2, when it is a child of %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>A parameter in a function cannot be declared to be a tunnel.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+149"/>
+ <source>This processor is not Schema-aware and therefore %1 cannot be used.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+57"/>
+ <source>Top level stylesheet elements must be in a non-null namespace, which %1 isn&apos;t.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>The value for attribute %1 on element %2 must either be %3 or %4, not %5.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Attribute %1 cannot have the value %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+58"/>
+ <source>The attribute %1 can only appear on the first %2 element.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+99"/>
+ <source>At least one %1 element must appear as child of %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VolumeSlider</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/phonon/volumeslider.cpp" line="+67"/>
+ <source>Muted</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <location line="+15"/>
+ <source>Volume: %1%</source>
+ <translation>Lydstyrke: %1%</translation>
+ </message>
+</context>
+</TS>
diff --git a/translations/qt_help_da.ts b/translations/qt_help_da.ts
new file mode 100644
index 0000000..73609a1
--- /dev/null
+++ b/translations/qt_help_da.ts
@@ -0,0 +1,387 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="he">
+<context>
+ <name>QCLuceneResultWidget</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+110"/>
+ <source>Search Results</source>
+ <translation>Søgeresultater</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Note:</source>
+ <translation>Bemærk:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>The search results may not be complete since the documentation is still being indexed!</source>
+ <translation>Søgeresultaterne kan være ufuldstændige, fordi dokumentationen stadig indekseres!</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Your search did not match any documents.</source>
+ <translation>Søgningen matchede ikke nogen dokumenter.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>(The reason for this might be that the documentation is still being indexed.)</source>
+ <translation>(Årsagen kan være, at dokumentationen stadig indekseres.)</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpCollectionHandler</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/>
+ <source>The collection file is not set up yet!</source>
+ <translation>Hjælpesamlingen er ikke konfigureret endnu!</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Cannot load sqlite database driver!</source>
+ <translation>Kan ikke indlæse sqlite database-driver!</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <location line="+48"/>
+ <source>Cannot open collection file: %1</source>
+ <translation>Kan ikke åbne hjælpesamlingen: %1</translation>
+ </message>
+ <message>
+ <location line="-39"/>
+ <source>Cannot create tables in file %1!</source>
+ <translation>Kan ikke oprette tabler i filen %1!</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>The specified collection file already exists!</source>
+ <translation>Den angivne hjælpesamling findes allerede!</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Cannot create directory: %1</source>
+ <translation>Kan ikke oprette kataloget: %1</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Cannot copy collection file: %1</source>
+ <translation>Kan ikke kopiere hjælpesamling: %1</translation>
+ </message>
+ <message>
+ <location line="+119"/>
+ <source>Unknown filter!</source>
+ <translation>Ukendt filter!</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Cannot register filter %1!</source>
+ <translation>Kan ikke registrere filteret %1!</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Cannot open documentation file %1!</source>
+ <translation>Kan ikke åbne dokumentationsfilen %1!</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Invalid documentation file!</source>
+ <translation>Ugyldig dokumentationsfil!</translation>
+ </message>
+ <message>
+ <location line="+34"/>
+ <source>The namespace %1 was not registered!</source>
+ <translation>Navnerummet %1 blev ikke registreret!</translation>
+ </message>
+ <message>
+ <location line="+120"/>
+ <source>Namespace %1 already exists!</source>
+ <translation>Navnerummet %1 findes allerede!</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Cannot register namespace!</source>
+ <translation>Kan ikke registrere navnerummet!</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Cannot open database to optimize!</source>
+ <translation>Kan ikke åbne den database, der skal optimeres!</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpDBReader</name>
+ <message>
+ <source>Cannot open DB!</source>
+ <translation type="obsolete">Kan ikke åbne DB!</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+95"/>
+ <source>Cannot open database &apos;%1&apos; &apos;%2&apos;: %3</source>
+ <translation>Kan ikke åbne database &apos;%1&apos; &apos;%2&apos;: %3</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpEngineCore</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+516"/>
+ <source>The specified namespace does not exist!</source>
+ <translation>Det angivne navnerum findes ikke!</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpEngineCorePrivate</name>
+ <message>
+ <location line="-394"/>
+ <source>Cannot open documentation file %1: %2!</source>
+ <translation>Kan ikke åbne dokumentationsfil %1: %2!</translation>
+ </message>
+ <message>
+ <source>Cannot open collection file %1!</source>
+ <translation type="obsolete">Kan ikke åbne hjælpesamlingen %1!</translation>
+ </message>
+ <message>
+ <source>Cannot open documentation file %1!</source>
+ <translation type="obsolete">Kan ikke åbne dokumentationsfilen %1!</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpGenerator</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/>
+ <source>Invalid help data!</source>
+ <translation>Ugyldigt hjælpedata!</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>No output file name specified!</source>
+ <translation>Der er ikke anført et output-filnavn!</translation>
+ </message>
+ <message>
+ <source>The file %1 already exists!</source>
+ <translation type="obsolete">Filen %1 findes allerede!</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Building up file structure...</source>
+ <translation>Bygger filstruktur...</translation>
+ </message>
+ <message>
+ <source>Cannot open DB!</source>
+ <translation type="obsolete">Kan ikke åbne DB!</translation>
+ </message>
+ <message>
+ <location line="-7"/>
+ <source>The file %1 cannot be overwritten!</source>
+ <translation>Filen %1 kan ikke overskrives!</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Cannot open data base file %1!</source>
+ <translation>Kan ikke åbne databasefil %1!</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Cannot register namespace %1!</source>
+ <translation>Kan ikke registrere navnerummet %1!</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Insert custom filters...</source>
+ <translation>Indsæt brugerdefinerede filtre...</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Insert help data for filter section (%1 of %2)...</source>
+ <translation>Indsæt hjælpedata til filtersektion (%1 af %2)...</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Documentation successfully generated.</source>
+ <translation>Dokumentationen blev genereret.</translation>
+ </message>
+ <message>
+ <location line="+76"/>
+ <source>Some tables already exist!</source>
+ <translation>Nogle af tabellerne findes allerede!</translation>
+ </message>
+ <message>
+ <location line="+61"/>
+ <source>Cannot create tables!</source>
+ <translation>Kan ikke oprette tabeller!</translation>
+ </message>
+ <message>
+ <location line="+86"/>
+ <source>Cannot register virtual folder!</source>
+ <translation>Kan ikke registrere virtuel mappe!</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Insert files...</source>
+ <translation>Indsæt filer...</translation>
+ </message>
+ <message>
+ <location line="+41"/>
+ <source>The file %1 does not exist! Skipping it.</source>
+ <translation>Filen %1 findes ikke, og den springes over.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Cannot open file %1! Skipping it.</source>
+ <translation>Kan ikke åbne filen %1, og den springes over.</translation>
+ </message>
+ <message>
+ <source>Cannot insert file data into database!</source>
+ <translation type="obsolete">Kan ikke indsætte fildata i databasen!</translation>
+ </message>
+ <message>
+ <location line="+134"/>
+ <source>The filter %1 is already registered!</source>
+ <translation>Filtret %1 er allerede registreret!</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Cannot register filter %1!</source>
+ <translation>Kan ikke registrere filtret %1!</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Insert indices...</source>
+ <translation>Indsæt indeks...</translation>
+ </message>
+ <message>
+ <location line="+80"/>
+ <source>Insert contents...</source>
+ <translation>Indsæt indhold...</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Cannot insert contents!</source>
+ <translation>Kan ikke indsætte indhold!</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Cannot register contents!</source>
+ <translation>Kan ikke registrere indhold!</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpSearchQueryWidget</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+200"/>
+ <source>Search for:</source>
+ <translation>Søg efter:</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Search</source>
+ <translation>Søg</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Advanced search</source>
+ <translation>Avanceret søgning</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>words &lt;B&gt;similar&lt;/B&gt; to:</source>
+ <translation>ord &lt;B&gt;tilsvarende&lt;/B&gt;:</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&lt;B&gt;without&lt;/B&gt; the words:</source>
+ <translation>&lt;B&gt;uden&lt;/B&gt; ordene:</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>with &lt;B&gt;exact phrase&lt;/B&gt;:</source>
+ <translation>med den &lt;B&gt;eksakte sætning&lt;/B&gt;:</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>with &lt;B&gt;all&lt;/B&gt; of the words:</source>
+ <translation>med &lt;B&gt;alle&lt;/B&gt; ordene:</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>with &lt;B&gt;at least one&lt;/B&gt; of the words:</source>
+ <translation>med &lt;B&gt;mindst ét&lt;/B&gt; af ordene:</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpSearchResultWidget</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/>
+ <source>0 - 0 of 0 Hits</source>
+ <translation>0 - 0 af 0 Hits</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpSearchResultWidgetPrivate</name>
+ <message>
+ <location line="-61"/>
+ <source>%1 - %2 of %3 Hits</source>
+ <translation>%1 - %2 af %3 Hits</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelp_global.h" line="+83"/>
+ <source>Untitled</source>
+ <translation>Ingen titel</translation>
+ </message>
+ <message>
+ <source>Unknown token at line %1.</source>
+ <translation type="obsolete">Ukendt symbol på linie %1.</translation>
+ </message>
+ <message>
+ <source>Unknown token at line %1. Expected &quot;QtHelpProject&quot;!</source>
+ <translation type="obsolete">Ukendt symbol på linie %1. Forventet &quot;QtHelpProject&quot;!</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+80"/>
+ <source>Unknown token.</source>
+ <translation>Ukendt token.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Unknown token. Expected &quot;QtHelpProject&quot;!</source>
+ <translation>Ukendt token. Forventede &quot;QtHelpProject&quot;!</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Error in line %1: %2</source>
+ <translation>Fejl i linie %1: %2</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>A virtual folder must not contain a &apos;/&apos; character!</source>
+ <translation>En virtuel mappe må ikke indholde tegnet &apos;/&apos;!</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>A namespace must not contain a &apos;/&apos; character!</source>
+ <translation>Et navnerum må ikke indeholde tegnet &apos;/&apos;!</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Missing namespace in QtHelpProject.</source>
+ <translation>Navnerum i +++ mangler.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Missing virtual folder in QtHelpProject</source>
+ <translation>Virtuel mappe i QtHelpProject mangler</translation>
+ </message>
+ <message>
+ <location line="+88"/>
+ <source>Missing attribute in keyword at line %1.</source>
+ <translation>Attribut i nøgleord på linie %1 mangler.</translation>
+ </message>
+ <message>
+ <location line="+83"/>
+ <source>The input file %1 could not be opened!</source>
+ <translation>Input-filen %1 kunne ikke åbnes!</translation>
+ </message>
+</context>
+</TS>
diff --git a/translations/translations.pri b/translations/translations.pri
index efefa09..0c5c1ee 100644
--- a/translations/translations.pri
+++ b/translations/translations.pri
@@ -21,7 +21,7 @@ LRELEASE = $$fixPath($$QT_BUILD_TREE/bin/lrelease)
###### Qt Libraries
-QT_TS = de fr zh_CN untranslated ar es iw ja_JP pl pt ru sk sv uk zh_TW
+QT_TS = de fr zh_CN untranslated ar es iw ja_JP pl pt ru sk sv uk zh_TW da
ts-qt.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
3rdparty/phonon \