From fb869402dd5d061d1e5257f3c4b25d28ab9428a5 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Thu, 2 Apr 2009 12:49:13 +0200 Subject: Doc: Added a note about copying by value in QMetaProperty and included details about BlockingQueuedConnection in QMetaObject::invokeMethod(). Task-number: 187869 Task-number: 216742 Reviewed-by: Thiago Macieira --- src/corelib/kernel/qmetaobject.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index 719398c..b65f956 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -1007,6 +1007,11 @@ enum { MaximumParamCount = 11 }; // up to 10 arguments + 1 return value a QEvent will be sent and the member is invoked as soon as the application enters the main event loop. + \o If \a type is Qt::BlockingQueuedConnection, the method will be invoked in + the same way as for Qt::QueuedConnection, except that the current thread + will block until the event is delivered. Using this connection type to + communicate between objects in the same thread will lead to deadlocks. + \o If \a type is Qt::AutoConnection, the member is invoked synchronously if \a obj lives in the same thread as the caller; otherwise it will invoke the member asynchronously. @@ -1897,6 +1902,12 @@ static QByteArray qualifiedName(const QMetaEnum &e) \ingroup objectmodel + Property meta-data is obtained from an object's meta-object. See + QMetaObject::property() and QMetaObject::propertyCount() for + details. + + \section1 Property Meta-Data + A property has a name() and a type(), as well as various attributes that specify its behavior: isReadable(), isWritable(), isDesignable(), isScriptable(), and isStored(). @@ -1912,9 +1923,10 @@ static QByteArray qualifiedName(const QMetaEnum &e) functions. See QObject::setProperty() and QObject::property() for details. - You get property meta-data through an object's meta-object. See - QMetaObject::property() and QMetaObject::propertyCount() for - details. + \section1 Copying and Assignment + + QMetaProperty objects can be copied by value. However, each copy will + refer to the same underlying property meta-data. \sa QMetaObject, QMetaEnum, QMetaMethod, {Qt's Property System} */ -- cgit v0.12 From f7b3702719b85f0ecff069b15e80d4ebaab111f6 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Tue, 19 May 2009 16:52:07 +0200 Subject: Doc: Added information about the third-party MD4, SHA-1 and DES code. Reviewed-by: Trust Me --- doc/src/3rdparty.qdoc | 136 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 82 insertions(+), 54 deletions(-) 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 \br\br + Written by Solar Designer 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 } + + 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. */ -- cgit v0.12 From 675c41f92fa72753fea364b73639fd9e0c7cc0d5 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Wed, 20 May 2009 14:14:22 +0200 Subject: Doc: Fixed the paper sizes again. Task-number: 254179 Reviewed-by: Norwegian Rock Cat --- src/gui/painting/qprinter.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) 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 -- cgit v0.12 From 9e5daecead75e1c7a77679a04a14cee9fd616215 Mon Sep 17 00:00:00 2001 From: Thomas Sondergaard Date: Wed, 20 May 2009 21:22:00 +0200 Subject: Danish translations --- translations/assistant_da.ts | 1134 ++++++++ translations/qt_da.ts | 6317 ++++++++++++++++++++++++++++++++++++++++++ translations/qt_help_da.ts | 354 +++ 3 files changed, 7805 insertions(+) create mode 100644 translations/assistant_da.ts create mode 100644 translations/qt_da.ts create mode 100644 translations/qt_help_da.ts diff --git a/translations/assistant_da.ts b/translations/assistant_da.ts new file mode 100644 index 0000000..d039248 --- /dev/null +++ b/translations/assistant_da.ts @@ -0,0 +1,1134 @@ + + + + + + AboutDialog + + + &Close + &Luk + + + + BookmarkDialog + + + + + + + Bookmarks + Favoritter + + + + Add Bookmark + Føj til Favoritter + + + + Bookmark: + Favorit: + + + + Add in Folder: + Føj til mappen: + + + + + + + + + + New Folder + Ny mappe + + + + Delete Folder + Slet mappe + + + + Rename Folder + Omdøb mappe + + + + BookmarkManager + + + Bookmarks + Favoritter + + + + Remove + Fjern + + + You are going to delete a Folder, this will also<br>remove it's content. Are you sure to continue? + Ved at slette denne mappe fjernes hele mappens<br>indhold. Ønsker du alligevel at slette? + + + + + New Folder + Ny mappe + + + + You are about to delete a folder which means that its content<br>will also be removed. Do you want to continue? + Ved at slette denne mappe fjernes hele mappens indhold.<br>Ønsker du alligevel at slette? + + + + BookmarkWidget + + + Remove + Fjern + + + + Delete Folder + Slet mappe + + + + Rename Folder + Omdøb mappe + + + + Show Bookmark + Vis favorit + + + + Show Bookmark in New Tab + Vis favorit på ny fane + + + + Delete Bookmark + Slet favorit + + + + Rename Bookmark + Omdøb favorit + + + + Search for: + Søg efter: + + + + Add + Tilføj + + + + CentralWidget + + + Add new page + Tilføj ny side + + + + Close current page + Luk nuværende side + + + + Print Document + Udskriv dokument + + + + + unknown + ukendt + + + + Add New Page + Tilføj ny side + + + + Close This Page + Luk denne side + + + + Close Other Pages + Luk de andre sider + + + + Add Bookmark for this Page... + Føj denne side til Favoritter... + + + + Search + Søg + + + + ContentWindow + + + Open Link + Åbn link + + + + Open Link in New Tab + Åbn link på ny fane + + + + FilterNameDialogClass + + + FilterNameDialog + FilterNavnDialog + + + + Filter Name: + Filternavn: + + + + FindWidget + + + Previous + Forrige + + + + Next + Næste + + + + Case Sensitive + Der skelnes mellem store og små bogstaver + + + + Whole words + Hele ord + + + + <img src="%1">&nbsp;Search wrapped + <img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped + <img src="%1">&nbsp;Søgning startet forfra + + + + FontPanel + + + Font + Skrifttype + + + + &Writing system + &Skrivesystem + + + + &Family + &Familie + + + + &Style + &Stil + + + + &Point size + &Punktstørrelse + + + + HelpViewer + + + Help + Hjælp + + + + OK + + + + + <title>Error 404...</title><div align="center"><br><br><h1>The page could not be found</h1><br><h3>'%1'</h3></div> + <title>Fejl 404...</title><div align="center"><br><br><h1>Siden blev ikke fundet</h1><br><h3>'%1'</h3></div> + + + + Copy &Link Location + Kopiér &linkets placering + + + + Open Link in New Tab Ctrl+LMB + Åbn link på ny fane Ctrl+LMB + + + + Open Link in New Tab + Åbn link på ny fane + + + + <b>Page not found:<p>%1.</p></b> + <b>Kunne ikke finde siden:<p>%1.</p></b> + + + + Unable to launch external application. + + Kunne ikke starte ekstern applikation. + + + + + IndexWindow + + + &Look for: + &Søg efter: + + + + Open Link + Åbn link + + + + Open Link in New Tab + Åbn link på ny fane + + + + InstallDialog + + + + Install Documentation + Installér dokumentation + + + + Downloading documentation info... + Downloader dokumentationsinformation... + + + + Download canceled. + Download blev annulleret. + + + + + + Done. + Færdig. + + + + The file %1 already exists. Do you want to overwrite it? + Filen %1 findes allerede. Ønsker du at overskrive? + + + + Unable to save the file %1: %2. + Kunne ikke gemme filen %1: %2. + + + + Downloading %1... + Downloader %1... + + + + + + Download failed: %1. + Download mislykkedes: %1. + + + + Documentation info file is corrupt! + Dokumentationsinformationsfilen er ødelagt! + + + + Download failed: Downloaded file is corrupted. + Download mislykkedes: Den downloadede fil er ødelagt. + + + + Installing documentation %1... + Installerer dokumentation %1... + + + + Error while installing documentation: +%1 + Der opstod fejl under installation af dokumentation: +%1 + + + + Available Documentation: + Tilgængeligt dokumentation: + + + + Install + Installér + + + + Cancel + Annuller + + + + Close + Luk + + + + Installation Path: + Installationssti: + + + + ... + + + + + MainWindow + + + + Index + Indeks + + + + + Contents + Indhold + + + + + Bookmarks + Favoritter + + + + + Search + Søg + + + + + + Qt Assistant + + + + + + Unfiltered + Ufiltreret + + + Page Set&up... + Side&opsætning... + + + Print Preview... + Vis udskrift... + + + &Print... + &Udskriv... + + + CTRL+P + Ctrl+U + + + + New &Tab + &Ny Fane + + + CTRL+T + Ctrl+N + + + + &Close Tab + &Luk fane + + + CTRL+W + Ctrl+L + + + + &Quit + &Afslut + + + CTRL+Q + Ctrl+A + + + &Copy selected Text + &Kopiér markeret tekst + + + Ctrl+C + Ctrl+K + + + + &Find in Text... + &Find i tekst... + + + + Ctrl+F + + + + + Find &Next + Find N&æste + + + + F3 + + + + + Find &Previous + Find fo&rrige + + + + Shift+F3 + + + + + Preferences... + Indstillinger... + + + + Zoom &in + Zoom &ind + + + + Ctrl++ + + + + + Zoom &out + Zoom u&d + + + + Ctrl+- + + + + + Normal &Size + Normal &størrelse + + + + Ctrl+0 + + + + + &Home + &Hjem + + + + Ctrl+Home + + + + + &Back + &Tilbage + + + + &Forward + Fr&em + + + Sync with Table of Contents + Synkronisér med Indholdsfortegnelse + + + + Next Page + Næste side + + + + Ctrl+Alt+Right + Ctrl+Alt+Højre + + + + Previous Page + Forrige side + + + + Ctrl+Alt+Left + Ctrl+Alt+Venstre + + + + Add Bookmark... + Føj til Favoritter... + + + + About... + Om... + + + + Navigation Toolbar + Navigationsværktøjslinie + + + + Toolbars + Værktøjslinier + + + + Filter Toolbar + Filtrer værktøjslinie + + + + Filtered by: + Filtreret efter: + + + + Address Toolbar + Adresseværktøjslinie + + + + Address: + Adresse: + + + + Could not find the associated content item. + Det tilhørende indholdselement kunne ikke findes. + + + + Open Source Edition + + + + + 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. + 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. + + + + 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. + Dette program er omfattet af Qt Commercial License Agreement. Se filen LICENCE, der var vedlagt denne software-distribution, for yderligere detaljer. + + + + About %1 + Om %1 + + + + Updating search index + Opdaterer søgeindeks + + + + Looking for Qt Documentation... + Søger efter Qt-dokumentation... + + + + &Window + &Vindue + + + + Minimize + Minimér + + + + Ctrl+M + Ctrl+M + + + + Zoom + + + + + &File + &Filer + + + + &Edit + &Redigér + + + + &View + &Vis + + + + &Go + &Gå til + + + + &Bookmarks + F&avoritter + + + + &Help + &Hjælp + + + + You need a commercial Qt license for development of proprietary (closed source) applications. Please see <a href="http://trolltech.com/company/about/businessmodel">http://trolltech.com/company/about/businessmodel</a> for an overview of Qt licensing. + + + + ALT+O + Alt+F + + + CTRL+D + Ctrl+Ø + + + Ctrl+P + Ctrl+U + + + + Ctrl+T + Ctrl+N + + + + Ctrl+W + Ctrl+L + + + + Ctrl+Q + Ctrl+A + + + + Alt+C + Alt+L + + + + Alt+I + + + + + Alt+O + Alt+F + + + + Alt+S + + + + + Ctrl+D + Ctrl+Ø + + + + PreferencesDialog + + + + + Add Documentation + Tilføj dokumentation + + + + Qt Compressed Help Files (*.qch) + Qt komprimeret hjælpefil (*.qch) + + + + The specified file is not a valid Qt Help File! + Den anførte fil er ikke en gyldig Qt hjælpefil! + + + + The namespace %1 is already registered! + Navnerummet %1 er allerede registreret! + + + + Use custom settings + Benyt brugerdefineret opsætning + + + + PreferencesDialogClass + + + Preferences + Indstillinger + + + + Fonts + Skrifttyper + + + + Font settings: + Indstillinger for skrifttype: + + + + Browser + + + + + Application + Applikation + + + + Filters + Filtre + + + + Filter: + Filter: + + + + Attributes: + Attributter: + + + + 1 + + + + + Add + Tilføj + + + + + Remove + Fjern + + + + Documentation + Dokumentation + + + + Registered Documentation: + Registreret dokumentation: + + + + Add... + Tilføj... + + + + Network + Netværk + + + + Use Http Proxy + Benyt Http Proxy + + + + Http Proxy: + + + + + Port: + + + + + QObject + + + The specified collection file does not exist! + Den angivne hjælpesamling findes ikke! + + + + Missing collection file! + Hjælpesamling mangler! + + + + Invalid URL! + Ugyldig URL! + + + + Missing URL! + URL mangler! + + + + + + Unknown widget: %1 + Ukendt widget: %1 + + + + + + Missing widget! + Widget mangler! + + + + + The specified Qt help file does not exist! + Den angivne Qt-hjælpefil findes ikke! + + + + + Missing help file! + Hjælpefilen mangler! + + + + Unknown option: %1 + Ukendt parameter: %1 + + + + + Qt Assistant + + + + + Could not register documentation file +%1 + +Reason: +%2 + Kunne ikke registrere dokumentationsfil +%1 + +Årsag: +%2 + + + + Documentation successfully registered. + Dokumentationen blev registreret. + + + + Could not unregister documentation file +%1 + +Reason: +%2 + Kunne ikke afregistrere dokumentationsfil +%1 + +Årsag: +%2 + + + + Documentation successfully unregistered. + Dokumentationen blev afregistreret. + + + + The specified collection file could not be read! + Den angivne hjælpesamling kunne ikke læses! + + + + + Bookmark + Favorit + + + + QtDocInstaller + + + The file %1 could not be registered successfully! + +Reason: %2 + Filen %1 kunne ikke registreres! + +Årsag: %2 + + + + RemoteControl + + + Debugging Remote Control + + + + + Received Command: %1 %2 + Modtaget kommando: %1 %2 + + + + SearchWidget + + + &Copy + &Kopiér + + + + Copy &Link Location + Kopiér &linkets placering + + + + + Open Link in New Tab + Åbn link på ny fane + + + + Select All + Markér alt + + + + Open Link + Åbn link + + + + TopicChooser + + + Choose a topic for <b>%1</b>: + Vælg et emne for <b>%1</b>: + + + + Choose Topic + Vælg emne + + + + &Topics + &Emner + + + + &Display + &Vis + + + + &Close + &Luk + + + TopicChooser + Emnevælger + + + unnamed + unavngivet + + + diff --git a/translations/qt_da.ts b/translations/qt_da.ts new file mode 100644 index 0000000..9350687 --- /dev/null +++ b/translations/qt_da.ts @@ -0,0 +1,6317 @@ + + + + + AudioOutput + + + <html>The audio playback device <b>%1</b> does not work.<br/>Falling back to <b>%2</b>.</html> + <html>Audio-playback-enheden<b>%1</b> virker ikke.<br/>Falder tilbage til <b>%2</b>.</html> + + + <html>Switching to the audio playback device <b>%1</b><br/>which just became available and has higher preference.</html> + <html>Skifter til audio-playback-enheden, <b>%1</b><br/>der lige er blevet tilgængeligt og har en højere præference.</html> + + + Revert back to device '%1' + Gå tilbage til enheden '%1' + + + + CloseButton + + + Close Tab + Luk fane + + + + Phonon:: + + + Notifications + Meddelelser + + + Music + Musik + + + Video + + + + Communication + Kommunikation + + + Games + Spil + + + Accessibility + Tilgængelighed + + + + Phonon::Gstreamer::Backend + + + Warning: You do not seem to have the package gstreamer0.10-plugins-good installed. + Some video features have been disabled. + Advarsel: Det ser ikke ud til, at gstreamer0.10-plugins-good pakken er installeret. + Nogle videofunktioner er deaktiveret. + + + Warning: You do not seem to have the base GStreamer plugins installed. + All audio and video support has been disabled + Advarsel: Det ser ikke ud til, at base GStreamer plugins er installeret. + Al audio- og videosupport er deaktiveret + + + + Phonon::Gstreamer::MediaObject + + + Cannot start playback. + +Check your Gstreamer installation and make sure you +have libgstreamer-plugins-base installed. + Kan ikke starte playback. + +Tjek Gstreamer-installationen og kontrollér, at +libgstreamer-plugins-base er installeret. + + + A required codec is missing. You need to install the following codec(s) to play this content: %0 + Der mangler et codec. Følgende codecs skal installeres for at afspille dette indhold: %0 + + + Could not open media source. + Kunne ikke åbne mediekilden. + + + Invalid source type. + Ugyldig kilde. + + + Could not locate media source. + Kunne ikke lokalisere mediekilden. + + + Could not open audio device. The device is already in use. + Kunne ikke åbne lydenheden. Enheden er allerede i brug. + + + Could not decode media source. + Kunne ikke afkode mediekilden. + + + + Phonon::VolumeSlider + + Volume: %1% + + + + Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1% + Anvend denne skyder til at indstille lydstyrken. Længst til venstre er 0% og længst til højre er %1% + + + + Q3Accel + + + %1, %2 not defined + %1, %2 ikke definerede + + + Ambiguous %1 not handled + Tvetydig %1 ikke behandlet + + + + Q3DataTable + + + True + Sandt + + + False + Falsk + + + Insert + Indsæt + + + Update + Opdater + + + Delete + Slet + + + + Q3FileDialog + + + Copy or Move a File + Kopiér eller flyt en fil + + + Read: %1 + Læs: %1 + + + Write: %1 + Skriv: %1 + + + Cancel + Annuller + + + + All Files (*) + Alle filer (*) + + + Name + Navn + + + Size + Størrelse + + + Type + + + + Date + Dato + + + Attributes + Attributter + + + &OK + &OK + + + Look &in: + Kig &i: + + + File &name: + Fil&navn: + + + File &type: + Fil&type: + + + Back + Tilbage + + + One directory up + En mappe op + + + Create New Folder + Opret ny folder + + + List View + Listevisning + + + Detail View + Detaljevisning + + + Preview File Info + Vis filinformation + + + Preview File Contents + Vis filindhold + + + Read-write + Læs-skriv + + + Read-only + Skrivebeskyttet + + + Write-only + Write-only + + + Inaccessible + Utilgængelig + + + Symlink to File + Symlink til Fil + + + Symlink to Directory + Symlink til katalog + + + Symlink to Special + Symlink til Speciel + + + File + Fil + + + Dir + Katalog + + + Special + Speciel + + + + Open + Åbn + + + + Save As + Gem som + + + &Open + &Åbn + + + &Save + &Gem + + + &Rename + &Omdøb + + + &Delete + &Slet + + + R&eload + Gen&indlæs + + + Sort by &Name + Sortér efter n&avn + + + Sort by &Size + Sortér efter s&tørrelse + + + Sort by &Date + Sortér efter &dato + + + &Unsorted + &Usorteret + + + Sort + Sortér + + + Show &hidden files + Vis s&kjulte filer + + + the file + filen + + + the directory + kataloget + + + the symlink + symlinket + + + Delete %1 + Slet %1 + + + <qt>Are you sure you wish to delete %1 "%2"?</qt> + <qt>Er du sikker på, at du vil slette %1 "%2"?</qt> + + + &Yes + &Ja + + + &No + &Nej + + + New Folder 1 + Ny folder 1 + + + New Folder + Ny folder + + + New Folder %1 + Ny folder %1 + + + Find Directory + Find katalog + + + Directories + Kataloger + + + Directory: + Katalog: + + + Error + Fejl + + + %1 +File not found. +Check path and filename. + %1 +Filen blev ikke fundet. +Kontrollér sti og filnavn. + + + All Files (*.*) + Alle filer (*.*) + + + Open + Åbn + + + Select a Directory + Vælg et katalog + + + + Q3LocalFs + + Could not read directory +%1 + Kunne ikke læse katalog +%1 + + + Could not create directory +%1 + Kunne ikke oprette katalog +%1 + + + Could not remove file or directory +%1 + Kunne ikke fjerne fil eller katalog +%1 + + + Could not rename +%1 +to +%2 + Kunne ikke omdøbe +%1 +to +%2 + + + Could not open +%1 + Kunne ikke åbne +%1 + + + Could not write +%1 + Kunne ikke skrive +%1 + + + + Q3MainWindow + + + Line up + Linie op + + + Customize... + Tilpas... + + + + Q3NetworkProtocol + + + Operation stopped by the user + Brugeren stoppede handlingen + + + + Q3ProgressDialog + + Cancel + Annuller + + + + Q3TabDialog + + OK + + + + Apply + Udfør + + + Help + Hjælp + + + Defaults + Standarder + + + Cancel + Annuller + + + + Q3TextEdit + + + &Undo + &Fortryd + + + &Redo + &Gendan + + + Cu&t + &Klip + + + &Copy + K&opiér + + + &Paste + &Sæt ind + + + Clear + Ryd + + + Select All + Markér alt + + + + Q3TitleBar + + + System + + + + Restore up + Gendan op + + + Minimize + Minimer + + + Restore down + Gendan ned + + + Maximize + Maksimér + + + Close + Luk + + + Contains commands to manipulate the window + Indeholder kommandoer til indstilling af vinduet + + + Puts a minimized back to normal + Sætter et minimeret vindue til normal størrelse + + + Moves the window out of the way + Flytter vinduet væk + + + Puts a maximized window back to normal + Sætter et maksimeret vindue til normal størrelse + + + Makes the window full screen + Gør vinduet til fuld skærm + + + Closes the window + Lukker vinduet + + + Displays the name of the window and contains controls to manipulate it + Viser vinduets navn og indeholder kontroller til indstilling af vinduet + + + + Q3ToolBar + + + More... + Mere... + + + + Q3UrlOperator + + The protocol `%1' is not supported + Protokollen '%1' understøttes ikke + + + The protocol `%1' does not support listing directories + Protokollen '%1' understøtter ikke opremsning af kataloger + + + The protocol `%1' does not support creating new directories + Protokollen '%1' understøtter ikke oprettelse af nye kataloger + + + The protocol `%1' does not support removing files or directories + Protokollen '%1' understøtter ikke, at filer eller kataloger fjernes + + + The protocol `%1' does not support renaming files or directories + Protokollen '%1' understøtter ikke, at filer eller kataloger omdøbes + + + The protocol `%1' does not support getting files + Protokollen '%1' understøtter ikke hentning af filer + + + The protocol `%1' does not support putting files + Protokollen '%1' understøtter ikke upload af filer + + + The protocol `%1' does not support copying or moving files or directories + Protokollen '%1' understøtter ikke kopiering eller flytning af filer eller kataloger + + + (unknown) + (ukendt) + + + + Q3Wizard + + + &Cancel + &Annuller + + + < &Back + < &Tilbage + + + &Next > + &Næste > + + + &Finish + &Udfør + + + &Help + &Hjælp + + + + QAbstractSocket + + Host not found + Host blev ikke fundet + + + + Connection refused + Forbindelse afvist + + + Connection timed out + Forbindelsen timed out + + + Operation on socket is not supported + Socket-operation ikke understøttet + + + Socket operation timed out + Socket-operation timed out + + + Socket is not connected + Socket ikke forbundet + + + Network unreachable + Netværket er ikke tilgængeligt + + + + QAbstractSpinBox + + + &Step up + &Trin op + + + Step &down + Trin &ned + + + &Select All + &Vælg alle + + + + QApplication + + + Activate + Aktivér + + + + Executable '%1' requires Qt %2, found Qt %3. + Eksekverbar '%1' kræver Qt %2, ikke fundet Qt %3. + + + Incompatible Qt Library Error + Inkompatibel Qt Library fejl + + + + QT_LAYOUT_DIRECTION + Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout. + + + + + Activates the program's main window + Aktiverer programmets hovedvindue + + + + QAxSelect + + Select ActiveX Control + Vælg ActiveX-kontrol + + + OK + + + + &Cancel + &Annuller + + + COM &Object: + COM &Objekt: + + + + QCheckBox + + + Uncheck + Fjern markering + + + Check + Kryds af + + + Toggle + Slå til/fra + + + + QColorDialog + + + Hu&e: + Ton&e: + + + &Sat: + &Mæt: + + + &Val: + &Vær: + + + &Red: + &Rød: + + + &Green: + &Grøn: + + + Bl&ue: + Bl&å: + + + A&lpha channel: + Al&fa-kanal: + + + Select Color + Vælg farve + + + &Basic colors + &Basisfarver + + + &Custom colors + &Egne farver + + + &Add to Custom Colors + &Føj til egne farver + + + + QComboBox + + Open + Åbn + + + + False + Falsk + + + True + Sandt + + + + Close + Luk + + + + QCoreApplication + + + %1: key is empty + QSystemSemaphore + %1: nøgle er tom + + + %1: unable to make key + QSystemSemaphore + %1: kunne ikke lave nøgle + + + %1: ftok failed + QSystemSemaphore + %1: ftok mislykkedes + + + + QDB2Driver + + + Unable to connect + Kunne ikke skabe forbindelse + + + Unable to commit transaction + Kunne ikke gennemføre transaktion + + + Unable to rollback transaction + Kunne ikke tilbagetrække transaktion + + + Unable to set autocommit + Kunne ikke aktivere autocommit + + + + QDB2Result + + Unable to execute statement + Kunne ikke udføre statement + + + Unable to prepare statement + Kunne ikke forberede udsagn + + + Unable to bind variable + Kunne ikke binde variabel + + + Unable to fetch record %1 + Kunne ikke hente post %1 + + + Unable to fetch next + Kunne ikke hente næste + + + Unable to fetch first + Kunne ikke hente første + + + + QDateTimeEdit + + + AM + + + + am + + + + PM + + + + pm + + + + + QDial + + + QDial + + + + SpeedoMeter + Speedometer + + + SliderHandle + + + + + QDialog + + + What's This? + Hvad er dette? + + + Done + Udført + + + + QDialogButtonBox + + + OK + + + + + &OK + + + + &Save + &Gem + + + Save + Gem + + + Open + Åbn + + + &Cancel + &Annuller + + + Cancel + Annuller + + + &Close + &Luk + + + Close + Luk + + + Apply + Udfør + + + Reset + Nulstil + + + Help + Hjælp + + + Don't Save + Gem ikke + + + Discard + Kassér + + + &Yes + &Ja + + + Yes to &All + Ja til &alle + + + &No + &Nej + + + N&o to All + Ne&j til alle + + + Save All + Gem alle + + + Abort + Afbryd + + + Retry + Prøv igen + + + Ignore + Ignorer + + + Restore Defaults + Gendan standardværdier + + + Close without Saving + Luk uden at gemme + + + + QDirModel + + + Name + Navn + + + Size + Størrelse + + + Kind + Match OS X Finder + Type + + + Type + All other platforms + + + + Date Modified + Ændringsdato + + + + QDockWidget + + + Close + Luk + + + Dock + Låst + + + Float + Flydende + + + + QDoubleSpinBox + + More + Mere + + + Less + Mindre + + + + QErrorMessage + + + Debug Message: + Debug-besked: + + + Warning: + Advarsel: + + + Fatal Error: + Fatal fejl: + + + &Show this message again + &Vis denne besked igen + + + &OK + + + + + QFile + + Destination file exists + Destinationsfil findes + + + Cannot open %1 for input + Kan ikke åbne %1 til input + + + Cannot open for output + Kan ikke åbne til output + + + Failure to write block + Kunne ikke skrive blok + + + Cannot create %1 for output + Kunne ikke oprette %1 til output + + + + QFileDialog + + All Files (*) + Alle filer (*) + + + Directories + Kataloger + + + &Open + &Åbn + + + &Save + &Gem + + + Open + Åbn + + + %1 already exists. +Do you want to replace it? + %1 findes allerede. +Ønsker du at erstatte den? + + + %1 +File not found. +Please verify the correct file name was given. + %1 +Filen kunne ikke findes. +Kontrollér, at det rigtige filnavn er indtastet. + + + + My Computer + Min computer + + + &Rename + &Omdøb + + + &Delete + &Slet + + + Show &hidden files + Vis s&kjulte filer + + + Back + Tilbage + + + Parent Directory + Ovenliggende katalog + + + List View + Listevisning + + + Detail View + Detaljevisning + + + Files of type: + Filer af typen: + + + Directory: + Katalog: + + + %1 +Directory not found. +Please verify the correct directory name was given. + %1 +Katalog kunne ikke findes. +Kontrollér, at det rigtige katalognavn er indtastet. + + + '%1' is write protected. +Do you want to delete it anyway? + '%1' er skrivebeskyttet. +Ønsker du alligevel at slette? + + + Are sure you want to delete '%1'? + Er du sikker på, at '%1' skal slettes? + + + Could not delete directory. + Kunne ikke slette kataloget. + + + Recent Places + Aktuelle steder + + + + All Files (*.*) + Alle filer (*.*) + + + Save As + Gem som + + + + Drive + Drev + + + File + Fil + + + Unknown + Ukendt + + + Find Directory + Find katalog + + + Show + Vis + + + Forward + Frem + + + + New Folder + Ny folder + + + &New Folder + &Ny folder + + + &Choose + &Vælg + + + + Remove + Fjern + + + File &name: + &Filnavn: + + + Look in: + Søg i: + + + Create New Folder + Opret ny folder + + + + QFileSystemModel + + + Invalid filename + Ugyldigt filnavn + + + <b>The name "%1" can not be used.</b><p>Try using another name, with fewer characters or no punctuations marks. + <b>Navnet, %1, kan ikke benyttes.</b><p>Brug et andet navn med færre tegn og ingen kommatering. + + + Name + Navn + + + Size + Størrelse + + + Kind + Match OS X Finder + Type + + + Type + All other platforms + + + + Date Modified + Ændringsdato + + + + My Computer + Min computer + + + Computer + + + + %1 TB + %1 TB + + + %1 GB + %1 GB + + + %1 MB + %1 MB + + + %1 KB + %1 KB' + + + %1 bytes + %1 bytes + + + + QFontDatabase + + Normal + + + + Bold + Fed + + + Demi Bold + + + + Black + Sort + + + Demi + + + + Light + Lys + + + Italic + Kursiv + + + Oblique + Skråt + + + Any + Alle + + + Latin + + + + Greek + Græsk + + + Cyrillic + Kyrillisk + + + Armenian + Armensk + + + Hebrew + Hebræisk + + + Arabic + Arabisk + + + Syriac + Syrisk + + + Thaana + + + + Devanagari + + + + Bengali + Bengalsk + + + Gurmukhi + + + + Gujarati + + + + Oriya + + + + Tamil + + + + Telugu + + + + Kannada + + + + Malayalam + + + + Sinhala + + + + Thai + Thailandsk + + + Lao + + + + Tibetan + Tibetansk + + + Myanmar + + + + Georgian + georgisk + + + Khmer + + + + Simplified Chinese + Forenklet kinesisk + + + Traditional Chinese + Traditionelt kinesisk + + + Japanese + Japansk + + + Korean + Koreansk + + + Vietnamese + Vietnamesisk + + + Symbol + + + + Ogham + + + + Runic + + + + + QFontDialog + + + &Font + S&krifttype + + + Font st&yle + S&til + + + &Size + &Størrelse + + + Effects + Effekter + + + Stri&keout + &Overstreget + + + &Underline + &Understreg + + + Sample + Eksempel + + + Wr&iting System + Skr&ivesystem + + + Select Font + Vælg skrifttype + + + + QFtp + + + Not connected + Ingen forbindelse + + + + Host %1 not found + Vært %1 ikke fundet + + + + Connection refused to host %1 + Forbindelse til vært %1 afvist + + + Connection timed out to host %1 + Forbindelsen timed out til host %1 + + + Connected to host %1 + Tilsluttet vært %1 + + + Connection refused for data connection + Dataforbindelse afvist + + + Unknown error + Ukendt fejl + + + + Connecting to host failed: +%1 + Forbindelse til vært mislykkedes: +%1 + + + + Login failed: +%1 + Login mislykkedes: +%1 + + + + Listing directory failed: +%1 + Opremsning af katalogindhold mislykkedes: +%1 + + + + Changing directory failed: +%1 + Ændring af katalog mislykkedes: +%1 + + + + Downloading file failed: +%1 + Downloading af fil mislykkedes: +%1 + + + + Uploading file failed: +%1 + Uploading af fil mislykkedes: +%1 + + + + Removing file failed: +%1 + Det mislykkedes at fjerne fil: +%1 + + + + Creating directory failed: +%1 + Oprettelse af katalog mislykkedes: +%1 + + + + Removing directory failed: +%1 + Det mislykkedes at fjerne katalog: +%1 + + + Connection closed + Forbindelse lukket + + + Host %1 found + Vært %1 fundet + + + Connection to %1 closed + Forbindelse til %1 lukket + + + Host found + Vært fundet + + + Connected to host + Tilsluttet vært + + + + QHostInfo + + + Unknown error + Ukendt fejl + + + + QHostInfoAgent + + Host not found + Vært ikke fundet + + + Unknown address type + Ukendt adressetype + + + Unknown error + Ukendt fejl + + + + QHttp + + Unknown error + Ukendt fejl + + + Request aborted + Forespørgsel blev annulleret + + + + No server set to connect to + Ingen server at forbinde til + + + + Wrong content length + Forkert indholdslængde + + + + Server closed connection unexpectedly + Serveren afsluttede uventet forbindelsen + + + Error writing response to device + Skrivefejl mens der blev skrevet til enheden + + + + Connection refused + Forbindelse afvist + + + + Host %1 not found + Vært %1 ikke fundet + + + + HTTP request failed + HTTP anmodning mislykkedes + + + + Invalid HTTP response header + Ugyldig HTTP-svar-header + + + Invalid HTTP chunked body + Ugyldig HTTP chunked body + + + + Host %1 found + Vært %1 fundet + + + Connected to host %1 + Tilsluttet vært %1 + + + Connection to %1 closed + Forbindelse til %1 lukket + + + Host found + Vært fundet + + + Connected to host + Tilsluttet vært + + + + Connection closed + Forbindelse lukket + + + Proxy authentication required + Kræver proxy-autentificering + + + Authentication required + Autentificering påkrævet + + + Connection refused (or timed out) + Forbindelse blev afvist (eller tid udløb) + + + + Proxy requires authentication + Proxy kræver autentificering + + + Host requires authentication + Vært kræver autentificering + + + Data corrupted + Data er ødelagt + + + Unknown protocol specified + En ukendt protokol blev angivet + + + SSL handshake failed + SSL handshake mislykkedes + + + HTTPS connection requested but SSL support not compiled in + Der blevet anmodet om en HTTPS-forbindelse, men SSL understøttelse er ikke kompileret ind + + + + QHttpSocketEngine + + Did not receive HTTP response from proxy + Modtog ikke HTTP-svar fra proxy + + + Error parsing authentication request from proxy + Fejl under fortolking af autentificeringsanmodning fra proxy + + + Authentication required + Autentificering påkrævet + + + Proxy denied connection + Proxy nægtede forbindelse + + + Error communicating with HTTP proxy + Fejl under kommunikation med HTTP-proxy + + + Proxy server not found + Proxy-server kunne ikke findes + + + Proxy connection refused + Proxy-forbindelse nægtede + + + Proxy server connection timed out + Proxy-serverforbindelse timed out + + + Proxy connection closed prematurely + Proxy-forbindelse afsluttede i utide + + + + QIBaseDriver + + + Error opening database + Der opstod fejl ved åbning af database + + + Could not start transaction + Kunne ikke påbegynde transaktionen + + + Unable to commit transaction + Kunne ikke gennemføre transaktionen + + + Unable to rollback transaction + Kunne ikke tilbagetrække transaktionen + + + + QIBaseResult + + Unable to create BLOB + Kunne ikke oprette BLOB + + + Unable to write BLOB + Kunne ikke skrive BLOB + + + Unable to open BLOB + Kunne ikke åbne BLOB + + + Unable to read BLOB + Kunne ikke læse BLOB + + + Could not find array + Kunne ikke finde array + + + Could not get array data + Kunne ikke hente arraydata + + + Could not get query info + Kunne ikke hente forespørgselsinfo + + + Could not start transaction + Kunne ikke påbegynde transaktionen + + + Unable to commit transaction + Kunne ikke gennemføre transaktionen + + + Could not allocate statement + Kunne ikke allokere statement + + + Could not prepare statement + Kunne ikke forberede udsagn + + + Could not describe input statement + Kunne ikke beskrive input-statement + + + Could not describe statement + Kunne ikke beskrive statement + + + Unable to close statement + Kunne ikke lukke udsagn + + + Unable to execute query + Kunne ikke udføre forespørgsel + + + Could not fetch next item + Kunne ikke hente næste element + + + Could not get statement info + Kunne ikke hente udsagnsinformation + + + + QIODevice + + + Permission denied + Tilladelse nægtet + + + Too many open files + Der er for mange åbne filer + + + No such file or directory + Fil eller katalog findes ikke + + + No space left on device + Ingen plads tilbage på enheden + + + + Unknown error + Ukendt fejl + + + + QInputContext + + + XIM + + + + XIM input method + XIM input-metode + + + Windows input method + Windows input-metode + + + Mac OS X input method + Mac OS X input-metode + + + + QInputDialog + + + Enter a value: + Indtast en værdi: + + + + QLibrary + + + Could not mmap '%1': %2 + + + + Plugin verification data mismatch in '%1' + Plugin-verifikationsdata er sat forkert sammen i '%1' + + + Could not unmap '%1': %2 + Der var ikke muligt at lave unmap på '%1': %2 + + + The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5] + Plugin '%1' bruger inkompatibelt Qt-bibliotek. (%2.%3.%4) [%5] + + + The plugin '%1' uses incompatible Qt library. Expected build key "%2", got "%3" + Plugin '%1' bruger inkompatibelt Qt-bibliotek. Forventet build key "%2", hentede "%3"' + + + Unknown error + Ukendt fejl' + + + + The shared library was not found. + DSO blev ikke fundet. + + + The file '%1' is not a valid Qt plugin. + Filen '%1' er ikke et gyldigt Qt-plugin. + + + The plugin '%1' uses incompatible Qt library. (Cannot mix debug and release libraries.) + Plugin '%1' bruger inkompatibelt Qt-bibliotek. (Ikke muligt at mikse debug og release-biblioteker) + + + + Cannot load library %1: %2 + Kan ikke indlæse bibliotek %1: %2 + + + + Cannot unload library %1: %2 + Kan ikke afregistrere bibliotek %1: %2 + + + + Cannot resolve symbol "%1" in %2: %3 + Kan ikke løse symbol "%1" i %2: %3 + + + + QLineEdit + + + &Undo + &Fortryd + + + &Redo + &Gendan + + + Cu&t + K&lip + + + &Copy + &Kopiér + + + &Paste + &Sæt ind + + + Delete + Slet + + + Select All + Markér alt + + + + QLocalServer + + + %1: Name error + %1: Navnefejl + + + %1: Permission denied + %1: Tilladelse nægtet + + + %1: Address in use + %1: Adresse i brug + + + + %1: Unknown error %2 + %1: Ukendt fejl %2 + + + + QLocalSocket + + + %1: Connection refused + %1: Forbindelse afvist + + + + %1: Remote closed + %1: Den anden ende lukkede + + + %1: Invalid name + %1: Ugyldigt navn + + + + %1: Socket access error + %1: Fejl i socket-adgang + + + + %1: Socket resource error + %1: Fejl i socket-ressource + + + + %1: Socket operation timed out + %1: Socket-handling timed out + + + + %1: Datagram too large + %1: Datagram er for stort + + + %1: Connection error + %1: Forbindelsesfejl + + + + %1: The socket operation is not supported + %1: Socket-handlingen understøttes ikke + + + %1: Unknown error + %1: Ukendt fejl + + + + %1: Unknown error %2 + %1: Ukendt fejl %2 + + + + QMYSQLDriver + + + Unable to open database ' + Kunne ikke åbne databasen ' + + + Unable to connect + Kunne ikke forbinde + + + Unable to begin transaction + Kunne ikke påbegynde transaktionen + + + Unable to commit transaction + Kunne ikke gennemføre transaktionen + + + Unable to rollback transaction + Kunne ikke tilbagetrække transaktionen + + + + QMYSQLResult + + Unable to fetch data + Kunne ikke hente data + + + Unable to execute query + Kunne ikke udføre forespørgsel + + + Unable to store result + Kunne ikke gemme resultatet + + + Unable to prepare statement + Kunne ikke forberede udsagn + + + Unable to reset statement + Kunne ikke nulstille udsagn + + + Unable to bind value + Kunne ikke tildele værdi + + + Unable to execute statement + Kunne ikke udføre udsagn + + + Unable to bind outvalues + Kunne ikke binde udværdier + + + Unable to store statement results + Kunne ikke gemme udsagnsresultater + + + Unable to execute next query + Kunne ikke udføre næste forespørgsel + + + Unable to store next result + Kunne ikke gemme næste resultat + + + + QMdiArea + + + (Untitled) + (Uden titel) + + + + QMdiSubWindow + + + %1 - [%2] + + + + Close + Luk + + + Minimize + Minimér + + + Restore Down + Gendan Ned + + + &Restore + &Gendan + + + &Move + &Flyt + + + &Size + &Størrelse + + + Mi&nimize + Mi&nimér + + + Ma&ximize + Ma&ksimér + + + Stay on &Top + Bliv &oppe + + + &Close + &Luk + + + - [%1] + + + + Maximize + Maksimér + + + Unshade + Fjern skygge + + + Shade + Skygge + + + Restore + Gendan + + + Help + Hjælp + + + Menu + + + + + QMenu + + Close + Luk + + + Open + Åbn + + + Execute + Udfør + + + + QMessageBox + + Help + Hjælp + + + OK + + + + About Qt + Om Qt + + + <p>This program uses Qt version %1.</p> + <p>Dette program bruger Qt-version %1.</p> + + + Show Details... + Vis detaljer... + + + Hide Details... + Skjul detaljer... + + + <h3>About Qt</h3>%1<p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is a Nokia product. See <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> for more information.</p> + <h3>Om Qt</h3>%1<p>Qt er et C++ toolkit til cross-platform applikationsudvikling.</p><p>Qt tilbyder single-source portabilitet til MS&nbsp;Windows, Mac&nbsp;OS&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.</p><p>Qt er et Nokia produkt. Se <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> for yderligere information.</p> + + + <p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for an overview of Qt licensing.</p> + <p>Dette program bruger Qt Open Source Edition version %1.</p><p>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.</p><p>Se venligst <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for et overblik over Qt licensforhold.</p> + + + + QMultiInputContext + + + Select IM + Markér IM + + + + QMultiInputContextPlugin + + + Multiple input method switcher + Multiple input metode-switcher + + + Multiple input method switcher that uses the context menu of the text widgets + Multiple input metode-switcher, der benytter tekstkontrollernes kontekstmenuer + + + + QNativeSocketEngine + + + The remote host closed the connection + Fjern-hosten lukkede forbindelsen + + + Network operation timed out + Netværksoperationen timed out + + + Out of resources + Ikke flere ressourcer + + + Unsupported socket operation + Socket-operation ikke understøttet + + + Protocol type not supported + Protokoltypen understøttes ikke + + + Invalid socket descriptor + Ugyldig socket-deskriptor + + + Network unreachable + Netværket er ikke tilgængeligt + + + Permission denied + Tilladelse nægtet + + + Connection timed out + Forbindelsen timed out + + + Connection refused + Forbindelse afvist + + + The bound address is already in use + Den bundne adresse er allerede i brug + + + The address is not available + Adressen er ikke tilgængelig + + + The address is protected + Adressen er beskyttet + + + Unable to send a message + Kunne ikke sende en besked + + + Unable to receive a message + Kunne ikke modtage en besked + + + Unable to write + Kunne ikke skrive + + + Network error + Netværksfejl + + + Another socket is already listening on the same port + En anden socket lytter allerede på samme port + + + Unable to initialize non-blocking socket + Kunne ikke initialisere non-blocking socket + + + Unable to initialize broadcast socket + Kunne ikke initialisere broadcast-socket + + + Attempt to use IPv6 socket on a platform with no IPv6 support + Forsøg på at bruge IPv6-socket på en platform uden IPv6-support + + + Host unreachable + Vært er ikke tilgængelig + + + Datagram was too large to send + Datagrammet var for stort til at blive sendt + + + Operation on non-socket + Handling på non-socket + + + Unknown error + Ukendt fejl + + + The proxy type is invalid for this operation + Proxytypen er ugyldig til denne handling + + + + QNetworkAccessCacheBackend + + + Error opening %1 + Der opstod fejl i at åbne %1 + + + + QNetworkAccessFileBackend + + + Request for opening non-local file %1 + Anmodning om at åbne ikke-lokal fil %1 + + + Error opening %1: %2 + Der opstod fejl i at åbne %1: %2 + + + Write error writing to %1: %2 + Skrivefejl mens der blev skrevet til %1: %2 + + + Cannot open %1: Path is a directory + Kan ikke åbne %1: Stien er et katalog + + + Read error reading from %1: %2 + Læsefejl mens der blev læst fra %1: %2 + + + + QNetworkAccessFtpBackend + + + No suitable proxy found + Ingen passende proxy blev fundet + + + Cannot open %1: is a directory + Kan ikke åbne %1: Er et katalog + + + Logging in to %1 failed: authentication required + Der opstod fejl i at logge på %1: Autentificering kræves + + + Error while downloading %1: %2 + Der opstod fejl i at downloade %1: %2 + + + Error while uploading %1: %2 + Der opstod fejl i at uploade %1: %2 + + + + QNetworkAccessHttpBackend + + + No suitable proxy found + Ingen passende proxy blev fundet + + + + QNetworkReply + + Error downloading %1 - server replied: %2 + Der opstod fejl i at downloade %1 - serveren svarede: %2 + + + + Protocol "%1" is unknown + Protokollen "%1" er ukendt + + + + QNetworkReplyImpl + + Operation canceled + Handling blev annulleret + + + + QOCIDriver + + + Unable to logon + Kunne ikke logge på + + + Unable to initialize + QOCIDriver + Kunne ikke initialisere + + + Unable to begin transaction + Kunne ikke påbegynde transaktionen + + + Unable to commit transaction + Kunne ikke gennemføre transaktionen + + + Unable to rollback transaction + Kunne ikke tilbagetrække transaktionen + + + + QOCIResult + + Unable to bind column for batch execute + Kunne ikke tildele kolonne til batch-udførsel + + + Unable to execute batch statement + Kunne ikke udføre batch-udsagn + + + Unable to goto next + Kunne ikke gå til den næste + + + Unable to alloc statement + Kunne ikke allokere udsagn + + + Unable to prepare statement + Kunne ikke forberede udsagn + + + Unable to bind value + Kunne ikke tildele værdi + + + Unable to execute select statement + Kunne ikke udføre det valgte udsagn + + + Unable to execute statement + Kunne ikke udføre udsagn + + + + QODBCDriver + + + Unable to connect + Kunne ikke forbinde + + + Unable to connect - Driver doesn't support all needed functionality + Kunne ikke forbinde. Driveren understøtter ikke alle de nødvendige funktionaliteter + + + Unable to disable autocommit + Kunne ikke slå auto-udfør fra + + + Unable to commit transaction + Kunne ikke gennemføre transaktionen + + + Unable to rollback transaction + Kunne ikke tilbagetrække transaktionen + + + Unable to enable autocommit + Kunne ikke slå auto-udfør til + + + + QODBCResult + + QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration + QODBCResult::reset: Kunne ikke indstille 'SQL_CURSOR_STATIC' til udsagnsattribut. Kontrollér ODBC-driver-konfigurationen + + + Unable to execute statement + Kunne ikke udføre udsagn + + + Unable to fetch next + Kunne ikke hente den næste + + + Unable to prepare statement + Kunne ikke forberede udsagn + + + Unable to bind variable + Kunne ikke tildele variabel + + + Unable to fetch last + Kunne ikke hente den sidste + + + Unable to fetch + Kunne ikke hente + + + Unable to fetch first + Kunne ikke hente den første + + + Unable to fetch previous + Kunne ikke hente den forrige + + + + QObject + + + Home + Hjem + + + + Operation not supported on %1 + Handling blev ikke understøttet på %1 + + + Invalid URI: %1 + Ugyldig URI: %1 + + + + Write error writing to %1: %2 + Skrivefejl mens der blev skrevet til %1: %2 + + + Read error reading from %1: %2 + Læsefejl mens der blev læst fra %1: %2 + + + Socket error on %1: %2 + Socket-fejl på %1: %2 + + + Remote host closed the connection prematurely on %1 + Fjern-host lukkede forbindelsen for tidligt på %1 + + + Protocol error: packet of size 0 received + Protokolfejl: Pakke på størrelsen 0 modtaget + + + No host name given + Hostnavn mangler + + + + QPPDOptionsModel + + + Name + Navn + + + Value + Værdi + + + + QPSQLDriver + + + Unable to connect + Kunne ikke skabe forbindelse + + + Could not begin transaction + Kunne ikke påbegynde transaktion + + + Could not commit transaction + Kunne ikke gennemføre transaktion + + + Could not rollback transaction + Kunne ikke tilbagetrække transaktion + + + Unable to subscribe + Kunne ikke tilmelde + + + Unable to unsubscribe + Kunne ikke afmelde + + + + QPSQLResult + + Unable to create query + Kunne ikke oprette forespørgsel + + + Unable to prepare statement + Kunne ikke forberede udsagn + + + + QPageSetupWidget + + + Centimeters (cm) + Centimeter (cm) + + + Millimeters (mm) + Millimeter (mm) + + + Inches (in) + + + + Points (pt) + Point (pt) + + + Form + + + + Paper + Papir + + + Page size: + Sidestørrelse: + + + Width: + Vidde: + + + Height: + Højde: + + + Paper source: + Papirkilde: + + + Orientation + + + + Portrait + Portræt + + + Landscape + Landskab + + + Reverse landscape + Omvendt landskab + + + Reverse portrait + Omvendt portræt + + + Margins + Margener + + + top margin + Margen - øverst + + + left margin + Margen - venstre + + + right margin + Margen - højre + + + bottom margin + Margen - bund + + + + QPluginLoader + + + Unknown error + Ukendt fejl + + + The plugin was not loaded. + Plugin blev ikke indlæst. + + + + QPrintDialog + + + locally connected + lokalt forbundet + + + Aliases: %1 + Aliasser: %1 + + + unknown + Ukendt + + + + A0 (841 x 1189 mm) + + + + A1 (594 x 841 mm) + + + + A2 (420 x 594 mm) + + + + A3 (297 x 420 mm) + + + + A4 (210 x 297 mm, 8.26 x 11.7 inches) + + + + A5 (148 x 210 mm) + + + + A6 (105 x 148 mm) + + + + A7 (74 x 105 mm) + + + + A8 (52 x 74 mm) + + + + A9 (37 x 52 mm) + + + + B0 (1000 x 1414 mm) + + + + B1 (707 x 1000 mm) + + + + B2 (500 x 707 mm) + + + + B3 (353 x 500 mm) + + + + B4 (250 x 353 mm) + + + + B5 (176 x 250 mm, 6.93 x 9.84 inches) + + + + B6 (125 x 176 mm) + + + + B7 (88 x 125 mm) + + + + B8 (62 x 88 mm) + + + + B9 (44 x 62 mm) + + + + B10 (31 x 44 mm) + + + + C5E (163 x 229 mm) + + + + DLE (110 x 220 mm) + + + + Executive (7.5 x 10 inches, 191 x 254 mm) + + + + Folio (210 x 330 mm) + + + + Ledger (432 x 279 mm) + + + + Legal (8.5 x 14 inches, 216 x 356 mm) + + + + Letter (8.5 x 11 inches, 216 x 279 mm) + + + + Tabloid (279 x 432 mm) + + + + US Common #10 Envelope (105 x 241 mm) + + + + + OK + + + + Print + Udskriv + + + Print To File ... + Udskriv til fil... + + + + Print range + Udskriftsområde + + + Print all + Udskriv alle + + + + File %1 is not writable. +Please choose a different file name. + Filen %1 kan ikke skrives. +Vælg et andet filnavn. + + + %1 already exists. +Do you want to overwrite it? + %1 findes allerede. +Ønsker du at overskrive? + + + File exists + Fil findes + + + <qt>Do you want to overwrite it?</qt> + <qt>Ønsker du at overskrive?</qt> + + + Print selection + Udskriv markerede + + + %1 is a directory. +Please choose a different file name. + %1 er et katalog. +Vælg et andet filnavn. + + + A0 + + + + A1 + + + + A2 + + + + A3 + + + + A4 + + + + A5 + + + + A6 + + + + A7 + + + + A8 + + + + A9 + + + + B0 + + + + B1 + + + + B2 + + + + B3 + + + + B4 + + + + B5 + + + + B6 + + + + B7 + + + + B8 + + + + B9 + + + + B10 + + + + C5E + + + + DLE + + + + Executive + + + + Folio + + + + Ledger + + + + Legal + + + + Letter + + + + Tabloid + + + + US Common #10 Envelope + + + + Custom + Brugerdefineret + + + &Options >> + &Indstillinger>> + + + &Print + &Udskriv + + + &Options << + &Indstillinger<< + + + Print to File (PDF) + Udskriv til fil (PDF) + + + Print to File (Postscript) + Udskriv til fil (Postscript) + + + Local file + Lokal fil + + + Write %1 file + Skriv %1 fil + + + + The 'From' value cannot be greater than the 'To' value. + 'Fra'-værdien kan ikke være større end 'til'-værdien. + + + + QPrintPreviewDialog + + Page Setup + Sideopsætning + + + + %1% + + + + Print Preview + Vis udskrift + + + Next page + Næste side + + + Previous page + Forrige side + + + First page + Første side + + + Last page + Sidste side + + + Fit width + Tilpas bredde + + + Fit page + Tilpas siden + + + Zoom in + Zoom ind + + + Zoom out + Zoom ud + + + Portrait + Portræt + + + Landscape + Landskab + + + Show single page + Vis enkelt side + + + Show facing pages + Vis sideopslag + + + Show overview of all pages + Vis oversigt af alle sider + + + Print + Udskriv + + + Page setup + Sideopsætning + + + Close + Luk + + + Export to PDF + Eksportér til PDF + + + Export to PostScript + Eksportér til PostScript + + + + QPrintPropertiesWidget + + Form + Form + + + Page + Side + + + Advanced + Avanceret + + + + QPrintSettingsOutput + + Form + + + + Copies + Kopier + + + Print range + Udskriv sider + + + Print all + Udskriv alle + + + Pages from + Sider fra + + + to + til + + + Selection + Valg + + + Output Settings + Udskriftsindstillinger + + + Copies: + Kopier: + + + Collate + Samordne + + + Reverse + Omvendt + + + Options + Valgmuligheder + + + Color Mode + Farvetilstand + + + Color + Farve + + + Grayscale + Gråskala + + + Duplex Printing + Dobbelsidet + + + None + Ingen + + + Long side + Bog + + + Short side + Tavle + + + + QPrintWidget + + Form + + + + Printer + ' + + + &Name: + &Navn: + + + P&roperties + &Egenskaber + + + Location: + Placering: + + + Preview + Vis udskrift + + + Type: + + + + Output &file: + Udskrifts&fil: + + + ... + + + + + QProcess + + + Could not open input redirection for reading + Kunne ikke åbne input redirection for læsning + + + + Could not open output redirection for writing + Kunne ikke åbne output redirection for skrivning + + + Resource error (fork failure): %1 + Ressource fejl (fork fejl): %1 + + + Process operation timed out + Proces-operation time out + + + Error reading from process + Fejl ved læsning fra proces + + + + Error writing to process + Fejl ved skrivning til proces + + + Process crashed + Proces crashede + + + Process failed to start + Processen kunne ikke starte + + + + QProgressDialog + + + Cancel + Annuller + + + + QPushButton + + Open + Åbn + + + + QRadioButton + + Check + Kontrollér + + + + QRegExp + + + no error occurred + der opstod ingen fejl + + + disabled feature used + deaktiveret funktion blev brugt + + + bad char class syntax + dårlig char class syntaks + + + bad lookahead syntax + dårlig lookahead syntaks + + + bad repetition syntax + dårlig gentagelsessyntaks + + + invalid octal value + ugyldigt oktal-tal + + + missing left delim + Manglende venstre delimiter + + + unexpected end + uventet afslutning + + + met internal limit + nåede interne grænse + + + + QSQLite2Driver + + + Error to open database + Der opstod fejl ved åbning af database + + + Unable to begin transaction + Kunne ikke påbegynde transaktionen + + + Unable to commit transaction + Kunne ikke gennemføre transaktionen + + + Unable to rollback Transaction + Kunne ikke tilbagetrække transaktion + + + + QSQLite2Result + + Unable to fetch results + Kunne ikke hente resultater + + + Unable to execute statement + Kunne ikke udføre statement + + + + QSQLiteDriver + + + Error opening database + Der opstod fejl ved åbning af database + + + Error closing database + Der opstod fejl ved lukning af database + + + Unable to begin transaction + Kunne ikke påbegynde transaktionen + + + Unable to commit transaction + Kunne ikke gennemføre transaktion + + + Unable to rollback transaction + Kunne ikke tilbagetrække transaktion + + + + QSQLiteResult + + Unable to fetch row + Kunne ikke hente række + + + Unable to execute statement + Kunne ikke udføre udsagn + + + Unable to reset statement + Kunne ikke nulstille udsagn + + + Unable to bind parameters + Unable to bind parameters + + + Parameter count mismatch + Misforhold i parametertælling + + + No query + Ingen forespørgesel + + + + QScrollBar + + + Scroll here + Scroll her + + + Left edge + Venstre kant + + + Top + Øverst + + + Right edge + Højre kant + + + Bottom + Bund + + + Page left + Side venstre + + + + Page up + Side øverst + + + Page right + Side højre + + + + Page down + Side ned + + + Scroll left + Scroll til venstre + + + Scroll up + Scroll op + + + Scroll right + Scroll til højre + + + Scroll down + Scroll ned + + + Line up + Linie op + + + Position + Placering + + + Line down + Linie ned + + + + QSharedMemory + + + %1: unable to set key on lock + %1: Kunne ikke oprette nøgle + + + %1: create size is less then 0 + %1: create size is less then 0 + + + + %1: unable to lock + %1: Kunne ikke låse + + + %1: unable to unlock + %1: Kunne ikke oprette nøgle + + + + %1: permission denied + %1: Tilladelse nægtet + + + %1: already exists + %1: Findes allerede + + + + %1: doesn't exists + %1: Findes ikke + + + + %1: out of resources + %1: Ikke flere ressourcer + + + + %1: unknown error %2 + %1: ukendt fejl %2 + + + %1: key is empty + %1: nøgle er tom + + + %1: unix key file doesn't exists + %1: Kunne ikke oprette nøgle + + + %1: ftok failed + %1: ftok mislykkedes + + + + %1: unable to make key + %1: Kunne ikke oprette nøgle + + + %1: system-imposed size restrictions + %1: System-pålagte størrelsesrestriktioner + + + %1: not attached + %1: Ikke vedhæftet + + + %1: invalid size + %1: Ugyldig størrelse + + + %1: key error + %1: Nøglefejl + + + %1: size query failed + %1: Størrelsesforespørgsel mislykkedes + + + + QShortcut + + + Space + + + + Esc + + + + Tab + + + + Backtab + Tilbage-tabulator + + + Backspace + Tilbage + + + Return + + + + Enter + + + + Ins + + + + Del + + + + Pause + + + + Print + Udskriv + + + SysReq + + + + Home + + + + End + + + + Left + Venstre + + + Up + Op + + + Right + Højre + + + Down + Ned + + + PgUp + + + + PgDown + + + + CapsLock + ' + + + NumLock + + + + ScrollLock + + + + Menu + + + + Help + Hjælp + + + Back + Tilbage + + + Forward + Frem + + + Stop + + + + Refresh + Opdater + + + Volume Down + Lydstyrke ned + + + Volume Mute + Lydstyrke mute + + + Volume Up + Lydstyrke op + + + Bass Boost + + + + Bass Up + Bass op + + + Bass Down + Bass ned + + + Treble Up + Diskant op + + + Treble Down + Diskant ned + + + Media Play + + + + Media Stop + + + + Media Previous + Media forrige + + + Media Next + Media næste + + + Media Record + + + + Favorites + + + + Search + Søg + + + Standby + + + + Open URL + Åbn URL + + + Launch Mail + Start mail + + + Launch Media + Start Media + + + Launch (0) + Start (0) + + + Launch (1) + Start (1) + + + Launch (2) + Start (2) + + + Launch (3) + Start (3) + + + Launch (4) + Start (4) + + + Launch (5) + Start (5) + + + Launch (6) + Start (6) + + + Launch (7) + Start (7) + + + Launch (8) + Start (8) + + + Launch (9) + Start (9) + + + Launch (A) + Start (A) + + + Launch (B) + Start (B) + + + Launch (C) + Start (C) + + + Launch (D) + Start (D) + + + Launch (E) + Start (E) + + + Launch (F) + Start (F) + + + Print Screen + + + + Page Up + + + + Page Down + + + + Caps Lock + + + + Num Lock + + + + Number Lock + + + + Scroll Lock + + + + Insert + + + + Delete + + + + Escape + + + + System Request + + + + Select + Væg + + + Yes + Ja + + + No + Nej + + + Context1 + Kontekst1 + + + Context2 + Kontekst2 + + + Context3 + Kontekst3 + + + Context4 + Kontekst4 + + + Call + Ring til + + + Hangup + Læg på + + + Flip + Vend + + + Ctrl + + + + Shift + + + + Alt + + + + Meta + + + + + + + + + F%1 + + + + Home Page + Startside + + + + QSlider + + + Page left + Side venstre + + + Page up + Side op + + + Position + Placering + + + Page right + Side højre + + + Page down + Side ned + + + + QSocks5SocketEngine + + Connection to proxy refused + Proxy-forbindelse nægtede + + + Connection to proxy closed prematurely + Proxy-forbindelse afsluttede i utide + + + Proxy host not found + Proxy-host kunne ikke findes + + + Connection to proxy timed out + Proxy-serverforbindelse timed out + + + Proxy authentication failed + Proxy autentificering mislykkedes + + + Proxy authentication failed: %1 + Proxy autentificering mislykkedes: %1 + + + SOCKS version 5 protocol error + SOCKS version 5 protokolfejl + + + General SOCKSv5 server failure + General SOCKSv5 serverfejl + + + Connection not allowed by SOCKSv5 server + Forbindelse ikke tilladt a SOCKSv5-server + + + TTL expired + TTL udløbet + + + SOCKSv5 command not supported + SOCKSv5-kommando ikke understøttet + + + Address type not supported + Adressetype understøttes ikke + + + Unknown SOCKSv5 proxy error code 0x%1 + Ukendt SOCKSv5 proxy fejlkode 0x%1 + + + Network operation timed out + Netværksoperationen timed out + + + + QSpinBox + + More + Mere + + + Less + Mindre + + + + QSql + + + Delete + Slet + + + Delete this record? + Slet denne post? + + + Yes + Ja + + + No + Nej + + + Insert + Indsæt + + + Update + Opdater + + + Save edits? + Gem ændringer? + + + Cancel + Annuller + + + Confirm + Bekræft + + + Cancel your edits? + Skal dine ændringer annulleres? + + + + QSslSocket + + + Unable to write data: %1 + Kunne ikke skrive data: %1 + + + Error while reading: %1 + Der opstod en fejl under læsning af: %1 + + + Error during SSL handshake: %1 + Der opstod en fejl under SSL handshake: %1 + + + Error creating SSL context (%1) + Der opstod fejl under oprettelse af SSL-kontekst (%1) + + + Invalid or empty cipher list (%1) + Ugyldig eller tom chifferliste (%1) + + + Error creating SSL session, %1 + Der opstod fejl under oprettelse af SSL-session, %1 + + + Error creating SSL session: %1 + Der opstod fejl under oprettelse af SSL-session, %1 + + + Cannot provide a certificate with no key, %1 + Kan ikke give et certifikat uden nøgle, %1 + + + Error loading local certificate, %1 + Der opstod fejl under indlæsning af lokalt certifikat, %1 + + + Error loading private key, %1 + Der opstod fejl under indlæsning af privat nøgle, %1 + + + Private key does not certificate public key, %1 + Privat-nøgle autoriserer ikke offentlig-nøgle, %1 + + + + QSystemSemaphore + + + %1: out of resources + %1: Ikke flere ressourcer + + + + %1: permission denied + %1: Tilladelse nægtet + + + %1: already exists + %1: Findes allerede + + + %1: does not exist + %1: Findes ikke + + + + %1: unknown error %2 + %1: Ukendt fejl %2 + + + + QTDSDriver + + + Unable to open connection + Kunne ikke etablere forbindelsen + + + Unable to use database + Kunne ikke bruge databasen + + + + QTabBar + + Scroll Left + Scroll til venstre + + + Scroll Right + Scroll til højre + + + + QTcpServer + + + Operation on socket is not supported + Socket-operation ikke understøttet + + + + QTextControl + + + &Undo + &Fortryd + + + &Redo + &Gendan + + + Cu&t + K&lip + + + &Copy + &Kopiér + + + Copy &Link Location + Kopiér l&ink + + + &Paste + &Sæt ind + + + Delete + Slet + + + Select All + Markér alt + + + + QToolButton + + Press + Tryk på + + + Open + Åbn + + + + QUdpSocket + + + This platform does not support IPv6 + Denne platform understøtter ikke IPv6 + + + + QUndoGroup + + + Undo + Fortryd + + + Redo + Gendan + + + + QUndoModel + + + <empty> + <tom> + + + + QUndoStack + + + Undo + Fortryd + + + Redo + Gendan + + + + QUnicodeControlCharacterMenu + + + LRM Left-to-right mark + + + + RLM Right-to-left mark + + + + ZWJ Zero width joiner + + + + ZWNJ Zero width non-joiner + + + + ZWSP Zero width space + + + + LRE Start of left-to-right embedding + + + + RLE Start of right-to-left embedding + + + + LRO Start of left-to-right override + + + + RLO Start of right-to-left override + + + + PDF Pop directional formatting + + + + Insert Unicode control character + + + + + QWebFrame + + + Request cancelled + Anmodning annulleret + + + Request blocked + Anmodning blokeret + + + Cannot show URL + Kan ikke vise URL + + + Frame load interruped by policy change + Billedindlæsning afbrudt af ændringer i retningslinier + + + Cannot show mimetype + Kan ikke vise MIME-type + + + File does not exist + Filen findes ikke + + + + QWebPage + + + Bad HTTP request + Dårlig HTTP-anmodning + + + + Submit + default label for Submit buttons in forms on web pages + Send + + + Submit + Submit (input element) alt text for <input> elements with no alt, title, or value + Send + + + Reset + default label for Reset buttons in forms on web pages + Nulstil + + + This is a searchable index. Enter search keywords: + text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index' + Dette er et søgeindeks. Indtast søgeord: + + + Choose File + title for file button used in HTML forms + Vælg fil + + + No file selected + text to display in file button used in HTML forms when no file is selected + Der er ikke valgt en fil + + + Open in New Window + Open in New Window context menu item + Åbn i nyt vindue + + + Save Link... + Download Linked File context menu item + Gem link... + + + Copy Link + Copy Link context menu item + Kopiér link + + + Open Image + Open Image in New Window context menu item + Åbn billede + + + Save Image + Download Image context menu item + Gem billede + + + Copy Image + Copy Link context menu item + Kopiér billede + + + Open Frame + Open Frame in New Window context menu item + Åbn faneblad + + + Copy + Copy context menu item + Kopiér + + + Go Back + Back context menu item + Gå tilbage + + + Go Forward + Forward context menu item + Gå frem + + + Stop + Stop context menu item + Stop + + + Reload + Reload context menu item + Genindlæs + + + Cut + Cut context menu item + Klip + + + Paste + Paste context menu item + Sæt ind + + + No Guesses Found + No Guesses Found context menu item + Der er ikke fundet nogen gæt + + + Ignore + Ignore Spelling context menu item + Ignorér + + + Add To Dictionary + Learn Spelling context menu item + Tilføj til ordbog + + + Search The Web + Search The Web context menu item + Søg på nettet + + + Look Up In Dictionary + Look Up in Dictionary context menu item + Slå op i ordbog + + + Open Link + Open Link context menu item + Åbn link + + + Ignore + Ignore Grammar context menu item + Ignorér + + + Spelling + Spelling and Grammar context sub-menu item + Stavekontrol + + + Show Spelling and Grammar + menu item title + Vis stave- og grammatikkontrol + + + Hide Spelling and Grammar + menu item title + Skjul stave- og grammatikkontrol + + + Check Spelling + Check spelling context menu item + Kør stavekontrol + + + Check Spelling While Typing + Check spelling while typing context menu item + Kør stavekontrol mens der tastes + + + Check Grammar With Spelling + Check grammar with spelling context menu item + Kør grammatikkontrol sammen med stavekontrol + + + Fonts + Font context sub-menu item + Skrifttyper + + + Bold + Bold context menu item + Fed + + + Italic + Italic context menu item + Kursiv + + + Underline + Underline context menu item + Understreget + + + Outline + Outline context menu item + Kontur + + + Direction + Writing direction context sub-menu item + Retning + + + Text Direction + Text direction context sub-menu item + Tekstretning + + + Default + Default writing direction context menu item + Standard + + + LTR + Left to Right context menu item + + + + RTL + Right to Left context menu item + + + + Inspect + Inspect Element context menu item + Inspicér + + + No recent searches + Label for only item in menu that appears when clicking on the search field image, when no searches have been performed + Ingen aktuelle søgninger + + + Recent searches + label for first item in the menu that appears when clicking on the search field image, used as embedded menu title + Aktuelle søgninger + + + Clear recent searches + menu item in Recent Searches menu that empties menu's contents + Ryd aktuelle søgninger + + + Unknown + Unknown filesize FTP directory listing item + Ukendt + + + %1 (%2x%3 pixels) + Title string for images + %1 (%2x%3 pixels) + + + + Web Inspector - %2 + Web-inspektør - %2 + + + + Scroll here + Scroll her + + + Left edge + Venstre kant + + + Top + + + + Right edge + Højre kant + + + Bottom + Bund + + + Page left + Side venstre + + + Page up + Side øverst + + + Page right + Side højre + + + Page down + Side ned + + + Scroll left + Scroll til venstre + + + Scroll up + Scroll op + + + Scroll right + Scroll til højre + + + Scroll down + Scroll ned + + + + %n file(s) + number of chosen file + + %n fil + %n filer + + + + + JavaScript Alert - %1 + JavaScript alert - %1 + + + JavaScript Confirm - %1 + JavaScript Bekræft - %1 + + + JavaScript Prompt - %1 + JavaScript Prompt - %1 + + + Move the cursor to the next character + Flyt markør til næste tegn + + + Move the cursor to the previous character + Flyt markør til forrige tegn + + + Move the cursor to the next word + Flyt markør til næste ord + + + Move the cursor to the previous word + Flyt markør til forrige ord + + + Move the cursor to the next line + Flyt markør til næste linie + + + Move the cursor to the previous line + Flyt markør til forrige linie + + + Move the cursor to the start of the line + Flyt markør til starten af linien + + + Move the cursor to the end of the line + Flyt markør til slutningen af linien + + + Move the cursor to the start of the block + Flyt markør til starten af sektionen + + + Move the cursor to the end of the block + Flyt markør til slutningen af sektionen + + + Move the cursor to the start of the document + Flyt markør til starten af dokumentet + + + Move the cursor to the end of the document + Flyt markør til slutningen af dokumentet + + + Select to the next character + Vælg til næste tegn + + + Select to the previous character + Vælg til forrige tegn + + + Select to the next word + Vælg til næste ord + + + Select to the previous word + Vælg til forrige ord + + + Select to the next line + Vælg til næste linie + + + Select to the previous line + Vælg til forrige linie + + + Select to the start of the line + Vælg til starten af linien + + + Select to the end of the line + Vælg til slutningen af linien + + + Select to the start of the block + Vælg til starten af sektionen + + + Select to the end of the block + Vælg til slutningen af sektionen + + + Select to the start of the document + Vælg til starten af dokumentet + + + Select to the end of the document + Vælg til slutningen af dokumentet + + + Delete to the start of the word + Slet til starten af ordet + + + Delete to the end of the word + Slet til slutningen af ordet + + + + QWhatsThisAction + + + What's This? + Hvad er dette? + + + + QWidget + + + * + + + + + QWizard + + + Go Back + Gå tilbage + + + Continue + Fortsæt + + + Commit + Udfør + + + Done + Færdig + + + Help + Hjælp + + + < &Back + < &Tilbage + + + &Finish + &Afslut + + + Cancel + Annuller + + + &Help + &Hjælp + + + &Next + &Næste + + + &Next > + &Næste > + + + + QWorkspace + + + &Restore + &Gendan + + + &Move + &Flyt + + + &Size + &Størrelse + + + Mi&nimize + Mi&nimér + + + Ma&ximize + Ma&ksimér + + + &Close + &Luk + + + Stay on &Top + Bliv på &toppen + + + Sh&ade + Sk&ygge + + + %1 - [%2] + + + + Minimize + Minimer + + + Restore Down + Gendan ned + + + Close + Luk + + + &Unshade + &Fjern skygge + + + + QXml + + + no error occurred + der opstod ingen fejl + + + error triggered by consumer + + + + unexpected end of file + uventet afslutning på fil + + + more than one document type definition + mere end én definition på dokumenttype + + + error occurred while parsing element + der opstod fejl under fortolking af element + + + tag mismatch + + + + error occurred while parsing content + der opstod fejl under fortolking af indhold + + + unexpected character + uventet tegn + + + invalid name for processing instruction + + + + version expected while reading the XML declaration + version forventet under læsning af XML-deklaration + + + wrong value for standalone declaration + + + + encoding declaration or standalone declaration expected while reading the XML declaration + + + + standalone declaration expected while reading the XML declaration + + + + error occurred while parsing document type definition + der opstod fejl under fortolking af dokumenttypedefinition + + + letter is expected + + + + error occurred while parsing comment + der opstod fejl under fortolking af kommentar + + + error occurred while parsing reference + der opstod fejl under fortolking af reference + + + internal general entity reference not allowed in DTD + + + + external parsed general entity reference not allowed in attribute value + + + + external parsed general entity reference not allowed in DTD + + + + unparsed entity reference in wrong context + ufortolket enhedsreference i forkert kontekst + + + recursive entities + + + + error in the text declaration of an external entity + fejl i tekstdeklaration på en ekstern enhed + + + + QXmlStream + + + Extra content at end of document. + Ekstra indhold sidst i dokumentet. + + + Invalid entity value. + Ugyldig enhedsværdi. + + + Invalid XML character. + Ugyldigt XML-tegn. + + + Sequence ']]>' not allowed in content. + Sekvens ']]>' ikke tilladt i indhold. + + + Namespace prefix '%1' not declared + Navnerumspræfiks '%1' ikke deklareret + + + Attribute redefined. + + + + Unexpected character '%1' in public id literal. + + + + Invalid XML version string. + Ugyldigt XML-versionsstreng. + + + Unsupported XML version. + XML-version understøttes ikke. + + + %1 is an invalid encoding name. + + + + Encoding %1 is unsupported + + + + Standalone accepts only yes or no. + + + + Invalid attribute in XML declaration. + + + + Premature end of document. + + + + Invalid document. + Ugyldigt dokument. + + + Expected + Forventet + + + , but got ' + , men fik ' + + + Unexpected ' + Uventet ' + + + Expected character data. + Forventet tegndata. + + + Recursive entity detected. + + + + Start tag expected. + Start-tag forventet. + + + XML declaration not at start of document. + XML-deklaration ikke i starten af dokumentet. + + + NDATA in parameter entity declaration. + + + + %1 is an invalid processing instruction name. + + + + Invalid processing instruction name. + + + + Illegal namespace declaration. + Ulovligt navnerumsdeklaration. + + + + Invalid XML name. + Ugyldigt XML-navn. + + + Opening and ending tag mismatch. + Åbner og afslutter tag-mismatch. + + + Reference to unparsed entity '%1'. + Reference to ufortolket enhed '%1'. + + + Entity '%1' not declared. + Enheden '%1' ikke deklareret. + + + Reference to external entity '%1' in attribute value. + Reference til ekstern enhed '%1' i attributværdi. + + + Invalid character reference. + Ugyldig tegnreference. + + + Encountered incorrectly encoded content. + + + + The standalone pseudo attribute must appear after the encoding. + + + + + %1 is an invalid PUBLIC identifier. + + + + + QtXmlPatterns + + + An %1-attribute with value %2 has already been declared. + + + + An %1-attribute must have a valid %2 as value, which %3 isn't. + + + + + Network timeout. + + + + + Element %1 can't be serialized because it appears outside the document element. + + + + + Year %1 is invalid because it begins with %2. + + + + Day %1 is outside the range %2..%3. + + + + Month %1 is outside the range %2..%3. + + + + Overflow: Can't represent date %1. + + + + Day %1 is invalid for month %2. + + + + Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; + + + + Time %1:%2:%3.%4 is invalid. + + + + Overflow: Date can't be represented. + + + + At least one component must be present. + + + + At least one time component must appear after the %1-delimiter. + + + + + No operand in an integer division, %1, can be %2. + + + + The first operand in an integer division, %1, cannot be infinity (%2). + + + + The second operand in a division, %1, cannot be zero (%2). + + + + + %1 is not a valid value of type %2. + + + + + When casting to %1 from %2, the source value cannot be %3. + + + + + Integer division (%1) by zero (%2) is undefined. + + + + Division (%1) by zero (%2) is undefined. + + + + Modulus division (%1) by zero (%2) is undefined. + + + + Dividing a value of type %1 by %2 (not-a-number) is not allowed. + + + + Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed. + + + + Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed. + + + + + A value of type %1 cannot have an Effective Boolean Value. + + + + + Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values. + + + + + Value %1 of type %2 exceeds maximum (%3). + + + + Value %1 of type %2 is below minimum (%3). + + + + + A value of type %1 must contain an even number of digits. The value %2 does not. + + + + %1 is not valid as a value of type %2. + + + + + Operator %1 cannot be used on type %2. + + + + Operator %1 cannot be used on atomic values of type %2 and %3. + + + + + The namespace URI in the name for a computed attribute cannot be %1. + + + + The name for a computed attribute cannot have the namespace URI %1 with the local name %2. + + + + + Type error in cast, expected %1, received %2. + + + + 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. + + + + + No casting is possible with %1 as the target type. + + + + It is not possible to cast from %1 to %2. + + + + Casting to %1 is not possible because it is an abstract type, and can therefore never be instantiated. + + + + It's not possible to cast the value %1 of type %2 to %3 + + + + Failure when casting from %1 to %2: %3 + + + + + A comment cannot contain %1 + + + + A comment cannot end with a %1. + + + + + No comparisons can be done involving the type %1. + + + + Operator %1 is not available between atomic values of type %2 and %3. + + + + + An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place. + + + + + A library module cannot be evaluated directly. It must be imported from a main module. + + + + No template by name %1 exists. + + + + + A value of type %1 cannot be a predicate. A predicate must have either a numeric type or an Effective Boolean Value type. + + + + A positional predicate must evaluate to a single numeric value. + + + + + The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid. + + + + %1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3. + + + + + The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two. + + + + + The data of a processing instruction cannot contain the string %1 + + + + + No namespace binding exists for the prefix %1 + + + + + No namespace binding exists for the prefix %1 in %2 + + + + + %1 is an invalid %2 + + + + + %1 takes at most %n argument(s). %2 is therefore invalid. + + + + + + + %1 requires at least %n argument(s). %2 is therefore invalid. + + + + + + + + The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration. + + + + The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5. + + + + The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5. + + + + + %1 is not a valid XML 1.0 character. + + + + + The first argument to %1 cannot be of type %2. + + + + + If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same. + + + + + %1 was called. + + + + + %1 must be followed by %2 or %3, not at the end of the replacement string. + + + + In the replacement string, %1 must be followed by at least one digit when not escaped. + + + + In the replacement string, %1 can only be used to escape itself or %2, not %3 + + + + + %1 matches newline characters + + + + %1 and %2 match the start and end of a line. + + + + Matches are case insensitive + + + + Whitespace characters are removed, except when they appear in character classes + + + + %1 is an invalid regular expression pattern: %2 + + + + %1 is an invalid flag for regular expressions. Valid flags are: + + + + + If the first argument is the empty sequence or a zero-length string (no namespace), a prefix cannot be specified. Prefix %1 was specified. + + + + + It will not be possible to retrieve %1. + + + + + The root node of the second argument to function %1 must be a document node. %2 is not a document node. + + + + + The default collection is undefined + + + + %1 cannot be retrieved + + + + + The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization). + + + + + A zone offset must be in the range %1..%2 inclusive. %3 is out of range. + + + + %1 is not a whole number of minutes. + + + + + Required cardinality is %1; got cardinality %2. + + + + + The item %1 did not match the required type %2. + + + + %1 is an unknown schema type. + + + + Only one %1 declaration can occur in the query prolog. + + + + The initialization of variable %1 depends on itself + + + + No variable by name %1 exists + + + + + The variable %1 is unused + + + + + Version %1 is not supported. The supported XQuery version is 1.0. + + + + The encoding %1 is invalid. It must contain Latin characters only, must not contain whitespace, and must match the regular expression %2. + + + + No function with signature %1 is available + + + + A default namespace declaration must occur before function, variable, and option declarations. + + + + Namespace declarations must occur before function, variable, and option declarations. + + + + Module imports must occur before function, variable, and option declarations. + + + + It is not possible to redeclare prefix %1. + + + + Prefix %1 is already declared in the prolog. + + + + The name of an option must have a prefix. There is no default namespace for options. + + + + The Schema Import feature is not supported, and therefore %1 declarations cannot occur. + + + + The target namespace of a %1 cannot be empty. + + + + The module import feature is not supported + + + + No value is available for the external variable by name %1. + + + + A construct was encountered which only is allowed in XQuery. + + + + A template by name %1 has already been declared. + + + + The keyword %1 cannot occur with any other mode name. + + + + The value of attribute %1 must of type %2, which %3 isn't. + + + + The prefix %1 can not be bound. By default, it is already bound to the namespace %2. + + + + A variable by name %1 has already been declared. + + + + A stylesheet function must have a prefixed name. + + + + The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this) + + + + The namespace %1 is reserved; therefore user defined functions may not use it. Try the predefined prefix %2, which exists for these cases. + + + + 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 + + + + A function already exists with the signature %1. + + + + No external functions are supported. All supported functions can be used directly, without first declaring them as external + + + + An argument by name %1 has already been declared. Every argument name must be unique. + + + + When function %1 is used for matching inside a pattern, the argument must be a variable reference or a string literal. + + + + In an XSL-T pattern, the first argument to function %1 must be a string literal, when used for matching. + + + + In an XSL-T pattern, the first argument to function %1 must be a literal or a variable reference, when used for matching. + + + + In an XSL-T pattern, function %1 cannot have a third argument. + + + + In an XSL-T pattern, only function %1 and %2, not %3, can be used for matching. + + + + In an XSL-T pattern, axis %1 cannot be used, only axis %2 or %3 can. + + + + %1 is an invalid template mode name. + + + + The name of a variable bound in a for-expression must be different from the positional variable. Hence, the two variables named %1 collide. + + + + The Schema Validation Feature is not supported. Hence, %1-expressions may not be used. + + + + None of the pragma expressions are supported. Therefore, a fallback expression must be present + + + + Each name of a template parameter must be unique; %1 is duplicated. + + + + The %1-axis is unsupported in XQuery + + + + %1 is not a valid name for a processing-instruction. + + + + %1 is not a valid numeric literal. + + + + No function by name %1 is available. + + + + The namespace URI cannot be the empty string when binding to a prefix, %1. + + + + %1 is an invalid namespace URI. + + + + It is not possible to bind to the prefix %1 + + + + Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared). + + + + Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared). + + + + Two namespace declaration attributes have the same name: %1. + + + + The namespace URI must be a constant and cannot use enclosed expressions. + + + + An attribute by name %1 has already appeared on this element. + + + + A direct element constructor is not well-formed. %1 is ended with %2. + + + + The name %1 does not refer to any schema type. + + + + %1 is an complex type. Casting to complex types is not possible. However, casting to atomic types such as %2 works. + + + + %1 is not an atomic type. Casting is only possible to atomic types. + + + + %1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported. + + + + The name of an extension expression must be in a namespace. + + + + + empty + + + + zero or one + + + + exactly one + + + + one or more + + + + zero or more + + + + + Required type is %1, but %2 was found. + + + + Promoting %1 to %2 may cause loss of precision. + + + + The focus is undefined. + + + + + It's not possible to add attributes after any other kind of node. + + + + An attribute by name %1 has already been created. + + + + + Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported. + + + + + Attribute %1 can't be serialized because it appears at the top level. + + + + + %1 is an unsupported encoding. + + + + %1 contains octets which are disallowed in the requested encoding %2. + + + + The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character. + + + + + Ambiguous rule match. + + + + + In a namespace constructor, the value for a namespace value cannot be an empty string. + + + + The prefix must be a valid %1, which %2 is not. + + + + The prefix %1 cannot be bound. + + + + Only the prefix %1 can be bound to %2 and vice versa. + + + + + Circularity detected + + + + + The parameter %1 is required, but no corresponding %2 is supplied. + + + + The parameter %1 is passed, but no corresponding %2 exists. + + + + + The URI cannot have a fragment + + + + + Element %1 is not allowed at this location. + + + + Text nodes are not allowed at this location. + + + + Parse error: %1 + + + + The value of the XSL-T version attribute must be a value of type %1, which %2 isn't. + + + + Running an XSL-T 1.0 stylesheet with a 2.0 processor. + + + + Unknown XSL-T attribute %1. + + + + Attribute %1 and %2 are mutually exclusive. + + + + In a simplified stylesheet module, attribute %1 must be present. + + + + If element %1 has no attribute %2, it cannot have attribute %3 or %4. + + + + Element %1 must have at least one of the attributes %2 or %3. + + + + At least one mode must be specified in the %1-attribute on element %2. + + + + + Attribute %1 cannot appear on the element %2. Only the standard attributes can appear. + + + + Attribute %1 cannot appear on the element %2. Only %3 is allowed, and the standard attributes. + + + + Attribute %1 cannot appear on the element %2. Allowed is %3, %4, and the standard attributes. + + + + Attribute %1 cannot appear on the element %2. Allowed is %3, and the standard attributes. + + + + XSL-T attributes on XSL-T elements must be in the null namespace, not in the XSL-T namespace which %1 is. + + + + The attribute %1 must appear on element %2. + + + + The element with local name %1 does not exist in XSL-T. + + + + + Element %1 must come last. + + + + At least one %1-element must occur before %2. + + + + Only one %1-element can appear. + + + + At least one %1-element must occur inside %2. + + + + When attribute %1 is present on %2, a sequence constructor cannot be used. + + + + Element %1 must have either a %2-attribute or a sequence constructor. + + + + When a parameter is required, a default value cannot be supplied through a %1-attribute or a sequence constructor. + + + + Element %1 cannot have children. + + + + Element %1 cannot have a sequence constructor. + + + + The attribute %1 cannot appear on %2, when it is a child of %3. + + + + A parameter in a function cannot be declared to be a tunnel. + + + + This processor is not Schema-aware and therefore %1 cannot be used. + + + + Top level stylesheet elements must be in a non-null namespace, which %1 isn't. + + + + The value for attribute %1 on element %2 must either be %3 or %4, not %5. + + + + Attribute %1 cannot have the value %2. + + + + The attribute %1 can only appear on the first %2 element. + + + + At least one %1 element must appear as child of %2. + + + + + VolumeSlider + + + Muted + + + + Volume: %1% + Lydstyrke: %1% + + + diff --git a/translations/qt_help_da.ts b/translations/qt_help_da.ts new file mode 100644 index 0000000..0e4a362 --- /dev/null +++ b/translations/qt_help_da.ts @@ -0,0 +1,354 @@ + + + + + QCLuceneResultWidget + + + Search Results + Søgeresultater + + + + Note: + Bemærk: + + + + The search results may not be complete since the documentation is still being indexed! + Søgeresultaterne kan være ufuldstændige, fordi dokumentationen stadig indekseres! + + + + Your search did not match any documents. + Søgningen matchede ikke nogen dokumenter. + + + + (The reason for this might be that the documentation is still being indexed.) + (Årsagen kan være, at dokumentationen stadig indekseres.) + + + + QHelpCollectionHandler + + + The collection file is not set up yet! + Hjælpesamlingen er ikke konfigureret endnu! + + + + Cannot open collection file: %1 + Kan ikke åbne hjælpesamlingen: %1 + + + + Cannot create tables in file %1! + Kan ikke oprette tabler i filen %1! + + + + The specified collection file already exists! + Den angivne hjælpesamling findes allerede! + + + + Cannot create directory: %1 + Kan ikke oprette kataloget: %1 + + + + Cannot copy collection file: %1 + Kan ikke kopiere hjælpesamling: %1 + + + + Unknown filter! + Ukendt filter! + + + + Cannot register filter %1! + Kan ikke registrere filteret %1! + + + + Cannot open documentation file %1! + Kan ikke åbne dokumentationsfilen %1! + + + + Invalid documentation file! + Ugyldig dokumentationsfil! + + + + The namespace %1 was not registered! + Navnerummet %1 blev ikke registreret! + + + + Namespace %1 already exists! + Navnerummet %1 findes allerede! + + + + Cannot register namespace! + Kan ikke registrere navnerummet! + + + + Cannot open database to optimize! + Kan ikke åbne den database, der skal optimeres! + + + + QHelpDBReader + + + Cannot open DB! + Kan ikke åbne DB! + + + + QHelpEngineCore + + + The specified namespace does not exist! + Det angivne navnerum findes ikke! + + + + QHelpEngineCorePrivate + + + Cannot open collection file %1! + Kan ikke åbne hjælpesamlingen %1! + + + + Cannot open documentation file %1! + Kan ikke åbne dokumentationsfilen %1! + + + + QHelpGenerator + + + Invalid help data! + Ugyldigt hjælpedata! + + + + No output file name specified! + Der er ikke anført et output-filnavn! + + + + The file %1 already exists! + Filen %1 findes allerede! + + + + Building up file structure... + Bygger filstruktur... + + + + Cannot open DB! + Kan ikke åbne DB! + + + + Cannot register namespace %1! + Kan ikke registrere navnerummet %1! + + + + Insert custom filters... + Indsæt brugerdefinerede filtre... + + + + Insert help data for filter section (%1 of %2)... + Indsæt hjælpedata til filtersektion (%1 af %2)... + + + + Documentation successfully generated. + Dokumentationen blev genereret. + + + + Some tables already exist! + Nogle af tabellerne findes allerede! + + + + Cannot create tables! + Kan ikke oprette tabeller! + + + + Cannot register virtual folder! + Kan ikke registrere virtuel mappe! + + + + Insert files... + Indsæt filer... + + + + The file %1 does not exist! Skipping it. + Filen %1 findes ikke, og den springes over. + + + + Cannot open file %1! Skipping it. + Kan ikke åbne filen %1, og den springes over. + + + + Cannot insert file data into database! + Kan ikke indsætte fildata i databasen! + + + + The filter %1 is already registered! + Filtret %1 er allerede registreret! + + + + Cannot register filter %1! + Kan ikke registrere filtret %1! + + + + Insert indices... + Indsæt indeks... + + + + Insert contents... + Indsæt indhold... + + + + Cannot insert contents! + Kan ikke indsætte indhold! + + + + Cannot register contents! + Kan ikke registrere indhold! + + + + QHelpSearchQueryWidget + + + Search for: + Søg efter: + + + + Search + Søg + + + + Advanced search + Avanceret søgning + + + + words <B>similar</B> to: + ord <B>tilsvarende</B>: + + + + <B>without</B> the words: + <B>uden</B> ordene: + + + + with <B>exact phrase</B>: + med den <B>eksakte sætning</B>: + + + + with <B>all</B> of the words: + med <B>alle</B> ordene: + + + + with <B>at least one</B> of the words: + med <B>mindst ét</B> af ordene: + + + + QHelpSearchResultWidget + + + 0 - 0 of 0 Hits + 0 - 0 af 0 Hits + + + + QHelpSearchResultWidgetPrivate + + + %1 - %2 of %3 Hits + %1 - %2 af %3 Hits + + + + QObject + + + Untitled + Ingen titel + + + + Unknown token at line %1. + Ukendt symbol på linie %1. + + + + Unknown token at line %1. Expected "QtHelpProject"! + Ukendt symbol på linie %1. Forventet "QtHelpProject"! + + + + A virtual folder must not contain a '/' character! + En virtuel mappe må ikke indholde tegnet '/'! + + + + A namespace must not contain a '/' character! + Et navnerum må ikke indeholde tegnet '/'! + + + + Missing namespace in QtHelpProject. + Navnerum i +++ mangler. + + + + Missing virtual folder in QtHelpProject + Virtuel mappe i QtHelpProject mangler + + + + Missing attribute in keyword at line %1. + Attribut i nøgleord på linie %1 mangler. + + + + The input file %1 could not be opened! + Input-filen %1 kunne ikke åbnes! + + + -- cgit v0.12 From 58253fafc6d3c0a535833e674d8930a46138c25f Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 25 May 2009 09:30:20 +0200 Subject: BT: Mac: Crash when using QFontDialog If creating a native QFontDialog and delete it, the native dialog will still show. And worse, it will call the deleted QDialog counterpart. This fix will clean up (and close the native dialog) when the QDialog is deleted. Task-number: 254397 Reviewed-by: Trenton Schulz --- src/gui/dialogs/qfontdialog.cpp | 8 ++++++++ src/gui/dialogs/qfontdialog_mac.mm | 1 + 2 files changed, 9 insertions(+) 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..13f7149 100644 --- a/src/gui/dialogs/qfontdialog_mac.mm +++ b/src/gui/dialogs/qfontdialog_mac.mm @@ -566,6 +566,7 @@ void *QFontDialogPrivate::openCocoaFontPanel(const QFont &initial, void QFontDialogPrivate::closeCocoaFontPanel(void *delegate) { + QMacCocoaAutoReleasePool pool; QCocoaFontPanelDelegate *theDelegate = static_cast(delegate); NSWindow *ourPanel = [theDelegate actualPanel]; [ourPanel close]; -- cgit v0.12 From 230357435d35a5b379c697723302108dd114585d Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Mon, 25 May 2009 14:05:27 +0200 Subject: qdoc: Moved some qdoc comments to a common cpp file. Task-number: 252488 --- src/gui/image/qpixmap.cpp | 95 +++++++++++++++++++++++++++++++++++++++++++ src/gui/image/qpixmap_qws.cpp | 14 ------- src/gui/image/qpixmap_win.cpp | 45 -------------------- src/gui/image/qpixmap_x11.cpp | 28 ------------- 4 files changed, 95 insertions(+), 87 deletions(-) diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp index 0f6b649..7fcb2b9 100644 --- a/src/gui/image/qpixmap.cpp +++ b/src/gui/image/qpixmap.cpp @@ -2014,4 +2014,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 -- cgit v0.12 From 1a477dcad1171d2d195422072fce62fc936e56cb Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Mon, 25 May 2009 14:46:20 +0200 Subject: Changed qdoc program to display version from QT_VERSION_STR. Task-number: 251486 --- tools/qdoc3/main.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 #include #include #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); } /*! -- cgit v0.12 From e77f2e595d9b9a6f078f37894733c52bbcfeb695 Mon Sep 17 00:00:00 2001 From: Norwegian Rock Cat Date: Mon, 25 May 2009 14:55:33 +0200 Subject: BT: Prevent crash in Designer when using a scroll wheel to change a property. There was some strangeness happening here with parents, but the main problem was the fact that wheel was getting sent to the focusframe and not to the widget below. However, the focusframe has the "transparent for mouse events" flag set and wheel events probably should be transparent as well. Task-number: 253539 Reviewed-by: Richard Moe Gustavsen --- src/gui/kernel/qcocoaview_mac.mm | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) 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); -- cgit v0.12 From b57d3f8169c6f1a1aab7203d79043a5f691b7e3e Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Mon, 25 May 2009 15:06:49 +0200 Subject: Changed qdoc to simplify the output for overloaded functions. Task-number: 249222 --- tools/qdoc3/doc.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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); } -- cgit v0.12 From 46bb023374dfd8684cefbe1d1c4ffc37f64f1239 Mon Sep 17 00:00:00 2001 From: Morten Engvoldsen Date: Mon, 25 May 2009 16:25:41 +0200 Subject: Adding details to QSettings functions Adding details to the documentation of custom storage format and related functions. Task-number: 207865 Rev-by: David Boddie Rev-by: Marius Storm-Olsen --- src/corelib/io/qsettings.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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. - + \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). -- cgit v0.12 From 9021113c583cc6b54b3b764e8e74d1448474c773 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Mon, 25 May 2009 16:32:25 +0200 Subject: startup crash on WinCE need to deploy the sqlite plugin, otherwise no model gets created, but referenced causing a crash. Task-number: 254435 Reviewed-by: joerg BT: yes --- examples/sql/sqlwidgetmapper/sqlwidgetmapper.pro | 3 +++ 1 file changed, 3 insertions(+) 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 + -- cgit v0.12 From 3d560a498803fadfec9163d7a9695aee60cca8d4 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 25 May 2009 16:26:13 +0200 Subject: BT: fix systray balloon crash bug on Windows CE Its the context menu handling code... again. Problem is, that during execution of translateMouseEvent, the widget is closed and a modal message box is shown. After that, there's no widget at globalPos and thus, alienWidget is null. This patch just adds a null check for alienWidget. Task-number: 254425 Reviewed-by: mauricek BT: yes --- src/gui/kernel/qapplication_win.cpp | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) 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); + } } } } -- cgit v0.12 From 0f0fc963a7f1691038ee36a27bb63ff3165eefba Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Mon, 25 May 2009 16:45:57 +0200 Subject: BT:Fix a clipping issue in tabbar tabs On XP and Vista where tabs use taboverlap, the currently dragged would loose the outline. We need to compensate for the taboverlap when creating the draggable widget, otherwise the outline will be clipped. Task-number: 254453 Reviewed-by: nrc --- src/gui/widgets/qtabbar.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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(); -- cgit v0.12 From 313e2719ac75eb6c6ff2d84f5cef9f70433d5943 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Mon, 25 May 2009 16:57:43 +0200 Subject: add deployment rules... WinCE needs those files to be able to do something useful Task-number: 254430 Task-number: 254437 Task-number: 254428 Reviewed-by: joerg BT: yes --- examples/itemviews/puzzle/puzzle.pro | 5 +++++ examples/qtconcurrent/imagescaling/imagescaling.pro | 2 ++ examples/widgets/movie/movie.pro | 8 ++++++++ 3 files changed, 15 insertions(+) diff --git a/examples/itemviews/puzzle/puzzle.pro b/examples/itemviews/puzzle/puzzle.pro index deed112..4f5aaad 100644 --- a/examples/itemviews/puzzle/puzzle.pro +++ b/examples/itemviews/puzzle/puzzle.pro @@ -12,3 +12,8 @@ target.path = $$[QT_INSTALL_EXAMPLES]/itemviews/puzzle sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.jpg sources.path = $$[QT_INSTALL_EXAMPLES]/itemviews/puzzle INSTALLS += target sources + +wince* { + DEPLOYMENT_PLUGIN += qjpeg qgif qtiff +} + diff --git a/examples/qtconcurrent/imagescaling/imagescaling.pro b/examples/qtconcurrent/imagescaling/imagescaling.pro index fbf864a..0a25efb 100644 --- a/examples/qtconcurrent/imagescaling/imagescaling.pro +++ b/examples/qtconcurrent/imagescaling/imagescaling.pro @@ -11,3 +11,5 @@ target.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent/imagescaling sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png sources.path = $$[QT_INSTALL_EXAMPLES]/qtconcurrent/imagescaling INSTALLS += target sources + +wince*: DEPLOYMENT_PLUGIN += qgif qjpeg qtiff diff --git a/examples/widgets/movie/movie.pro b/examples/widgets/movie/movie.pro index 1c7cbae..6aa5780 100644 --- a/examples/widgets/movie/movie.pro +++ b/examples/widgets/movie/movie.pro @@ -7,3 +7,11 @@ target.path = $$[QT_INSTALL_EXAMPLES]/widgets/movie sources.files = $$SOURCES $$HEADERS $$RESOURCES movie.pro animation.mng sources.path = $$[QT_INSTALL_EXAMPLES]/widgets/movie INSTALLS += target sources + +wince*: { + addFiles.sources += *.mng + addFiles.path = . + DEPLOYMENT += addFiles + DEPLOYMENT_PLUGIN += qmng +} + -- cgit v0.12 From a731cb5c1765bc3ab71469e86ec0533e5a5c18a5 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 25 May 2009 17:40:35 +0200 Subject: don't build examples/qtconcurrent/qtconcurrent.pro by default on Win CE This examples doesn't make much sense on most Windows CE devices. Task-number: 254433 Reviewed-by: mauricek BT: yes --- examples/qtconcurrent/qtconcurrent.pro | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/qtconcurrent/qtconcurrent.pro b/examples/qtconcurrent/qtconcurrent.pro index 53008f0..5d73533 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 -- cgit v0.12 From 305ce9ea67c11826d91c032ead55edfd5e15462f Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 25 May 2009 18:10:08 +0200 Subject: fix warning in QtSvg if qreal == float Reviewed-by: mauricek --- src/svg/qsvggenerator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; -- cgit v0.12 From 3868c7dacde57c3e929ad72b9c9c42f8ddf4dc62 Mon Sep 17 00:00:00 2001 From: Norwegian Rock Cat Date: Mon, 25 May 2009 18:42:16 +0200 Subject: BT: Namespace compile fixes. This broke again. I Need to get a way to automate this, I'll discuss with QA. --- src/gui/kernel/qcocoaapplicationdelegate_mac.mm | 2 +- src/gui/kernel/qcocoaview_mac_p.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) 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_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 -- cgit v0.12 From b94416a8fe3fae0e9ab01dea9d5a78a21c4affc0 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Mon, 25 May 2009 19:43:12 +0200 Subject: Doc: Fixed terminology. Reviewed-by: Trust Me --- src/corelib/tools/qcryptographichash.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp index 7232626..e438179 100644 --- a/src/corelib/tools/qcryptographichash.cpp +++ b/src/corelib/tools/qcryptographichash.cpp @@ -74,7 +74,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. */ /*! -- cgit v0.12 From 4bee6cac20b52761f39b139c61d5861fe7b68c6f Mon Sep 17 00:00:00 2001 From: David Boddie Date: Mon, 25 May 2009 19:52:30 +0200 Subject: Doc: Fixed links to resources on the qtsoftware.com Web site. Task-number: 254463 Reviewed-by: Denis Dzyubenko --- doc/src/index.qdoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc index 4ead9e4..5bf3661 100644 --- a/doc/src/index.qdoc +++ b/doc/src/index.qdoc @@ -207,10 +207,10 @@ -- cgit v0.12 From 152d5fb2d97432d92b6b84e6e81c0236d278ac5d Mon Sep 17 00:00:00 2001 From: David Boddie Date: Mon, 25 May 2009 20:00:12 +0200 Subject: Doc: Removed documentation about the non-existent QKeyEvent::standardKey() function. Task-number: 254074 Reviewed-by: Trust Me --- src/gui/kernel/qkeysequence.cpp | 2 -- 1 file changed, 2 deletions(-) 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(). -- cgit v0.12 From 8b34bd541c6aa201c4d872210228bce8217a5e03 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Mon, 25 May 2009 20:10:25 +0200 Subject: Doc: Miscellaneous documentation fixes for Qt 4.5.x and later. Reviewed-by: Trust Me --- doc/src/snippets/picture/picture.cpp | 2 +- src/corelib/tools/qstringlist.cpp | 2 -- src/gui/painting/qpainterpath.cpp | 8 ++++---- src/gui/text/qfontmetrics.cpp | 12 ++++++------ src/network/ssl/qsslcertificate.cpp | 2 +- 5 files changed, 12 insertions(+), 14 deletions(-) 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/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/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/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 "&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 "&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 "&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 "&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/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 -- cgit v0.12 From 23820c30052ea23ecf2226c300fc4819dd294306 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Mon, 25 May 2009 20:13:34 +0200 Subject: Doc: Fixed custom graphics item snippet. As reported on qt-interest: http://lists.trolltech.com/pipermail/qt-interest/2009-May/007036.html Reviewed-by: Trust Me --- doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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, -- cgit v0.12 From bbefe9e67366151e2286a2ff6bee0d1009b2a12c Mon Sep 17 00:00:00 2001 From: David Boddie Date: Mon, 25 May 2009 20:24:22 +0200 Subject: Doc: Removed the incorrect figures for Thumb builds of libraries. We need to resolve the issues around the use of Thumb code in Qt and automate the building and comparison of libraries. Reviewed-by: Trust Me --- doc/src/installation.qdoc | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/src/installation.qdoc b/doc/src/installation.qdoc index 925a195..6a689f9 100644 --- a/doc/src/installation.qdoc +++ b/doc/src/installation.qdoc @@ -738,8 +738,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 -- cgit v0.12 From a4ca38bab521e1f0095b9c90c4623ca9d41d219b Mon Sep 17 00:00:00 2001 From: David Boddie Date: Mon, 25 May 2009 20:27:19 +0200 Subject: Doc: Clarified what close(), abort() and disconnectFromHost() really do to the socket connection. (Reviewed - see below.) Also included corrections to the description of how to send SocketError and SocketState values via signals. (Trust me - as part of an earlier revision of the custom types documentation.) Task-number: 222907 Reviewed-by: Andy Shaw --- src/network/socket/qabstractsocket.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 336a7e7..4bb12e6 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} */ /*! @@ -1864,9 +1866,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() */ @@ -2163,7 +2165,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() */ @@ -2456,7 +2463,8 @@ QNetworkProxy QAbstractSocket::proxy() const #endif // QT_NO_NETWORKPROXY #ifdef QT3_SUPPORT -/*! \enum QAbstractSocket::Error +/*! + \enum QAbstractSocket::Error \compat Use QAbstractSocket::SocketError instead. -- cgit v0.12 From 2248d63c1a32ae84bb6d0bde9021a8074db1b4c9 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Tue, 26 May 2009 10:46:54 +1000 Subject: Fixed qmake writing targets into the root of the current drive when DESTDIR=./ and using Windows, nmake and shadow builds. qmake would canonicalize the DESTDIR of "./" to "". Then it would check if the original DESTDIR ended with "/", and if so, append it to the new DESTDIR, resulting in a DESTDIR of "/" - the root of the current drive. Don't do that. This bug doesn't occur with in-source builds because qmake detects that the source and build directories are the same directory and replaces the DESTDIR of "./" with "" before it reaches the buggy code. Autotest: included Reviewed-by: Lincoln Ramsay --- qmake/generators/win32/winmakefile.cpp | 2 +- tests/auto/qmake/tst_qmake.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) 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/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"; -- cgit v0.12 From 682b854872c26d7408d79131217825fb8ddace6a Mon Sep 17 00:00:00 2001 From: Michael Goddard Date: Tue, 26 May 2009 10:39:36 +1000 Subject: BT:Fix access of deleted memory with a static QCursor. If a QCursor with a predefined shape is declared static, it could be destroyed after the application dtor has already cleaned up QCursor memory. Task-number: 254467 Reviewed-by: Rhys Weatherley --- src/gui/kernel/qcursor.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qcursor.cpp b/src/gui/kernel/qcursor.cpp index ed7e020..598f4ba 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; -- cgit v0.12 From 5839b16a73c36ff7636c13f841d26e6a5e0c5435 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Tue, 28 Apr 2009 17:37:52 +0200 Subject: fix double slash prepending causing troubles on WinCE Before adding a / to the path one should check if it doesn't end with one already. Otherwise one might get paths like //My Documents on WinCE causing the native call to crash the filesystem service on that system. Reviewed-by: alexis --- src/gui/dialogs/qfilesystemmodel_p.h | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/gui/dialogs/qfilesystemmodel_p.h b/src/gui/dialogs/qfilesystemmodel_p.h index 0a1265a..61e8b4c 100644 --- a/src/gui/dialogs/qfilesystemmodel_p.h +++ b/src/gui/dialogs/qfilesystemmodel_p.h @@ -164,9 +164,12 @@ public: QHash::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::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); } } -- cgit v0.12 From e7a607f0f1f7837a26bf95248504497b0534e357 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Tue, 26 May 2009 10:19:02 +0200 Subject: qdoc: Indicate that qAbs(T& v) compares v to a 0 of type T. Task-number: 246789 --- doc/src/index.qdoc | 1 + src/corelib/global/qglobal.cpp | 49 +++++++++++++++++++++++++++++++----------- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc index 4ead9e4..9846ac4 100644 --- a/doc/src/index.qdoc +++ b/doc/src/index.qdoc @@ -153,6 +153,7 @@
  • All Overviews and HOWTOs
  • Qt Widget Gallery
  • Class Chart
  • +
  • Qt Global Declarations
  • diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 8324d05..f767bb9 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -125,7 +125,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 @@ -442,14 +443,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 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 @@ -694,7 +699,9 @@ QT_BEGIN_NAMESPACE \relates 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 @@ -705,7 +712,9 @@ QT_BEGIN_NAMESPACE \relates 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 @@ -734,7 +743,11 @@ QT_BEGIN_NAMESPACE /*! \fn const T &qAbs(const T &value) \relates - 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 */ @@ -742,7 +755,9 @@ QT_BEGIN_NAMESPACE /*! \fn int qRound(qreal value) \relates - 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 */ @@ -750,7 +765,9 @@ QT_BEGIN_NAMESPACE /*! \fn qint64 qRound64(qreal value) \relates - 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 */ @@ -758,7 +775,9 @@ QT_BEGIN_NAMESPACE /*! \fn const T &qMin(const T &value1, const T &value2) \relates - 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 @@ -768,7 +787,9 @@ QT_BEGIN_NAMESPACE /*! \fn const T &qMax(const T &value1, const T &value2) \relates - 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 @@ -779,7 +800,9 @@ QT_BEGIN_NAMESPACE \relates 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 @@ -925,7 +948,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 -- cgit v0.12 From 2a390bb481a2433a239a9198e463c9337a26db59 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 25 May 2009 18:32:46 +0200 Subject: Fixed: QSortFilterProxyModel setDynamicSortFilter doesn't works when setting the model initially This was caused by two different bug: - In the QSortFilterProxyModel, we need to re-sort when setting the source model change the sorting column (happen when setting a model initially) - In the treeview, we need to activate the sorting even if there is no column yet (because the initial model is empty Task-number: 254234 Reviewed-by: Thierry BT: --- src/gui/itemviews/qheaderview.cpp | 4 ++- src/gui/itemviews/qsortfilterproxymodel.cpp | 3 ++- src/gui/itemviews/qtreeview.cpp | 8 +++--- .../tst_qsortfilterproxymodel.cpp | 10 ++++++++ tests/auto/qtreeview/tst_qtreeview.cpp | 29 +++++++++++++++++++++- 5 files changed, 48 insertions(+), 6 deletions(-) diff --git a/src/gui/itemviews/qheaderview.cpp b/src/gui/itemviews/qheaderview.cpp index dc63b25..86ece40 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/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 655ea4e..54d6619 100644 --- a/tests/auto/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/qtreeview/tst_qtreeview.cpp @@ -225,6 +225,7 @@ private slots: void task238873_avoidAutoReopening(); void task244304_clickOnDecoration(); void task246536_scrollbarsNotWorking(); + void task254234_proxySort(); }; class QtTestModel: public QAbstractItemModel @@ -2493,7 +2494,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")); - } /* @@ -3272,5 +3272,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" -- cgit v0.12 From 86598234d8c055fe8dbc474d292619d453cc9f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Tue, 26 May 2009 11:03:24 +0200 Subject: BT: Google suggest example not launching from the Qt Demo app. The example was installed in the wrong directory. Task-number: 254452 Reviewed-by: Kim --- examples/network/googlesuggest/googlesuggest.pro | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 -- cgit v0.12 From 72ecfb3eb9b65ed2617942510fa0c9af5075f209 Mon Sep 17 00:00:00 2001 From: Kavindra Devi Palaraja Date: Tue, 26 May 2009 12:03:13 +0200 Subject: Doc - more screenshots and adding better description Details: Work in progress --- doc/src/designer-manual.qdoc | 28 ++++++++++++++------------- doc/src/images/designer-choosing-form.png | Bin 38078 -> 39080 bytes doc/src/images/rgbController-arrangement.png | Bin 0 -> 10813 bytes 3 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 doc/src/images/rgbController-arrangement.png diff --git a/doc/src/designer-manual.qdoc b/doc/src/designer-manual.qdoc index 03b74e6..77b208b 100644 --- a/doc/src/designer-manual.qdoc +++ b/doc/src/designer-manual.qdoc @@ -235,6 +235,7 @@ \page designer-to-know.html \contentspage {Qt Designer Manual}{Contents} + \title Getting to Know Qt Designer \tableofcontents @@ -408,6 +409,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 +421,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,20 +436,22 @@ 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. + Then you 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. The screenshot below shows the form after all three labels have been + renamed. + + 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 \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}. diff --git a/doc/src/images/designer-choosing-form.png b/doc/src/images/designer-choosing-form.png index fa6e470..bee4b29 100644 Binary files a/doc/src/images/designer-choosing-form.png and b/doc/src/images/designer-choosing-form.png differ diff --git a/doc/src/images/rgbController-arrangement.png b/doc/src/images/rgbController-arrangement.png new file mode 100644 index 0000000..d9e8bab Binary files /dev/null and b/doc/src/images/rgbController-arrangement.png differ -- cgit v0.12 From 57df8bc3ddd2bc5aaf5c25cf3e311fe56ad50ffb Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Tue, 26 May 2009 12:07:01 +0200 Subject: qdoc: Indicate what iterator_categor means for container classes. Task-number: 245501 --- doc/src/qset.qdoc | 9 +++++---- src/corelib/tools/qlistdata.cpp | 6 ++++-- src/corelib/tools/qmap.cpp | 6 ++++-- 3 files changed, 13 insertions(+), 8 deletions(-) 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/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 -- cgit v0.12 From 337ffb38e35ca43e4119ac0634499b226137692e Mon Sep 17 00:00:00 2001 From: David Boddie Date: Tue, 26 May 2009 12:08:45 +0200 Subject: Doc: Removed irrelevant links from the Qt for Windows CE documentation. Reviewed-by: Maurice Kalinowski --- doc/src/topics.qdoc | 2 -- 1 file changed, 2 deletions(-) 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 -- cgit v0.12 From 3037e466ebf21aa4a47a722a1e2ff497690cbef5 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Tue, 26 May 2009 12:31:23 +0200 Subject: Fix a crash in Phonon::EffectWidget When creating a UI based on double types we only assigned the control pointer in certain cases. This would crash because the tooltip did not check for the pointer, but the real issue was that we didnt assign the control in the first place. Task-number: 249710 Reviewed-by: Richard Moe Gustavsen --- src/3rdparty/phonon/phonon/effectwidget.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 -- cgit v0.12 From 54f92419b23b425e32ad573db17f608a67936df1 Mon Sep 17 00:00:00 2001 From: Morten Engvoldsen Date: Tue, 26 May 2009 12:40:02 +0200 Subject: Clearifying QWebFrame docs Adding docs to toHtml() and toPlainText() Task-number: 253088 Rev-by: Ariya Hidayat Rev-by: David Boddie --- src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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() */ -- cgit v0.12 From f640eca34f63631f938817b1254d0caf92cc9143 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 26 May 2009 10:04:53 +0200 Subject: Carbon, QFontDialog::getFont() ignore the "initial" parameter Seems like no code was written to handle other font engines than CoreText. Unfortunatly the engine on Carbon is ATSUI. This patch adds general code for converting a QFont to an NSFont so the dialog can support other engines than CoreText Task-number: 251957 Reviewed-by: Trenton Schulz --- src/gui/dialogs/qfontdialog_mac.mm | 39 ++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/src/gui/dialogs/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm index 13f7149..3be53db 100644 --- a/src/gui/dialogs/qfontdialog_mac.mm +++ b/src/gui/dialogs/qfontdialog_mac.mm @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #import @@ -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([cocoaFont familyName]))); - QString typeface(QCFString::toQString(reinterpret_cast([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()); @@ -598,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(static_cast(fe)->ctfont); - [[NSFontManager sharedFontManager] setSelectedFont:nsFont isMultiple:NO]; - } + nsFont = reinterpret_cast(static_cast(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(delegate) setQtFont:font]; } -- cgit v0.12 From c37c8370e4897d2e6191df2d1ccde43830ffb8d0 Mon Sep 17 00:00:00 2001 From: Kavindra Devi Palaraja Date: Tue, 26 May 2009 13:42:33 +0200 Subject: Doc - more screenshots and better description --- doc/src/designer-manual.qdoc | 35 ++++++++--------------- doc/src/images/rgbController-final-layout.png | Bin 0 -> 11275 bytes doc/src/images/rgbController-form-gridLayout.png | Bin 0 -> 11235 bytes doc/src/images/rgbController-selectForLayout.png | Bin 0 -> 20981 bytes 4 files changed, 12 insertions(+), 23 deletions(-) create mode 100644 doc/src/images/rgbController-final-layout.png create mode 100644 doc/src/images/rgbController-form-gridLayout.png create mode 100644 doc/src/images/rgbController-selectForLayout.png diff --git a/doc/src/designer-manual.qdoc b/doc/src/designer-manual.qdoc index 77b208b..452782f 100644 --- a/doc/src/designer-manual.qdoc +++ b/doc/src/designer-manual.qdoc @@ -436,41 +436,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. To change the label's default text, simply double-click on - it. The screenshot below shows the form after all three labels have been - renamed. - - You can roughly arrange them according to how you would like them to be - laid out. \table - \row \o \inlineimage rgbController-widgetBox.png - \o \inlineimage rgbController-arrangement.png - \endtable + \row + \i \inlineimage rgbController-arrangement.png + \i \bold{Placing Widgets on a Form} + Drag three labels, three spin boxes and three vertical sliders on to your + form. To change the label's default text, simply double-click on it. You + can arrange them according to how you would like them to be laid out. + \endtable + To ensure that they are laid out exactly like this in your program, you need to place these widgets into a layout. We will do this in groups of three. Select the "RED" label. Then, hold down \key Ctrl while you select its corresponding spin box and slider. In the \gui{Form} menu, select \gui{Lay Out in a Grid}. - \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 @@ -478,7 +469,9 @@ 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 @@ -495,7 +488,6 @@ pressing \key{F4} or something \gui{Edit Signals/Slots} from the \gui{Edit} menu. - \omit \table \row \i \inlineimage rgbController-signalsAndSlots.png @@ -505,11 +497,8 @@ \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 Repeat the step (in reverse order), clicking on the spin box and dragging the cursor towards the slider, to connect the spin box's 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 Binary files /dev/null and b/doc/src/images/rgbController-final-layout.png 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 Binary files /dev/null and b/doc/src/images/rgbController-form-gridLayout.png differ diff --git a/doc/src/images/rgbController-selectForLayout.png b/doc/src/images/rgbController-selectForLayout.png new file mode 100644 index 0000000..7a8e184 Binary files /dev/null and b/doc/src/images/rgbController-selectForLayout.png differ -- cgit v0.12 From aec18b0eea741da58a02f7ad95ab5ee9dccfce6c Mon Sep 17 00:00:00 2001 From: Kavindra Devi Palaraja Date: Tue, 26 May 2009 13:44:35 +0200 Subject: Doc - whitespace cleaning --- doc/src/designer-manual.qdoc | 48 ++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/doc/src/designer-manual.qdoc b/doc/src/designer-manual.qdoc index 452782f..9c13d79 100644 --- a/doc/src/designer-manual.qdoc +++ b/doc/src/designer-manual.qdoc @@ -299,12 +299,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. @@ -358,7 +358,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 @@ -367,7 +367,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: @@ -446,7 +446,7 @@ form. To change the label's default text, simply double-click on it. You can arrange them according to how you would like them to be laid out. \endtable - + To ensure that they are laid out exactly like this in your program, you need to place these widgets into a layout. We will do this in groups of three. Select the "RED" label. Then, hold down \key Ctrl while you select @@ -779,11 +779,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 @@ -795,12 +795,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 . @@ -902,7 +902,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 @@ -1129,7 +1129,7 @@ spacers just provide spacing hints to layouts, so they cannot be connected to other objects. - + \target HighlightedObjects \table \row @@ -1168,7 +1168,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. @@ -1711,22 +1711,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. @@ -1738,15 +1738,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 @@ -2554,7 +2554,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. @@ -2655,7 +2655,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 -- cgit v0.12 From 2c8348f5ccf62be31479dcd78282395a98eed76f Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 26 May 2009 14:13:21 +0200 Subject: BT: opening datetimepicker in a cell in spreadsheet demo resets the date That was a bug in the exemple. Reviewed-by: Kavindra Palaraja --- demos/spreadsheet/spreadsheetdelegate.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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(editor); if (dateEditor) { - model->setData(index, dateEditor->date().toString("dd/M/yyy")); + model->setData(index, dateEditor->date().toString("dd/M/yyyy")); } } } -- cgit v0.12 From 1536b02ed1633555e306bec02398a2a7c1bdabf7 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 26 May 2009 14:19:27 +0200 Subject: Test for QDate::fromDate with string format. Note that two digit years are always in the year 19xx This is excepted for compatibility reason as discussed with Peter --- tests/auto/qdate/tst_qdate.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) 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("string"); + QTest::addColumn("format"); + QTest::addColumn("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("t"); -- cgit v0.12 From 8a2ca9b0d8ed23cec44e40f61c0f4983fbc55282 Mon Sep 17 00:00:00 2001 From: Morten Engvoldsen Date: Tue, 26 May 2009 14:06:56 +0200 Subject: Correcting bugs in classic.css Correcting invalid padding values. none is not a valid padding value. Rev-by: David Boddie --- tools/qdoc3/test/classic.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 } -- cgit v0.12 From 871b730da203cef773e159960532888522f16a0b Mon Sep 17 00:00:00 2001 From: Trond Kjernaasen Date: Tue, 26 May 2009 14:20:34 +0200 Subject: BT: Fixed GL textdrawing in the Boxes demo. Reworked the 85f98acaa3a38079071bea711e43c9a86edec1f6 fix, since it broke glyph positioning in the GL engine under Windows. Instead of changing the glyph cache margin, which impacts where the glyph is positioned, we just make the image the glyph is drawn into 4 pixels bigger in width/heigth. The margin in QImageTextureGlyphCache needs to be reworked.. Task-number: 254450 Reviewed-by: Eskil --- src/gui/painting/qtextureglyphcache.cpp | 8 ++++++-- src/gui/text/qfontengine_win.cpp | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-) 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/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(); -- cgit v0.12 From c17f27a9a14c353c6149f2c15f6a0ff6afe3dedd Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Tue, 26 May 2009 13:22:00 +0200 Subject: SSL: Remove broken system certificate loading code Task-number: 254365 Reviewed-by: Peter Hartmann --- src/network/ssl/qsslsocket_openssl.cpp | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) 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 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); -- cgit v0.12 From 7c383fc79510276439deeb706d48ad5543fb54e7 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Tue, 26 May 2009 14:46:15 +0200 Subject: Fix a painting issue in the QGtkStyle statusbar We should use the "statusbar" string when we draw the sizegrip. Since gtkstatusbar is the only gtk widget using the paint_resize_grip and it uses the "statusbar" string itself it should be safe to assume this. Task-number: 254535 Reviewed-by: rosch --- src/gui/styles/qgtkstyle.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp index 86653df..14be518 100644 --- a/src/gui/styles/qgtkstyle.cpp +++ b/src/gui/styles/qgtkstyle.cpp @@ -2344,7 +2344,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); -- cgit v0.12 From 1164e61393349fc3d6bf06d0789fa6ea2cfb5909 Mon Sep 17 00:00:00 2001 From: Kavindra Devi Palaraja Date: Tue, 26 May 2009 15:37:45 +0200 Subject: Doc - more images and additional description --- doc/src/designer-manual.qdoc | 24 +++++++++++---------- .../images/rgbController-configure-connection1.png | Bin 0 -> 29210 bytes .../images/rgbController-configure-connection2.png | Bin 0 -> 28655 bytes doc/src/images/rgbController-property-editing.png | Bin 0 -> 9158 bytes doc/src/images/rgbController-screenshot.png | Bin 0 -> 8995 bytes doc/src/images/rgbController-signalsAndSlots.png | Bin 0 -> 10050 bytes 6 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 doc/src/images/rgbController-configure-connection1.png create mode 100644 doc/src/images/rgbController-configure-connection2.png create mode 100644 doc/src/images/rgbController-property-editing.png create mode 100644 doc/src/images/rgbController-screenshot.png create mode 100644 doc/src/images/rgbController-signalsAndSlots.png diff --git a/doc/src/designer-manual.qdoc b/doc/src/designer-manual.qdoc index 9c13d79..58d0f71 100644 --- a/doc/src/designer-manual.qdoc +++ b/doc/src/designer-manual.qdoc @@ -478,11 +478,12 @@ 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} @@ -498,13 +499,18 @@ correct signal and slot and click \gui OK. \endtable - \image rgbController-configureConnection.png + \image rgbController-configureConnection1.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. @@ -512,7 +518,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 @@ -523,17 +528,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 diff --git a/doc/src/images/rgbController-configure-connection1.png b/doc/src/images/rgbController-configure-connection1.png new file mode 100644 index 0000000..0798184 Binary files /dev/null and b/doc/src/images/rgbController-configure-connection1.png 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 Binary files /dev/null and b/doc/src/images/rgbController-configure-connection2.png 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 Binary files /dev/null and b/doc/src/images/rgbController-property-editing.png differ diff --git a/doc/src/images/rgbController-screenshot.png b/doc/src/images/rgbController-screenshot.png new file mode 100644 index 0000000..6019233 Binary files /dev/null and b/doc/src/images/rgbController-screenshot.png differ diff --git a/doc/src/images/rgbController-signalsAndSlots.png b/doc/src/images/rgbController-signalsAndSlots.png new file mode 100644 index 0000000..2ba3aba Binary files /dev/null and b/doc/src/images/rgbController-signalsAndSlots.png differ -- cgit v0.12 From a088a3e5698881b0466cd072380fc7347ea68fba Mon Sep 17 00:00:00 2001 From: kh Date: Tue, 26 May 2009 15:53:52 +0200 Subject: Fix broken search inside search results. Reviewed-by: kh --- tools/assistant/tools/assistant/centralwidget.cpp | 131 ++++++++++------------ tools/assistant/tools/assistant/centralwidget.h | 5 +- 2 files changed, 66 insertions(+), 70 deletions(-) diff --git a/tools/assistant/tools/assistant/centralwidget.cpp b/tools/assistant/tools/assistant/centralwidget.cpp index b78f346..98245c0 100644 --- a/tools/assistant/tools/assistant/centralwidget.cpp +++ b/tools/assistant/tools/assistant/centralwidget.cpp @@ -848,60 +848,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(m_searchWidget); + found = findInTextBrowser(browser, ttf, forward, backward); } - } #else - if (viewer) { - doc = viewer->document(); - cursor = viewer->textCursor(); - browser = qobject_cast(viewer); - } + QTextBrowser *browser = qobject_cast(viewer); + if (tabWidget->currentWidget() == m_searchWidget) + browser = qFindChild(m_searchWidget); + found = findInTextBrowser(browser, ttf, forward, backward); +#endif - if (tabWidget->currentWidget() == m_searchWidget) { - QTextBrowser *browser = qFindChild(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 +914,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..1342a75 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; @@ -176,7 +177,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(); -- cgit v0.12 From b03f598df2aa4037815eab9249ba1213236216c5 Mon Sep 17 00:00:00 2001 From: kh Date: Tue, 26 May 2009 15:57:45 +0200 Subject: Workaround the palette issue, set it only when we search is open. --- tools/assistant/tools/assistant/centralwidget.cpp | 35 +++++++++++++++++++++-- tools/assistant/tools/assistant/centralwidget.h | 5 ++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/tools/assistant/tools/assistant/centralwidget.cpp b/tools/assistant/tools/assistant/centralwidget.cpp index 98245c0..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() diff --git a/tools/assistant/tools/assistant/centralwidget.h b/tools/assistant/tools/assistant/centralwidget.h index 1342a75..d59dbe5 100644 --- a/tools/assistant/tools/assistant/centralwidget.h +++ b/tools/assistant/tools/assistant/centralwidget.h @@ -80,6 +80,10 @@ signals: void findNext(); void findPrevious(); +protected: + void hideEvent(QHideEvent* event); + void showEvent(QShowEvent * event); + private slots: void updateButtons(); @@ -95,6 +99,7 @@ private: QToolButton *toolPrevious; QCheckBox *checkWholeWords; + QPalette appPalette; friend class CentralWidget; }; -- cgit v0.12 From f61056a556259c12a6de23f12756e45737345111 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Tue, 26 May 2009 16:08:59 +0200 Subject: Doc: Updated the list of tools to include makeqpf and qvfb. Reviewed-by: Marcel Schuette --- doc/src/emb-fonts.qdoc | 2 +- doc/src/emb-makeqpf.qdoc | 9 ++++++--- doc/src/tools-list.qdoc | 6 ++---- 3 files changed, 9 insertions(+), 8 deletions(-) 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/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)} -- cgit v0.12 From 8bf5a6986db852525582713cc2f2a760df4fdc60 Mon Sep 17 00:00:00 2001 From: Alexis Menard Date: Tue, 26 May 2009 16:50:48 +0200 Subject: QFileDialog selection bug when calling it multiple times. The problem was that we don't clear the selection model if the previous selection was valid. Task-number:251341 Reviewed-by:jasplin --- src/gui/dialogs/qfiledialog.cpp | 11 +++++----- tests/auto/qfiledialog/tst_qfiledialog.cpp | 33 ++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index eeb2743..d42775a 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -776,6 +776,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; @@ -790,13 +791,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); } /** diff --git a/tests/auto/qfiledialog/tst_qfiledialog.cpp b/tests/auto/qfiledialog/tst_qfiledialog.cpp index 689f73d..16c84d8 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; @@ -1981,5 +1982,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(&fd, "fileNameEdit"); + QVERIFY(lineEdit); + QCOMPARE(lineEdit->text(),QLatin1String("new_file.txt")); + QListView *list = qFindChild(&fd, "listView"); + QVERIFY(list); + QCOMPARE(list->selectionModel()->selectedRows(0).count(), 0); + + t->deleteLater(); +} + QTEST_MAIN(tst_QFiledialog) #include "tst_qfiledialog.moc" -- cgit v0.12 From cfe54548131d78db9d58366e35e9b29e5d3ba238 Mon Sep 17 00:00:00 2001 From: Thomas Sondergaard Date: Fri, 22 May 2009 20:26:46 +0200 Subject: Updated danish translations. Added them to relevant project files. --- tools/assistant/translations/qt_help.pro | 3 +- tools/assistant/translations/translations.pro | 3 +- translations/assistant_da.ts | 606 ++++---- translations/qt_da.ts | 1978 +++++++++++++++++++++---- translations/qt_help_da.ts | 177 ++- translations/translations.pri | 2 +- 6 files changed, 2132 insertions(+), 637 deletions(-) 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/translations/assistant_da.ts b/translations/assistant_da.ts index d039248..8d134fc 100644 --- a/translations/assistant_da.ts +++ b/translations/assistant_da.ts @@ -1,58 +1,77 @@ - AboutDialog - + &Close &Luk + AboutLabel + + + Warning + Advarsel + + + + Unable to launch external application. + + Kunne ikke starte ekstern applikation. + + + + + OK + + + + BookmarkDialog - - - - - + + + + + Bookmarks Favoritter - + Add Bookmark Føj til Favoritter - + Bookmark: Favorit: - + Add in Folder: Føj til mappen: - + + - + New Folder Ny mappe - + Delete Folder Slet mappe - + Rename Folder Omdøb mappe @@ -60,75 +79,79 @@ BookmarkManager - + Bookmarks Favoritter - + Remove Fjern + You are going to delete a Folder, this will also<br>remove it's content. Are you sure to continue? - Ved at slette denne mappe fjernes hele mappens<br>indhold. Ønsker du alligevel at slette? + Ved at slette denne mappe fjernes hele mappens<br>indhold. Ønsker du alligevel at slette? - - + + New Folder Ny mappe - You are about to delete a folder which means that its content<br>will also be removed. Do you want to continue? - Ved at slette denne mappe fjernes hele mappens indhold.<br>Ønsker du alligevel at slette? + Ved at slette denne mappe fjernes hele mappens indhold.<br>Ønsker du alligevel at slette? BookmarkWidget - + + Filter: + Filter: + + + Remove Fjern - + Delete Folder Slet mappe - + Rename Folder Omdøb mappe - + Show Bookmark Vis favorit - + Show Bookmark in New Tab Vis favorit på ny fane - + Delete Bookmark Slet favorit - + Rename Bookmark Omdøb favorit - Search for: - Søg efter: + Søg efter: - + Add Tilføj @@ -136,48 +159,48 @@ CentralWidget - + Add new page Tilføj ny side - + Close current page Luk nuværende side - + Print Document Udskriv dokument - - + + unknown ukendt - + Add New Page Tilføj ny side - + Close This Page Luk denne side - + Close Other Pages Luk de andre sider - + Add Bookmark for this Page... Føj denne side til Favoritter... - + Search Søg @@ -185,12 +208,12 @@ ContentWindow - + Open Link Åbn link - + Open Link in New Tab Åbn link på ny fane @@ -198,69 +221,77 @@ FilterNameDialogClass - FilterNameDialog - FilterNavnDialog + FilterNavnDialog - + Filter Name: Filternavn: + + + Add Filter Name + Tilføj filternavn + FindWidget - + + <img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped + <img src=":/trolltech/assistant/images/wrap.png">&nbsp;Søgning gentaget fra start + + + Previous Forrige - + Next Næste - + Case Sensitive Der skelnes mellem store og små bogstaver - + Whole words Hele ord - <img src="%1">&nbsp;Search wrapped <img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped - <img src="%1">&nbsp;Søgning startet forfra + <img src="%1">&nbsp;Søgning startet forfra FontPanel - + Font Skrifttype - + &Writing system &Skrivesystem - + &Family &Familie - + &Style &Stil - + &Point size &Punktstørrelse @@ -268,42 +299,41 @@ HelpViewer - + Help Hjælp - + OK - + <title>Error 404...</title><div align="center"><br><br><h1>The page could not be found</h1><br><h3>'%1'</h3></div> <title>Fejl 404...</title><div align="center"><br><br><h1>Siden blev ikke fundet</h1><br><h3>'%1'</h3></div> - + Copy &Link Location Kopiér &linkets placering - + Open Link in New Tab Ctrl+LMB Åbn link på ny fane Ctrl+LMB - + Open Link in New Tab Åbn link på ny fane - <b>Page not found:<p>%1.</p></b> - <b>Kunne ikke finde siden:<p>%1.</p></b> + <b>Kunne ikke finde siden:<p>%1.</p></b> - + Unable to launch external application. Kunne ikke starte ekstern applikation. @@ -313,17 +343,17 @@ IndexWindow - + &Look for: &Søg efter: - + Open Link Åbn link - + Open Link in New Tab Åbn link på ny fane @@ -331,99 +361,99 @@ InstallDialog - - + + Install Documentation Installér dokumentation - + Downloading documentation info... Downloader dokumentationsinformation... - + Download canceled. Download blev annulleret. - - - + + + Done. Færdig. - + The file %1 already exists. Do you want to overwrite it? Filen %1 findes allerede. Ønsker du at overskrive? - + Unable to save the file %1: %2. Kunne ikke gemme filen %1: %2. - + Downloading %1... Downloader %1... - - - + + + Download failed: %1. Download mislykkedes: %1. - + Documentation info file is corrupt! Dokumentationsinformationsfilen er ødelagt! - + Download failed: Downloaded file is corrupted. Download mislykkedes: Den downloadede fil er ødelagt. - + Installing documentation %1... Installerer dokumentation %1... - + Error while installing documentation: %1 Der opstod fejl under installation af dokumentation: %1 - + Available Documentation: Tilgængeligt dokumentation: - + Install Installér - + Cancel Annuller - + Close Luk - + Installation Path: Installationssti: - + ... @@ -431,60 +461,62 @@ MainWindow - - + + Index Indeks - - + + Contents Indhold - - + + Bookmarks Favoritter - - + Search Søg - - - + + + Qt Assistant - - + + Unfiltered Ufiltreret + Page Set&up... - Side&opsætning... + Side&opsætning... + Print Preview... - Vis udskrift... + Vis udskrift... + &Print... - &Udskriv... + &Udskriv... CTRL+P Ctrl+U - + New &Tab &Ny Fane @@ -493,7 +525,7 @@ Ctrl+N - + &Close Tab &Luk fane @@ -502,340 +534,326 @@ Ctrl+L - + &Quit &Afslut + CTRL+Q - Ctrl+A + Ctrl+A + &Copy selected Text - &Kopiér markeret tekst + &Kopiér markeret tekst Ctrl+C Ctrl+K - + &Find in Text... &Find i tekst... - - Ctrl+F - - - - + Find &Next Find N&æste - - F3 - - - - + Find &Previous Find fo&rrige - - Shift+F3 - - - - + Preferences... Indstillinger... - + Zoom &in Zoom &ind - - Ctrl++ - - - - + Zoom &out Zoom u&d - - Ctrl+- - - - - + Normal &Size Normal &størrelse - + Ctrl+0 - + + ALT+C + + + + + ALT+I + + + + + ALT+S + + + + &Home &Hjem - + Ctrl+Home - + &Back &Tilbage - + &Forward Fr&em + Sync with Table of Contents - Synkronisér med Indholdsfortegnelse + Synkronisér med Indholdsfortegnelse - + Next Page Næste side - + Ctrl+Alt+Right Ctrl+Alt+Højre - + Previous Page Forrige side - + Ctrl+Alt+Left Ctrl+Alt+Venstre - + Add Bookmark... Føj til Favoritter... - + About... Om... - + Navigation Toolbar Navigationsværktøjslinie - + Toolbars Værktøjslinier - + Filter Toolbar Filtrer værktøjslinie - + Filtered by: Filtreret efter: - + Address Toolbar Adresseværktøjslinie - + Address: Adresse: - + Could not find the associated content item. Det tilhørende indholdselement kunne ikke findes. - - Open Source Edition - - - - 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. - 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. + 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. - 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. - Dette program er omfattet af Qt Commercial License Agreement. Se filen LICENCE, der var vedlagt denne software-distribution, for yderligere detaljer. + Dette program er omfattet af Qt Commercial License Agreement. Se filen LICENCE, der var vedlagt denne software-distribution, for yderligere detaljer. - + About %1 Om %1 - + Updating search index Opdaterer søgeindeks - + Looking for Qt Documentation... Søger efter Qt-dokumentation... - + &Window &Vindue - + Minimize Minimér - + Ctrl+M Ctrl+M - + Zoom - + &File &Filer - + &Edit &Redigér - + &View &Vis - + &Go &Gå til - + &Bookmarks F&avoritter - + &Help &Hjælp - - You need a commercial Qt license for development of proprietary (closed source) applications. Please see <a href="http://trolltech.com/company/about/businessmodel">http://trolltech.com/company/about/businessmodel</a> for an overview of Qt licensing. - - - + ALT+O - Alt+F + Alt+F + CTRL+D - Ctrl+Ø + Ctrl+Ø Ctrl+P Ctrl+U - Ctrl+T - Ctrl+N + Ctrl+N - Ctrl+W - Ctrl+L + Ctrl+L - Ctrl+Q - Ctrl+A + Ctrl+A - Alt+C - Alt+L - - - - Alt+I - + Alt+L - Alt+O - Alt+F - - - - Alt+S - + Alt+F - Ctrl+D - Ctrl+Ø + Ctrl+Ø PreferencesDialog - - - + + Add Documentation Tilføj dokumentation - + Qt Compressed Help Files (*.qch) Qt komprimeret hjælpefil (*.qch) - + The specified file is not a valid Qt Help File! Den anførte fil er ikke en gyldig Qt hjælpefil! - + The namespace %1 is already registered! Navnerummet %1 er allerede registreret! - + + Remove Documentation + Fjern dokumentation + + + + Some documents currently opened in Assistant reference the documentation you are attempting to remove. Removing the documentation will close those documents. + 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. + + + + Cancel + Annuller + + + + OK + + + + Use custom settings Benyt brugerdefineret opsætning @@ -843,158 +861,170 @@ PreferencesDialogClass - + Preferences Indstillinger - + Fonts Skrifttyper - + Font settings: Indstillinger for skrifttype: - + Browser - + Application Applikation - + Filters Filtre - + Filter: Filter: - + Attributes: Attributter: - + 1 - + Add Tilføj - - + Remove Fjern - + Documentation Dokumentation - + Registered Documentation: Registreret dokumentation: - + Add... Tilføj... - Network - Netværk + Netværk - Use Http Proxy - Benyt Http Proxy + Benyt Http Proxy - - Http Proxy: - + + Options + Indstillinger - - Port: - + + Homepage + Hjemmeside + + + + Current Page + Nuværende side + + + + Restore to default + Nulstil til default QObject - + The specified collection file does not exist! Den angivne hjælpesamling findes ikke! - + Missing collection file! Hjælpesamling mangler! - + Invalid URL! Ugyldig URL! - + Missing URL! URL mangler! - - - + + + Unknown widget: %1 Ukendt widget: %1 - - - + + + Missing widget! Widget mangler! - - + + The specified Qt help file does not exist! Den angivne Qt-hjælpefil findes ikke! - - + + Missing help file! Hjælpefilen mangler! - + + Missing filter argument! + Manglende filterargument! + + + Unknown option: %1 Ukendt parameter: %1 - - + + Qt Assistant - + Could not register documentation file %1 @@ -1007,12 +1037,12 @@ Reason: %2 - + Documentation successfully registered. Dokumentationen blev registreret. - + Could not unregister documentation file %1 @@ -1025,18 +1055,23 @@ Reason: %2 - + Documentation successfully unregistered. Dokumentationen blev afregistreret. - + + Cannot load sqlite database driver! + Kan ikke indlæse sqlite database-driver! + + + The specified collection file could not be read! Den angivne hjælpesamling kunne ikke læses! - - + + Bookmark Favorit @@ -1044,11 +1079,10 @@ Reason: QtDocInstaller - The file %1 could not be registered successfully! Reason: %2 - Filen %1 kunne ikke registreres! + Filen %1 kunne ikke registreres! Årsag: %2 @@ -1056,12 +1090,12 @@ Reason: %2 RemoteControl - + Debugging Remote Control - + Received Command: %1 %2 Modtaget kommando: %1 %2 @@ -1069,56 +1103,54 @@ Reason: %2 SearchWidget - + &Copy &Kopiér - + Copy &Link Location Kopiér &linkets placering - - + Open Link in New Tab Åbn link på ny fane - + Select All Markér alt - Open Link - Åbn link + Åbn link TopicChooser - + Choose a topic for <b>%1</b>: Vælg et emne for <b>%1</b>: - + Choose Topic Vælg emne - + &Topics &Emner - + &Display &Vis - + &Close &Luk diff --git a/translations/qt_da.ts b/translations/qt_da.ts index 9350687..105b572 100644 --- a/translations/qt_da.ts +++ b/translations/qt_da.ts @@ -4,15 +4,17 @@ AudioOutput - + <html>The audio playback device <b>%1</b> does not work.<br/>Falling back to <b>%2</b>.</html> <html>Audio-playback-enheden<b>%1</b> virker ikke.<br/>Falder tilbage til <b>%2</b>.</html> + <html>Switching to the audio playback device <b>%1</b><br/>which just became available and has higher preference.</html> - <html>Skifter til audio-playback-enheden, <b>%1</b><br/>der lige er blevet tilgængeligt og har en højere præference.</html> + <html>Skifter til audio-playback-enheden, <b>%1</b><br/>der lige er blevet tilgængelig og har en højere præference.</html> + Revert back to device '%1' Gå tilbage til enheden '%1' @@ -20,7 +22,7 @@ CloseButton - + Close Tab Luk fane @@ -28,27 +30,32 @@ Phonon:: - + Notifications Meddelelser + Music Musik + Video + Communication Kommunikation + Games Spil + Accessibility Tilgængelighed @@ -56,13 +63,14 @@ Phonon::Gstreamer::Backend - + Warning: You do not seem to have the package gstreamer0.10-plugins-good installed. Some video features have been disabled. Advarsel: Det ser ikke ud til, at gstreamer0.10-plugins-good pakken er installeret. Nogle videofunktioner er deaktiveret. + Warning: You do not seem to have the base GStreamer plugins installed. All audio and video support has been disabled Advarsel: Det ser ikke ud til, at base GStreamer plugins er installeret. @@ -72,7 +80,7 @@ Phonon::Gstreamer::MediaObject - + Cannot start playback. Check your Gstreamer installation and make sure you @@ -83,26 +91,39 @@ Tjek Gstreamer-installationen og kontrollér, at libgstreamer-plugins-base er installeret. + A required codec is missing. You need to install the following codec(s) to play this content: %0 Der mangler et codec. Følgende codecs skal installeres for at afspille dette indhold: %0 + + + + + + + + Could not open media source. Kunne ikke åbne mediekilden. + Invalid source type. Ugyldig kilde. + Could not locate media source. Kunne ikke lokalisere mediekilden. + Could not open audio device. The device is already in use. Kunne ikke åbne lydenheden. Enheden er allerede i brug. + Could not decode media source. Kunne ikke afkode mediekilden. @@ -110,10 +131,15 @@ libgstreamer-plugins-base er installeret. Phonon::VolumeSlider + + Volume: %1% + + + Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1% Anvend denne skyder til at indstille lydstyrken. Længst til venstre er 0% og længst til højre er %1% @@ -121,11 +147,12 @@ libgstreamer-plugins-base er installeret. Q3Accel - + %1, %2 not defined %1, %2 ikke definerede + Ambiguous %1 not handled Tvetydig %1 ikke behandlet @@ -133,23 +160,27 @@ libgstreamer-plugins-base er installeret. Q3DataTable - + True Sandt + False Falsk + Insert Indsæt + Update Opdater + Delete Slet @@ -157,242 +188,313 @@ libgstreamer-plugins-base er installeret. Q3FileDialog - + Copy or Move a File Kopiér eller flyt en fil + Read: %1 Læs: %1 + + Write: %1 Skriv: %1 + + Cancel Annuller - + + + + All Files (*) Alle filer (*) + Name Navn + Size Størrelse + Type + Date Dato + Attributes Attributter + + &OK &OK + Look &in: Kig &i: + + + File &name: Fil&navn: + File &type: Fil&type: + Back Tilbage + One directory up En mappe op + Create New Folder Opret ny folder + List View Listevisning + Detail View Detaljevisning + Preview File Info Vis filinformation + Preview File Contents Vis filindhold + Read-write Læs-skriv + Read-only Skrivebeskyttet + Write-only Write-only + Inaccessible Utilgængelig + Symlink to File Symlink til Fil + Symlink to Directory Symlink til katalog + Symlink to Special Symlink til Speciel + File Fil + Dir Katalog + Special Speciel - + + + Open Åbn - + + Save As Gem som + + + &Open &Åbn + + &Save &Gem + &Rename &Omdøb + &Delete &Slet + R&eload Gen&indlæs + Sort by &Name Sortér efter n&avn + Sort by &Size Sortér efter s&tørrelse + Sort by &Date Sortér efter &dato + &Unsorted &Usorteret + Sort Sortér + Show &hidden files Vis s&kjulte filer + the file filen + the directory kataloget + the symlink symlinket + Delete %1 Slet %1 + <qt>Are you sure you wish to delete %1 "%2"?</qt> <qt>Er du sikker på, at du vil slette %1 "%2"?</qt> + &Yes &Ja + &No &Nej + New Folder 1 Ny folder 1 + New Folder Ny folder + New Folder %1 Ny folder %1 + Find Directory Find katalog + + Directories Kataloger + Directory: Katalog: + + Error Fejl + %1 File not found. Check path and filename. @@ -401,14 +503,17 @@ Filen blev ikke fundet. Kontrollér sti og filnavn. + All Files (*.*) Alle filer (*.*) + Open Åbn + Select a Directory Vælg et katalog @@ -416,24 +521,29 @@ Kontrollér sti og filnavn. Q3LocalFs + + Could not read directory %1 Kunne ikke læse katalog %1 + Could not create directory %1 Kunne ikke oprette katalog %1 + Could not remove file or directory %1 Kunne ikke fjerne fil eller katalog %1 + Could not rename %1 to @@ -444,12 +554,14 @@ to %2 + Could not open %1 Kunne ikke åbne %1 + Could not write %1 Kunne ikke skrive @@ -459,11 +571,12 @@ to Q3MainWindow - + Line up Linie op + Customize... Tilpas... @@ -471,7 +584,7 @@ to Q3NetworkProtocol - + Operation stopped by the user Brugeren stoppede handlingen @@ -479,6 +592,8 @@ to Q3ProgressDialog + + Cancel Annuller @@ -486,22 +601,28 @@ to Q3TabDialog + + OK + Apply Udfør + Help Hjælp + Defaults Standarder + Cancel Annuller @@ -509,31 +630,38 @@ to Q3TextEdit - + &Undo &Fortryd + &Redo &Gendan + Cu&t &Klip + &Copy K&opiér + &Paste &Sæt ind + Clear Ryd + + Select All Markér alt @@ -541,55 +669,67 @@ to Q3TitleBar - + System + Restore up Gendan op + Minimize Minimer + Restore down Gendan ned + Maximize Maksimér + Close Luk + Contains commands to manipulate the window Indeholder kommandoer til indstilling af vinduet + Puts a minimized back to normal Sætter et minimeret vindue til normal størrelse + Moves the window out of the way Flytter vinduet væk + Puts a maximized window back to normal Sætter et maksimeret vindue til normal størrelse + Makes the window full screen Gør vinduet til fuld skærm + Closes the window Lukker vinduet + Displays the name of the window and contains controls to manipulate it Viser vinduets navn og indeholder kontroller til indstilling af vinduet @@ -597,7 +737,7 @@ to Q3ToolBar - + More... Mere... @@ -605,38 +745,51 @@ to Q3UrlOperator + + + The protocol `%1' is not supported Protokollen '%1' understøttes ikke + The protocol `%1' does not support listing directories Protokollen '%1' understøtter ikke opremsning af kataloger + The protocol `%1' does not support creating new directories Protokollen '%1' understøtter ikke oprettelse af nye kataloger + The protocol `%1' does not support removing files or directories Protokollen '%1' understøtter ikke, at filer eller kataloger fjernes + The protocol `%1' does not support renaming files or directories Protokollen '%1' understøtter ikke, at filer eller kataloger omdøbes + The protocol `%1' does not support getting files Protokollen '%1' understøtter ikke hentning af filer + The protocol `%1' does not support putting files Protokollen '%1' understøtter ikke upload af filer + + The protocol `%1' does not support copying or moving files or directories Protokollen '%1' understøtter ikke kopiering eller flytning af filer eller kataloger + + (unknown) (ukendt) @@ -644,23 +797,27 @@ to Q3Wizard - + &Cancel &Annuller + < &Back < &Tilbage + &Next > &Næste > + &Finish &Udfør + &Help &Hjælp @@ -668,31 +825,44 @@ to QAbstractSocket + + + + Host not found Host blev ikke fundet - + + + Connection refused Forbindelse afvist + Connection timed out Forbindelsen timed out + + + Operation on socket is not supported Socket-operation ikke understøttet + Socket operation timed out Socket-operation timed out + Socket is not connected Socket ikke forbundet + Network unreachable Netværket er ikke tilgængeligt @@ -700,15 +870,17 @@ to QAbstractSpinBox - + &Step up &Trin op + Step &down Trin &ned + &Select All &Vælg alle @@ -716,27 +888,28 @@ to QApplication - + Activate Aktivér - + Executable '%1' requires Qt %2, found Qt %3. Eksekverbar '%1' kræver Qt %2, ikke fundet Qt %3. + Incompatible Qt Library Error Inkompatibel Qt Library fejl - + QT_LAYOUT_DIRECTION Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout. - + Activates the program's main window Aktiverer programmets hovedvindue @@ -744,18 +917,22 @@ to QAxSelect + Select ActiveX Control Vælg ActiveX-kontrol + OK + &Cancel &Annuller + COM &Object: COM &Objekt: @@ -763,15 +940,17 @@ to QCheckBox - + Uncheck Fjern markering + Check Kryds af + Toggle Slå til/fra @@ -779,47 +958,57 @@ to QColorDialog - + Hu&e: Ton&e: + &Sat: &Mæt: + &Val: &Vær: + &Red: &Rød: + &Green: &Grøn: + Bl&ue: Bl&å: + A&lpha channel: Al&fa-kanal: + Select Color Vælg farve + &Basic colors &Basisfarver + &Custom colors &Egne farver + &Add to Custom Colors &Føj til egne farver @@ -827,20 +1016,23 @@ to QComboBox + + Open Åbn - + False Falsk + True Sandt - + Close Luk @@ -848,17 +1040,19 @@ to QCoreApplication - + %1: key is empty QSystemSemaphore %1: nøgle er tom + %1: unable to make key QSystemSemaphore %1: kunne ikke lave nøgle + %1: ftok failed QSystemSemaphore %1: ftok mislykkedes @@ -867,19 +1061,22 @@ to QDB2Driver - + Unable to connect Kunne ikke skabe forbindelse + Unable to commit transaction Kunne ikke gennemføre transaktion + Unable to rollback transaction Kunne ikke tilbagetrække transaktion + Unable to set autocommit Kunne ikke aktivere autocommit @@ -887,26 +1084,33 @@ to QDB2Result + + Unable to execute statement Kunne ikke udføre statement + Unable to prepare statement Kunne ikke forberede udsagn + Unable to bind variable Kunne ikke binde variabel + Unable to fetch record %1 Kunne ikke hente post %1 + Unable to fetch next Kunne ikke hente næste + Unable to fetch first Kunne ikke hente første @@ -914,19 +1118,22 @@ to QDateTimeEdit - + AM + am + PM + pm @@ -934,15 +1141,17 @@ to QDial - + QDial + SpeedoMeter Speedometer + SliderHandle @@ -950,11 +1159,12 @@ to QDialog - + What's This? Hvad er dette? + Done Udført @@ -962,100 +1172,124 @@ to QDialogButtonBox - + + + OK - + &OK + &Save &Gem + Save Gem + Open Åbn + &Cancel &Annuller + Cancel Annuller + &Close &Luk + Close Luk + Apply Udfør + Reset Nulstil + Help Hjælp + Don't Save Gem ikke + Discard Kassér + &Yes &Ja + Yes to &All Ja til &alle + &No &Nej + N&o to All Ne&j til alle + Save All Gem alle + Abort Afbryd + Retry Prøv igen + Ignore Ignorer + Restore Defaults Gendan standardværdier + Close without Saving Luk uden at gemme @@ -1063,25 +1297,29 @@ to QDirModel - + Name Navn + Size Størrelse + Kind Match OS X Finder Type + Type All other platforms + Date Modified Ændringsdato @@ -1089,15 +1327,17 @@ to QDockWidget - + Close Luk + Dock Låst + Float Flydende @@ -1105,10 +1345,12 @@ to QDoubleSpinBox + More Mere + Less Mindre @@ -1116,23 +1358,27 @@ to QErrorMessage - + Debug Message: Debug-besked: + Warning: Advarsel: + Fatal Error: Fatal fejl: + &Show this message again &Vis denne besked igen + &OK @@ -1140,22 +1386,33 @@ to QFile + + Destination file exists Destinationsfil findes + + Cannot remove source file + Kan ikke fjerne kildefil + + + Cannot open %1 for input Kan ikke åbne %1 til input + Cannot open for output Kan ikke åbne til output + Failure to write block Kunne ikke skrive blok + Cannot create %1 for output Kunne ikke oprette %1 til output @@ -1163,32 +1420,44 @@ to QFileDialog + + All Files (*) Alle filer (*) + Directories Kataloger + + + + &Open &Åbn + + &Save &Gem + Open Åbn + %1 already exists. Do you want to replace it? %1 findes allerede. Ønsker du at erstatte den? + %1 File not found. Please verify the correct file name was given. @@ -1197,47 +1466,64 @@ Filen kunne ikke findes. Kontrollér, at det rigtige filnavn er indtastet. - + My Computer Min computer + &Rename &Omdøb + &Delete &Slet + Show &hidden files Vis s&kjulte filer + + Back Tilbage + + Parent Directory Ovenliggende katalog + + List View Listevisning + + Detail View Detaljevisning + + Files of type: Filer af typen: + + Directory: Katalog: + + %1 Directory not found. Please verify the correct directory name was given. @@ -1246,84 +1532,105 @@ Katalog kunne ikke findes. Kontrollér, at det rigtige katalognavn er indtastet. + '%1' is write protected. Do you want to delete it anyway? '%1' er skrivebeskyttet. Ønsker du alligevel at slette? + Are sure you want to delete '%1'? Er du sikker på, at '%1' skal slettes? + Could not delete directory. Kunne ikke slette kataloget. + Recent Places Aktuelle steder - + All Files (*.*) Alle filer (*.*) + Save As Gem som - + Drive Drev + + File Fil + Unknown Ukendt + Find Directory Find katalog + Show Vis + + Forward Frem - + New Folder Ny folder + &New Folder &Ny folder + + &Choose &Vælg - + Remove Fjern + + File &name: &Filnavn: + + Look in: Søg i: + + Create New Folder Opret ny folder @@ -1331,62 +1638,74 @@ Do you want to delete it anyway? QFileSystemModel - + Invalid filename Ugyldigt filnavn + <b>The name "%1" can not be used.</b><p>Try using another name, with fewer characters or no punctuations marks. <b>Navnet, %1, kan ikke benyttes.</b><p>Brug et andet navn med færre tegn og ingen kommatering. + Name Navn + Size Størrelse + Kind Match OS X Finder Type + Type All other platforms + Date Modified Ændringsdato - + My Computer Min computer + Computer + %1 TB %1 TB + %1 GB %1 GB + %1 MB %1 MB + %1 KB %1 KB' + %1 bytes %1 bytes @@ -1394,166 +1713,216 @@ Do you want to delete it anyway? QFontDatabase + + Normal + + + Bold Fed + + Demi Bold + + + Black Sort + Demi + + Light Lys + + Italic Kursiv + + Oblique Skråt + Any Alle + Latin + Greek Græsk + Cyrillic Kyrillisk + Armenian Armensk + Hebrew Hebræisk + Arabic Arabisk + Syriac Syrisk + Thaana + Devanagari + Bengali Bengalsk + Gurmukhi + Gujarati + Oriya + Tamil + Telugu + Kannada + Malayalam + Sinhala + Thai Thailandsk + Lao + Tibetan Tibetansk + Myanmar + Georgian georgisk + Khmer + Simplified Chinese Forenklet kinesisk + Traditional Chinese Traditionelt kinesisk + Japanese Japansk + Korean Koreansk + Vietnamese Vietnamesisk + Symbol + Ogham + Runic @@ -1561,39 +1930,48 @@ Do you want to delete it anyway? QFontDialog - + &Font S&krifttype + Font st&yle S&til + &Size &Størrelse + Effects Effekter + Stri&keout &Overstreget + &Underline &Understreg + Sample Eksempel + Wr&iting System Skr&ivesystem + + Select Font Vælg skrifttype @@ -1601,116 +1979,145 @@ Do you want to delete it anyway? QFtp - + + Not connected Ingen forbindelse - + + Host %1 not found Vært %1 ikke fundet - + + Connection refused to host %1 Forbindelse til vært %1 afvist + Connection timed out to host %1 Forbindelsen timed out til host %1 + + + Connected to host %1 Tilsluttet vært %1 + + Connection refused for data connection Dataforbindelse afvist + + + + Unknown error Ukendt fejl - + + Connecting to host failed: %1 Forbindelse til vært mislykkedes: %1 - + + Login failed: %1 Login mislykkedes: %1 - + + Listing directory failed: %1 Opremsning af katalogindhold mislykkedes: %1 - + + Changing directory failed: %1 Ændring af katalog mislykkedes: %1 - + + Downloading file failed: %1 Downloading af fil mislykkedes: %1 - + + Uploading file failed: %1 Uploading af fil mislykkedes: %1 - + + Removing file failed: %1 Det mislykkedes at fjerne fil: %1 - + + Creating directory failed: %1 Oprettelse af katalog mislykkedes: %1 - + + Removing directory failed: %1 Det mislykkedes at fjerne katalog: %1 + + + Connection closed Forbindelse lukket + Host %1 found Vært %1 fundet + Connection to %1 closed Forbindelse til %1 lukket + Host found Vært fundet + Connected to host Tilsluttet vært @@ -1718,7 +2125,7 @@ Do you want to delete it anyway? QHostInfo - + Unknown error Ukendt fejl @@ -1726,14 +2133,29 @@ Do you want to delete it anyway? QHostInfoAgent + + + + + + + + Host not found Vært ikke fundet + + + + Unknown address type Ukendt adressetype + + + Unknown error Ukendt fejl @@ -1741,116 +2163,155 @@ Do you want to delete it anyway? QHttp + + + + Unknown error Ukendt fejl + + Request aborted Forespørgsel blev annulleret - + + No server set to connect to Ingen server at forbinde til - + + Wrong content length Forkert indholdslængde - + + Server closed connection unexpectedly Serveren afsluttede uventet forbindelsen + + Unknown authentication method + Ukendt autentifikationsmetode + + + Error writing response to device Skrivefejl mens der blev skrevet til enheden - + + Connection refused Forbindelse afvist - + + + Host %1 not found Vært %1 ikke fundet - + + + + HTTP request failed HTTP anmodning mislykkedes - + + Invalid HTTP response header Ugyldig HTTP-svar-header + + + + Invalid HTTP chunked body Ugyldig HTTP chunked body - + Host %1 found Vært %1 fundet + Connected to host %1 Tilsluttet vært %1 + Connection to %1 closed Forbindelse til %1 lukket + Host found Vært fundet + Connected to host Tilsluttet vært - + + Connection closed Forbindelse lukket + Proxy authentication required Kræver proxy-autentificering + Authentication required Autentificering påkrævet + Connection refused (or timed out) Forbindelse blev afvist (eller tid udløb) - + Proxy requires authentication Proxy kræver autentificering + Host requires authentication Vært kræver autentificering + Data corrupted Data er ødelagt + Unknown protocol specified En ukendt protokol blev angivet + SSL handshake failed SSL handshake mislykkedes + HTTPS connection requested but SSL support not compiled in Der blevet anmodet om en HTTPS-forbindelse, men SSL understøttelse er ikke kompileret ind @@ -1858,38 +2319,47 @@ Do you want to delete it anyway? QHttpSocketEngine + Did not receive HTTP response from proxy Modtog ikke HTTP-svar fra proxy + Error parsing authentication request from proxy Fejl under fortolking af autentificeringsanmodning fra proxy + Authentication required Autentificering påkrævet + Proxy denied connection Proxy nægtede forbindelse + Error communicating with HTTP proxy Fejl under kommunikation med HTTP-proxy + Proxy server not found Proxy-server kunne ikke findes + Proxy connection refused Proxy-forbindelse nægtede + Proxy server connection timed out Proxy-serverforbindelse timed out + Proxy connection closed prematurely Proxy-forbindelse afsluttede i utide @@ -1897,19 +2367,22 @@ Do you want to delete it anyway? QIBaseDriver - + Error opening database Der opstod fejl ved åbning af database + Could not start transaction Kunne ikke påbegynde transaktionen + Unable to commit transaction Kunne ikke gennemføre transaktionen + Unable to rollback transaction Kunne ikke tilbagetrække transaktionen @@ -1917,70 +2390,89 @@ Do you want to delete it anyway? QIBaseResult + Unable to create BLOB Kunne ikke oprette BLOB + Unable to write BLOB Kunne ikke skrive BLOB + Unable to open BLOB Kunne ikke åbne BLOB + Unable to read BLOB Kunne ikke læse BLOB + + Could not find array Kunne ikke finde array + Could not get array data Kunne ikke hente arraydata + Could not get query info Kunne ikke hente forespørgselsinfo + Could not start transaction Kunne ikke påbegynde transaktionen + Unable to commit transaction Kunne ikke gennemføre transaktionen + Could not allocate statement Kunne ikke allokere statement + Could not prepare statement Kunne ikke forberede udsagn + + Could not describe input statement Kunne ikke beskrive input-statement + Could not describe statement Kunne ikke beskrive statement + Unable to close statement Kunne ikke lukke udsagn + Unable to execute query Kunne ikke udføre forespørgsel + Could not fetch next item Kunne ikke hente næste element + Could not get statement info Kunne ikke hente udsagnsinformation @@ -1988,24 +2480,27 @@ Do you want to delete it anyway? QIODevice - + Permission denied Tilladelse nægtet + Too many open files Der er for mange åbne filer + No such file or directory Fil eller katalog findes ikke + No space left on device Ingen plads tilbage på enheden - + Unknown error Ukendt fejl @@ -2013,19 +2508,22 @@ Do you want to delete it anyway? QInputContext - + XIM + XIM input method XIM input-metode + Windows input method Windows input-metode + Mac OS X input method Mac OS X input-metode @@ -2033,7 +2531,7 @@ Do you want to delete it anyway? QInputDialog - + Enter a value: Indtast en værdi: @@ -2041,55 +2539,66 @@ Do you want to delete it anyway? QLibrary - + Could not mmap '%1': %2 + Plugin verification data mismatch in '%1' Plugin-verifikationsdata er sat forkert sammen i '%1' + Could not unmap '%1': %2 Der var ikke muligt at lave unmap på '%1': %2 + The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5] Plugin '%1' bruger inkompatibelt Qt-bibliotek. (%2.%3.%4) [%5] + The plugin '%1' uses incompatible Qt library. Expected build key "%2", got "%3" Plugin '%1' bruger inkompatibelt Qt-bibliotek. Forventet build key "%2", hentede "%3"' + Unknown error Ukendt fejl' - + + The shared library was not found. DSO blev ikke fundet. + The file '%1' is not a valid Qt plugin. Filen '%1' er ikke et gyldigt Qt-plugin. + The plugin '%1' uses incompatible Qt library. (Cannot mix debug and release libraries.) Plugin '%1' bruger inkompatibelt Qt-bibliotek. (Ikke muligt at mikse debug og release-biblioteker) - + + Cannot load library %1: %2 Kan ikke indlæse bibliotek %1: %2 - + + Cannot unload library %1: %2 Kan ikke afregistrere bibliotek %1: %2 - + + Cannot resolve symbol "%1" in %2: %3 Kan ikke løse symbol "%1" i %2: %3 @@ -2097,31 +2606,37 @@ Do you want to delete it anyway? QLineEdit - + &Undo &Fortryd + &Redo &Gendan + Cu&t K&lip + &Copy &Kopiér + &Paste &Sæt ind + Delete Slet + Select All Markér alt @@ -2129,20 +2644,24 @@ Do you want to delete it anyway? QLocalServer - + + %1: Name error %1: Navnefejl + %1: Permission denied %1: Tilladelse nægtet + %1: Address in use %1: Adresse i brug - + + %1: Unknown error %2 %1: Ukendt fejl %2 @@ -2150,54 +2669,70 @@ Do you want to delete it anyway? QLocalSocket - + + %1: Connection refused %1: Forbindelse afvist - + + %1: Remote closed %1: Den anden ende lukkede + + + + %1: Invalid name %1: Ugyldigt navn - + + %1: Socket access error %1: Fejl i socket-adgang - + + %1: Socket resource error %1: Fejl i socket-ressource - + + %1: Socket operation timed out %1: Socket-handling timed out - + + %1: Datagram too large %1: Datagram er for stort + + + %1: Connection error %1: Forbindelsesfejl - + + %1: The socket operation is not supported %1: Socket-handlingen understøttes ikke + %1: Unknown error %1: Ukendt fejl - + + %1: Unknown error %2 %1: Ukendt fejl %2 @@ -2205,23 +2740,27 @@ Do you want to delete it anyway? QMYSQLDriver - + Unable to open database ' Kunne ikke åbne databasen ' + Unable to connect Kunne ikke forbinde + Unable to begin transaction Kunne ikke påbegynde transaktionen + Unable to commit transaction Kunne ikke gennemføre transaktionen + Unable to rollback transaction Kunne ikke tilbagetrække transaktionen @@ -2229,46 +2768,59 @@ Do you want to delete it anyway? QMYSQLResult + Unable to fetch data Kunne ikke hente data + Unable to execute query Kunne ikke udføre forespørgsel + Unable to store result Kunne ikke gemme resultatet + + Unable to prepare statement Kunne ikke forberede udsagn + Unable to reset statement Kunne ikke nulstille udsagn + Unable to bind value Kunne ikke tildele værdi + Unable to execute statement Kunne ikke udføre udsagn + + Unable to bind outvalues Kunne ikke binde udværdier + Unable to store statement results Kunne ikke gemme udsagnsresultater + Unable to execute next query Kunne ikke udføre næste forespørgsel + Unable to store next result Kunne ikke gemme næste resultat @@ -2276,7 +2828,7 @@ Do you want to delete it anyway? QMdiArea - + (Untitled) (Uden titel) @@ -2284,75 +2836,92 @@ Do you want to delete it anyway? QMdiSubWindow - + %1 - [%2] + Close Luk + Minimize Minimér + Restore Down Gendan Ned + &Restore &Gendan + &Move &Flyt + &Size &Størrelse + Mi&nimize Mi&nimér + Ma&ximize Ma&ksimér + Stay on &Top Bliv &oppe + &Close &Luk + - [%1] + Maximize Maksimér + Unshade Fjern skygge + Shade Skygge + Restore Gendan + Help Hjælp + Menu @@ -2360,14 +2929,21 @@ Do you want to delete it anyway? QMenu + + Close Luk + + Open Åbn + + + Execute Udfør @@ -2375,42 +2951,55 @@ Do you want to delete it anyway? QMessageBox + Help Hjælp + + + + OK + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + <h3>Om Qt</h3><p>Dette program anvender Qt version %1.</p><p>Qt er et C++ toolkit til cross-platform applikationsudvikling.</p><p>Qt tilbyder single-source portabilitet til MS&nbsp;Windows, Mac&nbsp;OS&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.</p>Qt er tilgængeligt under tre forskellige licenser skabt med henblik på at imødekomme forskellige brugeres behov.</p><p>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</p><p>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</p><p>See venligst <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for et overblik over Qt licensforhold.</p><p>Qt er et Nokia produkt. Se <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> for yderligere information.</p> + + + About Qt Om Qt <p>This program uses Qt version %1.</p> - <p>Dette program bruger Qt-version %1.</p> + <p>Dette program bruger Qt-version %1.</p> + Show Details... Vis detaljer... + Hide Details... Skjul detaljer... <h3>About Qt</h3>%1<p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is a Nokia product. See <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> for more information.</p> - <h3>Om Qt</h3>%1<p>Qt er et C++ toolkit til cross-platform applikationsudvikling.</p><p>Qt tilbyder single-source portabilitet til MS&nbsp;Windows, Mac&nbsp;OS&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.</p><p>Qt er et Nokia produkt. Se <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> for yderligere information.</p> + <h3>Om Qt</h3>%1<p>Qt er et C++ toolkit til cross-platform applikationsudvikling.</p><p>Qt tilbyder single-source portabilitet til MS&nbsp;Windows, Mac&nbsp;OS&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.</p><p>Qt er et Nokia produkt. Se <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> for yderligere information.</p> <p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for an overview of Qt licensing.</p> - <p>Dette program bruger Qt Open Source Edition version %1.</p><p>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.</p><p>Se venligst <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for et overblik over Qt licensforhold.</p> + <p>Dette program bruger Qt Open Source Edition version %1.</p><p>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.</p><p>Se venligst <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for et overblik over Qt licensforhold.</p> QMultiInputContext - + Select IM Markér IM @@ -2418,11 +3007,12 @@ Do you want to delete it anyway? QMultiInputContextPlugin - + Multiple input method switcher Multiple input metode-switcher + Multiple input method switcher that uses the context menu of the text widgets Multiple input metode-switcher, der benytter tekstkontrollernes kontekstmenuer @@ -2430,107 +3020,132 @@ Do you want to delete it anyway? QNativeSocketEngine - + The remote host closed the connection Fjern-hosten lukkede forbindelsen + Network operation timed out Netværksoperationen timed out + Out of resources Ikke flere ressourcer + Unsupported socket operation Socket-operation ikke understøttet + Protocol type not supported Protokoltypen understøttes ikke + Invalid socket descriptor Ugyldig socket-deskriptor + Network unreachable Netværket er ikke tilgængeligt + Permission denied Tilladelse nægtet + Connection timed out Forbindelsen timed out + Connection refused Forbindelse afvist + The bound address is already in use Den bundne adresse er allerede i brug + The address is not available Adressen er ikke tilgængelig + The address is protected Adressen er beskyttet + Unable to send a message Kunne ikke sende en besked + Unable to receive a message Kunne ikke modtage en besked + Unable to write Kunne ikke skrive + Network error Netværksfejl + Another socket is already listening on the same port En anden socket lytter allerede på samme port + Unable to initialize non-blocking socket Kunne ikke initialisere non-blocking socket + Unable to initialize broadcast socket Kunne ikke initialisere broadcast-socket + Attempt to use IPv6 socket on a platform with no IPv6 support Forsøg på at bruge IPv6-socket på en platform uden IPv6-support + Host unreachable Vært er ikke tilgængelig + Datagram was too large to send Datagrammet var for stort til at blive sendt + Operation on non-socket Handling på non-socket + Unknown error Ukendt fejl + The proxy type is invalid for this operation Proxytypen er ugyldig til denne handling @@ -2538,7 +3153,7 @@ Do you want to delete it anyway? QNetworkAccessCacheBackend - + Error opening %1 Der opstod fejl i at åbne %1 @@ -2546,23 +3161,27 @@ Do you want to delete it anyway? QNetworkAccessFileBackend - + Request for opening non-local file %1 Anmodning om at åbne ikke-lokal fil %1 + Error opening %1: %2 Der opstod fejl i at åbne %1: %2 + Write error writing to %1: %2 Skrivefejl mens der blev skrevet til %1: %2 + Cannot open %1: Path is a directory Kan ikke åbne %1: Stien er et katalog + Read error reading from %1: %2 Læsefejl mens der blev læst fra %1: %2 @@ -2570,23 +3189,27 @@ Do you want to delete it anyway? QNetworkAccessFtpBackend - + No suitable proxy found Ingen passende proxy blev fundet + Cannot open %1: is a directory Kan ikke åbne %1: Er et katalog + Logging in to %1 failed: authentication required Der opstod fejl i at logge på %1: Autentificering kræves + Error while downloading %1: %2 Der opstod fejl i at downloade %1: %2 + Error while uploading %1: %2 Der opstod fejl i at uploade %1: %2 @@ -2594,7 +3217,7 @@ Do you want to delete it anyway? QNetworkAccessHttpBackend - + No suitable proxy found Ingen passende proxy blev fundet @@ -2602,11 +3225,12 @@ Do you want to delete it anyway? QNetworkReply + Error downloading %1 - server replied: %2 Der opstod fejl i at downloade %1 - serveren svarede: %2 - + Protocol "%1" is unknown Protokollen "%1" er ukendt @@ -2614,6 +3238,8 @@ Do you want to delete it anyway? QNetworkReplyImpl + + Operation canceled Handling blev annulleret @@ -2621,24 +3247,28 @@ Do you want to delete it anyway? QOCIDriver - + Unable to logon Kunne ikke logge på + Unable to initialize QOCIDriver Kunne ikke initialisere + Unable to begin transaction Kunne ikke påbegynde transaktionen + Unable to commit transaction Kunne ikke gennemføre transaktionen + Unable to rollback transaction Kunne ikke tilbagetrække transaktionen @@ -2646,34 +3276,43 @@ Do you want to delete it anyway? QOCIResult + + + Unable to bind column for batch execute Kunne ikke tildele kolonne til batch-udførsel + Unable to execute batch statement Kunne ikke udføre batch-udsagn + Unable to goto next Kunne ikke gå til den næste + Unable to alloc statement Kunne ikke allokere udsagn + Unable to prepare statement Kunne ikke forberede udsagn + Unable to bind value Kunne ikke tildele værdi Unable to execute select statement - Kunne ikke udføre det valgte udsagn + Kunne ikke udføre det valgte udsagn + Unable to execute statement Kunne ikke udføre udsagn @@ -2681,27 +3320,32 @@ Do you want to delete it anyway? QODBCDriver - + Unable to connect Kunne ikke forbinde + Unable to connect - Driver doesn't support all needed functionality Kunne ikke forbinde. Driveren understøtter ikke alle de nødvendige funktionaliteter + Unable to disable autocommit Kunne ikke slå auto-udfør fra + Unable to commit transaction Kunne ikke gennemføre transaktionen + Unable to rollback transaction Kunne ikke tilbagetrække transaktionen + Unable to enable autocommit Kunne ikke slå auto-udfør til @@ -2709,38 +3353,51 @@ Do you want to delete it anyway? QODBCResult + + QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration QODBCResult::reset: Kunne ikke indstille 'SQL_CURSOR_STATIC' til udsagnsattribut. Kontrollér ODBC-driver-konfigurationen + + Unable to execute statement Kunne ikke udføre udsagn + Unable to fetch next Kunne ikke hente den næste + Unable to prepare statement Kunne ikke forberede udsagn + Unable to bind variable Kunne ikke tildele variabel + + + Unable to fetch last Kunne ikke hente den sidste + Unable to fetch Kunne ikke hente + Unable to fetch first Kunne ikke hente den første + Unable to fetch previous Kunne ikke hente den forrige @@ -2748,41 +3405,48 @@ Do you want to delete it anyway? QObject - + Home Hjem - + Operation not supported on %1 Handling blev ikke understøttet på %1 + Invalid URI: %1 Ugyldig URI: %1 - + Write error writing to %1: %2 Skrivefejl mens der blev skrevet til %1: %2 + Read error reading from %1: %2 Læsefejl mens der blev læst fra %1: %2 + Socket error on %1: %2 Socket-fejl på %1: %2 + Remote host closed the connection prematurely on %1 Fjern-host lukkede forbindelsen for tidligt på %1 + Protocol error: packet of size 0 received Protokolfejl: Pakke på størrelsen 0 modtaget + + No host name given Hostnavn mangler @@ -2790,11 +3454,12 @@ Do you want to delete it anyway? QPPDOptionsModel - + Name Navn + Value Værdi @@ -2802,27 +3467,32 @@ Do you want to delete it anyway? QPSQLDriver - + Unable to connect Kunne ikke skabe forbindelse + Could not begin transaction Kunne ikke påbegynde transaktion + Could not commit transaction Kunne ikke gennemføre transaktion + Could not rollback transaction Kunne ikke tilbagetrække transaktion + Unable to subscribe Kunne ikke tilmelde + Unable to unsubscribe Kunne ikke afmelde @@ -2830,10 +3500,12 @@ Do you want to delete it anyway? QPSQLResult + Unable to create query Kunne ikke oprette forespørgsel + Unable to prepare statement Kunne ikke forberede udsagn @@ -2841,83 +3513,102 @@ Do you want to delete it anyway? QPageSetupWidget - + Centimeters (cm) Centimeter (cm) + Millimeters (mm) Millimeter (mm) + Inches (in) + Points (pt) Point (pt) + Form + Paper Papir + Page size: Sidestørrelse: + Width: Vidde: + Height: Højde: + Paper source: Papirkilde: + Orientation + Portrait Portræt + Landscape Landskab + Reverse landscape Omvendt landskab + Reverse portrait Omvendt portræt + Margins Margener + top margin Margen - øverst + left margin Margen - venstre + right margin Margen - højre + bottom margin Margen - bund @@ -2925,11 +3616,12 @@ Do you want to delete it anyway? QPluginLoader - + Unknown error Ukendt fejl + The plugin was not loaded. Plugin blev ikke indlæst. @@ -2937,346 +3629,428 @@ Do you want to delete it anyway? QPrintDialog - + locally connected lokalt forbundet + + Aliases: %1 Aliasser: %1 + + unknown Ukendt - + A0 (841 x 1189 mm) + A1 (594 x 841 mm) + A2 (420 x 594 mm) + A3 (297 x 420 mm) + A4 (210 x 297 mm, 8.26 x 11.7 inches) + A5 (148 x 210 mm) + A6 (105 x 148 mm) + A7 (74 x 105 mm) + A8 (52 x 74 mm) + A9 (37 x 52 mm) + B0 (1000 x 1414 mm) + B1 (707 x 1000 mm) + B2 (500 x 707 mm) + B3 (353 x 500 mm) + B4 (250 x 353 mm) + B5 (176 x 250 mm, 6.93 x 9.84 inches) + B6 (125 x 176 mm) + B7 (88 x 125 mm) + B8 (62 x 88 mm) + B9 (44 x 62 mm) + B10 (31 x 44 mm) + C5E (163 x 229 mm) + DLE (110 x 220 mm) + Executive (7.5 x 10 inches, 191 x 254 mm) + Folio (210 x 330 mm) + Ledger (432 x 279 mm) + Legal (8.5 x 14 inches, 216 x 356 mm) + Letter (8.5 x 11 inches, 216 x 279 mm) + Tabloid (279 x 432 mm) + US Common #10 Envelope (105 x 241 mm) - + OK + + + Print Udskriv + Print To File ... Udskriv til fil... - + Print range Udskriftsområde + Print all Udskriv alle - + File %1 is not writable. Please choose a different file name. Filen %1 kan ikke skrives. Vælg et andet filnavn. + %1 already exists. Do you want to overwrite it? %1 findes allerede. Ønsker du at overskrive? + File exists Fil findes + <qt>Do you want to overwrite it?</qt> <qt>Ønsker du at overskrive?</qt> + Print selection Udskriv markerede + %1 is a directory. Please choose a different file name. %1 er et katalog. Vælg et andet filnavn. + A0 + A1 + A2 + A3 + A4 + A5 + A6 + A7 + A8 + A9 + B0 + B1 + B2 + B3 + B4 + B5 + B6 + B7 + B8 + B9 + B10 + C5E + DLE + Executive + Folio + Ledger + Legal + Letter + Tabloid + US Common #10 Envelope + Custom Brugerdefineret + + &Options >> &Indstillinger>> + &Print &Udskriv + &Options << &Indstillinger<< + Print to File (PDF) Udskriv til fil (PDF) + Print to File (Postscript) Udskriv til fil (Postscript) + Local file Lokal fil + Write %1 file Skriv %1 fil - + The 'From' value cannot be greater than the 'To' value. 'Fra'-værdien kan ikke være større end 'til'-værdien. @@ -3284,87 +4058,108 @@ Vælg et andet filnavn. QPrintPreviewDialog + + Page Setup Sideopsætning - + %1% + Print Preview Vis udskrift + Next page Næste side + Previous page Forrige side + First page Første side + Last page Sidste side + Fit width Tilpas bredde + Fit page Tilpas siden + Zoom in Zoom ind + Zoom out Zoom ud + Portrait Portræt + Landscape Landskab + Show single page Vis enkelt side + Show facing pages Vis sideopslag + Show overview of all pages Vis oversigt af alle sider + Print Udskriv + Page setup Sideopsætning + Close Luk + Export to PDF Eksportér til PDF + Export to PostScript Eksportér til PostScript @@ -3372,14 +4167,17 @@ Vælg et andet filnavn. QPrintPropertiesWidget + Form Form + Page Side + Advanced Avanceret @@ -3387,78 +4185,97 @@ Vælg et andet filnavn. QPrintSettingsOutput + Form + Copies Kopier + Print range Udskriv sider + Print all Udskriv alle + Pages from Sider fra + to til + Selection Valg + Output Settings Udskriftsindstillinger + Copies: Kopier: + Collate Samordne + Reverse Omvendt + Options Valgmuligheder + Color Mode Farvetilstand + Color Farve + Grayscale Gråskala + Duplex Printing Dobbelsidet + None Ingen + Long side Bog + Short side Tavle @@ -3466,38 +4283,47 @@ Vælg et andet filnavn. QPrintWidget + Form + Printer ' + &Name: &Navn: + P&roperties &Egenskaber + Location: Placering: + Preview Vis udskrift + Type: + Output &file: Udskrifts&fil: + ... @@ -3505,37 +4331,62 @@ Vælg et andet filnavn. QProcess - + + Could not open input redirection for reading Kunne ikke åbne input redirection for læsning - + + Could not open output redirection for writing Kunne ikke åbne output redirection for skrivning + Resource error (fork failure): %1 Ressource fejl (fork fejl): %1 + + + + + + + + + Process operation timed out Proces-operation time out + + + + Error reading from process Fejl ved læsning fra proces - + + + Error writing to process Fejl ved skrivning til proces + Process crashed Proces crashede + + No program defined + Intet program defineret + + + Process failed to start Processen kunne ikke starte @@ -3543,7 +4394,7 @@ Vælg et andet filnavn. QProgressDialog - + Cancel Annuller @@ -3551,6 +4402,7 @@ Vælg et andet filnavn. QPushButton + Open Åbn @@ -3558,6 +4410,7 @@ Vælg et andet filnavn. QRadioButton + Check Kontrollér @@ -3565,39 +4418,47 @@ Vælg et andet filnavn. QRegExp - + no error occurred der opstod ingen fejl + disabled feature used deaktiveret funktion blev brugt + bad char class syntax dårlig char class syntaks + bad lookahead syntax dårlig lookahead syntaks + bad repetition syntax dårlig gentagelsessyntaks + invalid octal value ugyldigt oktal-tal + missing left delim Manglende venstre delimiter + unexpected end uventet afslutning + met internal limit nåede interne grænse @@ -3605,19 +4466,22 @@ Vælg et andet filnavn. QSQLite2Driver - + Error to open database Der opstod fejl ved åbning af database + Unable to begin transaction Kunne ikke påbegynde transaktionen + Unable to commit transaction Kunne ikke gennemføre transaktionen + Unable to rollback Transaction Kunne ikke tilbagetrække transaktion @@ -3625,10 +4489,12 @@ Vælg et andet filnavn. QSQLite2Result + Unable to fetch results Kunne ikke hente resultater + Unable to execute statement Kunne ikke udføre statement @@ -3636,23 +4502,27 @@ Vælg et andet filnavn. QSQLiteDriver - + Error opening database Der opstod fejl ved åbning af database + Error closing database Der opstod fejl ved lukning af database + Unable to begin transaction Kunne ikke påbegynde transaktionen + Unable to commit transaction Kunne ikke gennemføre transaktion + Unable to rollback transaction Kunne ikke tilbagetrække transaktion @@ -3660,26 +4530,34 @@ Vælg et andet filnavn. QSQLiteResult + + + Unable to fetch row Kunne ikke hente række + Unable to execute statement Kunne ikke udføre udsagn + Unable to reset statement Kunne ikke nulstille udsagn + Unable to bind parameters Unable to bind parameters + Parameter count mismatch Misforhold i parametertælling + No query Ingen forespørgesel @@ -3687,69 +4565,84 @@ Vælg et andet filnavn. QScrollBar - + Scroll here Scroll her + Left edge Venstre kant + Top Øverst + Right edge Højre kant + Bottom Bund + Page left Side venstre - + + Page up Side øverst + Page right Side højre - + + Page down Side ned + Scroll left Scroll til venstre + Scroll up Scroll op + Scroll right Scroll til højre + Scroll down Scroll ned + Line up Linie op + Position Placering + Line down Linie ned @@ -3757,81 +4650,99 @@ Vælg et andet filnavn. QSharedMemory - + %1: unable to set key on lock %1: Kunne ikke oprette nøgle + %1: create size is less then 0 %1: create size is less then 0 - + + %1: unable to lock %1: Kunne ikke låse + %1: unable to unlock %1: Kunne ikke oprette nøgle - + + %1: permission denied %1: Tilladelse nægtet + + %1: already exists %1: Findes allerede - + + %1: doesn't exists %1: Findes ikke - + + %1: out of resources %1: Ikke flere ressourcer - + + %1: unknown error %2 %1: ukendt fejl %2 + %1: key is empty %1: nøgle er tom + %1: unix key file doesn't exists %1: Kunne ikke oprette nøgle + %1: ftok failed %1: ftok mislykkedes - + + %1: unable to make key %1: Kunne ikke oprette nøgle + %1: system-imposed size restrictions %1: System-pålagte størrelsesrestriktioner + %1: not attached %1: Ikke vedhæftet + %1: invalid size %1: Ugyldig størrelse + %1: key error %1: Nøglefejl + %1: size query failed %1: Størrelsesforespørgsel mislykkedes @@ -3839,371 +4750,466 @@ Vælg et andet filnavn. QShortcut - + Space + Esc + Tab + Backtab Tilbage-tabulator + Backspace Tilbage + Return + Enter + Ins + Del + Pause + Print Udskriv + SysReq + Home + End + Left Venstre + Up Op + Right Højre + Down Ned + PgUp + PgDown + CapsLock ' + NumLock + ScrollLock + Menu + Help Hjælp + Back Tilbage + Forward Frem + Stop + Refresh Opdater + Volume Down Lydstyrke ned + Volume Mute Lydstyrke mute + Volume Up Lydstyrke op + Bass Boost + Bass Up Bass op + Bass Down Bass ned + Treble Up Diskant op + Treble Down Diskant ned + Media Play + Media Stop + Media Previous Media forrige + Media Next Media næste + Media Record + Favorites + Search Søg + Standby + Open URL Åbn URL + Launch Mail Start mail + Launch Media Start Media + Launch (0) Start (0) + Launch (1) Start (1) + Launch (2) Start (2) + Launch (3) Start (3) + Launch (4) Start (4) + Launch (5) Start (5) + Launch (6) Start (6) + Launch (7) Start (7) + Launch (8) Start (8) + Launch (9) Start (9) + Launch (A) Start (A) + Launch (B) Start (B) + Launch (C) Start (C) + Launch (D) Start (D) + Launch (E) Start (E) + Launch (F) Start (F) + Print Screen + Page Up + Page Down + Caps Lock + Num Lock + Number Lock + Scroll Lock + Insert + Delete + Escape + System Request + Select Væg + Yes Ja + No Nej + Context1 Kontekst1 + Context2 Kontekst2 + Context3 Kontekst3 + Context4 Kontekst4 + Call Ring til + Hangup Læg på + Flip Vend + + Ctrl + + Shift + + Alt + + Meta + + + F%1 + Home Page Startside @@ -4211,23 +5217,27 @@ Vælg et andet filnavn. QSlider - + Page left Side venstre + Page up Side op + Position Placering + Page right Side højre + Page down Side ned @@ -4235,58 +5245,72 @@ Vælg et andet filnavn. QSocks5SocketEngine + Connection to proxy refused Proxy-forbindelse nægtede + Connection to proxy closed prematurely Proxy-forbindelse afsluttede i utide + Proxy host not found Proxy-host kunne ikke findes + Connection to proxy timed out Proxy-serverforbindelse timed out + Proxy authentication failed Proxy autentificering mislykkedes + Proxy authentication failed: %1 Proxy autentificering mislykkedes: %1 + SOCKS version 5 protocol error SOCKS version 5 protokolfejl + General SOCKSv5 server failure General SOCKSv5 serverfejl + Connection not allowed by SOCKSv5 server Forbindelse ikke tilladt a SOCKSv5-server + TTL expired TTL udløbet + SOCKSv5 command not supported SOCKSv5-kommando ikke understøttet + Address type not supported Adressetype understøttes ikke + Unknown SOCKSv5 proxy error code 0x%1 Ukendt SOCKSv5 proxy fejlkode 0x%1 + Network operation timed out Netværksoperationen timed out @@ -4294,10 +5318,12 @@ Vælg et andet filnavn. QSpinBox + More Mere + Less Mindre @@ -4305,43 +5331,56 @@ Vælg et andet filnavn. QSql - + Delete Slet + Delete this record? Slet denne post? + + + Yes Ja + + + No Nej + Insert Indsæt + Update Opdater + Save edits? Gem ændringer? + Cancel Annuller + Confirm Bekræft + Cancel your edits? Skal dine ændringer annulleres? @@ -4349,47 +5388,57 @@ Vælg et andet filnavn. QSslSocket - + Unable to write data: %1 Kunne ikke skrive data: %1 + Error while reading: %1 Der opstod en fejl under læsning af: %1 + Error during SSL handshake: %1 Der opstod en fejl under SSL handshake: %1 + Error creating SSL context (%1) Der opstod fejl under oprettelse af SSL-kontekst (%1) + Invalid or empty cipher list (%1) Ugyldig eller tom chifferliste (%1) + Error creating SSL session, %1 Der opstod fejl under oprettelse af SSL-session, %1 + Error creating SSL session: %1 Der opstod fejl under oprettelse af SSL-session, %1 + Cannot provide a certificate with no key, %1 Kan ikke give et certifikat uden nøgle, %1 + Error loading local certificate, %1 Der opstod fejl under indlæsning af lokalt certifikat, %1 + Error loading private key, %1 Der opstod fejl under indlæsning af privat nøgle, %1 + Private key does not certificate public key, %1 Privat-nøgle autoriserer ikke offentlig-nøgle, %1 @@ -4397,25 +5446,30 @@ Vælg et andet filnavn. QSystemSemaphore - + + %1: out of resources %1: Ikke flere ressourcer - + + %1: permission denied %1: Tilladelse nægtet + %1: already exists %1: Findes allerede + %1: does not exist %1: Findes ikke - + + %1: unknown error %2 %1: Ukendt fejl %2 @@ -4423,11 +5477,12 @@ Vælg et andet filnavn. QTDSDriver - + Unable to open connection Kunne ikke etablere forbindelsen + Unable to use database Kunne ikke bruge databasen @@ -4435,10 +5490,12 @@ Vælg et andet filnavn. QTabBar + Scroll Left Scroll til venstre + Scroll Right Scroll til højre @@ -4446,7 +5503,7 @@ Vælg et andet filnavn. QTcpServer - + Operation on socket is not supported Socket-operation ikke understøttet @@ -4454,35 +5511,42 @@ Vælg et andet filnavn. QTextControl - + &Undo &Fortryd + &Redo &Gendan + Cu&t K&lip + &Copy &Kopiér + Copy &Link Location Kopiér l&ink + &Paste &Sæt ind + Delete Slet + Select All Markér alt @@ -4490,10 +5554,14 @@ Vælg et andet filnavn. QToolButton + + Press Tryk på + + Open Åbn @@ -4501,7 +5569,7 @@ Vælg et andet filnavn. QUdpSocket - + This platform does not support IPv6 Denne platform understøtter ikke IPv6 @@ -4509,11 +5577,12 @@ Vælg et andet filnavn. QUndoGroup - + Undo Fortryd + Redo Gendan @@ -4521,7 +5590,7 @@ Vælg et andet filnavn. QUndoModel - + <empty> <tom> @@ -4529,11 +5598,12 @@ Vælg et andet filnavn. QUndoStack - + Undo Fortryd + Redo Gendan @@ -4541,47 +5611,57 @@ Vælg et andet filnavn. QUnicodeControlCharacterMenu - + LRM Left-to-right mark + RLM Right-to-left mark + ZWJ Zero width joiner + ZWNJ Zero width non-joiner + ZWSP Zero width space + LRE Start of left-to-right embedding + RLE Start of right-to-left embedding + LRO Start of left-to-right override + RLO Start of right-to-left override + PDF Pop directional formatting + Insert Unicode control character @@ -4589,27 +5669,32 @@ Vælg et andet filnavn. QWebFrame - + Request cancelled Anmodning annulleret + Request blocked Anmodning blokeret + Cannot show URL Kan ikke vise URL + Frame load interruped by policy change Billedindlæsning afbrudt af ændringer i retningslinier + Cannot show mimetype Kan ikke vise MIME-type + File does not exist Filen findes ikke @@ -4617,316 +5702,376 @@ Vælg et andet filnavn. QWebPage - + Bad HTTP request Dårlig HTTP-anmodning - + Submit default label for Submit buttons in forms on web pages Send + Submit Submit (input element) alt text for <input> elements with no alt, title, or value Send + Reset default label for Reset buttons in forms on web pages Nulstil + This is a searchable index. Enter search keywords: text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index' Dette er et søgeindeks. Indtast søgeord: + Choose File title for file button used in HTML forms Vælg fil + No file selected text to display in file button used in HTML forms when no file is selected Der er ikke valgt en fil + Open in New Window Open in New Window context menu item Åbn i nyt vindue + Save Link... Download Linked File context menu item Gem link... + Copy Link Copy Link context menu item Kopiér link + Open Image Open Image in New Window context menu item Åbn billede + Save Image Download Image context menu item Gem billede + Copy Image Copy Link context menu item Kopiér billede + Open Frame Open Frame in New Window context menu item Åbn faneblad + Copy Copy context menu item Kopiér + Go Back Back context menu item Gå tilbage + Go Forward Forward context menu item Gå frem + Stop Stop context menu item Stop + Reload Reload context menu item Genindlæs + Cut Cut context menu item Klip + Paste Paste context menu item Sæt ind + No Guesses Found No Guesses Found context menu item Der er ikke fundet nogen gæt + Ignore Ignore Spelling context menu item Ignorér + Add To Dictionary Learn Spelling context menu item Tilføj til ordbog + Search The Web Search The Web context menu item Søg på nettet + Look Up In Dictionary Look Up in Dictionary context menu item Slå op i ordbog + Open Link Open Link context menu item Åbn link + Ignore Ignore Grammar context menu item Ignorér + Spelling Spelling and Grammar context sub-menu item Stavekontrol + Show Spelling and Grammar menu item title Vis stave- og grammatikkontrol + Hide Spelling and Grammar menu item title Skjul stave- og grammatikkontrol + Check Spelling Check spelling context menu item Kør stavekontrol + Check Spelling While Typing Check spelling while typing context menu item Kør stavekontrol mens der tastes + Check Grammar With Spelling Check grammar with spelling context menu item Kør grammatikkontrol sammen med stavekontrol + Fonts Font context sub-menu item Skrifttyper + Bold Bold context menu item Fed + Italic Italic context menu item Kursiv + Underline Underline context menu item Understreget + Outline Outline context menu item Kontur + Direction Writing direction context sub-menu item Retning + Text Direction Text direction context sub-menu item Tekstretning + Default Default writing direction context menu item Standard + LTR Left to Right context menu item + RTL Right to Left context menu item + Inspect Inspect Element context menu item Inspicér + No recent searches Label for only item in menu that appears when clicking on the search field image, when no searches have been performed Ingen aktuelle søgninger + Recent searches label for first item in the menu that appears when clicking on the search field image, used as embedded menu title Aktuelle søgninger + Clear recent searches menu item in Recent Searches menu that empties menu's contents Ryd aktuelle søgninger + Unknown Unknown filesize FTP directory listing item Ukendt + %1 (%2x%3 pixels) Title string for images %1 (%2x%3 pixels) - + Web Inspector - %2 Web-inspektør - %2 - + Scroll here Scroll her + Left edge Venstre kant + Top + Right edge Højre kant + Bottom Bund + Page left Side venstre + Page up Side øverst + Page right Side højre + Page down Side ned + Scroll left Scroll til venstre + Scroll up Scroll op + Scroll right Scroll til højre + Scroll down Scroll ned - + %n file(s) number of chosen file @@ -4935,127 +6080,170 @@ Vælg et andet filnavn. - + JavaScript Alert - %1 JavaScript alert - %1 + JavaScript Confirm - %1 JavaScript Bekræft - %1 + JavaScript Prompt - %1 JavaScript Prompt - %1 + Move the cursor to the next character Flyt markør til næste tegn + Move the cursor to the previous character Flyt markør til forrige tegn + Move the cursor to the next word Flyt markør til næste ord + Move the cursor to the previous word Flyt markør til forrige ord + Move the cursor to the next line Flyt markør til næste linie + Move the cursor to the previous line Flyt markør til forrige linie + Move the cursor to the start of the line Flyt markør til starten af linien + Move the cursor to the end of the line Flyt markør til slutningen af linien + Move the cursor to the start of the block Flyt markør til starten af sektionen + Move the cursor to the end of the block Flyt markør til slutningen af sektionen + Move the cursor to the start of the document Flyt markør til starten af dokumentet + Move the cursor to the end of the document Flyt markør til slutningen af dokumentet + + Select all + Markér alt + + + Select to the next character Vælg til næste tegn + Select to the previous character Vælg til forrige tegn + Select to the next word Vælg til næste ord + Select to the previous word Vælg til forrige ord + Select to the next line Vælg til næste linie + Select to the previous line Vælg til forrige linie + Select to the start of the line Vælg til starten af linien + Select to the end of the line Vælg til slutningen af linien + Select to the start of the block Vælg til starten af sektionen + Select to the end of the block Vælg til slutningen af sektionen + Select to the start of the document Vælg til starten af dokumentet + Select to the end of the document Vælg til slutningen af dokumentet + Delete to the start of the word Slet til starten af ordet + Delete to the end of the word Slet til slutningen af ordet + + + Insert a new paragraph + Indsæt et nyt afsnit + + + + Insert a new line + Insert ny linie + QWhatsThisAction - + What's This? Hvad er dette? @@ -5063,7 +6251,7 @@ Vælg et andet filnavn. QWidget - + * @@ -5071,47 +6259,57 @@ Vælg et andet filnavn. QWizard - + Go Back Gå tilbage + Continue Fortsæt + Commit Udfør + Done Færdig + Help Hjælp + < &Back < &Tilbage + &Finish &Afslut + Cancel Annuller + &Help &Hjælp + &Next &Næste + &Next > &Næste > @@ -5119,55 +6317,69 @@ Vælg et andet filnavn. QWorkspace - + &Restore &Gendan + &Move &Flyt + &Size &Størrelse + Mi&nimize Mi&nimér + Ma&ximize Ma&ksimér + &Close &Luk + Stay on &Top Bliv på &toppen + + Sh&ade Sk&ygge + + %1 - [%2] + Minimize Minimer + Restore Down Gendan ned + Close Luk + &Unshade &Fjern skygge @@ -5175,95 +6387,117 @@ Vælg et andet filnavn. QXml - + no error occurred der opstod ingen fejl + error triggered by consumer - + Fejltilstand rejst af datamodtager + unexpected end of file uventet afslutning på fil + more than one document type definition mere end én definition på dokumenttype + error occurred while parsing element der opstod fejl under fortolking af element + tag mismatch + error occurred while parsing content der opstod fejl under fortolking af indhold + unexpected character uventet tegn + invalid name for processing instruction - + Ugyldigt navn for processing instruction + version expected while reading the XML declaration version forventet under læsning af XML-deklaration + wrong value for standalone declaration - + Forkert værdi for fri deklaration + encoding declaration or standalone declaration expected while reading the XML declaration - + Enkodningsdeklaration eller fri deklaration forventet ved læsning af XML-deklaration + standalone declaration expected while reading the XML declaration - + fri deklaration forventet ved læsning af XML-deklaration + error occurred while parsing document type definition der opstod fejl under fortolking af dokumenttypedefinition + letter is expected - + bogstav forventet + error occurred while parsing comment der opstod fejl under fortolking af kommentar + error occurred while parsing reference der opstod fejl under fortolking af reference + internal general entity reference not allowed in DTD - + intern generel entitetsreference ikke tilladt i DTD + external parsed general entity reference not allowed in attribute value - + Eksternt parset generel entitetsreference ikke tilladt i attributværdi + external parsed general entity reference not allowed in DTD - + Eksternt parset generel entitetsreference ikke tilladt i DTD + unparsed entity reference in wrong context ufortolket enhedsreference i forkert kontekst + recursive entities - + rekursive entiteter + error in the text declaration of an external entity fejl i tekstdeklaration på en ekstern enhed @@ -5271,412 +6505,485 @@ Vælg et andet filnavn. QXmlStream - + + Extra content at end of document. Ekstra indhold sidst i dokumentet. + Invalid entity value. Ugyldig enhedsværdi. + Invalid XML character. Ugyldigt XML-tegn. + Sequence ']]>' not allowed in content. Sekvens ']]>' ikke tilladt i indhold. + Namespace prefix '%1' not declared Navnerumspræfiks '%1' ikke deklareret + Attribute redefined. - + Attribut redefineret. + Unexpected character '%1' in public id literal. - + Uventet tegn '%1' i public id værdi. + Invalid XML version string. Ugyldigt XML-versionsstreng. + Unsupported XML version. XML-version understøttes ikke. + %1 is an invalid encoding name. - + %1 er et ugyldigt enkodningsnavn. + Encoding %1 is unsupported - + Enkodning %1 er ikke understøttet + Standalone accepts only yes or no. + Invalid attribute in XML declaration. - + Ugyldig attribut i XML-deklaration. + Premature end of document. - + Dokument sluttede for tidligt. + Invalid document. Ugyldigt dokument. + Expected Forventet + , but got ' , men fik ' + Unexpected ' Uventet ' + Expected character data. Forventet tegndata. + Recursive entity detected. - + Rekursiv entitet opdaget. + Start tag expected. Start-tag forventet. + XML declaration not at start of document. XML-deklaration ikke i starten af dokumentet. + NDATA in parameter entity declaration. - + NDATA i parameterentitetsdeklaration. + %1 is an invalid processing instruction name. - + %1 er et ugyldigt processing-instruction-navn. + Invalid processing instruction name. - + Ugyldigt processing-instruction-navn. + + + + Illegal namespace declaration. Ulovligt navnerumsdeklaration. - + Invalid XML name. Ugyldigt XML-navn. + Opening and ending tag mismatch. Åbner og afslutter tag-mismatch. + Reference to unparsed entity '%1'. Reference to ufortolket enhed '%1'. + + + Entity '%1' not declared. Enheden '%1' ikke deklareret. + Reference to external entity '%1' in attribute value. Reference til ekstern enhed '%1' i attributværdi. + Invalid character reference. Ugyldig tegnreference. + + Encountered incorrectly encoded content. - + Indhold med forkert enkodning læst. + The standalone pseudo attribute must appear after the encoding. - + Den frie pseudo-attribut skal optræde efter enkodningen. - + %1 is an invalid PUBLIC identifier. - + %1 er en ugyldig PUBLIC identifier. QtXmlPatterns - + An %1-attribute with value %2 has already been declared. - + En %1-attribut med værdi %2 er allerede erklæret. + An %1-attribute must have a valid %2 as value, which %3 isn't. - + En %1-attribut skal have en gyldig %2 som værdi, hvilket %3 ikke er. - + Network timeout. - + Netværk timeout. - + Element %1 can't be serialized because it appears outside the document element. - + Element %1 kan ikke serialiseres fordi det optræder udenfor dokument-elementet. - + Year %1 is invalid because it begins with %2. - + År %1 er ugyldigt da det begynder med %2. + Day %1 is outside the range %2..%3. - + Dag %1 er udenfor intervallet %2..%3. + Month %1 is outside the range %2..%3. - + Måned %1 er udenfor intervallet %2..%3. + Overflow: Can't represent date %1. - + Overflow: Kan ikke repræsentere dato %1. + Day %1 is invalid for month %2. - + Dag %1 er ugyldig for månet %2. + Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; - + Tidspunkt 24:%1:%2.%3 er ugyldigt. Timetal er 24, men minutter, sekunder og millisekunder er ikke alle 0; + Time %1:%2:%3.%4 is invalid. - + Tidspunkt %1:%2:%3.%4 er ugyldigt. + Overflow: Date can't be represented. - + Overflow: Dato kan ikke repræsenteres. + + At least one component must be present. - + Mindst en komponent skal være tilstede. + At least one time component must appear after the %1-delimiter. - + Mindst en tidskomponent skal optræde efter %1-skillemærket. - + No operand in an integer division, %1, can be %2. - + Ingen operand i en heltalsdivision, %1, kan være %2. + The first operand in an integer division, %1, cannot be infinity (%2). - + Den første operand i en heltalsdivision, %1, kan ikke være uendeligt (%2). + The second operand in a division, %1, cannot be zero (%2). - + Den anden operand i en division, %1, kan ikke være nul (%2). - + %1 is not a valid value of type %2. - + %1 er ikke en gyldig værdi af typen %2. - + When casting to %1 from %2, the source value cannot be %3. - + Ved cast til %1 fra %2, kan kildeværdien ikke være %3. - + Integer division (%1) by zero (%2) is undefined. - + Heltalsdivision (%1) med nul (%2) er udefineret. + Division (%1) by zero (%2) is undefined. - + Division (%1) med nul (%2) er udefineret. + Modulus division (%1) by zero (%2) is undefined. - + Modulusdivision (%1) med nul (%2) er udefineret. + + Dividing a value of type %1 by %2 (not-a-number) is not allowed. - + Division af værdi af typen %1 med %2 (ikke et tal) er ikke tilladt. + Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed. + Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed. - + A value of type %1 cannot have an Effective Boolean Value. - + Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values. - + Value %1 of type %2 exceeds maximum (%3). + Value %1 of type %2 is below minimum (%3). - + A value of type %1 must contain an even number of digits. The value %2 does not. + %1 is not valid as a value of type %2. - + Operator %1 cannot be used on type %2. + Operator %1 cannot be used on atomic values of type %2 and %3. - + The namespace URI in the name for a computed attribute cannot be %1. + The name for a computed attribute cannot have the namespace URI %1 with the local name %2. - + Type error in cast, expected %1, received %2. + 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. - + No casting is possible with %1 as the target type. + It is not possible to cast from %1 to %2. + Casting to %1 is not possible because it is an abstract type, and can therefore never be instantiated. + It's not possible to cast the value %1 of type %2 to %3 + Failure when casting from %1 to %2: %3 - + A comment cannot contain %1 + A comment cannot end with a %1. - + No comparisons can be done involving the type %1. + Operator %1 is not available between atomic values of type %2 and %3. - + An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place. - + A library module cannot be evaluated directly. It must be imported from a main module. + No template by name %1 exists. - + A value of type %1 cannot be a predicate. A predicate must have either a numeric type or an Effective Boolean Value type. + A positional predicate must evaluate to a single numeric value. - + The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid. + %1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3. - + The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two. - + The data of a processing instruction cannot contain the string %1 - + No namespace binding exists for the prefix %1 - + No namespace binding exists for the prefix %1 in %2 - + + %1 is an invalid %2 - + %1 takes at most %n argument(s). %2 is therefore invalid. @@ -5684,6 +6991,7 @@ Vælg et andet filnavn. + %1 requires at least %n argument(s). %2 is therefore invalid. @@ -5691,613 +6999,731 @@ Vælg et andet filnavn. - + The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration. + The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5. + The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5. - + %1 is not a valid XML 1.0 character. - + The first argument to %1 cannot be of type %2. - + If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same. - + %1 was called. - + %1 must be followed by %2 or %3, not at the end of the replacement string. + In the replacement string, %1 must be followed by at least one digit when not escaped. + In the replacement string, %1 can only be used to escape itself or %2, not %3 - + %1 matches newline characters + %1 and %2 match the start and end of a line. + Matches are case insensitive + Whitespace characters are removed, except when they appear in character classes + %1 is an invalid regular expression pattern: %2 + %1 is an invalid flag for regular expressions. Valid flags are: - + If the first argument is the empty sequence or a zero-length string (no namespace), a prefix cannot be specified. Prefix %1 was specified. - + It will not be possible to retrieve %1. - + The root node of the second argument to function %1 must be a document node. %2 is not a document node. - + The default collection is undefined + %1 cannot be retrieved - + The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization). - + A zone offset must be in the range %1..%2 inclusive. %3 is out of range. + %1 is not a whole number of minutes. - + Required cardinality is %1; got cardinality %2. - + The item %1 did not match the required type %2. + + %1 is an unknown schema type. + Only one %1 declaration can occur in the query prolog. + The initialization of variable %1 depends on itself + No variable by name %1 exists - + The variable %1 is unused - + Version %1 is not supported. The supported XQuery version is 1.0. + The encoding %1 is invalid. It must contain Latin characters only, must not contain whitespace, and must match the regular expression %2. + No function with signature %1 is available + + A default namespace declaration must occur before function, variable, and option declarations. + Namespace declarations must occur before function, variable, and option declarations. + Module imports must occur before function, variable, and option declarations. + It is not possible to redeclare prefix %1. + Prefix %1 is already declared in the prolog. + The name of an option must have a prefix. There is no default namespace for options. + The Schema Import feature is not supported, and therefore %1 declarations cannot occur. + The target namespace of a %1 cannot be empty. + The module import feature is not supported + No value is available for the external variable by name %1. + A construct was encountered which only is allowed in XQuery. + A template by name %1 has already been declared. + The keyword %1 cannot occur with any other mode name. + The value of attribute %1 must of type %2, which %3 isn't. + The prefix %1 can not be bound. By default, it is already bound to the namespace %2. + A variable by name %1 has already been declared. + A stylesheet function must have a prefixed name. + The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this) + The namespace %1 is reserved; therefore user defined functions may not use it. Try the predefined prefix %2, which exists for these cases. + 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 + A function already exists with the signature %1. + No external functions are supported. All supported functions can be used directly, without first declaring them as external + An argument by name %1 has already been declared. Every argument name must be unique. + When function %1 is used for matching inside a pattern, the argument must be a variable reference or a string literal. + In an XSL-T pattern, the first argument to function %1 must be a string literal, when used for matching. + In an XSL-T pattern, the first argument to function %1 must be a literal or a variable reference, when used for matching. + In an XSL-T pattern, function %1 cannot have a third argument. + In an XSL-T pattern, only function %1 and %2, not %3, can be used for matching. + In an XSL-T pattern, axis %1 cannot be used, only axis %2 or %3 can. + %1 is an invalid template mode name. + The name of a variable bound in a for-expression must be different from the positional variable. Hence, the two variables named %1 collide. + The Schema Validation Feature is not supported. Hence, %1-expressions may not be used. + None of the pragma expressions are supported. Therefore, a fallback expression must be present + Each name of a template parameter must be unique; %1 is duplicated. + The %1-axis is unsupported in XQuery + %1 is not a valid name for a processing-instruction. + %1 is not a valid numeric literal. + No function by name %1 is available. + The namespace URI cannot be the empty string when binding to a prefix, %1. + %1 is an invalid namespace URI. + It is not possible to bind to the prefix %1 + Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared). + Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared). + Two namespace declaration attributes have the same name: %1. + The namespace URI must be a constant and cannot use enclosed expressions. + An attribute by name %1 has already appeared on this element. + A direct element constructor is not well-formed. %1 is ended with %2. + The name %1 does not refer to any schema type. + %1 is an complex type. Casting to complex types is not possible. However, casting to atomic types such as %2 works. + %1 is not an atomic type. Casting is only possible to atomic types. + + %1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported. + The name of an extension expression must be in a namespace. - + empty + zero or one + exactly one + one or more + zero or more - + Required type is %1, but %2 was found. + Promoting %1 to %2 may cause loss of precision. + The focus is undefined. - + It's not possible to add attributes after any other kind of node. + An attribute by name %1 has already been created. - + Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported. - + Attribute %1 can't be serialized because it appears at the top level. - + %1 is an unsupported encoding. + %1 contains octets which are disallowed in the requested encoding %2. + The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character. - + Ambiguous rule match. - - In a namespace constructor, the value for a namespace value cannot be an empty string. + + In a namespace constructor, the value for a namespace cannot be an empty string. + The prefix must be a valid %1, which %2 is not. + The prefix %1 cannot be bound. + Only the prefix %1 can be bound to %2 and vice versa. - + Circularity detected - + The parameter %1 is required, but no corresponding %2 is supplied. + The parameter %1 is passed, but no corresponding %2 exists. - + The URI cannot have a fragment - + Element %1 is not allowed at this location. + Text nodes are not allowed at this location. + Parse error: %1 + The value of the XSL-T version attribute must be a value of type %1, which %2 isn't. + Running an XSL-T 1.0 stylesheet with a 2.0 processor. + Unknown XSL-T attribute %1. + Attribute %1 and %2 are mutually exclusive. + In a simplified stylesheet module, attribute %1 must be present. + If element %1 has no attribute %2, it cannot have attribute %3 or %4. + Element %1 must have at least one of the attributes %2 or %3. + At least one mode must be specified in the %1-attribute on element %2. - + Attribute %1 cannot appear on the element %2. Only the standard attributes can appear. + Attribute %1 cannot appear on the element %2. Only %3 is allowed, and the standard attributes. + Attribute %1 cannot appear on the element %2. Allowed is %3, %4, and the standard attributes. + Attribute %1 cannot appear on the element %2. Allowed is %3, and the standard attributes. + XSL-T attributes on XSL-T elements must be in the null namespace, not in the XSL-T namespace which %1 is. + The attribute %1 must appear on element %2. + The element with local name %1 does not exist in XSL-T. - + Element %1 must come last. + At least one %1-element must occur before %2. + Only one %1-element can appear. + At least one %1-element must occur inside %2. + When attribute %1 is present on %2, a sequence constructor cannot be used. + Element %1 must have either a %2-attribute or a sequence constructor. + When a parameter is required, a default value cannot be supplied through a %1-attribute or a sequence constructor. + Element %1 cannot have children. + Element %1 cannot have a sequence constructor. + + The attribute %1 cannot appear on %2, when it is a child of %3. + A parameter in a function cannot be declared to be a tunnel. + This processor is not Schema-aware and therefore %1 cannot be used. + Top level stylesheet elements must be in a non-null namespace, which %1 isn't. + The value for attribute %1 on element %2 must either be %3 or %4, not %5. + Attribute %1 cannot have the value %2. + The attribute %1 can only appear on the first %2 element. + At least one %1 element must appear as child of %2. @@ -6305,11 +7731,13 @@ Vælg et andet filnavn. VolumeSlider - + Muted + + Volume: %1% Lydstyrke: %1% diff --git a/translations/qt_help_da.ts b/translations/qt_help_da.ts index 0e4a362..73609a1 100644 --- a/translations/qt_help_da.ts +++ b/translations/qt_help_da.ts @@ -4,27 +4,27 @@ QCLuceneResultWidget - + Search Results Søgeresultater - + Note: Bemærk: - + The search results may not be complete since the documentation is still being indexed! Søgeresultaterne kan være ufuldstændige, fordi dokumentationen stadig indekseres! - + Your search did not match any documents. Søgningen matchede ikke nogen dokumenter. - + (The reason for this might be that the documentation is still being indexed.) (Årsagen kan være, at dokumentationen stadig indekseres.) @@ -32,72 +32,78 @@ QHelpCollectionHandler - + The collection file is not set up yet! Hjælpesamlingen er ikke konfigureret endnu! - + + Cannot load sqlite database driver! + Kan ikke indlæse sqlite database-driver! + + + + Cannot open collection file: %1 Kan ikke åbne hjælpesamlingen: %1 - + Cannot create tables in file %1! Kan ikke oprette tabler i filen %1! - + The specified collection file already exists! Den angivne hjælpesamling findes allerede! - + Cannot create directory: %1 Kan ikke oprette kataloget: %1 - + Cannot copy collection file: %1 Kan ikke kopiere hjælpesamling: %1 - + Unknown filter! Ukendt filter! - + Cannot register filter %1! Kan ikke registrere filteret %1! - + Cannot open documentation file %1! Kan ikke åbne dokumentationsfilen %1! - + Invalid documentation file! Ugyldig dokumentationsfil! - + The namespace %1 was not registered! Navnerummet %1 blev ikke registreret! - + Namespace %1 already exists! Navnerummet %1 findes allerede! - + Cannot register namespace! Kan ikke registrere navnerummet! - + Cannot open database to optimize! Kan ikke åbne den database, der skal optimeres! @@ -105,15 +111,19 @@ QHelpDBReader - Cannot open DB! - Kan ikke åbne DB! + Kan ikke åbne DB! + + + + Cannot open database '%1' '%2': %3 + Kan ikke åbne database '%1' '%2': %3 QHelpEngineCore - + The specified namespace does not exist! Det angivne navnerum findes ikke! @@ -121,125 +131,135 @@ QHelpEngineCorePrivate - + + Cannot open documentation file %1: %2! + Kan ikke åbne dokumentationsfil %1: %2! + + Cannot open collection file %1! - Kan ikke åbne hjælpesamlingen %1! + Kan ikke åbne hjælpesamlingen %1! - Cannot open documentation file %1! - Kan ikke åbne dokumentationsfilen %1! + Kan ikke åbne dokumentationsfilen %1! QHelpGenerator - + Invalid help data! Ugyldigt hjælpedata! - + No output file name specified! Der er ikke anført et output-filnavn! - The file %1 already exists! - Filen %1 findes allerede! + Filen %1 findes allerede! - + Building up file structure... Bygger filstruktur... - Cannot open DB! - Kan ikke åbne DB! + Kan ikke åbne DB! + + + + The file %1 cannot be overwritten! + Filen %1 kan ikke overskrives! - + + Cannot open data base file %1! + Kan ikke åbne databasefil %1! + + + Cannot register namespace %1! Kan ikke registrere navnerummet %1! - + Insert custom filters... Indsæt brugerdefinerede filtre... - + Insert help data for filter section (%1 of %2)... Indsæt hjælpedata til filtersektion (%1 af %2)... - + Documentation successfully generated. Dokumentationen blev genereret. - + Some tables already exist! Nogle af tabellerne findes allerede! - + Cannot create tables! Kan ikke oprette tabeller! - + Cannot register virtual folder! Kan ikke registrere virtuel mappe! - + Insert files... Indsæt filer... - + The file %1 does not exist! Skipping it. Filen %1 findes ikke, og den springes over. - + Cannot open file %1! Skipping it. Kan ikke åbne filen %1, og den springes over. - Cannot insert file data into database! - Kan ikke indsætte fildata i databasen! + Kan ikke indsætte fildata i databasen! - + The filter %1 is already registered! Filtret %1 er allerede registreret! - + Cannot register filter %1! Kan ikke registrere filtret %1! - + Insert indices... Indsæt indeks... - + Insert contents... Indsæt indhold... - + Cannot insert contents! Kan ikke indsætte indhold! - + Cannot register contents! Kan ikke registrere indhold! @@ -247,42 +267,42 @@ QHelpSearchQueryWidget - + Search for: Søg efter: - + Search Søg - + Advanced search Avanceret søgning - + words <B>similar</B> to: ord <B>tilsvarende</B>: - + <B>without</B> the words: <B>uden</B> ordene: - + with <B>exact phrase</B>: med den <B>eksakte sætning</B>: - + with <B>all</B> of the words: med <B>alle</B> ordene: - + with <B>at least one</B> of the words: med <B>mindst ét</B> af ordene: @@ -290,7 +310,7 @@ QHelpSearchResultWidget - + 0 - 0 of 0 Hits 0 - 0 af 0 Hits @@ -298,7 +318,7 @@ QHelpSearchResultWidgetPrivate - + %1 - %2 of %3 Hits %1 - %2 af %3 Hits @@ -306,47 +326,60 @@ QObject - + Untitled Ingen titel - Unknown token at line %1. - Ukendt symbol på linie %1. + Ukendt symbol på linie %1. - Unknown token at line %1. Expected "QtHelpProject"! - Ukendt symbol på linie %1. Forventet "QtHelpProject"! + Ukendt symbol på linie %1. Forventet "QtHelpProject"! + + + + Unknown token. + Ukendt token. + + + + Unknown token. Expected "QtHelpProject"! + Ukendt token. Forventede "QtHelpProject"! + + + + Error in line %1: %2 + Fejl i linie %1: %2 - + A virtual folder must not contain a '/' character! En virtuel mappe må ikke indholde tegnet '/'! - + A namespace must not contain a '/' character! Et navnerum må ikke indeholde tegnet '/'! - + Missing namespace in QtHelpProject. Navnerum i +++ mangler. - + Missing virtual folder in QtHelpProject Virtuel mappe i QtHelpProject mangler - + Missing attribute in keyword at line %1. Attribut i nøgleord på linie %1 mangler. - + The input file %1 could not be opened! Input-filen %1 kunne ikke åbnes! 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 \ -- cgit v0.12 From 2c1b11f2192fd48da01a1093a7cb4a848de43c8a Mon Sep 17 00:00:00 2001 From: Trond Kjernaasen Date: Wed, 27 May 2009 11:11:57 +0200 Subject: Fixed aliasing pointer corruption in QDataStream. Use a union instead of an unsafe cast when swapping the bytes in the QDataStream streaming operators. The old seems to cause problems with Link Time Code Generation optimizations with the MSVC compilers. Task-number: 247708 Reviewed-by: Samuel Reviewed-by: Thiago BT: yes --- src/corelib/io/qdatastream.cpp | 92 +++++++++++++++++++++++++++++++++++------- 1 file changed, 77 insertions(+), 15 deletions(-) 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++; -- cgit v0.12 From 3a61a448b92b4f7c7ee02196340d3bcb75d067fb Mon Sep 17 00:00:00 2001 From: diaulas Date: Tue, 12 May 2009 14:15:34 +0200 Subject: Dont show children when parent is not visible in QGraphicsItem When setVisible() is called on a QGraphicsItem, if the parent of that item was hidden, the child shouldn't be actually shown. Task-number: 197802 Reviewed-by: leo Reviewed-by: alexis --- src/gui/graphicsview/qgraphicsitem.cpp | 5 ++++ tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 32 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 4908296..b6a7386 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -1522,6 +1522,11 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo if (visible == quint32(newVisible)) return; + QGraphicsItem *parent(q_ptr->parentItem()); + if (parent && newVisible && !parent->d_ptr->visible) { + return; + } + // Modify the property. const QVariant newVisibleVariant(q_ptr->itemChange(QGraphicsItem::ItemVisibleChange, quint32(newVisible))); diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index 58a17ea..d477135 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -123,6 +123,7 @@ private slots: void destruction(); void scene(); void parentItem(); + void childrenVisibility(); void setParentItem(); void children(); void flags(); @@ -549,6 +550,37 @@ void tst_QGraphicsItem::parentItem() delete item2; } +void tst_QGraphicsItem::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::setParentItem() { QGraphicsScene scene; -- cgit v0.12 From 5675d15eebd76fde43bc9305347c3b7833a7d893 Mon Sep 17 00:00:00 2001 From: Leonardo Sobral Cunha Date: Wed, 27 May 2009 15:03:00 +0200 Subject: Fixes for merge-request #407 Removed unused line and added task number to autotest. --- src/gui/graphicsview/qgraphicsitem.cpp | 5 +- tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 70 ++++++++++++++------------ 2 files changed, 39 insertions(+), 36 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index b6a7386..e8ace65 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -1522,10 +1522,9 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo if (visible == quint32(newVisible)) return; - QGraphicsItem *parent(q_ptr->parentItem()); - if (parent && newVisible && !parent->d_ptr->visible) { + // 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, diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index d477135..34a6ab1 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -123,7 +123,6 @@ private slots: void destruction(); void scene(); void parentItem(); - void childrenVisibility(); void setParentItem(); void children(); void flags(); @@ -227,6 +226,7 @@ private slots: void task240400_clickOnTextItem_data(); void task240400_clickOnTextItem(); void task243707_addChildBeforeParent(); + void task197802_childrenVisibility(); }; void tst_QGraphicsItem::init() @@ -550,37 +550,6 @@ void tst_QGraphicsItem::parentItem() delete item2; } -void tst_QGraphicsItem::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::setParentItem() { QGraphicsScene scene; @@ -5378,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()); @@ -5387,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("line"); -- cgit v0.12 From e24868e99ef0ffd8e5690761a798d731c4b71b26 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Wed, 27 May 2009 16:30:47 +0200 Subject: Fixed a possible assert in QGtkStyle We now set and unset the GTK_HAS_FOCUS flag on the same painting call only if focus is set instead of resetting it on each painting call. This is a tiny optimization but also kills a possible assert on certain versions of Gtk+ (as reported with Red Hat Enterprise Linux 5). Task-number: 254614 Reviewed-by: denis --- src/gui/styles/qgtkstyle.cpp | 63 ++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp index 14be518..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) { -- cgit v0.12 From 2be3c937fdca26287f74dd58cc217cb51924cf8a Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Wed, 27 May 2009 17:21:53 +0200 Subject: QNetworkReply internals: do not assert when aborted and reading data ...but just silently return. This is ok because at another location in QNetworkReplyImplPrivate we do the same. Reviewed-by: Thiago Task-number: 254638 --- src/network/access/qnetworkreplyimpl.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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) { -- cgit v0.12 From d0bc0a26f8ac4c2f02819c262b8aa7c3dd1cad3b Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Wed, 27 May 2009 17:25:01 +0200 Subject: Fixed: Setting a border using stylesheet for QComboBox adds an unwated frame. This was already fix. But there was still a frame if there was a stylesheet on the applicaiton. The reason is that the frame's constructor call the style for some hints. And later the combobox will query the style again for the frame hint, before the view get polished. The problem is that the StyleSheetStyle will fill the css cache with wrong information on the first call. This is not visible if there is no stylesheet as in the constructor, the widget style is still the default application stylesheet if there is no global applicaiton stylesheet. Task-number: 254589 Reviewed-by: jbache BT: --- src/gui/styles/qstylesheetstyle.cpp | 9 ++++++--- tests/auto/qcombobox/tst_qcombobox.cpp | 8 +++++--- 2 files changed, 11 insertions(+), 6 deletions(-) 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(w)) { QAbstractItemView *view = qFindChild(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/tests/auto/qcombobox/tst_qcombobox.cpp b/tests/auto/qcombobox/tst_qcombobox.cpp index 2fff6d0..816b2e8 100644 --- a/tests/auto/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/qcombobox/tst_qcombobox.cpp @@ -2171,7 +2171,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() @@ -2179,10 +2179,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()); @@ -2196,7 +2197,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(); @@ -2207,6 +2207,8 @@ void tst_QComboBox::noScrollbar() QVERIFY(!comboBox.view()->horizontalScrollBar()->isVisible()); QVERIFY(!comboBox.view()->verticalScrollBar()->isVisible()); } + + qApp->setStyleSheet(oldCss); } void tst_QComboBox::setItemDelegate() -- cgit v0.12 From 695e49acfb34ffb5b61fddbd6afff9f1281e8299 Mon Sep 17 00:00:00 2001 From: Kavindra Devi Palaraja Date: Thu, 28 May 2009 10:00:22 +0200 Subject: Doc - final screenshot and changes --- doc/src/designer-manual.qdoc | 19 ++++++++----------- .../images/rgbController-configure-connection1.png | Bin 29210 -> 23241 bytes 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/doc/src/designer-manual.qdoc b/doc/src/designer-manual.qdoc index 58d0f71..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}. @@ -499,7 +500,7 @@ correct signal and slot and click \gui OK. \endtable - \image rgbController-configureConnection1.png + \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 @@ -531,15 +532,11 @@ process for the remaining spin boxes and sliders. \endtable - 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. - - \image rgbController-preview.png - - 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. */ diff --git a/doc/src/images/rgbController-configure-connection1.png b/doc/src/images/rgbController-configure-connection1.png index 0798184..4e5dcf2 100644 Binary files a/doc/src/images/rgbController-configure-connection1.png and b/doc/src/images/rgbController-configure-connection1.png differ -- cgit v0.12 From abed949f0de16c94a146a965a13b38493cde6671 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Thu, 28 May 2009 11:29:34 +0200 Subject: BT: aboutQt dialog is too big. Make use of setInformativeText in qmessagebox for aboutQt dialog for now. Proper fix might be to add scrollable widget to the dialog, or split the about info into several pieces, though it cannot be done in a patch release. Task-number: 254464 Reviewed-by: Trenton Schulz --- src/gui/dialogs/qmessagebox.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp index fb3bcb8..b121a8f 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()) -- cgit v0.12 From b2a1e5938e1abf45d70cbfa7ec1ab0c21c01911d Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Wed, 27 May 2009 10:19:44 +0200 Subject: support for -ltcg configure switch for Windows CE builds Additionally we turn -ltcg on by default on Windows CE. See commit 56191830 for details. Reviewed-by: mauricek BT: yes --- mkspecs/common/wince.conf | 7 +++++-- tools/configure/configureapp.cpp | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) 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/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 91344c8..a6b06a6 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -1326,6 +1326,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"; -- cgit v0.12 From 8ed5931925b4e8ed8f098b5c36e1378f95d7d25a Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Thu, 28 May 2009 13:40:59 +0200 Subject: BT: Support saving forms with resources more than once in Qt Jambi When a form is loaded, Designer will set the path to the resource as an absolute path rather than the path actually stored in the file. There is code to work around this to make file paths relative when saving the file later on, but no work around for Qt Jambi. So when saving Qt Jambi forms, you would get an absolute path to the resource which contains the location of the resource file (.jar or on disk) This of course breaks the concept of resources, as the .jui file was no longer portable. The fix is to special case Qt Jambi resources and set the relative path when loading them. The patch has no effect on regular Designer. Task-number: 254621 Reviewed-by: Kai Koehne --- .../components/formeditor/qdesigner_resource.cpp | 34 ++++++++++++++-------- 1 file changed, 22 insertions(+), 12 deletions(-) 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 m_usedQrcFiles; mutable QMap m_loadedQrcFiles; @@ -168,13 +169,18 @@ QDesignerResourceBuilder::QDesignerResourceBuilder(QDesignerFormEditorInterface m_core(core), m_pixmapCache(pixmapCache), m_iconCache(iconCache), + m_lang(qt_extension(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 -- cgit v0.12 From 353afc392b843519023f27753b45b2e6fd9467ff Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Thu, 28 May 2009 13:11:29 +0200 Subject: Don't assume the tty was in K_XLATE when application started Instead, query the mode at startup, store it and restore it on exit. Reviewed-By: TrustMe Task-number: 254194 --- src/gui/embedded/qkbdtty_qws.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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); -- cgit v0.12 From 8e2d3cc2e84b6d8109c30a853ea40ff9cfa29bcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Thu, 28 May 2009 15:05:21 +0200 Subject: Minor cleanup. Reviewed-by: Kim --- tests/auto/qdatastream/tst_qdatastream.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/auto/qdatastream/tst_qdatastream.cpp b/tests/auto/qdatastream/tst_qdatastream.cpp index d7ca7bc..6a69fcc 100644 --- a/tests/auto/qdatastream/tst_qdatastream.cpp +++ b/tests/auto/qdatastream/tst_qdatastream.cpp @@ -462,7 +462,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; @@ -480,7 +480,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; @@ -533,7 +533,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; @@ -550,7 +550,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; -- cgit v0.12 From 408ca46193f70ff66d060f7b7c506a97fee945e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Thu, 28 May 2009 15:07:01 +0200 Subject: Fixed a problem with streaming QIcons containing multiple pixmaps. If pixmaps were added through QIcon::addFile() with different sizes than the sizes of the pixmaps themselves, streaming the icon in didn't work properly. Task-number: 254374 Reviewed-by: Kim --- src/gui/image/qicon.cpp | 9 ++++++--- tests/auto/qicon/tst_qicon.cpp | 43 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 3 deletions(-) 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/tests/auto/qicon/tst_qicon.cpp b/tests/auto/qicon/tst_qicon.cpp index 4e9a880..1dd223f 100644 --- a/tests/auto/qicon/tst_qicon.cpp +++ b/tests/auto/qicon/tst_qicon.cpp @@ -72,6 +72,8 @@ private slots: void svg(); void addFile(); void availableSizes(); + void streamAvailableSizes_data(); + void streamAvailableSizes(); void task184901_badCache(); void task223279_inconsistentAddFile(); @@ -540,6 +542,47 @@ void tst_QIcon::availableSizes() } } +void tst_QIcon::streamAvailableSizes_data() +{ + QTest::addColumn("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()) -- cgit v0.12 From 09ae2f274b417bab4abee8900c5ad0a8f01d65b1 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Thu, 28 May 2009 16:39:48 +0200 Subject: Scroll the dirty region with WA_PaintOnScreen When QWidget::scroll() is called on a widget with WA_PaintOnScreen, scroll the dirty region. Task-number: 254742 Reviewed-by: bnilsen --- src/gui/kernel/qwidget_x11.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp index 6202b35..e00c37c 100644 --- a/src/gui/kernel/qwidget_x11.cpp +++ b/src/gui/kernel/qwidget_x11.cpp @@ -2487,6 +2487,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) { -- cgit v0.12 From 89029a54cb3adfb54736a6aafaea9ec535407592 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 28 May 2009 14:57:20 +0200 Subject: cosmetic changes to examples/dialogs/sipdialog main function has a return value now. On the HTC this example didn't work, because this stupid thing sends two resize events, if the SIP is opened (and only one if it is closed). Reviewed-by: mauricek --- examples/dialogs/sipdialog/dialog.cpp | 13 ++++++------- examples/dialogs/sipdialog/main.cpp | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) 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] -- cgit v0.12 From 8e4300e2866fd28881853509df6ff054e13f841b Mon Sep 17 00:00:00 2001 From: Alexis Menard Date: Thu, 28 May 2009 14:46:39 +0200 Subject: Fix wrong sorting when using the QFileSystemModel with QTreeView An optimization was made to the sorting of QFileDialog to sort only the current root (meaning what the user see). This avoided slowness when the model was big with lots of leafs. The problem here is for the treeview, the root is always the same, we expands only nodes. In that case, a recursive sorting is needed to ensure that all expanded nodes are correctly sorted (and filtered). This will be slower that's why i use an hidden flag in the d pointer to deactivate the recursive sort for the QFileDialog. Task-number:254701 Reviewed-by:olivier BT:yes --- src/gui/dialogs/qfiledialog.cpp | 1 + src/gui/dialogs/qfilesystemmodel.cpp | 11 ++++ src/gui/dialogs/qfilesystemmodel_p.h | 7 ++- .../auto/qfilesystemmodel/tst_qfilesystemmodel.cpp | 65 +++++++++++++++++++++- 4 files changed, 80 insertions(+), 4 deletions(-) diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index d42775a..d4d0136 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -2108,6 +2108,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 012d3a1..03017c3 100644 --- a/src/gui/dialogs/qfilesystemmodel.cpp +++ b/src/gui/dialogs/qfilesystemmodel.cpp @@ -1083,6 +1083,7 @@ private: */ void QFileSystemModelPrivate::sortChildren(int column, const QModelIndex &parent) { + Q_Q(QFileSystemModel); QFileSystemModelPrivate::QFileSystemNode *indexNode = node(parent); if (indexNode->children.count() == 0) return; @@ -1106,6 +1107,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 61e8b4c..af4fada 100644 --- a/src/gui/dialogs/qfilesystemmodel_p.h +++ b/src/gui/dialogs/qfilesystemmodel_p.h @@ -208,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); } @@ -294,6 +295,10 @@ public: QDir::Filters filters; QHash 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 nameFilters; #endif diff --git a/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp index 59d57ce..b109d4b 100644 --- a/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp +++ b/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp @@ -43,6 +43,7 @@ #include #include "../../../src/gui/dialogs/qfilesystemmodel_p.h" #include +#include #include "../../shared/util.h" #include #include @@ -102,6 +103,7 @@ private slots: void setData_data(); void setData(); + void sort_data(); void sort(); void mkdir(); @@ -452,8 +454,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)); @@ -722,6 +728,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("fileDialogMode"); + QTest::newRow("standard usage") << false; + QTest::newRow("QFileDialog usage") << true; +} + void tst_QFileSystemModel::sort() { QTemporaryFile file; @@ -733,8 +752,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() { -- cgit v0.12 From 4a82680736ace8abb46e6fb5e085e8622f154b2d Mon Sep 17 00:00:00 2001 From: Alexis Menard Date: Thu, 28 May 2009 17:24:53 +0200 Subject: Fix a ASSERT/Crash when adding two times the same QAction to a QGW. We were adding two times in the QActionPrivate list the entry for the current QGraphicsWidget if the action was existing before. Task-number:KDE Reviewed-by:bnilsen BT:yes --- src/gui/graphicsview/qgraphicswidget.cpp | 6 ++++-- tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) 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/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 #include #include +#include #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: -- cgit v0.12 From 36ae58e7a6a888d3ae7bd162d59daada550bbfb1 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Thu, 28 May 2009 10:51:32 -0700 Subject: Warn when trying to use an unsupported format Due to incompatibilities between RGB32 in DirectFB and Qt we can't use RGB32. Reviewed-by: Donald --- src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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; } -- cgit v0.12 From 36bc35c451b6123b0e237430343a80db8a600b24 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Thu, 28 May 2009 10:57:45 -0700 Subject: Remove all force raster on RGB32 stuff Previously we allowed RGB32 but forced fallbacks for all drawing operations. It turns out blitting operations doesn't work right either so we'll rather just disallow this format altogether. See also 36ae58e7a6a888d3ae7bd162d59daada550bbfb1 Reviewed-by: Donald --- .../gfxdrivers/directfb/qdirectfbpaintdevice.h | 4 -- .../gfxdrivers/directfb/qdirectfbpaintengine.cpp | 77 +++++++++------------- .../gfxdrivers/directfb/qdirectfbpixmap.cpp | 23 +------ .../gfxdrivers/directfb/qdirectfbwindowsurface.cpp | 3 - 4 files changed, 32 insertions(+), 75 deletions(-) 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..7535090 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp @@ -81,7 +81,7 @@ template <> inline const bool* ptr(const bool &) { return 0; } template 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) @@ -263,7 +260,6 @@ private: QPen pen; bool antialiased; - bool forceRasterPrimitives; bool simplePen; @@ -408,8 +404,7 @@ void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount) d->updateClip(); const QBrush &brush = state()->brush; if (!d->dfbCanHandleClip() || d->matrixRotShear - || !d->simplePen || d->forceRasterPrimitives - || !d->isSimpleBrush(brush)) { + || !d->simplePen || !d->isSimpleBrush(brush)) { RASTERFALLBACK(DRAW_RECTS, rectCount, VOID_ARG(), VOID_ARG()); d->lock(); QRasterPaintEngine::drawRects(rects, rectCount); @@ -434,8 +429,7 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount) d->updateClip(); const QBrush &brush = state()->brush; if (!d->dfbCanHandleClip() || d->matrixRotShear - || !d->simplePen || d->forceRasterPrimitives - || !d->isSimpleBrush(brush)) { + || !d->simplePen || !d->isSimpleBrush(brush)) { RASTERFALLBACK(DRAW_RECTS, rectCount, VOID_ARG(), VOID_ARG()); d->lock(); QRasterPaintEngine::drawRects(rects, rectCount); @@ -458,7 +452,7 @@ void QDirectFBPaintEngine::drawLines(const QLine *lines, int lineCount) { Q_D(QDirectFBPaintEngine); d->updateClip(); - if (!d->simplePen || !d->dfbCanHandleClip() || d->forceRasterPrimitives) { + if (!d->simplePen || !d->dfbCanHandleClip()) { RASTERFALLBACK(DRAW_LINES, lineCount, VOID_ARG(), VOID_ARG()); d->lock(); QRasterPaintEngine::drawLines(lines, lineCount); @@ -476,7 +470,7 @@ void QDirectFBPaintEngine::drawLines(const QLineF *lines, int lineCount) { Q_D(QDirectFBPaintEngine); d->updateClip(); - if (!d->simplePen || !d->dfbCanHandleClip() || d->forceRasterPrimitives) { + if (!d->simplePen || !d->dfbCanHandleClip()) { RASTERFALLBACK(DRAW_LINES, lineCount, VOID_ARG(), VOID_ARG()); d->lock(); QRasterPaintEngine::drawLines(lines, lineCount); @@ -691,8 +685,6 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush) if (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 +712,7 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QColor &color) { Q_D(QDirectFBPaintEngine); d->updateClip(); - if (!d->dfbCanHandleClip() || d->matrixRotShear || d->forceRasterPrimitives) { + if (!d->dfbCanHandleClip() || d->matrixRotShear) { RASTERFALLBACK(FILL_RECT, rect, color, VOID_ARG()); d->lock(); QRasterPaintEngine::fillRect(rect, color); @@ -737,38 +729,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 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 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,7 +789,7 @@ 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), @@ -896,7 +882,6 @@ void QDirectFBPaintEnginePrivate::begin(QPaintDevice *device) device->devType()); } lockedMemory = 0; - forceRasterPrimitives = dfbDevice->forceRasterPrimitives(); surface->GetSize(surface, &fbWidth, &fbHeight); 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/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp index cd8796b..c7cae80 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); } -- cgit v0.12 From 2a986b86f841b798cc754fe5c5390c6fee95ce71 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Thu, 28 May 2009 13:20:48 -0700 Subject: Changes for DirectFB Reviewed-by: TrustMe --- dist/changes-4.5.2 | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) 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 * -- cgit v0.12 From f67bc13bc8e2d2c76d7d9f12abb1dbda85abe337 Mon Sep 17 00:00:00 2001 From: Kavindra Devi Palaraja Date: Fri, 29 May 2009 10:22:24 +0200 Subject: Doc - marked QFileDialog::setOption() with the since 4.5 tag. Task-number: 254549 Reviewed-by: TrustMe --- src/gui/dialogs/qfiledialog.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index d4d0136..405e71e 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -565,8 +565,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() */ -- cgit v0.12 From 7bc17b5b9ff9f2e3e04f36fec8ccbb546d9b7a31 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Fri, 29 May 2009 10:48:53 +0200 Subject: Fixed build issues with MSVC in atomic operations, we declare Interlock... functions in the namespace That can confuse the compiler because they are also declared in another header outside the namespace. Same problem in clucene where we include windows.h from within the NS. Task-number: 254214 Reviewed-by: ogoffart --- src/corelib/arch/qatomic_windows.h | 14 ++++++++++++++ tools/assistant/lib/fulltextsearch/qclucene_global_p.h | 16 ++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/corelib/arch/qatomic_windows.h b/src/corelib/arch/qatomic_windows.h index ac26b4f..5135575 100644 --- a/src/corelib/arch/qatomic_windows.h +++ b/src/corelib/arch/qatomic_windows.h @@ -220,6 +220,9 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer::fetchAndAddOrdered(qptrdiff valueTo #if !defined(Q_OS_WINCE) // 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(a), long(b)) # endif + +QT_BEGIN_NAMESPACE + inline bool QBasicAtomicInt::ref() { return _InterlockedIncrement(reinterpret_cast(&_q_value)) != 0; @@ -335,6 +341,8 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer::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); @@ -351,6 +359,8 @@ long __cdecl InterlockedExchangeAdd(long Q_ARGUMENT_TYPE * Addend, long Value); # pragma intrinsic (_InterlockedExchangeAdd) #endif +QT_BEGIN_NAMESPACE + #endif @@ -409,6 +419,8 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer::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 *); @@ -416,6 +428,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/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 #include +#if !defined(_MSC_VER) && defined(_CL_HAVE_WCHAR_H) && defined(_CL_HAVE_WCHAR_T) +# if !defined(TCHAR) +# define TCHAR wchar_t +# endif +#else +# include +#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 -#endif - namespace { TCHAR* QStringToTChar(const QString &str) { -- cgit v0.12 From e08f3e7bf3dbae6036ab89248793b98330971269 Mon Sep 17 00:00:00 2001 From: Marius Storm-Olsen Date: Fri, 29 May 2009 09:21:16 +0200 Subject: Only display the choice of license if we can find the files Task-number: 254451 Reviewed-by: eskil BT: yes --- tools/configure/configureapp.cpp | 43 +++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index a6b06a6..b9d172f 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -3483,12 +3483,15 @@ void Configure::readLicense() dictionary[ "PLATFORM NAME" ] = (QFile::exists(dictionary["QT_SOURCE_TREE"] + "/src/corelib/kernel/qfunctions_wince.h") && (dictionary.value("QMAKESPEC").startsWith("wince") || dictionary.value("XQMAKESPEC").startsWith("wince"))) ? "Qt for Windows CE" : "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; @@ -3506,28 +3509,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 @@ -3539,7 +3537,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() -- cgit v0.12 From 87acb1722d9db66aa01d238b6e4ac90dfe095ff0 Mon Sep 17 00:00:00 2001 From: Marius Storm-Olsen Date: Fri, 29 May 2009 09:25:59 +0200 Subject: New configure.exe binary Task-number: 254451 Reviewed-by: trustme BT: yes --- configure.exe | Bin 856064 -> 856064 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/configure.exe b/configure.exe index 40843b4..9da5c60 100644 Binary files a/configure.exe and b/configure.exe differ -- cgit v0.12 From 909f96a4f92ad3c9fed1dc4c3873b638421568b0 Mon Sep 17 00:00:00 2001 From: Marius Storm-Olsen Date: Fri, 29 May 2009 10:07:06 +0200 Subject: Remove the fixFilename() usage from the solution generator Only the Solution Generator was using the fixFilename() function, so under some circumstances the solution filename wouldn't find the correct vcproj file to include. This created a problem with network-chat.vcproj. Task-number: 254772 Reviewed-by: joao --- qmake/generators/win32/msvc_vcproj.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index 8901289..13bc05b 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 -- cgit v0.12 From 13815a0768236982a025833497d3e2a2f3b6acf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Fri, 29 May 2009 12:35:40 +0200 Subject: Fixed a crash in the GL 2 paintengine when drawing text. The new glyph cache may return null images for e.g. space characters. Task-number: 253468 Reviewed-by: Samuel BT: yes --- src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp | 3 +++ 1 file changed, 3 insertions(+) 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); -- cgit v0.12 From 28305c37a1874be6919c316be03fff2aaf3d94cb Mon Sep 17 00:00:00 2001 From: Alexis Menard Date: Fri, 29 May 2009 15:54:00 +0200 Subject: Remove unused variable. --- src/gui/kernel/qwidget_x11.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp index e00c37c..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) -- cgit v0.12 From 235818fdac5faf0d38f9b37c7bd5ee522935aed1 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Fri, 29 May 2009 10:11:29 +0200 Subject: Removed nested comment signature in the doc to fix a warning. Reviewed-by: David Boddie --- src/corelib/kernel/qobject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index f1a1eb5..7e5f779 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -2066,7 +2066,7 @@ void QObject::deleteLater() or - \tt{/*: ... \starslash} + \tt{\begincomment: ... \endcomment} Examples: -- cgit v0.12 From 5f1ec2a20d13b9ca9bae1b7b40692925dcd99051 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Fri, 29 May 2009 11:17:11 -0700 Subject: Don't support porter duff |= source over DirectFB and Qt treats these things rather differently so the mapping just doesn't work very well. Only use DirectFB for SourceOver stuff (which is the default mode anyway) Reviewed-by: Donald --- .../gfxdrivers/directfb/qdirectfbpaintengine.cpp | 120 +++++---------------- 1 file changed, 24 insertions(+), 96 deletions(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp index 7535090..2fb533a 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp @@ -215,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); @@ -276,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; @@ -403,7 +401,7 @@ void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount) Q_D(QDirectFBPaintEngine); d->updateClip(); const QBrush &brush = state()->brush; - if (!d->dfbCanHandleClip() || d->matrixRotShear + if (d->unsupportedCompositionMode || !d->dfbCanHandleClip() || d->matrixRotShear || !d->simplePen || !d->isSimpleBrush(brush)) { RASTERFALLBACK(DRAW_RECTS, rectCount, VOID_ARG(), VOID_ARG()); d->lock(); @@ -428,7 +426,7 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount) Q_D(QDirectFBPaintEngine); d->updateClip(); const QBrush &brush = state()->brush; - if (!d->dfbCanHandleClip() || d->matrixRotShear + if (d->unsupportedCompositionMode || !d->dfbCanHandleClip() || d->matrixRotShear || !d->simplePen || !d->isSimpleBrush(brush)) { RASTERFALLBACK(DRAW_RECTS, rectCount, VOID_ARG(), VOID_ARG()); d->lock(); @@ -452,7 +450,7 @@ void QDirectFBPaintEngine::drawLines(const QLine *lines, int lineCount) { Q_D(QDirectFBPaintEngine); d->updateClip(); - if (!d->simplePen || !d->dfbCanHandleClip()) { + if (d->unsupportedCompositionMode || !d->simplePen || !d->dfbCanHandleClip()) { RASTERFALLBACK(DRAW_LINES, lineCount, VOID_ARG(), VOID_ARG()); d->lock(); QRasterPaintEngine::drawLines(lines, lineCount); @@ -470,7 +468,7 @@ void QDirectFBPaintEngine::drawLines(const QLineF *lines, int lineCount) { Q_D(QDirectFBPaintEngine); d->updateClip(); - if (!d->simplePen || !d->dfbCanHandleClip()) { + if (d->unsupportedCompositionMode || !d->simplePen || !d->dfbCanHandleClip()) { RASTERFALLBACK(DRAW_LINES, lineCount, VOID_ARG(), VOID_ARG()); d->lock(); QRasterPaintEngine::drawLines(lines, lineCount); @@ -510,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 @@ -554,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(pixmap.pixmapData())->buffer(DSLF_READ); @@ -586,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(pixmap.pixmapData())->buffer(DSLF_READ); @@ -682,7 +681,7 @@ 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: { d->unlock(); @@ -712,7 +711,7 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QColor &color) { Q_D(QDirectFBPaintEngine); d->updateClip(); - if (!d->dfbCanHandleClip() || d->matrixRotShear) { + if (d->unsupportedCompositionMode || !d->dfbCanHandleClip() || d->matrixRotShear) { RASTERFALLBACK(FILL_RECT, rect, color, VOID_ARG()); d->lock(); QRasterPaintEngine::fillRect(rect, color); @@ -791,9 +790,9 @@ void QDirectFBPaintEngine::initImageCache(int size) QDirectFBPaintEnginePrivate::QDirectFBPaintEnginePrivate(QDirectFBPaintEngine *p) : 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; @@ -887,7 +886,7 @@ void QDirectFBPaintEnginePrivate::begin(QPaintDevice *device) setTransform(QTransform()); antialiased = false; - opacity = 255; + setOpacity(255); setCompositionMode(q->state()->compositionMode()); dirtyClip = true; setPen(q->state()->pen); @@ -915,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) @@ -994,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)); @@ -1013,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) -- cgit v0.12 From 049619000c031964cf33ef351d3df619a6815f5e Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Mon, 1 Jun 2009 13:08:32 +1000 Subject: Fixed failure of tst_Selftests::checkXML. Cherry-pick of 548da9a5434d615456a7a6efda3380b7138c6000 and some earlier changes predating public repo. Note that this test is not failing if using Qt 4.5 only. However, it fails if using Qt 4.5 selftests against Qt master testlib. We want to be able to use master testlib to run 4.5 testcases, and this change does no harm when using Qt 4.5 testlib, so backport it to 4.5 for convenience. Original change description follows: A few tests use printf, which means they interfere with the XML test logging. Blacklist them for the XML test. Note that these tests happened to pass under the old test logger implementation. That was because the test logger always printed XML tags on a single line, and the printf calls contained no special XML characters. The test logs generated were technically valid XML but contained extraneous text. --- tests/auto/selftests/expected_skip.txt | 2 +- tests/auto/selftests/skip/tst_skip.cpp | 6 +++--- tests/auto/selftests/tst_selftests.cpp | 5 +++++ 3 files changed, 9 insertions(+), 4 deletions(-) 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 -- cgit v0.12 From 0ff7b68f2e3f184d809cf6fd13ff930efa493e9f Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Mon, 1 Jun 2009 09:39:37 -0700 Subject: Improve readability of QDFBWindowSurface::scroll The batch-blits buys us nothing and this is much more readable. Reviewed-by: TrustMe --- .../gfxdrivers/directfb/qdirectfbwindowsurface.cpp | 39 ++++++++++------------ 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp index c7cae80..330eb88 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp @@ -239,31 +239,28 @@ void QDirectFBWindowSurface::setPermanentState(const QByteArray &state) #endif } -bool QDirectFBWindowSurface::scroll(const QRegion ®ion, 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 rects = region.rects(); - const int n = rects.size(); - - QVarLengthArray dfbRects(n); - QVarLengthArray 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 ®ion, 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 rects = region.rects(); + const int n = rects.size(); + for (int i=0; i