summaryrefslogtreecommitdiffstats
ModeNameSize
-rw-r--r--.autom4te.cfg652logstatsplain
-rw-r--r--.clang-format1863logstatsplain
-rw-r--r--.gitattributes39605logstatsplain
d---------.github74logstatsplain
-rw-r--r--.gitignore810logstatsplain
-rw-r--r--.h5chkright.ini1611logstatsplain
-rw-r--r--ACKNOWLEDGMENTS683logstatsplain
-rw-r--r--CMakeFilters.cmake5769logstatsplain
-rw-r--r--CMakeInstallation.cmake24990logstatsplain
-rw-r--r--CMakeLists.txt51326logstatsplain
-rw-r--r--CMakePlugins.cmake2380logstatsplain
-rw-r--r--COPYING5247logstatsplain
-rw-r--r--COPYING_LBNL_HDF52638logstatsplain
-rw-r--r--CTestConfig.cmake1952logstatsplain
-rw-r--r--MANIFEST120734logstatsplain
-rw-r--r--Makefile.am8178logstatsplain
-rw-r--r--Makefile.dist1122logstatsplain
-rw-r--r--README.txt2988logstatsplain
-rw-r--r--UserMacros.cmake1484logstatsplain
-rw-r--r--acsite.m42103logstatsplain
-rwxr-xr-xautogen.sh8471logstatsplain
d---------bin1686logstatsplain
d---------c++212logstatsplain
d---------config1492logstatsplain
-rw-r--r--configure.ac141762logstatsplain
d---------doc47logstatsplain
d---------examples1924logstatsplain
d---------fortran284logstatsplain
d---------hl308logstatsplain
d---------java242logstatsplain
d---------m4968logstatsplain
d---------release_docs759logstatsplain
d---------src19189logstatsplain
d---------test10894logstatsplain
d---------testpar1368logstatsplain
d---------tools277logstatsplain
d---------utils153logstatsplain
y='file diffstat' width='100%'> -rw-r--r--src/gui/styles/qs60style.cpp38
-rw-r--r--src/gui/styles/qs60style.h2
-rw-r--r--src/gui/styles/qs60style_p.h2
-rw-r--r--src/gui/styles/qs60style_s60.cpp27
-rw-r--r--src/gui/styles/qs60style_simulated.cpp4
-rw-r--r--src/gui/styles/qwindowsmobilestyle.cpp106
-rw-r--r--src/gui/symbian/qsymbianevent.cpp143
-rw-r--r--src/gui/symbian/qsymbianevent.h104
-rw-r--r--src/gui/text/qfontengine_mac.mm76
-rw-r--r--src/gui/text/qfontengine_p.h3
-rw-r--r--src/gui/text/qtextengine_mac.cpp9
-rw-r--r--src/gui/widgets/qdialogbuttonbox.cpp10
-rw-r--r--src/gui/widgets/qmenu_mac.mm20
-rw-r--r--src/gui/widgets/qmenu_symbian.cpp8
-rw-r--r--src/gui/widgets/qmenubar.cpp9
-rw-r--r--src/gui/widgets/qmenubar_p.h3
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp40
-rw-r--r--src/multimedia/audio/qaudioinput_alsa_p.cpp19
-rw-r--r--src/multimedia/audio/qaudioinput_alsa_p.h1
-rw-r--r--src/multimedia/audio/qaudiooutput_alsa_p.cpp17
-rw-r--r--src/multimedia/audio/qaudiooutput_alsa_p.h1
-rw-r--r--src/network/socket/qabstractsocket.cpp13
-rw-r--r--src/network/ssl/qsslsocket.cpp16
-rw-r--r--src/network/ssl/qsslsocket.h4
-rw-r--r--src/opengl/gl2paintengineex/qglcustomshaderstage.cpp2
-rw-r--r--src/openvg/qpaintengine_vg.cpp18
-rw-r--r--src/openvg/qpixmapfilter_vg.cpp54
-rw-r--r--src/openvg/qpixmapfilter_vg_p.h5
-rw-r--r--src/plugins/accessible/widgets/main.cpp4
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.cpp84
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.h33
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable.c62
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable.h15
-rw-r--r--src/plugins/gfxdrivers/powervr/README7
-rw-r--r--src/s60installs/eabi/QtGuiu.def44
-rw-r--r--src/s60installs/eabi/QtMultimediau.def6
-rw-r--r--src/s60installs/eabi/QtNetworku.def5
-rw-r--r--src/s60installs/eabi/QtScriptu.def1
-rw-r--r--src/s60installs/eabi/QtXmlu.def1
-rw-r--r--src/s60installs/eabi/phononu.def10
-rw-r--r--src/script/api/qscriptengine.cpp12
-rw-r--r--src/script/api/qscriptengine_p.h5
-rw-r--r--src/script/api/qscriptengineagent.cpp2
-rw-r--r--src/script/api/qscriptvalue.h3
-rw-r--r--src/testlib/qtestlog.cpp5
-rw-r--r--tests/auto/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp200
-rw-r--r--tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp4
-rw-r--r--tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp11
-rw-r--r--tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp14
-rw-r--r--tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp7
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp4
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview_2.cpp212
-rw-r--r--tests/auto/qheaderview/tst_qheaderview.cpp5
-rw-r--r--tests/auto/qlabel/qlabel.pro21
-rw-r--r--tests/auto/qlabel/tst_qlabel.cpp58
-rw-r--r--tests/auto/qlineedit/tst_qlineedit.cpp24
-rw-r--r--tests/auto/qlistview/tst_qlistview.cpp24
-rw-r--r--tests/auto/qpixmap/tst_qpixmap.cpp2
-rw-r--r--tests/auto/qscriptengineagent/tst_qscriptengineagent.cpp38
-rw-r--r--tests/auto/qsqldatabase/tst_qsqldatabase.cpp9
-rw-r--r--tests/auto/qsqlquery/tst_qsqlquery.cpp3
-rw-r--r--tests/auto/qsslsocket/tst_qsslsocket.cpp45
-rw-r--r--tests/auto/qtableview/tst_qtableview.cpp35
-rw-r--r--tests/auto/qtabwidget/tst_qtabwidget.cpp6
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp66
-rw-r--r--tests/benchmarks/benchmarks.pro4
-rw-r--r--tests/benchmarks/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp236
-rw-r--r--tests/benchmarks/qnetworkreply/qnetworkreply.pro2
-rw-r--r--tests/benchmarks/qnetworkreply/tst_qnetworkreply.cpp (renamed from tests/benchmarks/qnetworkreply/main.cpp)40
-rw-r--r--tools/assistant/lib/qhelpcollectionhandler.cpp14
-rw-r--r--tools/assistant/lib/qhelpsearchquerywidget.cpp2
-rw-r--r--tools/qdoc3/cppcodemarker.cpp19
-rw-r--r--tools/qdoc3/cppcodeparser.cpp23
-rw-r--r--tools/qdoc3/htmlgenerator.cpp6
-rw-r--r--tools/qdoc3/node.cpp14
-rw-r--r--tools/qdoc3/node.h11
-rw-r--r--translations/qt_de.ts643
129 files changed, 57089 insertions, 31332 deletions
diff --git a/bin/setcepaths.bat b/bin/setcepaths.bat
index 15d8ff8..914e594 100755
--- a/bin/setcepaths.bat
+++ b/bin/setcepaths.bat
@@ -79,6 +79,11 @@ checksdk.exe -sdk "Windows Mobile 6 Professional SDK (ARMV4I)" -script tmp_creat
tmp_created_script_setup.bat
del tmp_created_script_setup.bat
echo Windows Mobile 6 Professional selected, environment is set up
+) ELSE IF "%1" EQU "wincewm65professional-msvc2005" (
+checksdk.exe -sdk "Windows Mobile 6 Professional SDK (ARMV4I)" -script tmp_created_script_setup.bat 1>NUL
+tmp_created_script_setup.bat
+del tmp_created_script_setup.bat
+echo Windows Mobile 6 Professional selected, environment is set up
) ELSE IF "%1" EQU "wincewm60standard-msvc2005" (
checksdk.exe -sdk "Windows Mobile 6 Standard SDK (ARMV4I)" -script tmp_created_script_setup.bat 1>NUL
tmp_created_script_setup.bat
@@ -124,6 +129,11 @@ checksdk.exe -sdk "Windows Mobile 6 Professional SDK (ARMV4I)" -script tmp_creat
tmp_created_script_setup.bat
del tmp_created_script_setup.bat
echo Windows Mobile 6 Professional selected, environment is set up
+) ELSE IF "%1" EQU "wincewm65professional-msvc2008" (
+checksdk.exe -sdk "Windows Mobile 6 Professional SDK (ARMV4I)" -script tmp_created_script_setup.bat 1>NUL
+tmp_created_script_setup.bat
+del tmp_created_script_setup.bat
+echo Windows Mobile 6 Professional selected, environment is set up
) ELSE IF "%1" EQU "wincewm60standard-msvc2008" (
checksdk.exe -sdk "Windows Mobile 6 Standard SDK (ARMV4I)" -script tmp_created_script_setup.bat 1>NUL
tmp_created_script_setup.bat
diff --git a/demos/embedded/digiflip/digiflip.cpp b/demos/embedded/digiflip/digiflip.cpp
index 2edb752..9d6265d 100644
--- a/demos/embedded/digiflip/digiflip.cpp
+++ b/demos/embedded/digiflip/digiflip.cpp
@@ -117,7 +117,7 @@ protected:
QPixmap drawDigits(int n, const QRect &rect) {
int scaleFactor = 2;
-#if defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
if (rect.height() > 240)
scaleFactor = 1;
#endif
@@ -192,7 +192,7 @@ protected:
void paintFlip() {
QPainter p(this);
-#if !defined(Q_OS_SYMBIAN)
+#if !defined(Q_OS_SYMBIAN) && !defined(Q_OS_WINCE_WM)
p.setRenderHint(QPainter::SmoothPixmapTransform, true);
p.setRenderHint(QPainter::Antialiasing, true);
#endif
@@ -319,7 +319,7 @@ public:
connect(slideAction, SIGNAL(triggered()), SLOT(chooseSlide()));
connect(flipAction, SIGNAL(triggered()), SLOT(chooseFlip()));
connect(rotateAction, SIGNAL(triggered()), SLOT(chooseRotate()));
-#if defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
menuBar()->addAction(slideAction);
menuBar()->addAction(flipAction);
menuBar()->addAction(rotateAction);
@@ -414,7 +414,7 @@ int main(int argc, char *argv[])
QApplication app(argc, argv);
DigiFlip time;
-#if defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
time.showMaximized();
#else
time.resize(320, 240);
diff --git a/demos/embedded/flickable/main.cpp b/demos/embedded/flickable/main.cpp
index 403085a..eb2c3c0 100644
--- a/demos/embedded/flickable/main.cpp
+++ b/demos/embedded/flickable/main.cpp
@@ -222,7 +222,7 @@ int main(int argc, char *argv[])
ColorList list;
list.setWindowTitle("Kinetic Scrolling");
-#ifdef Q_OS_SYMBIAN
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
list.showMaximized();
#else
list.resize(320, 320);
diff --git a/demos/embedded/fluidlauncher/fluidlauncher.cpp b/demos/embedded/fluidlauncher/fluidlauncher.cpp
index c065bc9..5e8cc03 100644
--- a/demos/embedded/fluidlauncher/fluidlauncher.cpp
+++ b/demos/embedded/fluidlauncher/fluidlauncher.cpp
@@ -265,6 +265,10 @@ void FluidLauncher::demoFinished()
{
setCurrentWidget(pictureFlowWidget);
inputTimer->start();
+
+ // Bring the Fluidlauncher to the foreground to allow selecting another demo
+ raise();
+ activateWindow();
}
void FluidLauncher::changeEvent(QEvent* event)
diff --git a/demos/embedded/lightmaps/lightmaps.cpp b/demos/embedded/lightmaps/lightmaps.cpp
index 52297d2..ea34ae6 100644
--- a/demos/embedded/lightmaps/lightmaps.cpp
+++ b/demos/embedded/lightmaps/lightmaps.cpp
@@ -510,7 +510,7 @@ public:
connect(nightModeAction, SIGNAL(triggered()), map, SLOT(toggleNightMode()));
connect(osmAction, SIGNAL(triggered()), SLOT(aboutOsm()));
-#if defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
menuBar()->addAction(osloAction);
menuBar()->addAction(berlinAction);
menuBar()->addAction(jakartaAction);
@@ -568,7 +568,7 @@ int main(int argc, char **argv)
MapZoom w;
w.setWindowTitle("OpenStreetMap");
-#if defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
w.showMaximized();
#else
w.resize(600, 450);
diff --git a/demos/embedded/raycasting/raycasting.cpp b/demos/embedded/raycasting/raycasting.cpp
index c3b21b6..cb08b51 100644
--- a/demos/embedded/raycasting/raycasting.cpp
+++ b/demos/embedded/raycasting/raycasting.cpp
@@ -251,7 +251,9 @@ public:
protected:
void resizeEvent(QResizeEvent*) {
-#if defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WINCE_WM)
+ touchDevice = true;
+#elif defined(Q_OS_SYMBIAN)
// FIXME: use HAL
if (width() > 480 || height() > 480)
touchDevice = true;
@@ -378,7 +380,7 @@ int main(int argc, char **argv)
Raycasting w;
w.setWindowTitle("Raycasting");
-#if defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
w.showMaximized();
#else
w.resize(640, 480);
diff --git a/demos/qmediaplayer/mediaplayer.cpp b/demos/qmediaplayer/mediaplayer.cpp
index baac236..624bab7 100644
--- a/demos/qmediaplayer/mediaplayer.cpp
+++ b/demos/qmediaplayer/mediaplayer.cpp
@@ -321,6 +321,7 @@ MediaPlayer::MediaPlayer(const QString &filePath,
connect(&m_MediaObject, SIGNAL(finished()), this, SLOT(finished()));
connect(&m_MediaObject, SIGNAL(stateChanged(Phonon::State, Phonon::State)), this, SLOT(stateChanged(Phonon::State, Phonon::State)));
connect(&m_MediaObject, SIGNAL(bufferStatus(int)), this, SLOT(bufferStatus(int)));
+ connect(&m_MediaObject, SIGNAL(hasVideoChanged(bool)), this, SLOT(hasVideoChanged(bool)));
rewindButton->setEnabled(false);
playButton->setEnabled(false);
@@ -339,8 +340,6 @@ void MediaPlayer::stateChanged(Phonon::State newstate, Phonon::State oldstate)
Q_UNUSED(oldstate);
if (oldstate == Phonon::LoadingState) {
- m_videoWindow.setVisible(m_MediaObject.hasVideo());
- info->setVisible(!m_MediaObject.hasVideo());
QRect videoHintRect = QRect(QPoint(0, 0), m_videoWindow.sizeHint());
QRect newVideoRect = QApplication::desktop()->screenGeometry().intersected(videoHintRect);
if (!m_hasSmallScreen) {
@@ -367,6 +366,9 @@ void MediaPlayer::stateChanged(Phonon::State newstate, Phonon::State oldstate)
case Phonon::PausedState:
case Phonon::StoppedState:
playButton->setIcon(playIcon);
+
+ m_videoWidget->setFullScreen(false);
+
if (m_MediaObject.currentSource().type() != Phonon::MediaSource::Invalid){
playButton->setEnabled(true);
rewindButton->setEnabled(true);
@@ -843,3 +845,8 @@ void MediaPlayer::aspectChanged(QAction *act)
m_videoWidget->setAspectRatio(Phonon::VideoWidget::AspectRatioAuto);
}
+void MediaPlayer::hasVideoChanged(bool bHasVideo)
+{
+ info->setVisible(!bHasVideo);
+ m_videoWindow.setVisible(bHasVideo);
+}
diff --git a/demos/qmediaplayer/mediaplayer.h b/demos/qmediaplayer/mediaplayer.h
index 40ffa40..83f14e8 100644
--- a/demos/qmediaplayer/mediaplayer.h
+++ b/demos/qmediaplayer/mediaplayer.h
@@ -93,6 +93,7 @@ public slots:
void playPause();
void scaleChanged(QAction *);
void aspectChanged(QAction *);
+ void hasVideoChanged(bool);
private slots:
void setAspect(int);
diff --git a/demos/spreadsheet/spreadsheet.cpp b/demos/spreadsheet/spreadsheet.cpp
index 7f057a2..00045c6 100644
--- a/demos/spreadsheet/spreadsheet.cpp
+++ b/demos/spreadsheet/spreadsheet.cpp
@@ -523,6 +523,7 @@ void SpreadSheet::setupContents()
table->setItem(8, 2, new SpreadSheetItem("1240"));
table->setItem(9, 2, new SpreadSheetItem());
+ table->item(9, 2)->setBackgroundColor(Qt::lightGray);
// column 3
table->setItem(0, 3, new SpreadSheetItem("Currency"));
diff --git a/dist/changes-4.6.0 b/dist/changes-4.6.0
index cd9f130..7f723da 100644
--- a/dist/changes-4.6.0
+++ b/dist/changes-4.6.0
@@ -49,6 +49,12 @@ information about a particular change.
QRegion. The native handle is for reading out only. Any GDI calls
made on the HRGN handle will not affect the QRegion.
+ - [259221] QFileInfo::symLinkTarget() now supports NTFS symbolic links
+ thanks to Konstantin Ritt (merge request 1217).
+
+ - The reading code of QLocalSocket on Windows has been rewritten to improve
+ reading performance.
+
****************************************************************************
* Important Behavior Changes *
****************************************************************************
diff --git a/doc/src/internationalization/linguist-manual.qdoc b/doc/src/internationalization/linguist-manual.qdoc
index 065fb6b..5d388f1 100644
--- a/doc/src/internationalization/linguist-manual.qdoc
+++ b/doc/src/internationalization/linguist-manual.qdoc
@@ -327,7 +327,7 @@
area}. The \l{Context Window} {context list} is normally shown
on the left, and the \l{Sources and Forms Window} {source code},
\l{Strings Window} {string list}, and either the \l{Phrases and
- Guesses Window} {prhrases and guesses}, or the \l{Warnings Window}
+ Guesses Window} {phrases and guesses}, or the \l{Warnings Window}
{warnings} are shown above and below the \l{The Translation Area}
{translations area}.
@@ -355,7 +355,7 @@
translation "guesses" have been read from phrase books
(\menu{Phrases|Open Phrase Book...}). The current string's
current translation is also shown here. To select a guess, double
- click it in the prases and guesses window or use the keyboard
+ click it in the phrases and guesses window or use the keyboard
shortcut shown to the right of the guess.
\QL can automatically check whether your translation strings pass
@@ -764,7 +764,7 @@
and \e{N}.
Each Ctrl key accelerator is shown in the \l{Strings Window}
- {string list} as a separte string, e.g. \key{Ctrl+Enter}. Since
+ {string list} as a separate string, e.g. \key{Ctrl+Enter}. Since
the string doesn't have a context to give it meaning, e.g. like
the context of the phrase in which an Alt key accelerator appears,
the translator must rely on the UI developer to include a
@@ -808,6 +808,337 @@
of where argument \e{i} appears in the argument sequence in the
source string.
+ \section2 Plurals
+
+ The problem of plurals in output is resolved by using an overload of
+ the \c tr() function with the signature
+ \code
+ QString tr(const char *text, const char *comment, int n);
+ \endcode
+ Using built in comparisons for the value of \c n the tr() function will
+ translate the phrase to the plural form for the target language.
+
+ Different languages have various forms for plurals beyond simply
+ \e singular and \e plural. The rules for determining which form of the
+ plural to use are encoded as conditional tests. Below is a table
+ representing the numbers associated with the forms rather than the
+ conditional tests themselves.
+
+
+
+ \table 90%
+ \header
+ \o Language
+ \o Form 1
+ \o Form 2
+ \o Form 3
+ \o Form 4
+ \row
+ \o Arabic
+ \o 0, 1, 11-102, 111-202...
+ \o 2
+ \o 3-10, 103-110, 203-210...
+ \o
+ \row
+ \o Basque
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Bulgarian
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Catalan
+ \o 1
+ \o 11, 11 000-11 999, 11 000 000-11 999 999...
+ \o 0, 2-10, 12-10 999, 12-10 999 999...
+ \o
+ \row
+ \o Chinese-CN
+ \o 0-
+ \o
+ \o
+ \o
+ \row
+ \o Chinese-HK
+ \o 0-
+ \o
+ \o
+ \o
+ \row
+ \o Chinese-TW
+ \o 0-
+ \o
+ \o
+ \o
+ \row
+ \o Croation
+ \o 1, 21, 31, 41, 51, 61, 71, 81, 91, 101...
+ \o 2-4, 22-24, 32-34, 42-44...
+ \o 0, 5-20, 25-30, 35-40...
+ \o
+ \row
+ \o Czech
+ \o 1
+ \o 2-4
+ \o 0, 5-
+ \o
+ \row
+ \o Danish
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Dutch
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o English
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o English-US
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Estonian
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Finnish
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o French-CA
+ \o 0, 1
+ \o 2-100, 101-
+ \o
+ \o
+ \row
+ \o French-FR
+ \o 0, 1
+ \o 2-100, 101-
+ \o
+ \o
+ \row
+ \o Galician
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o German
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Greek
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Hebrew
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Hungarian
+ \o 0-
+ \o
+ \o
+ \o
+ \row
+ \o Icelandic
+ \o 1, 21, 31, 41, 51....101, 121, 131...
+ \o 0, 2-20, 22-30, 32-40...102-120...
+ \o
+ \o
+ \row
+ \o Indonesian
+ \o 0-
+ \o
+ \o
+ \o
+ \row
+ \o Italian
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Japanese
+ \o 0-
+ \o
+ \o
+ \o
+ \row
+ \o Korean
+ \o 0-
+ \o
+ \o
+ \o
+ \row
+ \o Latvian
+ \o 0
+ \o 1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 131, 141...
+ \o 2-20, 22-30, 32-40, 42-50...202-220, 222-230...
+ \o
+ \row
+ \o Lithuanian
+ \o 1, 21, 31, 41, 51...101, 121, 131...
+ \o 2-9, 22-29, 32-39...102-109, 122-129, 132-139...
+ \o 0, 10-20, 30, 40, 50...110-120, 130, 140...
+ \o
+ \row
+ \o Malay
+ \o 0-
+ \o
+ \o
+ \o
+ \row
+ \o Norwegian
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Persian
+ \o 0-
+ \o
+ \o
+ \o
+ \row
+ \o Polish
+ \o 1
+ \o 2-4, 22-24, 32-34...
+ \o 5-21, 25-31, 35-41...
+ \o
+ \row
+ \o Portugese-BR
+ \o 0, 1
+ \o 2-100, 101-
+ \o
+ \o
+ \row
+ \o Portugese-PT
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Romanian
+ \o 1
+ \o 0, 2-19, 101-119, 201-219...
+ \o 20-100, 120-200, 220-300...
+ \o
+ \row
+ \o Russian
+ \o 1, 21, 31, 41, 51, 61, 71, 81, 91, 101...
+ \o 2-4, 22-24, 32-34...
+ \o 0, 5-20, 25-30, 35-40...
+ \o
+ \row
+ \o Serbian
+ \o 1, 21, 31, 41, 51, 61, 71, 81, 91, 101...
+ \o 2-4, 22-24, 32-34...
+ \o 0, 5-20, 25-30, 35-40...
+ \o
+ \row
+ \o Slovak
+ \o 1
+ \o 2-4
+ \o 0, 5-20, 25-30, 35-40...
+ \o
+ \row
+ \o Slovene
+ \o 1, 101, 201, 301...
+ \o 2, 102, 202, 302...
+ \o 3, 4, 103, 104, 203, 204, 303, 304...
+ \o 0, 5-100, 105-200, 205-300...
+ \row
+ \o Spanish-US
+ \o 1
+ \o 0, 2-
+ \o
+ \o
+ \row
+ \o Spanish-ES
+ \o 1
+ \o 0, 2-
+ \o
+ \o
+ \row
+ \o Swedish
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Tagalog
+ \o 0, 1
+ \o 2, 3, 5, 7-8, 10-13, 15, 17-18, 20-23...101...1001
+ \o 4, 6, 9, 14, 16, 19, 24, 26, 29...104, 106, 109...
+ \o
+ \row
+ \o Thai
+ \o 0-
+ \o
+ \o
+ \o
+ \row
+ \o Turkish
+ \o 0-
+ \o
+ \o
+ \o
+ \row
+ \o Ukrainian
+ \o 1, 21, 31, 41, 51, 61, 71, 81, 91, 101...
+ \o 2-4, 22-24, 32-34...
+ \o 0, 5-20, 25-30, 35-40...
+ \o
+ \row
+ \o Urdu
+ \o 1
+ \o 0, 2-100, 101-
+ \o
+ \o
+ \row
+ \o Vietnamese
+ \o 0-
+ \o
+ \o
+ \o
+ \endtable
+
+ These rules are embedded within the Qt libraries, there is no need for
+ the developer to know them. Merely to use the correct \c tr() call.
+
+
\section2 Reusing Translations
If the translated text is similar to the source text, choose the
diff --git a/mkspecs/features/symbian/stl.prf b/mkspecs/features/symbian/stl.prf
index 8892d2a..e21ee5c 100644
--- a/mkspecs/features/symbian/stl.prf
+++ b/mkspecs/features/symbian/stl.prf
@@ -15,7 +15,7 @@ INCLUDEPATH += $$OS_LAYER_STDCPP_SYSTEMINCLUDE
INCLUDEPATH -= $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off
# libstdcppv5 is preferred over libstdcpp as it has/uses the throwing version of operator new
-exists($${EPOCROOT}epoc32/release/armv5/urel/libstdcppv5.dll ) {
+exists($${EPOCROOT}epoc32/release/armv5/urel/libstdcppv5.dll)|exists($${EPOCROOT}epoc32/release/winscw/udeb/libstdcppv5.dll) {
LIBS *= -llibstdcppv5.dll
# STDCPP turns on standard C++ new behaviour (ie. throwing new)
diff --git a/mkspecs/symbian-sbsv2/flm/qt/qmake_store_build.flm b/mkspecs/symbian-sbsv2/flm/qt/qmake_store_build.flm
index 7fada1e..634fafa 100644
--- a/mkspecs/symbian-sbsv2/flm/qt/qmake_store_build.flm
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_store_build.flm
@@ -9,6 +9,14 @@
include $(FLMHOME)/metaflm.mk
+SINGLETON:=$(call sanitise,TSTORE_SINGLETON_$(EXTENSION_ROOT))
+
+ifeq ($($(SINGLETON)),)
+# Prevent duplicate targets from being created, as that can lead to build breaks
+# in multiprocessor systems if two or more targets try to write to .make.cache at
+# the same time.
+$(SINGLETON):=1
+
STORE_BUILD_TARGET:=$(call sanitise,TSTORE_BUILD_$(PLATFORM_PATH)_$(CFG_PATH)_$(EXTENSION_ROOT))
CACHE_FILENAME:=$(EXTENSION_ROOT)/.make.cache
@@ -37,4 +45,5 @@ endef
$(eval $(qmake_store_build))
$(eval $(call GenerateStandardCleanTarget,$(CACHE_FILENAME),''))
+endif
diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp
index 5915fcf..819cdaf 100644
--- a/qmake/generators/metamakefile.cpp
+++ b/qmake/generators/metamakefile.cpp