diff options
114 files changed, 3130 insertions, 866 deletions
diff --git a/dist/changes-4.8.0 b/dist/changes-4.8.0 index 5dd1d8a..08600c9 100644 --- a/dist/changes-4.8.0 +++ b/dist/changes-4.8.0 @@ -82,6 +82,7 @@ that the changes lead to a leaner API and the change applies to all platforms. - QProcessEnvironment: major optimizations, especially on Unix - Add branch prediction macros Q_LIKELY and Q_UNLIKELY - QSettings: don't assume XDG_CONFIG_HOME is latin1-encoded + - QDateTime: Fix generation of ISO8601 strings to include proper timezone information [QTBUG-18290] QtGui ----- @@ -142,6 +143,7 @@ QtNetwork - HTTP cache: do not load resources from cache that must be revalidated [QTBUG-18983] - HTTP cache: change file organization (MR-2505) - SOCKS5: write errors are propagated to the outer socket [QTBUG-18713] + - Cookies: Commas are no longer used to support multiple cookies in a single Set-Cookie header [QTBUG-21456] - QNetworkReply: errorString() returns translated messages now [QTBUG-18382] QtOpenGL @@ -184,6 +186,11 @@ QtDBus - QDBusConnection: Add methods disconnectFromPeer and connectToPeer - Make the DBus timeout configurable in QDBusAbstractInterface. +QtTest +------ + - Added -random and -seed options to tests, making the test cases within + a test execute in arbitrary order. + **************************************************************************** * Database Drivers * **************************************************************************** @@ -368,6 +375,10 @@ Qt for Windows CE - syncqt * Fix to allow $QTDIR to contain any valid pathname characters. +- qdoc3 + * Add support for documenting QML using module identifiers. + * Change the format of qdocconf files. + **************************************************************************** * Plugins * **************************************************************************** diff --git a/doc/src/declarative/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc index cecccf6..668f3b4 100644 --- a/doc/src/declarative/declarativeui.qdoc +++ b/doc/src/declarative/declarativeui.qdoc @@ -84,6 +84,7 @@ Qt applications. \list \o \l{QtWebKit QML Module} \o \l{http://doc.qt.nokia.com/qtmobility-1.1.0/qml-plugins.html}{Mobility QML Plugins} +\o \l {http://doc.qt.nokia.com/qt-components-symbian-1.1/index.html}{Qt Quick Components} \endlist \section1 Qt Quick Tools diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index 6b7a5fc..fd74ee3 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -185,6 +185,7 @@ should first be obtained and installed. \list \o \l{WebView}{QtWebKit QML Module - WebView Element} - For displaying Web contents \o \l{http://doc.qt.nokia.com/qtmobility-1.1.0/qml-plugins.html}{Mobility QML Plugins} +\o \l {http://doc.qt.nokia.com/qt-components-symbian-1.1/index.html}{Qt Quick Components} \endlist */ diff --git a/doc/src/getting-started/demos.qdoc b/doc/src/getting-started/demos.qdoc index 5c0652c..201b5c7 100644 --- a/doc/src/getting-started/demos.qdoc +++ b/doc/src/getting-started/demos.qdoc @@ -149,13 +149,6 @@ implement a small Web browser. \endlist - \section1 Multimedia - - \list - \o \l{demos/spectrum}{Spectrum Analyser} shows how the \l{QtMultimedia} - module can be used to manipulate audio as it is played. - \endlist - \section1 Phonon \list diff --git a/doc/src/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc index 2936d60..6c4e90c 100644 --- a/doc/src/getting-started/installation.qdoc +++ b/doc/src/getting-started/installation.qdoc @@ -559,20 +559,22 @@ Symbian platform, */ /*! \page install-Symbian.html -\title Installing Qt for the Symbian platform +\title Installing Qt for the Symbian Platform \ingroup installation \ingroup qtsymbian \brief How to install Qt for the Symbian platform. \previouspage Installation \tableofcontents + \l {http://qt.nokia.com/downloads}{Qt SDK} provides all the necessary tools + and libraries for developing Qt applications. However, if you want to build + Qt itself for Symbian, follow the instructions below. + Qt for the Symbian platform has some requirements that are given in more detail in the \l{Qt for the Symbian platform Requirements} document. This document describes how to install and configure Qt for -the Symbian platform from scratch. If you are using pre-built binaries, follow -the instructions given in the \l{Installing Qt for the Symbian platform from a -Binary Package} document. +the Symbian platform from scratch. \section1 Step 1: Set Up the Development Environment diff --git a/doc/src/internationalization/i18n.qdoc b/doc/src/internationalization/i18n.qdoc index 2abc286..f706623 100644 --- a/doc/src/internationalization/i18n.qdoc +++ b/doc/src/internationalization/i18n.qdoc @@ -514,7 +514,6 @@ \ingroup internationalization \previouspage Internationalization with Qt \contentspage Internationalization with Qt - \nextpage Translation Rules for Plurals \brief How to write source code in a way that makes it possible for user-visible text to be translated. \tableofcontents @@ -700,8 +699,8 @@ set using QLocale::setDefault(). (If no default locale was specified, the "C" locale is used.) - A summary of the rules used to translate strings containing plurals can be - found in the \l{Translation Rules for Plurals} document. + A summary of supported languages and the rules used to translate strings + containing plurals can be obtained by running \tt{lupdate -list-languages}. \section1 Enabling Translation @@ -717,55 +716,5 @@ \section1 Further Reading - \l{Qt Linguist Manual}, \l{Hello tr() Example}, \l{Translation Rules for Plurals} -*/ - -/*! - \page i18n-plural-rules.html - \title Translation Rules for Plurals - \ingroup internationalization - \previouspage Writing Source Code for Translation - \contentspage Internationalization with Qt - \brief A summary of the translation rules for plurals produced by Qt's i18n tools. - - The table below shows the specific rules that are produced by Qt Linguist - and \c lrelease for a selection of languages. Cells marked \e otherwise - indicate the form used when none of the other rules are appropriate for a - specific language. - - \table 80% - \header \o Language \o Rule 1 \o Rule 2 \o Rule 3 - \row \o English \o \c{n == 1} - \o \e{otherwise} \o N/A - \row \o French \o \c{n < 2} - \o \e{otherwise} \o N/A - \row \o Czech \o \c{n % 100 == 1} - \o \c{n % 100 >= 2 && n % 100 <= 4} - \o \e{otherwise} - \row \o Irish \o \c{n == 1} - \o \c{n == 2} \o \e{otherwise} - \row \o Latvian \o \c{n % 10 == 1&& n % 100 != 11} - \o \c{n != 0} \o \e{otherwise} - \row \o Lithuanian \o \c{n % 10 == 1&& n % 100 != 11} - \o \c{n % 100 != 12 && n % 10 == 2} - \o \e{otherwise} - \row \o Macedonian \o \c{n % 10 == 1} - \o \c{n % 10 == 2} \o \e{otherwise} - \row \o Polish \o \c{n == 1} - \o \c{n % 10 >= 2 && n % 10 <= 4 - && (n % 100 < 10 || n % 100 > 20)} - \o \e{otherwise} - \row \o Romanian \o \c{n == 1} - \o \c{n == 0|| (n % 100 >= 1 && n % 100 <= 20)} - \o \e{otherwise} - \row \o Russian \o \c{n % 10 == 1&& n % 100 != 11} - \o \c{n % 10 >= 2 && n % 10 <= 4 - && (n % 100 < 10 || n % 100 > 20)} - \o \e{otherwise} - \row \o Slovak \o \c{n == 1} \o \c{n >= 2 && n <= 4} - \o \e{otherwise} - \row \o Japanese \o \e{otherwise} \o N/A \o N/A - \endtable - - The rules themselves are not documented and are internal to Qt Linguist and \c lrelease. + \l{Qt Linguist Manual}, \l{Hello tr() Example} */ diff --git a/doc/src/snippets/code/doc_src_unix-signal-handlers.cpp b/doc/src/snippets/code/doc_src_unix-signal-handlers.cpp index fd5f386..a5f3ed1 100644 --- a/doc/src/snippets/code/doc_src_unix-signal-handlers.cpp +++ b/doc/src/snippets/code/doc_src_unix-signal-handlers.cpp @@ -44,7 +44,7 @@ class MyDaemon : public QObject Q_OBJECT public: - MyDaemon(QObject *parent = 0, const char *name = 0); + MyDaemon(QObject *parent = 0); ~MyDaemon(); // Unix signal handlers. @@ -67,8 +67,8 @@ class MyDaemon : public QObject //! [1] -MyDaemon::MyDaemon(QObject *parent, const char *name) - : QObject(parent,name) +MyDaemon::MyDaemon(QObject *parent) + : QObject(parent) { if (::socketpair(AF_UNIX, SOCK_STREAM, 0, sighupFd)) qFatal("Couldn't create HUP socketpair"); diff --git a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp index 11f5163..e695572 100644 --- a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp +++ b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp @@ -76,7 +76,7 @@ QString result = future.result(); //! [4] // call 'QList<QByteArray> QByteArray::split(char sep) const' in a separate thread QByteArray bytearray = "hello world"; -QFuture<QList<QByteArray> > future = QtConcurrent::run(bytearray, &QByteArray::split), ','); +QFuture<QList<QByteArray> > future = QtConcurrent::run(bytearray, &QByteArray::split, ','); ... QList<QByteArray> result = future.result(); //! [4] @@ -84,7 +84,7 @@ QList<QByteArray> result = future.result(); //! [5] // call 'void QImage::invertPixels(InvertMode mode)' in a separate thread QImage image = ...; -QFuture<void> future = QtConcurrent::run(image, &QImage::invertPixels, QImage::InvertRgba); +QFuture<void> future = QtConcurrent::run(&image, &QImage::invertPixels, QImage::InvertRgba); ... future.waitForFinished(); // At this point, the pixels in 'image' have been inverted diff --git a/doc/src/snippets/code/src_corelib_io_qsettings.cpp b/doc/src/snippets/code/src_corelib_io_qsettings.cpp index 269aa44..91c5401 100644 --- a/doc/src/snippets/code/src_corelib_io_qsettings.cpp +++ b/doc/src/snippets/code/src_corelib_io_qsettings.cpp @@ -230,7 +230,7 @@ settings.setValue("sofa", true); settings.setValue("tv", false); QStringList groups = settings.childGroups(); -// group: ["fridge"] +// groups: ["fridge"] //! [21] diff --git a/examples/dialogs/extension/finddialog.cpp b/examples/dialogs/extension/finddialog.cpp index 2ce0391..2457a5b 100644 --- a/examples/dialogs/extension/finddialog.cpp +++ b/examples/dialogs/extension/finddialog.cpp @@ -104,9 +104,11 @@ FindDialog::FindDialog(QWidget *parent) connect(backSoftKeyAction, SIGNAL(triggered()), qApp, SLOT(quit())); addAction(backSoftKeyAction); #else +//! [6] buttonBox = new QDialogButtonBox(Qt::Vertical); buttonBox->addButton(findButton, QDialogButtonBox::ActionRole); buttonBox->addButton(moreButton, QDialogButtonBox::ActionRole); +//! [6] connect(moreButton, SIGNAL(toggled(bool)), extension, SLOT(setVisible(bool))); #endif diff --git a/examples/examples.pro b/examples/examples.pro index cf12dd6..0c4c9cb 100644 --- a/examples/examples.pro +++ b/examples/examples.pro @@ -63,7 +63,7 @@ contains(QT_CONFIG, opengl): SUBDIRS += opengl contains(QT_CONFIG, openvg): SUBDIRS += openvg contains(QT_CONFIG, dbus): SUBDIRS += dbus contains(QT_CONFIG, declarative): SUBDIRS += declarative -win32: SUBDIRS += activeqt +win32:!win32-g++*: SUBDIRS += activeqt contains(QT_CONFIG, xmlpatterns):!contains(QT_CONFIG, no-gui): SUBDIRS += xmlpatterns contains(DEFINES, QT_NO_CURSOR): SUBDIRS -= mainwindows contains(QT_CONFIG, concurrent): SUBDIRS += qtconcurrent diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp index f273237..f9fdb38 100644 --- a/qmake/generators/integrity/gbuild.cpp +++ b/qmake/generators/integrity/gbuild.cpp @@ -392,19 +392,13 @@ QString GBuildMakefileGenerator::writeOne(QString filename, QString pathtoremove s += "\n"; } else if (filename.endsWith(Option::cpp_ext.first())) { QString tmpstr(filename.section("/", -1)); -// QString moctool(project->values("QMAKE_MOC").first()); QString filepath(pathtoremove); if (!project->values("QT_SOURCE_TREE").isEmpty()) { filepath.remove(project->values("QT_SOURCE_TREE").first()); filepath.remove(0, 1); } -// if (!project->values("QT_BUILD_TREE").isEmpty()) { -// moctool.remove(project->values("QT_BUILD_TREE").first()); -// moctool.remove(0, 1); -// } s += "\n\t:preexecShellSafe='${QT_BUILD_DIR}/bin/moc "; -// s += moctool; -// s += " "; + s += "-nn "; s += varGlue("DEFINES", "-D", " -D", " "); s += varGlue("INCLUDEPATH", "-I", " -I", " "); s += filepath; diff --git a/qmake/qmake.pri b/qmake/qmake.pri index 87735d6..c2fc1d5 100644 --- a/qmake/qmake.pri +++ b/qmake/qmake.pri @@ -20,6 +20,7 @@ SOURCES += project.cpp property.cpp main.cpp generators/makefile.cpp \ generators/symbian/symmake_abld.cpp \ generators/symbian/symmake_sbsv2.cpp \ generators/symbian/initprojectdeploy_symbian.cpp \ + generators/integrity/gbuild.cpp \ windows/registry.cpp \ symbian/epocroot.cpp @@ -36,6 +37,7 @@ HEADERS += project.h property.h generators/makefile.h \ generators/symbian/symmake_abld.h \ generators/symbian/symmake_sbsv2.h \ generators/symbian/initprojectdeploy_symbian.h \ + generators/integrity/gbuild.h \ windows/registry_p.h \ symbian/epocroot_p.h diff --git a/src/3rdparty/libpng/pngconf.h b/src/3rdparty/libpng/pngconf.h index 2a41a29..b02f2a0 100644 --- a/src/3rdparty/libpng/pngconf.h +++ b/src/3rdparty/libpng/pngconf.h @@ -286,6 +286,11 @@ # endif # endif +/* Avoid exporting libpng symbols from Qt DLL on Windows */ +# if defined (_MSC_VER) && defined(PNG_IMPEXP) +# undef PNG_IMPEXP +# endif + # ifndef PNG_IMPEXP # define PNG_IMPEXP # endif diff --git a/src/3rdparty/phonon/mmf/environmentalreverb.cpp b/src/3rdparty/phonon/mmf/environmentalreverb.cpp index d4f5223..cdce6eb 100644 --- a/src/3rdparty/phonon/mmf/environmentalreverb.cpp +++ b/src/3rdparty/phonon/mmf/environmentalreverb.cpp @@ -164,7 +164,7 @@ bool EnvironmentalReverb::getParameters(CMdaAudioOutputStream *stream, parameters.append(createParameter( Diffusion, tr("Diffusion (%)"), effect->Diffusion(), 0, 100)); - //: ReflectionsDelay: Amount of delay between the arrival the direct + //: ReflectionsDelay: Amount of delay between the arrival of the direct //: path from the source and the arrival of the first reflection. parameters.append(createParameter( ReflectionsDelay, tr("Reflections delay (ms)"), @@ -185,7 +185,7 @@ bool EnvironmentalReverb::getParameters(CMdaAudioOutputStream *stream, 0, effect->ReverbDelayMax())); effect->ReverbLevelRange(min, max); - //: ReverbLevel Amplitude of reverberations. This value is + //: ReverbLevel: Amplitude of reverberations. This value is //: corrected by the RoomLevel to give the final reverberation //: amplitude. parameters.append(createParameter( diff --git a/src/3rdparty/phonon/phonon/volumeslider.cpp b/src/3rdparty/phonon/phonon/volumeslider.cpp index 00970c1..5b38bae 100644 --- a/src/3rdparty/phonon/phonon/volumeslider.cpp +++ b/src/3rdparty/phonon/phonon/volumeslider.cpp @@ -42,7 +42,7 @@ VolumeSlider::VolumeSlider(QWidget *parent) setToolTip(tr("Volume: %1%").arg(100)); #endif #ifndef QT_NO_WHATSTHIS - setWhatsThis(tr("Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1%").arg(100)); + setWhatsThis(tr("Use this slider to adjust the volume. The leftmost position is 0%. The rightmost is %1%").arg(100)); #endif connect(&d->slider, SIGNAL(valueChanged(int)), SLOT(_k_sliderChanged(int))); @@ -60,7 +60,7 @@ VolumeSlider::VolumeSlider(AudioOutput *output, QWidget *parent) setToolTip(tr("Volume: %1%").arg(100)); #endif #ifndef QT_NO_WHATSTHIS - setWhatsThis(tr("Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1%").arg(100)); + setWhatsThis(tr("Use this slider to adjust the volume. The leftmost position is 0%. The rightmost is %1%").arg(100)); #endif connect(&d->slider, SIGNAL(valueChanged(int)), SLOT(_k_sliderChanged(int))); @@ -114,7 +114,7 @@ void VolumeSlider::setMaximumVolume(qreal volume) int max = static_cast<int>(volume * 100); k_ptr->slider.setMaximum(max); #ifndef QT_NO_WHATSTHIS - setWhatsThis(tr("Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1%") + setWhatsThis(tr("Use this slider to adjust the volume. The leftmost position is 0%. The rightmost is %1%") .arg(max)); #endif } diff --git a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp index 5e0a2e6..fc9bd04 100644 --- a/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp +++ b/src/3rdparty/webkit/Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp @@ -918,7 +918,7 @@ void FrameLoaderClientQt::committedLoad(WebCore::DocumentLoader* loader, const c WebCore::ResourceError FrameLoaderClientQt::cancelledError(const WebCore::ResourceRequest& request) { ResourceError error = ResourceError("QtNetwork", QNetworkReply::OperationCanceledError, request.url().prettyURL(), - QCoreApplication::translate("QWebFrame", "Request cancelled", 0, QCoreApplication::UnicodeUTF8)); + QCoreApplication::translate("QWebFrame", "Request canceled", 0, QCoreApplication::UnicodeUTF8)); error.setIsCancellation(true); return error; } diff --git a/src/corelib/global/qconfig-minimal.h b/src/corelib/global/qconfig-minimal.h index ace1eea..1035631 100644 --- a/src/corelib/global/qconfig-minimal.h +++ b/src/corelib/global/qconfig-minimal.h @@ -324,9 +324,6 @@ #ifndef QT_NO_QWSEMBEDWIDGET # define QT_NO_QWSEMBEDWIDGET #endif -#ifndef QT_NO_QWS_ALPHA_CURSOR -# define QT_NO_QWS_ALPHA_CURSOR -#endif #ifndef QT_NO_QWS_CURSOR # define QT_NO_QWS_CURSOR #endif diff --git a/src/corelib/global/qconfig-nacl.h b/src/corelib/global/qconfig-nacl.h index 18ae261..5aefdfe 100644 --- a/src/corelib/global/qconfig-nacl.h +++ b/src/corelib/global/qconfig-nacl.h @@ -247,9 +247,6 @@ #ifndef QT_NO_QWSEMBEDWIDGET # define QT_NO_QWSEMBEDWIDGET #endif -#ifndef QT_NO_QWS_ALPHA_CURSOR -# define QT_NO_QWS_ALPHA_CURSOR -#endif #ifndef QT_NO_QWS_CURSOR # define QT_NO_QWS_CURSOR #endif diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h index e0b8a8f..64d5f08 100644 --- a/src/corelib/global/qfeatures.h +++ b/src/corelib/global/qfeatures.h @@ -178,9 +178,6 @@ // QWSEmbedWidget //#define QT_NO_QWSEMBEDWIDGET -// Alpha Cursor -//#define QT_NO_QWS_ALPHA_CURSOR - // Decoration //#define QT_NO_QWS_DECORATION_DEFAULT diff --git a/src/corelib/global/qfeatures.txt b/src/corelib/global/qfeatures.txt index 6b861d4..dea05e0 100644 --- a/src/corelib/global/qfeatures.txt +++ b/src/corelib/global/qfeatures.txt @@ -1268,13 +1268,6 @@ Requires: CURSOR Name: Cursor SeeAlso: ??? -Feature: QWS_ALPHA_CURSOR -Description: Supports alpha-blended cursors. -Section: Qt for Embedded Linux -Requires: -Name: Alpha Cursor -SeeAlso: ??? - Feature: QWS_MANAGER Description: Supports the window manager. Section: Qt for Embedded Linux diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp index 3296bab..28a7267 100644 --- a/src/corelib/io/qfilesystemengine_win.cpp +++ b/src/corelib/io/qfilesystemengine_win.cpp @@ -1094,7 +1094,6 @@ QFileSystemEntry QFileSystemEngine::currentPath() if (ret.length() >= 2 && ret[1] == QLatin1Char(':')) ret[0] = ret.at(0).toUpper(); // Force uppercase drive letters. #else - Q_UNUSED(fileName); //TODO - a race condition exists when using currentPath / setCurrentPath from multiple threads if (qfsPrivateCurrentDir.isEmpty()) qfsPrivateCurrentDir = QCoreApplication::applicationDirPath(); diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index e900663..d70811c 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -2281,7 +2281,7 @@ QT_END_INCLUDE_NAMESPACE However, note that repeated calls to this function will recreate the list of environment variables, which is a non-trivial operation. - \note For new code, it is recommended to use QProcessEvironment::systemEnvironment() + \note For new code, it is recommended to use QProcessEnvironment::systemEnvironment() \sa QProcessEnvironment::systemEnvironment(), environment(), setEnvironment() */ diff --git a/src/corelib/kernel/qcoreevent.h b/src/corelib/kernel/qcoreevent.h index 281367b..f1a0407 100644 --- a/src/corelib/kernel/qcoreevent.h +++ b/src/corelib/kernel/qcoreevent.h @@ -209,8 +209,8 @@ public: // last event id used = 132 #ifdef QT_KEYPAD_NAVIGATION - EnterEditFocus = 150, // enter edit mode in keypad navigation - LeaveEditFocus = 151, // enter edit mode in keypad navigation + EnterEditFocus = 150, // enter edit mode in keypad navigation (Defined only with QT_KEYPAD_NAVIGATION) + LeaveEditFocus = 151, // leave edit mode in keypad navigation (Defined only with QT_KEYPAD_NAVIGATION) #endif AcceptDropsChange = 152, diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 67dbadb..5d6e4d7 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -3002,7 +3002,7 @@ bool QObject::disconnect(const QObject *sender, const QMetaMethod &signal, } const void *cbdata[] = { sender, signal.mobj ? signalSignature.constData() : 0, receiver, method.mobj ? methodSignature.constData() : 0 }; - if (QInternal::activateCallbacks(QInternal::ConnectCallback, (void **) cbdata)) + if (QInternal::activateCallbacks(QInternal::DisconnectCallback, (void **) cbdata)) return true; } diff --git a/src/corelib/statemachine/qfinalstate.cpp b/src/corelib/statemachine/qfinalstate.cpp index c583c32..7d65984 100644 --- a/src/corelib/statemachine/qfinalstate.cpp +++ b/src/corelib/statemachine/qfinalstate.cpp @@ -80,7 +80,7 @@ QT_BEGIN_NAMESPACE machine.start(); \endcode - \sa QStateMachine::finished(), QState::finished() + \sa QState::finished() */ class QFinalStatePrivate : public QAbstractStatePrivate diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp index 9db7d1a..b296129 100644 --- a/src/corelib/tools/qchar.cpp +++ b/src/corelib/tools/qchar.cpp @@ -1481,7 +1481,8 @@ static void decomposeHelper(QString *str, bool canonical, QChar::UnicodeVersion ucs4 = QChar::surrogateToUcs4(high, ucs4); } } - if (QChar::unicodeVersion(ucs4) > version) + QChar::UnicodeVersion v = QChar::unicodeVersion(ucs4); + if (v == QChar::Unicode_Unassigned || v > version) continue; int length; int tag; @@ -1541,7 +1542,7 @@ static ushort ligatureHelper(ushort u1, ushort u2) return 0; } -static void composeHelper(QString *str, int from) +static void composeHelper(QString *str, QChar::UnicodeVersion version, int from) { QString &s = *str; @@ -1561,7 +1562,14 @@ static void composeHelper(QString *str, int from) ++pos; } } - int combining = QChar::combiningClass(uc); + const QUnicodeTables::Properties *p = qGetProp(uc); + if (p->unicodeVersion == QChar::Unicode_Unassigned || p->unicodeVersion > version) { + starter = -1; // to prevent starter == pos - 1 + lastCombining = 0; + ++pos; + continue; + } + int combining = p->combiningClass; if (starter == pos - 1 || combining > lastCombining) { // allowed to form ligature with S QChar ligature = ligatureHelper(s.at(starter).unicode(), uc); @@ -1608,7 +1616,7 @@ static void canonicalOrderHelper(QString *str, QChar::UnicodeVersion version, in ushort c2 = 0; { const QUnicodeTables::Properties *p = qGetProp(u2); - if ((QChar::UnicodeVersion)p->unicodeVersion <= version) + if (p->unicodeVersion != QChar::Unicode_Unassigned && p->unicodeVersion <= version) c2 = p->combiningClass; } if (c2 == 0) { @@ -1619,7 +1627,7 @@ static void canonicalOrderHelper(QString *str, QChar::UnicodeVersion version, in ushort c1 = 0; { const QUnicodeTables::Properties *p = qGetProp(u1); - if ((QChar::UnicodeVersion)p->unicodeVersion <= version) + if (p->unicodeVersion != QChar::Unicode_Unassigned && p->unicodeVersion <= version) c1 = p->combiningClass; } diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index f5efe55..934b6ad 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -6367,7 +6367,7 @@ void qt_string_normalize(QString *data, QString::NormalizationForm mode, QChar:: if (mode == QString::NormalizationForm_D || mode == QString::NormalizationForm_KD) return; - composeHelper(data, from); + composeHelper(data, version, from); } diff --git a/src/declarative/debugger/debugger.pri b/src/declarative/debugger/debugger.pri index 3134c79..c81968e 100644 --- a/src/declarative/debugger/debugger.pri +++ b/src/declarative/debugger/debugger.pri @@ -5,13 +5,14 @@ SOURCES += \ $$PWD/qpacketprotocol.cpp \ $$PWD/qdeclarativedebugservice.cpp \ $$PWD/qdeclarativedebugclient.cpp \ - $$PWD/qdeclarativedebug.cpp \ + $$PWD/qdeclarativeenginedebug.cpp \ $$PWD/qdeclarativedebugtrace.cpp \ $$PWD/qdeclarativedebughelper.cpp \ $$PWD/qdeclarativedebugserver.cpp \ $$PWD/qdeclarativeinspectorservice.cpp \ $$PWD/qjsdebuggeragent.cpp \ - $$PWD/qjsdebugservice.cpp + $$PWD/qjsdebugservice.cpp \ + $$PWD/qdeclarativeenginedebugservice.cpp HEADERS += \ $$PWD/qdeclarativedebuggerstatus_p.h \ @@ -19,7 +20,7 @@ HEADERS += \ $$PWD/qdeclarativedebugservice_p.h \ $$PWD/qdeclarativedebugservice_p_p.h \ $$PWD/qdeclarativedebugclient_p.h \ - $$PWD/qdeclarativedebug_p.h \ + $$PWD/qdeclarativeenginedebug_p.h \ $$PWD/qdeclarativedebugtrace_p.h \ $$PWD/qdeclarativedebughelper_p.h \ $$PWD/qdeclarativedebugserver_p.h \ @@ -27,4 +28,6 @@ HEADERS += \ $$PWD/qdeclarativeinspectorservice_p.h \ $$PWD/qdeclarativeinspectorinterface_p.h \ $$PWD/qjsdebuggeragent_p.h \ - $$PWD/qjsdebugservice_p.h + $$PWD/qjsdebugservice_p.h \ + $$PWD/qdeclarativedebug.h \ + $$PWD/qdeclarativeenginedebugservice_p.h diff --git a/src/declarative/debugger/qdeclarativedebug.h b/src/declarative/debugger/qdeclarativedebug.h new file mode 100644 index 0000000..b7930b2 --- /dev/null +++ b/src/declarative/debugger/qdeclarativedebug.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDECLARATIVEDEBUG_H +#define QDECLARATIVEDEBUG_H + +#include <QtCore/qglobal.h> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +struct Q_DECLARATIVE_EXPORT QDeclarativeDebuggingEnabler +{ + QDeclarativeDebuggingEnabler(); +}; + +// Execute code in constructor before first QDeclarativeEngine is instantiated +#if defined(QT_DECLARATIVE_DEBUG) +static QDeclarativeDebuggingEnabler qmlEnableDebuggingHelper; +#endif + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QDECLARATIVEDEBUG_H diff --git a/src/declarative/debugger/qdeclarativedebugserver.cpp b/src/declarative/debugger/qdeclarativedebugserver.cpp index 12691b2..3e0c326 100644 --- a/src/declarative/debugger/qdeclarativedebugserver.cpp +++ b/src/declarative/debugger/qdeclarativedebugserver.cpp @@ -91,6 +91,7 @@ public: QStringList clientPlugins; bool gotHello; QString waitingForMsgFromService; + bool waitingForMsgSucceeded; private: // private slot @@ -100,7 +101,8 @@ private: QDeclarativeDebugServerPrivate::QDeclarativeDebugServerPrivate() : connection(0), - gotHello(false) + gotHello(false), + waitingForMsgSucceeded(false) { } @@ -315,7 +317,7 @@ void QDeclarativeDebugServer::receiveMessage(const QByteArray &message) if (d->waitingForMsgFromService == name) { // deliver directly so that it is delivered before waitForMessage is returning. d->_q_deliverMessage(name, message); - d->waitingForMsgFromService.clear(); + d->waitingForMsgSucceeded = true; } else { // deliver message in next event loop run. // Fixes the case that the service does start it's own event loop ..., @@ -409,7 +411,9 @@ bool QDeclarativeDebugServer::waitForMessage(QDeclarativeDebugService *service) do { d->connection->waitForMessage(); - } while (!d->waitingForMsgFromService.isEmpty()); + } while (!d->waitingForMsgSucceeded); + d->waitingForMsgSucceeded = false; + d->waitingForMsgFromService.clear(); return true; } diff --git a/src/declarative/debugger/qdeclarativedebug.cpp b/src/declarative/debugger/qdeclarativeenginedebug.cpp index 620ee1d..85ce710 100644 --- a/src/declarative/debugger/qdeclarativedebug.cpp +++ b/src/declarative/debugger/qdeclarativeenginedebug.cpp @@ -39,11 +39,11 @@ ** ****************************************************************************/ -#include "private/qdeclarativedebug_p.h" +#include "private/qdeclarativeenginedebug_p.h" #include "private/qdeclarativedebugclient_p.h" -#include <qdeclarativeenginedebug_p.h> +#include <qdeclarativeenginedebugservice_p.h> #include <private/qobject_p.h> @@ -207,7 +207,7 @@ void QDeclarativeEngineDebugPrivate::remove(QDeclarativeEngineDebug *c, QDeclara void QDeclarativeEngineDebugPrivate::decode(QDataStream &ds, QDeclarativeDebugObjectReference &o, bool simple) { - QDeclarativeEngineDebugServer::QDeclarativeObjectData data; + QDeclarativeEngineDebugService::QDeclarativeObjectData data; ds >> data; o.m_debugId = data.objectId; o.m_class = data.objectType; @@ -234,7 +234,7 @@ void QDeclarativeEngineDebugPrivate::decode(QDataStream &ds, QDeclarativeDebugOb ds >> propCount; for (int ii = 0; ii < propCount; ++ii) { - QDeclarativeEngineDebugServer::QDeclarativeObjectProperty data; + QDeclarativeEngineDebugService::QDeclarativeObjectProperty data; ds >> data; QDeclarativeDebugPropertyReference prop; prop.m_objectDebugId = o.m_debugId; @@ -243,21 +243,21 @@ void QDeclarativeEngineDebugPrivate::decode(QDataStream &ds, QDeclarativeDebugOb prop.m_hasNotifySignal = data.hasNotifySignal; prop.m_valueTypeName = data.valueTypeName; switch (data.type) { - case QDeclarativeEngineDebugServer::QDeclarativeObjectProperty::Basic: - case QDeclarativeEngineDebugServer::QDeclarativeObjectProperty::List: - case QDeclarativeEngineDebugServer::QDeclarativeObjectProperty::SignalProperty: + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Basic: + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::List: + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::SignalProperty: { prop.m_value = data.value; break; } - case QDeclarativeEngineDebugServer::QDeclarativeObjectProperty::Object: + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Object: { QDeclarativeDebugObjectReference obj; obj.m_debugId = prop.m_value.toInt(); prop.m_value = QVariant::fromValue(obj); break; } - case QDeclarativeEngineDebugServer::QDeclarativeObjectProperty::Unknown: + case QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Unknown: break; } o.m_properties << prop; diff --git a/src/declarative/debugger/qdeclarativedebug_p.h b/src/declarative/debugger/qdeclarativeenginedebug_p.h index f822637..9b70e1c 100644 --- a/src/declarative/debugger/qdeclarativedebug_p.h +++ b/src/declarative/debugger/qdeclarativeenginedebug_p.h @@ -38,8 +38,8 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#ifndef QDECLARATIVEDEBUG_H -#define QDECLARATIVEDEBUG_H +#ifndef QDECLARATIVEENGINEDEBUG_H +#define QDECLARATIVEENGINEDEBUG_H #include <QtCore/qobject.h> #include <QtCore/qurl.h> @@ -384,4 +384,4 @@ Q_DECLARE_METATYPE(QDeclarativeDebugPropertyReference) QT_END_HEADER -#endif // QDECLARATIVEDEBUG_H +#endif // QDECLARATIVEENGINEDEBUG_H diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/debugger/qdeclarativeenginedebugservice.cpp index 8707a7f..7683733 100644 --- a/src/declarative/qml/qdeclarativeenginedebug.cpp +++ b/src/declarative/debugger/qdeclarativeenginedebugservice.cpp @@ -39,7 +39,7 @@ ** ****************************************************************************/ -#include "private/qdeclarativeenginedebug_p.h" +#include "private/qdeclarativeenginedebugservice_p.h" #include "private/qdeclarativeboundsignal_p.h" #include "qdeclarativeengine.h" @@ -59,14 +59,14 @@ QT_BEGIN_NAMESPACE -Q_GLOBAL_STATIC(QDeclarativeEngineDebugServer, qmlEngineDebugServer); +Q_GLOBAL_STATIC(QDeclarativeEngineDebugService, qmlEngineDebugService); -QDeclarativeEngineDebugServer *QDeclarativeEngineDebugServer::instance() +QDeclarativeEngineDebugService *QDeclarativeEngineDebugService::instance() { - return qmlEngineDebugServer(); + return qmlEngineDebugService(); } -QDeclarativeEngineDebugServer::QDeclarativeEngineDebugServer(QObject *parent) +QDeclarativeEngineDebugService::QDeclarativeEngineDebugService(QObject *parent) : QDeclarativeDebugService(QLatin1String("QDeclarativeEngine"), parent), m_watch(new QDeclarativeWatcher(this)) { @@ -75,7 +75,7 @@ QDeclarativeEngineDebugServer::QDeclarativeEngineDebugServer(QObject *parent) } QDataStream &operator<<(QDataStream &ds, - const QDeclarativeEngineDebugServer::QDeclarativeObjectData &data) + const QDeclarativeEngineDebugService::QDeclarativeObjectData &data) { ds << data.url << data.lineNumber << data.columnNumber << data.idString << data.objectName << data.objectType << data.objectId << data.contextId; @@ -83,7 +83,7 @@ QDataStream &operator<<(QDataStream &ds, } QDataStream &operator>>(QDataStream &ds, - QDeclarativeEngineDebugServer::QDeclarativeObjectData &data) + QDeclarativeEngineDebugService::QDeclarativeObjectData &data) { ds >> data.url >> data.lineNumber >> data.columnNumber >> data.idString >> data.objectName >> data.objectType >> data.objectId >> data.contextId; @@ -91,7 +91,7 @@ QDataStream &operator>>(QDataStream &ds, } QDataStream &operator<<(QDataStream &ds, - const QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &data) + const QDeclarativeEngineDebugService::QDeclarativeObjectProperty &data) { ds << (int)data.type << data.name << data.value << data.valueTypeName << data.binding << data.hasNotifySignal; @@ -99,12 +99,12 @@ QDataStream &operator<<(QDataStream &ds, } QDataStream &operator>>(QDataStream &ds, - QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &data) + QDeclarativeEngineDebugService::QDeclarativeObjectProperty &data) { int type; ds >> type >> data.name >> data.value >> data.valueTypeName >> data.binding >> data.hasNotifySignal; - data.type = (QDeclarativeEngineDebugServer::QDeclarativeObjectProperty::Type)type; + data.type = (QDeclarativeEngineDebugService::QDeclarativeObjectProperty::Type)type; return ds; } @@ -131,8 +131,8 @@ static bool hasValidSignal(QObject *object, const QString &propertyName) return true; } -QDeclarativeEngineDebugServer::QDeclarativeObjectProperty -QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx) +QDeclarativeEngineDebugService::QDeclarativeObjectProperty +QDeclarativeEngineDebugService::propertyData(QObject *obj, int propIdx) { QDeclarativeObjectProperty rv; @@ -164,7 +164,7 @@ QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx) return rv; } -QVariant QDeclarativeEngineDebugServer::valueContents(const QVariant &value) const +QVariant QDeclarativeEngineDebugService::valueContents(const QVariant &value) const { int userType = value.userType(); @@ -193,7 +193,7 @@ QVariant QDeclarativeEngineDebugServer::valueContents(const QVariant &value) con return QLatin1String("<unknown value>"); } -void QDeclarativeEngineDebugServer::buildObjectDump(QDataStream &message, +void QDeclarativeEngineDebugService::buildObjectDump(QDataStream &message, QObject *object, bool recur, bool dumpProperties) { message << objectData(object); @@ -264,7 +264,7 @@ void QDeclarativeEngineDebugServer::buildObjectDump(QDataStream &message, message << fakeProperties[ii]; } -void QDeclarativeEngineDebugServer::prepareDeferredObjects(QObject *obj) +void QDeclarativeEngineDebugService::prepareDeferredObjects(QObject *obj) { qmlExecuteDeferred(obj); @@ -276,7 +276,7 @@ void QDeclarativeEngineDebugServer::prepareDeferredObjects(QObject *obj) } -void QDeclarativeEngineDebugServer::buildObjectList(QDataStream &message, QDeclarativeContext *ctxt) +void QDeclarativeEngineDebugService::buildObjectList(QDataStream &message, QDeclarativeContext *ctxt) { QDeclarativeContextData *p = QDeclarativeContextData::get(ctxt); @@ -316,7 +316,7 @@ void QDeclarativeEngineDebugServer::buildObjectList(QDataStream &message, QDecla } } -void QDeclarativeEngineDebugServer::buildStatesList(QDeclarativeContext *ctxt, bool cleanList=false) +void QDeclarativeEngineDebugService::buildStatesList(QDeclarativeContext *ctxt, bool cleanList=false) { if (cleanList) m_allStates.clear(); @@ -333,7 +333,7 @@ void QDeclarativeEngineDebugServer::buildStatesList(QDeclarativeContext *ctxt, b } } -void QDeclarativeEngineDebugServer::buildStatesList(QObject *obj) +void QDeclarativeEngineDebugService::buildStatesList(QObject *obj) { if (QDeclarativeState *state = qobject_cast<QDeclarativeState *>(obj)) { m_allStates.append(state); @@ -345,8 +345,8 @@ void QDeclarativeEngineDebugServer::buildStatesList(QObject *obj) } } -QDeclarativeEngineDebugServer::QDeclarativeObjectData -QDeclarativeEngineDebugServer::objectData(QObject *object) +QDeclarativeEngineDebugService::QDeclarativeObjectData +QDeclarativeEngineDebugService::objectData(QObject *object) { QDeclarativeData *ddata = QDeclarativeData::get(object); QDeclarativeObjectData rv; @@ -385,7 +385,7 @@ QDeclarativeEngineDebugServer::objectData(QObject *object) return rv; } -void QDeclarativeEngineDebugServer::messageReceived(const QByteArray &message) +void QDeclarativeEngineDebugService::messageReceived(const QByteArray &message) { QDataStream ds(message); @@ -545,7 +545,7 @@ void QDeclarativeEngineDebugServer::messageReceived(const QByteArray &message) } } -void QDeclarativeEngineDebugServer::setBinding(int objectId, +void QDeclarativeEngineDebugService::setBinding(int objectId, const QString &propertyName, const QVariant &expression, bool isLiteralValue, @@ -600,7 +600,7 @@ void QDeclarativeEngineDebugServer::setBinding(int objectId, oldBinding->destroy(); binding->update(); } else { - qWarning() << "QDeclarativeEngineDebugServer::setBinding: unable to set property" << propertyName << "on object" << object; + qWarning() << "QDeclarativeEngineDebugService::setBinding: unable to set property" << propertyName << "on object" << object; } } @@ -613,13 +613,13 @@ void QDeclarativeEngineDebugServer::setBinding(int objectId, propertyChanges->changeExpression(propertyName, expression.toString()); } } else { - qWarning() << "QDeclarativeEngineDebugServer::setBinding: unable to set property" << propertyName << "on object" << object; + qWarning() << "QDeclarativeEngineDebugService::setBinding: unable to set property" << propertyName << "on object" << object; } } } } -void QDeclarativeEngineDebugServer::resetBinding(int objectId, const QString &propertyName) +void QDeclarativeEngineDebugService::resetBinding(int objectId, const QString &propertyName) { QObject *object = objectForId(objectId); QDeclarativeContext *context = qmlContext(object); @@ -664,7 +664,7 @@ void QDeclarativeEngineDebugServer::resetBinding(int objectId, const QString &pr } } -void QDeclarativeEngineDebugServer::setMethodBody(int objectId, const QString &method, const QString &body) +void QDeclarativeEngineDebugService::setMethodBody(int objectId, const QString &method, const QString &body) { QObject *object = objectForId(objectId); QDeclarativeContext *context = qmlContext(object); @@ -703,7 +703,7 @@ void QDeclarativeEngineDebugServer::setMethodBody(int objectId, const QString &m vmeMetaObject->setVmeMethod(prop->coreIndex, QDeclarativeExpressionPrivate::evalInObjectScope(contextData, object, jsfunction, contextData->url.toString(), lineNumber, 0)); } -void QDeclarativeEngineDebugServer::propertyChanged(int id, int objectId, const QMetaProperty &property, const QVariant &value) +void QDeclarativeEngineDebugService::propertyChanged(int id, int objectId, const QMetaProperty &property, const QVariant &value) { QByteArray reply; QDataStream rs(&reply, QIODevice::WriteOnly); @@ -713,7 +713,7 @@ void QDeclarativeEngineDebugServer::propertyChanged(int id, int objectId, const sendMessage(reply); } -void QDeclarativeEngineDebugServer::addEngine(QDeclarativeEngine *engine) +void QDeclarativeEngineDebugService::addEngine(QDeclarativeEngine *engine) { Q_ASSERT(engine); Q_ASSERT(!m_engines.contains(engine)); @@ -721,7 +721,7 @@ void QDeclarativeEngineDebugServer::addEngine(QDeclarativeEngine *engine) m_engines.append(engine); } -void QDeclarativeEngineDebugServer::remEngine(QDeclarativeEngine *engine) +void QDeclarativeEngineDebugService::remEngine(QDeclarativeEngine *engine) { Q_ASSERT(engine); Q_ASSERT(m_engines.contains(engine)); @@ -729,7 +729,7 @@ void QDeclarativeEngineDebugServer::remEngine(QDeclarativeEngine *engine) m_engines.removeAll(engine); } -void QDeclarativeEngineDebugServer::objectCreated(QDeclarativeEngine *engine, QObject *object) +void QDeclarativeEngineDebugService::objectCreated(QDeclarativeEngine *engine, QObject *object) { Q_ASSERT(engine); Q_ASSERT(m_engines.contains(engine)); diff --git a/src/declarative/qml/qdeclarativeenginedebug_p.h b/src/declarative/debugger/qdeclarativeenginedebugservice_p.h index 804a043..3674b83 100644 --- a/src/declarative/qml/qdeclarativeenginedebug_p.h +++ b/src/declarative/debugger/qdeclarativeenginedebugservice_p.h @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#ifndef QDECLARATIVEENGINEDEBUG_P_H -#define QDECLARATIVEENGINEDEBUG_P_H +#ifndef QDECLARATIVEENGINEDEBUGSERVICE_P_H +#define QDECLARATIVEENGINEDEBUGSERVICE_P_H // // W A R N I N G @@ -67,11 +67,11 @@ class QDeclarativeWatcher; class QDataStream; class QDeclarativeState; -class QDeclarativeEngineDebugServer : public QDeclarativeDebugService +class QDeclarativeEngineDebugService : public QDeclarativeDebugService { Q_OBJECT public: - QDeclarativeEngineDebugServer(QObject * = 0); + QDeclarativeEngineDebugService(QObject * = 0); struct QDeclarativeObjectData { QUrl url; @@ -98,7 +98,7 @@ public: void remEngine(QDeclarativeEngine *); void objectCreated(QDeclarativeEngine *, QObject *); - static QDeclarativeEngineDebugServer *instance(); + static QDeclarativeEngineDebugService *instance(); protected: virtual void messageReceived(const QByteArray &); @@ -123,12 +123,12 @@ private: QDeclarativeWatcher *m_watch; QList<QWeakPointer<QDeclarativeState> > m_allStates; }; -Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator<<(QDataStream &, const QDeclarativeEngineDebugServer::QDeclarativeObjectData &); -Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator>>(QDataStream &, QDeclarativeEngineDebugServer::QDeclarativeObjectData &); -Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator<<(QDataStream &, const QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &); -Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator>>(QDataStream &, QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &); +Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator<<(QDataStream &, const QDeclarativeEngineDebugService::QDeclarativeObjectData &); +Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator>>(QDataStream &, QDeclarativeEngineDebugService::QDeclarativeObjectData &); +Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator<<(QDataStream &, const QDeclarativeEngineDebugService::QDeclarativeObjectProperty &); +Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator>>(QDataStream &, QDeclarativeEngineDebugService::QDeclarativeObjectProperty &); QT_END_NAMESPACE -#endif // QDECLARATIVEENGINEDEBUG_P_H +#endif // QDECLARATIVEENGINEDEBUGSERVICE_P_H diff --git a/src/declarative/qml/qdeclarative.h b/src/declarative/qml/qdeclarative.h index 5e8d0f4..399c207 100644 --- a/src/declarative/qml/qdeclarative.h +++ b/src/declarative/qml/qdeclarative.h @@ -405,17 +405,6 @@ QObject *qmlAttachedPropertiesObject(const QObject *obj, bool create = true) return qmlAttachedPropertiesObject(&idx, obj, &T::staticMetaObject, create); } -// Enable debugging before any QDeclarativeEngine is created -struct Q_DECLARATIVE_EXPORT QDeclarativeDebuggingEnabler -{ - QDeclarativeDebuggingEnabler(); -}; - -// Execute code in constructor before first QDeclarativeEngine is instantiated -#if defined(QT_DECLARATIVE_DEBUG) -static QDeclarativeDebuggingEnabler qmlEnableDebuggingHelper; -#endif - QT_END_NAMESPACE QML_DECLARE_TYPE(QObject) diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index d9f291b..f423f50 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -53,7 +53,7 @@ #include "private/qdeclarativeglobal_p.h" #include "private/qdeclarativescriptparser_p.h" #include "private/qdeclarativedebugtrace_p.h" -#include "private/qdeclarativeenginedebug_p.h" +#include "private/qdeclarativeenginedebugservice_p.h" #include <QtScript/qscriptvalueiterator.h> #include <QStack> @@ -896,7 +896,7 @@ QObject * QDeclarativeComponentPrivate::begin(QDeclarativeContextData *parentCon if (enginePriv->isDebugging && rv) { if (!parentContext->isInternal) parentContext->asQDeclarativeContextPrivate()->instances.append(rv); - QDeclarativeEngineDebugServer::instance()->objectCreated(parentContext->engine, rv); + QDeclarativeEngineDebugService::instance()->objectCreated(parentContext->engine, rv); } return rv; diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 34014f7..1417b78 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -51,7 +51,7 @@ #include "qdeclarativecomponent.h" #include "private/qdeclarativebinding_p_p.h" #include "private/qdeclarativevme_p.h" -#include "private/qdeclarativeenginedebug_p.h" +#include "private/qdeclarativeenginedebugservice_p.h" #include "private/qdeclarativestringconverters_p.h" #include "private/qdeclarativexmlhttprequest_p.h" #include "private/qdeclarativesqldatabase_p.h" @@ -581,9 +581,9 @@ void QDeclarativeEnginePrivate::init() scriptEngine.globalObject().property(QLatin1String("Qt")).setProperty(QLatin1String("application"), applicationObject); if (QCoreApplication::instance()->thread() == q->thread() && - QDeclarativeEngineDebugServer::isDebuggingEnabled()) { + QDeclarativeEngineDebugService::isDebuggingEnabled()) { isDebugging = true; - QDeclarativeEngineDebugServer::instance()->addEngine(q); + QDeclarativeEngineDebugService::instance()->addEngine(q); QJSDebugService::instance()->addEngine(q); } } @@ -648,7 +648,7 @@ QDeclarativeEngine::~QDeclarativeEngine() { Q_D(QDeclarativeEngine); if (d->isDebugging) { - QDeclarativeEngineDebugServer::instance()->remEngine(this); + QDeclarativeEngineDebugService::instance()->remEngine(this); QJSDebugService::instance()->removeEngine(this); } } diff --git a/src/declarative/qml/qdeclarativeengine.h b/src/declarative/qml/qdeclarativeengine.h index 61ab2b2..4d6887f 100644 --- a/src/declarative/qml/qdeclarativeengine.h +++ b/src/declarative/qml/qdeclarativeengine.h @@ -47,6 +47,7 @@ #include <QtCore/qmap.h> #include <QtScript/qscriptvalue.h> #include <QtDeclarative/qdeclarativeerror.h> +#include <QtDeclarative/qdeclarativedebug.h> QT_BEGIN_HEADER diff --git a/src/declarative/qml/qdeclarativeimport.cpp b/src/declarative/qml/qdeclarativeimport.cpp index bf261ef..c2f0086 100644 --- a/src/declarative/qml/qdeclarativeimport.cpp +++ b/src/declarative/qml/qdeclarativeimport.cpp @@ -46,6 +46,7 @@ #include <QtCore/qfileinfo.h> #include <QtCore/qpluginloader.h> #include <QtCore/qlibraryinfo.h> +#include <QtCore/qalgorithms.h> #include <QtDeclarative/qdeclarativeextensioninterface.h> #include <private/qdeclarativeglobal_p.h> #include <private/qdeclarativetypenamecache_p.h> @@ -734,8 +735,12 @@ QDeclarativeImportDatabase::QDeclarativeImportDatabase(QDeclarativeEngine *e) } RFs& fs = qt_s60GetRFs(); TPtrC tempPathPtr(reinterpret_cast<const TText*> (tempPath.constData())); + // Symbian searches should start from Y:. Fix start drive otherwise TFindFile starts from the session drive + _LIT(KStartDir, "Y:"); + TFileName dirPath(KStartDir); + dirPath.Append(tempPathPtr); TFindFile finder(fs); - TInt err = finder.FindByDir(tempPathPtr, tempPathPtr); + TInt err = finder.FindByDir(tempPathPtr, dirPath); while (err == KErrNone) { QString foundDir(reinterpret_cast<const QChar *>(finder.File().Ptr()), finder.File().Length()); @@ -743,6 +748,9 @@ QDeclarativeImportDatabase::QDeclarativeImportDatabase(QDeclarativeEngine *e) addImportPath(foundDir); err = finder.Find(); } + // TFindFile found the directories in the order we want, but addImportPath reverses it. + // Reverse the order again to get it right. + QAlgorithmsPrivate::qReverse(fileImportPath.begin(), fileImportPath.end()); } else { addImportPath(installImportsPath); } diff --git a/src/declarative/qml/qdeclarativenotifier_p.h b/src/declarative/qml/qdeclarativenotifier_p.h index 5f70f7d..14a7f82 100644 --- a/src/declarative/qml/qdeclarativenotifier_p.h +++ b/src/declarative/qml/qdeclarativenotifier_p.h @@ -99,8 +99,15 @@ private: enum { InvalidType, SignalType, NotifierType } type; union { - char signalData[sizeof(Signal)]; - char notifierData[sizeof(Notifier)]; + struct { + Signal *signal; + union { + char signalData[sizeof(Signal)]; + qint64 q_for_alignment_1; + double q_for_alignment_2; + }; + } signal; + Notifier notifier; }; inline Notifier *toNotifier(); @@ -194,7 +201,7 @@ void QDeclarativeNotifierEndpoint::connect(QDeclarativeNotifier *notifier) void QDeclarativeNotifierEndpoint::disconnect() { if (type == SignalType) { - Signal *s = (Signal *)&signalData; + Signal *s = asSignal(); if (s->source) { QMetaObject::disconnectOne(s->source, s->sourceSignal, target, targetMethod); s->source = 0; @@ -223,18 +230,19 @@ QDeclarativeNotifierEndpoint::Notifier *QDeclarativeNotifierEndpoint::toNotifier s->~Signal(); } + type = NotifierType; Notifier *n = asNotifier(); n->next = 0; n->prev = 0; n->disconnected = 0; n->notifier = 0; - type = NotifierType; return n; } QDeclarativeNotifierEndpoint::Notifier *QDeclarativeNotifierEndpoint::asNotifier() { - return (Notifier *)(¬ifierData); + Q_ASSERT(type == NotifierType); + return ¬ifier; } QDeclarativeNotifierEndpoint::Signal *QDeclarativeNotifierEndpoint::toSignal() @@ -243,16 +251,15 @@ QDeclarativeNotifierEndpoint::Signal *QDeclarativeNotifierEndpoint::toSignal() return asSignal(); disconnect(); - Signal *s = asSignal(); - new (s) Signal; + signal.signal = new (&signal.signalData) Signal; type = SignalType; - - return s; + return signal.signal; } QDeclarativeNotifierEndpoint::Signal *QDeclarativeNotifierEndpoint::asSignal() { - return (Signal *)(&signalData); + Q_ASSERT(type == SignalType); + return signal.signal; } QT_END_NAMESPACE diff --git a/src/declarative/qml/qdeclarativepropertycache_p.h b/src/declarative/qml/qdeclarativepropertycache_p.h index 581f519..c648d25 100644 --- a/src/declarative/qml/qdeclarativepropertycache_p.h +++ b/src/declarative/qml/qdeclarativepropertycache_p.h @@ -111,7 +111,7 @@ public: int relatedIndex; // When IsFunction }; uint overrideIndexIsProperty : 1; - int overrideIndex : 31; + signed int overrideIndex : 31; int revision; int metaObjectOffset; diff --git a/src/declarative/qml/qml.pri b/src/declarative/qml/qml.pri index bf9e54a..5d171bf 100644 --- a/src/declarative/qml/qml.pri +++ b/src/declarative/qml/qml.pri @@ -27,7 +27,6 @@ SOURCES += \ $$PWD/qdeclarativeinfo.cpp \ $$PWD/qdeclarativeerror.cpp \ $$PWD/qdeclarativescriptparser.cpp \ - $$PWD/qdeclarativeenginedebug.cpp \ $$PWD/qdeclarativerewrite.cpp \ $$PWD/qdeclarativevaluetype.cpp \ $$PWD/qdeclarativecompiledbindings.cpp \ @@ -99,7 +98,6 @@ HEADERS += \ $$PWD/qdeclarativedata_p.h \ $$PWD/qdeclarativeerror.h \ $$PWD/qdeclarativescriptparser_p.h \ - $$PWD/qdeclarativeenginedebug_p.h \ $$PWD/qdeclarativerewrite_p.h \ $$PWD/qpodvector_p.h \ $$PWD/qbitfield_p.h \ diff --git a/src/declarative/util/qdeclarativeview.h b/src/declarative/util/qdeclarativeview.h index b3854fc..ef51934 100644 --- a/src/declarative/util/qdeclarativeview.h +++ b/src/declarative/util/qdeclarativeview.h @@ -47,6 +47,7 @@ #include <QtGui/qgraphicssceneevent.h> #include <QtGui/qgraphicsview.h> #include <QtGui/qwidget.h> +#include <QtDeclarative/qdeclarativedebug.h> QT_BEGIN_HEADER diff --git a/src/gui/dialogs/qfiledialog_win.cpp b/src/gui/dialogs/qfiledialog_win.cpp index de8e33d..6691ff1 100644 --- a/src/gui/dialogs/qfiledialog_win.cpp +++ b/src/gui/dialogs/qfiledialog_win.cpp @@ -670,7 +670,7 @@ QStringList qt_win_get_open_file_names(const QFileDialogArgs &args, // GetOpenFileName() will return only one folder name for all the files. To retrieve // the correct path for all selected files, we have to use Common Item Dialog interfaces. #ifndef Q_WS_WINCE - if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based) + if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based)) return qt_win_CID_get_open_file_names(args, initialDirectory, filterLst, selectedFilter, idx); #endif @@ -757,7 +757,7 @@ static int __stdcall winGetExistDirCallbackProc(HWND hwnd, QString qt_win_get_existing_directory(const QFileDialogArgs &args) { #ifndef Q_WS_WINCE - if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based) + if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based)) return qt_win_CID_get_existing_directory(args); #endif diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp index 66e7216..149e267 100644 --- a/src/gui/dialogs/qmessagebox.cpp +++ b/src/gui/dialogs/qmessagebox.cpp @@ -548,8 +548,8 @@ void QMessageBoxPrivate::_q_buttonClicked(QAbstractButton *button) \snippet doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp 6 This is the approach recommended in the - \l{http://developer.apple.com/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGWindows/chapter_18_section_7.html} - {Mac OS X Guidlines}. Similar guidlines apply for the other + \l{http://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/AppleHIGuidelines/Windows/Windows.html#//apple_ref/doc/uid/20000961-BABCAJID} + {Mac OS X Guidelines}. Similar guidelines apply for the other platforms, but note the different ways the \l{QMessageBox::informativeText} {informative text} is handled for different platforms. diff --git a/src/gui/dialogs/qwizard.cpp b/src/gui/dialogs/qwizard.cpp index 83bdaa0..9f8d526 100644 --- a/src/gui/dialogs/qwizard.cpp +++ b/src/gui/dialogs/qwizard.cpp @@ -572,8 +572,7 @@ public: #endif } #if !defined(QT_NO_STYLE_WINDOWSVISTA) - if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based) + if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based)) vistaInitPending = true; #endif } diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp index 2a37d45..6fe1c8c 100644 --- a/src/gui/egl/qegl.cpp +++ b/src/gui/egl/qegl.cpp @@ -684,6 +684,37 @@ EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglPr else props = 0; EGLSurface surf; +#ifdef Q_OS_SYMBIAN + // On Symbian there might be situations (especially on 32MB GPU devices) + // where Qt is trying to create EGL surface while some other application + // is still holding all available GPU memory but is about to release it + // soon. For an example when exiting native video recorder and going back to + // Qt application behind it. Video stack tear down takes some time and Qt + // app might be too quick in reserving its EGL surface and thus running out + // of GPU memory right away. So if EGL surface creation fails due to bad + // alloc, let's try recreating it four times within ~1 second if needed. + // This strategy gives some time for video recorder to tear down its stack + // and a chance to Qt for creating a valid surface. + int tries = 4; + while(tries--) { + if (devType == QInternal::Widget) + surf = eglCreateWindowSurface(QEgl::display(), cfg, windowDrawable, props); + else + surf = eglCreatePixmapSurface(QEgl::display(), cfg, pixmapDrawable, props); + if (surf == EGL_NO_SURFACE) { + EGLint error = eglGetError(); + if (error == EGL_BAD_ALLOC) { + if (tries) { + User::After(1000 * 250); // 250ms + continue; + } + } + qWarning("QEglContext::createSurface(): Unable to create EGL surface, error = 0x%x", error); + } else { + break; + } + } +#else if (devType == QInternal::Widget) surf = eglCreateWindowSurface(QEgl::display(), cfg, windowDrawable, props); else @@ -691,6 +722,7 @@ EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglPr if (surf == EGL_NO_SURFACE) { qWarning("QEglContext::createSurface(): Unable to create EGL surface, error = 0x%x", eglGetError()); } +#endif return surf; } #endif diff --git a/src/gui/image/qnativeimage.cpp b/src/gui/image/qnativeimage.cpp index aebcbaf..e1382dd 100644 --- a/src/gui/image/qnativeimage.cpp +++ b/src/gui/image/qnativeimage.cpp @@ -153,7 +153,12 @@ QImage::Format QNativeImage::systemFormat() QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /* isTextBuffer */, QWidget *widget) : xshmimg(0), xshmpm(0) { - if (!X11->use_mitshm) { + QX11Info info = widget->x11Info(); + + int dd = info.depth(); + Visual *vis = (Visual*) info.visual(); + + if (!X11->use_mitshm || format != QImage::Format_RGB16 && X11->bppForDepth.value(dd) != 32) { image = QImage(width, height, format); // follow good coding practice and set xshminfo attributes, though values not used in this case xshminfo.readOnly = true; @@ -163,11 +168,6 @@ QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /* return; } - QX11Info info = widget->x11Info(); - - int dd = info.depth(); - Visual *vis = (Visual*) info.visual(); - xshmimg = XShmCreateImage(X11->display, vis, dd, ZPixmap, 0, &xshminfo, width, height); if (!xshmimg) { qWarning("QNativeImage: Unable to create shared XImage."); diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp index 77c2a2a..0e1401c 100644 --- a/src/gui/image/qpixmap_x11.cpp +++ b/src/gui/image/qpixmap_x11.cpp @@ -897,12 +897,20 @@ void QX11PixmapData::fromImage(const QImage &img, } ) break; - case BPP24_888: // 24 bit MSB + case BPP24_888: CYCLE( - for (int x=0; x<w; x++) { - *dst++ = qRed (*p); - *dst++ = qGreen(*p); - *dst++ = qBlue (*p++); + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) { + for (int x=0; x<w; x++) { + *dst++ = qRed (*p); + *dst++ = qGreen(*p); + *dst++ = qBlue (*p++); + } + } else { + for (int x=0; x<w; x++) { + *dst++ = qBlue (*p); + *dst++ = qGreen(*p); + *dst++ = qRed (*p++); + } } ) break; diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp index 756cb56..c472738 100644 --- a/src/gui/kernel/qapplication_win.cpp +++ b/src/gui/kernel/qapplication_win.cpp @@ -682,7 +682,7 @@ void QApplicationPrivate::initializeWidgetPaletteHash() QColor menuText(qt_colorref2qrgb(GetSysColor(COLOR_MENUTEXT))); BOOL isFlat = false; if ((QSysInfo::WindowsVersion >= QSysInfo::WV_XP - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) SystemParametersInfo(SPI_GETFLATMENU, 0, &isFlat, 0); QPalette menu(pal); // we might need a special color group for the menu. @@ -697,7 +697,7 @@ void QApplicationPrivate::initializeWidgetPaletteHash() menu.setColor(QPalette::Disabled, QPalette::Highlight, QColor(qt_colorref2qrgb(GetSysColor( (QSysInfo::WindowsVersion >= QSysInfo::WV_XP - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based) + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based)) && isFlat ? COLOR_MENUHILIGHT : COLOR_HIGHLIGHT)))); menu.setColor(QPalette::Disabled, QPalette::HighlightedText, disabled); menu.setColor(QPalette::Disabled, QPalette::Button, @@ -719,7 +719,7 @@ void QApplicationPrivate::initializeWidgetPaletteHash() QApplication::setPalette(menu, "QMenu"); if ((QSysInfo::WindowsVersion >= QSysInfo::WV_XP - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based) && isFlat) { + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based)) && isFlat) { QColor menubar(qt_colorref2qrgb(GetSysColor(COLOR_MENUBAR))); menu.setColor(QPalette::Active, QPalette::Button, menubar); menu.setColor(QPalette::Disabled, QPalette::Button, menubar); @@ -999,7 +999,7 @@ const QString qt_reg_winclass(QWidget *w) // register window class style = CS_DBLCLKS; if (w->inherits("QTipLabel") || w->inherits("QAlphaWidget")) { if ((QSysInfo::WindowsVersion >= QSysInfo::WV_XP - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) { + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) { style |= CS_DROPSHADOW; } cname = QLatin1String("QToolTip"); @@ -1017,7 +1017,7 @@ const QString qt_reg_winclass(QWidget *w) // register window class style |= CS_SAVEBITS; #endif if ((QSysInfo::WindowsVersion >= QSysInfo::WV_XP - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) style |= CS_DROPSHADOW; icon = false; } else { @@ -4161,7 +4161,8 @@ PtrCloseTouchInputHandle QApplicationPrivate::CloseTouchInputHandle = 0; void QApplicationPrivate::initializeMultitouch_sys() { - if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS7) { + if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS7 + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based)) { static const int QT_SM_DIGITIZER = 94; int value = GetSystemMetrics(QT_SM_DIGITIZER); static const int QT_NID_INTEGRATED_TOUCH = 0x01; diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index ef8e2b8..408e9ac 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -1896,6 +1896,12 @@ void qt_init(QApplicationPrivate *priv, int, X11->defaultScreen = DefaultScreen(X11->display); X11->screenCount = ScreenCount(X11->display); + int formatCount = 0; + XPixmapFormatValues *values = XListPixmapFormats(X11->display, &formatCount); + for (int i = 0; i < formatCount; ++i) + X11->bppForDepth[values[i].depth] = values[i].bits_per_pixel; + XFree(values); + X11->screens = new QX11InfoData[X11->screenCount]; X11->argbVisuals = new Visual *[X11->screenCount]; X11->argbColormaps = new Colormap[X11->screenCount]; diff --git a/src/gui/kernel/qcursor_win.cpp b/src/gui/kernel/qcursor_win.cpp index cef83f5..a68472c 100644 --- a/src/gui/kernel/qcursor_win.cpp +++ b/src/gui/kernel/qcursor_win.cpp @@ -477,7 +477,7 @@ void QCursorData::update() QPixmap pixmap = QApplicationPrivate::instance()->getPixmapCursor(cshape); hcurs = create32BitCursor(pixmap, hx, hy); } - break; + return; default: qWarning("QCursor::update: Invalid cursor shape %d", cshape); return; diff --git a/src/gui/kernel/qguiplatformplugin.cpp b/src/gui/kernel/qguiplatformplugin.cpp index 708859d..04fd111 100644 --- a/src/gui/kernel/qguiplatformplugin.cpp +++ b/src/gui/kernel/qguiplatformplugin.cpp @@ -137,10 +137,10 @@ QString QGuiPlatformPlugin::styleName() return QLatin1String("WindowsCE"); #elif defined(Q_WS_WIN) if ((QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) return QLatin1String("WindowsVista"); else if ((QSysInfo::WindowsVersion >= QSysInfo::WV_XP - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) return QLatin1String("WindowsXP"); else return QLatin1String("Windows"); // default styles for Windows diff --git a/src/gui/kernel/qsoftkeymanager.cpp b/src/gui/kernel/qsoftkeymanager.cpp index 9caa37e..cd3450e 100644 --- a/src/gui/kernel/qsoftkeymanager.cpp +++ b/src/gui/kernel/qsoftkeymanager.cpp @@ -61,7 +61,7 @@ QString QSoftKeyManager::standardSoftKeyText(StandardSoftKey standardKey) QString softKeyText; switch (standardKey) { case OkSoftKey: - softKeyText = QSoftKeyManager::tr("Ok"); + softKeyText = QSoftKeyManager::tr("OK"); break; case SelectSoftKey: softKeyText = QSoftKeyManager::tr("Select"); diff --git a/src/gui/kernel/qt_x11_p.h b/src/gui/kernel/qt_x11_p.h index 72acaf3..fe4a631 100644 --- a/src/gui/kernel/qt_x11_p.h +++ b/src/gui/kernel/qt_x11_p.h @@ -54,6 +54,7 @@ // #include "QtGui/qwindowdefs.h" +#include "QtCore/qhash.h" #include "QtCore/qlist.h" #include "QtCore/qvariant.h" @@ -467,6 +468,7 @@ struct QX11Data Colormap *argbColormaps; int screenCount; int defaultScreen; + QHash<int, int> bppForDepth; Time time; Time userTime; diff --git a/src/gui/kernel/qwhatsthis.cpp b/src/gui/kernel/qwhatsthis.cpp index 5328cb1..da79250 100644 --- a/src/gui/kernel/qwhatsthis.cpp +++ b/src/gui/kernel/qwhatsthis.cpp @@ -227,7 +227,7 @@ QWhatsThat::QWhatsThat(const QString& txt, QWidget* parent, QWidget *showTextFor } #if defined(Q_WS_WIN) if ((QSysInfo::WindowsVersion >= QSysInfo::WV_XP - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) { BOOL shadow; SystemParametersInfo(SPI_GETDROPSHADOW, 0, &shadow, 0); @@ -305,7 +305,7 @@ void QWhatsThat::paintEvent(QPaintEvent*) bool drawShadow = true; #if defined(Q_WS_WIN) if ((QSysInfo::WindowsVersion >= QSysInfo::WV_XP - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) { BOOL shadow; SystemParametersInfo(SPI_GETDROPSHADOW, 0, &shadow, 0); diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index e015f5f..7055c6b 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -2260,10 +2260,16 @@ void QWidgetPrivate::updateIsOpaque() #endif #ifdef Q_WS_S60 - if (q->windowType() == Qt::Dialog && q->testAttribute(Qt::WA_TranslucentBackground) - && S60->avkonComponentsSupportTransparency) { - setOpaque(false); - return; + if (q->testAttribute(Qt::WA_TranslucentBackground)) { + if (q->windowType() & Qt::Dialog || q->windowType() & Qt::Popup) { + if (S60->avkonComponentsSupportTransparency) { + setOpaque(false); + return; + } + } else { + setOpaque(false); + return; + } } #endif @@ -2283,11 +2289,16 @@ void QWidgetPrivate::updateIsOpaque() } if (q->isWindow() && !q->testAttribute(Qt::WA_NoSystemBackground)) { +#ifdef Q_WS_S60 + setOpaque(true); + return; +#else const QBrush &windowBrush = q->palette().brush(QPalette::Window); if (windowBrush.style() != Qt::NoBrush && windowBrush.isOpaque()) { setOpaque(true); return; } +#endif } setOpaque(false); } @@ -10948,11 +10959,14 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on) } break; case Qt::WA_TranslucentBackground: +#if defined(Q_OS_SYMBIAN) + setAttribute(Qt::WA_NoSystemBackground, on); +#else if (on) { setAttribute(Qt::WA_NoSystemBackground); d->updateIsTranslucent(); } - +#endif break; case Qt::WA_AcceptTouchEvents: #if defined(Q_WS_WIN) || defined(Q_WS_MAC) || defined(Q_OS_SYMBIAN) diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h index aefffb6..9ac9479 100644 --- a/src/gui/kernel/qwidget_p.h +++ b/src/gui/kernel/qwidget_p.h @@ -233,6 +233,7 @@ struct QTLWExtra { uint inExpose : 1; // Prevents drawing recursion uint nativeWindowTransparencyEnabled : 1; // Tracks native window transparency uint forcedToRaster : 1; + uint noSystemRotationDisabled : 1; #elif defined(Q_WS_QPA) QPlatformWindow *platformWindow; QPlatformWindowFormat platformWindowFormat; diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index e06b625..00661ae 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -804,19 +804,12 @@ void QWidgetPrivate::setConstraints_sys() void QWidgetPrivate::s60UpdateIsOpaque() { Q_Q(QWidget); - if (!q->testAttribute(Qt::WA_WState_Created)) return; - const bool writeAlpha = extraData()->nativePaintMode == QWExtra::BlitWriteAlpha; - if (!q->testAttribute(Qt::WA_TranslucentBackground) && !writeAlpha) - return; const bool requireAlphaChannel = !isOpaque || writeAlpha; - createTLExtra(); - RWindow *const window = static_cast<RWindow *>(q->effectiveWinId()->DrawableWindow()); - #ifdef Q_SYMBIAN_SEMITRANSPARENT_BG_SURFACE if (QApplicationPrivate::instance()->useTranslucentEGLSurfaces && !extra->topextra->forcedToRaster) { @@ -825,25 +818,47 @@ void QWidgetPrivate::s60UpdateIsOpaque() return; } #endif + const bool recreateBackingStore = extra->topextra->backingStore.data() && ( + QApplicationPrivate::graphics_system_name == QLatin1String("openvg") || + QApplicationPrivate::graphics_system_name == QLatin1String("opengl") + ); if (requireAlphaChannel) { - const TDisplayMode displayMode = static_cast<TDisplayMode>(window->SetRequiredDisplayMode(EColor16MA)); - if (window->SetTransparencyAlphaChannel() == KErrNone) { + window->SetRequiredDisplayMode(EColor16MA); + if (window->SetTransparencyAlphaChannel() == KErrNone) window->SetBackgroundColor(TRgb(255, 255, 255, 0)); - extra->topextra->nativeWindowTransparencyEnabled = 1; - if (extra->topextra->backingStore.data() && ( - QApplicationPrivate::graphics_system_name == QLatin1String("openvg") - || QApplicationPrivate::graphics_system_name == QLatin1String("opengl"))) { - // Semi-transparent EGL surfaces aren't supported. We need to - // recreate backing store to get translucent surface (raster surface). - extra->topextra->backingStore.create(q); - extra->topextra->backingStore.registerWidget(q); - // FixNativeOrientation() will not work without an EGL surface. + } else { + if (recreateBackingStore) { + // Clear the UI surface to ensure that the EGL surface content is visible + CWsScreenDevice *screenDevice = S60->screenDevice(q); + QScopedPointer<CWindowGc> gc(new CWindowGc(screenDevice)); + const int err = gc->Construct(); + if (!err) { + gc->Activate(*window); + window->BeginRedraw(); + gc->SetDrawMode(CWindowGc::EDrawModeWriteAlpha); + gc->SetBrushColor(TRgb(0, 0, 0, 0)); + gc->Clear(TRect(0, 0, q->width(), q->height())); + window->EndRedraw(); + } + } + if (extra->topextra->nativeWindowTransparencyEnabled) + window->SetTransparentRegion(TRegionFix<1>()); + } + extra->topextra->nativeWindowTransparencyEnabled = requireAlphaChannel; + if (recreateBackingStore) { + extra->topextra->backingStore.create(q); + extra->topextra->backingStore.registerWidget(q); + bool noSystemRotationDisabled = false; + if (requireAlphaChannel) { + if (q->testAttribute(Qt::WA_SymbianNoSystemRotation)) { + // FixNativeOrientation() will not work without an EGL surface q->setAttribute(Qt::WA_SymbianNoSystemRotation, false); + noSystemRotationDisabled = true; } + } else { + q->setAttribute(Qt::WA_SymbianNoSystemRotation, extra->topextra->noSystemRotationDisabled); } - } else if (extra->topextra->nativeWindowTransparencyEnabled) { - window->SetTransparentRegion(TRegionFix<1>()); - extra->topextra->nativeWindowTransparencyEnabled = 0; + extra->topextra->noSystemRotationDisabled = noSystemRotationDisabled; } } @@ -1004,6 +1019,7 @@ void QWidgetPrivate::createTLSysExtra() extra->topextra->inExpose = 0; extra->topextra->nativeWindowTransparencyEnabled = 0; extra->topextra->forcedToRaster = 0; + extra->topextra->noSystemRotationDisabled = 0; } void QWidgetPrivate::deleteTLSysExtra() diff --git a/src/gui/painting/qgraphicssystemex_symbian.cpp b/src/gui/painting/qgraphicssystemex_symbian.cpp index 4469704..32e040f 100644 --- a/src/gui/painting/qgraphicssystemex_symbian.cpp +++ b/src/gui/painting/qgraphicssystemex_symbian.cpp @@ -46,31 +46,108 @@ #include <e32property.h> +#ifdef Q_SYMBIAN_SUPPORTS_SURFACES +#include "private/qegl_p.h" +#endif + QT_BEGIN_NAMESPACE static bool bcm2727Initialized = false; static bool bcm2727 = false; +#ifdef Q_SYMBIAN_SUPPORTS_SURFACES +typedef EGLBoolean (*NOK_resource_profiling)(EGLDisplay, EGLint, EGLint*, EGLint, EGLint*); +#define EGL_PROF_TOTAL_MEMORY_NOK 0x3070 +#endif + +// Detect if Qt is running on BCM2727 chip. +// BCM2727 is a special case on Symbian because +// it has only 32MB GPU memory which exposes +// significant limitations to hw accelerated UI. bool QSymbianGraphicsSystemEx::hasBCM2727() { if (bcm2727Initialized) return bcm2727; - const TUid KIvePropertyCat = {0x2726beef}; - enum TIvePropertyChipType { - EVCBCM2727B1 = 0x00000000, - EVCBCM2763A0 = 0x04000100, - EVCBCM2763B0 = 0x04000102, - EVCBCM2763C0 = 0x04000103, - EVCBCM2763C1 = 0x04000104, - EVCBCMUnknown = 0x7fffffff - }; - - TInt chipType = EVCBCMUnknown; - if (RProperty::Get(KIvePropertyCat, 0, chipType) == KErrNone) { - if (chipType == EVCBCM2727B1) +#ifdef Q_SYMBIAN_SUPPORTS_SURFACES + EGLDisplay display = QEgl::display(); +#if 1 + // Hacky but fast ~0ms. + const char* vendor = eglQueryString(display, EGL_VENDOR); + if (strstr(vendor, "Broadcom")) { + const TUid KIvePropertyCat = {0x2726beef}; + enum TIvePropertyChipType { + EVCBCM2727B1 = 0x00000000, + EVCBCM2763A0 = 0x04000100, + EVCBCM2763B0 = 0x04000102, + EVCBCM2763C0 = 0x04000103, + EVCBCM2763C1 = 0x04000104, + EVCBCMUnknown = 0x7fffffff + }; + + // Broadcom driver publishes KIvePropertyCat PS key on + // devices which are running on BCM2727 chip and post Anna Symbian. + TInt chipType = EVCBCMUnknown; + if (RProperty::Get(KIvePropertyCat, 0, chipType) == KErrNone) { + if (chipType == EVCBCM2727B1) + bcm2727 = true; + } else if (QSysInfo::symbianVersion() <= QSysInfo::SV_SF_3) { + // Device is running on Symbian Anna or older Symbian^3 in which + // KIvePropertyCat is not published. These ones are always 32MB devices. + bcm2727 = true; + } else { + // We have some other Broadcom chip on post Anna Symbian. + // Should have > 32MB GPU memory. + } + } +#else + // Fool proof but takes 15-20ms and we don't want this delay on app startup... + + // All devices with <= 32MB GPU memory should be + // dealed in similar manner to BCM2727 + // So let's query max GPU memory amount. + NOK_resource_profiling eglQueryProfilingData = (NOK_resource_profiling)eglGetProcAddress("eglQueryProfilingDataNOK"); + if (eglQueryProfilingData) { + EGLint dataCount; + eglQueryProfilingData(display, + EGL_PROF_QUERY_GLOBAL_BIT_NOK | + EGL_PROF_QUERY_MEMORY_USAGE_BIT_NOK, + NULL, + 0, + (EGLint*)&dataCount); + + // Allocate room for the profiling data + EGLint* profData = (EGLint*)malloc(dataCount * sizeof(EGLint)); + memset(profData,0,dataCount * sizeof(EGLint)); + + // Retrieve the profiling data + eglQueryProfilingData(display, + EGL_PROF_QUERY_GLOBAL_BIT_NOK | + EGL_PROF_QUERY_MEMORY_USAGE_BIT_NOK, + profData, + dataCount, + (EGLint*)&dataCount); + + int totalMemory; + EGLint i = 0; + while (profData && i < dataCount) { + switch (profData[i++]) { + case EGL_PROF_TOTAL_MEMORY_NOK: + totalMemory = profData[i++]; + break; + default: + i++; + } + } + + // ok, hasBCM2727() naming is a bit misleading but Qt must + // behave the same on all chips like BCM2727 (<= 32MB GPU memory) + // and our code (and others) are already using this function. + if (totalMemory <= 33554432) bcm2727 = true; } +#endif +#endif // Q_SYMBIAN_SUPPORTS_SURFACES bcm2727Initialized = true; @@ -80,7 +157,9 @@ bool QSymbianGraphicsSystemEx::hasBCM2727() void QSymbianGraphicsSystemEx::releaseCachedGpuResources() { // Do nothing here - // This is implemented in graphics system specific plugin + + // This virtual function should be implemented in graphics system specific + // plugin } void QSymbianGraphicsSystemEx::releaseAllGpuResources() diff --git a/src/gui/painting/qwindowsurface_raster.cpp b/src/gui/painting/qwindowsurface_raster.cpp index 15ff044..2a25bff 100644 --- a/src/gui/painting/qwindowsurface_raster.cpp +++ b/src/gui/painting/qwindowsurface_raster.cpp @@ -254,8 +254,9 @@ void QRasterWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoi } else #endif { + int depth = widget->x11Info().depth(); const QImage &src = d->image->image; - if (src.format() != QImage::Format_RGB32 || widget->x11Info().depth() < 24) { + if (src.format() != QImage::Format_RGB32 || depth < 24 || X11->bppForDepth.value(depth) != 32) { Q_ASSERT(src.depth() >= 16); const QImage sub_src(src.scanLine(br.y()) + br.x() * (uint(src.depth()) / 8), br.width(), br.height(), src.bytesPerLine(), src.format()); @@ -267,7 +268,7 @@ void QRasterWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoi } else { // qpaintengine_x11.cpp extern void qt_x11_drawImage(const QRect &rect, const QPoint &pos, const QImage &image, Drawable hd, GC gc, Display *dpy, Visual *visual, int depth); - qt_x11_drawImage(br, wpos, src, widget->handle(), d_ptr->gc, X11->display, (Visual *)widget->x11Info().visual(), widget->x11Info().depth()); + qt_x11_drawImage(br, wpos, src, widget->handle(), d_ptr->gc, X11->display, (Visual *)widget->x11Info().visual(), depth); } } diff --git a/src/gui/styles/qstylefactory.cpp b/src/gui/styles/qstylefactory.cpp index 83b6748..de693db 100644 --- a/src/gui/styles/qstylefactory.cpp +++ b/src/gui/styles/qstylefactory.cpp @@ -225,12 +225,12 @@ QStringList QStyleFactory::keys() #endif #ifndef QT_NO_STYLE_WINDOWSXP if (!list.contains(QLatin1String("WindowsXP")) && - (QSysInfo::WindowsVersion >= QSysInfo::WV_XP && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) + (QSysInfo::WindowsVersion >= QSysInfo::WV_XP && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) list << QLatin1String("WindowsXP"); #endif #ifndef QT_NO_STYLE_WINDOWSVISTA if (!list.contains(QLatin1String("WindowsVista")) && - (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) + (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) list << QLatin1String("WindowsVista"); #endif #ifndef QT_NO_STYLE_MOTIF diff --git a/src/gui/styles/qwindowsstyle.cpp b/src/gui/styles/qwindowsstyle.cpp index 9732c7e..342c4c6 100644 --- a/src/gui/styles/qwindowsstyle.cpp +++ b/src/gui/styles/qwindowsstyle.cpp @@ -125,7 +125,7 @@ QWindowsStylePrivate::QWindowsStylePrivate() { #if defined(Q_WS_WIN) && !defined(Q_OS_WINCE) if ((QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) { + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) { QSystemLibrary shellLib(QLatin1String("shell32")); pSHGetStockIconInfo = (PtrSHGetStockIconInfo)shellLib.resolve("SHGetStockIconInfo"); } @@ -1058,7 +1058,7 @@ QPixmap QWindowsStyle::standardPixmap(StandardPixmap standardPixmap, const QStyl case SP_VistaShield: { if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based) && pSHGetStockIconInfo) { QPixmap pixmap; @@ -1200,7 +1200,7 @@ int QWindowsStyle::styleHint(StyleHint hint, const QStyleOption *opt, const QWid case SH_LineEdit_PasswordCharacter: { #ifdef Q_WS_WIN - if (widget && (QSysInfo::WindowsVersion >= QSysInfo::WV_XP && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) { + if (widget && (QSysInfo::WindowsVersion >= QSysInfo::WV_XP && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) { const QFontMetrics &fm = widget->fontMetrics(); if (fm.inFont(QChar(0x25CF))) ret = 0x25CF; @@ -3362,7 +3362,7 @@ QIcon QWindowsStyle::standardIconImplementation(StandardPixmap standardIcon, con case SP_VistaShield: { if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA - && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based + && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based) && pSHGetStockIconInfo) { icon.addPixmap(proxy()->standardPixmap(SP_VistaShield, option, widget)); //fetches small icon diff --git a/src/gui/styles/qwindowsvistastyle.cpp b/src/gui/styles/qwindowsvistastyle.cpp index b894eb4..997d429 100644 --- a/src/gui/styles/qwindowsvistastyle.cpp +++ b/src/gui/styles/qwindowsvistastyle.cpp @@ -140,7 +140,7 @@ bool QWindowsVistaStylePrivate::useVista() { return (QWindowsVistaStylePrivate::useXP() && (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && - QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)); + (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))); } /*! diff --git a/src/gui/styles/qwindowsxpstyle.cpp b/src/gui/styles/qwindowsxpstyle.cpp index 3c33df3..343f262 100644 --- a/src/gui/styles/qwindowsxpstyle.cpp +++ b/src/gui/styles/qwindowsxpstyle.cpp @@ -791,7 +791,7 @@ void QWindowsXPStylePrivate::drawBackgroundThruNativeBuffer(XPThemeData &themeDa inspectData = (tmt_transparentcolor != 0 || tmt_borderonly || proporigin == PO_PART || proporigin == PO_STATE); // ### This is a vista-specific workaround for broken alpha in titlebar pixmaps - if ((QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && QSysInfo::WindowsVersion < QSysInfo::WV_NT_based)) { + if ((QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based))) { if (themeData.partId == WP_CAPTION || themeData.partId == WP_SMALLCAPTION) inspectData = false; } diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index e20aa25..d00a048 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -801,7 +801,7 @@ int QFontEngineFT::loadFlags(QGlyphSet *set, GlyphFormat format, int flags, if (set && set->outline_drawing) load_flags = FT_LOAD_NO_BITMAP; - if (default_hint_style == HintNone || (flags & HB_ShaperFlag_UseDesignMetrics) || set->outline_drawing) + if (default_hint_style == HintNone || (flags & HB_ShaperFlag_UseDesignMetrics) || (set && set->outline_drawing)) load_flags |= FT_LOAD_NO_HINTING; else load_flags |= load_target; diff --git a/src/gui/widgets/qdialogbuttonbox.cpp b/src/gui/widgets/qdialogbuttonbox.cpp index 6c29141..e6842b3 100644 --- a/src/gui/widgets/qdialogbuttonbox.cpp +++ b/src/gui/widgets/qdialogbuttonbox.cpp @@ -94,6 +94,7 @@ QT_BEGIN_NAMESPACE specifying their role. \snippet examples/dialogs/extension/finddialog.cpp 1 + \snippet examples/dialogs/extension/finddialog.cpp 6 Alternatively, QDialogButtonBox provides several standard buttons (e.g. OK, Cancel, Save) that you can use. They exist as flags so you can OR them together in the constructor. diff --git a/src/gui/widgets/qlinecontrol.cpp b/src/gui/widgets/qlinecontrol.cpp index d58da37..0af2e59 100644 --- a/src/gui/widgets/qlinecontrol.cpp +++ b/src/gui/widgets/qlinecontrol.cpp @@ -445,6 +445,8 @@ void QLineControl::moveCursor(int pos, bool mark) void QLineControl::processInputMethodEvent(QInputMethodEvent *event) { int priorState = 0; + int originalSelectionStart = m_selstart; + int originalSelectionEnd = m_selend; bool isGettingInput = !event->commitString().isEmpty() || event->preeditString() != preeditAreaText() || event->replacementLength() > 0; @@ -523,6 +525,8 @@ void QLineControl::processInputMethodEvent(QInputMethodEvent *event) } m_textLayout.setAdditionalFormats(formats); updateDisplayText(/*force*/ true); + if (originalSelectionStart != m_selstart || originalSelectionEnd != m_selend) + emit selectionChanged(); if (cursorPositionChanged) emitCursorPositionChanged(); else if (m_preeditCursor != oldPreeditCursor) diff --git a/src/gui/widgets/qtoolbar.cpp b/src/gui/widgets/qtoolbar.cpp index e0e8ce6..c7ae73f 100644 --- a/src/gui/widgets/qtoolbar.cpp +++ b/src/gui/widgets/qtoolbar.cpp @@ -440,7 +440,7 @@ void QToolBarPrivate::plug(const QRect &r) pop up a menu containing the items that does not currently fit in the toolbar. - When a QToolBar is not a child of a QMainWindow, it looses the ability + When a QToolBar is not a child of a QMainWindow, it loses the ability to populate the extension pop up with widgets added to the toolbar using addWidget(). Please use widget actions created by inheriting QWidgetAction and implementing QWidgetAction::createWidget() instead. diff --git a/src/network/access/qnetworkaccessbackend_p.h b/src/network/access/qnetworkaccessbackend_p.h index ff05306..7f6aff9 100644 --- a/src/network/access/qnetworkaccessbackend_p.h +++ b/src/network/access/qnetworkaccessbackend_p.h @@ -110,9 +110,7 @@ public: // socket). virtual void open() = 0; -#ifndef QT_NO_BEARERMANAGEMENT virtual bool start(); -#endif virtual void closeDownstreamChannel() = 0; // slot-like: diff --git a/src/network/access/qnetworkcookie.cpp b/src/network/access/qnetworkcookie.cpp index 0670738..a9bb318 100644 --- a/src/network/access/qnetworkcookie.cpp +++ b/src/network/access/qnetworkcookie.cpp @@ -372,7 +372,7 @@ static QPair<QByteArray, QByteArray> nextField(const QByteArray &text, int &posi // parse the first part, before the equal sign for (i = position; i < length; ++i) { register char c = text.at(i); - if (c == ';' || c == ',' || c == '=') + if (c == ';' || c == '=') break; } @@ -423,7 +423,7 @@ static QPair<QByteArray, QByteArray> nextField(const QByteArray &text, int &posi for ( ; i < length; ++i) { register char c = text.at(i); - if (c == ',' || c == ';') + if (c == ';') break; } position = i; @@ -434,7 +434,7 @@ static QPair<QByteArray, QByteArray> nextField(const QByteArray &text, int &posi register char c = text.at(i); // for name value pairs, we want to parse until reaching the next ';' // and not break when reaching a space char - if (c == ',' || c == ';' || ((isNameValue && (c == '\n' || c == '\r')) || (!isNameValue && isLWS(c)))) + if (c == ';' || ((isNameValue && (c == '\n' || c == '\r')) || (!isNameValue && isLWS(c)))) break; } @@ -461,8 +461,7 @@ static QPair<QByteArray, QByteArray> nextField(const QByteArray &text, int &posi \value Full makes toRawForm() return the full cookie contents, as suitable for sending to a client in a - server's "Set-Cookie:" header. Multiple cookies are separated - by commas in a "Set-Cookie:" header. + server's "Set-Cookie:" header. Note that only the Full form of the cookie can be parsed back into its original contents. @@ -488,7 +487,6 @@ QByteArray QNetworkCookie::toRawForm(RawForm form) const result = d->name; result += '='; if ((d->value.contains(';') || - d->value.contains(',') || d->value.contains('"')) && (!d->value.startsWith('"') && !d->value.endsWith('"'))) { @@ -967,14 +965,8 @@ QList<QNetworkCookie> QNetworkCookiePrivate::parseSetCookieHeaderLine(const QByt cookie.setValue(field.second); position = nextNonWhitespace(cookieString, position); - bool endOfCookie = false; - while (!endOfCookie && position < length) { + while (position < length) { switch (cookieString.at(position++)) { - case ',': - // end of the cookie - endOfCookie = true; - break; - case ';': // new field in the cookie field = nextField(cookieString, position, false); diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp index 0b568d4..6f2daec 100644 --- a/src/network/access/qnetworkreplyimpl.cpp +++ b/src/network/access/qnetworkreplyimpl.cpp @@ -471,6 +471,7 @@ bool QNetworkReplyImplPrivate::isCachingEnabled() const void QNetworkReplyImplPrivate::setCachingEnabled(bool enable) { + Q_Q(QNetworkReplyImpl); if (!enable && !cacheEnabled) return; // nothing to do if (enable && cacheEnabled) @@ -493,15 +494,27 @@ void QNetworkReplyImplPrivate::setCachingEnabled(bool enable) networkCache()->remove(url); cacheSaveDevice = 0; cacheEnabled = false; + QObject::disconnect(networkCache(), SIGNAL(destroyed()), q, SLOT(_q_cacheDestroyed())); } } +void QNetworkReplyImplPrivate::_q_cacheDestroyed() +{ + //destruction of cache invalidates cacheSaveDevice + cacheSaveDevice = 0; + cacheEnabled = false; +} + void QNetworkReplyImplPrivate::completeCacheSave() { - if (cacheEnabled && errorCode != QNetworkReplyImpl::NoError) { - networkCache()->remove(url); - } else if (cacheEnabled && cacheSaveDevice) { - networkCache()->insert(cacheSaveDevice); + Q_Q(QNetworkReplyImpl); + if (cacheEnabled) { + if (errorCode != QNetworkReplyImpl::NoError) { + networkCache()->remove(url); + } else if (cacheSaveDevice) { + networkCache()->insert(cacheSaveDevice); + } + QObject::disconnect(networkCache(), SIGNAL(destroyed()), q, SLOT(_q_cacheDestroyed())); } cacheSaveDevice = 0; cacheEnabled = false; @@ -561,6 +574,8 @@ void QNetworkReplyImplPrivate::initCacheSaveDevice() networkCache()->remove(url); cacheSaveDevice = 0; cacheEnabled = false; + } else { + q->connect(networkCache(), SIGNAL(destroyed()), SLOT(_q_cacheDestroyed())); } } diff --git a/src/network/access/qnetworkreplyimpl_p.h b/src/network/access/qnetworkreplyimpl_p.h index 089c87e..286d8ea 100644 --- a/src/network/access/qnetworkreplyimpl_p.h +++ b/src/network/access/qnetworkreplyimpl_p.h @@ -104,6 +104,7 @@ public: Q_PRIVATE_SLOT(d_func(), void _q_networkSessionConnected()) Q_PRIVATE_SLOT(d_func(), void _q_networkSessionFailed()) #endif + Q_PRIVATE_SLOT(d_func(), void _q_cacheDestroyed()) }; class QNetworkReplyImplPrivate: public QNetworkReplyPrivate @@ -140,6 +141,7 @@ public: void _q_networkSessionConnected(); void _q_networkSessionFailed(); #endif + void _q_cacheDestroyed(); void setup(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *outgoingData); diff --git a/src/network/kernel/qhostinfo_win.cpp b/src/network/kernel/qhostinfo_win.cpp index 6fc5b7b..1052863 100644 --- a/src/network/kernel/qhostinfo_win.cpp +++ b/src/network/kernel/qhostinfo_win.cpp @@ -97,14 +97,15 @@ static void resolveLibrary() #if defined(Q_OS_WINCE) #include <qmutex.h> -QMutex qPrivCEMutex; +Q_GLOBAL_STATIC(QMutex, qPrivCEMutex) #endif QHostInfo QHostInfoAgent::fromName(const QString &hostName) { #if defined(Q_OS_WINCE) - QMutexLocker locker(&qPrivCEMutex); + QMutexLocker locker(qPrivCEMutex()); #endif + QWindowsSockInit winSock; // Load res_init on demand. diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index cedccaa..423fa08 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -103,6 +103,7 @@ #ifdef Q_OS_SYMBIAN #include <private/qgltexturepool_p.h> +#include <private/qeglcontext_p.h> #endif // #define QT_GL_CONTEXT_RESOURCE_DEBUG @@ -3432,8 +3433,25 @@ const QGLContext* QGLContext::currentContext() return 0; #else QGLThreadContext *threadContext = qgl_context_storage.localData(); - if (threadContext) + if (threadContext) { +#ifdef Q_OS_SYMBIAN + // Query the current context and return null if it is different. + // This is needed to support mixed VG-GL rendering. + // QtOpenVG is free to make a QEglContext current at any time and + // QGLContext gets no notification that its underlying QEglContext is + // not current anymore. We query directly from EGL to be thread-safe. + // QEglContext does not store all the contexts per-thread. + if (threadContext->context) { + QEglContext *eglcontext = threadContext->context->d_func()->eglContext; + if (eglcontext) { + EGLContext ctx = eglcontext->context(); + if (ctx != eglGetCurrentContext()) + return 0; + } + } +#endif return threadContext->context; + } return 0; #endif //Q_WS_QPA } diff --git a/src/sql/drivers/symsql/qsql_symsql.cpp b/src/sql/drivers/symsql/qsql_symsql.cpp index 4ceac9b..f34212c 100644 --- a/src/sql/drivers/symsql/qsql_symsql.cpp +++ b/src/sql/drivers/symsql/qsql_symsql.cpp @@ -217,7 +217,7 @@ void QSymSQLResultPrivate::initColumns(QSqlRecord& rec) int nCols = stmt.ColumnCount(); if (nCols <= 0) { q->setLastError(qMakeError(access, QCoreApplication::translate("QSymSQLResult", - "Error retreving column count"), QSqlError::UnknownError, nCols)); + "Error retrieving column count"), QSqlError::UnknownError, nCols)); return; } @@ -227,7 +227,7 @@ void QSymSQLResultPrivate::initColumns(QSqlRecord& rec) if (err != KErrNone) { q->setLastError(qMakeError(access, QCoreApplication::translate("QSymSQLResult", - "Error retreving column name"), QSqlError::UnknownError, err)); + "Error retrieving column name"), QSqlError::UnknownError, err)); return; } @@ -240,7 +240,7 @@ void QSymSQLResultPrivate::initColumns(QSqlRecord& rec) if (err != KErrNone) { q->setLastError(qMakeError(access, QCoreApplication::translate("QSymSQLResult", - "Error retreving column type"), QSqlError::UnknownError, err)); + "Error retrieving column type"), QSqlError::UnknownError, err)); return; } diff --git a/src/xmlpatterns/parser/qquerytransformparser.cpp b/src/xmlpatterns/parser/qquerytransformparser.cpp index c9801c8..2528746 100644 --- a/src/xmlpatterns/parser/qquerytransformparser.cpp +++ b/src/xmlpatterns/parser/qquerytransformparser.cpp @@ -4561,7 +4561,7 @@ yyreduce: { parseInfo->staticContext->error(QtXmlPatterns::tr("The namespace for a user defined function " "cannot be empty (try the predefined " - "prefix %1 which exists for cases " + "prefix %1, which exists for cases " "like this)") .arg(formatKeyword("local")), ReportContext::XQST0060, fromYYLTYPE((yyloc), parseInfo)); diff --git a/src/xmlpatterns/schema/qxsdschemaresolver.cpp b/src/xmlpatterns/schema/qxsdschemaresolver.cpp index 29c9f5a..2549f5f 100644 --- a/src/xmlpatterns/schema/qxsdschemaresolver.cpp +++ b/src/xmlpatterns/schema/qxsdschemaresolver.cpp @@ -854,7 +854,7 @@ void XsdSchemaResolver::resolveComplexContentComplexTypes(const XsdComplexType:: group->setCompositor(XsdModelGroup::SequenceCompositor); if (effectiveContent && effectiveContent->term()->isModelGroup() && XsdModelGroup::Ptr(effectiveContent->term())->compositor() == XsdModelGroup::AllCompositor) { - m_context->error(QtXmlPatterns::tr("Content model of complex type %1 contains %2 element so it cannot be derived by extension from a non-empty type.") + m_context->error(QtXmlPatterns::tr("Content model of complex type %1 contains %2 element, so it cannot be derived by extension from a non-empty type.") .arg(formatType(m_namePool, complexType)).arg(formatKeyword("all")), XsdSchemaContext::XSDError, sourceLocation(complexType)); return; } diff --git a/src/xmlpatterns/schema/qxsdvalidatinginstancereader.cpp b/src/xmlpatterns/schema/qxsdvalidatinginstancereader.cpp index 80c95c1..22d5d22 100644 --- a/src/xmlpatterns/schema/qxsdvalidatinginstancereader.cpp +++ b/src/xmlpatterns/schema/qxsdvalidatinginstancereader.cpp @@ -699,7 +699,7 @@ bool XsdValidatingInstanceReader::validateElementComplexType(const XsdElement::P if (complexType->contentType()->variety() == XsdComplexType::ContentType::Mixed) { if (declaration->valueConstraint() && declaration->valueConstraint()->variety() == XsdElement::ValueConstraint::Fixed) { if (hasChildElement()) { - error(QtXmlPatterns::tr("Element %1 cannot contain other elements, as it has a fixed content.").arg(formatKeyword(declaration->displayName(m_namePool)))); + error(QtXmlPatterns::tr("Element %1 cannot contain other elements, as it has fixed content.").arg(formatKeyword(declaration->displayName(m_namePool)))); return false; } diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index 72c32cb..08d59d3 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -39,6 +39,7 @@ contains(QT_CONFIG, private_tests) { qdeclarativedebug \ qdeclarativedebugclient \ qdeclarativedebugservice \ + qdeclarativedebugjs \ qdeclarativedom \ qdeclarativeecmascript \ qdeclarativeflickable \ diff --git a/tests/auto/declarative/qdeclarativedebug/qdeclarativedebug.pro b/tests/auto/declarative/qdeclarativedebug/qdeclarativedebug.pro index 1214fcf..d488b53 100644 --- a/tests/auto/declarative/qdeclarativedebug/qdeclarativedebug.pro +++ b/tests/auto/declarative/qdeclarativedebug/qdeclarativedebug.pro @@ -6,5 +6,5 @@ HEADERS += ../shared/debugutil_p.h SOURCES += tst_qdeclarativedebug.cpp \ ../shared/debugutil.cpp -CONFIG += parallel_test +CONFIG += parallel_test declarative_debug diff --git a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp index 9c20bd6..be9b402 100644 --- a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp +++ b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp @@ -52,14 +52,12 @@ #include <QtDeclarative/qdeclarativeproperty.h> #include <private/qdeclarativebinding_p.h> -#include <private/qdeclarativedebug_p.h> #include <private/qdeclarativeenginedebug_p.h> #include <private/qdeclarativedebugclient_p.h> #include <private/qdeclarativedebugservice_p.h> #include <private/qdeclarativerectangle_p.h> #include <private/qdeclarativemetatype_p.h> #include <private/qdeclarativeproperty_p.h> -#include <private/qdeclarativedebughelper_p.h> #include "../../../shared/util.h" #include "../shared/debugutil_p.h" @@ -296,9 +294,6 @@ void tst_QDeclarativeDebug::initTestCase() qRegisterMetaType<QDeclarativeDebugWatch::State>(); qmlRegisterType<NonScriptProperty>("Test", 1, 0, "NonScriptPropertyElement"); - QTest::ignoreMessage(QtWarningMsg, "Qml debugging is enabled. Only use this in a safe environment!"); - QDeclarativeDebugHelper::enableDebugging(); - QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 3768..."); m_engine = new QDeclarativeEngine(this); diff --git a/tests/auto/declarative/qdeclarativedebugclient/qdeclarativedebugclient.pro b/tests/auto/declarative/qdeclarativedebugclient/qdeclarativedebugclient.pro index a3afd99..8fa87d2 100644 --- a/tests/auto/declarative/qdeclarativedebugclient/qdeclarativedebugclient.pro +++ b/tests/auto/declarative/qdeclarativedebugclient/qdeclarativedebugclient.pro @@ -5,3 +5,5 @@ macx:CONFIG -= app_bundle HEADERS += ../shared/debugutil_p.h SOURCES += tst_qdeclarativedebugclient.cpp \ ../shared/debugutil.cpp + +CONFIG += declarative_debug diff --git a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp index d41cfa3..4846d67 100644 --- a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp +++ b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp @@ -47,11 +47,7 @@ #include <QtDeclarative/qdeclarativeengine.h> -#include <private/qdeclarativedebug_p.h> -#include <private/qdeclarativeenginedebug_p.h> #include <private/qdeclarativedebugclient_p.h> -#include <private/qdeclarativedebugservice_p.h> -#include <private/qdeclarativedebughelper_p.h> #include "../../../shared/util.h" #include "../shared/debugutil_p.h" @@ -73,9 +69,6 @@ private slots: void tst_QDeclarativeDebugClient::initTestCase() { - QTest::ignoreMessage(QtWarningMsg, "Qml debugging is enabled. Only use this in a safe environment!"); - QDeclarativeDebugHelper::enableDebugging(); - QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 13770..."); new QDeclarativeEngine(this); diff --git a/tests/auto/declarative/qdeclarativedebugjs/app/app.pro b/tests/auto/declarative/qdeclarativedebugjs/app/app.pro index 800c033..d1c0cdd 100644 --- a/tests/auto/declarative/qdeclarativedebugjs/app/app.pro +++ b/tests/auto/declarative/qdeclarativedebugjs/app/app.pro @@ -1,6 +1,7 @@ TEMPLATE = app QT += declarative +CONFIG += declarative_debug CONFIG += console CONFIG -= app_bundle diff --git a/tests/auto/declarative/qdeclarativedebugjs/app/main.cpp b/tests/auto/declarative/qdeclarativedebugjs/app/main.cpp index f5b830e..fe58502 100644 --- a/tests/auto/declarative/qdeclarativedebugjs/app/main.cpp +++ b/tests/auto/declarative/qdeclarativedebugjs/app/main.cpp @@ -44,13 +44,10 @@ #include <QDeclarativeComponent> #include <QDeclarativeEngine> #include <QStringList> -#include <QtDeclarative/private/qdeclarativedebughelper_p.h> #include <QtDeclarative/private/qdeclarativedebugservice_p.h> int main(int argc, char *argv[]) { - QDeclarativeDebugHelper::enableDebugging(); - QApplication app(argc, argv); const QUrl path = QUrl::fromLocalFile(app.arguments().last()); diff --git a/tests/auto/declarative/qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp b/tests/auto/declarative/qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp index 1990c0d..bad7b8f 100644 --- a/tests/auto/declarative/qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp +++ b/tests/auto/declarative/qdeclarativedebugjs/tst_qdeclarativedebugjs.cpp @@ -43,7 +43,6 @@ #include <QtDeclarative/QDeclarativeEngine> #include <QtDeclarative/private/qdeclarativedebugclient_p.h> #include <QtDeclarative/private/qdeclarativedebugservice_p.h> -#include <QtDeclarative/private/qdeclarativedebug_p.h> #include <QtDeclarative/private/qjsdebuggeragent_p.h> #include <QtCore/QFileInfo> #include <QtCore/QDir> @@ -1431,8 +1430,10 @@ void tst_QDeclarativeDebugJS::testCoverageRun() client.startCoverageRun(); client.startCoverageCompleted(); - QVERIFY(QDeclarativeDebugTest::waitForSignal(&client, SIGNAL(coverageScriptLoaded()))); - QVERIFY(QDeclarativeDebugTest::waitForSignal(&client, SIGNAL(coveragePosChanged()))); + + // The app might get "COVERAGE false" before anything is actually executed + //QVERIFY(QDeclarativeDebugTest::waitForSignal(&client, SIGNAL(coverageScriptLoaded()))); + //QVERIFY(QDeclarativeDebugTest::waitForSignal(&client, SIGNAL(coveragePosChanged()))); //QVERIFY(QDeclarativeDebugTest::waitForSignal(&client, SIGNAL(coverageFuncEntered()))); //QVERIFY(QDeclarativeDebugTest::waitForSignal(&client, SIGNAL(coverageFuncExited()))); } diff --git a/tests/auto/declarative/qdeclarativedebugservice/qdeclarativedebugservice.pro b/tests/auto/declarative/qdeclarativedebugservice/qdeclarativedebugservice.pro index a62e148..ca5a398 100644 --- a/tests/auto/declarative/qdeclarativedebugservice/qdeclarativedebugservice.pro +++ b/tests/auto/declarative/qdeclarativedebugservice/qdeclarativedebugservice.pro @@ -6,5 +6,5 @@ HEADERS += ../shared/debugutil_p.h SOURCES += tst_qdeclarativedebugservice.cpp \ ../shared/debugutil.cpp -CONFIG += parallel_test +CONFIG += parallel_test declarative_debug diff --git a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp index 3fa8bba..85d459b 100644 --- a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp +++ b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp @@ -46,10 +46,7 @@ #include <QThread> #include <QtDeclarative/qdeclarativeengine.h> -#include <private/qdeclarativedebughelper_p.h> -#include <private/qdeclarativedebug_p.h> -#include <private/qdeclarativeenginedebug_p.h> #include <private/qdeclarativedebugclient_p.h> #include <private/qdeclarativedebugservice_p.h> @@ -76,9 +73,6 @@ private slots: void tst_QDeclarativeDebugService::initTestCase() { - QTest::ignoreMessage(QtWarningMsg, "Qml debugging is enabled. Only use this in a safe environment!"); - QDeclarativeDebugHelper::enableDebugging(); - QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugServer: Waiting for connection on port 13769..."); new QDeclarativeEngine(this); diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp index 2cc2971..96bea68 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp +++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp @@ -43,6 +43,7 @@ #include <QtDeclarative/qdeclarativeengine.h> #include <QtDeclarative/qdeclarativecomponent.h> #include <QDebug> +#include <QtCore/qlibraryinfo.h> #include "../shared/testhttpserver.h" #include "../../../shared/util.h" @@ -70,6 +71,7 @@ private slots: void remoteImportWithUnquotedUri(); void versionNotInstalled(); void versionNotInstalled_data(); + void importPath(); }; #ifdef Q_OS_SYMBIAN @@ -308,6 +310,29 @@ void tst_qdeclarativemoduleplugin::versionNotInstalled() VERIFY_ERRORS(errorFile.toLatin1().constData()); } +void tst_qdeclarativemoduleplugin::importPath() +{ +#ifndef Q_OS_SYMBIAN + QSKIP("Import path order testing for Symbian only", SkipAll); +#else + QDeclarativeEngine engine; + QStringList imports = engine.importPathList(); + QString installImportsPath = QDir::cleanPath(QLibraryInfo::location(QLibraryInfo::ImportsPath)); + QString driveOrder(QLatin1String("ZABCDEFGHIJKLMNOPQRSTUVWXY")); + int lastOrder = 30; + foreach(QString import, imports) + { + if (import.endsWith(installImportsPath)) + { + int order = driveOrder.indexOf(import[0]); + QVERIFY(order < lastOrder); + lastOrder = order; + } + } + QVERIFY(lastOrder != 30); +#endif +} + QTEST_MAIN(tst_qdeclarativemoduleplugin) #include "tst_qdeclarativemoduleplugin.moc" diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index 33f74a9..4d8bd0b 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -156,6 +156,7 @@ private slots: void inputContextMouseHandler(); void inputMethodComposing(); void cursorRectangleSize(); + void deselect(); private: void simulateKey(QDeclarativeView *, int key, Qt::KeyboardModifiers modifiers = 0); @@ -2699,6 +2700,120 @@ void tst_qdeclarativetextedit::cursorRectangleSize() QCOMPARE(microFocusFromScene.size(), cursorRect.size()); QCOMPARE(microFocusFromApp.size(), cursorRect.size()); } + +void tst_qdeclarativetextedit::deselect() +{ + QDeclarativeView *canvas = createView(SRCDIR "/data/CursorRect.qml"); + QVERIFY(canvas->rootObject() != 0); + canvas->show(); + canvas->setFocus(); + QApplication::setActiveWindow(canvas); + QTest::qWaitForWindowShown(canvas); + + QDeclarativeTextEdit *textEdit = qobject_cast<QDeclarativeTextEdit *>(canvas->rootObject()); + QVERIFY(textEdit != 0); + + textEdit->setText("Select"); + + QSignalSpy selectionStartSpy(textEdit, SIGNAL(selectionStartChanged())); + QSignalSpy selectionEndSpy(textEdit, SIGNAL(selectionEndChanged())); + QSignalSpy selectionSpy(textEdit, SIGNAL(selectionChanged())); + + textEdit->select(5, 6); + + QCOMPARE(selectionStartSpy.count(), 1); + QCOMPARE(selectionEndSpy.count(), 1); + QCOMPARE(selectionSpy.count(), 1); + QCOMPARE(textEdit->selectionStart(), 5); + QCOMPARE(textEdit->selectionEnd(), 6); + QCOMPARE(textEdit->selectedText(), QLatin1String("t")); + QCOMPARE(textEdit->cursorPosition(), 6); + + textEdit->deselect(); + + QCOMPARE(selectionStartSpy.count(), 2); + QCOMPARE(selectionEndSpy.count(), 1); + QCOMPARE(selectionSpy.count(), 2); + QCOMPARE(textEdit->selectionStart(), textEdit->cursorPosition()); + QCOMPARE(textEdit->selectionEnd(), textEdit->cursorPosition()); + QCOMPARE(textEdit->selectedText(), QLatin1String("")); + QCOMPARE(textEdit->cursorPosition(), 6); + + textEdit->select(5, 6); + + QCOMPARE(selectionStartSpy.count(), 3); + QCOMPARE(selectionEndSpy.count(), 1); + QCOMPARE(selectionSpy.count(), 3); + QCOMPARE(textEdit->selectionStart(), 5); + QCOMPARE(textEdit->selectionEnd(), 6); + QCOMPARE(textEdit->selectedText(), QLatin1String("t")); + QCOMPARE(textEdit->cursorPosition(), 6); + + QKeyEvent leftArrowPress(QEvent::KeyPress, Qt::Key_Left, Qt::NoModifier); + QKeyEvent leftArrowRelese(QEvent::KeyRelease, Qt::Key_Left, Qt::NoModifier); + QApplication::sendEvent(canvas, &leftArrowPress); + QApplication::sendEvent(canvas, &leftArrowRelese); + + QCOMPARE(selectionStartSpy.count(), 3); + QCOMPARE(selectionEndSpy.count(), 2); + QCOMPARE(selectionSpy.count(), 4); + QCOMPARE(textEdit->selectionStart(), textEdit->cursorPosition()); + QCOMPARE(textEdit->selectionEnd(), textEdit->cursorPosition()); + QCOMPARE(textEdit->selectedText(), QLatin1String("")); + QCOMPARE(textEdit->cursorPosition(), 5); + + textEdit->select(5, 6); + + QCOMPARE(selectionStartSpy.count(), 3); + QCOMPARE(selectionEndSpy.count(), 3); + QCOMPARE(selectionSpy.count(), 5); + QCOMPARE(textEdit->selectionStart(), 5); + QCOMPARE(textEdit->selectionEnd(), 6); + QCOMPARE(textEdit->selectedText(), QLatin1String("t")); + QCOMPARE(textEdit->cursorPosition(), 6); + + QList<QInputMethodEvent::Attribute> attributes; + attributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, 0, 0, QVariant()); + QInputMethodEvent event(QLatin1String(""), attributes); + QApplication::sendEvent(canvas, &event); + + QCOMPARE(selectionStartSpy.count(), 4); + QCOMPARE(selectionEndSpy.count(), 4); + QCOMPARE(selectionSpy.count(), 6); + QCOMPARE(textEdit->selectionStart(), textEdit->cursorPosition()); + QCOMPARE(textEdit->selectionEnd(), textEdit->cursorPosition()); + QCOMPARE(textEdit->selectedText(), QLatin1String("")); + QCOMPARE(textEdit->cursorPosition(), 0); + + textEdit->setCursorPosition(1); + + QCOMPARE(selectionStartSpy.count(), 5); + QCOMPARE(selectionEndSpy.count(), 5); + QCOMPARE(selectionSpy.count(), 6); + + QKeyEvent leftArrowShiftPress(QEvent::KeyPress, Qt::Key_Left, Qt::ShiftModifier); + QKeyEvent leftArrowShiftRelese(QEvent::KeyRelease, Qt::Key_Left, Qt::ShiftModifier); + QApplication::sendEvent(canvas, &leftArrowShiftPress); + QApplication::sendEvent(canvas, &leftArrowShiftRelese); + + QCOMPARE(selectionStartSpy.count(), 6); + QCOMPARE(selectionEndSpy.count(), 5); + QCOMPARE(selectionSpy.count(), 7); + QCOMPARE(textEdit->selectionStart(), 0); + QCOMPARE(textEdit->selectionEnd(), 1); + QCOMPARE(textEdit->selectedText(), QLatin1String("S")); + QCOMPARE(textEdit->cursorPosition(), 0); + + QApplication::sendEvent(canvas, &event); + + QCOMPARE(selectionStartSpy.count(), 6); + QCOMPARE(selectionEndSpy.count(), 6); + QCOMPARE(selectionSpy.count(), 8); + QCOMPARE(textEdit->selectionStart(), textEdit->cursorPosition()); + QCOMPARE(textEdit->selectionEnd(), textEdit->cursorPosition()); + QCOMPARE(textEdit->selectedText(), QLatin1String("")); + QCOMPARE(textEdit->cursorPosition(), 0); +} QTEST_MAIN(tst_qdeclarativetextedit) #include "tst_qdeclarativetextedit.moc" diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index bb895bf..b077670 100644 --- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@ -147,6 +147,7 @@ private slots: void inputContextMouseHandler(); void inputMethodComposing(); void cursorRectangleSize(); + void deselect(); private: void simulateKey(QDeclarativeView *, int key); @@ -2367,7 +2368,7 @@ void tst_qdeclarativetextinput::openInputPanelOnFocus() QVERIFY(!view.testAttribute(Qt::WA_InputMethodEnabled)); // input method should not be enabled - // if TextEdit is read only. + // if TextInput is read only. input.setReadOnly(true); ic.openInputPanelReceived = false; input.setFocus(true); @@ -2815,6 +2816,120 @@ void tst_qdeclarativetextinput::cursorRectangleSize() QCOMPARE(microFocusFromApp.size(), cursorRect.size()); } +void tst_qdeclarativetextinput::deselect() +{ + QDeclarativeView *canvas = createView(SRCDIR "/data/positionAt.qml"); + QVERIFY(canvas->rootObject() != 0); + canvas->show(); + canvas->setFocus(); + QApplication::setActiveWindow(canvas); + QTest::qWaitForWindowShown(canvas); + + QDeclarativeTextInput *textInput = qobject_cast<QDeclarativeTextInput *>(canvas->rootObject()); + QVERIFY(textInput != 0); + + textInput->setText("Select"); + + QSignalSpy selectionStartSpy(textInput, SIGNAL(selectionStartChanged())); + QSignalSpy selectionEndSpy(textInput, SIGNAL(selectionEndChanged())); + QSignalSpy selectedTextSpy(textInput, SIGNAL(selectedTextChanged())); + + textInput->select(5, 6); + + QCOMPARE(selectionStartSpy.count(), 1); + QCOMPARE(selectionEndSpy.count(), 0); + QCOMPARE(selectedTextSpy.count(), 1); + QCOMPARE(textInput->selectionStart(), 5); + QCOMPARE(textInput->selectionEnd(), 6); + QCOMPARE(textInput->selectedText(), QLatin1String("t")); + QCOMPARE(textInput->cursorPosition(), 6); + + textInput->deselect(); + + QCOMPARE(selectionStartSpy.count(), 2); + QCOMPARE(selectionEndSpy.count(), 1); + QCOMPARE(selectedTextSpy.count(), 2); + QCOMPARE(textInput->selectionStart(), textInput->cursorPosition()); + QCOMPARE(textInput->selectionEnd(), textInput->cursorPosition()); + QCOMPARE(textInput->selectedText(), QLatin1String("")); + QCOMPARE(textInput->cursorPosition(), 6); + + textInput->select(5, 6); + + QCOMPARE(selectionStartSpy.count(), 3); + QCOMPARE(selectionEndSpy.count(), 1); + QCOMPARE(selectedTextSpy.count(), 3); + QCOMPARE(textInput->selectionStart(), 5); + QCOMPARE(textInput->selectionEnd(), 6); + QCOMPARE(textInput->selectedText(), QLatin1String("t")); + QCOMPARE(textInput->cursorPosition(), 6); + + QKeyEvent leftArrowPress(QEvent::KeyPress, Qt::Key_Left, Qt::NoModifier); + QKeyEvent leftArrowRelese(QEvent::KeyRelease, Qt::Key_Left, Qt::NoModifier); + QApplication::sendEvent(canvas, &leftArrowPress); + QApplication::sendEvent(canvas, &leftArrowRelese); + + QCOMPARE(selectionStartSpy.count(), 4); + QCOMPARE(selectionEndSpy.count(), 2); + QCOMPARE(selectedTextSpy.count(), 4); + QCOMPARE(textInput->selectionStart(), textInput->cursorPosition()); + QCOMPARE(textInput->selectionEnd(), textInput->cursorPosition()); + QCOMPARE(textInput->selectedText(), QLatin1String("")); + QCOMPARE(textInput->cursorPosition(), 5); + + textInput->select(5, 6); + + QCOMPARE(selectionStartSpy.count(), 4); + QCOMPARE(selectionEndSpy.count(), 3); + QCOMPARE(selectedTextSpy.count(), 5); + QCOMPARE(textInput->selectionStart(), 5); + QCOMPARE(textInput->selectionEnd(), 6); + QCOMPARE(textInput->selectedText(), QLatin1String("t")); + QCOMPARE(textInput->cursorPosition(), 6); + + QList<QInputMethodEvent::Attribute> attributes; + attributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, 0, 0, QVariant()); + QInputMethodEvent event(QLatin1String(""), attributes); + QApplication::sendEvent(canvas, &event); + + QCOMPARE(selectionStartSpy.count(), 5); + QCOMPARE(selectionEndSpy.count(), 4); + QCOMPARE(selectedTextSpy.count(), 6); + QCOMPARE(textInput->selectionStart(), textInput->cursorPosition()); + QCOMPARE(textInput->selectionEnd(), textInput->cursorPosition()); + QCOMPARE(textInput->selectedText(), QLatin1String("")); + QCOMPARE(textInput->cursorPosition(), 0); + + textInput->setCursorPosition(1); + + QCOMPARE(selectionStartSpy.count(), 6); + QCOMPARE(selectionEndSpy.count(), 5); + QCOMPARE(selectedTextSpy.count(), 6); + + QKeyEvent leftArrowShiftPress(QEvent::KeyPress, Qt::Key_Left, Qt::ShiftModifier); + QKeyEvent leftArrowShiftRelese(QEvent::KeyRelease, Qt::Key_Left, Qt::ShiftModifier); + QApplication::sendEvent(canvas, &leftArrowShiftPress); + QApplication::sendEvent(canvas, &leftArrowShiftRelese); + + QCOMPARE(selectionStartSpy.count(), 7); + QCOMPARE(selectionEndSpy.count(), 5); + QCOMPARE(selectedTextSpy.count(), 7); + QCOMPARE(textInput->selectionStart(), 0); + QCOMPARE(textInput->selectionEnd(), 1); + QCOMPARE(textInput->selectedText(), QLatin1String("S")); + QCOMPARE(textInput->cursorPosition(), 0); + + QApplication::sendEvent(canvas, &event); + + QCOMPARE(selectionStartSpy.count(), 8); + QCOMPARE(selectionEndSpy.count(), 6); + QCOMPARE(selectedTextSpy.count(), 8); + QCOMPARE(textInput->selectionStart(), textInput->cursorPosition()); + QCOMPARE(textInput->selectionEnd(), textInput->cursorPosition()); + QCOMPARE(textInput->selectedText(), QLatin1String("")); + QCOMPARE(textInput->cursorPosition(), 0); +} + QTEST_MAIN(tst_qdeclarativetextinput) #include "tst_qdeclarativetextinput.moc" diff --git a/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp b/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp index a83f6dd..e4c88cd 100644 --- a/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp +++ b/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp @@ -181,6 +181,14 @@ void tst_QNetworkCookie::parseSingleCookie_data() QTest::newRow("with-value-with-special4") << "a = \"\\\"\" " << cookie; cookie.setValue("\"\\\"a, b; c\\\"\""); QTest::newRow("with-value-with-special5") << "a = \"\\\"a, b; c\\\"\"" << cookie; + // RFC6265 states that cookie values shouldn't contain commas, but we still allow them + // since they are only reserved for future compatibility and other browsers do the same. + cookie.setValue(","); + QTest::newRow("with-value-with-special6") << "a = ," << cookie; + cookie.setValue(",b"); + QTest::newRow("with-value-with-special7") << "a = ,b" << cookie; + cookie.setValue("b,"); + QTest::newRow("with-value-with-special8") << "a = b," << cookie; cookie.setValue("b c"); QTest::newRow("with-value-with-whitespace") << "a = b c" << cookie; @@ -599,7 +607,6 @@ void tst_QNetworkCookie::parseSingleCookie() //QEXPECT_FAIL("network2", "QDateTime parsing problem: the date is beyond year 8000", Abort); QCOMPARE(result.count(), 1); - QEXPECT_FAIL("network3", "Cookie value contains commas, violating the HTTP spec", Abort); QCOMPARE(result.at(0), expectedCookie); result = QNetworkCookie::parseCookies(result.at(0).toRawForm()); @@ -634,48 +641,17 @@ void tst_QNetworkCookie::parseMultipleCookies_data() // reason: malformed NAME=VALUE pair QTest::newRow("invalid-05") << "foo" << list; QTest::newRow("invalid-06") << "=b" << list; - QTest::newRow("invalid-09") << "foo,a=b" << list; - QTest::newRow("invalid-11") << ";path=/" << list; + QTest::newRow("invalid-07") << ";path=/" << list; // reason: malformed expiration date string - QTest::newRow("invalid-12") << "a=b;expires=" << list; - QTest::newRow("invalid-13") << "a=b;expires=foobar" << list; - QTest::newRow("invalid-14") << "a=b;expires=foobar, abc" << list; - QTest::newRow("invalid-15") << "a=b;expires=foobar, dd-mmm-yyyy hh:mm:ss GMT; path=/" << list; - QTest::newRow("invalid-16") << "a=b;expires=foobar, 32-Caz-1999 24:01:60 GMT; path=/" << list; - - QNetworkCookie cookie; - cookie.setName("a"); - list += cookie; - cookie.setName("c"); - cookie.setValue("d"); - list += cookie; - QTest::newRow("two-1") << "a=,c=d" << list; - QTest::newRow("two-2") << "a=, c=d" << list; - QTest::newRow("two-3") << "a= ,c=d" << list; - QTest::newRow("two-4") << "a= , c=d" << list; - - list.clear(); - list += cookie; - cookie.setName("a"); - cookie.setValue(QByteArray()); - list += cookie; - QTest::newRow("two-5") << "c=d,a=" << list; - QTest::newRow("two-6") << "c=d, a=" << list; - QTest::newRow("two-7") << "c=d , a=" << list; - - cookie.setName("foo"); - cookie.setValue("bar"); - cookie.setPath("/"); - list += cookie; - QTest::newRow("complex-1") << "c=d, a=, foo=bar; path=/" << list; - - cookie.setName("baz"); - cookie.setDomain(".qt.nokia.com"); - list.prepend(cookie); - QTest::newRow("complex-2") << "baz=bar; path=/; domain=.qt.nokia.com, c=d,a=,foo=bar; path=/" << list; + QTest::newRow("invalid-08") << "a=b;expires=" << list; + QTest::newRow("invalid-09") << "a=b;expires=foobar" << list; + QTest::newRow("invalid-10") << "a=b;expires=foobar, abc" << list; + QTest::newRow("invalid-11") << "a=b;expires=foobar, dd-mmm-yyyy hh:mm:ss GMT; path=/" << list; + QTest::newRow("invalid-12") << "a=b;expires=foobar, 32-Caz-1999 24:01:60 GMT; path=/" << list; // cookies obtained from the network: + QNetworkCookie cookie; cookie = QNetworkCookie("id", "51706646077999719"); cookie.setDomain(".bluestreak.com"); cookie.setPath("/"); diff --git a/tests/auto/qnetworkrequest/tst_qnetworkrequest.cpp b/tests/auto/qnetworkrequest/tst_qnetworkrequest.cpp index 9052716..02d1e5a 100644 --- a/tests/auto/qnetworkrequest/tst_qnetworkrequest.cpp +++ b/tests/auto/qnetworkrequest/tst_qnetworkrequest.cpp @@ -414,7 +414,7 @@ void tst_QNetworkRequest::rawHeaderParsing_data() QTest::newRow("SetCookie-3") << QNetworkRequest::SetCookieHeader << qVariantFromValue(QList<QNetworkCookie>() << cookie << cookie2) << true << "Set-Cookie" - << "a=b; path=/, c=d"; + << "a=b; path=/\nc=d"; } void tst_QNetworkRequest::rawHeaderParsing() diff --git a/tests/auto/qstyle/tst_qstyle.cpp b/tests/auto/qstyle/tst_qstyle.cpp index 79c3ba8..a6c7a86 100644 --- a/tests/auto/qstyle/tst_qstyle.cpp +++ b/tests/auto/qstyle/tst_qstyle.cpp @@ -213,10 +213,10 @@ void tst_QStyle::testStyleFactory() #endif #ifdef Q_WS_WIN if (QSysInfo::WindowsVersion >= QSysInfo::WV_XP && - QSysInfo::WindowsVersion < QSysInfo::WV_NT_based) + (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based)) QVERIFY(keys.contains("WindowsXP")); if (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA && - QSysInfo::WindowsVersion < QSysInfo::WV_NT_based) + (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based)) QVERIFY(keys.contains("WindowsVista")); #endif diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index ee06b53..a881583 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -397,6 +397,9 @@ private slots: void minimizedWindowModeTransitions(); void normalWindowModeTransitions(); void focusSwitchClosesPopupMenu(); +#if !defined(Q_SYMBIAN_SEMITRANSPARENT_BG_SURFACE) + void opacityChangeCausesBackingStoreRecreation(); +#endif #endif void focusProxyAndInputMethods(); @@ -10334,7 +10337,47 @@ void tst_QWidget::focusSwitchClosesPopupMenu() mainWindow.activateWindow(); QVERIFY(!CEikonEnv::Static()->AppUiFactory()->MenuBar()->IsDisplayed()); } -#endif + +#if !defined(Q_SYMBIAN_SEMITRANSPARENT_BG_SURFACE) +class OpacityChangeWidget : public QWidget +{ +public: + OpacityChangeWidget() : m_paintEngineType(QPaintEngine::MaxUser) { } + void paintEvent(QPaintEvent *) + { + QPainter painter(this); + m_paintEngineType = painter.paintEngine()->type(); + } + QPaintEngine::Type paintEngineType() const { return m_paintEngineType; } +private: + QPaintEngine::Type m_paintEngineType; +}; + +void tst_QWidget::opacityChangeCausesBackingStoreRecreation() +{ + OpacityChangeWidget w; + w.show(); + QTest::qWaitForWindowShown(&w); + const QPaintEngine::Type type = w.paintEngineType(); + if (QPaintEngine::OpenGL != type && QPaintEngine::OpenVG != type) { + QSKIP("Test case is only valid when using opengl or openvg graphics system", SkipAll); + } else { + if (QApplicationPrivate::instance()->useTranslucentEGLSurfaces) { + QSKIP("Test case is only valid when EGL surface transparency is not supported", SkipAll); + } else { + // Making window transparent should force switch to raster graphics system + w.setAttribute(Qt::WA_TranslucentBackground, true); + w.repaint(); + QCOMPARE(w.paintEngineType(), QPaintEngine::Raster); + // Making window opaque should cause switch back to previous graphics system + w.setAttribute(Qt::WA_TranslucentBackground, false); + w.repaint(); + QCOMPARE(w.paintEngineType(), type); + } + } +} +#endif // !Q_SYMBIAN_SEMITRANSPARENT_BG_SURFACE +#endif // Q_OS_SYMBIAN class InputContextTester : public QInputContext { diff --git a/tools/linguist/lupdate/main.cpp b/tools/linguist/lupdate/main.cpp index ab88083..7337732 100644 --- a/tools/linguist/lupdate/main.cpp +++ b/tools/linguist/lupdate/main.cpp @@ -508,6 +508,9 @@ int main(int argc, char **argv) || arg == QLatin1String("-h")) { printUsage(); return 0; + } else if (arg == QLatin1String("-list-languages")) { + printOut(getNumerusInfoString()); + return 0; } else if (arg == QLatin1String("-pluralonly")) { options |= PluralOnly; continue; diff --git a/tools/linguist/shared/numerus.cpp b/tools/linguist/shared/numerus.cpp index ac519b5..1ab300c 100644 --- a/tools/linguist/shared/numerus.cpp +++ b/tools/linguist/shared/numerus.cpp @@ -361,13 +361,6 @@ static const NumerusTableEntry numerusTable[] = { static const int NumerusTableSize = sizeof(numerusTable) / sizeof(numerusTable[0]); -// magic number for the file -static const int MagicLength = 16; -static const uchar magic[MagicLength] = { - 0x3c, 0xb8, 0x64, 0x18, 0xca, 0xef, 0x9c, 0x95, - 0xcd, 0x21, 0x1c, 0xbf, 0x60, 0xa1, 0xbd, 0xdd -}; - bool getNumerusInfo(QLocale::Language language, QLocale::Country country, QByteArray *rules, QStringList *forms, const char **gettextRules) { @@ -401,4 +394,27 @@ bool getNumerusInfo(QLocale::Language language, QLocale::Country country, return false; } +QString getNumerusInfoString() +{ + QStringList langs; + + for (int i = 0; i < NumerusTableSize; ++i) { + const NumerusTableEntry &entry = numerusTable[i]; + for (int j = 0; entry.languages[j] != EOL; ++j) { + QLocale loc(entry.languages[j], entry.countries ? entry.countries[j] : QLocale::AnyCountry); + QString lang = QLocale::languageToString(entry.languages[j]); + if (loc.language() == QLocale::C) + lang += QLatin1String(" (!!!)"); + else if (entry.countries && entry.countries[j] != QLocale::AnyCountry) + lang += QLatin1String(" (") + QLocale::countryToString(loc.country()) + QLatin1Char(')'); + else + lang += QLatin1String(" [") + QLocale::countryToString(loc.country()) + QLatin1Char(']'); + langs << QString::fromLatin1("%1 %2 %3\n").arg(lang, -40).arg(loc.name(), -8) + .arg(QString::fromLatin1(entry.gettextRules)); + } + } + langs.sort(); + return langs.join(QString()); +} + QT_END_NAMESPACE diff --git a/tools/linguist/shared/translator.h b/tools/linguist/shared/translator.h index 3b7bd64..d0da527 100644 --- a/tools/linguist/shared/translator.h +++ b/tools/linguist/shared/translator.h @@ -254,6 +254,8 @@ private: bool getNumerusInfo(QLocale::Language language, QLocale::Country country, QByteArray *rules, QStringList *forms, const char **gettextRules); +QString getNumerusInfoString(); + bool saveQM(const Translator &translator, QIODevice &dev, ConversionData &cd); /* diff --git a/tools/porting/src/qt3headers0.resource b/tools/porting/src/qt3headers0.resource Binary files differindex 8e24385..1a3e8a0 100644 --- a/tools/porting/src/qt3headers0.resource +++ b/tools/porting/src/qt3headers0.resource diff --git a/translations/assistant_pl.ts b/translations/assistant_pl.ts index 87524a4..a173895 100644 --- a/translations/assistant_pl.ts +++ b/translations/assistant_pl.ts @@ -262,6 +262,10 @@ Powód: <translation>Adres</translation> </message> <message> + <source>Toolbar Menu</source> + <translation>Menu paska narzędzi</translation> + </message> + <message> <source>Bookmarks Menu</source> <translation>Menu zakładek</translation> </message> @@ -289,11 +293,11 @@ Powód: <name>CentralWidget</name> <message> <source>Add new page</source> - <translation>Dodaj nową stronę</translation> + <translation type="obsolete">Dodaj nową stronę</translation> </message> <message> <source>Close current page</source> - <translation>Zamknij bieżącą stronę</translation> + <translation type="obsolete">Zamknij bieżącą stronę</translation> </message> <message> <source>Print Document</source> @@ -301,27 +305,27 @@ Powód: </message> <message> <source>unknown</source> - <translation>nieznany</translation> + <translation type="obsolete">nieznany</translation> </message> <message> <source>Add New Page</source> - <translation>Dodaj nową stronę</translation> + <translation type="obsolete">Dodaj nową stronę</translation> </message> <message> <source>Close This Page</source> - <translation>Zamknij tą stronę</translation> + <translation type="obsolete">Zamknij tą stronę</translation> </message> <message> <source>Close Other Pages</source> - <translation>Zamknij inne strony</translation> + <translation type="obsolete">Zamknij inne strony</translation> </message> <message> <source>Add Bookmark for this Page...</source> - <translation>Dodaj zakładkę dla tej strony...</translation> + <translation type="obsolete">Dodaj zakładkę dla tej strony...</translation> </message> <message> <source>Search</source> - <translation>Wyszukaj</translation> + <translation type="obsolete">Wyszukaj</translation> </message> </context> <context> @@ -661,6 +665,49 @@ Powód: </message> </context> <context> + <name>GlobalActions</name> + <message> + <source>&Back</source> + <translation>&Wstecz</translation> + </message> + <message> + <source>&Forward</source> + <translation>W &przód</translation> + </message> + <message> + <source>&Home</source> + <translation>Strona &startowa</translation> + </message> + <message> + <source>ALT+Home</source> + <translation>ALT+Home</translation> + </message> + <message> + <source>Zoom &in</source> + <translation>Po&większ</translation> + </message> + <message> + <source>Zoom &out</source> + <translation>Po&mniejsz</translation> + </message> + <message> + <source>&Copy selected Text</source> + <translation>S&kopiuj zaznaczony tekst</translation> + </message> + <message> + <source>&Print...</source> + <translation>&Drukuj...</translation> + </message> + <message> + <source>&Find in Text...</source> + <translation>Znajdź w &tekście...</translation> + </message> + <message> + <source>&Find</source> + <translation>&Znajdź</translation> + </message> +</context> +<context> <name>HelpEngineWrapper</name> <message> <source>Unfiltered</source> @@ -685,16 +732,32 @@ Powód: <translation><title>Błąd 404...</title><div align="center"><br><br><h1>Strona nie może być znaleziona</h1><br><h3>'%1'</h3></div></translation> </message> <message> + <source>Open Link</source> + <translation>Otwórz odsyłacz</translation> + </message> + <message> <source>Copy &Link Location</source> <translation>Skopiuj &odsyłacz</translation> </message> <message> + <source>Copy</source> + <translation>Skopiuj</translation> + </message> + <message> + <source>Reload</source> + <translation>Przeładuj</translation> + </message> + <message> <source>Open Link in New Tab Ctrl+LMB</source> <translation>Otwórz odsyłacz w nowej karcie Ctrl+LMB</translation> </message> <message> <source>Open Link in New Tab</source> - <translation>Otwórz odsyłacz w nowej karcie</translation> + <translation type="obsolete">Otwórz odsyłacz w nowej karcie</translation> + </message> + <message> + <source>Open Link in New Page</source> + <translation>Otwórz odsyłacz na nowej stronie</translation> </message> </context> <context> @@ -902,7 +965,7 @@ Powód: </message> <message> <source>&Print...</source> - <translation>Wy&drukuj...</translation> + <translation type="obsolete">Wy&drukuj...</translation> </message> <message> <source>New &Tab</source> @@ -922,15 +985,15 @@ Powód: </message> <message> <source>&Copy selected Text</source> - <translation>S&kopiuj zaznaczony tekst</translation> + <translation type="obsolete">S&kopiuj zaznaczony tekst</translation> </message> <message> <source>&Find in Text...</source> - <translation>Znajdź w &tekście...</translation> + <translation type="obsolete">Znajdź w &tekście...</translation> </message> <message> <source>&Find</source> - <translation>&Znajdź</translation> + <translation type="obsolete">&Znajdź</translation> </message> <message> <source>Find &Next</source> @@ -946,11 +1009,11 @@ Powód: </message> <message> <source>Zoom &in</source> - <translation>Po&większ</translation> + <translation type="obsolete">Po&większ</translation> </message> <message> <source>Zoom &out</source> - <translation>Po&mniejsz</translation> + <translation type="obsolete">Po&mniejsz</translation> </message> <message> <source>Normal &Size</source> @@ -974,15 +1037,15 @@ Powód: </message> <message> <source>&Home</source> - <translation>Strona &startowa</translation> + <translation type="obsolete">Strona &startowa</translation> </message> <message> <source>&Back</source> - <translation>&Wstecz</translation> + <translation type="obsolete">&Wstecz</translation> </message> <message> <source>&Forward</source> - <translation>W &przód</translation> + <translation type="obsolete">W &przód</translation> </message> <message> <source>Sync with Table of Contents</source> @@ -1021,6 +1084,22 @@ Powód: <translation>Informacje o programie...</translation> </message> <message> + <source>Open Pages</source> + <translation>Otwarte strony</translation> + </message> + <message> + <source>Bookmark Toolbar</source> + <translation>Pasek z zakładkami</translation> + </message> + <message> + <source>E&xit</source> + <translation>Za&kończ</translation> + </message> + <message> + <source>ALT+P</source> + <translation>ALT+P</translation> + </message> + <message> <source>Navigation Toolbar</source> <translation>Pasek do nawigacji</translation> </message> @@ -1094,7 +1173,7 @@ Powód: </message> <message> <source>ALT+Home</source> - <translation>ALT+Home</translation> + <translation type="obsolete">ALT+Home</translation> </message> <message> <source>&Bookmarks</source> @@ -1110,6 +1189,17 @@ Powód: </message> </context> <context> + <name>OpenPagesWidget</name> + <message> + <source>Close %1</source> + <translation>Zamknij %1</translation> + </message> + <message> + <source>Close All Except %1</source> + <translation>Zamknij wszystko z wyjątkiem %1</translation> + </message> +</context> +<context> <name>OutputPage</name> <message> <source>Form</source> @@ -1328,6 +1418,14 @@ Czy chcesz go usunąć?</translation> <source>Blank Page</source> <translation>Pusta strona</translation> </message> + <message> + <source>Appearance</source> + <translation>Wygląd</translation> + </message> + <message> + <source>Show tabs for each individual page</source> + <translation>Pokazuj karty dla każdej otwartej strony</translation> + </message> </context> <context> <name>QCollectionGenerator</name> @@ -1527,6 +1625,29 @@ qhelpgenerator <plik-projektu-pomocy> [opcje] </message> </context> <context> + <name>TabBar</name> + <message> + <source>(Untitled)</source> + <translation>(Nienazwany)</translation> + </message> + <message> + <source>New &Tab</source> + <translation>Nowa kar&ta</translation> + </message> + <message> + <source>&Close Tab</source> + <translation>&Zamknij kartę</translation> + </message> + <message> + <source>Close Other Tabs</source> + <translation>Zamknij pozostałe karty</translation> + </message> + <message> + <source>Add Bookmark for this Page...</source> + <translation>Dodaj zakładkę dla tej strony...</translation> + </message> +</context> +<context> <name>TopicChooser</name> <message> <source>Choose a topic for <b>%1</b>:</source> diff --git a/translations/assistant_uk.ts b/translations/assistant_uk.ts index 73f5df5..d3bd284 100644 --- a/translations/assistant_uk.ts +++ b/translations/assistant_uk.ts @@ -259,6 +259,10 @@ Reason: <translation>Адреса</translation> </message> <message> + <source>Toolbar Menu</source> + <translation>Панель закладок</translation> + </message> + <message> <source>Bookmarks Menu</source> <translation>Меню закладок</translation> </message> @@ -285,41 +289,9 @@ Reason: <context> <name>CentralWidget</name> <message> - <source>Add new page</source> - <translation>Додати нову сторінку</translation> - </message> - <message> - <source>Close current page</source> - <translation>Закрити поточну сторінку</translation> - </message> - <message> <source>Print Document</source> <translation>Друкувати документ</translation> </message> - <message> - <source>unknown</source> - <translation>невідомо</translation> - </message> - <message> - <source>Add New Page</source> - <translation>Додати нову сторінку</translation> - </message> - <message> - <source>Close This Page</source> - <translation>Закрити цю сторінку</translation> - </message> - <message> - <source>Close Other Pages</source> - <translation>Закрити інші сторінки</translation> - </message> - <message> - <source>Add Bookmark for this Page...</source> - <translation>Додати закладку для цієї сторінки...</translation> - </message> - <message> - <source>Search</source> - <translation>Пошук</translation> - </message> </context> <context> <name>CmdLineParser</name> @@ -651,6 +623,49 @@ Reason: </message> </context> <context> + <name>GlobalActions</name> + <message> + <source>&Back</source> + <translation>&Назад</translation> + </message> + <message> + <source>&Forward</source> + <translation>&Вперед</translation> + </message> + <message> + <source>&Home</source> + <translation>&Домівка</translation> + </message> + <message> + <source>ALT+Home</source> + <translation></translation> + </message> + <message> + <source>Zoom &in</source> + <translation>З&більшити</translation> + </message> + <message> + <source>Zoom &out</source> + <translation>З&меншити</translation> + </message> + <message> + <source>&Copy selected Text</source> + <translation>&Копіювати виділений текст</translation> + </message> + <message> + <source>&Print...</source> + <translation>&Друк...</translation> + </message> + <message> + <source>&Find in Text...</source> + <translation>Пошук в &тексті...</translation> + </message> + <message> + <source>&Find</source> + <translation>По&шук</translation> + </message> +</context> +<context> <name>HelpEngineWrapper</name> <message> <source>Unfiltered</source> @@ -675,16 +690,28 @@ Reason: <translation><title>Помилка 404...</title><div align="center"><br><br><h1>Не вдалось знайти сторінку</h1><br><h3>'%1'</h3></div></translation> </message> <message> + <source>Open Link</source> + <translation>Відкрити посилання</translation> + </message> + <message> <source>Copy &Link Location</source> <translation>Копіювати &адресу посилання</translation> </message> <message> + <source>Copy</source> + <translation>Копіювати</translation> + </message> + <message> + <source>Reload</source> + <translation>Перезавантажити</translation> + </message> + <message> <source>Open Link in New Tab Ctrl+LMB</source> <translation>Відкрити посилання в новій вкладці Ctrl+LMB</translation> </message> <message> - <source>Open Link in New Tab</source> - <translation>Відкрити посилання в новій вкладці</translation> + <source>Open Link in New Page</source> + <translation>Відкрити посилання в новій сторінці</translation> </message> </context> <context> @@ -875,10 +902,18 @@ Reason: <translation>Закладки</translation> </message> <message> + <source>Open Pages</source> + <translation>Відкрити сторінки</translation> + </message> + <message> <source>Qt Assistant</source> <translation>Qt Assistant</translation> </message> <message> + <source>Bookmark Toolbar</source> + <translation>Панель закладок</translation> + </message> + <message> <source>Looking for Qt Documentation...</source> <translation>Пошук документації Qt...</translation> </message> @@ -899,10 +934,6 @@ Reason: <translation>Попередній перегляд...</translation> </message> <message> - <source>&Print...</source> - <translation>&Друк...</translation> - </message> - <message> <source>&Close Tab</source> <translation>&Закрити вкладку</translation> </message> @@ -919,18 +950,6 @@ Reason: <translation>&Правка</translation> </message> <message> - <source>&Copy selected Text</source> - <translation>&Копіювати виділений текст</translation> - </message> - <message> - <source>&Find in Text...</source> - <translation>Пошук в &тексті...</translation> - </message> - <message> - <source>&Find</source> - <translation>По&шук</translation> - </message> - <message> <source>Find &Next</source> <translation>Знайти &наступне</translation> </message> @@ -947,14 +966,6 @@ Reason: <translation>&Вид</translation> </message> <message> - <source>Zoom &in</source> - <translation>З&більшити</translation> - </message> - <message> - <source>Zoom &out</source> - <translation>З&меншити</translation> - </message> - <message> <source>Normal &Size</source> <translation>&Нормальний розмір</translation> </message> @@ -979,28 +990,20 @@ Reason: <translation>Пошук</translation> </message> <message> - <source>ALT+S</source> - <translation></translation> - </message> - <message> - <source>&Go</source> - <translation>П&ерейти</translation> - </message> - <message> - <source>&Home</source> - <translation>&Домівка</translation> + <source>E&xit</source> + <translation>Ви&йти</translation> </message> <message> - <source>ALT+Home</source> + <source>ALT+S</source> <translation></translation> </message> <message> - <source>&Back</source> - <translation>&Назад</translation> + <source>ALT+P</source> + <translation></translation> </message> <message> - <source>&Forward</source> - <translation>&Вперед</translation> + <source>&Go</source> + <translation>П&ерейти</translation> </message> <message> <source>Sync with Table of Contents</source> @@ -1100,6 +1103,17 @@ Reason: </message> </context> <context> + <name>OpenPagesWidget</name> + <message> + <source>Close %1</source> + <translation>Закрити %1</translation> + </message> + <message> + <source>Close All Except %1</source> + <translation>Закрити все, крім %1</translation> + </message> +</context> +<context> <name>OutputPage</name> <message> <source>Form</source> @@ -1318,6 +1332,14 @@ Do you want to remove it?</source> <source>Restore to default</source> <translation>Відновити типово</translation> </message> + <message> + <source>Appearance</source> + <translation>Зовнішій вигляд</translation> + </message> + <message> + <source>Show tabs for each individual page</source> + <translation>Показувати вкладки для кожної окремої сторінки</translation> + </message> </context> <context> <name>QCollectionGenerator</name> @@ -1519,6 +1541,29 @@ qhelpgenerator <файл-проекту-довідки> [опції] </message> </context> <context> + <name>TabBar</name> + <message> + <source>(Untitled)</source> + <translation>(Без назви)</translation> + </message> + <message> + <source>New &Tab</source> + <translation>&Нова вкладка</translation> + </message> + <message> + <source>&Close Tab</source> + <translation>&Закрити вкладку</translation> + </message> + <message> + <source>Close Other Tabs</source> + <translation>Закрити інші вкладки</translation> + </message> + <message> + <source>Add Bookmark for this Page...</source> + <translation>Додати закладку для цієї сторінки...</translation> + </message> +</context> +<context> <name>TopicChooser</name> <message> <source>Choose Topic</source> diff --git a/translations/designer_pl.ts b/translations/designer_pl.ts index c2b5eba..05b5a78 100644 --- a/translations/designer_pl.ts +++ b/translations/designer_pl.ts @@ -364,7 +364,7 @@ </message> <message> <source>page</source> - <translation>strona</translation> + <translation type="obsolete">strona</translation> </message> <message> <source>Insert Page</source> @@ -476,7 +476,7 @@ </message> <message> <source>subwindow</source> - <translation>podokno</translation> + <translation type="obsolete">podokno</translation> </message> <message> <source>Subwindow</source> @@ -530,6 +530,10 @@ <translation>Zmień rozmieszczenie widżetu '%1' z %2 na %3</translation> </message> <message> + <source>Change layout alignment</source> + <translation>Zmień wyrównanie w rozmieszczeniu</translation> + </message> + <message> <source>Change script</source> <translation>Zmień skrypt</translation> </message> @@ -876,8 +880,6 @@ <source>Invalid stretch value for '%1': '%2'</source> <extracomment>Parsing layout stretch values ---------- -Parsing layout stretch values ----------- Parsing layout stretch values</extracomment> <translation>Niepoprawna wartość rozciągniecia dla '%1': '%2'</translation> </message> @@ -885,8 +887,6 @@ Parsing layout stretch values</extracomment> <source>Invalid minimum size for '%1': '%2'</source> <extracomment>Parsing grid layout minimum size values ---------- -Parsing grid layout minimum size values ----------- Parsing grid layout minimum size values</extracomment> <translation>Niepoprawna wartość minimalna dla '%1': '%2'</translation> </message> @@ -1820,6 +1820,10 @@ Strony pojemników powinny być dodawane jedynie poprzez wyspecyfikowanie ich w <translation>&Plik</translation> </message> <message> + <source>&Edit</source> + <translation>&Edycja</translation> + </message> + <message> <source>F&orm</source> <translation>&Formularz</translation> </message> @@ -1857,7 +1861,7 @@ Strony pojemników powinny być dodawane jedynie poprzez wyspecyfikowanie ich w </message> <message> <source>Edit</source> - <translation>Edycja</translation> + <translation type="obsolete">Edycja</translation> </message> <message> <source>Toolbars</source> @@ -1902,8 +1906,6 @@ Strony pojemników powinny być dodawane jedynie poprzez wyspecyfikowanie ich w <source>An empty class name was passed on to %1 (object name: '%2').</source> <extracomment>Empty class name passed to widget factory method ---------- -Empty class name passed to widget factory method ----------- Empty class name passed to widget factory method</extracomment> <translation>Pusta nazwa klasy została przekazana do %1 (nazwa obiektu: '%2').</translation> </message> @@ -3741,6 +3743,10 @@ Czy chcesz nadpisać szablon?</translation> <translation>Odziedziczony</translation> </message> <message> + <source>[Theme] %1</source> + <translation>[Motyw] %1</translation> + </message> + <message> <source>Horizontal</source> <translation>Poziomo</translation> </message> @@ -3749,6 +3755,10 @@ Czy chcesz nadpisać szablon?</translation> <translation>Pionowo</translation> </message> <message> + <source>Theme</source> + <translation>Motyw</translation> + </message> + <message> <source>Normal Off</source> <translation>Normalny wyciśnięty</translation> </message> @@ -4337,6 +4347,17 @@ Czy chcesz nadpisać szablon?</translation> </message> </context> <context> + <name>qdesigner_internal::IconThemeDialog</name> + <message> + <source>Set Icon From Theme</source> + <translation>Ustaw ikonę dla motywu</translation> + </message> + <message> + <source>Input icon name from the current theme:</source> + <translation>Podaj nazwę ikony z bieżącego motywu:</translation> + </message> +</context> +<context> <name>qdesigner_internal::ItemListEditor</name> <message> <source>Properties &<<</source> @@ -4483,15 +4504,15 @@ Czy chcesz nadpisać szablon?</translation> </message> <message> <source>Shortcut:</source> - <translation>Skrót:</translation> + <translation type="obsolete">Skrót:</translation> </message> <message> <source>Checkable:</source> - <translation>Przełączalny:</translation> + <translation type="obsolete">Przełączalny:</translation> </message> <message> <source>ToolTip:</source> - <translation>Podpowiedź:</translation> + <translation type="obsolete">Podpowiedź:</translation> </message> <message> <source>...</source> @@ -4501,6 +4522,22 @@ Czy chcesz nadpisać szablon?</translation> <source>Object &name:</source> <translation>&Nazwa obiektu:</translation> </message> + <message> + <source>T&oolTip:</source> + <translation>&Podpowiedź:</translation> + </message> + <message> + <source>Icon th&eme:</source> + <translation>Ikonka z &motywu:</translation> + </message> + <message> + <source>&Checkable:</source> + <translation>P&rzełączalna:</translation> + </message> + <message> + <source>&Shortcut:</source> + <translation>&Skrót:</translation> + </message> </context> <context> <name>qdesigner_internal::NewDynamicPropertyDialog</name> @@ -4758,9 +4795,17 @@ Wybierz inną nazwę.</translation> <translation>Wybierz plik...</translation> </message> <message> + <source>Set Icon From Theme...</source> + <translation>Ustaw ikonkę z motywu...</translation> + </message> + <message> <source>...</source> <translation>...</translation> </message> + <message> + <source>[Theme] %1</source> + <translation>[Motyw] %1</translation> + </message> </context> <context> <name>qdesigner_internal::PlainTextEditorDialog</name> @@ -5136,6 +5181,42 @@ Klasa: %2</translation> <translation>Zmień sygnały/sloty...</translation> </message> <message> + <source>Layout Alignment</source> + <translation>Wyrównanie w rozmieszczeniu</translation> + </message> + <message> + <source>No Horizontal Alignment</source> + <translation>Brak poziomego wyrównania</translation> + </message> + <message> + <source>Left</source> + <translation>Do lewej</translation> + </message> + <message> + <source>Center Horizontally</source> + <translation>Wyśrodkuj w poziomie</translation> + </message> + <message> + <source>Right</source> + <translation>Do prawej</translation> + </message> + <message> + <source>No Vertical Alignment</source> + <translation>Brak pionowego wyrównania</translation> + </message> + <message> + <source>Top</source> + <translation>Do góry</translation> + </message> + <message> + <source>Center Vertically</source> + <translation>Wyśrodkuj w pionie</translation> + </message> + <message> + <source>Bottom</source> + <translation>Do dołu</translation> + </message> + <message> <source>Go to slot...</source> <translation>Przejdź do slotu...</translation> </message> @@ -5351,6 +5432,10 @@ Klasa: %2</translation> <source>Insert &Image</source> <translation>Wstaw &obrazek</translation> </message> + <message> + <source>Simplify Rich Text</source> + <translation>Uprość tekst sformatowany</translation> + </message> </context> <context> <name>qdesigner_internal::ScriptDialog</name> diff --git a/translations/designer_ru.ts b/translations/designer_ru.ts index 471a366..fdaeda3 100644 --- a/translations/designer_ru.ts +++ b/translations/designer_ru.ts @@ -872,8 +872,6 @@ <source>Invalid stretch value for '%1': '%2'</source> <extracomment>Parsing layout stretch values ---------- -Parsing layout stretch values ----------- Parsing layout stretch values</extracomment> <translation>Некорректный коэффициент растяжения для '%1': '%2'</translation> </message> @@ -881,8 +879,6 @@ Parsing layout stretch values</extracomment> <source>Invalid minimum size for '%1': '%2'</source> <extracomment>Parsing grid layout minimum size values ---------- -Parsing grid layout minimum size values ----------- Parsing grid layout minimum size values</extracomment> <translation>Некорректный минимальный размер для '%1': '%2'</translation> </message> @@ -1899,8 +1895,6 @@ Container pages should only be added by specifying them in XML returned by the d <source>An empty class name was passed on to %1 (object name: '%2').</source> <extracomment>Empty class name passed to widget factory method ---------- -Empty class name passed to widget factory method ----------- Empty class name passed to widget factory method</extracomment> <translation>Методу %1 (объекта '%2') было передано пустое имя класса.</translation> </message> diff --git a/translations/designer_uk.ts b/translations/designer_uk.ts index 7d1065c..4f45ff7 100644 --- a/translations/designer_uk.ts +++ b/translations/designer_uk.ts @@ -409,18 +409,10 @@ <translation>Видалити підвікно</translation> </message> <message> - <source>page</source> - <translation>сторінка</translation> - </message> - <message> <source>Insert Subwindow</source> <translation>Вставити підвікно</translation> </message> <message> - <source>subwindow</source> - <translation>підвікно</translation> - </message> - <message> <source>Subwindow</source> <translation>Підвікно</translation> </message> @@ -461,6 +453,10 @@ <translation>Змінити розташування '%1' з %2 на %3</translation> </message> <message> + <source>Change layout alignment</source> + <translation>Змінити вирівнювання розташування</translation> + </message> + <message> <source>Set action text</source> <translation>Встановити текст дії</translation> </message> @@ -876,8 +872,6 @@ <source>Invalid stretch value for '%1': '%2'</source> <extracomment>Parsing layout stretch values ---------- -Parsing layout stretch values ----------- Parsing layout stretch values</extracomment> <translation>Неправильне значення розтягування для '%1': '%2'</translation> </message> @@ -885,8 +879,6 @@ Parsing layout stretch values</extracomment> <source>Invalid minimum size for '%1': '%2'</source> <extracomment>Parsing grid layout minimum size values ---------- -Parsing grid layout minimum size values ----------- Parsing grid layout minimum size values</extracomment> <translation>Неправильне значення мінімального розміру для '%1': '%2'</translation> </message> @@ -1820,8 +1812,8 @@ Container pages should only be added by specifying them in XML returned by the d <translation>&Файл</translation> </message> <message> - <source>Edit</source> - <translation>Правка</translation> + <source>&Edit</source> + <translation>&Правка</translation> </message> <message> <source>F&orm</source> @@ -1902,8 +1894,6 @@ Container pages should only be added by specifying them in XML returned by the d <source>An empty class name was passed on to %1 (object name: '%2').</source> <extracomment>Empty class name passed to widget factory method ---------- -Empty class name passed to widget factory method ----------- Empty class name passed to widget factory method</extracomment> <translation>До %1 було передане пусте ім'я класу (ім'я об'єкта: '%2').</translation> </message> @@ -3741,6 +3731,10 @@ Do you want overwrite the template?</source> <translation>Успадкована</translation> </message> <message> + <source>[Theme] %1</source> + <translation>[Тема] %1</translation> + </message> + <message> <source>Horizontal</source> <translation>Горизонтальне</translation> </message> @@ -3749,6 +3743,10 @@ Do you want overwrite the template?</source> <translation>Вертикальне</translation> </message> <message> + <source>Theme</source> + <translation>Тема</translation> + </message> + <message> <source>Normal Off</source> <translation>Нормальний, вимк</translation> </message> @@ -4337,6 +4335,17 @@ Do you want overwrite the template?</source> </message> </context> <context> + <name>qdesigner_internal::IconThemeDialog</name> + <message> + <source>Set Icon From Theme</source> + <translation>Встановити піктограму з теми</translation> + </message> + <message> + <source>Input icon name from the current theme:</source> + <translation>Введіть назву піктограми з поточної теми:</translation> + </message> +</context> +<context> <name>qdesigner_internal::ItemListEditor</name> <message> <source>Items List</source> @@ -4486,20 +4495,24 @@ Do you want overwrite the template?</source> <translation>&Значок:</translation> </message> <message> - <source>Shortcut:</source> - <translation>Поєднання клавіш:</translation> + <source>...</source> + <translation>...</translation> </message> <message> - <source>Checkable:</source> - <translation>Прапорець:</translation> + <source>T&oolTip:</source> + <translation>Спливаюча &підказка:</translation> </message> <message> - <source>ToolTip:</source> - <translation>Спливаюча підказка:</translation> + <source>Icon th&eme:</source> + <translation>Те&ма значків:</translation> </message> <message> - <source>...</source> - <translation>...</translation> + <source>&Checkable:</source> + <translation>П&рапорець:</translation> + </message> + <message> + <source>&Shortcut:</source> + <translation>Поєднання клаві&ш:</translation> </message> </context> <context> @@ -4750,6 +4763,10 @@ Please select another name.</source> <translation>Оберіть файл...</translation> </message> <message> + <source>Set Icon From Theme...</source> + <translation>Встановити піктограму з теми...</translation> + </message> + <message> <source>Copy Path</source> <translation>Копіювати шлях</translation> </message> @@ -4761,6 +4778,10 @@ Please select another name.</source> <source>...</source> <translation>...</translation> </message> + <message> + <source>[Theme] %1</source> + <translation>[Тема] %1</translation> + </message> </context> <context> <name>qdesigner_internal::PlainTextEditorDialog</name> @@ -5084,6 +5105,42 @@ Class: %2</source> <context> <name>qdesigner_internal::QDesignerTaskMenu</name> <message> + <source>Layout Alignment</source> + <translation>Вирівнювання розташування</translation> + </message> + <message> + <source>No Horizontal Alignment</source> + <translation>Без горизонтального вирівнювання</translation> + </message> + <message> + <source>Left</source> + <translation>Вліво</translation> + </message> + <message> + <source>Center Horizontally</source> + <translation>Центрувати горизонтально</translation> + </message> + <message> + <source>Right</source> + <translation>Вправо</translation> + </message> + <message> + <source>No Vertical Alignment</source> + <translation>Без вертикального вирівнювання</translation> + </message> + <message> + <source>Top</source> + <translation>Догори</translation> + </message> + <message> + <source>Center Vertically</source> + <translation>Центрувати вертикально</translation> + </message> + <message> + <source>Bottom</source> + <translation>Донизу</translation> + </message> + <message> <source>Change objectName...</source> <translation>Змінити objectName...</translation> </message> @@ -5351,6 +5408,10 @@ Class: %2</source> <source>Insert &Image</source> <translation>Вставити &зображення</translation> </message> + <message> + <source>Simplify Rich Text</source> + <translation>Спростити форматований текст</translation> + </message> </context> <context> <name>qdesigner_internal::ScriptDialog</name> diff --git a/translations/qt_ko.ts b/translations/qt_ko.ts index c7ab8e3..b9e30f5 100644 --- a/translations/qt_ko.ts +++ b/translations/qt_ko.ts @@ -6328,11 +6328,11 @@ Do you want to overwrite it?</source> </message> <message> <source>Touroku</source> - <translation type="unfinished"></translation> + <translation>단어 등록</translation> </message> <message> <source>Massyo</source> - <translation type="unfinished"></translation> + <translation>단어 지움</translation> </message> <message> <source>Kana Lock</source> @@ -6344,11 +6344,11 @@ Do you want to overwrite it?</source> </message> <message> <source>Eisu Shift</source> - <translation type="unfinished"></translation> + <translation>한자 Shift</translation> </message> <message> <source>Eisu toggle</source> - <translation type="unfinished"></translation> + <translation>한자 반전</translation> </message> <message> <source>Code input</source> diff --git a/translations/qt_pl.ts b/translations/qt_pl.ts index 0c9c01e..c1a7a03 100644 --- a/translations/qt_pl.ts +++ b/translations/qt_pl.ts @@ -9,9 +9,24 @@ </message> </context> <context> + <name>Debugger::JSAgentWatchData</name> + <message> + <source>[Array of length %1]</source> + <translation>[Tablica o długości %1]</translation> + </message> + <message> + <source><undefined></source> + <translation><niezdefiniowanej></translation> + </message> +</context> +<context> <name>FakeReply</name> <message> <source>Fake error !</source> + <translation type="obsolete">Fałszywy błąd!</translation> + </message> + <message> + <source>Fake error!</source> <translation>Fałszywy błąd!</translation> </message> <message> @@ -397,7 +412,7 @@ zainstalowałeś libgstreamer-plugins-base.</translation> </message> <message> <source>Reflections delay (ms)</source> - <extracomment>ReflectionsDelay: Amount of delay between the arrival the direct path from the source and the arrival of the first reflection.</extracomment> + <extracomment>ReflectionsDelay: Amount of delay between the arrival of the direct path from the source and the arrival of the first reflection.</extracomment> <translation>Opóźnienie odbić (ms)</translation> </message> <message> @@ -412,7 +427,7 @@ zainstalowałeś libgstreamer-plugins-base.</translation> </message> <message> <source>Reverb level (mB)</source> - <extracomment>ReverbLevel Amplitude of reverberations. This value is corrected by the RoomLevel to give the final reverberation amplitude.</extracomment> + <extracomment>ReverbLevel: Amplitude of reverberations. This value is corrected by the RoomLevel to give the final reverberation amplitude.</extracomment> <translation>Poziom pogłosu (mB)</translation> </message> <message> @@ -470,8 +485,12 @@ zainstalowałeś libgstreamer-plugins-base.</translation> <translation>Głośność: %1%</translation> </message> <message> + <source>Use this slider to adjust the volume. The leftmost position is 0%. The rightmost is %1%</source> + <translation>Użyj tego suwaka aby zmienić głośność. Skrajnie lewa pozycja to 0%. Skrajnie prawa to %1%</translation> + </message> + <message> <source>Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1%</source> - <translation>Użyj tego suwaka aby zmienić głośność. Skrajnie lewa pozycja to 0%, skrajnie prawa to %1%</translation> + <translation type="obsolete">Użyj tego suwaka aby zmienić głośność. Skrajnie lewa pozycja to 0%, skrajnie prawa to %1%</translation> </message> <message> <source>Muted</source> @@ -1062,6 +1081,14 @@ na <context> <name>QAccessibleButton</name> <message> + <source>Uncheck</source> + <translation>Odznacz</translation> + </message> + <message> + <source>Check</source> + <translation>Zaznacz</translation> + </message> + <message> <source>Press</source> <translation>Wciśnij</translation> </message> @@ -2365,7 +2392,7 @@ na </message> <message> <source>Reset</source> - <translation>Resetuj</translation> + <translation>Zresetuj</translation> </message> <message> <source>Restore Defaults</source> @@ -2500,6 +2527,10 @@ na <source>Cannot create %1 for output</source> <translation>Nie można utworzyć pliku wyjściowego %1</translation> </message> + <message> + <source>No file engine available or engine does not support UnMapExtension</source> + <translation>Brak dostępnego silnika lub silnik nie obsługuje UnMapExtension</translation> + </message> </context> <context> <name>QFileDialog</name> @@ -3471,6 +3502,18 @@ Proszę o sprawdzenie podanej nazwy pliku.</translation> <source>Cannot resolve symbol "%1" in %2: %3</source> <translation>Nie można zidentyfikować symbolu "%1" w %2: %3</translation> </message> + <message> + <source>'%1' is not an ELF object (%2)</source> + <translation>"%1" nie jest obiektem ELF (%2)</translation> + </message> + <message> + <source>'%1' is not an ELF object</source> + <translation>"%1" nie jest obiektem ELF</translation> + </message> + <message> + <source>'%1' is an invalid ELF object (%2)</source> + <translation>"%1" jest niepoprawnym obiektem ELF (%2)</translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3568,6 +3611,10 @@ Proszę o sprawdzenie podanej nazwy pliku.</translation> <source>%1: Unknown error %2</source> <translation>%1: Nieznany błąd %2</translation> </message> + <message> + <source>%1: Access denied</source> + <translation>%1: Odmowa dostępu</translation> + </message> </context> <context> <name>QMYSQLDriver</name> @@ -3577,7 +3624,7 @@ Proszę o sprawdzenie podanej nazwy pliku.</translation> </message> <message> <source>Unable to commit transaction</source> - <translation>Nie można potwierdzić transakcji</translation> + <translation>Nie można dokonać transakcji</translation> </message> <message> <source>Unable to connect</source> @@ -3620,7 +3667,7 @@ Proszę o sprawdzenie podanej nazwy pliku.</translation> </message> <message> <source>Unable to reset statement</source> - <translation>Nie można skasować polecenia</translation> + <translation>Nie można zresetować polecenia</translation> </message> <message> <source>Unable to store result</source> @@ -3742,6 +3789,10 @@ Proszę o sprawdzenie podanej nazwy pliku.</translation> <source>Actions</source> <translation>Akcje</translation> </message> + <message> + <source>Corner Toolbar</source> + <translation>Narożny pasek narzędzi</translation> + </message> </context> <context> <name>QMessageBox</name> @@ -3910,7 +3961,7 @@ Proszę o sprawdzenie podanej nazwy pliku.</translation> <name>QNetworkAccessDataBackend</name> <message> <source>Operation not supported on %1</source> - <translation>Operacja nieobsługiwana na %1</translation> + <translation type="obsolete">Operacja nieobsługiwana na %1</translation> </message> <message> <source>Invalid URI: %1</source> @@ -4007,6 +4058,10 @@ Proszę o sprawdzenie podanej nazwy pliku.</translation> <translation>Błąd sesji sieciowej.</translation> </message> <message> + <source>backend start error.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Temporary network failure.</source> <translation>Chwilowy błąd w sieci.</translation> </message> @@ -4123,7 +4178,7 @@ Proszę o sprawdzenie podanej nazwy pliku.</translation> <name>QODBCDriver</name> <message> <source>Unable to commit transaction</source> - <translation>Nie można potwierdzić transakcji</translation> + <translation>Nie można dokonać transakcji</translation> </message> <message> <source>Unable to connect</source> @@ -4199,6 +4254,10 @@ Proszę o sprawdzenie podanej nazwy pliku.</translation> <source>invalid query: "%1"</source> <translation>Niepoprawne zapytanie: "%1"</translation> </message> + <message> + <source>Host not found</source> + <translation>Host nie znaleziony</translation> + </message> </context> <context> <name>QPPDOptionsModel</name> @@ -4219,7 +4278,7 @@ Proszę o sprawdzenie podanej nazwy pliku.</translation> </message> <message> <source>Could not commit transaction</source> - <translation>Nie można potwierdzić transakcji</translation> + <translation>Nie można dokonać transakcji</translation> </message> <message> <source>Could not rollback transaction</source> @@ -5092,7 +5151,7 @@ Proszę wybrać inną nazwę pliku.</translation> </message> <message> <source>Unable to reset statement</source> - <translation>Nie można skasować polecenia</translation> + <translation>Nie można zresetować polecenia</translation> </message> <message> <source>No query</source> @@ -5500,6 +5559,10 @@ Proszę wybrać inną nazwę pliku.</translation> <translation>%1: ograniczenia rozmiarów narzucone przez system</translation> </message> <message> + <source>%1: bad name</source> + <translation>%1: zła nazwa</translation> + </message> + <message> <source>%1: not attached</source> <translation>%1: niedołączony</translation> </message> @@ -5509,7 +5572,7 @@ Proszę wybrać inną nazwę pliku.</translation> </message> <message> <source>%1: key error</source> - <translation>%1: błąd klucza</translation> + <translation type="obsolete">%1: błąd klucza</translation> </message> <message> <source>%1: size query failed</source> @@ -6491,6 +6554,10 @@ Proszę wybrać inną nazwę pliku.</translation> <name>QSoftKeyManager</name> <message> <source>Ok</source> + <translation type="obsolete">OK</translation> + </message> + <message> + <source>OK</source> <translation>OK</translation> </message> <message> @@ -6735,6 +6802,187 @@ Proszę wybrać inną nazwę pliku.</translation> </message> </context> <context> + <name>QSymSQLDriver</name> + <message> + <source>Invalid option: </source> + <translation>Niepoprawna opcja: </translation> + </message> + <message> + <source>Error opening database</source> + <translation>Błąd otwierania bazy danych</translation> + </message> + <message> + <source>POLICY_DB_DEFAULT must be defined before any other POLICY definitions can be used</source> + <translation>POLICY_DB_DEFAULT musi być zdefiniowane przed użyciem definicji POLICY</translation> + </message> + <message> + <source>Unable to begin transaction</source> + <translation>Nie można rozpocząć transakcji</translation> + </message> + <message> + <source>Unable to commit transaction</source> + <translation>Nie można dokonać transakcji</translation> + </message> + <message> + <source>Unable to rollback transaction</source> + <translation>Nie można wycofać transakcji</translation> + </message> +</context> +<context> + <name>QSymSQLResult</name> + <message> + <source>Error retrieving column count</source> + <translation>Błąd pobierania liczby kolumn</translation> + </message> + <message> + <source>Error retrieving column name</source> + <translation>Błąd pobierania nazwy kolumny</translation> + </message> + <message> + <source>Error retrieving column type</source> + <translation>Błąd pobierania typu kolumny</translation> + </message> + <message> + <source>Unable to fetch row</source> + <translation>Nie można pobrać wiersza danych</translation> + </message> + <message> + <source>Unable to execute statement</source> + <translation>Nie można wykonać polecenia</translation> + </message> + <message> + <source>Statement is not prepared</source> + <translation>Polecenie nie jest przygotowane</translation> + </message> + <message> + <source>Unable to reset statement</source> + <translation>Nie można zresetować polecenia</translation> + </message> + <message> + <source>Unable to bind parameters</source> + <translation>Nie można powiązać parametrów</translation> + </message> + <message> + <source>Parameter count mismatch</source> + <translation>Niezgodna liczba parametrów</translation> + </message> +</context> +<context> + <name>QSymbianSocketEngine</name> + <message> + <source>Unable to initialize non-blocking socket</source> + <translation>Nie można zainicjalizować gniazda w trybie nieblokującym</translation> + </message> + <message> + <source>Unable to initialize broadcast socket</source> + <translation>Nie można zainicjalizować gniazda rozsyłającego</translation> + </message> + <message> + <source>Attempt to use IPv6 socket on a platform with no IPv6 support</source> + <translation>Próba użycia IPv6 na platformie bez obsługi IPv6</translation> + </message> + <message> + <source>The remote host closed the connection</source> + <translation>Zdalny host zakończył połączenie</translation> + </message> + <message> + <source>Network operation timed out</source> + <translation>Przekroczony czas operacji sieciowej</translation> + </message> + <message> + <source>Out of resources</source> + <translation>Zasoby wyczerpane</translation> + </message> + <message> + <source>Unsupported socket operation</source> + <translation>Nieobsługiwana operacja gniazda</translation> + </message> + <message> + <source>Protocol type not supported</source> + <translation>Nieobsługiwany typ protokołu</translation> + </message> + <message> + <source>Invalid socket descriptor</source> + <translation>Niepoprawny opis gniazda</translation> + </message> + <message> + <source>Host unreachable</source> + <translation>Host niedostępny</translation> + </message> + <message> + <source>Network unreachable</source> + <translation>Sieć niedostępna</translation> + </message> + <message> + <source>Permission denied</source> + <translation>Brak uprawnień</translation> + </message> + <message> + <source>Connection timed out</source> + <translation>Przekroczony czas połączenia</translation> + </message> + <message> + <source>Connection refused</source> + <translation>Połączenie odrzucone</translation> + </message> + <message> + <source>The bound address is already in use</source> + <translation>Adres jest aktualnie w użyciu</translation> + </message> + <message> + <source>The address is not available</source> + <translation>Adres nie jest dostępny</translation> + </message> + <message> + <source>The address is protected</source> + <translation>Adres jest zabezpieczony</translation> + </message> + <message> + <source>Datagram was too large to send</source> + <translation>Datagram za długi do wysłania</translation> + </message> + <message> + <source>Unable to send a message</source> + <translation>Nie można wysłać wiadomości</translation> + </message> + <message> + <source>Unable to receive a message</source> + <translation>Nie można odebrać wiadomości</translation> + </message> + <message> + <source>Unable to write</source> + <translation>Nie można zapisać</translation> + </message> + <message> + <source>Network error</source> + <translation>Błąd sieci</translation> + </message> + <message> + <source>Another socket is already listening on the same port</source> + <translation>Inne gniazdo nasłuchuje już na tym porcie</translation> + </message> + <message> + <source>Operation on non-socket</source> + <translation>Operacja na nieprawidłowym gnieździe</translation> + </message> + <message> + <source>The proxy type is invalid for this operation</source> + <translation>Typ pośrednika nie jest poprawny dla tej operacji</translation> + </message> + <message> + <source>The address is invalid for this operation</source> + <translation>Niepoprawny adres dla tej operacji</translation> + </message> + <message> + <source>The specified network session is not opened</source> + <translation>Podana sesja sieciowa nie jest otwarta</translation> + </message> + <message> + <source>Unknown error</source> + <translation>Nieznany błąd</translation> + </message> +</context> +<context> <name>QSystemSemaphore</name> <message> <source>%1: out of resources</source> @@ -6753,6 +7001,10 @@ Proszę wybrać inną nazwę pliku.</translation> <translation>%1: nie istnieje</translation> </message> <message> + <source>%1: name error</source> + <translation>%1: błąd nazwy</translation> + </message> + <message> <source>%1: unknown error %2</source> <translation>%1: nieznany błąd %2</translation> </message> @@ -6843,12 +7095,30 @@ Proszę wybrać inną nazwę pliku.</translation> <name>QUndoGroup</name> <message> <source>Redo</source> - <translation>Przywróć</translation> + <translation type="obsolete">Przywróć</translation> </message> <message> <source>Undo</source> + <translation type="obsolete">Cofnij</translation> + </message> + <message> + <source>Undo %1</source> + <translation>Cofnij %1</translation> + </message> + <message> + <source>Undo</source> + <comment>Default text for undo action</comment> <translation>Cofnij</translation> </message> + <message> + <source>Redo %1</source> + <translation>Przywróć %1</translation> + </message> + <message> + <source>Redo</source> + <comment>Default text for redo action</comment> + <translation>Przywróć</translation> + </message> </context> <context> <name>QUndoModel</name> @@ -6861,12 +7131,30 @@ Proszę wybrać inną nazwę pliku.</translation> <name>QUndoStack</name> <message> <source>Redo</source> - <translation>Przywróć</translation> + <translation type="obsolete">Przywróć</translation> </message> <message> <source>Undo</source> + <translation type="obsolete">Cofnij</translation> + </message> + <message> + <source>Undo %1</source> + <translation>Cofnij %1</translation> + </message> + <message> + <source>Undo</source> + <comment>Default text for undo action</comment> <translation>Cofnij</translation> </message> + <message> + <source>Redo %1</source> + <translation>Przywróć %1</translation> + </message> + <message> + <source>Redo</source> + <comment>Default text for redo action</comment> + <translation>Przywróć</translation> + </message> </context> <context> <name>QUnicodeControlCharacterMenu</name> @@ -6922,6 +7210,10 @@ Proszę wybrać inną nazwę pliku.</translation> <translation>Prośba anulowana</translation> </message> <message> + <source>Request canceled</source> + <translation>Prośba anulowana</translation> + </message> + <message> <source>Request blocked</source> <translation>Prośba zablokowana</translation> </message> @@ -6941,6 +7233,10 @@ Proszę wybrać inną nazwę pliku.</translation> <source>File does not exist</source> <translation>Plik nie istnieje</translation> </message> + <message> + <source>Loading is handled by the media engine</source> + <translation>Ładowanie jest obsługiwane przez silnik mediów</translation> + </message> </context> <context> <name>QWebPage</name> @@ -6957,7 +7253,7 @@ Proszę wybrać inną nazwę pliku.</translation> <message> <source>Reset</source> <comment>default label for Reset buttons in forms on web pages</comment> - <translation>Wyczyść</translation> + <translation>Zresetuj</translation> </message> <message> <source>Choose File</source> @@ -6970,6 +7266,11 @@ Proszę wybrać inną nazwę pliku.</translation> <translation>Nie zaznaczono pliku</translation> </message> <message> + <source>Details</source> + <comment>text to display in <details> tag when it has no <summary> child</comment> + <translation>Szczegóły</translation> + </message> + <message> <source>Open in New Window</source> <comment>Open in New Window context menu item</comment> <translation>Otwórz w nowym oknie</translation> @@ -7000,6 +7301,61 @@ Proszę wybrać inną nazwę pliku.</translation> <translation>Skopiuj obrazek</translation> </message> <message> + <source>Copy Image Address</source> + <comment>Copy Image Address menu item</comment> + <translation>Skopiuj adres obrazka</translation> + </message> + <message> + <source>Open Video</source> + <comment>Open Video in New Window</comment> + <translation>Otwórz wideo</translation> + </message> + <message> + <source>Open Audio</source> + <comment>Open Audio in New Window</comment> + <translation>Otwórz dźwięk</translation> + </message> + <message> + <source>Copy Video</source> + <comment>Copy Video Link Location</comment> + <translation>Skopiuj wideo</translation> + </message> + <message> + <source>Copy Audio</source> + <comment>Copy Audio Link Location</comment> + <translation>Skopiuj dźwięk</translation> + </message> + <message> + <source>Toggle Controls</source> + <comment>Toggle Media Controls</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Toggle Loop</source> + <comment>Toggle Media Loop Playback</comment> + <translation type="unfinished"></translation> + </message> + <message> + <source>Enter Fullscreen</source> + <comment>Switch Video to Fullscreen</comment> + <translation>Pełny ekran</translation> + </message> + <message> + <source>Play</source> + <comment>Play</comment> + <translation>Odtwórz</translation> + </message> + <message> + <source>Pause</source> + <comment>Pause</comment> + <translation>Pauza</translation> + </message> + <message> + <source>Mute</source> + <comment>Mute</comment> + <translation>Wycisz</translation> + </message> + <message> <source>Open Frame</source> <comment>Open Frame in New Window context menu item</comment> <translation>Otwórz ramkę</translation> @@ -7040,6 +7396,11 @@ Proszę wybrać inną nazwę pliku.</translation> <translation>Wklej</translation> </message> <message> + <source>Select All</source> + <comment>Select All context menu item</comment> + <translation>Zaznacz wszystko</translation> + </message> + <message> <source>No Guesses Found</source> <comment>No Guesses Found context menu item</comment> <translation>Nie odnaleziono podpowiedzi</translation> @@ -7379,7 +7740,7 @@ Proszę wybrać inną nazwę pliku.</translation> </message> <message> <source>Bad HTTP request</source> - <translation>Niepoprawna komenda HTTP</translation> + <translation type="obsolete">Niepoprawna komenda HTTP</translation> </message> <message> <source>This is a searchable index. Enter search keywords: </source> @@ -7532,7 +7893,7 @@ Proszę wybrać inną nazwę pliku.</translation> </message> <message> <source>Select all</source> - <translation>Zaznacz wszystko</translation> + <translation type="obsolete">Zaznacz wszystko</translation> </message> <message> <source>Select to the next character</source> @@ -8029,6 +8390,94 @@ Proszę wybrać inną nazwę pliku.</translation> </message> </context> <context> + <name>QmlJSDebugger::LiveSelectionTool</name> + <message> + <source>Items</source> + <translation>Elementy</translation> + </message> +</context> +<context> + <name>QmlJSDebugger::QmlToolBar</name> + <message> + <source>Inspector Mode</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Play/Pause Animations</source> + <translation>Odtwórz / wstrzymaj animacje</translation> + </message> + <message> + <source>Select</source> + <translation>Wybierz</translation> + </message> + <message> + <source>Select (Marquee)</source> + <translation>Wybierz (Marquee)</translation> + </message> + <message> + <source>Zoom</source> + <translation>Powiększ</translation> + </message> + <message> + <source>Color Picker</source> + <translation>Wybieracz kolorów</translation> + </message> + <message> + <source>Apply Changes to QML Viewer</source> + <translation>Zastosuj zmiany do QML Viewera</translation> + </message> + <message> + <source>Apply Changes to Document</source> + <translation>Zastosuj zmiany do dokumentu</translation> + </message> + <message> + <source>Tools</source> + <translation>Narzędzia</translation> + </message> + <message> + <source>1x</source> + <translation>1x</translation> + </message> + <message> + <source>0.5x</source> + <translation>0.5x</translation> + </message> + <message> + <source>0.25x</source> + <translation>0.25x</translation> + </message> + <message> + <source>0.125x</source> + <translation>0.125x</translation> + </message> + <message> + <source>0.1x</source> + <translation>0.1x</translation> + </message> +</context> +<context> + <name>QmlJSDebugger::ToolBarColorBox</name> + <message> + <source>Copy Color</source> + <translation>Skopiuj kolor</translation> + </message> +</context> +<context> + <name>QmlJSDebugger::ZoomTool</name> + <message> + <source>Zoom to &100%</source> + <translation>Powiększ do &100%</translation> + </message> + <message> + <source>Zoom In</source> + <translation>Powiększ</translation> + </message> + <message> + <source>Zoom Out</source> + <translation>Pomniejsz</translation> + </message> +</context> +<context> <name>QtXmlPatterns</name> <message> <source>Network timeout.</source> @@ -8351,6 +8800,10 @@ Proszę wybrać inną nazwę pliku.</translation> <translation>Cecha "Import modułu" nie jest obsługiwana</translation> </message> <message> + <source>The namespace for a user defined function cannot be empty (try the predefined prefix %1, which exists for cases like this)</source> + <translation>Przestrzeń nazw dla funkcji zdefiniowanej przez użytkownika nie może być pusta (spróbuj predefiniowany przedrostek %1, który stworzono specjalnie do takich sytuacji)</translation> + </message> + <message> <source>The namespace %1 is reserved; therefore user defined functions may not use it. Try the predefined prefix %2, which exists for these cases.</source> <translation>Przestrzeń nazw %1 jest zarezerwowana, dlatego funkcje zdefiniowane przez użytkownika nie mogą jej użyć. Spróbuj predefiniowany przedrostek %2, który istnieje w takich przypadkach.</translation> </message> @@ -8428,7 +8881,7 @@ Proszę wybrać inną nazwę pliku.</translation> </message> <message> <source>The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this)</source> - <translation>Przestrzeń nazw dla funkcji zdefiniowanej przez użytkownika nie może być pusta (spróbuj predefiniowany przedrostek %1, który stworzono specjalnie do takich sytuacji)</translation> + <translation type="obsolete">Przestrzeń nazw dla funkcji zdefiniowanej przez użytkownika nie może być pusta (spróbuj predefiniowany przedrostek %1, który stworzono specjalnie do takich sytuacji)</translation> </message> <message> <source>An argument with name %1 has already been declared. Every argument name must be unique.</source> @@ -9168,7 +9621,11 @@ Proszę wybrać inną nazwę pliku.</translation> </message> <message> <source>Content model of complex type %1 contains %2 element so it cannot be derived by extension from a non-empty type.</source> - <translation>Model zawartości typu złożonego %1 posiada element %2 więc nie może być on wywiedziony poprzez rozszerzenie niepustego typu.</translation> + <translation type="obsolete">Model zawartości typu złożonego %1 posiada element %2 więc nie może być on wywiedziony poprzez rozszerzenie niepustego typu.</translation> + </message> + <message> + <source>Content model of complex type %1 contains %2 element, so it cannot be derived by extension from a non-empty type.</source> + <translation>Model zawartości typu złożonego %1, posiada element %2, więc nie może być on wywiedziony poprzez rozszerzenie niepustego typu.</translation> </message> <message> <source>Complex type %1 cannot be derived by extension from %2 as the latter contains %3 element in its content model.</source> @@ -9757,7 +10214,7 @@ Proszę wybrać inną nazwę pliku.</translation> </message> <message> <source>Element %1 cannot contain other elements, as it has a fixed content.</source> - <translation>Element %1 nie może zawierać innych elementów ponieważ posiada on stałą zawartość.</translation> + <translation type="obsolete">Element %1 nie może zawierać innych elementów ponieważ posiada on stałą zawartość.</translation> </message> <message> <source>Specified type %1 is not validly substitutable with element type %2.</source> @@ -9792,6 +10249,10 @@ Proszę wybrać inną nazwę pliku.</translation> <translation>Element %1 zawiera niedozwolony text.</translation> </message> <message> + <source>Element %1 cannot contain other elements, as it has fixed content.</source> + <translation>Element %1 nie może zawierać innych elementów, ponieważ posiada on stałą zawartość.</translation> + </message> + <message> <source>Element %1 is missing required attribute %2.</source> <translation>Brak wymaganego atrybutu %2 w elemencie %1.</translation> </message> diff --git a/translations/qt_ru.ts b/translations/qt_ru.ts index 19c0544..7dd4320 100644 --- a/translations/qt_ru.ts +++ b/translations/qt_ru.ts @@ -1264,7 +1264,7 @@ to </message> <message> <source>Unable to rollback transaction</source> - <translation>Невозможно отозвать транзакцию</translation> + <translation>Невозможно откатить транзакцию</translation> </message> <message> <source>Unable to set autocommit</source> @@ -3262,7 +3262,7 @@ Please verify the correct directory name was given.</source> </message> <message> <source>Unable to rollback transaction</source> - <translation>Невозможно отозвать транзакцию</translation> + <translation>Невозможно откатить транзакцию</translation> </message> </context> <context> @@ -3569,7 +3569,7 @@ Please verify the correct directory name was given.</source> </message> <message> <source>Unable to rollback transaction</source> - <translation>Невозможно отозвать транзакцию</translation> + <translation>Невозможно откатить транзакцию</translation> </message> </context> <context> @@ -3722,6 +3722,10 @@ Please verify the correct directory name was given.</source> <source>Actions</source> <translation>Действия</translation> </message> + <message> + <source>Corner Toolbar</source> + <translation>Угловая панель</translation> + </message> </context> <context> <name>QMessageBox</name> @@ -4062,7 +4066,7 @@ Please verify the correct directory name was given.</source> </message> <message> <source>Unable to rollback transaction</source> - <translation>Невозможно отозвать транзакцию</translation> + <translation>Невозможно откатить транзакцию</translation> </message> </context> <context> @@ -4116,7 +4120,7 @@ Please verify the correct directory name was given.</source> </message> <message> <source>Unable to rollback transaction</source> - <translation>Невозможно отозвать транзакцию</translation> + <translation>Невозможно откатить транзакцию</translation> </message> <message> <source>Unable to enable autocommit</source> @@ -4212,7 +4216,7 @@ Please verify the correct directory name was given.</source> </message> <message> <source>Could not rollback transaction</source> - <translation>Не удалось отозвать транзакцию</translation> + <translation>Не удалось откатить транзакцию</translation> </message> <message> <source>Unable to subscribe</source> @@ -5020,7 +5024,7 @@ Please choose a different file name.</source> </message> <message> <source>Unable to rollback transaction</source> - <translation>Невозможно отозвать транзакцию</translation> + <translation>Невозможно откатить транзакцию</translation> </message> </context> <context> @@ -5054,7 +5058,7 @@ Please choose a different file name.</source> </message> <message> <source>Unable to rollback transaction</source> - <translation>Невозможно отозвать транзакцию</translation> + <translation>Невозможно откатить транзакцию</translation> </message> </context> <context> @@ -5510,15 +5514,15 @@ Please choose a different file name.</source> <message> <source>Space</source> <extracomment>This and all following "incomprehensible" strings in QShortcut context are key names. Please use the localized names appearing on actual keyboards or whatever is commonly used.</extracomment> - <translation type="unfinished">Пробел</translation> + <translation>Пробел</translation> </message> <message> <source>Esc</source> - <translation type="unfinished">Esc</translation> + <translation>Esc</translation> </message> <message> <source>Tab</source> - <translation type="unfinished">Tab</translation> + <translation>Tab</translation> </message> <message> <source>Backtab</source> @@ -5538,67 +5542,67 @@ Please choose a different file name.</source> </message> <message> <source>Ins</source> - <translation type="unfinished">Ins</translation> + <translation>Ins</translation> </message> <message> <source>Del</source> - <translation type="unfinished">Del</translation> + <translation>Del</translation> </message> <message> <source>Pause</source> - <translation type="unfinished">Pause</translation> + <translation>Pause</translation> </message> <message> <source>Print</source> - <translation type="unfinished">Print</translation> + <translation>Print</translation> </message> <message> <source>SysReq</source> - <translation type="unfinished">SysReq</translation> + <translation>SysReq</translation> </message> <message> <source>Home</source> - <translation type="unfinished">Home</translation> + <translation>Home</translation> </message> <message> <source>End</source> - <translation type="unfinished">End</translation> + <translation>End</translation> </message> <message> <source>Left</source> - <translation type="unfinished">Влево</translation> + <translation>Влево</translation> </message> <message> <source>Up</source> - <translation type="unfinished">Вверх</translation> + <translation>Вверх</translation> </message> <message> <source>Right</source> - <translation type="unfinished">Вправо</translation> + <translation>Вправо</translation> </message> <message> <source>Down</source> - <translation type="unfinished">Вниз</translation> + <translation>Вниз</translation> </message> <message> <source>PgUp</source> - <translation type="unfinished">PgUp</translation> + <translation>PgUp</translation> </message> <message> <source>PgDown</source> - <translation type="unfinished">PgDown</translation> + <translation>PgDown</translation> </message> <message> <source>CapsLock</source> - <translation type="unfinished">CapsLock</translation> + <translation>CapsLock</translation> </message> <message> <source>NumLock</source> - <translation type="unfinished">NumLock</translation> + <translation>NumLock</translation> </message> <message> <source>ScrollLock</source> - <translation type="unfinished">ScrollLock</translation> + <translation>ScrollLock</translation> </message> <message> <source>Menu</source> @@ -5626,15 +5630,15 @@ Please choose a different file name.</source> </message> <message> <source>Volume Down</source> - <translation type="unfinished">Тише</translation> + <translation>Тише</translation> </message> <message> <source>Volume Mute</source> - <translation type="unfinished">Выключить звук</translation> + <translation>Выключить звук</translation> </message> <message> <source>Volume Up</source> - <translation type="unfinished">Громче</translation> + <translation>Громче</translation> </message> <message> <source>Bass Boost</source> @@ -5696,7 +5700,7 @@ Please choose a different file name.</source> </message> <message> <source>Standby</source> - <translation type="unfinished">Режим ожидания</translation> + <translation>Режим ожидания</translation> </message> <message> <source>Open URL</source> @@ -5776,31 +5780,31 @@ Please choose a different file name.</source> </message> <message> <source>Monitor Brightness Up</source> - <translation type="unfinished">Увеличить яркость монитора</translation> + <translation>Увеличить яркость монитора</translation> </message> <message> <source>Monitor Brightness Down</source> - <translation type="unfinished">Уменьшить яркость монитора</translation> + <translation>Уменьшить яркость монитора</translation> </message> <message> <source>Keyboard Light On/Off</source> - <translation type="unfinished">Вкл./Откл. подсветку клавиатуры</translation> + <translation>Вкл./Откл. подсветку клавиатуры</translation> </message> <message> <source>Keyboard Brightness Up</source> - <translation type="unfinished">Увеличить яркость подсветки клавиатуры</translation> + <translation>Увеличить яркость подсветки клавиатуры</translation> </message> <message> <source>Keyboard Brightness Down</source> - <translation type="unfinished">Уменьшить яркость подсветки клавиатуры</translation> + <translation>Уменьшить яркость подсветки клавиатуры</translation> </message> <message> <source>Power Off</source> - <translation type="unfinished">Отключение питания</translation> + <translation>Отключение питания</translation> </message> <message> <source>Wake Up</source> - <translation type="unfinished">Пробуждение</translation> + <translation>Пробуждение</translation> </message> <message> <source>Eject</source> @@ -5856,7 +5860,7 @@ Please choose a different file name.</source> </message> <message> <source>Back Forward</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Назад/вперёд</translation> </message> <message> <source>Application Left</source> @@ -5900,7 +5904,7 @@ Please choose a different file name.</source> </message> <message> <source>Display</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Отобразить</translation> </message> <message> <source>DOS</source> @@ -6355,7 +6359,7 @@ Please choose a different file name.</source> <message> <source>Hangup</source> <extracomment>Button to end a call (note: a separate button is used to start the call)</extracomment> - <translation type="unfinished">Положить трубку</translation> + <translation type="unfinished">Отбой</translation> </message> <message> <source>Flip</source> @@ -6363,23 +6367,23 @@ Please choose a different file name.</source> </message> <message> <source>Ctrl</source> - <translation></translation> + <translation>Ctrl</translation> </message> <message> <source>Shift</source> - <translation></translation> + <translation>Shift</translation> </message> <message> <source>Alt</source> - <translation></translation> + <translation>Alt</translation> </message> <message> <source>Meta</source> - <translation></translation> + <translation>Meta</translation> </message> <message> <source>+</source> - <translation></translation> + <translation>+</translation> </message> <message> <source>F%1</source> @@ -6720,6 +6724,72 @@ Please choose a different file name.</source> </message> </context> <context> + <name>QSymSQLDriver</name> + <message> + <source>Invalid option: </source> + <translation>Неверный параметр: </translation> + </message> + <message> + <source>Error opening database</source> + <translation>Ошибка открытия базы данных</translation> + </message> + <message> + <source>POLICY_DB_DEFAULT must be defined before any other POLICY definitions can be used</source> + <translation>POLICY_DB_DEFAULT должна быть задана до начала использования других определений POLICY</translation> + </message> + <message> + <source>Unable to begin transaction</source> + <translation>Невозможно начать транзакцию</translation> + </message> + <message> + <source>Unable to commit transaction</source> + <translation>Невозможно завершить транзакцию</translation> + </message> + <message> + <source>Unable to rollback transaction</source> + <translation>Невозможно откатить транзакцию</translation> + </message> +</context> +<context> + <name>QSymSQLResult</name> + <message> + <source>Error retrieving column count</source> + <translation>Ошибка получения количества колонок</translation> + </message> + <message> + <source>Error retrieving column name</source> + <translation>Ошибка получения названия колонки</translation> + </message> + <message> + <source>Error retrieving column type</source> + <translation>Ошибка получения типа колонки</translation> + </message> + <message> + <source>Unable to fetch row</source> + <translation>Невозможно получить строку</translation> + </message> + <message> + <source>Unable to execute statement</source> + <translation>Невозможно выполнить выражение</translation> + </message> + <message> + <source>Statement is not prepared</source> + <translation>Выражение не подготовлено</translation> + </message> + <message> + <source>Unable to reset statement</source> + <translation>Невозможно сбросить выражение</translation> + </message> + <message> + <source>Unable to bind parameters</source> + <translation>Невозможно привязать параметр</translation> + </message> + <message> + <source>Parameter count mismatch</source> + <translation>Количество параметров не совпадает</translation> + </message> +</context> +<context> <name>QSymbianSocketEngine</name> <message> <source>Unable to initialize non-blocking socket</source> @@ -7409,12 +7479,12 @@ Please choose a different file name.</source> <message> <source>Toggle Controls</source> <comment>Toggle Media Controls</comment> - <translation type="unfinished">Вкл/выкл управление</translation> + <translation>Вкл/выкл управление</translation> </message> <message> <source>Toggle Loop</source> <comment>Toggle Media Loop Playback</comment> - <translation type="unfinished">Вкл/выкл зацикленность</translation> + <translation>Вкл/выкл зацикленность</translation> </message> <message> <source>Enter Fullscreen</source> @@ -8292,7 +8362,7 @@ Please choose a different file name.</source> <name>QmlJSDebugger::ToolBox</name> <message> <source>Qt Quick Toolbox</source> - <translation>Инструментарий Qt Quick</translation> + <translation type="obsolete">Инструментарий Qt Quick</translation> </message> </context> <context> @@ -10134,7 +10204,7 @@ Please choose a different file name.</source> </message> <message> <source>'%1' attribute contains invalid QName content: %2.</source> - <translation type="unfinished">Атрибут `%1` имеет некорректное содержимое QName: %2.</translation> + <translation>Атрибут «%1» имеет некорректное содержимое QName: %2.</translation> </message> </context> </TS> diff --git a/translations/qt_uk.ts b/translations/qt_uk.ts index c3cfec0..44f6d69 100644 --- a/translations/qt_uk.ts +++ b/translations/qt_uk.ts @@ -9,10 +9,21 @@ </message> </context> <context> + <name>Debugger::JSAgentWatchData</name> + <message> + <source>[Array of length %1]</source> + <translation>[Масив довжини %1]</translation> + </message> + <message> + <source><undefined></source> + <translation><не визначено></translation> + </message> +</context> +<context> <name>FakeReply</name> <message> - <source>Fake error !</source> - <translation>Несправжня помилка !</translation> + <source>Fake error!</source> + <translation>Несправжня помилка!</translation> </message> <message> <source>Invalid URL</source> @@ -397,7 +408,7 @@ have libgstreamer-plugins-base installed.</source> </message> <message> <source>Reflections delay (ms)</source> - <extracomment>ReflectionsDelay: Amount of delay between the arrival the direct path from the source and the arrival of the first reflection.</extracomment> + <extracomment>ReflectionsDelay: Amount of delay between the arrival of the direct path from the source and the arrival of the first reflection.</extracomment> <translation>Затримка відбиття (мс)</translation> </message> <message> @@ -412,7 +423,7 @@ have libgstreamer-plugins-base installed.</source> </message> <message> <source>Reverb level (mB)</source> - <extracomment>ReverbLevel Amplitude of reverberations. This value is corrected by the RoomLevel to give the final reverberation amplitude.</extracomment> + <extracomment>ReverbLevel: Amplitude of reverberations. This value is corrected by the RoomLevel to give the final reverberation amplitude.</extracomment> <translation>Рівень луни (мБ)</translation> </message> <message> @@ -470,7 +481,7 @@ have libgstreamer-plugins-base installed.</source> <translation>Гучність: %1%</translation> </message> <message> - <source>Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1%</source> + <source>Use this slider to adjust the volume. The leftmost position is 0%. The rightmost is %1%</source> <translation>Використовуйте цей повзунок для регулювання гучності. Крайня ліва позиція - 0%, крайня права - %1%</translation> </message> <message> @@ -1062,6 +1073,14 @@ to <context> <name>QAccessibleButton</name> <message> + <source>Uncheck</source> + <translation>Зняти відмітку</translation> + </message> + <message> + <source>Check</source> + <translation>Відмітити</translation> + </message> + <message> <source>Press</source> <translation>Натисніть</translation> </message> @@ -2450,6 +2469,10 @@ to <source>Cannot create %1 for output</source> <translation>Неможливо створити %1 для виводу</translation> </message> + <message> + <source>No file engine available or engine does not support UnMapExtension</source> + <translation>Жодний файловий рушій не є доступним або підтримує UnMapExtension</translation> + </message> </context> <context> <name>QFileDialog</name> @@ -3411,6 +3434,18 @@ Do you want to delete it anyway?</source> <source>Cannot resolve symbol "%1" in %2: %3</source> <translation>Неможливо розв’язати символ "%1" в %2: %3</translation> </message> + <message> + <source>'%1' is not an ELF object (%2)</source> + <translation>'%1' не є об'єктом ELF (%2)</translation> + </message> + <message> + <source>'%1' is not an ELF object</source> + <translation>'%1' не є об'єктом ELF</translation> + </message> + <message> + <source>'%1' is an invalid ELF object (%2)</source> + <translation>'%1' є неправильним об'єктом ELF (%2)</translation> + </message> </context> <context> <name>QLineEdit</name> @@ -3508,6 +3543,10 @@ Do you want to delete it anyway?</source> <source>%1: Unknown error %2</source> <translation>%1: Невідома помилка %2</translation> </message> + <message> + <source>%1: Access denied</source> + <translation>%1: Доступ заборонено</translation> + </message> </context> <context> <name>QMYSQLDriver</name> @@ -3682,6 +3721,10 @@ Do you want to delete it anyway?</source> <source>Actions</source> <translation>Дії</translation> </message> + <message> + <source>Corner Toolbar</source> + <translation>Кутова панель</translation> + </message> </context> <context> <name>QMessageBox</name> @@ -3849,10 +3892,6 @@ Do you want to delete it anyway?</source> <context> <name>QNetworkAccessDataBackend</name> <message> - <source>Operation not supported on %1</source> - <translation>Непідтримувана для %1 операція</translation> - </message> - <message> <source>Invalid URI: %1</source> <translation>Неправильний URI: %1</translation> </message> @@ -3947,6 +3986,10 @@ Do you want to delete it anyway?</source> <translation>Помилка мережевої сесії.</translation> </message> <message> + <source>backend start error.</source> + <translation>помилка запуску драйвера.</translation> + </message> + <message> <source>Temporary network failure.</source> <translation>Тимчасовий збій мережі.</translation> </message> @@ -4139,6 +4182,10 @@ Do you want to delete it anyway?</source> <source>invalid query: "%1"</source> <translation>неправильний запит "%1"</translation> </message> + <message> + <source>Host not found</source> + <translation>Вузол не знайдено</translation> + </message> </context> <context> <name>QPPDOptionsModel</name> @@ -5424,10 +5471,6 @@ Do you want to overwrite it?</source> <translation>%1: невідома помилка %2</translation> </message> <message> - <source>%1: key error</source> - <translation>%1: помилка ключа</translation> - </message> - <message> <source>%1: unable to make key</source> <translation>%1: неможливо створити ключ</translation> </message> @@ -5452,6 +5495,10 @@ Do you want to overwrite it?</source> <translation>%1: обмеження розміру встановлені системою</translation> </message> <message> + <source>%1: bad name</source> + <translation>%1: пагане ім'я</translation> + </message> + <message> <source>%1: not attached</source> <translation>%1: не прикріплено</translation> </message> @@ -6430,8 +6477,8 @@ Do you want to overwrite it?</source> <context> <name>QSoftKeyManager</name> <message> - <source>Ok</source> - <translation>Ok</translation> + <source>OK</source> + <translation>OK</translation> </message> <message> <source>Select</source> @@ -6675,6 +6722,187 @@ Do you want to overwrite it?</source> </message> </context> <context> + <name>QSymSQLDriver</name> + <message> + <source>Invalid option: </source> + <translation>Неправильна опція: </translation> + </message> + <message> + <source>Error opening database</source> + <translation>Помилка відкриття бази даних</translation> + </message> + <message> + <source>POLICY_DB_DEFAULT must be defined before any other POLICY definitions can be used</source> + <translation>POLICY_DB_DEFAULT повинна бути визначена до того, як будь-які інші визначення POLICY можуть бути використані</translation> + </message> + <message> + <source>Unable to begin transaction</source> + <translation>Неможливо почати транзакцію</translation> + </message> + <message> + <source>Unable to commit transaction</source> + <translation>Неможливо завершити транзакцію</translation> + </message> + <message> + <source>Unable to rollback transaction</source> + <translation>Неможливо відкотити транзакцію</translation> + </message> +</context> +<context> + <name>QSymSQLResult</name> + <message> + <source>Error retrieving column count</source> + <translation>Помилка отримання кількості стовпців</translation> + </message> + <message> + <source>Error retrieving column name</source> + <translation>Помилка отримання назви стовпця</translation> + </message> + <message> + <source>Error retrieving column type</source> + <translation>Помилка отримання типу стовпця</translation> + </message> + <message> + <source>Unable to fetch row</source> + <translation>Неможливо отримати рядок</translation> + </message> + <message> + <source>Unable to execute statement</source> + <translation>Неможливо виконати вираз</translation> + </message> + <message> + <source>Statement is not prepared</source> + <translation>Вираз не підготовлено</translation> + </message> + <message> + <source>Unable to reset statement</source> + <translation>Неможливо скинути вираз</translation> + </message> + <message> + <source>Unable to bind parameters</source> + <translation>Неможливо прив'язати параметри</translation> + </message> + <message> + <source>Parameter count mismatch</source> + <translation>Кількість параметрів не збігається</translation> + </message> +</context> +<context> + <name>QSymbianSocketEngine</name> + <message> + <source>Unable to initialize non-blocking socket</source> + <translation>Неможливо ініціалізувати неблокувальний сокет</translation> + </message> + <message> + <source>Unable to initialize broadcast socket</source> + <translation>Неможливо ініціалізувати широкомовний сокет</translation> + </message> + <message> + <source>Attempt to use IPv6 socket on a platform with no IPv6 support</source> + <translation>Спроба використати сокет IPv6 на платформі без підтримки IPv6</translation> + </message> + <message> + <source>The remote host closed the connection</source> + <translation>Віддалений вузол закрив з’єднання</translation> + </message> + <message> + <source>Network operation timed out</source> + <translation>Час на мережеву операцію вичерпано</translation> + </message> + <message> + <source>Out of resources</source> + <translation>Недостатньо ресурсів</translation> + </message> + <message> + <source>Unsupported socket operation</source> + <translation>Непідтримувана для сокета операція</translation> + </message> + <message> + <source>Protocol type not supported</source> + <translation>Тип протоколу не підтримується</translation> + </message> + <message> + <source>Invalid socket descriptor</source> + <translation>Неправильний дескриптор сокета</translation> + </message> + <message> + <source>Host unreachable</source> + <translation>Вузол недоступний</translation> + </message> + <message> + <source>Network unreachable</source> + <translation>Мережа недоступна</translation> + </message> + <message> + <source>Permission denied</source> + <translation>Доступ заборонено</translation> + </message> + <message> + <source>Connection timed out</source> + <translation>Час на з’єднання вичерпано</translation> + </message> + <message> + <source>Connection refused</source> + <translation>У з'єднанні відмовлено</translation> + </message> + <message> + <source>The bound address is already in use</source> + <translation>Адреса вже використовується</translation> + </message> + <message> + <source>The address is not available</source> + <translation>Адреса не доступна</translation> + </message> + <message> + <source>The address is protected</source> + <translation>Адреса захищена</translation> + </message> + <message> + <source>Datagram was too large to send</source> + <translation>Датаграма завелика, щоб надіслати</translation> + </message> + <message> + <source>Unable to send a message</source> + <translation>Неможливо надіслати повідомлення</translation> + </message> + <message> + <source>Unable to receive a message</source> + <translation>Неможливо отримати повідомлення</translation> + </message> + <message> + <source>Unable to write</source> + <translation>Неможливо записати</translation> + </message> + <message> + <source>Network error</source> + <translation>Помилка мережі</translation> + </message> + <message> + <source>Another socket is already listening on the same port</source> + <translation>Інший сокет вже слухає цей самий порт</translation> + </message> + <message> + <source>Operation on non-socket</source> + <translation>Операція з не-сокетом</translation> + </message> + <message> + <source>The proxy type is invalid for this operation</source> + <translation>Неправильний тип проксі-серверу для цієї операції</translation> + </message> + <message> + <source>The address is invalid for this operation</source> + <translation>Неправильна адреса для цієї операції</translation> + </message> + <message> + <source>The specified network session is not opened</source> + <translation>Вказаний мережевий сеанс не відкрито</translation> + </message> + <message> + <source>Unknown error</source> + <translation>Невідома помилка</translation> + </message> +</context> +<context> <name>QSystemSemaphore</name> <message> <source>%1: permission denied</source> @@ -6693,6 +6921,10 @@ Do you want to overwrite it?</source> <translation>%1: недостатньо ресурсів</translation> </message> <message> + <source>%1: name error</source> + <translation>%1: помилка імені</translation> + </message> + <message> <source>%1: unknown error %2</source> <translation>%1: невідома помилка %2</translation> </message> @@ -6782,11 +7014,21 @@ Do you want to overwrite it?</source> <context> <name>QUndoGroup</name> <message> + <source>Undo %1</source> + <translation>Повернути %1</translation> + </message> + <message> <source>Undo</source> + <comment>Default text for undo action</comment> <translation>Повернути</translation> </message> <message> + <source>Redo %1</source> + <translation>Повторити %1</translation> + </message> + <message> <source>Redo</source> + <comment>Default text for redo action</comment> <translation>Повторити</translation> </message> </context> @@ -6800,11 +7042,21 @@ Do you want to overwrite it?</source> <context> <name>QUndoStack</name> <message> + <source>Undo %1</source> + <translation>Повернути %1</translation> + </message> + <message> <source>Undo</source> + <comment>Default text for undo action</comment> <translation>Повернути</translation> </message> <message> + <source>Redo %1</source> + <translation>Повторити %1</translation> + </message> + <message> <source>Redo</source> + <comment>Default text for redo action</comment> <translation>Повторити</translation> </message> </context> @@ -6862,6 +7114,10 @@ Do you want to overwrite it?</source> <translation>Запит скасовано</translation> </message> <message> + <source>Request canceled</source> + <translation>Запит скасовано</translation> + </message> + <message> <source>Request blocked</source> <translation>Запит блоковано</translation> </message> @@ -6881,6 +7137,10 @@ Do you want to overwrite it?</source> <source>File does not exist</source> <translation>Файл не існує</translation> </message> + <message> + <source>Loading is handled by the media engine</source> + <translation>Звантаження оброблене рушієм мультимедіа</translation> + </message> </context> <context> <name>QWebPage</name> @@ -6888,10 +7148,6 @@ Do you want to overwrite it?</source> <source>Redirection limit reached</source> <translation>Ліміт перенаправлень вичерпано</translation> </message> - <message> - <source>Bad HTTP request</source> - <translation>Поганий запит HTTP</translation> - </message> <message numerus="yes"> <source>%n file(s)</source> <comment>number of chosen file</comment> @@ -6932,6 +7188,11 @@ Do you want to overwrite it?</source> <translation>Файл не обрано</translation> </message> <message> + <source>Details</source> + <comment>text to display in <details> tag when it has no <summary> child</comment> + <translation>Деталі</translation> + </message> + <message> <source>Open in New Window</source> <comment>Open in New Window context menu item</comment> <translation>Відкрити в новому вікні</translation> @@ -6962,6 +7223,61 @@ Do you want to overwrite it?</source> <translation>Копіювати зображення</translation> </message> <message> + <source>Copy Image Address</source> + <comment>Copy Image Address menu item</comment> + <translation>Скопіювати адресу зображення</translation> + </message> + <message> + <source>Open Video</source> + <comment>Open Video in New Window</comment> + <translation>Відкрити відео</translation> + </message> + <message> + <source>Open Audio</source> + <comment>Open Audio in New Window</comment> + <translation>Відкрити аудіо</translation> + </message> + <message> + <source>Copy Video</source> + <comment>Copy Video Link Location</comment> + <translation>Копіювати відео</translation> + </message> + <message> + <source>Copy Audio</source> + <comment>Copy Audio Link Location</comment> + <translation>Копіювати аудіо</translation> + </message> + <message> + <source>Toggle Controls</source> + <comment>Toggle Media Controls</comment> + <translation>Увімкнути/викнути управління</translation> + </message> + <message> + <source>Toggle Loop</source> + <comment>Toggle Media Loop Playback</comment> + <translation>Увімкнути/викнути програвання по колу</translation> + </message> + <message> + <source>Enter Fullscreen</source> + <comment>Switch Video to Fullscreen</comment> + <translation>На повний екран</translation> + </message> + <message> + <source>Play</source> + <comment>Play</comment> + <translation>Грати</translation> + </message> + <message> + <source>Pause</source> + <comment>Pause</comment> + <translation>Пауза</translation> + </message> + <message> + <source>Mute</source> + <comment>Mute</comment> + <translation>Без звуку</translation> + </message> + <message> <source>Open Frame</source> <comment>Open Frame in New Window context menu item</comment> <translation>Відкрити фрейм</translation> @@ -7002,6 +7318,11 @@ Do you want to overwrite it?</source> <translation>Вставити</translation> </message> <message> + <source>Select All</source> + <comment>Select All context menu item</comment> + <translation>Виділити все</translation> + </message> + <message> <source>No Guesses Found</source> <comment>No Guesses Found context menu item</comment> <translation>Підказок не знайдено</translation> @@ -7467,10 +7788,6 @@ Do you want to overwrite it?</source> <translation>Пересунути курсор в кінець документа</translation> </message> <message> - <source>Select all</source> - <translation>Виділити все</translation> - </message> - <message> <source>Select to the next character</source> <translation>Виділити до наступного символу</translation> </message> @@ -7969,6 +8286,94 @@ Do you want to overwrite it?</source> </message> </context> <context> + <name>QmlJSDebugger::LiveSelectionTool</name> + <message> + <source>Items</source> + <translation>Елементи</translation> + </message> +</context> +<context> + <name>QmlJSDebugger::QmlToolBar</name> + <message> + <source>Inspector Mode</source> + <translation>Режим інспектора</translation> + </message> + <message> + <source>Play/Pause Animations</source> + <translation>Грати/зупинити анімації</translation> + </message> + <message> + <source>Select</source> + <translation>Обрати</translation> + </message> + <message> + <source>Select (Marquee)</source> + <translation>Обрати (Marquee)</translation> + </message> + <message> + <source>Zoom</source> + <translation>Масштабувати</translation> + </message> + <message> + <source>Color Picker</source> + <translation>Вибір кольору</translation> + </message> + <message> + <source>Apply Changes to QML Viewer</source> + <translation>Застосувати зміни до переглядача QML</translation> + </message> + <message> + <source>Apply Changes to Document</source> + <translation>Застосувати зміни до документа</translation> + </message> + <message> + <source>Tools</source> + <translation>Інструменти</translation> + </message> + <message> + <source>1x</source> + <translation></translation> + </message> + <message> + <source>0.5x</source> + <translation></translation> + </message> + <message> + <source>0.25x</source> + <translation></translation> + </message> + <message> + <source>0.125x</source> + <translation></translation> + </message> + <message> + <source>0.1x</source> + <translation></translation> + </message> +</context> +<context> + <name>QmlJSDebugger::ToolBarColorBox</name> + <message> + <source>Copy Color</source> + <translation>Копіювати колір</translation> + </message> +</context> +<context> + <name>QmlJSDebugger::ZoomTool</name> + <message> + <source>Zoom to &100%</source> + <translation>Масштабувати до &100%</translation> + </message> + <message> + <source>Zoom In</source> + <translation>Збільшити</translation> + </message> + <message> + <source>Zoom Out</source> + <translation>Зменшити</translation> + </message> +</context> +<context> <name>QtXmlPatterns</name> <message> <source>%1 is an unsupported encoding.</source> @@ -8431,7 +8836,7 @@ Do you want to overwrite it?</source> <translation type="unfinished"></translation> </message> <message> - <source>The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this)</source> + <source>The namespace for a user defined function cannot be empty (try the predefined prefix %1, which exists for cases like this)</source> <translation type="unfinished"></translation> </message> <message> @@ -9275,7 +9680,7 @@ Do you want to overwrite it?</source> <translation type="unfinished"></translation> </message> <message> - <source>Content model of complex type %1 contains %2 element so it cannot be derived by extension from a non-empty type.</source> + <source>Content model of complex type %1 contains %2 element, so it cannot be derived by extension from a non-empty type.</source> <translation type="unfinished"></translation> </message> <message> @@ -9683,7 +10088,7 @@ Do you want to overwrite it?</source> <translation type="unfinished"></translation> </message> <message> - <source>Element %1 cannot contain other elements, as it has a fixed content.</source> + <source>Element %1 cannot contain other elements, as it has fixed content.</source> <translation type="unfinished"></translation> </message> <message> diff --git a/translations/qtconfig_pl.ts b/translations/qtconfig_pl.ts index b2a0c52..dda344f 100644 --- a/translations/qtconfig_pl.ts +++ b/translations/qtconfig_pl.ts @@ -52,6 +52,10 @@ <translation>Użyj prostego oprogramowania renderującego</translation> </message> <message> + <source>Saved changes.</source> + <translation>Zachowano zmiany.</translation> + </message> + <message> <source>Over The Spot</source> <translation>Nad oknem dokumentu (Over-The-Spot)</translation> </message> @@ -85,15 +89,15 @@ </message> <message> <source>&Yes</source> - <translation>&Tak</translation> + <translation type="obsolete">&Tak</translation> </message> <message> <source>&No</source> - <translation>&Nie</translation> + <translation type="obsolete">&Nie</translation> </message> <message> <source>&Cancel</source> - <translation>&Anuluj</translation> + <translation type="obsolete">&Anuluj</translation> </message> <message> <source>No changes to be saved.</source> @@ -128,6 +132,10 @@ <translation>Wybierz styl i paletę na podstawie ustawień Twojego pulpitu.</translation> </message> <message> + <source>Unknown</source> + <translation>Nieznany</translation> + </message> + <message> <source>Use OpenGL if available</source> <translation>Użyj OpenGL jeśli jest dostępny</translation> </message> @@ -135,13 +143,6 @@ <source>Saving changes...</source> <translation>Zapisywanie zmian...</translation> </message> -</context> -<context> - <name>MainWindowBase</name> - <message> - <source>Qt Configuration</source> - <translation>Konfiguracja Qt</translation> - </message> <message> <source>Appearance</source> <translation>Wygląd</translation> @@ -155,44 +156,44 @@ <translation>Wybierz &styl GUI:</translation> </message> <message> - <source>Build Palette</source> - <translation>Wersje palety</translation> + <source>Preview</source> + <translation>Podgląd</translation> </message> <message> - <source>&3-D Effects:</source> - <translation>&Efekty 3-D:</translation> + <source>Select &Palette:</source> + <translation>Wybierz &paletę:</translation> </message> <message> - <source>Window Back&ground:</source> - <translation>&Tło okna:</translation> + <source>Active Palette</source> + <translation>Paleta "aktywna"</translation> </message> <message> - <source>&Tune Palette...</source> - <translation>&Ustaw paletę...</translation> + <source>Inactive Palette</source> + <translation>Paleta "nieaktywna"</translation> </message> <message> - <source>Please use the KDE Control Center to set the palette.</source> - <translation>Użyj Centrum Kontroli KDE aby zmienić paletę.</translation> + <source>Disabled Palette</source> + <translation>Paleta "zablokowana"</translation> </message> <message> - <source>Preview</source> - <translation>Podgląd</translation> + <source>Build Palette</source> + <translation>Wersje palety</translation> </message> <message> - <source>Select &Palette:</source> - <translation>Wybierz &paletę:</translation> + <source>&Button Background:</source> + <translation>Tło &przycisku:</translation> </message> <message> - <source>Active Palette</source> - <translation>Aktywna paleta</translation> + <source>Window Back&ground:</source> + <translation>Tło &okna:</translation> </message> <message> - <source>Inactive Palette</source> - <translation>Nieaktywna paleta</translation> + <source>&Tune Palette...</source> + <translation>&Modyfikuj paletę...</translation> </message> <message> - <source>Disabled Palette</source> - <translation>Paleta "zablokowane"</translation> + <source>Please use the KDE Control Center to set the palette.</source> + <translation>Użyj Centrum Kontroli KDE aby zmienić paletę.</translation> </message> <message> <source>Fonts</source> @@ -220,7 +221,7 @@ </message> <message> <source>Font Substitution</source> - <translation>Zamiana czcionki</translation> + <translation>Czcionki zastępcze</translation> </message> <message> <source>S&elect or Enter a Family:</source> @@ -228,7 +229,7 @@ </message> <message> <source>Current Substitutions:</source> - <translation>Bieżące zamiany:</translation> + <translation>Bieżące zastępstwa:</translation> </message> <message> <source>Up</source> @@ -244,7 +245,7 @@ </message> <message> <source>Select s&ubstitute Family:</source> - <translation>Wybierz &nazwę czcionki do zamiany na:</translation> + <translation>Wybierz &nazwę czcionki zastępczej:</translation> </message> <message> <source>Add</source> @@ -264,7 +265,7 @@ </message> <message> <source>&Double Click Interval:</source> - <translation>&Odstęp pomiędzy dwukrotnym kliknięciem:</translation> + <translation>Odstęp pomiędzy &dwukrotnym kliknięciem:</translation> </message> <message> <source>No blinking</source> @@ -272,15 +273,15 @@ </message> <message> <source>&Cursor Flash Time:</source> - <translation>&Czas zmiany kursora:</translation> + <translation>Okres &migotania kursora:</translation> </message> <message> <source> lines</source> - <translation> linie</translation> + <translation> </translation> </message> <message> <source>Wheel &Scroll Lines:</source> - <translation>Obrócenie kółkiem powoduje &przesunięcie o tyle linii:</translation> + <translation>Ilość &przewiniętych linii po obrocie kółkiem:</translation> </message> <message> <source>Resolve symlinks in URLs</source> @@ -308,7 +309,7 @@ </message> <message> <source>&ToolTip Effect:</source> - <translation>Efekt &chmurki:</translation> + <translation>Efekty &podpowiedzi:</translation> </message> <message> <source>Tool&Box Effect:</source> @@ -316,15 +317,15 @@ </message> <message> <source>Disable</source> - <translation>Wyłącz</translation> + <translation>Wyłączone</translation> </message> <message> <source>Animate</source> - <translation>Animacja</translation> + <translation>Animowane</translation> </message> <message> <source>Fade</source> - <translation>Wyłanianie</translation> + <translation>Blaknące</translation> </message> <message> <source>Global Strut</source> @@ -348,67 +349,410 @@ </message> <message> <source>XIM Input Style:</source> - <translation>Rodzaje wprowadzania znaków (XIM):</translation> + <translation>Style wprowadzania znaków (XIM):</translation> + </message> + <message> + <source>Default Input Method:</source> + <translation>Domyślna metoda wprowadzania:</translation> + </message> + <message> + <source>Printer</source> + <translation>Drukarka</translation> + </message> + <message> + <source>Enable Font embedding</source> + <translation>Włącz osadzanie czcionek</translation> + </message> + <message> + <source>Font Paths</source> + <translation>Ścieżki do czcionek</translation> + </message> + <message> + <source>Browse...</source> + <translation>Przeglądaj...</translation> + </message> + <message> + <source>Press the <b>Browse</b> button or enter a directory and press Enter to add them to the list.</source> + <translation>Naciśnij przycisk <b>Przeglądaj</b> lub wpisz nazwę katalogu i naciśnij Enter aby dodać do listy.</translation> + </message> + <message> + <source>Phonon</source> + <translation>Phonon</translation> + </message> + <message> + <source>About Phonon</source> + <translation>Informacje o Phonon</translation> + </message> + <message> + <source>Current Version:</source> + <translation>Bieżąca wersja:</translation> + </message> + <message> + <source>Not available</source> + <translation>Nie dostępna</translation> + </message> + <message> + <source>Website:</source> + <translation>Witryna:</translation> + </message> + <message> + <source><a href="http://phonon.kde.org">http://phonon.kde.org/</a></source> + <translation><a href="http://phonon.kde.org">http://phonon.kde.org/</a></translation> + </message> + <message> + <source>About GStreamer</source> + <translation>Informacje o GStreamer</translation> + </message> + <message> + <source><a href="http://gstreamer.freedesktop.org/">http://gstreamer.freedesktop.org/</a></source> + <translation><a href="http://gstreamer.freedesktop.org/">http://gstreamer.freedesktop.org/</a></translation> + </message> + <message> + <source>GStreamer backend settings</source> + <translation>Ustawienia końcówki GStreamer</translation> + </message> + <message> + <source>Preferred audio sink:</source> + <translation>Preferowane ujście dźwiękowe:</translation> + </message> + <message> + <source>Preferred render method:</source> + <translation>Preferowana metoda renderowania:</translation> + </message> + <message> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: changes to these settings may prevent applications from starting up correctly.</span></p></body></html></source> + <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Zwróć uwagę, że zmiany tych ustawień mogą spowodować nieprawidłowe działanie aplikacji</span></p></body></html></translation> + </message> + <message> + <source>&File</source> + <translation>&Plik</translation> + </message> + <message> + <source>&Help</source> + <translation>&Pomoc</translation> + </message> + <message> + <source>&Save</source> + <translation>&Zachowaj</translation> + </message> + <message> + <source>Save</source> + <translation>Zachowaj</translation> + </message> + <message> + <source>Ctrl+S</source> + <translation>Ctrl+S</translation> + </message> + <message> + <source>E&xit</source> + <translation>Za&kończ</translation> + </message> + <message> + <source>Exit</source> + <translation>Zakończ</translation> + </message> + <message> + <source>Ctrl+Q</source> + <translation>Ctrl+Q</translation> + </message> + <message> + <source>&About</source> + <translation>&Informacje o</translation> + </message> + <message> + <source>About</source> + <translation>Informacje o</translation> + </message> + <message> + <source>About &Qt</source> + <translation>Informacje o &Qt</translation> + </message> + <message> + <source>About Qt</source> + <translation>Informacje o Qt</translation> + </message> +</context> +<context> + <name>MainWindowBase</name> + <message> + <source>Qt Configuration</source> + <translation type="obsolete">Konfiguracja Qt</translation> + </message> + <message> + <source>Appearance</source> + <translation type="obsolete">Wygląd</translation> + </message> + <message> + <source>GUI Style</source> + <translation type="obsolete">Styl GUI</translation> + </message> + <message> + <source>Select GUI &Style:</source> + <translation type="obsolete">Wybierz &styl GUI:</translation> + </message> + <message> + <source>Build Palette</source> + <translation type="obsolete">Wersje palety</translation> + </message> + <message> + <source>&3-D Effects:</source> + <translation type="obsolete">&Efekty 3-D:</translation> + </message> + <message> + <source>Window Back&ground:</source> + <translation type="obsolete">&Tło okna:</translation> + </message> + <message> + <source>&Tune Palette...</source> + <translation type="obsolete">&Ustaw paletę...</translation> + </message> + <message> + <source>Please use the KDE Control Center to set the palette.</source> + <translation type="obsolete">Użyj Centrum Kontroli KDE aby zmienić paletę.</translation> + </message> + <message> + <source>Preview</source> + <translation type="obsolete">Podgląd</translation> + </message> + <message> + <source>Select &Palette:</source> + <translation type="obsolete">Wybierz &paletę:</translation> + </message> + <message> + <source>Active Palette</source> + <translation type="obsolete">Aktywna paleta</translation> + </message> + <message> + <source>Inactive Palette</source> + <translation type="obsolete">Nieaktywna paleta</translation> + </message> + <message> + <source>Disabled Palette</source> + <translation type="obsolete">Paleta "zablokowane"</translation> + </message> + <message> + <source>Fonts</source> + <translation type="obsolete">Czcionki</translation> + </message> + <message> + <source>Default Font</source> + <translation type="obsolete">Domyślna czcionka</translation> + </message> + <message> + <source>&Style:</source> + <translation type="obsolete">&Styl:</translation> + </message> + <message> + <source>&Point Size:</source> + <translation type="obsolete">&Rozmiar czcionki:</translation> + </message> + <message> + <source>F&amily:</source> + <translation type="obsolete">&Nazwa czcionki:</translation> + </message> + <message> + <source>Sample Text</source> + <translation type="obsolete">Przykładowy tekst</translation> + </message> + <message> + <source>Font Substitution</source> + <translation type="obsolete">Zamiana czcionki</translation> + </message> + <message> + <source>S&elect or Enter a Family:</source> + <translation type="obsolete">&Wybierz lub wpisz nazwę czcionki:</translation> + </message> + <message> + <source>Current Substitutions:</source> + <translation type="obsolete">Bieżące zamiany:</translation> + </message> + <message> + <source>Up</source> + <translation type="obsolete">W górę</translation> + </message> + <message> + <source>Down</source> + <translation type="obsolete">W dół</translation> + </message> + <message> + <source>Remove</source> + <translation type="obsolete">Usuń</translation> + </message> + <message> + <source>Select s&ubstitute Family:</source> + <translation type="obsolete">Wybierz &nazwę czcionki do zamiany na:</translation> + </message> + <message> + <source>Add</source> + <translation type="obsolete">Dodaj</translation> + </message> + <message> + <source>Interface</source> + <translation type="obsolete">Interfejs</translation> + </message> + <message> + <source>Feel Settings</source> + <translation type="obsolete">Ustawienia działania</translation> + </message> + <message> + <source> ms</source> + <translation type="obsolete"> ms</translation> + </message> + <message> + <source>&Double Click Interval:</source> + <translation type="obsolete">&Odstęp pomiędzy dwukrotnym kliknięciem:</translation> + </message> + <message> + <source>No blinking</source> + <translation type="obsolete">Brak migotania</translation> + </message> + <message> + <source>&Cursor Flash Time:</source> + <translation type="obsolete">&Czas zmiany kursora:</translation> + </message> + <message> + <source> lines</source> + <translation type="obsolete"> linie</translation> + </message> + <message> + <source>Wheel &Scroll Lines:</source> + <translation type="obsolete">Obrócenie kółkiem powoduje &przesunięcie o tyle linii:</translation> + </message> + <message> + <source>Resolve symlinks in URLs</source> + <translation type="obsolete">Rozwiązuj dowiązania symboliczne w adresach URL</translation> + </message> + <message> + <source>GUI Effects</source> + <translation type="obsolete">Efekty GUI</translation> + </message> + <message> + <source>&Enable</source> + <translation type="obsolete">&Włącz</translation> + </message> + <message> + <source>Alt+E</source> + <translation type="obsolete">Alt+E</translation> + </message> + <message> + <source>&Menu Effect:</source> + <translation type="obsolete">Efekty &menu:</translation> + </message> + <message> + <source>C&omboBox Effect:</source> + <translation type="obsolete">Efekty c&ombobox'a:</translation> + </message> + <message> + <source>&ToolTip Effect:</source> + <translation type="obsolete">Efekt &chmurki:</translation> + </message> + <message> + <source>Tool&Box Effect:</source> + <translation type="obsolete">Efekty &paska narzędzi:</translation> + </message> + <message> + <source>Disable</source> + <translation type="obsolete">Wyłącz</translation> + </message> + <message> + <source>Animate</source> + <translation type="obsolete">Animacja</translation> + </message> + <message> + <source>Fade</source> + <translation type="obsolete">Wyłanianie</translation> + </message> + <message> + <source>Global Strut</source> + <translation type="obsolete">Minimalny rozmiar widżetów</translation> + </message> + <message> + <source>Minimum &Width:</source> + <translation type="obsolete">Minimalna &szerokość:</translation> + </message> + <message> + <source>Minimum Hei&ght:</source> + <translation type="obsolete">Minimalna &wysokość:</translation> + </message> + <message> + <source> pixels</source> + <translation type="obsolete"> pikseli</translation> + </message> + <message> + <source>Enhanced support for languages written right-to-left</source> + <translation type="obsolete">Rozszerzona obsługa dla języków pisanych od prawej do lewej</translation> + </message> + <message> + <source>XIM Input Style:</source> + <translation type="obsolete">Rodzaje wprowadzania znaków (XIM):</translation> </message> <message> <source>On The Spot</source> - <translation>W oknie dokumentu (On-The-Spot)</translation> + <translation type="obsolete">W oknie dokumentu (On-The-Spot)</translation> </message> <message> <source>Over The Spot</source> - <translation>Nad oknem dokumentu (Over-The-Spot)</translation> + <translation type="obsolete">Nad oknem dokumentu (Over-The-Spot)</translation> </message> <message> <source>Off The Spot</source> - <translation>Na pasku stanu (Off-The-Spot)</translation> + <translation type="obsolete">Na pasku stanu (Off-The-Spot)</translation> </message> <message> <source>Root</source> - <translation>W dodatkowym oknie (Root)</translation> + <translation type="obsolete">W dodatkowym oknie (Root)</translation> </message> <message> <source>Default Input Method:</source> - <translation>Domyślna metoda wprowadzania:</translation> + <translation type="obsolete">Domyślna metoda wprowadzania:</translation> </message> <message> <source>Printer</source> - <translation>Drukarka</translation> + <translation type="obsolete">Drukarka</translation> </message> <message> <source>Enable Font embedding</source> - <translation>Włącz czcionki wbudowane</translation> + <translation type="obsolete">Włącz czcionki wbudowane</translation> </message> <message> <source>Font Paths</source> - <translation>Ścieżki czcionek</translation> + <translation type="obsolete">Ścieżki czcionek</translation> </message> <message> <source>Browse...</source> - <translation>Przeglądaj...</translation> + <translation type="obsolete">Przeglądaj...</translation> </message> <message> <source>Press the <b>Browse</b> button or enter a directory and press Enter to add them to the list.</source> - <translation>Naciśnij przycisk <b>Przeglądaj</b> lub wpisz nazwę katalogu i naciśnij Enter aby dodać do listy.</translation> + <translation type="obsolete">Naciśnij przycisk <b>Przeglądaj</b> lub wpisz nazwę katalogu i naciśnij Enter aby dodać do listy.</translation> </message> <message> <source>Phonon</source> - <translation>Phonon</translation> + <translation type="obsolete">Phonon</translation> </message> <message> <source>About Phonon</source> - <translation>Informacje o Phonon</translation> + <translation type="obsolete">Informacje o Phonon</translation> </message> <message> <source>Current Version:</source> - <translation>Bieżąca wersja:</translation> + <translation type="obsolete">Bieżąca wersja:</translation> </message> <message> <source>Not available</source> - <translation>Nie dostępne</translation> + <translation type="obsolete">Nie dostępne</translation> </message> <message> <source>Website:</source> - <translation>Witryna:</translation> + <translation type="obsolete">Witryna:</translation> </message> <message> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -416,7 +760,7 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://phonon.kde.org"><span style=" text-decoration: underline; color:#0000ff;">http://phonon.kde.org</span></a></p></body></html></source> - <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -424,7 +768,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>About GStreamer</source> - <translation>Informacje o GStreamer</translation> + <translation type="obsolete">Informacje o GStreamer</translation> </message> <message> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -432,7 +776,7 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gstreamer.freedesktop.org/"><span style=" text-decoration: underline; color:#0000ff;">http://gstreamer.freedesktop.org/</span></a></p></body></html></source> - <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -440,15 +784,15 @@ p, li { white-space: pre-wrap; } </message> <message> <source>GStreamer backend settings</source> - <translation>Ustawienia końcówki GStreamer</translation> + <translation type="obsolete">Ustawienia końcówki GStreamer</translation> </message> <message> <source>Preferred audio sink:</source> - <translation>Preferowane ujście dźwiękowe:</translation> + <translation type="obsolete">Preferowane ujście dźwiękowe:</translation> </message> <message> <source>Preferred render method:</source> - <translation>Preferowana metoda renderowania:</translation> + <translation type="obsolete">Preferowana metoda renderowania:</translation> </message> <message> <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -456,7 +800,7 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: changes to these settings may prevent applications from starting up correctly.</span></p></body></html></source> - <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <translation type="obsolete"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -464,86 +808,82 @@ p, li { white-space: pre-wrap; } </message> <message> <source>&File</source> - <translation>&Plik</translation> + <translation type="obsolete">&Plik</translation> </message> <message> <source>&Help</source> - <translation>&Pomoc</translation> + <translation type="obsolete">&Pomoc</translation> </message> <message> <source>&Save</source> - <translation>&Zapisz</translation> + <translation type="obsolete">&Zapisz</translation> </message> <message> <source>Save</source> - <translation>Zapisz</translation> + <translation type="obsolete">Zapisz</translation> </message> <message> <source>Ctrl+S</source> - <translation>Ctrl+S</translation> + <translation type="obsolete">Ctrl+S</translation> </message> <message> <source>E&xit</source> - <translation>&Zakończ</translation> + <translation type="obsolete">&Zakończ</translation> </message> <message> <source>Exit</source> - <translation>Zakończ</translation> + <translation type="obsolete">Zakończ</translation> </message> <message> <source>&About</source> - <translation>&Informacje o</translation> + <translation type="obsolete">&Informacje o</translation> </message> <message> <source>About</source> - <translation>Informacje o</translation> + <translation type="obsolete">Informacje o</translation> </message> <message> <source>About &Qt</source> - <translation>Informacje o &Qt</translation> + <translation type="obsolete">Informacje o &Qt</translation> </message> <message> <source>About Qt</source> - <translation>Informacje o Qt</translation> + <translation type="obsolete">Informacje o Qt</translation> </message> </context> <context> - <name>PaletteEditorAdvancedBase</name> + <name>PaletteEditorAdvanced</name> <message> <source>Tune Palette</source> <translation>Ustaw paletę</translation> </message> <message> - <source><b>Edit Palette</b><p>Change the palette of the current widget or form.</p><p>Use a generated palette or select colors for each color group and each color role.</p><p>The palette can be tested with different widget layouts in the preview section.</p></source> - <translation><b>Edycja palety</b><p>Zmień paletę bieżącego widżetu lub formularza.</p><p>Użyj wygenerowanej palety lub wybierz kolory dla każdej grupy i roli koloru.</p><p>Paleta może być przetestowana z różnymi rozmieszczeniami widżetów w sekcji podglądu.</p></translation> - </message> - <message> <source>Select &Palette:</source> <translation>Wybierz &paletę:</translation> </message> <message> <source>Active Palette</source> - <translation>Paleta "aktywne"</translation> + <translation>Paleta "aktywna"</translation> </message> <message> <source>Inactive Palette</source> - <translation>Paleta "nieaktywne"</translation> + <translation>Paleta "nieaktywna"</translation> </message> <message> <source>Disabled Palette</source> - <translation>Paleta "zablokowane"</translation> + <translation>Paleta "zablokowana"</translation> </message> <message> <source>Auto</source> - <translation>Automatycznie</translation> + <translation>Automatyczne tworzenie</translation> </message> <message> <source>Build inactive palette from active</source> - <translation>Twórz paletę "nieaktywne" z "aktywne"</translation> + <translation>Twórz paletę "nieaktywną" na podstawie palety "aktywnej"</translation> </message> <message> <source>Build disabled palette from active</source> - <translation>Twórz paletę "zablokowane" z "aktywne"</translation> + <translation>Twórz paletę "zablokowaną" na podstawie palety "aktywnej"</translation> </message> <message> <source>Central color &roles</source> @@ -555,7 +895,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source><b>Select a color role.</b><p>Available central roles are: <ul> <li>Window - general background color.</li> <li>WindowText - general foreground color. </li> <li>Base - used as background color for e.g. text entry widgets, usually white or another light color. </li> <li>Text - the foreground color used with Base. Usually this is the same as WindowText, in what case it must provide good contrast both with Window and Base. </li> <li>Button - general button background color, where buttons need a background different from Window, as in the Macintosh style. </li> <li>ButtonText - a foreground color used with the Button color. </li> <li>Highlight - a color to indicate a selected or highlighted item. </li> <li>HighlightedText - a text color that contrasts to Highlight. </li> <li>BrightText - a text color that is very different from WindowText and contrasts well with e.g. black. </li> </ul> </p></source> - <translation><b>Wybierz rolę koloru.</b><p>Dostępne role główne: <ul> <li>Okno - główny kolor tła.</li> <li>Tekst Okna - główny kolor pierwszoplanowy. </li> <li>Bazowy - używany jako kolor tła dla np. widżetów wejściowych, zwykle biały lub inny jasny kolor. </li> <li>Tekst - kolor pierwszoplanowy używany z Bazowym. Zwykle jest on taki sam jak Tekst Okna i wtedy powinien dobrze kontrastować jednocześnie z Oknem i Bazowym </li> <li>Przycisk - główny kolor tła przycisku, gdy przyciski potrzebują innego tła niż Okno, jak np. w stylu Macintosh. </li> <li>Tekst Przycisku - kolor pierwszoplanowy używany z Przyciskiem. </li> <li>Podświetlony - kolor użyty w zaznaczonych lub podświetlonych elementach. </li> <li>Podświetlony Tekst - kolor tekstu który kontrastuje z Podświetlonym. </li> <li>Jasny Tekst - kolor teksty który znacznie różni się od Tekstu Okna i dobrze kontrastuje z np. czarnym. </li> </ul> </p></translation> + <translation><b>Wybierz rolę koloru.</b><p>Dostępne role główne: <ul> <li>Okno - główny kolor tła.</li> <li>Tekst Okna - główny kolor pierwszoplanowy. </li> <li>Bazowy - używany jako kolor tła dla np. widżetów wejściowych, zwykle biały lub inny jasny kolor. </li> <li>Tekst - kolor pierwszoplanowy używany z Bazowym. Zwykle jest on taki sam jak Tekst Okna i wtedy powinien dobrze kontrastować jednocześnie z Oknem i Bazowym </li> <li>Przycisk - główny kolor tła przycisku, gdy przyciski potrzebują innego tła niż Okno, jak np. w stylu Macintosh. </li> <li>Tekst Przycisku - kolor pierwszoplanowy używany z Przyciskiem. </li> <li>Wyróżnienie - kolor użyty w zaznaczonych lub podświetlonych elementach. </li> <li>Wyróżniony Tekst - kolor tekstu który kontrastuje z Podświetlonym. </li> <li>Jasny Tekst - kolor teksty który znacznie różni się od Tekstu Okna i dobrze kontrastuje z np. czarnym. </li> </ul> </p></translation> </message> <message> <source>Window</source> @@ -566,24 +906,36 @@ p, li { white-space: pre-wrap; } <translation>Tekst Okna</translation> </message> <message> - <source>Button</source> - <translation>Przycisk</translation> + <source>Base</source> + <translation>Bazowy</translation> </message> <message> - <source>Base</source> - <translation>Podstawa</translation> + <source>AlternateBase</source> + <translation>Bazowy Alternatywny</translation> + </message> + <message> + <source>ToolTipBase</source> + <translation>Bazowy dla podpowiedzi</translation> + </message> + <message> + <source>ToolTipText</source> + <translation>Tekst podpowiedzi</translation> </message> <message> <source>Text</source> <translation>Tekst</translation> </message> <message> - <source>BrightText</source> - <translation>Jasny tekst</translation> + <source>Button</source> + <translation>Przycisk</translation> </message> <message> <source>ButtonText</source> - <translation>Tekst przycisku</translation> + <translation>Tekst Przycisku</translation> + </message> + <message> + <source>BrightText</source> + <translation>Jasny Tekst</translation> </message> <message> <source>Highlight</source> @@ -591,27 +943,23 @@ p, li { white-space: pre-wrap; } </message> <message> <source>HighlightedText</source> - <translation>Tekst wyróżniony</translation> + <translation>Wyróżniony tekst</translation> </message> <message> - <source>&Select Color:</source> - <translation>&Wybierz kolor:</translation> + <source>Link</source> + <translation>Odsyłacz</translation> </message> <message> - <source>Choose a color</source> - <translation>Wybierz kolor</translation> + <source>LinkVisited</source> + <translation>Zwiedzony Odsyłacz</translation> </message> <message> - <source>Choose a color for the selected central color role.</source> - <translation>Wybierz kolor dla zaznaczonej głównej roli koloru.</translation> + <source>&Select Color:</source> + <translation>&Wybierz kolor:</translation> </message> <message> <source>3-D shadow &effects</source> - <translation>&Efekty cień 3-D </translation> - </message> - <message> - <source>Build &from button color</source> - <translation>&Zbuduj w oparciu o kolor przycisku</translation> + <translation>&Efekty cienia 3-D </translation> </message> <message> <source>Generate shadings</source> @@ -619,7 +967,11 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Check to let 3D-effect colors be calculated from button-color.</source> - <translation>Zaznacz aby kolory efektów trójwymiarowych były obliczone na podstawie koloru przycisku.</translation> + <translation>Zaznacz, aby kolory efektów trójwymiarowych były obliczone na podstawie koloru przycisku.</translation> + </message> + <message> + <source>Build &from button color</source> + <translation>&Zbuduj w oparciu o kolor przycisku</translation> </message> <message> <source>Choose 3D-effect color role</source> @@ -654,24 +1006,183 @@ p, li { white-space: pre-wrap; } <translation>Wybierz &kolor:</translation> </message> <message> + <source>Choose a color</source> + <translation>Wybierz kolor</translation> + </message> + <message> + <source>Choose a color for the selected central color role.</source> + <translation>Wybierz kolor dla zaznaczonej głównej roli koloru.</translation> + </message> + <message> <source>Choose a color for the selected effect color role.</source> <translation>Wybierz kolor dla zaznaczonej roli koloru dla efektu.</translation> </message> +</context> +<context> + <name>PaletteEditorAdvancedBase</name> + <message> + <source>Tune Palette</source> + <translation type="obsolete">Ustaw paletę</translation> + </message> + <message> + <source><b>Edit Palette</b><p>Change the palette of the current widget or form.</p><p>Use a generated palette or select colors for each color group and each color role.</p><p>The palette can be tested with different widget layouts in the preview section.</p></source> + <translation type="obsolete"><b>Edycja palety</b><p>Zmień paletę bieżącego widżetu lub formularza.</p><p>Użyj wygenerowanej palety lub wybierz kolory dla każdej grupy i roli koloru.</p><p>Paleta może być przetestowana z różnymi rozmieszczeniami widżetów w sekcji podglądu.</p></translation> + </message> + <message> + <source>Select &Palette:</source> + <translation type="obsolete">Wybierz &paletę:</translation> + </message> + <message> + <source>Active Palette</source> + <translation type="obsolete">Paleta "aktywne"</translation> + </message> + <message> + <source>Inactive Palette</source> + <translation type="obsolete">Paleta "nieaktywne"</translation> + </message> + <message> + <source>Disabled Palette</source> + <translation type="obsolete">Paleta "zablokowane"</translation> + </message> + <message> + <source>Auto</source> + <translation type="obsolete">Automatycznie</translation> + </message> + <message> + <source>Build inactive palette from active</source> + <translation type="obsolete">Twórz paletę "nieaktywne" z "aktywne"</translation> + </message> + <message> + <source>Build disabled palette from active</source> + <translation type="obsolete">Twórz paletę "zablokowane" z "aktywne"</translation> + </message> + <message> + <source>Central color &roles</source> + <translation type="obsolete">Główne &role koloru</translation> + </message> + <message> + <source>Choose central color role</source> + <translation type="obsolete">Wybierz główną rolę koloru</translation> + </message> + <message> + <source><b>Select a color role.</b><p>Available central roles are: <ul> <li>Window - general background color.</li> <li>WindowText - general foreground color. </li> <li>Base - used as background color for e.g. text entry widgets, usually white or another light color. </li> <li>Text - the foreground color used with Base. Usually this is the same as WindowText, in what case it must provide good contrast both with Window and Base. </li> <li>Button - general button background color, where buttons need a background different from Window, as in the Macintosh style. </li> <li>ButtonText - a foreground color used with the Button color. </li> <li>Highlight - a color to indicate a selected or highlighted item. </li> <li>HighlightedText - a text color that contrasts to Highlight. </li> <li>BrightText - a text color that is very different from WindowText and contrasts well with e.g. black. </li> </ul> </p></source> + <translation type="obsolete"><b>Wybierz rolę koloru.</b><p>Dostępne role główne: <ul> <li>Okno - główny kolor tła.</li> <li>Tekst Okna - główny kolor pierwszoplanowy. </li> <li>Bazowy - używany jako kolor tła dla np. widżetów wejściowych, zwykle biały lub inny jasny kolor. </li> <li>Tekst - kolor pierwszoplanowy używany z Bazowym. Zwykle jest on taki sam jak Tekst Okna i wtedy powinien dobrze kontrastować jednocześnie z Oknem i Bazowym </li> <li>Przycisk - główny kolor tła przycisku, gdy przyciski potrzebują innego tła niż Okno, jak np. w stylu Macintosh. </li> <li>Tekst Przycisku - kolor pierwszoplanowy używany z Przyciskiem. </li> <li>Podświetlony - kolor użyty w zaznaczonych lub podświetlonych elementach. </li> <li>Podświetlony Tekst - kolor tekstu który kontrastuje z Podświetlonym. </li> <li>Jasny Tekst - kolor teksty który znacznie różni się od Tekstu Okna i dobrze kontrastuje z np. czarnym. </li> </ul> </p></translation> + </message> + <message> + <source>Window</source> + <translation type="obsolete">Okno</translation> + </message> + <message> + <source>WindowText</source> + <translation type="obsolete">Tekst Okna</translation> + </message> + <message> + <source>Button</source> + <translation type="obsolete">Przycisk</translation> + </message> + <message> + <source>Base</source> + <translation type="obsolete">Podstawa</translation> + </message> + <message> + <source>Text</source> + <translation type="obsolete">Tekst</translation> + </message> + <message> + <source>BrightText</source> + <translation type="obsolete">Jasny tekst</translation> + </message> + <message> + <source>ButtonText</source> + <translation type="obsolete">Tekst przycisku</translation> + </message> + <message> + <source>Highlight</source> + <translation type="obsolete">Wyróżnienie</translation> + </message> + <message> + <source>HighlightedText</source> + <translation type="obsolete">Tekst wyróżniony</translation> + </message> + <message> + <source>&Select Color:</source> + <translation type="obsolete">&Wybierz kolor:</translation> + </message> + <message> + <source>Choose a color</source> + <translation type="obsolete">Wybierz kolor</translation> + </message> + <message> + <source>Choose a color for the selected central color role.</source> + <translation type="obsolete">Wybierz kolor dla zaznaczonej głównej roli koloru.</translation> + </message> + <message> + <source>3-D shadow &effects</source> + <translation type="obsolete">&Efekty cień 3-D </translation> + </message> + <message> + <source>Build &from button color</source> + <translation type="obsolete">&Zbuduj w oparciu o kolor przycisku</translation> + </message> + <message> + <source>Generate shadings</source> + <translation type="obsolete">Wygeneruj cienie</translation> + </message> + <message> + <source>Check to let 3D-effect colors be calculated from button-color.</source> + <translation type="obsolete">Zaznacz aby kolory efektów trójwymiarowych były obliczone na podstawie koloru przycisku.</translation> + </message> + <message> + <source>Choose 3D-effect color role</source> + <translation type="obsolete">Wybierz rolę koloru efektu trójwymiarowego</translation> + </message> + <message> + <source><b>Select a color role.</b><p>Available effect roles are: <ul> <li>Light - lighter than Button color. </li> <li>Midlight - between Button and Light. </li> <li>Mid - between Button and Dark. </li> <li>Dark - darker than Button. </li> <li>Shadow - a very dark color. </li> </ul></source> + <translation type="obsolete"><b>Wybierz rolę koloru.</b><p>Dostępne role kolorów: <ul> <li>Jasny - jaśniejszy od koloru Przycisku. </li> <li>Średnio Jasny - pomiędzy kolorem Przycisku i Jasnym. </li> <li>Średni - pomiędzy kolorem Przycisku i Ciemnym. </li> <li>Ciemny - ciemniejszy od koloru Przycisku. </li> <li>Cień - bardzo ciemny kolor. </li> </ul></translation> + </message> + <message> + <source>Light</source> + <translation type="obsolete">Jasny</translation> + </message> + <message> + <source>Midlight</source> + <translation type="obsolete">Średnio jasny</translation> + </message> + <message> + <source>Mid</source> + <translation type="obsolete">Średni</translation> + </message> + <message> + <source>Dark</source> + <translation type="obsolete">Ciemny</translation> + </message> + <message> + <source>Shadow</source> + <translation type="obsolete">Cień</translation> + </message> + <message> + <source>Select Co&lor:</source> + <translation type="obsolete">Wybierz &kolor:</translation> + </message> + <message> + <source>Choose a color for the selected effect color role.</source> + <translation type="obsolete">Wybierz kolor dla zaznaczonej roli koloru dla efektu.</translation> + </message> <message> <source>OK</source> - <translation>OK</translation> + <translation type="obsolete">OK</translation> </message> <message> <source>Close dialog and apply all changes.</source> - <translation>Zamknij okno i zastosuj wszystkie zmiany.</translation> + <translation type="obsolete">Zamknij okno i zastosuj wszystkie zmiany.</translation> </message> <message> <source>Cancel</source> - <translation>Anuluj</translation> + <translation type="obsolete">Anuluj</translation> </message> <message> <source>Close dialog and discard all changes.</source> - <translation>Zamknij okno i anuluj wszystkie zmiany.</translation> + <translation type="obsolete">Zamknij okno i anuluj wszystkie zmiany.</translation> </message> </context> <context> @@ -682,14 +1193,14 @@ p, li { white-space: pre-wrap; } </message> </context> <context> - <name>PreviewWidgetBase</name> + <name>PreviewWidget</name> <message> <source>Preview Window</source> <translation>Okno podglądu</translation> </message> <message> - <source>ButtonGroup</source> - <translation>ButtonGroup</translation> + <source>GroupBox</source> + <translation>GroupBox</translation> </message> <message> <source>RadioButton1</source> @@ -704,8 +1215,8 @@ p, li { white-space: pre-wrap; } <translation>RadioButton3</translation> </message> <message> - <source>ButtonGroup2</source> - <translation>ButtonGroup2</translation> + <source>GroupBox2</source> + <translation>GroupBox2</translation> </message> <message> <source>CheckBox1</source> @@ -728,13 +1239,66 @@ p, li { white-space: pre-wrap; } <translation>PushButton</translation> </message> <message> + <source><p><a href="http://qt.nokia.com">http://qt.nokia.com</a></p> +<p><a href="http://www.kde.org">http://www.kde.org</a></p></source> + <translation><p><a href="http://qt.nokia.com">http://qt.nokia.com</a></p> +<p><a href="http://www.kde.org">http://www.kde.org</a></p></translation> + </message> +</context> +<context> + <name>PreviewWidgetBase</name> + <message> + <source>Preview Window</source> + <translation type="obsolete">Okno podglądu</translation> + </message> + <message> + <source>ButtonGroup</source> + <translation type="obsolete">ButtonGroup</translation> + </message> + <message> + <source>RadioButton1</source> + <translation type="obsolete">RadioButton1</translation> + </message> + <message> + <source>RadioButton2</source> + <translation type="obsolete">RadioButton2</translation> + </message> + <message> + <source>RadioButton3</source> + <translation type="obsolete">RadioButton3</translation> + </message> + <message> + <source>ButtonGroup2</source> + <translation type="obsolete">ButtonGroup2</translation> + </message> + <message> + <source>CheckBox1</source> + <translation type="obsolete">CheckBox1</translation> + </message> + <message> + <source>CheckBox2</source> + <translation type="obsolete">CheckBox2</translation> + </message> + <message> + <source>LineEdit</source> + <translation type="obsolete">LineEdit</translation> + </message> + <message> + <source>ComboBox</source> + <translation type="obsolete">ComboBox</translation> + </message> + <message> + <source>PushButton</source> + <translation type="obsolete">PushButton</translation> + </message> + <message> <source><p> <a href="http://qt.nokia.com">http://qt.nokia.com</a> </p> <p> <a href="http://www.kde.org">http://www.kde.org</a> </p></source> - <translation><p> + <translation type="obsolete"><p> <a href="http://qt.nokia.com">http://qt.nokia.com</a> </p> <p> diff --git a/translations/qtconfig_ru.ts b/translations/qtconfig_ru.ts index a200ac1..c5ddbb0 100644 --- a/translations/qtconfig_ru.ts +++ b/translations/qtconfig_ru.ts @@ -33,7 +33,7 @@ </message> <message> <source>On The Spot</source> - <translation type="unfinished"></translation> + <translation>В тексте</translation> </message> <message> <source>Unknown</source> @@ -101,15 +101,15 @@ </message> <message> <source>Over The Spot</source> - <translation type="unfinished"></translation> + <translation>Поверх текста</translation> </message> <message> <source>Off The Spot</source> - <translation type="unfinished"></translation> + <translation>Вне текста</translation> </message> <message> <source>Root</source> - <translation type="unfinished"></translation> + <translation>Общий</translation> </message> <message> <source>Select a Directory</source> diff --git a/translations/qtconfig_uk.ts b/translations/qtconfig_uk.ts index 24a9b7d..6cdae56 100644 --- a/translations/qtconfig_uk.ts +++ b/translations/qtconfig_uk.ts @@ -36,6 +36,10 @@ <translation>У вікні документу</translation> </message> <message> + <source>Unknown</source> + <translation>Невідомий</translation> + </message> + <message> <source>Auto (default)</source> <translation>Автоматично (типово)</translation> </message> @@ -92,6 +96,10 @@ <translation>Збереження змін...</translation> </message> <message> + <source>Saved changes.</source> + <translation>Зміни збережено.</translation> + </message> + <message> <source>Over The Spot</source> <translation>Над вікном документу</translation> </message> @@ -124,25 +132,6 @@ <translation>Зберегти зміни до налаштувань?</translation> </message> <message> - <source>&Yes</source> - <translation>&Так</translation> - </message> - <message> - <source>&No</source> - <translation>&Ні</translation> - </message> - <message> - <source>&Cancel</source> - <translation>&Скасувати</translation> - </message> -</context> -<context> - <name>MainWindowBase</name> - <message> - <source>Qt Configuration</source> - <translation>Налаштування Qt</translation> - </message> - <message> <source>Appearance</source> <translation>Вигляд</translation> </message> @@ -179,8 +168,8 @@ <translation>Створити палітру</translation> </message> <message> - <source>&3-D Effects:</source> - <translation>&3-D ефекти:</translation> + <source>&Button Background:</source> + <translation>Фон &кнопки:</translation> </message> <message> <source>Window Back&ground:</source> @@ -351,22 +340,6 @@ <translation>Стиль введення XIM:</translation> </message> <message> - <source>On The Spot</source> - <translation>У вікні документу</translation> - </message> - <message> - <source>Over The Spot</source> - <translation>Над вікном документу</translation> - </message> - <message> - <source>Off The Spot</source> - <translation>В рядку стану</translation> - </message> - <message> - <source>Root</source> - <translation>В додатковому вікні</translation> - </message> - <message> <source>Default Input Method:</source> <translation>Типовий метод введення:</translation> </message> @@ -411,11 +384,7 @@ <translation>Веб-сайт:</translation> </message> <message> - <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://phonon.kde.org"><span style=" text-decoration: underline; color:#0000ff;">http://phonon.kde.org</span></a></p></body></html></source> + <source><a href="http://phonon.kde.org">http://phonon.kde.org/</a></source> <translation></translation> </message> <message> @@ -423,11 +392,7 @@ p, li { white-space: pre-wrap; } <translation>Про GStreamer</translation> </message> <message> - <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gstreamer.freedesktop.org/"><span style=" text-decoration: underline; color:#0000ff;">http://gstreamer.freedesktop.org/</span></a></p></body></html></source> + <source><a href="http://gstreamer.freedesktop.org/">http://gstreamer.freedesktop.org/</a></source> <translation></translation> </message> <message> @@ -472,7 +437,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Ctrl+S</source> - <translation>Ctrl+S</translation> + <translation></translation> </message> <message> <source>E&xit</source> @@ -483,6 +448,10 @@ p, li { white-space: pre-wrap; } <translation>Вийти</translation> </message> <message> + <source>Ctrl+Q</source> + <translation></translation> + </message> + <message> <source>&About</source> <translation>&Про</translation> </message> @@ -500,16 +469,12 @@ p, li { white-space: pre-wrap; } </message> </context> <context> - <name>PaletteEditorAdvancedBase</name> + <name>PaletteEditorAdvanced</name> <message> <source>Tune Palette</source> <translation>Налаштувати палітру</translation> </message> <message> - <source><b>Edit Palette</b><p>Change the palette of the current widget or form.</p><p>Use a generated palette or select colors for each color group and each color role.</p><p>The palette can be tested with different widget layouts in the preview section.</p></source> - <translation><b>Редагування палітри</b><p>Змінити палітру поточного віджета чи форми.</p><p>Використовуйте згенеровану палітру чи оберіть кольори для кожної групи кольорів та кожної кольорової ролі.</p><p>Палітру можна протестувати з різними розміщеннями віджетів в секції попереднього перегляду.</p></translation> - </message> - <message> <source>Select &Palette:</source> <translation>Виберіть &палітру:</translation> </message> @@ -558,26 +523,38 @@ p, li { white-space: pre-wrap; } <translation>Текст вікна</translation> </message> <message> - <source>Button</source> - <translation>Кнопка</translation> - </message> - <message> <source>Base</source> <translation>Базовий</translation> </message> <message> + <source>AlternateBase</source> + <translation>Альтернативний базовий</translation> + </message> + <message> + <source>ToolTipBase</source> + <translation>Базовий спливаючої підказки</translation> + </message> + <message> + <source>ToolTipText</source> + <translation>Текст спливаючої підказки</translation> + </message> + <message> <source>Text</source> <translation>Текст</translation> </message> <message> - <source>BrightText</source> - <translation>Яскравий текст</translation> + <source>Button</source> + <translation>Кнопка</translation> </message> <message> <source>ButtonText</source> <translation>Текст кнопки</translation> </message> <message> + <source>BrightText</source> + <translation>Яскравий текст</translation> + </message> + <message> <source>Highlight</source> <translation>Підсвічений</translation> </message> @@ -586,26 +563,22 @@ p, li { white-space: pre-wrap; } <translation>Підсвічений текст</translation> </message> <message> - <source>&Select Color:</source> - <translation>&Оберіть колір:</translation> + <source>Link</source> + <translation>Посилання</translation> </message> <message> - <source>Choose a color</source> - <translation>Оберіть колір</translation> + <source>LinkVisited</source> + <translation>Відвідане посилання</translation> </message> <message> - <source>Choose a color for the selected central color role.</source> - <translation>Виберіть колір для вказаної головної кольорової ролі.</translation> + <source>&Select Color:</source> + <translation>&Оберіть колір:</translation> </message> <message> <source>3-D shadow &effects</source> <translation>3-D &ефекти тіні</translation> </message> <message> - <source>Build &from button color</source> - <translation>Будувати &з кольору кнопки</translation> - </message> - <message> <source>Generate shadings</source> <translation>Генерувати тіні</translation> </message> @@ -614,6 +587,10 @@ p, li { white-space: pre-wrap; } <translation>Увімкніть, щоб кольори 3D-ефектів розраховувались з кольору кнопки.</translation> </message> <message> + <source>Build &from button color</source> + <translation>Будувати &з кольору кнопки</translation> + </message> + <message> <source>Choose 3D-effect color role</source> <translation>Оберіть роль для 3D-ефектів</translation> </message> @@ -646,24 +623,16 @@ p, li { white-space: pre-wrap; } <translation>Оберіть &колір:</translation> </message> <message> - <source>Choose a color for the selected effect color role.</source> - <translation>Оберіть колір для вказаної кольорової ролі ефектів.</translation> - </message> - <message> - <source>OK</source> - <translation>OK</translation> - </message> - <message> - <source>Close dialog and apply all changes.</source> - <translation>Закрити діалог та застосувати усі зміни.</translation> + <source>Choose a color</source> + <translation>Оберіть колір</translation> </message> <message> - <source>Cancel</source> - <translation>Скасувати</translation> + <source>Choose a color for the selected central color role.</source> + <translation>Виберіть колір для вказаної головної кольорової ролі.</translation> </message> <message> - <source>Close dialog and discard all changes.</source> - <translation>Закрити діалог та відкинути усі зміни.</translation> + <source>Choose a color for the selected effect color role.</source> + <translation>Оберіть колір для вказаної кольорової ролі ефектів.</translation> </message> </context> <context> @@ -674,14 +643,14 @@ p, li { white-space: pre-wrap; } </message> </context> <context> - <name>PreviewWidgetBase</name> + <name>PreviewWidget</name> <message> <source>Preview Window</source> <translation>Вікно попереднього перегляду</translation> </message> <message> - <source>ButtonGroup</source> - <translation>Група кнопок</translation> + <source>GroupBox</source> + <translation>Контейнер</translation> </message> <message> <source>RadioButton1</source> @@ -696,8 +665,8 @@ p, li { white-space: pre-wrap; } <translation>Перемикач 3</translation> </message> <message> - <source>ButtonGroup2</source> - <translation>Група кнопок 2</translation> + <source>GroupBox2</source> + <translation>Контейнер 2</translation> </message> <message> <source>CheckBox1</source> @@ -720,18 +689,9 @@ p, li { white-space: pre-wrap; } <translation>Кнопка</translation> </message> <message> - <source><p> -<a href="http://qt.nokia.com">http://qt.nokia.com</a> -</p> -<p> -<a href="http://www.kde.org">http://www.kde.org</a> -</p></source> - <translation><p> -<a href="http://qt.nokia.com">http://qt.nokia.com</a> -</p> -<p> -<a href="http://www.kde.org">http://www.kde.org</a> -</p></translation> + <source><p><a href="http://qt.nokia.com">http://qt.nokia.com</a></p> +<p><a href="http://www.kde.org">http://www.kde.org</a></p></source> + <translation></translation> </message> </context> </TS> diff --git a/translations/qvfb_pl.ts b/translations/qvfb_pl.ts index 7c18a5b..0d2db1d 100644 --- a/translations/qvfb_pl.ts +++ b/translations/qvfb_pl.ts @@ -262,11 +262,11 @@ <name>QVFb</name> <message> <source>&File</source> - <translation type="unfinished"></translation> + <translation>&Plik</translation> </message> <message> <source>&Configure...</source> - <translation type="unfinished"></translation> + <translation>&Konfiguruj...</translation> </message> <message> <source>&Save image...</source> @@ -274,19 +274,19 @@ </message> <message> <source>&Animation...</source> - <translation type="unfinished"></translation> + <translation>&Animacja...</translation> </message> <message> <source>&Quit</source> - <translation type="unfinished"></translation> + <translation>Za&kończ</translation> </message> <message> <source>&View</source> - <translation type="unfinished"></translation> + <translation>&Widok</translation> </message> <message> <source>Show &Cursor</source> - <translation type="unfinished"></translation> + <translation>Pokaż ku&rsor</translation> </message> <message> <source>&Refresh Rate...</source> @@ -294,55 +294,55 @@ </message> <message> <source>&No rotation</source> - <translation type="unfinished"></translation> + <translation>&Brak rotacji</translation> </message> <message> <source>&90° rotation</source> - <translation type="unfinished"></translation> + <translation>Rotacja &90°</translation> </message> <message> <source>1&80° rotation</source> - <translation type="unfinished"></translation> + <translation>Rotacja 1&80°</translation> </message> <message> <source>2&70° rotation</source> - <translation type="unfinished"></translation> + <translation>Rotacja 2&70°</translation> </message> <message> <source>Zoom scale &0.5</source> - <translation type="unfinished"></translation> + <translation>Powiększenie &0.5</translation> </message> <message> <source>Zoom scale 0.7&5</source> - <translation type="unfinished"></translation> + <translation>Powiększenie 0.7&5</translation> </message> <message> <source>Zoom scale &1</source> - <translation type="unfinished"></translation> + <translation>Powiększenie &1</translation> </message> <message> <source>Zoom scale &2</source> - <translation type="unfinished"></translation> + <translation>Powiększenie &2</translation> </message> <message> <source>Zoom scale &3</source> - <translation type="unfinished"></translation> + <translation>Powiększenie &3</translation> </message> <message> <source>Zoom scale &4</source> - <translation type="unfinished"></translation> + <translation>Powiększenie &4</translation> </message> <message> <source>Zoom &scale...</source> - <translation type="unfinished"></translation> + <translation>&Powiększenie...</translation> </message> <message> <source>&Help</source> - <translation type="unfinished"></translation> + <translation>&Pomoc</translation> </message> <message> <source>&About...</source> - <translation type="unfinished"></translation> + <translation>&Informacje o...</translation> </message> <message> <source>Save Main Screen image</source> @@ -397,19 +397,19 @@ <name>QVFbRateDialog</name> <message> <source>Target frame rate:</source> - <translation type="unfinished"></translation> + <translation>Docelowa częstotliwość:</translation> </message> <message> <source>%1fps</source> - <translation type="unfinished"></translation> + <translation>%1fps</translation> </message> <message> <source>OK</source> - <translation type="unfinished"></translation> + <translation>OK</translation> </message> <message> <source>Cancel</source> - <translation type="unfinished"></translation> + <translation>Anuluj</translation> </message> </context> </TS> |