--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/patch_capabilities.bat Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+@perl.exe -S %~dp0patch_capabilities.pl %*
--- a/bin/patch_capabilities.pl Fri Feb 19 23:40:16 2010 +0200
+++ b/bin/patch_capabilities.pl Fri Mar 12 15:46:37 2010 +0200
@@ -108,15 +108,57 @@
open (NEW_PKG, ">>".$tempPkgFileName);
open (PKG, "<".$pkgFileName);
+ my $manufacturerElseBlock = 0;
+
# Parse each line.
while (<PKG>)
{
+ # Patch pkg UID
my $line = $_;
my $newLine = $line;
- if ( $line =~ m/^\#.*\(0x[0-9|a-f|A-F]*\).*$/)
+ if ($line =~ m/^\#.*\(0x[0-9|a-f|A-F]*\).*$/)
{
$newLine =~ s/\(0x./\(0xE/;
}
+
+ # Patch embedded sis name and UID
+ if ($line =~ m/^@.*\.sis.*\(0x[0-9|a-f|A-F]*\).*$/)
+ {
+ $newLine =~ s/\(0x./\(0xE/;
+ if ($line !~ m/^.*_selfsigned.sis.*$/)
+ {
+ $newLine =~ s/\.sis/_selfsigned\.sis/i;
+ }
+ }
+
+ # Remove all dependencies to other packages to reduce unnecessary error messages
+ # from depended packages that are also patched and therefore have different UID.
+ if ($line =~ m/^\(0x[0-9|a-f|A-F]*\).*\{.*\}$/)
+ {
+ $newLine = "\n"
+ }
+
+ # Remove manufacturer ifdef
+ if ($line =~ m/^.*\(MANUFACTURER\)\=\(.*\).*$/)
+ {
+ $newLine = "\n";
+ }
+
+ if ($line =~ m/^ELSEIF.*MANUFACTURER$/)
+ {
+ $manufacturerElseBlock = 1;
+ }
+
+ if ($manufacturerElseBlock eq 1)
+ {
+ $newLine = "\n";
+ }
+
+ if ($line =~ m/^ENDIF.*MANUFACTURER$/)
+ {
+ $manufacturerElseBlock = 0;
+ }
+
print NEW_PKG $newLine;
chomp ($line);
--- a/configure Fri Feb 19 23:40:16 2010 +0200
+++ b/configure Fri Mar 12 15:46:37 2010 +0200
@@ -115,7 +115,7 @@
inc_file=`echo "$line" | sed -n -e "/^include.*(.*)/s/include.*(\(.*\)).*$/\1/p"`
current_dir=`dirname "$1"`
conf_file="$current_dir/$inc_file"
- if [ ! -e "$conf_file" ]; then
+ if [ ! -f "$conf_file" ]; then
echo "WARNING: Unable to find file $conf_file" >&2
continue
fi
@@ -2305,7 +2305,7 @@
fi
# symlink fonts to be able to run application from build directory
-if [ "$PLATFORM_QWS" = "yes" ] && [ ! -e "${outpath}/lib/fonts" ]; then
+if [ "$PLATFORM_QWS" = "yes" ] && [ ! -d "${outpath}/lib/fonts" ]; then
if [ "$PLATFORM" = "$XPLATFORM" ]; then
mkdir -p "${outpath}/lib"
ln -s "${relpath}/lib/fonts" "${outpath}/lib/fonts"
@@ -7606,6 +7606,8 @@
OPENSSL_LINKAGE="(linked)"
fi
echo "OpenSSL support ..... $CFG_OPENSSL $OPENSSL_LINKAGE"
+echo "Alsa support ........ $CFG_ALSA"
+echo
[ "$CFG_PTMALLOC" != "no" ] && echo "Use ptmalloc ........ $CFG_PTMALLOC"
@@ -7630,8 +7632,6 @@
echo "NOTE: Mac OS X frameworks implicitly build debug and release Qt libraries."
echo
fi
-echo "alsa support ........ $CFG_ALSA"
-echo
sepath=`echo "$relpath" | sed -e 's/\\./\\\\./g'`
PROCS=1
Binary file configure.exe has changed
Binary file content/apps/qt.sisx has changed
--- a/demos/embedded/anomaly/src/AddressBar.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/AddressBar.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -64,9 +64,9 @@
AddressBar::AddressBar(QWidget *parent)
: QWidget(parent)
{
- m_lineEdit = new LineEdit(parent);
+ m_lineEdit = new LineEdit(this);
connect(m_lineEdit, SIGNAL(returnPressed()), SLOT(processAddress()));
- m_toolButton = new QToolButton(parent);
+ m_toolButton = new QToolButton(this);
m_toolButton->setText("Go");
connect(m_toolButton, SIGNAL(clicked()), SLOT(processAddress()));
}
--- a/demos/embedded/anomaly/src/BrowserView.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/BrowserView.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -71,7 +71,7 @@
m_zoomLevels << 100;
m_zoomLevels << 110 << 120 << 133 << 150 << 170 << 200 << 240 << 300;
- QTimer::singleShot(0, this, SLOT(initialize()));
+ initialize();
}
void BrowserView::initialize()
@@ -82,6 +82,7 @@
connect(m_controlStrip, SIGNAL(menuClicked()), SIGNAL(menuButtonClicked()));
connect(m_controlStrip, SIGNAL(backClicked()), m_webView, SLOT(back()));
connect(m_controlStrip, SIGNAL(forwardClicked()), m_webView, SLOT(forward()));
+ connect(m_controlStrip, SIGNAL(closeClicked()), qApp, SLOT(quit()));
QPalette pal = m_webView->palette();
pal.setBrush(QPalette::Base, Qt::white);
--- a/demos/embedded/anomaly/src/BrowserWindow.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/BrowserWindow.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -93,12 +93,12 @@
{
// we use a ratio to handle resize corectly
const int pos = -qRound(slideRatio * width());
- m_slidingSurface->scroll(pos - m_homeView->x(), 0);
+ m_slidingSurface->scroll(pos - m_browserView->x(), 0);
- if (qFuzzyCompare(slideRatio, static_cast<qreal>(1.0f))) {
+ if (qFuzzyCompare(slideRatio, static_cast<qreal>(0.0f))) {
m_browserView->show();
m_homeView->hide();
- } else if (qFuzzyCompare(slideRatio, static_cast<qreal>(0.0f))) {
+ } else if (qFuzzyCompare(slideRatio, static_cast<qreal>(1.0f))) {
m_homeView->show();
m_browserView->hide();
} else {
@@ -110,13 +110,13 @@
qreal BrowserWindow::slideValue() const
{
Q_ASSERT(m_slidingSurface->x() < width());
- return static_cast<qreal>(qAbs(m_homeView->x())) / width();
+ return static_cast<qreal>(qAbs(m_browserView->x())) / width();
}
void BrowserWindow::showHomeView()
{
m_animation->setStartValue(slideValue());
- m_animation->setEndValue(0.0f);
+ m_animation->setEndValue(1.0f);
m_animation->start();
m_homeView->setFocus();
}
@@ -124,7 +124,7 @@
void BrowserWindow::showBrowserView()
{
m_animation->setStartValue(slideValue());
- m_animation->setEndValue(1.0f);
+ m_animation->setEndValue(0.0f);
m_animation->start();
m_browserView->setFocus();
@@ -140,7 +140,7 @@
? QAbstractAnimation::Forward
: QAbstractAnimation::Backward;
m_animation->setDirection(direction);
- } else if (qFuzzyCompare(slideValue(), static_cast<qreal>(1.0f)))
+ } else if (qFuzzyCompare(slideValue(), static_cast<qreal>(0.0f)))
showHomeView();
else
showBrowserView();
@@ -151,16 +151,16 @@
void BrowserWindow::resizeEvent(QResizeEvent *event)
{
const QSize oldSize = event->oldSize();
- const qreal oldSlidingRatio = static_cast<qreal>(qAbs(m_homeView->x())) / oldSize.width();
+ const qreal oldSlidingRatio = static_cast<qreal>(qAbs(m_browserView->x())) / oldSize.width();
const QSize newSize = event->size();
m_slidingSurface->resize(newSize.width() * 2, newSize.height());
m_homeView->resize(newSize);
- m_homeView->move(0, 0);
+ m_homeView->move(newSize.width(), 0);
m_browserView->resize(newSize);
- m_browserView->move(newSize.width(), 0);
+ m_browserView->move(0, 0);
setSlideValue(oldSlidingRatio);
}
--- a/demos/embedded/anomaly/src/ControlStrip.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/ControlStrip.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -50,6 +50,7 @@
menuPixmap.load(":/images/edit-find.png");
backPixmap.load(":/images/go-previous.png");
forwardPixmap.load(":/images/go-next.png");
+ closePixmap.load(":/images/button-close.png");
}
QSize ControlStrip::sizeHint() const
@@ -74,16 +75,23 @@
}
if (x > width() - h) {
- emit forwardClicked();
- event->accept();
- return;
- }
+ emit closeClicked();
+ event->accept();
+ return;
+
+ }
if ((x < width() - 2 * h) && (x > width() - 3 * h)) {
- emit backClicked();
- event->accept();
- return;
- }
+ emit forwardClicked();
+ event->accept();
+ return;
+ }
+
+ if ((x < width() - 3 * h) && (x > width() - 5 * h)) {
+ emit backClicked();
+ event->accept();
+ return;
+ }
}
void ControlStrip::paintEvent(QPaintEvent *event)
@@ -91,11 +99,14 @@
int h = height();
int s = (h - menuPixmap.height()) / 2;
- QPainter p(this);
- p.fillRect(event->rect(), QColor(32, 32, 32, 192));
- p.setCompositionMode(QPainter::CompositionMode_SourceOver);
- p.drawPixmap(s, s, menuPixmap);
- p.drawPixmap(width() - 3 * h + s, s, backPixmap);
- p.drawPixmap(width() - h + s, s, forwardPixmap);
- p.end();
+
+ QPainter p(this);
+ p.fillRect(event->rect(), QColor(32, 32, 32, 192));
+ p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+ p.drawPixmap(s, s, menuPixmap);
+ p.drawPixmap(width() - h + s, s, closePixmap);
+ p.drawPixmap(width() - 3 * h + s, s, forwardPixmap);
+ p.drawPixmap(width() - 5 * h + s, s, backPixmap);
+
+ p.end();
}
--- a/demos/embedded/anomaly/src/ControlStrip.h Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/ControlStrip.h Fri Mar 12 15:46:37 2010 +0200
@@ -58,6 +58,7 @@
void menuClicked();
void backClicked();
void forwardClicked();
+ void closeClicked ();
protected:
void paintEvent(QPaintEvent *event);
@@ -67,6 +68,7 @@
QPixmap menuPixmap;
QPixmap backPixmap;
QPixmap forwardPixmap;
+ QPixmap closePixmap;
};
#endif // CONTROLSTRIP_H
--- a/demos/embedded/anomaly/src/HomeView.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/HomeView.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -51,12 +51,16 @@
: QWidget(parent)
, m_addressBar(0)
{
- m_addressBar = new AddressBar(parent);
+ m_addressBar = new AddressBar(this);
connect(m_addressBar, SIGNAL(addressEntered(QString)), SLOT(gotoAddress(QString)));
- m_bookmarks = new BookmarksView(parent);
+ m_bookmarks = new BookmarksView(this);
connect(m_bookmarks, SIGNAL(urlSelected(QUrl)), SIGNAL(urlActivated(QUrl)));
+ QPalette pal = m_bookmarks->palette();
+ pal.setBrush(QPalette::Base, Qt::white);
+ m_bookmarks->setPalette(pal);
+
QVBoxLayout *layout = new QVBoxLayout(this);
layout->setMargin(4);
layout->setSpacing(4);
--- a/demos/embedded/anomaly/src/anomaly.qrc Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/anomaly.qrc Fri Mar 12 15:46:37 2010 +0200
@@ -5,5 +5,6 @@
<file>images/edit-find.png</file>
<file>images/list-add.png</file>
<file>images/list-remove.png</file>
+ <file>images/button-close.png</file>
</qresource>
</RCC>
Binary file demos/embedded/anomaly/src/images/button-close.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/demos/embedded/fluidlauncher/backup_registration.xml Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+ <passive_backup>
+ <include_directory name = "\" />
+ </passive_backup>
+ <system_backup/>
+ <restore requires_reboot = "no"/>
+</backup_registration>
--- a/demos/embedded/fluidlauncher/fluidlauncher.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/fluidlauncher/fluidlauncher.pro Fri Mar 12 15:46:37 2010 +0200
@@ -207,8 +207,11 @@
saxbookmarks.sources += $$PWD/../../../examples/xml/saxbookmarks/jennifer.xbel
saxbookmarks.path = /data/qt/saxbookmarks
+ fluidbackup.sources = backup_registration.xml
+ fluidbackup.path = /private/$$replace(TARGET.UID3, 0x,)
+
DEPLOYMENT += config files executables viewerimages saxbookmarks reg_resource resource \
- mifs desktopservices_music desktopservices_images
+ mifs desktopservices_music desktopservices_images fluidbackup
TARGET.EPOCHEAPSIZE = 100000 20000000
}
--- a/dist/changes-4.6.1 Fri Feb 19 23:40:16 2010 +0200
+++ b/dist/changes-4.6.1 Fri Mar 12 15:46:37 2010 +0200
@@ -247,6 +247,8 @@
* [QTBUG-6867] Fixed regression in the parsing of paths with relative
offsets.
* [QTBUG-6899] Fixed crash when parsing invalid coordinate list.
+ - QtXmlPatterns
+ * [QTBUG-6771] Fixed static builds.
Qt Plugins
----------
--- a/dist/changes-4.6.2 Fri Feb 19 23:40:16 2010 +0200
+++ b/dist/changes-4.6.2 Fri Mar 12 15:46:37 2010 +0200
@@ -40,8 +40,8 @@
QtCore
------
- - foo
- * bar
+ - QXmlStreamWriter
+ * [QTBUG-6893] Fixed adding extra Byte Order Marks when writing to a xml file.
QtGui
-----
@@ -49,6 +49,9 @@
- foo
* bar
+ * [QTBUG-7029] Fixed a crash when re-creating QApplication object due to a
+ dangling gesture manager pointer.
+
QtDBus
------
@@ -85,6 +88,12 @@
- foo
* bar
+QtMultimedia
+------------
+
+ - QAudioInput
+ * [QTBUG-7044]: QAudioInput stopped working correctly after suspend()/resume() on linux.
+
Qt Plugins
----------
@@ -110,8 +119,11 @@
Qt for Linux/X11
----------------
+ * Fix a bug where QPixmap::serialNumber was not set on a transformed pixmap
+ in Qt/X11.
- -
+ * Fixed a crash when an input method tries to create a widget after the
+ application is destroyed.
Qt for Windows
--------------
@@ -121,7 +133,10 @@
Qt for Mac OS X
---------------
- -
+ - [QTBUG-7312]: Menubar and dock disappear after hiding a fullscreen widget on Cocoa.
+ - [QTBUG-7522]: Drawing fake buttons using QMacStyle+QStyleOptionViewItemV4 lead to crash.
+ - [QTBUG-7625]: Calling showFullScreen() then showNormal() on a widget results in top menu hiding.
+
Qt for Embedded Linux
---------------------
@@ -130,7 +145,13 @@
DirectFB
--------
-
+ * Fix a bug where QPixmap::serialNumber was not set on a transformed pixmap
+ in DirectFB.
+ * Reimplement QPixmapData::scroll for QDirectFBPixmapData which optimizes
+ QPixmap::scroll
+ * Fix a rendering issue for semi-transparent top level windows in DirectFB.
+ * Make it possible to fall back to the raster engine for stretch blits in
+ DirectFB using QT_NO_DIRECTFB_STRETCHBLIT
-
Qt for Windows CE
@@ -143,7 +164,12 @@
****************************************************************************
- Designer
- * foo
+ * [QTBUG-6965] Enabled editing seconds of QDateTime-type properties
+ * [QTBUG-6757] Fixed bug where selection handles would be affected by
+ a style sheet set on the main form.
+
+ - uic3
+ * [QTBUG-7404] Added option to preserve layout names set by Qt 3 Designer.
- qdoc3
* bar
--- a/examples/assistant/simpletextviewer/findfiledialog.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/assistant/simpletextviewer/findfiledialog.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -102,7 +102,7 @@
if (file.open(QIODevice::ReadOnly)) {
QString data(file.readAll());
- if (fileName.endsWith(".html"))
+ if (fileName.endsWith(QLatin1String(".html")))
currentEditor->setHtml(data);
else
currentEditor->setPlainText(data);
@@ -119,7 +119,7 @@
void FindFileDialog::findFiles()
{
- QRegExp filePattern(fileNameComboBox->currentText() + "*");
+ QRegExp filePattern(fileNameComboBox->currentText() + '*');
filePattern.setPatternSyntax(QRegExp::Wildcard);
QDir directory(directoryComboBox->currentText());
@@ -127,7 +127,7 @@
QStringList allFiles = directory.entryList(QDir::Files | QDir::NoSymLinks);
QStringList matchingFiles;
- foreach (QString file, allFiles) {
+ foreach (const QString &file, allFiles) {
if (filePattern.exactMatch(file))
matchingFiles << file;
}
--- a/examples/designer/taskmenuextension/tictactoedialog.h Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/designer/taskmenuextension/tictactoedialog.h Fri Mar 12 15:46:37 2010 +0200
@@ -55,7 +55,7 @@
Q_OBJECT
public:
- TicTacToeDialog(TicTacToe *plugin = 0, QWidget *parent = 0);
+ explicit TicTacToeDialog(TicTacToe *plugin = 0, QWidget *parent = 0);
QSize sizeHint() const;
--- a/examples/network/googlesuggest/googlesuggest.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/googlesuggest/googlesuggest.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -231,4 +231,5 @@
networkReply->deleteLater();
}
-//! [9]
\ No newline at end of file
+//! [9]
+
--- a/examples/network/googlesuggest/searchbox.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/googlesuggest/searchbox.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -69,4 +69,5 @@
QString url = QString(GSEARCH_URL).arg(text());
QDesktopServices::openUrl(QUrl(url));
}
-//! [2]
\ No newline at end of file
+//! [2]
+
--- a/examples/network/network-chat/chatdialog.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/network-chat/chatdialog.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -79,7 +79,7 @@
QTextCursor cursor(textEdit->textCursor());
cursor.movePosition(QTextCursor::End);
QTextTable *table = cursor.insertTable(1, 2, tableFormat);
- table->cellAt(0, 0).firstCursorPosition().insertText("<" + from + "> ");
+ table->cellAt(0, 0).firstCursorPosition().insertText('<' + from + "> ");
table->cellAt(0, 1).firstCursorPosition().insertText(message);
QScrollBar *bar = textEdit->verticalScrollBar();
bar->setValue(bar->maximum());
--- a/examples/network/network-chat/client.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/network-chat/client.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -69,8 +69,8 @@
QString Client::nickName() const
{
- return QString(peerManager->userName()) + "@" + QHostInfo::localHostName()
- + ":" + QString::number(server.serverPort());
+ return QString(peerManager->userName()) + '@' + QHostInfo::localHostName()
+ + ':' + QString::number(server.serverPort());
}
bool Client::hasConnection(const QHostAddress &senderIp, int senderPort) const
--- a/examples/network/network-chat/connection.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/network-chat/connection.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -83,7 +83,7 @@
return false;
QByteArray msg = message.toUtf8();
- QByteArray data = "MESSAGE " + QByteArray::number(msg.size()) + " " + msg;
+ QByteArray data = "MESSAGE " + QByteArray::number(msg.size()) + ' ' + msg;
return write(data) == data.size();
}
@@ -118,7 +118,7 @@
return;
}
- username = QString(buffer) + "@" + peerAddress().toString() + ":"
+ username = QString(buffer) + '@' + peerAddress().toString() + ':'
+ QString::number(peerPort());
currentDataType = Undefined;
numBytesForCurrentDataType = 0;
@@ -162,7 +162,7 @@
void Connection::sendGreetingMessage()
{
QByteArray greeting = greetingMessage.toUtf8();
- QByteArray data = "GREETING " + QByteArray::number(greeting.size()) + " " + greeting;
+ QByteArray data = "GREETING " + QByteArray::number(greeting.size()) + ' ' + greeting;
if (write(data) == data.size())
isGreetingMessageSent = true;
}
--- a/examples/network/network-chat/peermanager.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/network-chat/peermanager.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -61,7 +61,7 @@
foreach (QString string, envVariables) {
int index = environment.indexOf(QRegExp(string));
if (index != -1) {
- QStringList stringList = environment.at(index).split("=");
+ QStringList stringList = environment.at(index).split('=');
if (stringList.size() == 2) {
username = stringList.at(1).toUtf8();
break;
--- a/examples/network/qftp/ftpwindow.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/qftp/ftpwindow.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -324,7 +324,8 @@
if (isDirectory.value(name)) {
fileList->clear();
isDirectory.clear();
- currentPath += "/" + name;
+ currentPath += '/';
+ currentPath += name;
ftp->cd(name);
ftp->list();
cdToParentButton->setEnabled(true);
--- a/examples/network/qftp/sym_iap_util.h Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/qftp/sym_iap_util.h Fri Mar 12 15:46:37 2010 +0200
@@ -298,7 +298,7 @@
#ifdef QT_NO_UNICODE
return QString::fromLocal8Bit(aDescriptor.Ptr(), aDescriptor.Length());
#else
- return QString::fromUtf16(aDescriptor.Ptr(), aDescriptor.Length());
+ return QString((const QChar *)aDescriptor.Ptr(), aDescriptor.Length());
#endif
}
--- a/examples/network/securesocketclient/sslclient.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/securesocketclient/sslclient.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -177,7 +177,7 @@
void SslClient::sendData()
{
QString input = form->sessionInput->text();
- appendString(input + "\n");
+ appendString(input + '\n');
socket->write(input.toUtf8() + "\r\n");
form->sessionInput->clear();
}
--- a/examples/network/torrent/trackerclient.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/torrent/trackerclient.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -105,7 +105,7 @@
QString passkey = "?";
if (fullUrl.contains("?passkey")) {
passkey = metaInfo.announceUrl().mid(fullUrl.indexOf("?passkey"), -1);
- passkey += "&";
+ passkey += '&';
}
// Percent encode the hash
--- a/examples/tools/customtype/message.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/tools/customtype/message.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -64,7 +64,7 @@
}
//! [custom type streaming operator]
-QDebug &operator<<(QDebug &dbg, const Message &message)
+QDebug operator<<(QDebug dbg, const Message &message)
{
QStringList pieces = message.body().split("\r\n", QString::SkipEmptyParts);
if (pieces.isEmpty())
--- a/examples/tools/customtype/message.h Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/tools/customtype/message.h Fri Mar 12 15:46:37 2010 +0200
@@ -70,7 +70,7 @@
//! [custom type meta-type declaration]
//! [custom type streaming operator]
-QDebug &operator<<(QDebug &dbg, const Message &message);
+QDebug operator<<(QDebug dbg, const Message &message);
//! [custom type streaming operator]
#endif
--- a/examples/uitools/textfinder/textfinder.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/uitools/textfinder/textfinder.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -116,7 +116,7 @@
if (isFirstTime == false)
document->undo();
- if (searchString == "") {
+ if (searchString.isEmpty()) {
QMessageBox::information(this, tr("Empty Search Field"),
"The search field is empty. Please enter a word and click Find.");
} else {
--- a/examples/webkit/framecapture/framecapture.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/webkit/framecapture/framecapture.pro Fri Mar 12 15:46:37 2010 +0200
@@ -1,4 +1,4 @@
-QT += webkit
+QT += webkit network
HEADERS = framecapture.h
SOURCES = main.cpp \
--- a/examples/webkit/simpleselector/simpleselector.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/webkit/simpleselector/simpleselector.pro Fri Mar 12 15:46:37 2010 +0200
@@ -1,4 +1,4 @@
-QT += webkit
+QT += webkit network
FORMS = window.ui
HEADERS = window.h
SOURCES = main.cpp \
--- a/layers.sysdef.xml Fri Feb 19 23:40:16 2010 +0200
+++ b/layers.sysdef.xml Fri Mar 12 15:46:37 2010 +0200
@@ -7,12 +7,12 @@
<systemModel>
<layer name="tools_layer">
<module name="qtconf">
- <unit unitID="qtdo.qt.qtconf" mrp="" bldFile="&layer_real_source_path;/group" name="qtconf" />
+ <unit unitID="qtdo.qt.qtconf" mrp="" bldFile="&layer_real_source_path;/src/s60installs/deviceconfiguration" name="qtconf" />
</module>
</layer>
<layer name="mw_layer">
<module name="qt">
- <unit unitID="qtdo.qt" mrp="" bldFile="&layer_real_source_path;" name="qt" proFile="projects.pro" qmakeArgs=""QMAKE_MOC=/epoc32/tools/qt/moc.exe" "QMAKE_RCC=/epoc32/tools/qt/rcc.exe" "QMAKE_UIC=/epoc32/tools/qt/uic.exe" -r"/>
+ <unit unitID="qtdo.qt" mrp="" bldFile="&layer_real_source_path;" name="qt" proFile="projects.pro" qmakeArgs=""CONFIG+=headerexport symbian_no_export_sqlite" "QMAKE_MOC=/epoc32/tools/qt/moc.exe" "QMAKE_RCC=/epoc32/tools/qt/rcc.exe" "QMAKE_UIC=/epoc32/tools/qt/uic.exe" -r"/>
</module>
</layer>
<layer name="app_layer">
--- a/mkspecs/common/symbian/symbian.conf Fri Feb 19 23:40:16 2010 +0200
+++ b/mkspecs/common/symbian/symbian.conf Fri Mar 12 15:46:37 2010 +0200
@@ -30,6 +30,7 @@
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
QMAKE_CXXFLAGS.CW =
QMAKE_CXXFLAGS.ARMCC = --visibility_inlines_hidden
+QMAKE_CXXFLAGS.GCCE = -fvisibility-inlines-hidden
QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
@@ -64,12 +65,12 @@
QMAKE_LINK_OBJECT_SCRIPT=
QMAKE_LIBS = -llibc -llibm -leuser -llibdl -lcone -leikcore -lmediaclientaudio -leikcoctl -leiksrv -lapparc -lavkon -lefsrv -lcharconv -lws32 -lhal -lgdi -lapgrfx
-QMAKE_LIBS_CORE = $$QMAKE_LIBS -llibpthread -lefsrv -lcharconv
-QMAKE_LIBS_GUI = $$QMAKE_LIBS_CORE -lfbscli -lbitgdi -lhal -lgdi -lws32 -lapgrfx -lcone -leikcore -lmediaclientaudio -leikcoctl -leiksrv -lapparc
+QMAKE_LIBS_CORE = $$QMAKE_LIBS -llibpthread -lefsrv
+QMAKE_LIBS_GUI = $$QMAKE_LIBS_CORE -lfbscli -lbitgdi -lhal -lgdi -lws32 -lapgrfx -lcone -leikcore -lmediaclientaudio -leikcoctl -leiksrv -lapparc -lcentralrepository
QMAKE_LIBS_NETWORK =
QMAKE_LIBS_EGL = -llibEGL
QMAKE_LIBS_OPENGL =
-QMAKE_LIBS_OPENVG = -llibOpenVG -lgraphicsresource
+QMAKE_LIBS_OPENVG = -llibOpenVG -lgraphicsresource -lfbscli -lbitgdi -lgdi
QMAKE_LIBS_COMPAT =
QMAKE_LIBS_QT_ENTRY = -llibcrt0.lib
QMAKE_LIBS_S60 = -lavkon
@@ -92,9 +93,9 @@
QMAKE_CHK_DIR_EXISTS = if not exist
}
-QMAKE_MOC = /epoc32/tools/qt/moc.exe
-QMAKE_UIC = /epoc32/tools/qt/uic.exe
-QMAKE_IDC = /epoc32/tools/qt/idc.exe
+QMAKE_MOC = /epoc32/tools/qt/moc$$(DOTEXE)
+QMAKE_UIC = /epoc32/tools/qt/uic$$(DOTEXE)
+QMAKE_IDC = /epoc32/tools/qt/idc$$(DOTEXE)
QMAKE_IDL = midl
QMAKE_LIB = /epoc32/gcc_mingw/bin/ar -ru
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mkspecs/features/symbian/def_files.prf Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,34 @@
+# With DEF files enabled, removed exported symbols are treated as errors
+# and there is binary compatibility between successive builds.
+
+CONFIG -= def_files_disabled
+
+# Firstly, if the MMP_RULES already contain a defBlock variable, don't generate another one
+# (this bit is slightly magic, because it depends upon everyone creating their DEFFILE statements
+# in a defBlock variable; but otherwise we have to expand MMP_RULES then scan for the DEFFILE keyword)
+!contains(MMP_RULES, defBlock) {
+ # Apps are executables on Symbian, so don't have exports, and therefore don't have DEF files
+ # Plugins use standard DEF files, which qmake generates, so shouldn't be using these DEFFILE
+ # statements - they use the qmake generated statements instead
+ # Static libraries obviously don't have DEF files, as they don't take part in dynamic linkage
+ !contains(TEMPLATE, app):!contains(CONFIG, plugin):!contains(CONFIG, staticlib): {
+ !isEmpty(defFilePath) {
+ defBlock = \
+ "$${LITERAL_HASH}ifdef WINSCW" \
+ "DEFFILE $$defFilePath/bwins/$${TARGET}.def" \
+ "$${LITERAL_HASH}elif defined EABI" \
+ "DEFFILE $$defFilePath/eabi/$${TARGET}.def" \
+ "$${LITERAL_HASH}endif"
+ } else {
+ # If defFilePath is not defined, then put the folders containing the DEF files at the
+ # same level as the .pro (and generated MMP) file(s)
+ defBlock = \
+ "$${LITERAL_HASH}ifdef WINSCW" \
+ "DEFFILE ./bwins/$${TARGET}.def" \
+ "$${LITERAL_HASH}elif defined EABI" \
+ "DEFFILE ./eabi/$${TARGET}.def" \
+ "$${LITERAL_HASH}endif"
+ }
+ MMP_RULES += defBlock
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mkspecs/features/symbian/def_files_disabled.prf Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+# With DEF files disabled, binary compatibility is broken every time you build
+
+CONFIG -= def_files
+
+# See def_files.prf for reasoning on the slight nastiness of this
+!contains(MMP_RULES, defBlock) {
+ # See def_files.prf for reasoning for excluding target types and configs below
+ !contains(TEMPLATE, app):!contains(CONFIG, plugin):!contains(CONFIG, staticlib): {
+ # with EXPORTUNFROZEN enabled, new exports are included in the dll and dso/lib without
+ # needing to run abld/sbs freeze
+ MMP_RULES += EXPORTUNFROZEN
+ }
+}
--- a/mkspecs/features/symbian/qt.prf Fri Feb 19 23:40:16 2010 +0200
+++ b/mkspecs/features/symbian/qt.prf Fri Mar 12 15:46:37 2010 +0200
@@ -41,12 +41,14 @@
isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x020000 0x800000
INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-for(QTLIB, $$list($$lower($$unique(QT)))) {
- unset(qlib)
- isEqual(QTLIB, phonon):qlib = phonon
- else:qlib = qt$$QTLIB
- INCLUDEPATH += $$MW_LAYER_PUBLIC_EXPORT_PATH($$qlib)
-}
+#QTP: qtAddLibrary function adds the same includes. Following strins duplicate
+#Qt includes in incorrect lower case in the generated mmp files.
+#for(QTLIB, $$list($$lower($$unique(QT)))) {
+# unset(qlib)
+# isEqual(QTLIB, phonon):qlib = phonon
+# else:qlib = qt$$QTLIB
+# INCLUDEPATH += $$MW_LAYER_PUBLIC_EXPORT_PATH($$qlib)
+#}
#QTP: add userinclude
MMP_RULES+="USERINCLUDE ."
\ No newline at end of file
--- a/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm Fri Feb 19 23:40:16 2010 +0200
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm Fri Mar 12 15:46:37 2010 +0200
@@ -15,7 +15,12 @@
ifeq ($(findstring :,$(firstword $(COMMAND))), :)
MY_CMD:=$(COMMAND)
else
+#Additional checking is necessary for the Linux compilation
+ ifeq ($(findstring $(EPOCROOT), $(firstword $(COMMAND))), $(EPOCROOT))
+ MY_CMD:=$(COMMAND)
+ else
MY_CMD:=$(EPOCROOT)$(COMMAND)
+ endif
endif
define qmake_extra_pre_targetdep
--- a/mkspecs/symbian-sbsv2/flm/qt/ts2qm.flm Fri Feb 19 23:40:16 2010 +0200
+++ b/mkspecs/symbian-sbsv2/flm/qt/ts2qm.flm Fri Mar 12 15:46:37 2010 +0200
@@ -10,8 +10,8 @@
# Make sure that EPOCROOT ends in /
EPOCROOT:=$(patsubst %/,%,$(EPOCROOT))/
LRELEASE:=$(EPOCROOT)epoc32/tools/qt/lrelease$(DOTEXE)
-TSFILE:=$(EPOCROOT)$(TSFILE)
-QMFILE:=$(EPOCROOT)$(QMFILE)
+#TSFILE:=$(EPOCROOT)$(TSFILE)
+#QMFILE:=$(EPOCROOT)$(QMFILE)
define ts2qm
$(QMFILE): $(TSFILE)
--- a/qmake/generators/makefile.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/makefile.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1830,11 +1830,12 @@
cleans.append(files);
}
}
- if(!cleans.isEmpty())
+ if(!cleans.isEmpty()) {
if (isForSymbian())
t << valGlue(cleans, "\n\t" + del_statement, " 2> NUL\n\t" + del_statement, " 2> NUL");
else
t << valGlue(cleans, "\n\t" + del_statement, "\n\t" + del_statement, "");
+ }
if(!wrote_clean_cmds) {
for(QStringList::ConstIterator input = tmp_inputs.begin(); input != tmp_inputs.end(); ++input) {
t << "\n\t" << replaceExtraCompilerVariables(tmp_clean_cmds, (*input),
@@ -2541,6 +2542,7 @@
QString ofile = Option::fixPathToTargetOS(fileFixify(Option::output.fileName()));
if(!ofile.isEmpty())
t << "\t-$(DEL_FILE) " << ofile << endl;
+ t << varGlue("QMAKE_DISTCLEAN","\t-$(DEL_FILE) "," ","\n");
} else if(project->isActiveConfig("no_empty_targets")) {
t << "\t" << "@cd ." << endl;
}
--- a/qmake/generators/makefiledeps.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/makefiledeps.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -397,7 +397,7 @@
buffer = getBuffer(fst.st_size);
for(int have_read = 0;
(have_read = QT_READ(fd, buffer + buffer_len, fst.st_size - buffer_len));
- buffer_len += have_read);
+ buffer_len += have_read) ;
QT_CLOSE(fd);
}
if(!buffer)
@@ -418,22 +418,22 @@
++x;
if(buffer_len >= x + 12 && !strncmp(buffer + x, "includehint", 11) &&
(*(buffer + x + 11) == ' ' || *(buffer + x + 11) == '>')) {
- for(x += 11; *(buffer + x) != '>'; ++x);
+ for(x += 11; *(buffer + x) != '>'; ++x) ;
int inc_len = 0;
- for(x += 1 ; *(buffer + x + inc_len) != '<'; ++inc_len);
+ for(x += 1 ; *(buffer + x + inc_len) != '<'; ++inc_len) ;
*(buffer + x + inc_len) = '\0';
inc = buffer + x;
} else if(buffer_len >= x + 13 && !strncmp(buffer + x, "customwidget", 12) &&
(*(buffer + x + 12) == ' ' || *(buffer + x + 12) == '>')) {
- for(x += 13; *(buffer + x) != '>'; ++x); //skip up to >
+ for(x += 13; *(buffer + x) != '>'; ++x) ; //skip up to >
while(x < buffer_len) {
- for(x++; *(buffer + x) != '<'; ++x); //skip up to <
+ for(x++; *(buffer + x) != '<'; ++x) ; //skip up to <
x++;
if(buffer_len >= x + 7 && !strncmp(buffer+x, "header", 6) &&
(*(buffer + x + 6) == ' ' || *(buffer + x + 6) == '>')) {
- for(x += 7; *(buffer + x) != '>'; ++x); //skip up to >
+ for(x += 7; *(buffer + x) != '>'; ++x) ; //skip up to >
int inc_len = 0;
- for(x += 1 ; *(buffer + x + inc_len) != '<'; ++inc_len);
+ for(x += 1 ; *(buffer + x + inc_len) != '<'; ++inc_len) ;
*(buffer + x + inc_len) = '\0';
inc = buffer + x;
break;
@@ -448,10 +448,10 @@
for(x += 8; *(buffer + x) != '>'; ++x) {
if(buffer_len >= x + 9 && *(buffer + x) == 'i' &&
!strncmp(buffer + x, "impldecl", 8)) {
- for(x += 8; *(buffer + x) != '='; ++x);
+ for(x += 8; *(buffer + x) != '='; ++x) ;
if(*(buffer + x) != '=')
continue;
- for(++x; *(buffer+x) == '\t' || *(buffer+x) == ' '; ++x);
+ for(++x; *(buffer+x) == '\t' || *(buffer+x) == ' '; ++x) ;
char quote = 0;
if(*(buffer+x) == '\'' || *(buffer+x) == '"') {
quote = *(buffer + x);
@@ -475,13 +475,13 @@
}
}
int inc_len = 0;
- for(x += 1 ; *(buffer + x + inc_len) != '<'; ++inc_len);
+ for(x += 1 ; *(buffer + x + inc_len) != '<'; ++inc_len) ;
*(buffer + x + inc_len) = '\0';
inc = buffer + x;
}
}
//read past new line now..
- for(; x < buffer_len && !qmake_endOfLine(*(buffer + x)); ++x);
+ for(; x < buffer_len && !qmake_endOfLine(*(buffer + x)); ++x) ;
++line_count;
} else if(file->type == QMakeSourceFileInfo::TYPE_QRC) {
} else if(file->type == QMakeSourceFileInfo::TYPE_C) {
@@ -494,7 +494,7 @@
++x;
if(buffer_len >= x) {
if(*(buffer+x) == '/') { //c++ style comment
- for(; x < buffer_len && !qmake_endOfLine(*(buffer + x)); ++x);
+ for(; x < buffer_len && !qmake_endOfLine(*(buffer + x)); ++x) ;
beginning = 1;
} else if(*(buffer+x) == '*') { //c style comment
for(++x; x < buffer_len; ++x) {
@@ -558,7 +558,7 @@
*(buffer+x+keyword_len) != '_') {
for(x+=keyword_len; //skip spaces after keyword
x < buffer_len && (*(buffer+x) == ' ' || *(buffer+x) == '\t');
- x++);
+ x++) ;
break;
} else if(qmake_endOfLine(*(buffer+x+keyword_len))) {
x += keyword_len-1;
@@ -579,7 +579,7 @@
x++;
int inc_len;
- for(inc_len = 0; *(buffer + x + inc_len) != term && !qmake_endOfLine(*(buffer + x + inc_len)); ++inc_len);
+ for(inc_len = 0; *(buffer + x + inc_len) != term && !qmake_endOfLine(*(buffer + x + inc_len)); ++inc_len) ;
*(buffer + x + inc_len) = '\0';
inc = buffer + x;
x += inc_len;
@@ -594,7 +594,7 @@
int msg_len;
for(msg_len = 0; (term && *(buffer + x + msg_len) != term) &&
- !qmake_endOfLine(*(buffer + x + msg_len)); ++msg_len);
+ !qmake_endOfLine(*(buffer + x + msg_len)); ++msg_len) ;
*(buffer + x + msg_len) = '\0';
debug_msg(0, "%s:%d %s -- %s", file->file.local().toLatin1().constData(), line_count, keyword, buffer+x);
x += msg_len;
@@ -706,7 +706,7 @@
buffer = getBuffer(fst.st_size);
for(int have_read = buffer_len = 0;
(have_read = QT_READ(fd, buffer + buffer_len, fst.st_size - buffer_len));
- buffer_len += have_read);
+ buffer_len += have_read) ;
QT_CLOSE(fd);
}
@@ -720,7 +720,7 @@
++x;
if(buffer_len >= x) {
if(*(buffer + x) == '/') { //c++ style comment
- for(;x < buffer_len && !qmake_endOfLine(*(buffer + x)); ++x);
+ for(;x < buffer_len && !qmake_endOfLine(*(buffer + x)); ++x) ;
} else if(*(buffer + x) == '*') { //c style comment
for(++x; x < buffer_len; ++x) {
if(*(buffer + x) == 't' || *(buffer + x) == 'q') { //ignore
--- a/qmake/generators/symbian/symmake.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/symbian/symmake.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -56,7 +56,6 @@
#define REGISTRATION_RESOURCE_DIRECTORY_HW "/private/10003a3f/import/apps"
#define PLUGIN_COMMON_DEF_FILE_FOR_MMP "./plugin_common.def"
#define PLUGIN_COMMON_DEF_FILE_ACTUAL "plugin_commonU.def"
-#define BLD_INF_FILENAME_LEN (sizeof(BLD_INF_FILENAME) - 1)
#define BLD_INF_RULES_BASE "BLD_INF_RULES."
#define BLD_INF_TAG_PLATFORMS "prj_platforms"
@@ -96,6 +95,11 @@
#define PRINT_FILE_CREATE_ERROR(filename) fprintf(stderr, "Error: Could not create '%s'\n", qPrintable(filename));
+#define MANUFACTURER_NOTE_FILE "manufacturer_note.txt"
+#define DEFAULT_MANUFACTURER_NOTE \
+ "The package is not supported for devices from this manufacturer. Please try the selfsigned " \
+ "version of the package instead."
+
QString SymbianMakefileGenerator::fixPathForMmp(const QString& origPath, const QDir& parentDir)
{
static QString epocRootStr;
@@ -249,7 +253,9 @@
QString wrapperFileName("Makefile");
QString outputFileName = fileInfo(Option::output.fileName()).fileName();
if (outputFileName != BLD_INF_FILENAME) {
- wrapperFileName.append(".").append((outputFileName.size() > BLD_INF_FILENAME_LEN && outputFileName.left(BLD_INF_FILENAME_LEN) == BLD_INF_FILENAME) ? outputFileName.mid(8) : outputFileName);
+ wrapperFileName.append(".").append(outputFileName.startsWith(BLD_INF_FILENAME)
+ ? outputFileName.mid(sizeof(BLD_INF_FILENAME))
+ : outputFileName);
isPrimaryMakefile = false;
}
@@ -287,7 +293,7 @@
writeMmpFile(mmpFilename, symbianLangCodes);
if (targetType == TypeExe) {
- if (!project->values("CONFIG").contains("no_icon", Qt::CaseInsensitive)) {
+ if (!project->isActiveConfig("no_icon")) {
writeRegRssFile(userRssRules);
writeRssFile(numberOfIcons, iconFile);
writeLocFile(symbianLangCodes);
@@ -384,6 +390,17 @@
t << endl;
}
+ // Begin Manufacturer block
+ if (!project->values("DEPLOYMENT.manufacturers").isEmpty()) {
+ QString manufacturerStr("IF ");
+ foreach(QString manufacturer, project->values("DEPLOYMENT.manufacturers")) {
+ manufacturerStr.append(QString("(MANUFACTURER)=(%1) OR \n ").arg(manufacturer));
+ }
+ // Remove the final OR
+ manufacturerStr.chop(8);
+ t << manufacturerStr << endl;
+ }
+
// Install paths on the phone *** should be dynamic at some point
QString installPathBin = "!:\\sys\\bin";
QString installPathResource = "!:\\resource\\apps";
@@ -405,7 +422,7 @@
.arg(exeFile) << endl;
// deploy rsc & reg_rsc file
- if (!project->values("CONFIG").contains("no_icon", Qt::CaseInsensitive)) {
+ if (!project->isActiveConfig("no_icon")) {
t << QString("\"%1epoc32/data/z/resource/apps/%2\" - \"%3\\%4\"")
.arg(epocRoot())
.arg(fixedTarget + ".rsc")
@@ -458,6 +475,30 @@
t << endl;
}
}
+
+ // Close Manufacturer block
+ if (!project->values("DEPLOYMENT.manufacturers").isEmpty()) {
+ QString manufacturerFailNoteFile;
+ if (project->values("DEPLOYMENT.manufacturers.fail_note").isEmpty()) {
+ manufacturerFailNoteFile = QString("%1_" MANUFACTURER_NOTE_FILE).arg(uid3);
+ QFile ft(manufacturerFailNoteFile);
+ if (ft.open(QIODevice::WriteOnly)) {
+ generatedFiles << ft.fileName();
+ QTextStream t2(&ft);
+
+ t2 << QString(DEFAULT_MANUFACTURER_NOTE) << endl;
+ } else {
+ PRINT_FILE_CREATE_ERROR(manufacturerFailNoteFile)
+ }
+ } else {
+ manufacturerFailNoteFile = project->values("DEPLOYMENT.manufacturers.fail_note").join("");
+ }
+
+ t << "ELSEIF NOT(0) ; MANUFACTURER" << endl
+ << "\"" << fileInfo(manufacturerFailNoteFile).absoluteFilePath() << "\""
+ << " - \"\", FILETEXT, TEXTEXIT" << endl
+ << "ENDIF ; MANUFACTURER" << endl;
+ }
}
bool SymbianMakefileGenerator::containsStartWithItem(const QChar &c, const QStringList& src)
@@ -474,7 +515,7 @@
void SymbianMakefileGenerator::writeCustomDefFile()
{
- if (targetType == TypePlugin && !project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive)) {
+ if (targetType == TypePlugin && !project->isActiveConfig("stdbinary")) {
// Create custom def file for plugin
QFile ft(QLatin1String(PLUGIN_COMMON_DEF_FILE_ACTUAL));
@@ -515,6 +556,15 @@
fixedTarget = escapeFilePath(fileFixify(project->first("TARGET")));
fixedTarget = removePathSeparators(fixedTarget);
removeSpecialCharacters(fixedTarget);
+
+ translationFileName = escapeFilePath(fileFixify(project->first("TRANSLATIONS")));
+ if (!translationFileName.isEmpty()){
+ translationFileName.chop(3);
+ translationFileName = removePathSeparators(translationFileName);
+ removeSpecialCharacters(translationFileName);
+ }
+ else
+ translationFileName = fixedTarget;
if (0 != project->values("QMAKE_PLATFORM").size())
platform = varGlue("QMAKE_PLATFORM", "", " ", "");
@@ -542,9 +592,9 @@
targetType = TypeExe;
else if ((project->values("TEMPLATE")).contains("lib")) {
// Check CONFIG to see if we are to build staticlib or dll
- if (project->values("CONFIG").contains("staticlib") || project->values("CONFIG").contains("static"))
+ if (project->isActiveConfig("staticlib") || project->isActiveConfig("static"))
targetType = TypeLib;
- else if (project->values("CONFIG").contains("plugin"))
+ else if (project->isActiveConfig("plugin"))
targetType = TypePlugin;
else
targetType = TypeDll;
@@ -554,7 +604,7 @@
if (0 != project->values("TARGET.UID2").size()) {
uid2 = project->first("TARGET.UID2");
- } else if (project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive)) {
+ } else if (project->isActiveConfig("stdbinary")) {
uid2 = "0x20004C45";
} else {
if (targetType == TypeExe) {
@@ -825,7 +875,7 @@
}
t << endl;
- if (!project->values("CONFIG").contains("static") && !project->values("CONFIG").contains("staticlib")) {
+ if (!project->isActiveConfig("static") && !project->isActiveConfig("staticlib")) {
writeMmpFileLibraryPart(t);
}
@@ -878,7 +928,7 @@
if (targetType == TypeExe) {
t << MMP_TARGET "\t\t" << fixedTarget << ".exe" << endl;
if (!skipTargetType) {
- if (project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive))
+ if (project->isActiveConfig("stdbinary"))
t << MMP_TARGETTYPE "\t\tSTDEXE" << endl;
else
t << MMP_TARGETTYPE "\t\tEXE" << endl;
@@ -886,7 +936,7 @@
} else if (targetType == TypeDll || targetType == TypePlugin) {
t << MMP_TARGET "\t\t" << fixedTarget << ".dll" << endl;
if (!skipTargetType) {
- if (project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive))
+ if (project->isActiveConfig("stdbinary"))
t << MMP_TARGETTYPE "\t\tSTDDLL" << endl;
else
t << MMP_TARGETTYPE "\t\tDLL" << endl;
@@ -894,7 +944,7 @@
} else if (targetType == TypeLib) {
t << MMP_TARGET "\t\t" << fixedTarget << ".lib" << endl;
if (!skipTargetType) {
- if (project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive))
+ if (project->isActiveConfig("stdbinary"))
t << MMP_TARGETTYPE "\t\tSTDLIB" << endl;
else
t << MMP_TARGETTYPE "\t\tLIB" << endl;
@@ -930,7 +980,7 @@
if (0 != project->values("TARGET.EPOCALLOWDLLDATA").size())
t << MMP_EPOCALLOWDLLDATA << endl;
- if (targetType == TypePlugin && !project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive)) {
+ if (targetType == TypePlugin && !project->isActiveConfig("stdbinary")) {
// Use custom def file for Qt plugins
t << "DEFFILE " PLUGIN_COMMON_DEF_FILE_FOR_MMP << endl;
}
@@ -946,7 +996,7 @@
void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, QStringList &symbianLangCodes)
{
if ((targetType == TypeExe) &&
- !project->values("CONFIG").contains("no_icon", Qt::CaseInsensitive)) {
+ !project->isActiveConfig("no_icon")) {
QString locTarget = fixedTarget;
locTarget.append(".rss");
@@ -1313,7 +1363,7 @@
// Add project mmps and old style extension makefiles
QString mmpTag;
- if (project->values("CONFIG").contains("symbian_test", Qt::CaseInsensitive))
+ if (project->isActiveConfig("symbian_test"))
mmpTag = QLatin1String(BLD_INF_TAG_TESTMMPFILES);
else
mmpTag = QLatin1String(BLD_INF_TAG_MMPFILES);
@@ -1484,10 +1534,7 @@
t << "// ============================================================================" << endl;
t << endl;
t << "#include <appinfo.rh>" << endl;
- if (!project->values("SYMBIANTRANSLATIONS").isEmpty())
- t << "#include <" << fixedTarget << ".loc>" << endl;
- else
- t << "#include \"" << fixedTarget << ".loc\"" << endl;
+ t << "#include <" << translationFileName << ".loc>" << endl;
t << endl;
t << "RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info" << endl;
t << "\t{" << endl;
@@ -1519,14 +1566,14 @@
void SymbianMakefileGenerator::writeLocFile(QStringList &symbianLangCodes)
{
- QString filename(fixedTarget);
+ QString filename(translationFileName);
if (project->values("SYMBIANTRANSLATIONS").isEmpty()) {
filename.append(".loc");
} else {
if (!project->first("SYMBIANLOCFILESDIR").isEmpty()) {
filename.insert(0,project->first("SYMBIANLOCFILESDIR"));
} else {
- filename.insert(0,"/epoc32/include/platform/app/loc/");
+ filename.insert(0,"/epoc32/include/platform/mw/loc/");
}
filename.append(".loc");
}
@@ -1560,11 +1607,11 @@
t << "#endif" << endl;
} else {
t << "#if LANGUAGE_01" << endl;
- t << "#include <" << "01/" << fixedTarget << "_01.loc>" << endl;
+ t << "#include <" << "01/" << translationFileName << "_01.loc>" << endl;
foreach(QString lang, symbianLangCodes) {
if (lang.localeAwareCompare("01") != 0) {
t << "#elif LANGUAGE_" << lang << endl;
- t << "#include <" << lang << "/" << fixedTarget << "_" << lang << ".loc>" << ">" << endl;
+ t << "#include <" << lang << "/" << translationFileName << "_" << lang << ".loc" << ">" << endl;
}
}
t << "#endif" << endl;
@@ -1576,13 +1623,14 @@
void SymbianMakefileGenerator::writeSymbianLocFile(QStringList &symbianLangCodes)
{
- QString filename(fixedTarget);
+ QString filename(translationFileName);
foreach(QString lang, symbianLangCodes) {
QString tsFilename(filename);
QString language = qt2S60LangMapTable.key(lang, QString("en"));
tsFilename.append("_"+language+".ts");
- tsFilename.insert(0,project->first("SYMBIANTRANSLATIONDIR"));
+
+ tsFilename.insert(0,project->first("SYMBIANTRANSLATIONSRCDIR"));
QString locFilename(filename);
locFilename.append("_"+lang+".loc");
@@ -1590,7 +1638,7 @@
locFilename.insert(0,lang+"/");
locFilename.insert(0,project->first("SYMBIANLOCFILESDIR"));
} else {
- locFilename.insert(0,"/epoc32/include/platform/app/loc/"+lang+"/");
+ locFilename.insert(0,"/epoc32/include/platform/mw/loc/"+lang+"/");
}
QString shortCaption;
@@ -1633,17 +1681,22 @@
}
}
}
- if (shortCaption.isEmpty())
+ if (shortCaption.isEmpty()){
fprintf(stderr, "Warning: STRING_r_short_caption not generated from file '%s'.\n", qPrintable(tsFilename));
- if (longCaption.isEmpty())
+ fprintf(stderr, " : short caption generated from target name '#%s'.\n", qPrintable(fixedTarget));
+ }
+ if (longCaption.isEmpty()){
fprintf(stderr, "Warning: STRING_r_caption not generated from file '%s'.\n", qPrintable(tsFilename));
+ fprintf(stderr, " : caption generated from target name '#%s'.\n", qPrintable(fixedTarget));
+ }
if (xml.hasError())
fprintf(stderr, "ERROR: \"%s\" when parsing ts file\n", qPrintable(xml.errorString()));
} else {
fprintf(stderr, "Could not open ts file (%s)\n", qPrintable(tsFilename));
}
} else {
- fprintf(stderr, "ts file does not exist: (%s)\n", qPrintable(tsFilename));
+ fprintf(stderr, "Warning: ts file does not exist: (%s)\n", qPrintable(tsFilename));
+ fprintf(stderr, " : short and long caption generated from target name '#%s'.\n", qPrintable(fixedTarget));
}
// generate language specific caption loc file
@@ -1661,12 +1714,12 @@
if (!shortCaption.isEmpty()) {
t << "#define STRING_r_short_caption \"" << shortCaption << "\"" << endl;
} else {
- t << "#define STRING_r_short_caption \"" << fixedTarget << "\"" << endl;
+ t << "#define STRING_r_short_caption \"" "#"<< fixedTarget << "\"" << endl;
}
if (!longCaption.isEmpty()) {
t << "#define STRING_r_caption \"" << longCaption << "\"" << endl;
} else {
- t << "#define STRING_r_caption \"" << fixedTarget << "\"" << endl;
+ t << "#define STRING_r_caption \"" "#"<< fixedTarget << "\"" << endl;
}
ft.close();
} else {
@@ -1747,7 +1800,7 @@
if (!numberOfIcons.isEmpty()) {
bool ok;
numberOfIcons = numberOfIcons.simplified();
- int tmp = numberOfIcons.toInt(&ok);
+ numberOfIcons.toInt(&ok);
if (!ok) {
numberOfIcons.clear();
iconFile.clear();
--- a/qmake/generators/symbian/symmake.h Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/symbian/symmake.h Fri Mar 12 15:46:37 2010 +0200
@@ -81,7 +81,8 @@
QHash<QString, QString> qt2S60LangMapTable;
QString fixedTarget;
-
+ QString translationFileName;
+
void removeSpecialCharacters(QString& str);
QString fixPathForMmp(const QString& origPath, const QDir& parentDir);
QString canonizePath(const QString& origPath);
--- a/qmake/generators/symbian/symmake_abld.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/symbian/symmake_abld.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -155,39 +155,79 @@
t << "endif" << endl << endl;
t << "CLEANLIB: " DO_NOTHING_TARGET << endl << endl;
- QStringList qmFileNames;
- QString translationFilename = project->first("TRANSLATIONS");
- if (!project->values("SYMBIANTRANSLATIONS").isEmpty() && !translationFilename.isEmpty()) {
- QStringList symbianTranslations = project->values("SYMBIANTRANSLATIONS");
- QString symbianTrPath = project->first("SYMBIANTRANSLATIONDIR");
- t << "RESOURCE: create_qm" << endl << endl;
- t << "create_qm : " << endl;
- foreach (const QString &symbianTrans, symbianTranslations) {
- QString translationTsFilename(translationFilename);
- translationTsFilename.chop(3);
- translationTsFilename.insert(0,symbianTrPath);
- translationTsFilename.append(QString::fromLatin1("_"));
- translationTsFilename.append(symbianTrans);
- QString translationQmFilename(translationTsFilename);
- translationTsFilename.append(QString::fromLatin1(".ts"));
- translationQmFilename.append(QString::fromLatin1(".qm"));
- t << "\t$(EPOCROOT)epoc32\\tools\\qt\\lrelease -silent -idbased " << translationTsFilename << " -qm " << translationQmFilename << endl;
- // qmFileNames are needed in RELEASABLES: part
- qmFileNames.append(translationQmFilename);
+ QStringList trFileNames;
+ if (!project->values("SYMBIANTRANSLATIONS").isEmpty()) {
+ QString translationFilename = project->first("TRANSLATIONS");
+ if (!translationFilename.isEmpty()) {
+ QStringList symbianTranslations = project->values("SYMBIANTRANSLATIONS");
+ QString symbianTrPath = project->first("SYMBIANTRANSLATIONDIR");
+ QString symbianTrSrcPath = project->first("SYMBIANTRANSLATIONSRCDIR");
+ QString symbianWinscwUdebQmPath = project->first("SYMBIANWINSCWUDEBTRANSLATIONDIR");
+ QString symbianWinscwUrelQmPath = project->first("SYMBIANWINSCWURELTRANSLATIONDIR");
+ t << "RESOURCE: create_qm" << endl << endl;
+ t << "create_qm : " << endl;
+ foreach (const QString &symbianTrans, symbianTranslations) {
+ QString translationTsFilename(translationFilename);
+ translationTsFilename.chop(3);
+ translationTsFilename.insert(0,symbianTrPath);
+ translationTsFilename.append(QString::fromLatin1("_"));
+ translationTsFilename.append(symbianTrans);
+ QString translationQmFilename(translationTsFilename);
+
+ translationTsFilename.append(QString::fromLatin1(".ts"));
+ // output path for armv5 qm files./epoc32/data/z/resource/qt/translations/
+ translationQmFilename.append(QString::fromLatin1(".qm"));
+
+ // input path for ts files. /epoc32/include/platform/qt/translations/
+ QString translationTsSrcFilename(translationFilename);
+ translationTsSrcFilename.chop(3);
+ translationTsSrcFilename.insert(0,symbianTrSrcPath);
+ translationTsSrcFilename.append(QString::fromLatin1("_"));
+ translationTsSrcFilename.append(symbianTrans);
+ translationTsSrcFilename.append(QString::fromLatin1(".ts"));
+
+ // output path for winscw qm files. /epoc32/release/winscw/udeb/z/resource/qt/translations/
+ QString translationQmWinscwUdebFilename(translationFilename);
+ translationQmWinscwUdebFilename.chop(3);
+ translationQmWinscwUdebFilename.insert(0,symbianWinscwUdebQmPath);
+ translationQmWinscwUdebFilename.append(QString::fromLatin1("_"));
+ translationQmWinscwUdebFilename.append(symbianTrans);
+ translationQmWinscwUdebFilename.append(QString::fromLatin1(".qm"));
+
+ // output path for winscw qm files. /epoc32/release/winscw/urel/z/resource/qt/translations/
+ QString translationQmWinscwUrelFilename(translationFilename);
+ translationQmWinscwUrelFilename.chop(3);
+ translationQmWinscwUrelFilename.insert(0,symbianWinscwUrelQmPath);
+ translationQmWinscwUrelFilename.append(QString::fromLatin1("_"));
+ translationQmWinscwUrelFilename.append(symbianTrans);
+ translationQmWinscwUrelFilename.append(QString::fromLatin1(".qm"));
+
+ //these get generated to component mk file.
+ t << "\tlrelease -silent -idbased " << translationTsSrcFilename << " -qm " << translationQmFilename << endl;
+ t << "\tlrelease -silent -idbased " << translationTsSrcFilename << " -qm " << translationQmWinscwUdebFilename << endl;
+ t << "\tlrelease -silent -idbased " << translationTsSrcFilename << " -qm " << translationQmWinscwUrelFilename << endl;
+
+ // trFileNames QStringList needed in RELEASABLES part
+ trFileNames.append(translationQmFilename);
+ trFileNames.append(translationQmWinscwUdebFilename);
+ trFileNames.append(translationQmWinscwUrelFilename);
+ }
+ t << endl;
}
- t << endl;
+ else
+ t << "RESOURCE: " DO_NOTHING_TARGET << endl << endl;
} else {
t << "RESOURCE: " DO_NOTHING_TARGET << endl << endl;
}
t << "FREEZE: " DO_NOTHING_TARGET << endl << endl;
t << "SAVESPACE: " DO_NOTHING_TARGET << endl << endl;
- if (!project->values("SYMBIANTRANSLATIONS").isEmpty() && !qmFileNames.isEmpty()) {
+ if (!project->values("SYMBIANTRANSLATIONS").isEmpty()) {
t << "RELEASABLES: list_qm" << endl << endl;
t << "list_qm : " << endl;
- foreach (const QString &qmFilename, qmFileNames) {
- t << "\t@echo " << qmFilename << endl;
- }
+ foreach (const QString &trFilename, trFileNames) {
+ t << "\t@echo " << trFilename << endl;
+ }
t << endl;
} else {
t << "RELEASABLES: " DO_NOTHING_TARGET << endl << endl;
@@ -220,7 +260,7 @@
releasePlatforms.removeAll("winscw"); // No release for emulator
QString testClause;
- if (project->values("CONFIG").contains("symbian_test", Qt::CaseInsensitive))
+ if (project->isActiveConfig("symbian_test"))
testClause = QLatin1String(" test");
else
testClause = QLatin1String("");
--- a/qmake/generators/symbian/symmake_sbsv2.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/symbian/symmake_sbsv2.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -110,7 +110,7 @@
releasePlatforms.removeAll("winscw"); // No release for emulator
QString testClause;
- if (project->values("CONFIG").contains("symbian_test", Qt::CaseInsensitive))
+ if (project->isActiveConfig("symbian_test"))
testClause = QLatin1String(".test");
else
testClause = QLatin1String("");
@@ -370,20 +370,63 @@
if (!project->values("SYMBIANTRANSLATIONS").isEmpty() && !translationFilename.isEmpty()) {
QStringList symbianTranslations = project->values("SYMBIANTRANSLATIONS");
QString symbianTrPath = project->first("SYMBIANTRANSLATIONDIR");
+ QString symbianTrSrcPath = project->first("SYMBIANTRANSLATIONSRCDIR");
+ QString symbianWinscwUdebQmPath = project->first("SYMBIANWINSCWUDEBTRANSLATIONDIR");
+ QString symbianWinscwUrelQmPath = project->first("SYMBIANWINSCWURELTRANSLATIONDIR");
foreach (const QString &symbianTrans, symbianTranslations) {
- QString translationTsFilename(translationFilename);
- translationTsFilename.chop(3);
- translationTsFilename.insert(0,symbianTrPath);
- translationTsFilename.append(QString::fromLatin1("_"));
- translationTsFilename.append(symbianTrans);
- QString translationQmFilename(translationTsFilename);
- translationTsFilename.append(QString::fromLatin1(".ts"));
- translationQmFilename.append(QString::fromLatin1(".qm"));
+ QString translationTsFilename(translationFilename);
+ translationTsFilename.chop(3);
+ translationTsFilename.insert(0,symbianTrPath);
+ translationTsFilename.append(QString::fromLatin1("_"));
+ translationTsFilename.append(symbianTrans);
+ QString translationQmFilename(translationTsFilename);
+
+ translationTsFilename.append(QString::fromLatin1(".ts"));
+ // output path for armv5 qm files./epoc32/data/z/resource/qt/translations/
+ translationQmFilename.append(QString::fromLatin1(".qm"));
+
+ // input path for ts files. /epoc32/include/platform/qt/translations/
+ QString translationTsSrcFilename(translationFilename);
+ translationTsSrcFilename.chop(3);
+ translationTsSrcFilename.insert(0,symbianTrSrcPath);
+ translationTsSrcFilename.append(QString::fromLatin1("_"));
+ translationTsSrcFilename.append(symbianTrans);
+ translationTsSrcFilename.append(QString::fromLatin1(".ts"));
+
+ // output path for winscw qm files. /epoc32/release/winscw/udeb/z/resource/qt/translations/
+ QString translationQmWinscwUdebFilename(translationFilename);
+ translationQmWinscwUdebFilename.chop(3);
+ translationQmWinscwUdebFilename.insert(0,symbianWinscwUdebQmPath);
+ translationQmWinscwUdebFilename.append(QString::fromLatin1("_"));
+ translationQmWinscwUdebFilename.append(symbianTrans);
+ translationQmWinscwUdebFilename.append(QString::fromLatin1(".qm"));
+
+ // output path for winscw qm files. /epoc32/release/winscw/urel/z/resource/qt/translations/
+ QString translationQmWinscwUrelFilename(translationFilename);
+ translationQmWinscwUrelFilename.chop(3);
+ translationQmWinscwUrelFilename.insert(0,symbianWinscwUrelQmPath);
+ translationQmWinscwUrelFilename.append(QString::fromLatin1("_"));
+ translationQmWinscwUrelFilename.append(symbianTrans);
+ translationQmWinscwUrelFilename.append(QString::fromLatin1(".qm"));
+
t << "START EXTENSION qt/ts2qm" << endl;
- t << "OPTION TSFILE " << translationTsFilename << endl;
+ t << "OPTION TSFILE " << translationTsSrcFilename << endl;
t << "OPTION QMFILE " << translationQmFilename << endl;
t << "END" << endl;
t << endl;
+
+ //winscw udeb
+ t << "START EXTENSION qt/ts2qm" << endl;
+ t << "OPTION TSFILE " << translationTsSrcFilename << endl;
+ t << "OPTION QMFILE " << translationQmWinscwUdebFilename << endl;
+ t << "END" << endl;
+ t << endl;
+ //winscw urel
+ t << "START EXTENSION qt/ts2qm" << endl;
+ t << "OPTION TSFILE " << translationTsSrcFilename << endl;
+ t << "OPTION QMFILE " << translationQmWinscwUrelFilename << endl;
+ t << "END" << endl;
+ t << endl;
}
}
--- a/qmake/generators/win32/winmakefile.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/win32/winmakefile.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -470,11 +470,12 @@
resFile.replace(".rc", Option::res_ext);
project->values("RES_FILE").prepend(fileInfo(resFile).fileName());
- if (!project->values("OBJECTS_DIR").isEmpty())
+ if (!project->values("OBJECTS_DIR").isEmpty()) {
if(project->isActiveConfig("staticlib"))
project->values("RES_FILE").first().prepend(fileInfo(project->values("DESTDIR").first()).absoluteFilePath() + Option::dir_sep);
else
project->values("RES_FILE").first().prepend(project->values("OBJECTS_DIR").first() + Option::dir_sep);
+ }
project->values("RES_FILE").first() = Option::fixPathToTargetOS(project->values("RES_FILE").first(), false, false);
project->values("POST_TARGETDEPS") += project->values("RES_FILE");
project->values("CLEAN_FILES") += project->values("RES_FILE");
--- a/qmake/meta.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/meta.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -119,10 +119,11 @@
}
}
}
- if(ret.isNull())
+ if(ret.isNull()) {
debug_msg(2, "QMakeMetaInfo: Cannot find info file for %s", lib.toLatin1().constData());
- else
+ } else {
debug_msg(2, "QMakeMetaInfo: Found info file %s for %s", ret.toLatin1().constData(), lib.toLatin1().constData());
+ }
return ret;
}
--- a/qmake/option.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/option.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -634,8 +634,8 @@
string = string.replace('/', Option::dir_sep).replace('\\', Option::dir_sep);
}
- if (string.startsWith("\"") && string.endsWith("\"") ||
- string.startsWith("\'") && string.endsWith("\'"))
+ if ((string.startsWith("\"") && string.endsWith("\"")) ||
+ (string.startsWith("\'") && string.endsWith("\'")))
string = string.mid(1, string.length()-2);
//cache
--- a/qmake/project.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/project.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -3067,7 +3067,7 @@
place[var] = QStringList(pfile);
} else if(var == QLatin1String("_PRO_FILE_PWD_")) {
var = ".BUILTIN." + var;
- place[var] = QStringList(QFileInfo(pfile).absolutePath());
+ place[var] = QStringList(pfile.isEmpty() ? qmake_getpwd() : QFileInfo(pfile).absolutePath());
} else if(var == QLatin1String("_QMAKE_CACHE_")) {
var = ".BUILTIN." + var;
if(Option::mkfile::do_cache)
--- a/src/3rdparty/phonon/mmf/environmentalreverb.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/phonon/mmf/environmentalreverb.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -139,57 +139,68 @@
TInt32 min, max;
TUint32 umin, umax;
- // DecayHFRatio
effect->DecayHFRatioRange(umin, umax);
+ //: DecayHFRatio: Ratio of high-frequency decay time to the value specified by
+ //: DecayTime.
parameters.append(createParameter(
DecayHFRatio, tr("Decay HF ratio (%)"), effect->DecayHFRatio(),
umin, umax));
- // DecayTime
effect->DecayTimeRange(umin, umax);
+ //: DecayTime: Time over which reverberation is diminished.
parameters.append(createParameter(
DecayTime, tr("Decay time (ms)"), effect->DecayTime(),
umin, umax));
- // Density
+ //: Density Delay between first and subsequent reflections.
+ //: Note that the S60 platform documentation does not make clear
+ //: the distinction between this value and the Diffusion value.
parameters.append(createParameter(
Density, tr("Density (%)"), effect->Density(), 0, 100));
- // Diffusion
+ //: Diffusion: Delay between first and subsequent reflections.
+ //: Note that the S60 platform documentation does not make clear
+ //: the distinction between this value and the Density value.
parameters.append(createParameter(
Diffusion, tr("Diffusion (%)"), effect->Diffusion(), 0, 100));
- // ReflectionsDelay
+ //: ReflectionsDelay: Amount of delay between the arrival the direct
+ //: path from the source and the arrival of the first reflection.
parameters.append(createParameter(
ReflectionsDelay, tr("Reflections delay (ms)"),
effect->ReflectionsDelay(), 0, effect->ReflectionsDelayMax()));
- // ReflectionsLevel
effect->ReflectionLevelRange(min, max);
+ //: ReflectionsLevel: Amplitude of reflections. This value is
+ //: corrected by the RoomLevel to give the final reflection amplitude.
parameters.append(createParameter(
ReflectionsLevel, tr("Reflections level (mB)"),
effect->ReflectionsLevel(),
min, max, EffectParameter::LogarithmicHint));
- // ReverbDelay
+ //: ReverbDelay: Amount of time between arrival of the first
+ //: reflection and start of the late reverberation.
parameters.append(createParameter(
ReverbDelay, tr("Reverb delay (ms)"), effect->ReverbDelay(),
0, effect->ReverbDelayMax()));
- // ReverbLevel
effect->ReverbLevelRange(min, max);
+ //: ReverbLevel Amplitude of reverberations. This value is
+ //: corrected by the RoomLevel to give the final reverberation
+ //: amplitude.
parameters.append(createParameter(
ReverbLevel, tr("Reverb level (mB)"), effect->ReverbLevel(),
min, max, EffectParameter::LogarithmicHint));
- // RoomHFLevel
effect->RoomHFLevelRange(min, max);
+ //: RoomHFLevel: Amplitude of low-pass filter used to attenuate the
+ //: high frequency component of reflected sound.
parameters.append(createParameter(
RoomHFLevel, tr("Room HF level"), effect->RoomHFLevel(),
min, max));
- // RoomLevel
effect->RoomLevelRange(min, max);
+ //: RoomLevel: Master volume control for all reflected sound.
parameters.append(createParameter(
RoomLevel, tr("Room level (mB)"), effect->RoomLevel(),
min, max, EffectParameter::LogarithmicHint));
--- a/src/3rdparty/phonon/mmf/utils.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/phonon/mmf/utils.h Fri Mar 12 15:46:37 2010 +0200
@@ -44,7 +44,7 @@
class Utils
{
- Q_DECLARE_TR_FUNCTIONS(Utils)
+ Q_DECLARE_TR_FUNCTIONS(Phonon::MMF)
public:
/**
--- a/src/3rdparty/webkit/VERSION Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/VERSION Fri Mar 12 15:46:37 2010 +0200
@@ -8,4 +8,4 @@
and has the sha1 checksum
- e15bd5454732bab9ffff4e1e5a755f41fd4e2eff
+ 69dd29fbeb12d076741dce70ac6bc155101ccd6f
--- a/src/3rdparty/webkit/WebCore/ChangeLog Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/ChangeLog Fri Mar 12 15:46:37 2010 +0200
@@ -1,3 +1,97 @@
+2010-02-01 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Use the fallback style on Maemo 5
+
+ https://bugs.webkit.org/show_bug.cgi?id=34376
+
+ * platform/qt/RenderThemeQt.cpp:
+ (WebCore::RenderThemeQt::RenderThemeQt):
+ (WebCore::RenderThemeQt::fallbackStyle):
+ (WebCore::RenderThemeQt::qStyle):
+ (WebCore::RenderThemeQt::setPaletteFromPageClientIfExists):
+ * platform/qt/RenderThemeQt.h:
+
+2010-01-29 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Speed up the WebCore::String -> QString conversion
+
+ Use QString(const QChar *, int len) constructor instead of QString::fromUtf16 to
+ avoid BOM checks and byteswapping.
+
+ * bridge/qt/qt_class.cpp:
+ (JSC::Bindings::QtClass::fieldNamed):
+ * bridge/qt/qt_runtime.cpp:
+ (JSC::Bindings::convertValueToQVariant):
+
+2010-01-14 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Enable scrolling optimization for pages with embedded widgets
+
+ https://bugs.webkit.org/show_bug.cgi?id=33373
+
+ Added a basic manual test for scrolling of embedded QWidgets.
+
+ * manual-tests/qt/qtplugin-scrolling.html: Added.
+ * platform/ScrollView.cpp:
+ (WebCore::ScrollView::scrollContents):
+ (WebCore::ScrollView::setParent):
+ * platform/ScrollView.h:
+ * platform/qt/ScrollViewQt.cpp:
+ (WebCore::ScrollView::platformInit):
+ (WebCore::ScrollView::platformAddChild):
+ (WebCore::ScrollView::platformRemoveChild):
+ * plugins/qt/PluginViewQt.cpp:
+ (WebCore::PluginView::updatePluginWidget):
+ (WebCore::PluginView::invalidateRect):
+
+2010-01-29 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Turn off websocket support by default for Qt 4.6.x
+ https://bugs.webkit.org/show_bug.cgi?id=34284
+
+ * WebCore.pro:
+
+2010-01-26 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] JavaScript prompt is currently broken.
+ https://bugs.webkit.org/show_bug.cgi?id=30914
+
+ Remove the manual test case in favor of an automated
+ test case in WebKit/qt/tests/qwebpage.
+
+ * manual-tests/qt/java-script-prompt.html: Removed.
+
+2010-01-25 Janne Koskinen <janne.p.koskinen@digia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Phone backup support for QtWebkit for Symbian devices.
+ https://bugs.webkit.org/show_bug.cgi?id=34077
+
+ * WebCore.pro:
+
+2010-01-21 Thiago Macieira <thiago.macieira@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Fix incorrect dependency to QtXmlPatterns in generated include/QtWebKit/QtWebKit header
+
+ The generated file includes QtXmlPatterns/QtXmlPatterns, which is neither used/required by
+ the public QtWebKit API nor will it be available if Qt is configured with -no-xmlpatterns.
+
+ * WebCore.pro: Trick syncqt to believe that xmlpatterns is not a dependency, so that it's not
+ included in the generated file. It'll still be used and linked to with this trick.
+
2010-01-17 Srinidhi Shreedhara <srinidhi.shreedhara@nokia.com>
Reviewed by Simon Hausmann.
--- a/src/3rdparty/webkit/WebCore/WebCore.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/WebCore.pro Fri Mar 12 15:46:37 2010 +0200
@@ -6,6 +6,7 @@
TARGET.EPOCALLOWDLLDATA=1
TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 // Min 128kB, Max 32MB
TARGET.CAPABILITY = All -Tcb
+ TARGET.UID3 = 0x200267C2
webkitlibs.sources = QtWebKit.dll
webkitlibs.path = /sys/bin
@@ -18,12 +19,15 @@
" "
webkitlibs.pkg_prerules = vendorinfo
- DEPLOYMENT += webkitlibs
+ webkitbackup.sources = ../WebKit/qt/symbian/backup_registration.xml
+ webkitbackup.path = /private/10202D56/import/packages/$$replace(TARGET.UID3, 0x,)
- TARGET.UID3 = 0x200267C2
+ DEPLOYMENT += webkitlibs webkitbackup
+
# RO text (code) section in qtwebkit.dll exceeds allocated space for gcce udeb target.
# Move RW-section base address to start from 0xE00000 instead of the toolchain default 0x400000.
MMP_RULES += "LINKEROPTION armcc --rw-base 0xE00000"
+ MMP_RULES += BYTEPAIRCOMPRESSTARGET # :QTP:QT-2698
MMP_RULES += ALWAYS_BUILD_AS_ARM
QMAKE_CXXFLAGS.ARMCC += -OTime -O3
}
@@ -183,7 +187,7 @@
}
# Web Socket support.
-!contains(DEFINES, ENABLE_WEB_SOCKETS=.): DEFINES += ENABLE_WEB_SOCKETS=1
+!contains(DEFINES, ENABLE_WEB_SOCKETS=.): DEFINES += ENABLE_WEB_SOCKETS=0
# XSLT support with QtXmlPatterns
!contains(DEFINES, ENABLE_XSLT=.) {
@@ -2780,7 +2784,7 @@
contains(DEFINES, ENABLE_XSLT=1) {
FEATURE_DEFINES_JAVASCRIPT += ENABLE_XSLT=1
- QT += xmlpatterns
+ tobe|!tobe: QT += xmlpatterns
SOURCES += \
bindings/js/JSXSLTProcessorConstructor.cpp \
@@ -3421,14 +3425,8 @@
symbian {
shared {
- contains(MMP_RULES, defBlock) {
- MMP_RULES -= defBlock
-
- MMP_RULES += "$${LITERAL_HASH}ifdef WINSCW" \
- "DEFFILE ../WebKit/qt/symbian/bwins/$${TARGET}.def" \
- "$${LITERAL_HASH}elif defined EABI" \
- "DEFFILE ../WebKit/qt/symbian/eabi/$${TARGET}.def" \
- "$${LITERAL_HASH}endif"
+ contains(CONFIG, def_files) {
+ defFilePath=../WebKit/qt/symbian
}
}
}
--- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_class.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_class.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -127,7 +127,7 @@
QObject* obj = qtinst->getObject();
UString ustring = identifier.ustring();
- QString objName(QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size()));
+ QString objName((const QChar*)ustring.rep()->data(), ustring.size());
QByteArray ba = objName.toAscii();
// First check for a cached field
--- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -305,7 +305,7 @@
return QString();
} else {
UString ustring = value.toString(exec);
- ret = QVariant(QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size()));
+ ret = QVariant(QString((const QChar*)ustring.rep()->data(), ustring.size()));
if (type == String)
dist = 0;
else
@@ -329,7 +329,7 @@
QVariant v = convertValueToQVariant(exec, val, QMetaType::Void, &objdist, visitedObjects);
if (objdist >= 0) {
UString ustring = (*it).ustring();
- QString id = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+ QString id = QString((const QChar*)ustring.rep()->data(), ustring.size());
result.insert(id, v);
}
}
@@ -404,7 +404,7 @@
for (int i = 0; i < len; ++i) {
JSValue val = rtarray->getConcreteArray()->valueAt(exec, i);
UString ustring = val.toString(exec);
- QString qstring = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+ QString qstring = QString((const QChar*)ustring.rep()->data(), ustring.size());
result.append(qstring);
}
@@ -418,7 +418,7 @@
for (int i = 0; i < len; ++i) {
JSValue val = array->get(exec, i);
UString ustring = val.toString(exec);
- QString qstring = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+ QString qstring = QString((const QChar*)ustring.rep()->data(), ustring.size());
result.append(qstring);
}
@@ -427,7 +427,7 @@
} else {
// Make a single length array
UString ustring = value.toString(exec);
- QString qstring = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+ QString qstring = QString((const QChar*)ustring.rep()->data(), ustring.size());
QStringList result;
result.append(qstring);
ret = QVariant(result);
@@ -443,7 +443,7 @@
dist = 0;
} else {
UString ustring = value.toString(exec);
- ret = QVariant(QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size()).toLatin1());
+ ret = QVariant(QString((const QChar*)ustring.rep()->data(), ustring.size()).toLatin1());
if (type == String)
dist = 5;
else
@@ -485,7 +485,7 @@
}
} else if (type == String) {
UString ustring = value.toString(exec);
- QString qstring = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+ QString qstring = QString((const QChar*)ustring.rep()->data(), ustring.size());
if (hint == QMetaType::QDateTime) {
QDateTime dt = QDateTime::fromString(qstring, Qt::ISODate);
@@ -534,7 +534,7 @@
*/
// Attempt to convert.. a bit risky
UString ustring = value.toString(exec);
- QString qstring = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+ QString qstring = QString((const QChar*)ustring.rep()->data(), ustring.size());
// this is of the form '/xxxxxx/i'
int firstSlash = qstring.indexOf(QLatin1Char('/'));
@@ -554,7 +554,7 @@
}
} else if (type == String) {
UString ustring = value.toString(exec);
- QString qstring = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+ QString qstring = QString((const QChar*)ustring.rep()->data(), ustring.size());
QRegExp re(qstring);
if (re.isValid()) {
--- a/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -216,7 +216,6 @@
#include "JSWebKitCSSTransformValue.h"
#include "JSWebKitPoint.h"
#include "JSWebKitTransitionEvent.h"
-#include "JSWebSocket.h"
#include "JSWheelEvent.h"
#include "JSWorker.h"
#include "JSXMLHttpRequest.h"
@@ -247,7 +246,7 @@
/* Hash table */
-static const HashTableValue JSDOMWindowTableValues[297] =
+static const HashTableValue JSDOMWindowTableValues[296] =
{
{ "screen", DontDelete|ReadOnly, (intptr_t)jsDOMWindowScreen, (intptr_t)0 },
{ "history", DontDelete|ReadOnly, (intptr_t)jsDOMWindowHistory, (intptr_t)0 },
@@ -540,7 +539,6 @@
{ "MessageChannel", DontDelete, (intptr_t)jsDOMWindowMessageChannelConstructor, (intptr_t)setJSDOMWindowMessageChannelConstructor },
{ "Worker", DontDelete, (intptr_t)jsDOMWindowWorkerConstructor, (intptr_t)setJSDOMWindowWorkerConstructor },
{ "SharedWorker", DontDelete, (intptr_t)jsDOMWindowSharedWorkerConstructor, (intptr_t)setJSDOMWindowSharedWorkerConstructor },
- { "WebSocket", DontDelete, (intptr_t)jsDOMWindowWebSocketConstructor, (intptr_t)setJSDOMWindowWebSocketConstructor },
{ "Plugin", DontDelete, (intptr_t)jsDOMWindowPluginConstructor, (intptr_t)setJSDOMWindowPluginConstructor },
{ "PluginArray", DontDelete, (intptr_t)jsDOMWindowPluginArrayConstructor, (intptr_t)setJSDOMWindowPluginArrayConstructor },
{ "MimeType", DontDelete, (intptr_t)jsDOMWindowMimeTypeConstructor, (intptr_t)setJSDOMWindowMimeTypeConstructor },
@@ -588,7 +586,7 @@
#if ENABLE(PERFECT_HASH_SIZE)
{ 65535, JSDOMWindowTableValues, 0 };
#else
- { 1068, 1023, JSDOMWindowTableValues, 0 };
+ { 1067, 1023, JSDOMWindowTableValues, 0 };
#endif
/* Hash table for prototype */
@@ -3275,14 +3273,6 @@
return castedThis->sharedWorker(exec);
}
-JSValue jsDOMWindowWebSocketConstructor(ExecState* exec, const Identifier&, const PropertySlot& slot)
-{
- JSDOMWindow* castedThis = static_cast<JSDOMWindow*>(asObject(slot.slotBase()));
- if (!castedThis->allowsAccessFrom(exec))
- return jsUndefined();
- return castedThis->webSocket(exec);
-}
-
JSValue jsDOMWindowPluginConstructor(ExecState* exec, const Identifier&, const PropertySlot& slot)
{
JSDOMWindow* castedThis = static_cast<JSDOMWindow*>(asObject(slot.slotBase()));
@@ -5678,14 +5668,6 @@
static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "SharedWorker"), value);
}
-void setJSDOMWindowWebSocketConstructor(ExecState* exec, JSObject* thisObject, JSValue value)
-{
- if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec))
- return;
- // Shadowing a built-in constructor
- static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "WebSocket"), value);
-}
-
void setJSDOMWindowPluginConstructor(ExecState* exec, JSObject* thisObject, JSValue value)
{
if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec))
--- a/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.h Fri Mar 12 15:46:37 2010 +0200
@@ -82,7 +82,6 @@
JSC::JSValue messageChannel(JSC::ExecState*) const;
JSC::JSValue worker(JSC::ExecState*) const;
JSC::JSValue sharedWorker(JSC::ExecState*) const;
- JSC::JSValue webSocket(JSC::ExecState*) const;
JSC::JSValue audio(JSC::ExecState*) const;
// Custom functions
@@ -679,8 +678,6 @@
void setJSDOMWindowWorkerConstructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
JSC::JSValue jsDOMWindowSharedWorkerConstructor(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
void setJSDOMWindowSharedWorkerConstructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
-JSC::JSValue jsDOMWindowWebSocketConstructor(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
-void setJSDOMWindowWebSocketConstructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
JSC::JSValue jsDOMWindowPluginConstructor(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
void setJSDOMWindowPluginConstructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
JSC::JSValue jsDOMWindowPluginArrayConstructor(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
--- a/src/3rdparty/webkit/WebCore/platform/PopupMenu.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/PopupMenu.h Fri Mar 12 15:46:37 2010 +0200
@@ -44,6 +44,9 @@
namespace WebCore {
class QWebPopup;
}
+QT_BEGIN_NAMESPACE
+class QGraphicsProxyWidget;
+QT_END_NAMESPACE
#elif PLATFORM(GTK)
typedef struct _GtkMenu GtkMenu;
typedef struct _GtkMenuItem GtkMenuItem;
@@ -147,6 +150,7 @@
void clear();
void populate(const IntRect&);
QWebPopup* m_popup;
+ QGraphicsProxyWidget* m_proxy;
#elif PLATFORM(WIN)
// ScrollBarClient
virtual void valueChanged(Scrollbar*);
--- a/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -507,7 +507,7 @@
hostWindow()->repaint(panScrollIconDirtyRect, true);
}
- if (canBlitOnScroll() && !rootPreventsBlitting()) { // The main frame can just blit the WebView window
+ if (canBlitOnScroll()) { // The main frame can just blit the WebView window
// FIXME: Find a way to blit subframes without blitting overlapping content
hostWindow()->scroll(-scrollDelta, scrollViewRect, clipRect);
} else {
@@ -597,14 +597,6 @@
if (m_scrollbarsAvoidingResizer && parent())
parent()->adjustScrollbarsAvoidingResizerCount(-m_scrollbarsAvoidingResizer);
-#if PLATFORM(QT)
- if (m_widgetsPreventingBlitting && parent())
- parent()->adjustWidgetsPreventingBlittingCount(-m_widgetsPreventingBlitting);
-
- if (m_widgetsPreventingBlitting && parentView)
- parentView->adjustWidgetsPreventingBlittingCount(m_widgetsPreventingBlitting);
-#endif
-
Widget::setParent(parentView);
if (m_scrollbarsAvoidingResizer && parent())
--- a/src/3rdparty/webkit/WebCore/platform/ScrollView.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/ScrollView.h Fri Mar 12 15:46:37 2010 +0200
@@ -305,16 +305,6 @@
NSScrollView<WebCoreFrameScrollView>* scrollView() const;
#endif
-#if PLATFORM(QT)
-public:
- void adjustWidgetsPreventingBlittingCount(int delta);
-private:
- bool rootPreventsBlitting() const { return root()->m_widgetsPreventingBlitting > 0; }
- unsigned m_widgetsPreventingBlitting;
-#else
- bool rootPreventsBlitting() const { return false; }
-#endif
-
#if PLATFORM(GTK)
public:
void setGtkAdjustments(GtkAdjustment* hadj, GtkAdjustment* vadj);
--- a/src/3rdparty/webkit/WebCore/platform/qt/PopupMenuQt.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/qt/PopupMenuQt.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1,6 +1,7 @@
/*
* This file is part of the popup menu implementation for <select> elements in WebCore.
*
+ * Copyright (C) 2009 Girish Ramakrishnan <girish@forwardbias.in>
* Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
* Copyright (C) 2006 Apple Computer, Inc.
* Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com
@@ -35,6 +36,10 @@
#include <QAction>
#include <QDebug>
+#include <QGraphicsProxyWidget>
+#include <QGraphicsScene>
+#include <QGraphicsView>
+#include <QGraphicsWebView>
#include <QListWidget>
#include <QListWidgetItem>
#include <QMenu>
@@ -46,13 +51,17 @@
PopupMenu::PopupMenu(PopupMenuClient* client)
: m_popupClient(client)
+ , m_proxy(0)
{
m_popup = new QWebPopup(client);
}
PopupMenu::~PopupMenu()
{
- delete m_popup;
+ // If we create a proxy, then the deletion of the proxy and the
+ // combo will be done by the proxy's parent (QGraphicsWebView)
+ if (!m_proxy)
+ delete m_popup;
}
void PopupMenu::clear()
@@ -92,8 +101,18 @@
rect.moveTopLeft(v->contentsToWindow(r.topLeft()));
rect.setHeight(m_popup->sizeHint().height());
- m_popup->setParent(client->ownerWidget());
- m_popup->setGeometry(rect);
+ if (QGraphicsView* view = qobject_cast<QGraphicsView*>(client->ownerWidget())) {
+ if (!m_proxy) {
+ m_proxy = new QGraphicsProxyWidget(qobject_cast<QGraphicsWebView*>(client->pluginParent()));
+ m_proxy->setWidget(m_popup);
+ } else
+ m_proxy->setVisible(true);
+ m_proxy->setGeometry(rect);
+ } else {
+ m_popup->setParent(client->ownerWidget());
+ m_popup->setGeometry(rect);
+ }
+
m_popup->setCurrentIndex(index);
m_popup->exec();
}
--- a/src/3rdparty/webkit/WebCore/platform/qt/QWebPopup.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/qt/QWebPopup.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -26,6 +26,7 @@
#include <QApplication>
#include <QInputContext>
#include <QMouseEvent>
+#include <QGraphicsProxyWidget>
namespace WebCore {
@@ -35,7 +36,9 @@
{
Q_ASSERT(m_client);
+#if !defined(Q_WS_S60) && !defined(Q_WS_MAEMO_5)
setFont(m_client->menuStyle().font().font());
+#endif
connect(this, SIGNAL(activated(int)),
SLOT(activeChanged(int)), Qt::QueuedConnection);
}
@@ -43,9 +46,16 @@
void QWebPopup::exec()
{
+ // QCursor::pos() is not a great idea for a touch screen, but we don't need the coordinates
+ // as comboboxes with Qt on Maemo 5 come up in their full width on the screen.
+ // On the other platforms it's okay to use QCursor::pos().
+#if defined(Q_WS_MAEMO_5)
+ showPopup();
+#else
QMouseEvent event(QEvent::MouseButtonPress, QCursor::pos(), Qt::LeftButton,
Qt::LeftButton, Qt::NoModifier);
QCoreApplication::sendEvent(this, &event);
+#endif
}
void QWebPopup::showPopup()
@@ -67,6 +77,10 @@
}
QComboBox::hidePopup();
+
+ if (QGraphicsProxyWidget* proxy = graphicsProxyWidget())
+ proxy->setVisible(false);
+
if (!m_popupVisible)
return;
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -125,7 +125,6 @@
RenderThemeQt::RenderThemeQt(Page* page)
: RenderTheme()
, m_page(page)
- , m_fallbackStyle(0)
{
QPushButton button;
button.setAttribute(Qt::WA_MacSmallSize);
@@ -135,6 +134,8 @@
#ifdef Q_WS_MAC
m_buttonFontPixelSize = fontInfo.pixelSize();
#endif
+
+ m_fallbackStyle = QStyleFactory::create(QLatin1String("windows"));
}
RenderThemeQt::~RenderThemeQt()
@@ -143,19 +144,17 @@
}
// for some widget painting, we need to fallback to Windows style
-QStyle* RenderThemeQt::fallbackStyle()
+QStyle* RenderThemeQt::fallbackStyle() const
{
- if (!m_fallbackStyle)
- m_fallbackStyle = QStyleFactory::create(QLatin1String("windows"));
-
- if (!m_fallbackStyle)
- m_fallbackStyle = QApplication::style();
-
- return m_fallbackStyle;
+ return (m_fallbackStyle) ? m_fallbackStyle : QApplication::style();
}
QStyle* RenderThemeQt::qStyle() const
{
+#ifdef Q_WS_MAEMO_5
+ return fallbackStyle();
+#endif
+
if (m_page) {
ChromeClientQt* client = static_cast<ChromeClientQt*>(m_page->chrome()->client());
@@ -758,6 +757,10 @@
if (result == RadioPart || result == CheckboxPart)
option.state |= (isChecked(o) ? QStyle::State_On : QStyle::State_Off);
+#ifdef Q_WS_MAEMO_5
+ static QPalette lightGrayPalette(Qt::lightGray);
+ option.palette = lightGrayPalette;
+#else
// If the owner widget has a custom palette, use it
Page* page = o->document()->page();
if (page) {
@@ -766,6 +769,7 @@
if (pageClient)
option.palette = pageClient->palette();
}
+#endif
return result;
}
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h Fri Mar 12 15:46:37 2010 +0200
@@ -138,7 +138,7 @@
void setPopupPadding(RenderStyle*) const;
QStyle* qStyle() const;
- QStyle* fallbackStyle();
+ QStyle* fallbackStyle() const;
Page* m_page;
--- a/src/3rdparty/webkit/WebCore/platform/qt/ScrollViewQt.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/qt/ScrollViewQt.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -36,32 +36,19 @@
void ScrollView::platformInit()
{
- m_widgetsPreventingBlitting = 0;
}
void ScrollView::platformDestroy()
{
}
-// Windowed plugins are using native windows and are thus preventing
-// us from doing any kind of scrolling optimization.
-
-void ScrollView::adjustWidgetsPreventingBlittingCount(int delta)
-{
- m_widgetsPreventingBlitting += delta;
- if (parent())
- parent()->adjustWidgetsPreventingBlittingCount(delta);
-}
-
void ScrollView::platformAddChild(Widget*)
{
- adjustWidgetsPreventingBlittingCount(1);
}
void ScrollView::platformRemoveChild(Widget* child)
{
child->hide();
- adjustWidgetsPreventingBlittingCount(-1);
}
}
--- a/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -126,6 +126,10 @@
// scroll, we need to move/resize immediately.
if (!m_windowRect.intersects(frameView->frameRect()))
setNPWindowIfNeeded();
+
+ // Make sure we get repainted afterwards. This is necessary for downward
+ // scrolling to move the plugin widget properly.
+ invalidate();
}
void PluginView::setFocus()
@@ -657,7 +661,8 @@
void PluginView::invalidateRect(const IntRect& rect)
{
if (m_isWindowed) {
- platformWidget()->update(rect);
+ if (platformWidget())
+ platformWidget()->update(rect);
return;
}
--- a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -53,7 +53,7 @@
#include "runtime_root.h"
#include "QWebPageClient.h"
#include <QKeyEvent>
-#include <QPixmap>
+#include <QPixmap.h>
#include <QRegion>
#include <QVector>
#include <QWidget>
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1369,6 +1369,11 @@
// paranoia check
fromPage = qMax(1, fromPage);
toPage = qMin(printContext.pageCount(), toPage);
+ if (toPage < fromPage) {
+ // if the user entered a page range outside the actual number
+ // of printable pages, just return
+ return;
+ }
if (printer->pageOrder() == QPrinter::LastPageFirst) {
int tmp = fromPage;
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -57,6 +57,106 @@
view->setPage(0);
}
+#ifdef Q_WS_MAEMO_5
+#include "qabstractkineticscroller.h"
+
+class QWebViewKineticScroller : public QAbstractKineticScroller {
+public:
+ QWebViewKineticScroller() : QAbstractKineticScroller() {}
+ // remember the frame where the button was pressed
+ bool eventFilter(QObject* o, QEvent* ev)
+ {
+ switch (ev->type()) {
+ case QEvent::MouseButtonPress: {
+ QWebFrame* hitFrame = scrollingFrameAt(static_cast<QMouseEvent*>(ev)->pos());
+ if (hitFrame)
+ m_frame = hitFrame;
+ break;
+ }
+ default:
+ break;
+ }
+ return QAbstractKineticScroller::eventFilter(o, ev);
+ }
+
+protected:
+ QWebFrame* currentFrame() const
+ {
+ if (!m_frame.isNull())
+ return m_frame.data();
+
+ QWebView* view = static_cast<QWebView*>(widget());
+ QWebFrame* frame = view->page()->mainFrame();
+ return frame;
+ }
+
+ // Returns the innermost frame at the given position that can scroll.
+ QWebFrame* scrollingFrameAt(const QPoint& pos) const
+ {
+ QWebView* view = static_cast<QWebView*>(widget());
+ QWebFrame* mainFrame = view->page()->mainFrame();
+ QWebFrame* hitFrame = mainFrame->hitTestContent(pos).frame();
+ QSize range = hitFrame->contentsSize() - hitFrame->geometry().size();
+
+ while (hitFrame && range.width() <= 1 && range.height() <= 1)
+ hitFrame = hitFrame->parentFrame();
+
+ return hitFrame;
+ }
+
+ void attachToWidget()
+ {
+ QWebView* view = static_cast<QWebView*>(widget());
+ QWebFrame* mainFrame = view->page()->mainFrame();
+ m_oldHorizontalScrollBarPolicy = mainFrame->scrollBarPolicy(Qt::Horizontal);
+ m_oldVerticalScrollBarPolicy = mainFrame->scrollBarPolicy(Qt::Vertical);
+ mainFrame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff);
+ mainFrame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);
+ view->installEventFilter(this);
+ }
+
+ void removeFromWidget()
+ {
+ QWebView* view = static_cast<QWebView*>(widget());
+ view->removeEventFilter(this);
+ QWebFrame* mainFrame = view->page()->mainFrame();
+ mainFrame->setScrollBarPolicy(Qt::Vertical, m_oldVerticalScrollBarPolicy);
+ mainFrame->setScrollBarPolicy(Qt::Horizontal, m_oldHorizontalScrollBarPolicy);
+ }
+
+ QRect positionRange() const
+ {
+ QRect r;
+ QWebFrame* frame = currentFrame();
+ r.setSize(frame->contentsSize() - frame->geometry().size());
+ return r;
+ }
+
+ QPoint position() const
+ {
+ QWebFrame* frame = currentFrame();
+ return frame->scrollPosition();
+ }
+
+ QSize viewportSize() const
+ {
+ return static_cast<QWebView*>(widget())->page()->viewportSize();
+ }
+
+ void setPosition(const QPoint& point, const QPoint& /* overShootDelta */)
+ {
+ QWebFrame* frame = currentFrame();
+ frame->setScrollPosition(point);
+ }
+
+ QPointer<QWebFrame> m_frame;
+ Qt::ScrollBarPolicy m_oldVerticalScrollBarPolicy;
+ Qt::ScrollBarPolicy m_oldHorizontalScrollBarPolicy;
+};
+
+#endif // Q_WS_MAEMO_5
+
+
/*!
\class QWebView
\since 4.4
@@ -153,6 +253,10 @@
setAttribute(Qt::WA_InputMethodEnabled);
#endif
+#if defined(Q_WS_MAEMO_5)
+ QAbstractKineticScroller* scroller = new QWebViewKineticScroller();
+ scroller->setWidget(this);
+#endif
setAcceptDrops(true);
setMouseTracking(true);
--- a/src/3rdparty/webkit/WebKit/qt/ChangeLog Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog Fri Mar 12 15:46:37 2010 +0200
@@ -1,3 +1,107 @@
+2010-01-28 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ Do not set the combobox font on Maemo5 and S60; use the
+ default instead.
+
+ * WebCoreSupport/QtFallbackWebPopup.cpp:
+ (WebCore::QtFallbackWebPopup::populate):
+
+2010-01-28 Andreas Kling <andreas.kling@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Support kinetic scrolling on Maemo 5
+
+ https://bugs.webkit.org/show_bug.cgi?id=34267
+
+ Patch by Ralf Engels <ralf.engels@nokia.com> and
+ Robert Griebl <rgriebl@trolltech.com>
+
+ * Api/qwebview.cpp:
+ (QWebViewKineticScroller::QWebViewKineticScroller):
+ (QWebViewKineticScroller::eventFilter):
+ (QWebViewKineticScroller::currentFrame):
+ (QWebViewKineticScroller::scrollingFrameAt):
+ (QWebViewKineticScroller::attachToWidget):
+ (QWebViewKineticScroller::removeFromWidget):
+ (QWebViewKineticScroller::positionRange):
+ (QWebViewKineticScroller::position):
+ (QWebViewKineticScroller::viewportSize):
+ (QWebViewKineticScroller::setPosition):
+ (QWebView::QWebView):
+
+2010-01-29 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ Reviewed by Simon Hausmann
+
+ Disable auto-uppercase and predictive text on Maemo5, just like the
+ build-in MicroB Browser.
+
+ * WebCoreSupport/EditorClientQt.cpp:
+ (WebCore::EditorClientQt::setInputMethodState):
+
+2010-01-28 Trond Kjernåsen <trond@trolltech.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Fix for endless print loop when printing web pages
+
+ * Api/qwebframe.cpp:
+ (QWebFrame::print):
+
+2010-01-26 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Show comboboxes on Maemo 5
+ https://bugs.webkit.org/show_bug.cgi?id=34088
+
+ Don't try to show the combobox by simulating a mouse event from QCursor::pos() to
+ get the combobox position right. The position on Maemo 5 is independent from the mouse
+ and there's no QCursor::pos().
+
+ * WebCoreSupport/QtFallbackWebPopup.cpp:
+ (WebCore::QtFallbackWebPopup::show):
+
+2010-01-26 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] JavaScript prompt is currently broken
+ https://bugs.webkit.org/show_bug.cgi?id=30914
+
+ In r52152 a patch was landed to convert a null QString
+ to an empty WebCore::String in case the prompt was accepted
+ but the default implementation returned the null QString.
+
+ The patch tried to avoid assign to result twice and
+ was not checking the QString if it is null but the default
+ value. This lead to always returning an empty string on
+ successful prompts. Fix it by checking the variable 'x'
+ for isNull.
+
+ The manual test case used didn't cover the case of non
+ empty input, replace it with an automatic test case that
+ should cover all cases.
+
+ * WebCoreSupport/ChromeClientQt.cpp:
+ (WebCore::ChromeClientQt::runJavaScriptPrompt): Fix the bug.
+ * tests/qwebpage/tst_qwebpage.cpp: Add automatic test case
+ (JSPromptPage::JSPromptPage):
+ (JSPromptPage::javaScriptPrompt):
+ (tst_QWebPage::testJSPrompt):
+
+2010-01-25 Janne Koskinen <janne.p.koskinen@digia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Phone backup support for QtWebkit for Symbian devices.
+ https://bugs.webkit.org/show_bug.cgi?id=34077
+
+ * symbian/backup_registration.xml: Added.
+
2009-11-19 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
Reviewed by Kenneth Rohde Christiansen.
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -281,7 +281,7 @@
// Fix up a quirk in the QInputDialog class. If no input happened the string should be empty
// but it is null. See https://bugs.webkit.org/show_bug.cgi?id=30914.
- if (rc && result.isNull())
+ if (rc && x.isNull())
result = String("");
else
result = x;
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -615,7 +615,12 @@
}
}
webPageClient->setInputMethodHint(Qt::ImhHiddenText, isPasswordField);
-#endif
+#ifdef Q_WS_MAEMO_5
+ // Maemo 5 MicroB Browser disables auto-uppercase and predictive text, thus, so do we.
+ webPageClient->setInputMethodHint(Qt::ImhNoAutoUppercase, true);
+ webPageClient->setInputMethodHint(Qt::ImhNoPredictiveText, true);
+#endif // Q_WS_MAEMO_5
+#endif // QT_VERSION check
webPageClient->setInputMethodEnabled(active);
}
emit m_page->microFocusChanged();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/3rdparty/webkit/WebKit/qt/symbian/backup_registration.xml Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+ <system_backup/>
+ <restore requires_reboot = "no"/>
+</backup_registration>
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1,6 +1,7 @@
/*
Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
Copyright (C) 2009 Girish Ramakrishnan <girish@forwardbias.in>
+ Copyright (C) 2010 Holger Hans Peter Freyther
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -154,6 +155,7 @@
void screenshot();
void originatingObjectInNetworkRequests();
+ void testJSPrompt();
private:
QWebView* m_view;
@@ -1781,5 +1783,72 @@
#endif
}
+/**
+ * Test fixups for https://bugs.webkit.org/show_bug.cgi?id=30914
+ *
+ * From JS we test the following conditions.
+ *
+ * OK + QString() => SUCCESS, empty string (but not null)
+ * OK + "text" => SUCCESS, "text"
+ * CANCEL + QString() => CANCEL, null string
+ * CANCEL + "text" => CANCEL, null string
+ */
+class JSPromptPage : public QWebPage {
+ Q_OBJECT
+public:
+ JSPromptPage()
+ {}
+
+ bool javaScriptPrompt(QWebFrame* frame, const QString& msg, const QString& defaultValue, QString* result)
+ {
+ if (msg == QLatin1String("test1")) {
+ *result = QString();
+ return true;
+ } else if (msg == QLatin1String("test2")) {
+ *result = QLatin1String("text");
+ return true;
+ } else if (msg == QLatin1String("test3")) {
+ *result = QString();
+ return false;
+ } else if (msg == QLatin1String("test4")) {
+ *result = QLatin1String("text");
+ return false;
+ }
+
+ qFatal("Unknown msg.");
+ return QWebPage::javaScriptPrompt(frame, msg, defaultValue, result);
+ }
+};
+
+void tst_QWebPage::testJSPrompt()
+{
+ JSPromptPage page;
+ bool res;
+
+ // OK + QString()
+ res = page.mainFrame()->evaluateJavaScript(
+ "var retval = prompt('test1');"
+ "retval=='' && retval.length == 0;").toBool();
+ QVERIFY(res);
+
+ // OK + "text"
+ res = page.mainFrame()->evaluateJavaScript(
+ "var retval = prompt('test2');"
+ "retval=='text' && retval.length == 4;").toBool();
+ QVERIFY(res);
+
+ // Cancel + QString()
+ res = page.mainFrame()->evaluateJavaScript(
+ "var retval = prompt('test3');"
+ "retval===null;").toBool();
+ QVERIFY(res);
+
+ // Cancel + "text"
+ res = page.mainFrame()->evaluateJavaScript(
+ "var retval = prompt('test4');"
+ "retval===null;").toBool();
+ QVERIFY(res);
+}
+
QTEST_MAIN(tst_QWebPage)
#include "tst_qwebpage.moc"
--- a/src/corelib/animation/qabstractanimation.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/animation/qabstractanimation.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -299,8 +299,6 @@
return;
if (QAbstractAnimationPrivate::get(animation)->isPause) {
- if (animation->duration() == -1)
- qDebug() << "toto";
runningPauseAnimations << animation;
} else
runningLeafAnimations++;
--- a/src/corelib/codecs/qutfcodec.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/codecs/qutfcodec.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -326,11 +326,11 @@
ch.setCell(*chars++);
}
if (!headerdone) {
+ headerdone = true;
if (endian == DetectEndianness) {
- if (ch == QChar::ByteOrderSwapped && endian != BigEndianness) {
+ if (ch == QChar::ByteOrderSwapped) {
endian = LittleEndianness;
- } else if (ch == QChar::ByteOrderMark && endian != LittleEndianness) {
- // ignore BOM
+ } else if (ch == QChar::ByteOrderMark) {
endian = BigEndianness;
} else {
if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
@@ -344,7 +344,6 @@
} else if (ch != QChar::ByteOrderMark) {
*qch++ = ch;
}
- headerdone = true;
} else {
*qch++ = ch;
}
--- a/src/corelib/corelib.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/corelib.pro Fri Mar 12 15:46:37 2010 +0200
@@ -36,4 +36,6 @@
MMP_RULES -= PAGED
MMP_RULES *= UNPAGED
LIBS += -lflogger
+ # Timezone server
+ LIBS += -ltzclient
}
--- a/src/corelib/global/qglobal.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/global/qglobal.h Fri Mar 12 15:46:37 2010 +0200
@@ -2412,7 +2412,7 @@
#if defined(Q_OS_SYMBIAN)
-#ifdef SYMBIAN_GRAPHICS_USE_GCE
+#ifdef SYMBIAN_BUILD_GCE
//RWsPointerCursor is fixed, so don't use low performance sprites
#define Q_SYMBIAN_FIXED_POINTER_CURSORS
#define Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE
--- a/src/corelib/global/qnamespace.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/global/qnamespace.h Fri Mar 12 15:46:37 2010 +0200
@@ -497,6 +497,9 @@
WA_WState_AcceptedTouchBeginEvent = 122,
WA_TouchPadAcceptSingleTouchEvents = 123,
+ WA_MergeSoftkeys = 124,
+ WA_MergeSoftkeysRecursively = 125,
+
// Add new attributes before this line
WA_AttributeCount
};
--- a/src/corelib/global/qnamespace.qdoc Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/global/qnamespace.qdoc Fri Mar 12 15:46:37 2010 +0200
@@ -524,11 +524,11 @@
receiver are in the same thread. Same as QueuedConnection,
if the emitter and receiver are in different threads.
- \value DirectConnection
+ \value DirectConnection
The slot is invoked immediately, when the signal is
emitted.
- \value QueuedConnection
+ \value QueuedConnection
The slot is invoked when control returns to the event loop
of the receiver's thread. The slot is executed in the
receiver's thread.
@@ -1243,6 +1243,17 @@
\value WA_TouchPadAcceptSingleTouchEvents Allows touchpad single
touch events to be sent to the widget.
+ \value WA_MergeSoftkeys Allows widget to merge softkeys with parent widget,
+ i.e. widget can set only one softkeys and request softkey implementation
+ to take rest of the softkeys from the parent. Note parents are traversed until
+ WA_MergeSoftkeys is not set. See also Qt::WA_MergeSoftkeysRecursively
+ This attribute currently has effect only on Symbian platforms
+
+ \value WA_MergeSoftkeysRecursively Allows widget to merge softkeys recursively
+ with all parents. If this attribute is set, the widget parents are traversed until
+ window boundary (widget without parent or dialog) is found.
+ This attribute currently has effect only on Symbian platforms
+
\omitvalue WA_SetLayoutDirection
\omitvalue WA_InputMethodTransparent
\omitvalue WA_WState_CompressKeys
--- a/src/corelib/io/qdebug.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/io/qdebug.h Fri Mar 12 15:46:37 2010 +0200
@@ -83,7 +83,7 @@
if(stream->message_output) {
QT_TRY {
qt_message_output(stream->type, stream->buffer.toLocal8Bit().data());
- } QT_CATCH(std::bad_alloc) { /* We're out of memory - give up. */ }
+ } QT_CATCH(std::bad_alloc&) { /* We're out of memory - give up. */ }
}
delete stream;
}
--- a/src/corelib/io/qfsfileengine_unix.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/io/qfsfileengine_unix.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -98,7 +98,7 @@
if (!fileName.isEmpty()
&& QT_STAT(QFile::encodeName(fileName), &statBuf) == 0
&& (statBuf.st_mode & S_IFMT) == S_IFREG) {
- mode += "+";
+ mode += '+';
} else {
mode = "wb+";
}
--- a/src/corelib/io/qprocess_symbian.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/io/qprocess_symbian.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -919,34 +919,41 @@
Q_Q(QProcess);
QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished(%d)", msecs);
- TRequestStatus timerStatus = 0;
- TRequestStatus logonStatus = 0;
+ TRequestStatus timerStatus = KErrNone;
+ TRequestStatus logonStatus = KErrNone;
bool timeoutOccurred = false;
// Logon to process to observe its death
if (qt_rprocess_running(symbianProcess)) {
symbianProcess->Logon(logonStatus);
- // Create timer
- RTimer timer;
- timer.CreateLocal();
- TTimeIntervalMicroSeconds32 interval(msecs*1000);
- timer.After(timerStatus, interval);
-
- QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished() - Waiting...");
- User::WaitForRequest(logonStatus, timerStatus);
- QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished() - Wait completed");
+ if (msecs < 0) {
+ // If timeout is negative, there is no timeout
+ QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished() - Waiting (just logon)...");
+ User::WaitForRequest(logonStatus);
+ QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished() - Wait completed");
+ } else {
+ // Create timer
+ RTimer timer;
+ timer.CreateLocal();
+ TTimeIntervalMicroSeconds32 interval(msecs*1000);
+ timer.After(timerStatus, interval);
- if (timerStatus == KErrNone)
- timeoutOccurred = true;
+ QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished() - Waiting (logon + timer)...");
+ User::WaitForRequest(logonStatus, timerStatus);
+ QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished() - Wait completed");
+
+ if (timerStatus == KErrNone)
+ timeoutOccurred = true;
- timer.Cancel();
- timer.Close();
+ timer.Cancel();
+ timer.Close();
- symbianProcess->LogonCancel(logonStatus);
+ symbianProcess->LogonCancel(logonStatus);
- // Eat cancel request completion so that it won't mess up main thread scheduling later
- User::WaitForRequest(logonStatus, timerStatus);
+ // Eat cancel request completion so that it won't mess up main thread scheduling later
+ User::WaitForRequest(logonStatus, timerStatus);
+ }
} else {
QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished(), qt_rprocess_running returned false");
}
--- a/src/corelib/io/qprocess_unix.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/io/qprocess_unix.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -783,7 +783,7 @@
// did we read an error message?
if (i > 0)
- q_func()->setErrorString(QString::fromUtf16(buf, i / sizeof(QChar)));
+ q_func()->setErrorString(QString((const QChar *)buf, i / sizeof(QChar)));
return i <= 0;
}
--- a/src/corelib/io/qsettings.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/io/qsettings.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1091,30 +1091,23 @@
return int((uint(format) << 1) | uint(scope == QSettings::SystemScope));
}
-static QString getPath(QSettings::Format format, QSettings::Scope scope)
+static void initDefaultPaths(QMutexLocker *locker)
{
- Q_ASSERT((int)QSettings::NativeFormat == 0);
- Q_ASSERT((int)QSettings::IniFormat == 1);
-
+ PathHash *pathHash = pathHashFunc();
QString homePath = QDir::homePath();
QString systemPath;
- QMutexLocker locker(globalMutex());
- PathHash *pathHash = pathHashFunc();
- bool loadSystemPath = pathHash->isEmpty();
- locker.unlock();
-
- if (loadSystemPath) {
- /*
- QLibraryInfo::location() uses QSettings, so in order to
- avoid a dead-lock, we can't hold the global mutex while
- calling it.
- */
- systemPath = QLibraryInfo::location(QLibraryInfo::SettingsPath);
- systemPath += QLatin1Char('/');
- }
-
- locker.relock();
+ locker->unlock();
+
+ /*
+ QLibraryInfo::location() uses QSettings, so in order to
+ avoid a dead-lock, we can't hold the global mutex while
+ calling it.
+ */
+ systemPath = QLibraryInfo::location(QLibraryInfo::SettingsPath);
+ systemPath += QLatin1Char('/');
+
+ locker->relock();
if (pathHash->isEmpty()) {
/*
Lazy initialization of pathHash. We initialize the
@@ -1155,6 +1148,17 @@
#endif
#endif
}
+}
+
+static QString getPath(QSettings::Format format, QSettings::Scope scope)
+{
+ Q_ASSERT((int)QSettings::NativeFormat == 0);
+ Q_ASSERT((int)QSettings::IniFormat == 1);
+
+ QMutexLocker locker(globalMutex());
+ PathHash *pathHash = pathHashFunc();
+ if (pathHash->isEmpty())
+ initDefaultPaths(&locker);
QString result = pathHash->value(pathHashKey(format, scope));
if (!result.isEmpty())
@@ -3455,6 +3459,8 @@
{
QMutexLocker locker(globalMutex());
PathHash *pathHash = pathHashFunc();
+ if (pathHash->isEmpty())
+ initDefaultPaths(&locker);
pathHash->insert(pathHashKey(format, scope), path + QDir::separator());
}
--- a/src/corelib/io/qurl.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/io/qurl.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -3241,8 +3241,11 @@
while (1) {
int idx = nextDotDelimiter(domain, lastIdx);
int labelLength = idx - lastIdx;
- if (labelLength == 0)
+ if (labelLength == 0) {
+ if (idx == domain.length())
+ break;
return QString(); // two delimiters in a row -- empty label not allowed
+ }
// RFC 3490 says, about the ToASCII operation:
// 3. If the UseSTD3ASCIIRules flag is set, then perform these checks:
@@ -5932,7 +5935,7 @@
*/
bool QUrl::isDetached() const
{
- return d && d->ref == 1;
+ return !d || d->ref == 1;
}
--- a/src/corelib/kernel/qabstractitemmodel.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/kernel/qabstractitemmodel.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1006,6 +1006,9 @@
Returns the child of the model index that is stored in the given \a row and
\a column.
+ \note This function does not work for an invalid model index which is often
+ used as the root index.
+
\sa parent(), sibling()
*/
--- a/src/corelib/kernel/qcore_symbian_p.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/kernel/qcore_symbian_p.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -71,7 +71,7 @@
#ifdef QT_NO_UNICODE
return QString::fromLocal8Bit(aDescriptor.Ptr(), aDescriptor.Length());
#else
- return QString::fromUtf16(aDescriptor.Ptr(), aDescriptor.Length());
+ return QString(reinterpret_cast<const QChar *>(aDescriptor.Ptr()), aDescriptor.Length());
#endif
}
--- a/src/corelib/kernel/qcoreapplication.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/kernel/qcoreapplication.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -2219,7 +2219,8 @@
TFindFile finder(fs);
TInt err = finder.FindByDir(tempPathPtr, tempPathPtr);
while (err == KErrNone) {
- QString foundDir = QString::fromUtf16(finder.File().Ptr(), finder.File().Length());
+ QString foundDir(reinterpret_cast<const QChar *>(finder.File().Ptr()),
+ finder.File().Length());
foundDir = QDir(foundDir).canonicalPath();
if (!app_libpaths->contains(foundDir))
app_libpaths->append(foundDir);
@@ -2267,6 +2268,10 @@
\a paths. All existing paths will be deleted and the path list
will consist of the paths given in \a paths.
+ In Symbian this function is only useful for setting paths for
+ finding Qt extension plugin stubs, since the OS can only
+ load libraries from the \c{/sys/bin} directory.
+
\sa libraryPaths(), addLibraryPath(), removeLibraryPath(), QLibrary
*/
void QCoreApplication::setLibraryPaths(const QStringList &paths)
@@ -2290,6 +2295,10 @@
is \c INSTALL/plugins, where \c INSTALL is the directory where Qt was
installed.
+ In Symbian this function is only useful for adding paths for
+ finding Qt extension plugin stubs, since the OS can only
+ load libraries from the \c{/sys/bin} directory.
+
\sa removeLibraryPath(), libraryPaths(), setLibraryPaths()
*/
void QCoreApplication::addLibraryPath(const QString &path)
--- a/src/corelib/kernel/qcoreevent.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/kernel/qcoreevent.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -133,10 +133,10 @@
\value GrabKeyboard Item gains keyboard grab (QGraphicsItem only).
\value GrabMouse Item gains mouse grab (QGraphicsItem only).
\value GraphicsSceneContextMenu Context popup menu over a graphics scene (QGraphicsSceneContextMenuEvent).
- \value GraphicsSceneDragEnter The cursor enters a graphics scene during a drag and drop operation.
- \value GraphicsSceneDragLeave The cursor leaves a graphics scene during a drag and drop operation.
- \value GraphicsSceneDragMove A drag and drop operation is in progress over a scene.
- \value GraphicsSceneDrop A drag and drop operation is completed over a scene.
+ \value GraphicsSceneDragEnter The cursor enters a graphics scene during a drag and drop operation (QGraphicsSceneDragDropEvent).
+ \value GraphicsSceneDragLeave The cursor leaves a graphics scene during a drag and drop operation (QGraphicsSceneDragDropEvent).
+ \value GraphicsSceneDragMove A drag and drop operation is in progress over a scene (QGraphicsSceneDragDropEvent).
+ \value GraphicsSceneDrop A drag and drop operation is completed over a scene (QGraphicsSceneDragDropEvent).
\value GraphicsSceneHelp The user requests help for a graphics scene (QHelpEvent).
\value GraphicsSceneHoverEnter The mouse cursor enters a hover item in a graphics scene (QGraphicsSceneHoverEvent).
\value GraphicsSceneHoverLeave The mouse cursor leaves a hover item in a graphics scene (QGraphicsSceneHoverEvent).
--- a/src/corelib/kernel/qtranslator.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/kernel/qtranslator.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -633,7 +633,7 @@
end:
if (!tn)
return QString();
- QString str = QString::fromUtf16((const ushort *)tn, tn_length/2);
+ QString str = QString((const QChar *)tn, tn_length/2);
if (QSysInfo::ByteOrder == QSysInfo::LittleEndian) {
for (int i = 0; i < str.length(); ++i)
str[i] = QChar((str.at(i).unicode() >> 8) + ((str.at(i).unicode() << 8) & 0xff00));
--- a/src/corelib/plugin/qlibrary.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/plugin/qlibrary.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -539,6 +539,7 @@
\row \i AIX \i \c .a
\row \i HP-UX \i \c .sl, \c .so (HP-UXi)
\row \i Mac OS X \i \c .dylib, \c .bundle, \c .so
+ \row \i Symbian \i \c .dll
\endtable
Trailing versioning numbers on Unix are ignored.
--- a/src/corelib/thread/qthread_win.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/thread/qthread_win.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -40,7 +40,9 @@
****************************************************************************/
//#define WINVER 0x0500
+#if _WIN32_WINNT < 0x0400
#define _WIN32_WINNT 0x0400
+#endif
#include "qthread.h"
--- a/src/corelib/tools/qbytearray.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qbytearray.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -561,6 +561,7 @@
d->ref = 1;
d->alloc = d->size = len;
d->data = d->array;
+ d->array[len] = 0;
return QByteArray(d.take(), 0, 0);
--- a/src/corelib/tools/qdatetime.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qdatetime.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -75,6 +75,7 @@
#if defined(Q_OS_SYMBIAN)
#include <e32std.h>
+#include <tz.h>
#endif
QT_BEGIN_NAMESPACE
@@ -3721,23 +3722,32 @@
#elif defined(Q_OS_SYMBIAN)
// months and days are zero index based
_LIT(KUnixEpoch, "19700000:000000.000000");
- TTimeIntervalSeconds utcOffset = User::UTCOffset();
TTimeIntervalSeconds tTimeIntervalSecsSince1Jan1970UTC(secsSince1Jan1970UTC);
TTime epochTTime;
TInt err = epochTTime.Set(KUnixEpoch);
tm res;
if(err == KErrNone) {
TTime utcTTime = epochTTime + tTimeIntervalSecsSince1Jan1970UTC;
- utcTTime = utcTTime + utcOffset;
- TDateTime utcDateTime = utcTTime.DateTime();
- res.tm_sec = utcDateTime.Second();
- res.tm_min = utcDateTime.Minute();
- res.tm_hour = utcDateTime.Hour();
- res.tm_mday = utcDateTime.Day() + 1; // non-zero based index for tm struct
- res.tm_mon = utcDateTime.Month();
- res.tm_year = utcDateTime.Year() - 1900;
- res.tm_isdst = 0;
- brokenDown = &res;
+ TRAP(err,
+ RTz tz;
+ User::LeaveIfError(tz.Connect());
+ CleanupClosePushL(tz);
+ res.tm_isdst = tz.IsDaylightSavingOnL(*tz.GetTimeZoneIdL(),utcTTime);
+ User::LeaveIfError(tz.ConvertToLocalTime(utcTTime));
+ CleanupStack::PopAndDestroy(&tz));
+ if (KErrNone == err) {
+ TDateTime localDateTime = utcTTime.DateTime();
+ res.tm_sec = localDateTime.Second();
+ res.tm_min = localDateTime.Minute();
+ res.tm_hour = localDateTime.Hour();
+ res.tm_mday = localDateTime.Day() + 1; // non-zero based index for tm struct
+ res.tm_mon = localDateTime.Month();
+ res.tm_year = localDateTime.Year() - 1900;
+ // Symbian's timezone server doesn't know how to handle DST before year 1997
+ if (res.tm_year < 97)
+ res.tm_isdst = -1;
+ brokenDown = &res;
+ }
}
#elif !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
// use the reentrant version of localtime() where available
@@ -3812,23 +3822,27 @@
#elif defined(Q_OS_SYMBIAN)
// months and days are zero index based
_LIT(KUnixEpoch, "19700000:000000.000000");
- TTimeIntervalSeconds utcOffset = TTimeIntervalSeconds(0 - User::UTCOffset().Int());
TTimeIntervalSeconds tTimeIntervalSecsSince1Jan1970UTC(secsSince1Jan1970UTC);
TTime epochTTime;
TInt err = epochTTime.Set(KUnixEpoch);
tm res;
if(err == KErrNone) {
- TTime utcTTime = epochTTime + tTimeIntervalSecsSince1Jan1970UTC;
- utcTTime = utcTTime + utcOffset;
- TDateTime utcDateTime = utcTTime.DateTime();
- res.tm_sec = utcDateTime.Second();
- res.tm_min = utcDateTime.Minute();
- res.tm_hour = utcDateTime.Hour();
- res.tm_mday = utcDateTime.Day() + 1; // non-zero based index for tm struct
- res.tm_mon = utcDateTime.Month();
- res.tm_year = utcDateTime.Year() - 1900;
- res.tm_isdst = (int)isdst;
- brokenDown = &res;
+ TTime localTTime = epochTTime + tTimeIntervalSecsSince1Jan1970UTC;
+ RTz tz;
+ if (KErrNone == tz.Connect()) {
+ if (KErrNone == tz.ConvertToUniversalTime(localTTime)) {
+ TDateTime utcDateTime = localTTime.DateTime();
+ res.tm_sec = utcDateTime.Second();
+ res.tm_min = utcDateTime.Minute();
+ res.tm_hour = utcDateTime.Hour();
+ res.tm_mday = utcDateTime.Day() + 1; // non-zero based index for tm struct
+ res.tm_mon = utcDateTime.Month();
+ res.tm_year = utcDateTime.Year() - 1900;
+ res.tm_isdst = (int)isdst;
+ brokenDown = &res;
+ }
+ tz.Close();
+ }
}
#elif !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
// use the reentrant version of gmtime() where available
--- a/src/corelib/tools/qeasingcurve.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qeasingcurve.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -125,7 +125,7 @@
\value OutCubic \inlineimage qeasingcurve-outcubic.png
\br
Easing curve for a cubic (t^3) function:
- decelerating from zero velocity.
+ decelerating to zero velocity.
\value InOutCubic \inlineimage qeasingcurve-inoutcubic.png
\br
Easing curve for a cubic (t^3) function:
@@ -141,7 +141,7 @@
\value OutQuart \inlineimage qeasingcurve-outquart.png
\br
Easing curve for a cubic (t^4) function:
- decelerating from zero velocity.
+ decelerating to zero velocity.
\value InOutQuart \inlineimage qeasingcurve-inoutquart.png
\br
Easing curve for a cubic (t^4) function:
@@ -157,7 +157,7 @@
\value OutQuint \inlineimage qeasingcurve-outquint.png
\br
Easing curve for a cubic (t^5) function:
- decelerating from zero velocity.
+ decelerating to zero velocity.
\value InOutQuint \inlineimage qeasingcurve-inoutquint.png
\br
Easing curve for a cubic (t^5) function:
--- a/src/corelib/tools/qhash.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qhash.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -68,8 +68,8 @@
while (n--) {
h = (h << 4) + *p++;
- if ((g = (h & 0xf0000000)) != 0)
- h ^= g >> 23;
+ g = h & 0xf0000000;
+ h ^= g >> 23;
h &= ~g;
}
return h;
@@ -82,8 +82,8 @@
while (n--) {
h = (h << 4) + (*p++).unicode();
- if ((g = (h & 0xf0000000)) != 0)
- h ^= g >> 23;
+ g = h & 0xf0000000;
+ h ^= g >> 23;
h &= ~g;
}
return h;
--- a/src/corelib/tools/qlist.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qlist.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -208,7 +208,7 @@
int n = l.d->end - l.d->begin;
if (n) {
if (e + n > d->alloc)
- realloc(grow(e + l.d->end - l.d->begin));
+ realloc(grow(e + n));
d->end += n;
}
return d->array + e;
--- a/src/corelib/tools/qsharedpointer.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qsharedpointer.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -130,7 +130,7 @@
multiple- or virtual-inheritance (that is, in cases where two different
pointer addresses can refer to the same object). In that case, if a
pointer is cast to a different type and its value changes,
- QSharedPointer's pointer tracking mechanism mail fail to detect that the
+ QSharedPointer's pointer tracking mechanism may fail to detect that the
object being tracked is the same.
\omit
--- a/src/corelib/tools/qstring.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qstring.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -885,7 +885,7 @@
QString QString::fromWCharArray(const wchar_t *string, int size)
{
if (sizeof(wchar_t) == sizeof(QChar)) {
- return fromUtf16((ushort *)string, size);
+ return fromUtf16((const ushort *)string, size);
} else {
return fromUcs4((uint *)string, size);
}
@@ -3857,6 +3857,12 @@
If \a size is -1 (default), \a unicode must be terminated
with a 0.
+ This function checks for a Byte Order Mark (BOM). If it is missing,
+ host byte order is assumed.
+
+ This function is comparatively slow.
+ Use QString(const ushort *, int) if possible.
+
QString makes a deep copy of the Unicode data.
\sa utf16(), setUtf16()
@@ -3923,6 +3929,9 @@
If \a unicode is 0, nothing is copied, but the string is still
resized to \a size.
+ Note that unlike fromUtf16(), this function does not consider BOMs and
+ possibly differing byte ordering.
+
\sa utf16(), setUnicode()
*/
@@ -4669,6 +4678,8 @@
Returns the QString as a '\\0\'-terminated array of unsigned
shorts. The result remains valid until the string is modified.
+ The returned string is in host byte order.
+
\sa unicode()
*/
@@ -7740,7 +7751,7 @@
return QString();
if (m_size && m_position == 0 && m_size == m_string->size())
return *m_string;
- return QString::fromUtf16(reinterpret_cast<const ushort*>(m_string->unicode() + m_position), m_size);
+ return QString(m_string->unicode() + m_position, m_size);
}
--- a/src/dbus/qdbusargument.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/dbus/qdbusargument.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -535,7 +535,6 @@
/*!
\internal
- Returns the type signature of the D-Bus type this QDBusArgument
\since 4.5
Appends the variant \a v.
--- a/src/dbus/qdbusintegrator.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/dbus/qdbusintegrator.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1660,9 +1660,6 @@
}
QString busService = QLatin1String(DBUS_SERVICE_DBUS);
- WatchedServicesHash::mapped_type &bus = watchedServices[busService];
- bus.refcount = 1;
- bus.owner = getNameOwnerNoCache(busService);
connectSignal(busService, QString(), QString(), QLatin1String("NameAcquired"), QStringList(), QString(),
this, SLOT(registerService(QString)));
connectSignal(busService, QString(), QString(), QLatin1String("NameLost"), QStringList(), QString(),
@@ -2004,7 +2001,8 @@
entry.path == hook.path &&
entry.signature == hook.signature &&
entry.obj == hook.obj &&
- entry.midx == hook.midx) {
+ entry.midx == hook.midx &&
+ entry.argumentMatch == hook.argumentMatch) {
// no need to compare the parameters if it's the same slot
return true; // already there
}
@@ -2046,10 +2044,7 @@
// Do we need to watch for this name?
if (shouldWatchService(hook.service)) {
WatchedServicesHash::mapped_type &data = watchedServices[hook.service];
- if (data.refcount) {
- // already watching
- ++data.refcount;
- } else {
+ if (++data.refcount == 1) {
// we need to watch for this service changing
QString dbusServerService = QLatin1String(DBUS_SERVICE_DBUS);
connectSignal(dbusServerService, QString(), QLatin1String(DBUS_INTERFACE_DBUS),
@@ -2089,7 +2084,8 @@
entry.path == hook.path &&
entry.signature == hook.signature &&
entry.obj == hook.obj &&
- entry.midx == hook.midx) {
+ entry.midx == hook.midx &&
+ entry.argumentMatch == hook.argumentMatch) {
// no need to compare the parameters if it's the same slot
disconnectSignal(it);
return true; // it was there
@@ -2105,19 +2101,6 @@
{
const SignalHook &hook = it.value();
- WatchedServicesHash::Iterator sit = watchedServices.find(hook.service);
- if (sit != watchedServices.end()) {
- if (sit.value().refcount == 1) {
- watchedServices.erase(sit);
- QString dbusServerService = QLatin1String(DBUS_SERVICE_DBUS);
- disconnectSignal(dbusServerService, QString(), QLatin1String(DBUS_INTERFACE_DBUS),
- QLatin1String("NameOwnerChanged"), QStringList() << hook.service, QString(),
- this, SLOT(_q_serviceOwnerChanged(QString,QString,QString)));
- } else {
- --sit.value().refcount;
- }
- }
-
bool erase = false;
MatchRefCountHash::iterator i = matchRefCounts.find(hook.matchRule);
if (i == matchRefCounts.end()) {
@@ -2136,6 +2119,20 @@
if (connection && erase) {
qDBusDebug("Removing rule: %s", hook.matchRule.constData());
q_dbus_bus_remove_match(connection, hook.matchRule, NULL);
+
+ // Successfully disconnected the signal
+ // Were we watching for this name?
+ WatchedServicesHash::Iterator sit = watchedServices.find(hook.service);
+ if (sit != watchedServices.end()) {
+ if (--sit.value().refcount == 0) {
+ watchedServices.erase(sit);
+ QString dbusServerService = QLatin1String(DBUS_SERVICE_DBUS);
+ disconnectSignal(dbusServerService, QString(), QLatin1String(DBUS_INTERFACE_DBUS),
+ QLatin1String("NameOwnerChanged"), QStringList() << hook.service, QString(),
+ this, SLOT(_q_serviceOwnerChanged(QString,QString,QString)));
+ }
+ }
+
}
return signalHooks.erase(it);
--- a/src/dbus/qdbusmarshaller.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/dbus/qdbusmarshaller.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -40,6 +40,7 @@
****************************************************************************/
#include "qdbusargument_p.h"
+#include "qdbusmetatype_p.h"
#include "qdbusutil_p.h"
QT_BEGIN_NAMESPACE
@@ -167,7 +168,7 @@
QByteArray tmpSignature;
const char *signature = 0;
- if (int(id) == qMetaTypeId<QDBusArgument>()) {
+ if (int(id) == QDBusMetaTypeId::argument) {
// take the signature from the QDBusArgument object we're marshalling
tmpSignature =
qvariant_cast<QDBusArgument>(value).currentSignature().toLatin1();
@@ -353,7 +354,7 @@
}
// intercept QDBusArgument parameters here
- if (id == qMetaTypeId<QDBusArgument>()) {
+ if (id == QDBusMetaTypeId::argument) {
QDBusArgument dbusargument = qvariant_cast<QDBusArgument>(arg);
QDBusArgumentPrivate *d = QDBusArgumentPrivate::d(dbusargument);
if (!d->message)
--- a/src/gui/dialogs/qdialog.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/dialogs/qdialog.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -265,6 +265,14 @@
if (!qt_wince_is_smartphone())
setWindowFlags(windowFlags() | Qt::WindowOkButtonHint | QFlag(qt_wince_is_mobile() ? 0 : Qt::WindowCancelButtonHint));
#endif
+
+#ifdef Q_WS_S60
+ if (S60->avkonComponentsSupportTransparency) {
+ bool noSystemBackground = testAttribute(Qt::WA_NoSystemBackground);
+ setAttribute(Qt::WA_TranslucentBackground); // also sets WA_NoSystemBackground
+ setAttribute(Qt::WA_NoSystemBackground, noSystemBackground); // restore system background attribute
+ }
+#endif
}
#ifdef QT3_SUPPORT
@@ -294,6 +302,14 @@
if (!qt_wince_is_smartphone())
setWindowFlags(windowFlags() | Qt::WindowOkButtonHint | QFlag(qt_wince_is_mobile() ? 0 : Qt::WindowCancelButtonHint));
#endif
+
+#ifdef Q_WS_S60
+ if (S60->avkonComponentsSupportTransparency) {
+ bool noSystemBackground = testAttribute(Qt::WA_NoSystemBackground);
+ setAttribute(Qt::WA_TranslucentBackground); // also sets WA_NoSystemBackground
+ setAttribute(Qt::WA_NoSystemBackground, noSystemBackground); // restore system background attribute
+ }
+#endif
}
/*!
--- a/src/gui/dialogs/qfiledialog.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/dialogs/qfiledialog.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -229,11 +229,10 @@
\value ReadOnly Indicates that the model is readonly.
\value HideNameFilterDetails Indicates if the is hidden or not.
- This value is obsolete and does nothing since Qt 4.5:
\value DontUseSheet In previous versions of Qt, the static
functions would create a sheet by default if the static function
- was given a parent. This is no longer supported in Qt 4.5, The
+ was given a parent. This is no longer supported and does nothing in Qt 4.5, The
static functions will always be an application modal dialog. If
you want to use sheets, use QFileDialog::open() instead.
--- a/src/gui/dialogs/qprintdialog.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/dialogs/qprintdialog.h Fri Mar 12 15:46:37 2010 +0200
@@ -97,9 +97,9 @@
void done(int result);
#if defined (Q_OS_UNIX) && defined (QT3_SUPPORT)
- void setPrinter(QPrinter *, bool = false);
- QPrinter *printer() const;
- void addButton(QPushButton *button);
+ QT3_SUPPORT void setPrinter(QPrinter *, bool = false);
+ QT3_SUPPORT QPrinter *printer() const;
+ QT3_SUPPORT void addButton(QPushButton *button);
#endif
void setOption(PrintDialogOption option, bool on = true);
--- a/src/gui/dialogs/qprintpreviewdialog.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/dialogs/qprintpreviewdialog.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -207,6 +207,9 @@
QActionGroup *printerGroup;
QAction *printAction;
QAction *pageSetupAction;
+#if defined(Q_WS_MAC) && !defined(QT_MAC_USE_COCOA)
+ QAction *closeAction;
+#endif
QPointer<QObject> receiverToDisconnectOnClose;
QByteArray memberToDisconnectOnClose;
@@ -287,6 +290,9 @@
toolbar->addSeparator();
toolbar->addAction(pageSetupAction);
toolbar->addAction(printAction);
+#if defined(Q_WS_MAC) && !defined(QT_MAC_USE_COCOA)
+ toolbar->addAction(closeAction);
+#endif
// Cannot use the actions' triggered signal here, since it doesn't autorepeat
QToolButton *zoomInButton = static_cast<QToolButton *>(toolbar->widgetForAction(zoomInAction));
@@ -406,6 +412,10 @@
qt_setupActionIcon(pageSetupAction, QLatin1String("page-setup"));
QObject::connect(printAction, SIGNAL(triggered(bool)), q, SLOT(_q_print()));
QObject::connect(pageSetupAction, SIGNAL(triggered(bool)), q, SLOT(_q_pageSetup()));
+#if defined(Q_WS_MAC) && !defined(QT_MAC_USE_COCOA)
+ closeAction = printerGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Close"));
+ QObject::connect(closeAction, SIGNAL(triggered(bool)), q, SLOT(reject()));
+#endif
// Initial state:
fitPageAction->setChecked(true);
--- a/src/gui/effects/qgraphicseffect.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/effects/qgraphicseffect.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -383,9 +383,9 @@
{
if (m_cachedMode != QGraphicsEffect::PadToEffectiveBoundingRect
&& (reason == EffectRectChanged
- || reason == TransformChanged
- && m_cachedSystem == Qt::LogicalCoordinates))
+ || (reason == TransformChanged && m_cachedSystem == Qt::LogicalCoordinates))) {
return;
+ }
QPixmapCache::remove(m_cacheKey);
}
--- a/src/gui/graphicsview/qgraphicsitem.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicsitem.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -268,6 +268,17 @@
*/
/*!
+ \variable QGraphicsItem::Type
+
+ The type value returned by the virtual type() function in standard
+ graphics item classes in Qt. All such standard graphics item
+ classes in Qt are associated with a unique value for Type,
+ e.g. the value returned by QGraphicsPathItem::type() is 2.
+
+ \snippet doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp 18
+*/
+
+/*!
\variable QGraphicsItem::UserType
The lowest permitted type value for custom items (subclasses
@@ -276,6 +287,8 @@
and declaring a Type enum value. Example:
\snippet doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp 1
+
+ \note UserType = 65536
*/
/*!
@@ -798,8 +811,36 @@
return;
}
- foreach (QGraphicsItem *child, children)
- child->d_ptr->updateAncestorFlag(childFlag, flag, enabled, false);
+ for (int i = 0; i < children.size(); ++i)
+ children.at(i)->d_ptr->updateAncestorFlag(childFlag, flag, enabled, false);
+}
+
+void QGraphicsItemPrivate::updateAncestorFlags()
+{
+ int flags = 0;
+ if (parent) {
+ // Inherit the parent's ancestor flags.
+ QGraphicsItemPrivate *pd = parent->d_ptr.data();
+ flags = pd->ancestorFlags;
+
+ // Add in flags from the parent.
+ if (pd->filtersDescendantEvents)
+ flags |= AncestorFiltersChildEvents;
+ if (pd->handlesChildEvents)
+ flags |= AncestorHandlesChildEvents;
+ if (pd->flags & QGraphicsItem::ItemClipsChildrenToShape)
+ flags |= AncestorClipsChildren;
+ if (pd->flags & QGraphicsItem::ItemIgnoresTransformations)
+ flags |= AncestorIgnoresTransformations;
+ }
+
+ if (ancestorFlags == flags)
+ return; // No change; stop propagation.
+ ancestorFlags = flags;
+
+ // Propagate to children recursively.
+ for (int i = 0; i < children.size(); ++i)
+ children.at(i)->d_ptr->updateAncestorFlags();
}
/*!
@@ -984,25 +1025,17 @@
prepareGeometryChange) if the item is in its destructor, i.e.
inDestructor is 1.
*/
-void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent)
+void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent, const QVariant *newParentVariant,
+ const QVariant *thisPointerVariant)
{
Q_Q(QGraphicsItem);
- if (newParent == q) {
- qWarning("QGraphicsItem::setParentItem: cannot assign %p as a parent of itself", this);
- return;
- }
- if (newParent == parent)
- return;
-
- const QVariant newParentVariant(q->itemChange(QGraphicsItem::ItemParentChange,
- qVariantFromValue<QGraphicsItem *>(newParent)));
- newParent = qVariantValue<QGraphicsItem *>(newParentVariant);
if (newParent == parent)
return;
if (scene) {
// Deliver the change to the index
- scene->d_func()->index->itemChange(q, QGraphicsItem::ItemParentChange, newParentVariant);
+ if (scene->d_func()->indexMethod != QGraphicsScene::NoIndex)
+ scene->d_func()->index->itemChange(q, QGraphicsItem::ItemParentChange, newParent);
// Disable scene pos notifications for old ancestors
if (scenePosDescendants || (flags & QGraphicsItem::ItemSendsScenePositionChanges))
@@ -1020,11 +1053,11 @@
if (!inDestructor)
q_ptr->prepareGeometryChange();
- const QVariant thisPointerVariant(qVariantFromValue<QGraphicsItem *>(q));
if (parent) {
// Remove from current parent
parent->d_ptr->removeChild(q);
- parent->itemChange(QGraphicsItem::ItemChildRemovedChange, thisPointerVariant);
+ if (thisPointerVariant)
+ parent->itemChange(QGraphicsItem::ItemChildRemovedChange, *thisPointerVariant);
}
// Update toplevelitem list. If this item is being deleted, its parent
@@ -1042,7 +1075,7 @@
QGraphicsItem *p = parent;
QGraphicsItem *parentFocusScopeItem = 0;
while (p) {
- if (p->flags() & QGraphicsItem::ItemIsFocusScope) {
+ if (p->d_ptr->flags & QGraphicsItem::ItemIsFocusScope) {
// If this item's focus scope's focus scope item points
// to this item or a descendent, then clear it.
QGraphicsItem *fsi = p->d_ptr->focusScopeItem;
@@ -1055,6 +1088,10 @@
p = p->d_ptr->parent;
}
+ // Update graphics effect optimization flag
+ if (newParent && (graphicsEffect || mayHaveChildWithGraphicsEffect))
+ newParent->d_ptr->updateChildWithGraphicsEffectFlagRecursively();
+
// Update focus scope item ptr in new scope.
QGraphicsItem *newFocusScopeItem = subFocusItem ? subFocusItem : parentFocusScopeItem;
if (newFocusScopeItem && newParent) {
@@ -1063,11 +1100,11 @@
QGraphicsItem *ancestorScope = 0;
QGraphicsItem *p = subFocusItem->d_ptr->parent;
while (p) {
- if (p->flags() & QGraphicsItem::ItemIsFocusScope)
+ if (p->d_ptr->flags & QGraphicsItem::ItemIsFocusScope)
ancestorScope = p;
- if (p->isPanel())
+ if (p->d_ptr->flags & QGraphicsItem::ItemIsPanel)
break;
- p = p->parentItem();
+ p = p->d_ptr->parent;
}
if (ancestorScope)
newFocusScopeItem = ancestorScope;
@@ -1075,7 +1112,7 @@
QGraphicsItem *p = newParent;
while (p) {
- if (p->flags() & QGraphicsItem::ItemIsFocusScope) {
+ if (p->d_ptr->flags & QGraphicsItem::ItemIsFocusScope) {
p->d_ptr->focusScopeItem = newFocusScopeItem;
// Ensure the new item is no longer the subFocusItem. The
// only way to set focus on a child of a focus scope is
@@ -1089,52 +1126,45 @@
}
if ((parent = newParent)) {
- bool implicitUpdate = false;
if (parent->d_func()->scene && parent->d_func()->scene != scene) {
// Move this item to its new parent's scene
parent->d_func()->scene->addItem(q);
- implicitUpdate = true;
} else if (!parent->d_func()->scene && scene) {
// Remove this item from its former scene
scene->removeItem(q);
}
parent->d_ptr->addChild(q);
- parent->itemChange(QGraphicsItem::ItemChildAddedChange, thisPointerVariant);
+ if (thisPointerVariant)
+ parent->itemChange(QGraphicsItem::ItemChildAddedChange, *thisPointerVariant);
if (scene) {
- if (!implicitUpdate)
- scene->d_func()->markDirty(q_ptr);
-
// Re-enable scene pos notifications for new ancestors
if (scenePosDescendants || (flags & QGraphicsItem::ItemSendsScenePositionChanges))
scene->d_func()->setScenePosItemEnabled(q, true);
}
+ // Propagate dirty flags to the new parent
+ markParentDirty(/*updateBoundingRect=*/true);
+
// Inherit ancestor flags from the new parent.
- updateAncestorFlag(QGraphicsItem::GraphicsItemFlag(-2));
- updateAncestorFlag(QGraphicsItem::GraphicsItemFlag(-1));
- updateAncestorFlag(QGraphicsItem::ItemClipsChildrenToShape);
- updateAncestorFlag(QGraphicsItem::ItemIgnoresTransformations);
+ updateAncestorFlags();
// Update item visible / enabled.
- if (parent->isVisible() != visible) {
- if (!parent->isVisible() || !explicitlyHidden)
- setVisibleHelper(parent->isVisible(), /* explicit = */ false, /* update = */ !implicitUpdate);
+ if (parent->d_ptr->visible != visible) {
+ if (!parent->d_ptr->visible || !explicitlyHidden)
+ setVisibleHelper(parent->d_ptr->visible, /* explicit = */ false, /* update = */ false);
}
if (parent->isEnabled() != enabled) {
- if (!parent->isEnabled() || !explicitlyDisabled)
- setEnabledHelper(parent->isEnabled(), /* explicit = */ false, /* update = */ !implicitUpdate);
+ if (!parent->d_ptr->enabled || !explicitlyDisabled)
+ setEnabledHelper(parent->d_ptr->enabled, /* explicit = */ false, /* update = */ false);
}
// Auto-activate if visible and the parent is active.
- if (q->isVisible() && parent->isActive())
+ if (visible && parent->isActive())
q->setActive(true);
} else {
// Inherit ancestor flags from the new parent.
- updateAncestorFlag(QGraphicsItem::GraphicsItemFlag(-2));
- updateAncestorFlag(QGraphicsItem::GraphicsItemFlag(-1));
- updateAncestorFlag(QGraphicsItem::ItemClipsChildrenToShape);
- updateAncestorFlag(QGraphicsItem::ItemIgnoresTransformations);
+ updateAncestorFlags();
if (!inDestructor) {
// Update item visible / enabled.
@@ -1142,10 +1172,6 @@
setVisibleHelper(true, /* explicit = */ false);
if (!enabled && !explicitlyDisabled)
setEnabledHelper(true, /* explicit = */ false);
-
- // If the item is being deleted, the whole scene will be updated.
- if (scene)
- scene->d_func()->markDirty(q_ptr);
}
}
@@ -1161,7 +1187,8 @@
}
// Deliver post-change notification
- q->itemChange(QGraphicsItem::ItemParentHasChanged, newParentVariant);
+ if (newParentVariant)
+ q->itemChange(QGraphicsItem::ItemParentHasChanged, *newParentVariant);
if (isObject)
emit static_cast<QGraphicsObject *>(q)->parentChanged();
@@ -1350,7 +1377,7 @@
d_ptr->scene->d_func()->removeItemHelper(this);
} else {
d_ptr->resetFocusProxy();
- d_ptr->setParentItemHelper(0);
+ setParentItem(0);
}
#ifndef QT_NO_GRAPHICSEFFECT
@@ -1543,21 +1570,36 @@
}
/*!
- Sets this item's parent item to \a parent. If this item already has a
- parent, it is first removed from the previous parent. If \a parent is 0,
- this item will become a top-level item.
-
- Note that this implicitly adds this graphics item to the scene of
- the parent. You should not \l{QGraphicsScene::addItem()}{add} the
- item to the scene yourself.
-
- Calling this function on an item that is an ancestor of \a parent have undefined behaviour.
-
- \sa parentItem(), childItems()
-*/
-void QGraphicsItem::setParentItem(QGraphicsItem *parent)
-{
- d_ptr->setParentItemHelper(parent);
+ Sets this item's parent item to \a newParent. If this item already
+ has a parent, it is first removed from the previous parent. If \a
+ newParent is 0, this item will become a top-level item.
+
+ Note that this implicitly adds this graphics item to the scene of
+ the parent. You should not \l{QGraphicsScene::addItem()}{add} the
+ item to the scene yourself.
+
+ Calling this function on an item that is an ancestor of \a newParent
+ have undefined behaviour.
+
+ \sa parentItem(), childItems()
+*/
+void QGraphicsItem::setParentItem(QGraphicsItem *newParent)
+{
+ if (newParent == this) {
+ qWarning("QGraphicsItem::setParentItem: cannot assign %p as a parent of itself", this);
+ return;
+ }
+ if (newParent == d_ptr->parent)
+ return;
+
+ const QVariant newParentVariant(itemChange(QGraphicsItem::ItemParentChange,
+ qVariantFromValue<QGraphicsItem *>(newParent)));
+ newParent = qVariantValue<QGraphicsItem *>(newParentVariant);
+ if (newParent == d_ptr->parent)
+ return;
+
+ const QVariant thisPointerVariant(qVariantFromValue<QGraphicsItem *>(this));
+ d_ptr->setParentItemHelper(newParent, &newParentVariant, &thisPointerVariant);
}
/*!
@@ -1607,7 +1649,7 @@
*/
bool QGraphicsItem::isWindow() const
{
- return isWidget() && (static_cast<const QGraphicsWidget *>(this)->windowType() & Qt::Window);
+ return d_ptr->isWidget && (static_cast<const QGraphicsWidget *>(this)->windowType() & Qt::Window);
}
/*!
@@ -1644,9 +1686,9 @@
void QGraphicsItem::setFlag(GraphicsItemFlag flag, bool enabled)
{
if (enabled)
- setFlags(flags() | flag);
+ setFlags(GraphicsItemFlags(d_ptr->flags) | flag);
else
- setFlags(flags() & ~flag);
+ setFlags(GraphicsItemFlags(d_ptr->flags) & ~flag);
}
/*!
@@ -1693,8 +1735,8 @@
flags = GraphicsItemFlags(itemChange(ItemFlagsChange, quint32(flags)).toUInt());
if (quint32(d_ptr->flags) == quint32(flags))
return;
- if (d_ptr->scene)
- d_ptr->scene->d_func()->index->itemChange(this, ItemFlagsChange, quint32(flags));
+ if (d_ptr->scene && d_ptr->scene->d_func()->indexMethod != QGraphicsScene::NoIndex)
+ d_ptr->scene->d_func()->index->itemChange(this, ItemFlagsChange, &flags);
// Flags that alter the geometry of the item (or its children).
const quint32 geomChangeFlagsMask = (ItemClipsChildrenToShape | ItemClipsToShape | ItemIgnoresTransformations | ItemIsSelectable);
@@ -1703,7 +1745,7 @@
d_ptr->paintedViewBoundingRectsNeedRepaint = 1;
// Keep the old flags to compare the diff.
- GraphicsItemFlags oldFlags = this->flags();
+ GraphicsItemFlags oldFlags = GraphicsItemFlags(d_ptr->flags);
// Update flags.
d_ptr->flags = flags;
@@ -1732,7 +1774,23 @@
d_ptr->updateAncestorFlag(ItemIgnoresTransformations);
}
+ if ((flags & ItemNegativeZStacksBehindParent) != (oldFlags & ItemNegativeZStacksBehindParent)) {
+ // NB! We change the flags directly here, so we must also update d_ptr->flags.
+ // Note that this has do be done before the ItemStacksBehindParent check
+ // below; otherwise we will loose the change.
+
+ // Update stack-behind.
+ if (d_ptr->z < qreal(0.0))
+ flags |= ItemStacksBehindParent;
+ else
+ flags &= ~ItemStacksBehindParent;
+ d_ptr->flags = flags;
+ }
+
if ((flags & ItemStacksBehindParent) != (oldFlags & ItemStacksBehindParent)) {
+ // NB! This check has to come after the ItemNegativeZStacksBehindParent
+ // check above. Be careful.
+
// Ensure child item sorting is up to date when toggling this flag.
if (d_ptr->parent)
d_ptr->parent->d_ptr->needSortChildren = 1;
@@ -1746,10 +1804,6 @@
d_ptr->scene->d_func()->updateInputMethodSensitivityInViews();
}
- if ((flags & ItemNegativeZStacksBehindParent) != (oldFlags & ItemNegativeZStacksBehindParent)) {
- // Update stack-behind.
- setFlag(ItemStacksBehindParent, d_ptr->z < qreal(0.0));
- }
if ((d_ptr->panelModality != NonModal)
&& d_ptr->scene
@@ -2523,7 +2577,9 @@
// Update.
if (d_ptr->scene) {
#ifndef QT_NO_GRAPHICSEFFECT
- d_ptr->invalidateGraphicsEffectsRecursively();
+ d_ptr->invalidateParentGraphicsEffectsRecursively();
+ if (!(d_ptr->flags & ItemDoesntPropagateOpacityToChildren))
+ d_ptr->invalidateChildGraphicsEffectsRecursively(QGraphicsItemPrivate::OpacityChanged);
#endif //QT_NO_GRAPHICSEFFECT
d_ptr->scene->d_func()->markDirty(this, QRectF(),
/*invalidateChildren=*/true,
@@ -2568,6 +2624,8 @@
if (d_ptr->graphicsEffect) {
delete d_ptr->graphicsEffect;
d_ptr->graphicsEffect = 0;
+ } else if (d_ptr->parent) {
+ d_ptr->parent->d_ptr->updateChildWithGraphicsEffectFlagRecursively();
}
if (effect) {
@@ -2581,6 +2639,19 @@
}
#endif //QT_NO_GRAPHICSEFFECT
+void QGraphicsItemPrivate::updateChildWithGraphicsEffectFlagRecursively()
+{
+#ifndef QT_NO_GRAPHICSEFFECT
+ QGraphicsItemPrivate *itemPrivate = this;
+ do {
+ // parent chain already notified?
+ if (itemPrivate->mayHaveChildWithGraphicsEffect)
+ return;
+ itemPrivate->mayHaveChildWithGraphicsEffect = 1;
+ } while ((itemPrivate = itemPrivate->parent ? itemPrivate->parent->d_ptr.data() : 0));
+#endif
+}
+
/*!
\internal
\since 4.6
@@ -4264,9 +4335,9 @@
if (newZ == d_ptr->z)
return;
- if (d_ptr->scene) {
+ if (d_ptr->scene && d_ptr->scene->d_func()->indexMethod != QGraphicsScene::NoIndex) {
// Z Value has changed, we have to notify the index.
- d_ptr->scene->d_func()->index->itemChange(this, ItemZValueChange, newZVariant);
+ d_ptr->scene->d_func()->index->itemChange(this, ItemZValueChange, &newZ);
}
d_ptr->z = newZ;
@@ -5033,7 +5104,7 @@
\internal
*/
#ifndef QT_NO_GRAPHICSEFFECT
-void QGraphicsItemPrivate::invalidateGraphicsEffectsRecursively()
+void QGraphicsItemPrivate::invalidateParentGraphicsEffectsRecursively()
{
QGraphicsItemPrivate *itemPrivate = this;
do {
@@ -5045,6 +5116,24 @@
}
} while ((itemPrivate = itemPrivate->parent ? itemPrivate->parent->d_ptr.data() : 0));
}
+
+void QGraphicsItemPrivate::invalidateChildGraphicsEffectsRecursively(QGraphicsItemPrivate::InvalidateReason reason)
+{
+ if (!mayHaveChildWithGraphicsEffect)
+ return;
+
+ for (int i = 0; i < children.size(); ++i) {
+ QGraphicsItemPrivate *childPrivate = children.at(i)->d_ptr.data();
+ if (reason == OpacityChanged && (childPrivate->flags & QGraphicsItem::ItemIgnoresParentOpacity))
+ continue;
+ if (childPrivate->graphicsEffect) {
+ childPrivate->notifyInvalidated = 1;
+ static_cast<QGraphicsItemEffectSourcePrivate *>(childPrivate->graphicsEffect->d_func()->source->d_func())->invalidateCache();
+ }
+
+ childPrivate->invalidateChildGraphicsEffectsRecursively(reason);
+ }
+}
#endif //QT_NO_GRAPHICSEFFECT
/*!
@@ -5289,7 +5378,7 @@
// Make sure we notify effects about invalidated source.
#ifndef QT_NO_GRAPHICSEFFECT
- d_ptr->invalidateGraphicsEffectsRecursively();
+ d_ptr->invalidateParentGraphicsEffectsRecursively();
#endif //QT_NO_GRAPHICSEFFECT
if (CacheMode(d_ptr->cacheMode) != NoCache) {
@@ -7165,7 +7254,9 @@
QGraphicsScenePrivate *scenePrivate = d_ptr->scene->d_func();
scenePrivate->index->prepareBoundingRectChange(this);
- scenePrivate->markDirty(this, QRectF(), /*invalidateChildren=*/true);
+ scenePrivate->markDirty(this, QRectF(), /*invalidateChildren=*/true, /*force=*/false,
+ /*ignoreOpacity=*/ false, /*removingItemFromScene=*/ false,
+ /*updateBoundingRect=*/true);
// For compatibility reasons, we have to update the item's old geometry
// if someone is connected to the changed signal or the scene has no views.
@@ -7182,19 +7273,7 @@
}
}
- QGraphicsItem *parent = this;
- while ((parent = parent->d_ptr->parent)) {
- QGraphicsItemPrivate *parentp = parent->d_ptr.data();
- parentp->dirtyChildrenBoundingRect = 1;
- // ### Only do this if the parent's effect applies to the entire subtree.
- parentp->notifyBoundingRectChanged = 1;
-#ifndef QT_NO_GRAPHICSEFFECT
- if (parentp->scene && parentp->graphicsEffect) {
- parentp->notifyInvalidated = 1;
- static_cast<QGraphicsItemEffectSourcePrivate *>(parentp->graphicsEffect->d_func()->source->d_func())->invalidateCache();
- }
-#endif
- }
+ d_ptr->markParentDirty(/*updateBoundingRect=*/true);
}
/*!
--- a/src/gui/graphicsview/qgraphicsitem_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicsitem_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -153,7 +153,7 @@
dirtyChildren(0),
localCollisionHack(0),
inSetPosHelper(0),
- needSortChildren(1), // ### can be 0 by default?
+ needSortChildren(0),
allChildrenDirty(0),
fullUpdatePending(0),
flags(0),
@@ -178,6 +178,8 @@
sequentialOrdering(1),
updateDueToGraphicsEffect(0),
scenePosDescendants(0),
+ pendingPolish(0),
+ mayHaveChildWithGraphicsEffect(0),
globalStackingOrder(-1),
q_ptr(0)
{
@@ -195,8 +197,10 @@
return item->d_ptr.data();
}
+ void updateChildWithGraphicsEffectFlagRecursively();
void updateAncestorFlag(QGraphicsItem::GraphicsItemFlag childFlag,
AncestorFlag flag = NoFlag, bool enabled = false, bool root = true);
+ void updateAncestorFlags();
void setIsMemberOfGroup(bool enabled);
void remapItemPos(QEvent *event, QGraphicsItem *item);
QPointF genericMapFromScene(const QPointF &pos, const QWidget *viewport) const;
@@ -223,13 +227,18 @@
bool ignoreDirtyBit = false, bool ignoreOpacity = false) const;
int depth() const;
#ifndef QT_NO_GRAPHICSEFFECT
- void invalidateGraphicsEffectsRecursively();
+ enum InvalidateReason {
+ OpacityChanged
+ };
+ void invalidateParentGraphicsEffectsRecursively();
+ void invalidateChildGraphicsEffectsRecursively(InvalidateReason reason);
#endif //QT_NO_GRAPHICSEFFECT
void invalidateDepthRecursively();
void resolveDepth();
void addChild(QGraphicsItem *child);
void removeChild(QGraphicsItem *child);
- void setParentItemHelper(QGraphicsItem *parent);
+ void setParentItemHelper(QGraphicsItem *parent, const QVariant *newParentVariant,
+ const QVariant *thisPointerVariant);
void childrenBoundingRectHelper(QTransform *x, QRectF *rect);
void initStyleOption(QStyleOptionGraphicsItem *option, const QTransform &worldTransform,
const QRegion &exposedRegion, bool allItems = false) const;
@@ -397,6 +406,8 @@
return !visible || (childrenCombineOpacity() && isFullyTransparent());
}
+ inline void markParentDirty(bool updateBoundingRect = false);
+
void setFocusHelper(Qt::FocusReason focusReason, bool climb);
void setSubFocus(QGraphicsItem *rootItem = 0);
void clearSubFocus(QGraphicsItem *rootItem = 0);
@@ -484,6 +495,8 @@
quint32 sequentialOrdering : 1;
quint32 updateDueToGraphicsEffect : 1;
quint32 scenePosDescendants : 1;
+ quint32 pendingPolish : 1;
+ quint32 mayHaveChildWithGraphicsEffect : 1;
// Optional stacking order
int globalStackingOrder;
@@ -721,11 +734,13 @@
inline void QGraphicsItemPrivate::ensureSortedChildren()
{
if (needSortChildren) {
- qSort(children.begin(), children.end(), qt_notclosestLeaf);
needSortChildren = 0;
sequentialOrdering = 1;
+ if (children.isEmpty())
+ return;
+ qSort(children.begin(), children.end(), qt_notclosestLeaf);
for (int i = 0; i < children.size(); ++i) {
- if (children[i]->d_ptr->siblingIndex != i) {
+ if (children.at(i)->d_ptr->siblingIndex != i) {
sequentialOrdering = 0;
break;
}
@@ -741,6 +756,37 @@
return a->d_ptr->siblingIndex < b->d_ptr->siblingIndex;
}
+/*!
+ \internal
+*/
+inline void QGraphicsItemPrivate::markParentDirty(bool updateBoundingRect)
+{
+ QGraphicsItemPrivate *parentp = this;
+ while (parentp->parent) {
+ parentp = parentp->parent->d_ptr.data();
+ parentp->dirtyChildren = 1;
+
+ if (updateBoundingRect) {
+ parentp->dirtyChildrenBoundingRect = 1;
+ // ### Only do this if the parent's effect applies to the entire subtree.
+ parentp->notifyBoundingRectChanged = 1;
+ }
+#ifndef QT_NO_GRAPHICSEFFECT
+ if (parentp->graphicsEffect) {
+ if (updateBoundingRect) {
+ parentp->notifyInvalidated = 1;
+ static_cast<QGraphicsItemEffectSourcePrivate *>(parentp->graphicsEffect->d_func()
+ ->source->d_func())->invalidateCache();
+ }
+ if (parentp->graphicsEffect->isEnabled()) {
+ parentp->dirty = 1;
+ parentp->fullUpdatePending = 1;
+ }
+ }
+#endif
+ }
+}
+
QT_END_NAMESPACE
#endif // QT_NO_GRAPHICSVIEW
--- a/src/gui/graphicsview/qgraphicsscene.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicsscene.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -292,7 +292,6 @@
processDirtyItemsEmitted(false),
selectionChanging(0),
needSortTopLevelItems(true),
- unpolishedItemsModified(true),
holesInTopLevelSiblingIndex(false),
topLevelSequentialOrdering(true),
scenePosDescendantsUpdatePending(false),
@@ -429,22 +428,38 @@
*/
void QGraphicsScenePrivate::_q_polishItems()
{
- QSet<QGraphicsItem *>::Iterator it = unpolishedItems.begin();
+ if (unpolishedItems.isEmpty())
+ return;
+
const QVariant booleanTrueVariant(true);
- while (!unpolishedItems.isEmpty()) {
- QGraphicsItem *item = *it;
- it = unpolishedItems.erase(it);
- unpolishedItemsModified = false;
- if (!item->d_ptr->explicitlyHidden) {
+ QGraphicsItem *item = 0;
+ QGraphicsItemPrivate *itemd = 0;
+ const int oldUnpolishedCount = unpolishedItems.count();
+
+ for (int i = 0; i < oldUnpolishedCount; ++i) {
+ item = unpolishedItems.at(i);
+ if (!item)
+ continue;
+ itemd = item->d_ptr.data();
+ itemd->pendingPolish = false;
+ if (!itemd->explicitlyHidden) {
item->itemChange(QGraphicsItem::ItemVisibleChange, booleanTrueVariant);
item->itemChange(QGraphicsItem::ItemVisibleHasChanged, booleanTrueVariant);
}
- if (item->isWidget()) {
+ if (itemd->isWidget) {
QEvent event(QEvent::Polish);
QApplication::sendEvent((QGraphicsWidget *)item, &event);
}
- if (unpolishedItemsModified)
- it = unpolishedItems.begin();
+ }
+
+ if (unpolishedItems.count() == oldUnpolishedCount) {
+ // No new items were added to the vector.
+ unpolishedItems.clear();
+ } else {
+ // New items were appended; keep them and remove the old ones.
+ unpolishedItems.remove(0, oldUnpolishedCount);
+ unpolishedItems.squeeze();
+ QMetaObject::invokeMethod(q_ptr, "_q_polishItems", Qt::QueuedConnection);
}
}
@@ -599,7 +614,7 @@
if (parentItem->scene()) {
Q_ASSERT_X(parentItem->scene() == q, "QGraphicsScene::removeItem",
"Parent item's scene is different from this item's scene");
- item->d_ptr->setParentItemHelper(0);
+ item->setParentItem(0);
}
} else {
unregisterTopLevelItem(item);
@@ -638,8 +653,12 @@
selectedItems.remove(item);
hoverItems.removeAll(item);
cachedItemsUnderMouse.removeAll(item);
- unpolishedItems.remove(item);
- unpolishedItemsModified = true;
+ if (item->d_ptr->pendingPolish) {
+ const int unpolishedIndex = unpolishedItems.indexOf(item);
+ if (unpolishedIndex != -1)
+ unpolishedItems[unpolishedIndex] = 0;
+ item->d_ptr->pendingPolish = false;
+ }
resetDirtyItem(item);
//We remove all references of item from the sceneEventFilter arrays
@@ -1936,7 +1955,7 @@
\since 4.3
This convenience function is equivalent to calling items(QRectF(\a x, \a y, \a w, \a h), \a mode).
-
+
This function is deprecated and returns incorrect results if the scene
contains items that ignore transformations. Use the overload that takes
a QTransform instead.
@@ -2482,12 +2501,12 @@
qWarning("QGraphicsScene::addItem: cannot add null item");
return;
}
- if (item->scene() == this) {
+ if (item->d_ptr->scene == this) {
qWarning("QGraphicsScene::addItem: item has already been added to this scene");
return;
}
// Remove this item from its existing scene
- if (QGraphicsScene *oldScene = item->scene())
+ if (QGraphicsScene *oldScene = item->d_ptr->scene)
oldScene->removeItem(item);
// Notify the item that its scene is changing, and allow the item to
@@ -2496,15 +2515,20 @@
qVariantFromValue<QGraphicsScene *>(this)));
QGraphicsScene *targetScene = qVariantValue<QGraphicsScene *>(newSceneVariant);
if (targetScene != this) {
- if (targetScene && item->scene() != targetScene)
+ if (targetScene && item->d_ptr->scene != targetScene)
targetScene->addItem(item);
return;
}
+ if (d->unpolishedItems.isEmpty())
+ QMetaObject::invokeMethod(this, "_q_polishItems", Qt::QueuedConnection);
+ d->unpolishedItems.append(item);
+ item->d_ptr->pendingPolish = true;
+
// Detach this item from its parent if the parent's scene is different
// from this scene.
- if (QGraphicsItem *itemParent = item->parentItem()) {
- if (itemParent->scene() != this)
+ if (QGraphicsItem *itemParent = item->d_ptr->parent) {
+ if (itemParent->d_ptr->scene != this)
item->setParentItem(0);
}
@@ -2534,7 +2558,7 @@
d->enableMouseTrackingOnViews();
}
#ifndef QT_NO_CURSOR
- if (d->allItemsUseDefaultCursor && item->hasCursor()) {
+ if (d->allItemsUseDefaultCursor && item->d_ptr->hasCursor) {
d->allItemsUseDefaultCursor = false;
if (d->allItemsIgnoreHoverEvents) // already enabled otherwise
d->enableMouseTrackingOnViews();
@@ -2542,7 +2566,7 @@
#endif //QT_NO_CURSOR
// Enable touch events if the item accepts touch events.
- if (d->allItemsIgnoreTouchEvents && item->acceptTouchEvents()) {
+ if (d->allItemsIgnoreTouchEvents && item->d_ptr->acceptTouchEvents) {
d->allItemsIgnoreTouchEvents = false;
d->enableTouchEventsOnViews();
}
@@ -2575,17 +2599,14 @@
}
// Add all children recursively
- foreach (QGraphicsItem *child, item->children())
- addItem(child);
+ item->d_ptr->ensureSortedChildren();
+ for (int i = 0; i < item->d_ptr->children.size(); ++i)
+ addItem(item->d_ptr->children.at(i));
// Resolve font and palette.
item->d_ptr->resolveFont(d->font.resolve());
item->d_ptr->resolvePalette(d->palette.resolve());
- if (d->unpolishedItems.isEmpty())
- QMetaObject::invokeMethod(this, "_q_polishItems", Qt::QueuedConnection);
- d->unpolishedItems.insert(item);
- d->unpolishedItemsModified = true;
// Reenable selectionChanged() for individual items
--d->selectionChanging;
@@ -2619,7 +2640,7 @@
}
}
- if (item->flags() & QGraphicsItem::ItemSendsScenePositionChanges)
+ if (item->d_ptr->flags & QGraphicsItem::ItemSendsScenePositionChanges)
d->registerScenePosItem(item);
// Ensure that newly added items that have subfocus set, gain
@@ -3766,10 +3787,10 @@
bool QGraphicsScenePrivate::itemAcceptsHoverEvents_helper(const QGraphicsItem *item) const
{
- return (!item->isBlockedByModalPanel() &&
- (item->acceptHoverEvents()
- || (item->isWidget()
- && static_cast<const QGraphicsWidget *>(item)->d_func()->hasDecoration())));
+ return (item->d_ptr->acceptsHover
+ || (item->d_ptr->isWidget
+ && static_cast<const QGraphicsWidget *>(item)->d_func()->hasDecoration()))
+ && !item->isBlockedByModalPanel();
}
/*!
@@ -4811,7 +4832,8 @@
}
void QGraphicsScenePrivate::markDirty(QGraphicsItem *item, const QRectF &rect, bool invalidateChildren,
- bool force, bool ignoreOpacity, bool removingItemFromScene)
+ bool force, bool ignoreOpacity, bool removingItemFromScene,
+ bool updateBoundingRect)
{
Q_ASSERT(item);
if (updateAll)
@@ -4882,17 +4904,8 @@
if (ignoreOpacity)
item->d_ptr->ignoreOpacity = 1;
- QGraphicsItem *p = item->d_ptr->parent;
- while (p) {
- p->d_ptr->dirtyChildren = 1;
-#ifndef QT_NO_GRAPHICSEFFECT
- if (p->d_ptr->graphicsEffect && p->d_ptr->graphicsEffect->isEnabled()) {
- p->d_ptr->dirty = 1;
- p->d_ptr->fullUpdatePending = 1;
- }
-#endif //QT_NO_GRAPHICSEFFECT
- p = p->d_ptr->parent;
- }
+ if (!updateBoundingRect)
+ item->d_ptr->markParentDirty();
}
static inline bool updateHelper(QGraphicsViewPrivate *view, QGraphicsItemPrivate *item,
--- a/src/gui/graphicsview/qgraphicsscene_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicsscene_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -108,10 +108,9 @@
QPainterPath selectionArea;
int selectionChanging;
QSet<QGraphicsItem *> selectedItems;
- QSet<QGraphicsItem *> unpolishedItems;
+ QVector<QGraphicsItem *> unpolishedItems;
QList<QGraphicsItem *> topLevelItems;
bool needSortTopLevelItems;
- bool unpolishedItemsModified;
bool holesInTopLevelSiblingIndex;
bool topLevelSequentialOrdering;
@@ -223,7 +222,8 @@
QRegion *, QWidget *, qreal, const QTransform *const, bool, bool);
void markDirty(QGraphicsItem *item, const QRectF &rect = QRectF(), bool invalidateChildren = false,
- bool force = false, bool ignoreOpacity = false, bool removingItemFromScene = false);
+ bool force = false, bool ignoreOpacity = false, bool removingItemFromScene = false,
+ bool updateBoundingRect = false);
void processDirtyItemsRecursive(QGraphicsItem *item, bool dirtyAncestorContainsChildren = false,
qreal parentOpacity = qreal(1.0));
--- a/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -635,16 +635,17 @@
This method react to the \a change of the \a item and use the \a value to
update the BSP tree if necessary.
*/
-void QGraphicsSceneBspTreeIndex::itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const QVariant &value)
+void QGraphicsSceneBspTreeIndex::itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const void *const value)
{
Q_D(QGraphicsSceneBspTreeIndex);
switch (change) {
case QGraphicsItem::ItemFlagsChange: {
// Handle ItemIgnoresTransformations
+ QGraphicsItem::GraphicsItemFlags newFlags = *static_cast<const QGraphicsItem::GraphicsItemFlags *>(value);
bool ignoredTransform = item->d_ptr->flags & QGraphicsItem::ItemIgnoresTransformations;
- bool willIgnoreTransform = value.toUInt() & QGraphicsItem::ItemIgnoresTransformations;
+ bool willIgnoreTransform = newFlags & QGraphicsItem::ItemIgnoresTransformations;
bool clipsChildren = item->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape;
- bool willClipChildren = value.toUInt() & QGraphicsItem::ItemClipsChildrenToShape;
+ bool willClipChildren = newFlags & QGraphicsItem::ItemClipsChildrenToShape;
if ((ignoredTransform != willIgnoreTransform) || (clipsChildren != willClipChildren)) {
QGraphicsItem *thatItem = const_cast<QGraphicsItem *>(item);
// Remove item and its descendants from the index and append
@@ -661,7 +662,7 @@
case QGraphicsItem::ItemParentChange: {
d->invalidateSortCache();
// Handle ItemIgnoresTransformations
- QGraphicsItem *newParent = qVariantValue<QGraphicsItem *>(value);
+ const QGraphicsItem *newParent = static_cast<const QGraphicsItem *>(value);
bool ignoredTransform = item->d_ptr->itemIsUntransformable();
bool willIgnoreTransform = (item->d_ptr->flags & QGraphicsItem::ItemIgnoresTransformations)
|| (newParent && newParent->d_ptr->itemIsUntransformable());
@@ -682,7 +683,6 @@
default:
break;
}
- return QGraphicsSceneIndex::itemChange(item, change, value);
}
/*!
\reimp
--- a/src/gui/graphicsview/qgraphicsscenebsptreeindex_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicsscenebsptreeindex_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -97,7 +97,7 @@
void removeItem(QGraphicsItem *item);
void prepareBoundingRectChange(const QGraphicsItem *item);
- void itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const QVariant &value);
+ void itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const void *const value);
private :
Q_DECLARE_PRIVATE(QGraphicsSceneBspTreeIndex)
--- a/src/gui/graphicsview/qgraphicssceneindex.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicssceneindex.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -624,7 +624,7 @@
\sa QGraphicsItem::GraphicsItemChange
*/
-void QGraphicsSceneIndex::itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const QVariant &value)
+void QGraphicsSceneIndex::itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const void *const value)
{
Q_UNUSED(item);
Q_UNUSED(change);
--- a/src/gui/graphicsview/qgraphicssceneindex_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicssceneindex_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -110,7 +110,7 @@
virtual void removeItem(QGraphicsItem *item) = 0;
virtual void deleteItem(QGraphicsItem *item);
- virtual void itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange, const QVariant &value);
+ virtual void itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange, const void *const value);
virtual void prepareBoundingRectChange(const QGraphicsItem *item);
QGraphicsSceneIndex(QGraphicsSceneIndexPrivate &dd, QGraphicsScene *scene);
--- a/src/gui/gui.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/gui.pro Fri Mar 12 15:46:37 2010 +0200
@@ -59,4 +59,5 @@
symbian:TARGET.UID3=0x2001B2DD
# ro-section in gui can exceed default allocated space, so more rw-section little further
-symbian-sbsv2: QMAKE_LFLAGS.ARMCC += --rw-base 0x800000"
+symbian-sbsv2: QMAKE_LFLAGS.ARMCC += --rw-base 0x800000
+symbian: QMAKE_LFLAGS.GCCE += -Tdata 0xC00000
--- a/src/gui/image/qbmphandler.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/image/qbmphandler.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -144,7 +144,7 @@
static int calc_shift(int mask)
{
int result = 0;
- while (!(mask & 1)) {
+ while (mask && !(mask & 1)) {
result++;
mask >>= 1;
}
--- a/src/gui/inputmethod/qcoefepinputcontext_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/inputmethod/qcoefepinputcontext_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -57,6 +57,7 @@
#include "qinputcontext.h"
#include <qhash.h>
+#include <qtimer.h>
#include <private/qcore_symbian_p.h>
#include <private/qt_s60_p.h>
@@ -91,6 +92,9 @@
TCoeInputCapabilities inputCapabilities();
+protected:
+ void timerEvent(QTimerEvent *timerEvent);
+
private:
void commitCurrentString(bool triggeredBySymbian);
void updateHints(bool mustUpdateInputCapabilities);
@@ -98,6 +102,7 @@
void applyFormat(QList<QInputMethodEvent::Attribute> *attributes);
void queueInputCapabilitiesChanged();
bool needsInputPanel();
+ void commitTemporaryPreeditString();
private Q_SLOTS:
void ensureInputCapabilitiesChanged();
@@ -148,6 +153,8 @@
MFepPointerEventHandlerDuringInlineEdit *m_pointerHandler;
int m_longPress;
int m_cursorPos;
+ QBasicTimer m_tempPreeditStringTimeout;
+ bool m_hasTempPreeditString;
};
QT_END_NAMESPACE
--- a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -72,7 +72,8 @@
m_formatRetriever(0),
m_pointerHandler(0),
m_longPress(0),
- m_cursorPos(0)
+ m_cursorPos(0),
+ m_hasTempPreeditString(false)
{
m_fepState->SetObjectProvider(this);
m_fepState->SetFlags(EAknEditorFlagDefault);
@@ -199,7 +200,11 @@
if (!focusWidget())
return false;
- if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
+ switch (event->type()) {
+ case QEvent::KeyPress:
+ commitTemporaryPreeditString();
+ // fall through intended
+ case QEvent::KeyRelease:
const QKeyEvent *keyEvent = static_cast<const QKeyEvent *>(event);
switch (keyEvent->key()) {
case Qt::Key_F20:
@@ -222,6 +227,21 @@
default:
break;
}
+
+ if (keyEvent->type() == QEvent::KeyPress
+ && focusWidget()->inputMethodHints() & Qt::ImhHiddenText
+ && !keyEvent->text().isEmpty()) {
+ // Send some temporary preedit text in order to make text visible for a moment.
+ m_preeditString = keyEvent->text();
+ QList<QInputMethodEvent::Attribute> attributes;
+ QInputMethodEvent imEvent(m_preeditString, attributes);
+ QApplication::sendEvent(focusWidget(), &imEvent);
+ m_tempPreeditStringTimeout.start(1000, this);
+ m_hasTempPreeditString = true;
+ update();
+ return true;
+ }
+ break;
}
if (!needsInputPanel())
@@ -252,6 +272,23 @@
return false;
}
+void QCoeFepInputContext::timerEvent(QTimerEvent *timerEvent)
+{
+ if (timerEvent->timerId() == m_tempPreeditStringTimeout.timerId())
+ commitTemporaryPreeditString();
+}
+
+void QCoeFepInputContext::commitTemporaryPreeditString()
+{
+ if (m_tempPreeditStringTimeout.isActive())
+ m_tempPreeditStringTimeout.stop();
+
+ if (!m_hasTempPreeditString)
+ return;
+
+ commitCurrentString(false);
+}
+
void QCoeFepInputContext::mouseHandler( int x, QMouseEvent *event)
{
Q_ASSERT(focusWidget());
@@ -309,6 +346,8 @@
{
using namespace Qt;
+ commitTemporaryPreeditString();
+
bool numbersOnly = hints & ImhDigitsOnly || hints & ImhFormattedNumbersOnly
|| hints & ImhDialableCharactersOnly;
bool noOnlys = !(numbersOnly || hints & ImhUppercaseOnly
@@ -500,6 +539,8 @@
if (!w)
return;
+ commitTemporaryPreeditString();
+
m_cursorPos = w->inputMethodQuery(Qt::ImCursorPosition).toInt();
QList<QInputMethodEvent::Attribute> attributes;
@@ -599,6 +640,8 @@
if (!w)
return;
+ commitTemporaryPreeditString();
+
int pos = aCursorSelection.iAnchorPos;
int length = aCursorSelection.iCursorPos - pos;
@@ -718,6 +761,7 @@
m_preeditString.clear();
sendEvent(event);
+ m_hasTempPreeditString = false;
m_longPress = 0;
if (!triggeredBySymbian) {
--- a/src/gui/itemviews/qfileiconprovider.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/itemviews/qfileiconprovider.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -65,6 +65,7 @@
#ifndef SHGFI_ADDOVERLAYS
# define SHGFI_ADDOVERLAYS 0x000000020
+# define SHGFI_OVERLAYINDEX 0x000000040
#endif
QT_BEGIN_NAMESPACE
@@ -248,7 +249,7 @@
//Get the small icon
#ifndef Q_OS_WINCE
val = SHGetFileInfo((const wchar_t *)QDir::toNativeSeparators(fileInfo.filePath()).utf16(), 0, &info,
- sizeof(SHFILEINFO), SHGFI_ICON|SHGFI_SMALLICON|SHGFI_SYSICONINDEX|SHGFI_ADDOVERLAYS);
+ sizeof(SHFILEINFO), SHGFI_ICON|SHGFI_SMALLICON|SHGFI_SYSICONINDEX|SHGFI_ADDOVERLAYS|SHGFI_OVERLAYINDEX);
#else
val = SHGetFileInfo((const wchar_t *)QDir::toNativeSeparators(fileInfo.filePath()).utf16(), 0, &info,
sizeof(SHFILEINFO), SHGFI_SMALLICON|SHGFI_SYSICONINDEX);
@@ -287,7 +288,7 @@
//Get the big icon
#ifndef Q_OS_WINCE
val = SHGetFileInfo((const wchar_t *)QDir::toNativeSeparators(fileInfo.filePath()).utf16(), 0, &info,
- sizeof(SHFILEINFO), SHGFI_ICON|SHGFI_LARGEICON|SHGFI_SYSICONINDEX|SHGFI_ADDOVERLAYS);
+ sizeof(SHFILEINFO), SHGFI_ICON|SHGFI_LARGEICON|SHGFI_SYSICONINDEX|SHGFI_ADDOVERLAYS|SHGFI_OVERLAYINDEX);
#else
val = SHGetFileInfo((const wchar_t *)QDir::toNativeSeparators(fileInfo.filePath()).utf16(), 0, &info,
sizeof(SHFILEINFO), SHGFI_LARGEICON|SHGFI_SYSICONINDEX);
--- a/src/gui/itemviews/qitemdelegate.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/itemviews/qitemdelegate.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1033,7 +1033,7 @@
i >>= 4;
}
- return QString::fromUtf16(ptr, int(&arr[sizeof(arr) / sizeof(ushort)] - ptr));
+ return QString((const QChar *)ptr, int(&arr[sizeof(arr) / sizeof(ushort)] - ptr));
}
/*!
--- a/src/gui/itemviews/qtableview.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/itemviews/qtableview.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -114,7 +114,9 @@
}
} else if (old_height > span->height()) {
//remove the span from all the subspans lists that intersect the columns not covered anymore
- Index::iterator it_y = index.lowerBound(qMin(-span->bottom(), 0));
+ Index::iterator it_y = index.lowerBound(-span->bottom());
+ if (it_y == index.end())
+ it_y = index.find(-span->top()); // This is the only span remaining and we are deleting it.
Q_ASSERT(it_y != index.end()); //it_y must exist since the span is in the list
while (-it_y.key() <= span->top() + old_height -1) {
if (-it_y.key() > span->bottom()) {
--- a/src/gui/kernel/kernel.pri Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/kernel.pri Fri Mar 12 15:46:37 2010 +0200
@@ -7,7 +7,7 @@
KERNEL_P= kernel
HEADERS += \
kernel/qaction.h \
- kernel/qaction_p.h \
+ kernel/qaction_p.h \
kernel/qactiongroup.h \
kernel/qapplication.h \
kernel/qapplication_p.h \
@@ -37,8 +37,8 @@
kernel/qstackedlayout.h \
kernel/qtooltip.h \
kernel/qwhatsthis.h \
- kernel/qwidget.h \
- kernel/qwidget_p.h \
+ kernel/qwidget.h \
+ kernel/qwidget_p.h \
kernel/qwidgetaction.h \
kernel/qwidgetaction_p.h \
kernel/qwindowdefs.h \
@@ -49,6 +49,7 @@
kernel/qgesturerecognizer.h \
kernel/qgesturemanager_p.h \
kernel/qsoftkeymanager_p.h \
+ kernel/qsoftkeymanager_common_p.h \
kernel/qguiplatformplugin_p.h
SOURCES += \
@@ -84,14 +85,14 @@
kernel/qgesturerecognizer.cpp \
kernel/qgesturemanager.cpp \
kernel/qsoftkeymanager.cpp \
- kernel/qdesktopwidget.cpp \
+ kernel/qdesktopwidget.cpp \
kernel/qguiplatformplugin.cpp
win32 {
DEFINES += QT_NO_DIRECTDRAW
- HEADERS += \
- kernel/qwinnativepangesturerecognizer_win_p.h
+ HEADERS += \
+ kernel/qwinnativepangesturerecognizer_win_p.h
SOURCES += \
kernel/qapplication_win.cpp \
@@ -103,30 +104,34 @@
kernel/qsound_win.cpp \
kernel/qwidget_win.cpp \
kernel/qole_win.cpp \
- kernel/qkeymapper_win.cpp \
- kernel/qwinnativepangesturerecognizer_win.cpp
+ kernel/qkeymapper_win.cpp \
+ kernel/qwinnativepangesturerecognizer_win.cpp
- !contains(DEFINES, QT_NO_DIRECTDRAW):LIBS += ddraw.lib
+ !contains(DEFINES, QT_NO_DIRECTDRAW):LIBS += ddraw.lib
}
symbian {
- SOURCES += \
- kernel/qapplication_s60.cpp \
- kernel/qeventdispatcher_s60.cpp \
- kernel/qwidget_s60.cpp \
- kernel/qcursor_s60.cpp \
- kernel/qdesktopwidget_s60.cpp \
- kernel/qkeymapper_s60.cpp\
- kernel/qclipboard_s60.cpp\
- kernel/qdnd_s60.cpp \
- kernel/qsound_s60.cpp
+ SOURCES += \
+ kernel/qapplication_s60.cpp \
+ kernel/qeventdispatcher_s60.cpp \
+ kernel/qwidget_s60.cpp \
+ kernel/qcursor_s60.cpp \
+ kernel/qdesktopwidget_s60.cpp \
+ kernel/qkeymapper_s60.cpp\
+ kernel/qclipboard_s60.cpp\
+ kernel/qdnd_s60.cpp \
+ kernel/qsound_s60.cpp \
+ kernel/qsoftkeymanager_s60.cpp
- HEADERS += \
- kernel/qt_s60_p.h \
- kernel/qeventdispatcher_s60_p.h
- LIBS += -lbafl -lestor
+ HEADERS += \
+ kernel/qt_s60_p.h \
+ kernel/qeventdispatcher_s60_p.h \
+ kernel/qsoftkeymanager_s60_p.h
- INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+ LIBS += -lbafl -lestor
+
+ INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+ INCLUDEPATH += ../3rdparty/s60
}
--- a/src/gui/kernel/qaction.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qaction.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -715,6 +715,10 @@
it is displayed to the left of the menu text. There is no default
icon.
+ On Symbian the icons which are passed to softkeys, i.e. to actions with
+ softkey role, need to have pixmap alpha channel correctly set otherwise
+ drawing artifacts will appear when softkey is pressed down.
+
If a null icon (QIcon::isNull() is passed into this function,
the icon of the action is cleared.
*/
--- a/src/gui/kernel/qapplication.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qapplication.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -121,8 +121,10 @@
static void initResources()
{
-#ifdef Q_WS_WINCE
+#if defined(Q_WS_WINCE)
Q_INIT_RESOURCE(qstyle_wince);
+#elif defined(Q_OS_SYMBIAN)
+ Q_INIT_RESOURCE(qstyle_s60);
#else
Q_INIT_RESOURCE(qstyle);
#endif
--- a/src/gui/kernel/qapplication_mac.mm Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qapplication_mac.mm Fri Mar 12 15:46:37 2010 +0200
@@ -227,8 +227,29 @@
static void qt_mac_read_fontsmoothing_settings()
{
- NSInteger appleFontSmoothing = [[NSUserDefaults standardUserDefaults] integerForKey:@"AppleFontSmoothing"];
- qt_applefontsmoothing_enabled = (appleFontSmoothing > 0);
+ qt_applefontsmoothing_enabled = true;
+ int w = 10, h = 10;
+ QImage image(w, h, QImage::Format_RGB32);
+ image.fill(0xffffffff);
+ QPainter p(&image);
+ p.drawText(0, h, "X\\");
+ p.end();
+
+ const int *bits = (const int *) ((const QImage &) image).bits();
+ int bpl = image.bytesPerLine() / 4;
+ for (int y=0; y<w; ++y) {
+ for (int x=0; x<h; ++x) {
+ int r = qRed(bits[x]);
+ int g = qGreen(bits[x]);
+ int b = qBlue(bits[x]);
+ if (r != g || r != b) {
+ qt_applefontsmoothing_enabled = true;
+ return;
+ }
+ }
+ bits += bpl;
+ }
+ qt_applefontsmoothing_enabled = false;
}
Q_GUI_EXPORT bool qt_mac_execute_apple_script(const char *script, long script_len, AEDesc *ret) {
@@ -772,11 +793,11 @@
qt_post_window_change_event(glWidget);
it->lastUpdateWidget = widget;
} else if (it->lastUpdateWidget == widget) {
- // Update the gl wigets that the widget intersected the last time around,
- // and that we are not intersecting now. This prevents paint errors when the
+ // Update the gl wigets that the widget intersected the last time around,
+ // and that we are not intersecting now. This prevents paint errors when the
// intersecting widget leaves a gl widget.
qt_post_window_change_event(glWidget);
- it->lastUpdateWidget = 0;
+ it->lastUpdateWidget = 0;
}
}
#else
@@ -808,8 +829,8 @@
// Post a kEventQtRequestWindowChange event. This event is semi-public,
// don't remove this line!
qt_event_request_window_change();
-
- // Post update request on gl widgets unconditionally.
+
+ // Post update request on gl widgets unconditionally.
if (qt_widget_private(widget)->isGLWidget == true) {
qt_post_window_change_event(widget);
return;
@@ -1214,8 +1235,6 @@
if (QApplication::desktopSettingsAware())
QApplicationPrivate::qt_mac_apply_settings();
- qt_mac_read_fontsmoothing_settings();
-
// Cocoa application delegate
#ifdef QT_MAC_USE_COCOA
NSApplication *cocoaApp = [NSApplication sharedApplication];
@@ -1253,6 +1272,7 @@
}
priv->native_modal_dialog_active = false;
+ qt_mac_read_fontsmoothing_settings();
}
void qt_release_apple_event_handler()
@@ -1705,7 +1725,7 @@
// kEventMouseWheelMoved events if we dont eat this event
// (actually two events; one for horizontal and one for vertical).
// As a results of this, and to make sure we dont't receive duplicate events,
- // we try to detect when this happend by checking the 'compatibilityEvent'.
+ // we try to detect when this happend by checking the 'compatibilityEvent'.
SInt32 mdelt = 0;
GetEventParameter(event, kEventParamMouseWheelSmoothHorizontalDelta, typeSInt32, 0,
sizeof(mdelt), 0, &mdelt);
@@ -2576,7 +2596,7 @@
if (QApplicationPrivate::popupWidgets->isEmpty()) { // this was the last popup
delete QApplicationPrivate::popupWidgets;
QApplicationPrivate::popupWidgets = 0;
-
+
// Special case for Tool windows: since they are activated and deactived together
// with a normal window they never become the QApplicationPrivate::active_window.
QWidget *appFocusWidget = QApplication::focusWidget();
--- a/src/gui/kernel/qapplication_s60.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qapplication_s60.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -71,6 +71,7 @@
# include <private/qcoefepinputcontext_p.h>
# endif
# include <private/qs60mainapplication_p.h>
+# include <centralrepository.h>
#endif
#include "private/qstylesheetstyle_p.h"
@@ -1204,6 +1205,24 @@
S60->virtualMouseRequired = false;
}
+ S60->avkonComponentsSupportTransparency = false;
+
+#ifdef Q_WS_S60
+ TUid KCRUidAvkon = { 0x101F876E };
+ TUint32 KAknAvkonTransparencyEnabled = 0x0000000D;
+
+ CRepository* repository = 0;
+ TRAP(err, repository = CRepository::NewL(KCRUidAvkon));
+
+ if(err == KErrNone) {
+ TInt value = 0;
+ err = repository->Get(KAknAvkonTransparencyEnabled, value);
+ if(err == KErrNone) {
+ S60->avkonComponentsSupportTransparency = (value==1) ? true : false;
+ }
+ }
+#endif
+
if (touch) {
QApplicationPrivate::navigationMode = Qt::NavigationModeNone;
} else {
--- a/src/gui/kernel/qclipboard_s60.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qclipboard_s60.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -164,7 +164,8 @@
TCardinality mimeTypeSize;
aStream >> mimeTypeSize;
HBufC* mimeTypeBuf = HBufC::NewLC(aStream,mimeTypeSize);
- QString mimeType = QString::fromUtf16(mimeTypeBuf->Des().Ptr(),mimeTypeBuf->Length());
+ QString mimeType = QString(reinterpret_cast<const QChar *>(mimeTypeBuf->Des().Ptr()),
+ mimeTypeBuf->Length());
CleanupStack::PopAndDestroy(mimeTypeBuf);
// mime data
TCardinality dataSize;
--- a/src/gui/kernel/qcocoamenuloader_mac.mm Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qcocoamenuloader_mac.mm Fri Mar 12 15:46:37 2010 +0200
@@ -110,6 +110,12 @@
}
}
+- (void)removeActionsFromAppMenu
+{
+ for (NSMenuItem *item in [appMenu itemArray])
+ [item setTag:nil];
+}
+
- (void)dealloc
{
[lastAppSpecificItem release];
--- a/src/gui/kernel/qcocoamenuloader_mac_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qcocoamenuloader_mac_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -70,6 +70,7 @@
}
- (void)ensureAppMenuInMenu:(NSMenu *)menu;
+- (void)removeActionsFromAppMenu;
- (NSMenu *)applicationMenu;
- (NSMenu *)menu;
- (NSMenuItem *)quitMenuItem;
--- a/src/gui/kernel/qcocoaview_mac.mm Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qcocoaview_mac.mm Fri Mar 12 15:46:37 2010 +0200
@@ -644,6 +644,8 @@
- (void)mouseEntered:(NSEvent *)event
{
+ if (qwidgetprivate->data.in_destructor)
+ return;
QEvent enterEvent(QEvent::Enter);
NSPoint windowPoint = [event locationInWindow];
NSPoint globalPoint = [[event window] convertBaseToScreen:windowPoint];
--- a/src/gui/kernel/qdnd_x11.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qdnd_x11.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -617,7 +617,7 @@
// so it should be safe to check that the second char is 0
// to verify that it is utf16
if (data.size() > 1 && data.at(1) == 0)
- return QString::fromUtf16(reinterpret_cast<const ushort *>(data.constData()),
+ return QString::fromRawData((const QChar *)data.constData(),
data.size() / 2).split(QLatin1Char('\n')).first().toLatin1();
}
}
--- a/src/gui/kernel/qeventdispatcher_mac.mm Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qeventdispatcher_mac.mm Fri Mar 12 15:46:37 2010 +0200
@@ -569,7 +569,7 @@
// in cocoa. [NSApp run] should be called at least once for any cocoa app.
if (NSModalSession session = d->currentModalSession()) {
QBoolBlocker execGuard(d->currentExecIsNSAppRun, false);
- while (!d->interrupt && [NSApp runModalSession:session] == NSRunContinuesResponse)
+ while ([NSApp runModalSession:session] == NSRunContinuesResponse && !d->interrupt)
qt_mac_waitForMoreModalSessionEvents();
if (!d->interrupt && session == d->currentModalSessionCached) {
// INVARIANT: Someone called e.g. [NSApp stopModal:] from outside the event
--- a/src/gui/kernel/qmime_mac.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qmime_mac.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -431,8 +431,8 @@
firstData.size(), CFStringGetSystemEncoding(), false));
ret = QString(str);
} else if (flavor == QLatin1String("public.utf16-plain-text")) {
- ret = QString::fromUtf16(reinterpret_cast<const ushort *>(firstData.constData()),
- firstData.size() / sizeof(ushort));
+ ret = QString(reinterpret_cast<const QChar *>(firstData.constData()),
+ firstData.size() / sizeof(QChar));
} else {
qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype));
}
--- a/src/gui/kernel/qsoftkeymanager.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qsoftkeymanager.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -41,34 +41,18 @@
#include "qapplication.h"
#include "qevent.h"
-#ifdef Q_WS_S60
-#include "qstyle.h"
-#include "private/qt_s60_p.h"
-#endif
+#include "qbitmap.h"
#include "private/qsoftkeymanager_p.h"
#include "private/qobject_p.h"
+#include "private/qsoftkeymanager_common_p.h"
+
+#ifdef Q_WS_S60
+#include "private/qsoftkeymanager_s60_p.h"
+#endif
#ifndef QT_NO_SOFTKEYMANAGER
QT_BEGIN_NAMESPACE
-#ifdef Q_WS_S60
-static const int s60CommandStart = 6000;
-#endif
-
-class QSoftKeyManagerPrivate : public QObjectPrivate
-{
- Q_DECLARE_PUBLIC(QSoftKeyManager)
-
-public:
- static void updateSoftKeys_sys(const QList<QAction*> &softKeys);
-
-private:
- QHash<QAction*, Qt::Key> keyedActions;
- static QSoftKeyManager *self;
- static QWidget *softKeySource;
-};
-
-QWidget *QSoftKeyManagerPrivate::softKeySource = 0;
QSoftKeyManager *QSoftKeyManagerPrivate::self = 0;
const char *QSoftKeyManager::standardSoftKeyText(StandardSoftKey standardKey)
@@ -105,7 +89,12 @@
return QSoftKeyManagerPrivate::self;
}
-QSoftKeyManager::QSoftKeyManager() : QObject(*(new QSoftKeyManagerPrivate), 0)
+QSoftKeyManager::QSoftKeyManager() :
+#ifdef Q_WS_S60
+ QObject(*(new QSoftKeyManagerPrivateS60), 0)
+#else
+ QObject(*(new QSoftKeyManagerPrivate), 0)
+#endif
{
}
@@ -115,10 +104,11 @@
QAction *action = new QAction(QSoftKeyManager::tr(text), actionWidget);
QAction::SoftKeyRole softKeyRole = QAction::NoSoftKey;
switch (standardKey) {
+ case MenuSoftKey: // FALL-THROUGH
+ action->setProperty(MENU_ACTION_PROPERTY, QVariant(true)); // TODO: can be refactored away to use _q_action_menubar
case OkSoftKey:
case SelectSoftKey:
case DoneSoftKey:
- case MenuSoftKey:
softKeyRole = QAction::PositiveSoftKey;
break;
case CancelSoftKey:
@@ -147,7 +137,7 @@
#endif //QT_NO_ACTION
}
-void QSoftKeyManager::cleanupHash(QObject* obj)
+void QSoftKeyManager::cleanupHash(QObject *obj)
{
Q_D(QSoftKeyManager);
QAction *action = qobject_cast<QAction*>(obj);
@@ -175,137 +165,78 @@
QApplication::postEvent(QSoftKeyManager::instance(), event);
}
+bool QSoftKeyManager::appendSoftkeys(const QWidget &source, int level)
+{
+ Q_D(QSoftKeyManager);
+ bool ret = false;
+ QList<QAction*> actions = source.actions();
+ for (int i = 0; i < actions.count(); ++i) {
+ if (actions.at(i)->softKeyRole() != QAction::NoSoftKey) {
+ d->requestedSoftKeyActions.insert(level, actions.at(i));
+ ret = true;
+ }
+ }
+ return ret;
+}
+
+QWidget *QSoftKeyManager::softkeySource(QWidget *previousSource, bool& recursiveMerging)
+{
+ Q_D(QSoftKeyManager);
+ QWidget *source = NULL;
+ if (!previousSource) {
+ // Initial source is primarily focuswidget and secondarily activeWindow
+ source = QApplication::focusWidget();
+ if (!source)
+ source = QApplication::activeWindow();
+ } else {
+ // Softkey merging is based on four criterias
+ // 1. Implicit merging is used whenever focus widget does not specify any softkeys
+ bool implicitMerging = d->requestedSoftKeyActions.isEmpty();
+ // 2. Explicit merging with parent is used whenever WA_MergeSoftkeys widget attribute is set
+ bool explicitMerging = previousSource->testAttribute(Qt::WA_MergeSoftkeys);
+ // 3. Explicit merging with all parents
+ recursiveMerging |= previousSource->testAttribute(Qt::WA_MergeSoftkeysRecursively);
+ // 4. Implicit and explicit merging always stops at window boundary
+ bool merging = (implicitMerging || explicitMerging || recursiveMerging) && !previousSource->isWindow();
+
+ source = merging ? previousSource->parentWidget() : NULL;
+ }
+ return source;
+}
+
+bool QSoftKeyManager::handleUpdateSoftKeys()
+{
+ Q_D(QSoftKeyManager);
+ int level = 0;
+ d->requestedSoftKeyActions.clear();
+ bool recursiveMerging = false;
+ QWidget *source = softkeySource(NULL, recursiveMerging);
+ do {
+ if (source) {
+ bool added = appendSoftkeys(*source, level);
+ source = softkeySource(source, recursiveMerging);
+ level = added ? ++level : level;
+ }
+ } while (source);
+
+ d->updateSoftKeys_sys();
+ return true;
+}
+
bool QSoftKeyManager::event(QEvent *e)
{
#ifndef QT_NO_ACTION
- if (e->type() == QEvent::UpdateSoftKeys) {
- QList<QAction*> softKeys;
- QWidget *source = QApplication::focusWidget();
- do {
- if (source) {
- QList<QAction*> actions = source->actions();
- for (int i = 0; i < actions.count(); ++i) {
- if (actions.at(i)->softKeyRole() != QAction::NoSoftKey)
- softKeys.append(actions.at(i));
- }
-
- QWidget *parent = source->parentWidget();
- if (parent && softKeys.isEmpty() && !source->isWindow())
- source = parent;
- else
- break;
- } else {
- source = QApplication::activeWindow();
- }
- } while (source);
-
- QSoftKeyManagerPrivate::softKeySource = source;
- QSoftKeyManagerPrivate::updateSoftKeys_sys(softKeys);
- return true;
- }
+ if (e->type() == QEvent::UpdateSoftKeys)
+ return handleUpdateSoftKeys();
#endif //QT_NO_ACTION
return false;
}
#ifdef Q_WS_S60
-void QSoftKeyManagerPrivate::updateSoftKeys_sys(const QList<QAction*> &softkeys)
-{
- // lets not update softkeys if s60 native dialog or menu is shown
- if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes)
- || CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog())
- return;
-
- CEikButtonGroupContainer* nativeContainer = S60->buttonGroupContainer();
- nativeContainer->DrawableWindow()->SetOrdinalPosition(0);
- nativeContainer->DrawableWindow()->SetPointerCapturePriority(1); //keep softkeys available in modal dialog
- nativeContainer->DrawableWindow()->SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren);
-
- int position = -1;
- bool needsExitButton = true;
- QT_TRAP_THROWING(
- //Using -1 instead of EAknSoftkeyEmpty to avoid flickering.
- nativeContainer->SetCommandL(0, -1, KNullDesC);
- nativeContainer->SetCommandL(2, -1, KNullDesC);
- );
-
- for (int index = 0; index < softkeys.count(); index++) {
- const QAction* softKeyAction = softkeys.at(index);
- switch (softKeyAction->softKeyRole()) {
- // Positive Actions on the LSK
- case QAction::PositiveSoftKey:
- position = 0;
- break;
- case QAction::SelectSoftKey:
- position = 0;
- break;
- // Negative Actions on the RSK
- case QAction::NegativeSoftKey:
- needsExitButton = false;
- position = 2;
- break;
- default:
- break;
- }
-
- int command = (softKeyAction->objectName().contains(QLatin1String("_q_menuSoftKeyAction")))
- ? EAknSoftkeyOptions
- : s60CommandStart + index;
-
- // _q_menuSoftKeyAction action is set to "invisible" and all invisible actions are by default
- // disabled. However we never want to dim options softkey, even it is set to "invisible"
- bool dimmed = (command == EAknSoftkeyOptions) ? false : !softKeyAction->isEnabled();
-
- if (position != -1) {
- const int underlineShortCut = QApplication::style()->styleHint(QStyle::SH_UnderlineShortcut);
- QString iconText = softKeyAction->iconText();
- TPtrC text = qt_QString2TPtrC( underlineShortCut ? softKeyAction->text() : iconText);
- QT_TRAP_THROWING(
- nativeContainer->SetCommandL(position, command, text);
- nativeContainer->DimCommand(command, dimmed);
- );
- }
- }
-
- const Qt::WindowType sourceWindowType = QSoftKeyManagerPrivate::softKeySource
- ? QSoftKeyManagerPrivate::softKeySource->window()->windowType()
- : Qt::Widget;
-
- if (needsExitButton && sourceWindowType != Qt::Dialog && sourceWindowType != Qt::Popup)
- QT_TRAP_THROWING(
- nativeContainer->SetCommandL(2, EAknSoftkeyExit, qt_QString2TPtrC(QSoftKeyManager::tr("Exit"))));
-
- nativeContainer->DrawDeferred(); // 3.1 needs an extra invitation
-}
-
bool QSoftKeyManager::handleCommand(int command)
{
- if (command >= s60CommandStart && QSoftKeyManagerPrivate::softKeySource) {
- int index = command - s60CommandStart;
- const QList<QAction*>& softKeys = QSoftKeyManagerPrivate::softKeySource->actions();
- for (int i = 0, j = 0; i < softKeys.count(); ++i) {
- QAction *action = softKeys.at(i);
- if (action->softKeyRole() != QAction::NoSoftKey) {
- if (j == index) {
- QWidget *parent = action->parentWidget();
- if (parent && parent->isEnabled()) {
- action->activate(QAction::Trigger);
- return true;
- }
- }
- j++;
- }
- }
- }
-
- return false;
+ return static_cast<QSoftKeyManagerPrivateS60*>(QSoftKeyManager::instance()->d_func())->handleCommand(command);
}
-
-#else
-
-void QSoftKeyManagerPrivate::updateSoftKeys_sys(const QList<QAction*> &)
-{
-}
-
#endif
QT_END_NAMESPACE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gui/kernel/qsoftkeymanager_common_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QSOFTKEYMANAGER_COMMON_P_H
+#define QSOFTKEYMANAGER_COMMON_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+QT_BEGIN_HEADER
+
+#ifndef QT_NO_SOFTKEYMANAGER
+
+QT_BEGIN_NAMESPACE
+
+class QSoftKeyManagerPrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QSoftKeyManager)
+
+public:
+ virtual void updateSoftKeys_sys() {};
+
+protected:
+ static QSoftKeyManager *self;
+ QHash<QAction*, Qt::Key> keyedActions;
+ QMultiHash<int, QAction*> requestedSoftKeyActions;
+
+};
+
+QT_END_NAMESPACE
+
+#endif //QT_NO_SOFTKEYMANAGER
+
+QT_END_HEADER
+
+#endif // QSOFTKEYMANAGER_COMMON_P_H
\ No newline at end of file
--- a/src/gui/kernel/qsoftkeymanager_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qsoftkeymanager_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -63,6 +63,8 @@
class QSoftKeyManagerPrivate;
+const char MENU_ACTION_PROPERTY[] = "_q_menuaction";
+
class Q_AUTOTEST_EXPORT QSoftKeyManager : public QObject
{
Q_OBJECT
@@ -79,26 +81,30 @@
};
static void updateSoftKeys();
+#ifdef Q_WS_S60
+ static bool handleCommand(int);
+#endif
+
static QAction *createAction(StandardSoftKey standardKey, QWidget *actionWidget);
static QAction *createKeyedAction(StandardSoftKey standardKey, Qt::Key key, QWidget *actionWidget);
-#ifdef Q_WS_S60
- static bool handleCommand(int);
-#endif
+protected:
+ bool event(QEvent *e);
private:
QSoftKeyManager();
static QSoftKeyManager *instance();
static const char *standardSoftKeyText(StandardSoftKey standardKey);
-
-protected:
- bool event(QEvent *e);
-
- Q_DISABLE_COPY(QSoftKeyManager)
+ bool appendSoftkeys(const QWidget &source, int level);
+ QWidget *softkeySource(QWidget *previousSource, bool& recursiveMerging);
+ bool handleUpdateSoftKeys();
private Q_SLOTS:
void cleanupHash(QObject* obj);
void sendKeyEvent();
+
+private:
+ Q_DISABLE_COPY(QSoftKeyManager)
};
QT_END_NAMESPACE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gui/kernel/qsoftkeymanager_s60.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,366 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qapplication.h"
+#include "qevent.h"
+#include "qbitmap.h"
+#include "qstyle.h"
+#include "qmenubar.h"
+#include "private/qt_s60_p.h"
+#include "private/qmenu_p.h"
+#include "private/qsoftkeymanager_p.h"
+#include "private/qsoftkeymanager_s60_p.h"
+#include "private/qobject_p.h"
+//#include <eiksoftkeyimage.h>
+#include <eikcmbut.h>
+
+#ifndef QT_NO_SOFTKEYMANAGER
+QT_BEGIN_NAMESPACE
+
+const int S60_COMMAND_START = 6000;
+const int LSK_POSITION = 0;
+const int MSK_POSITION = 3;
+const int RSK_POSITION = 2;
+
+QSoftKeyManagerPrivateS60::QSoftKeyManagerPrivateS60()
+{
+ cachedCbaIconSize[0] = QSize(0,0);
+ cachedCbaIconSize[1] = QSize(0,0);
+ skipNextUpdate = false;
+}
+
+bool QSoftKeyManagerPrivateS60::skipCbaUpdate()
+{
+ // lets not update softkeys if
+ // 1. We don't have application panes, i.e. cba
+ // 2. S60 native dialog or menu is shown
+ if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes) ||
+ CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog() || skipNextUpdate) {
+ skipNextUpdate = false;
+ return true;
+ }
+ return false;
+}
+
+void QSoftKeyManagerPrivateS60::ensureCbaVisibilityAndResponsiviness(CEikButtonGroupContainer &cba)
+{
+ RDrawableWindow *cbaWindow = cba.DrawableWindow();
+ Q_ASSERT_X(cbaWindow, Q_FUNC_INFO, "Native CBA does not have window!");
+ // Make sure CBA is visible, i.e. CBA window is on top
+ cbaWindow->SetOrdinalPosition(0);
+ // Qt shares same CBA instance between top-level widgets,
+ // make sure we are not faded by underlying window.
+ cbaWindow->SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren);
+ // Modal dialogs capture pointer events, but shared cba instance
+ // shall stay responsive. Raise pointer capture priority to keep
+ // softkeys responsive in modal dialogs
+ cbaWindow->SetPointerCapturePriority(1);
+}
+
+void QSoftKeyManagerPrivateS60::clearSoftkeys(CEikButtonGroupContainer &cba)
+{
+ QT_TRAP_THROWING(
+ //Using -1 instead of EAknSoftkeyEmpty to avoid flickering.
+ cba.SetCommandL(0, -1, KNullDesC);
+ // TODO: Should we clear also middle SK?
+ cba.SetCommandL(2, -1, KNullDesC);
+ );
+ realSoftKeyActions.clear();
+}
+
+QString QSoftKeyManagerPrivateS60::softkeyText(QAction &softkeyAction)
+{
+ // In S60 softkeys and menu items do not support key accelerators (i.e.
+ // CTRL+X). Therefore, removing the accelerator characters from both softkey
+ // and menu item texts.
+ const int underlineShortCut = QApplication::style()->styleHint(QStyle::SH_UnderlineShortcut);
+ QString iconText = softkeyAction.iconText();
+ return underlineShortCut ? softkeyAction.text() : iconText;
+}
+
+QAction *QSoftKeyManagerPrivateS60::highestPrioritySoftkey(QAction::SoftKeyRole role)
+{
+ QAction *ret = NULL;
+ // Priority look up is two level
+ // 1. First widget with softkeys always has highest priority
+ for (int level = 0; !ret; level++) {
+ // 2. Highest priority action within widget
+ QList<QAction*> actions = requestedSoftKeyActions.values(level);
+ if (actions.isEmpty())
+ break;
+ qSort(actions.begin(), actions.end(), QSoftKeyManagerPrivateS60::actionPriorityMoreThan);
+ foreach (QAction *action, actions) {
+ if (action->softKeyRole() == role) {
+ ret = action;
+ break;
+ }
+ }
+ }
+ return ret;
+}
+
+bool QSoftKeyManagerPrivateS60::actionPriorityMoreThan(const QAction *firstItem, const QAction *secondItem)
+{
+ return firstItem->priority() > secondItem->priority();
+}
+
+void QSoftKeyManagerPrivateS60::setNativeSoftkey(CEikButtonGroupContainer &cba,
+ TInt position, TInt command, const TDesC &text)
+{
+ // Calling SetCommandL causes CBA redraw
+ QT_TRAP_THROWING(cba.SetCommandL(position, command, text));
+}
+
+bool QSoftKeyManagerPrivateS60::isOrientationLandscape()
+{
+ // Hard to believe that there is no public API in S60 to
+ // get current orientation. This workaround works with currently supported resolutions
+ return S60->screenHeightInPixels < S60->screenWidthInPixels;
+}
+
+QSize QSoftKeyManagerPrivateS60::cbaIconSize(CEikButtonGroupContainer *cba, int position)
+{
+ Q_UNUSED(cba);
+ Q_UNUSED(position);
+
+ // Will be implemented when EikSoftkeyImage usage license wise is OK
+/*
+ const int index = isOrientationLandscape() ? 0 : 1;
+ if(cachedCbaIconSize[index].isNull()) {
+ // Only way I figured out to get CBA icon size without RnD SDK, was
+ // Only way I figured out to get CBA icon size without RnD SDK, was
+ // to set some dummy icon to CBA first and then ask CBA button CCoeControl::Size()
+ // The returned value is cached to avoid unnecessary icon setting every time.
+ const bool left = (position == LSK_POSITION);
+ if(position == LSK_POSITION || position == RSK_POSITION) {
+ CEikImage* tmpImage = NULL;
+ QT_TRAP_THROWING(tmpImage = new (ELeave) CEikImage);
+ EikSoftkeyImage::SetImage(cba, *tmpImage, left); // Takes myimage ownership
+ int command = S60_COMMAND_START + position;
+ setNativeSoftkey(*cba, position, command, KNullDesC());
+ cachedCbaIconSize[index] = qt_TSize2QSize(cba->ControlOrNull(command)->Size());
+ EikSoftkeyImage::SetLabel(cba, left);
+ }
+ }
+
+ return cachedCbaIconSize[index];
+*/
+ return QSize();
+}
+
+bool QSoftKeyManagerPrivateS60::setSoftkeyImage(CEikButtonGroupContainer *cba,
+ QAction &action, int position)
+{
+ bool ret = false;
+ Q_UNUSED(cba);
+ Q_UNUSED(action);
+ Q_UNUSED(position);
+
+ // Will be implemented when EikSoftkeyImage usage license wise is OK
+ /*
+ const bool left = (position == LSK_POSITION);
+ if(position == LSK_POSITION || position == RSK_POSITION) {
+ QIcon icon = action.icon();
+ if (!icon.isNull()) {
+ QPixmap pm = icon.pixmap(cbaIconSize(cba, position));
+ pm = pm.scaled(cbaIconSize(cba, position));
+ QBitmap mask = pm.mask();
+ if (mask.isNull()) {
+ mask = QBitmap(pm.size());
+ mask.fill(Qt::color1);
+ }
+
+ CFbsBitmap* nBitmap = pm.toSymbianCFbsBitmap();
+ CFbsBitmap* nMask = mask.toSymbianCFbsBitmap();
+
+ CEikImage* myimage = new (ELeave) CEikImage;
+ myimage->SetPicture( nBitmap, nMask ); // nBitmap and nMask ownership transfered
+
+ EikSoftkeyImage::SetImage(cba, *myimage, left); // Takes myimage ownership
+ ret = true;
+ } else {
+ // Restore softkey to text based
+ EikSoftkeyImage::SetLabel(cba, left);
+ }
+ }
+ */
+ return ret;
+}
+
+bool QSoftKeyManagerPrivateS60::setSoftkey(CEikButtonGroupContainer &cba,
+ QAction::SoftKeyRole role, int position)
+{
+ QAction *action = highestPrioritySoftkey(role);
+ if (action) {
+ setSoftkeyImage(&cba, *action, position);
+ QString text = softkeyText(*action);
+ TPtrC nativeText = qt_QString2TPtrC(text);
+ int command = S60_COMMAND_START + position;
+ setNativeSoftkey(cba, position, command, nativeText);
+ cba.DimCommand(command, !action->isEnabled());
+ realSoftKeyActions.insert(command, action);
+ return true;
+ }
+ return false;
+}
+
+bool QSoftKeyManagerPrivateS60::setLeftSoftkey(CEikButtonGroupContainer &cba)
+{
+ return setSoftkey(cba, QAction::PositiveSoftKey, LSK_POSITION);
+}
+
+bool QSoftKeyManagerPrivateS60::setMiddleSoftkey(CEikButtonGroupContainer &cba)
+{
+ // Note: In order to get MSK working, application has to have EAknEnableMSK flag set
+ // Currently it is not possible very easily)
+ // For more information see: http://wiki.forum.nokia.com/index.php/Middle_softkey_usage
+ return setSoftkey(cba, QAction::SelectSoftKey, MSK_POSITION);
+}
+
+bool QSoftKeyManagerPrivateS60::setRightSoftkey(CEikButtonGroupContainer &cba)
+{
+ if (!setSoftkey(cba, QAction::NegativeSoftKey, RSK_POSITION)) {
+ Qt::WindowType windowType = Qt::Window;
+ QAction *action = requestedSoftKeyActions.value(0);
+ if (action) {
+ QWidget *actionParent = action->parentWidget();
+ Q_ASSERT_X(actionParent, Q_FUNC_INFO, "No parent set for softkey action!");
+
+ QWidget *actionWindow = actionParent->window();
+ Q_ASSERT_X(actionWindow, Q_FUNC_INFO, "Softkey action does not have window!");
+ windowType = actionWindow->windowType();
+ }
+
+ if (windowType != Qt::Dialog && windowType != Qt::Popup) {
+ QString text(QSoftKeyManager::tr("Exit"));
+ TPtrC nativeText = qt_QString2TPtrC(text);
+ setNativeSoftkey(cba, RSK_POSITION, EAknSoftkeyExit, nativeText);
+ return true;
+ }
+ }
+ return false;
+}
+
+void QSoftKeyManagerPrivateS60::setSoftkeys(CEikButtonGroupContainer &cba)
+{
+ int requestedSoftkeyCount = requestedSoftKeyActions.count();
+ const int maxSoftkeyCount = 2; // TODO: differs based on orientation ans S60 versions (some have MSK)
+ if (requestedSoftkeyCount > maxSoftkeyCount) {
+ // We have more softkeys than available slots
+ // Put highest priority negative action to RSK and Options menu with rest of softkey actions to LSK
+ // TODO: Build menu
+ setLeftSoftkey(cba);
+ if(AknLayoutUtils::MSKEnabled())
+ setMiddleSoftkey(cba);
+ setRightSoftkey(cba);
+ } else {
+ // We have less softkeys than available slots
+ // Put softkeys to request slots based on role
+ setLeftSoftkey(cba);
+ if(AknLayoutUtils::MSKEnabled())
+ setMiddleSoftkey(cba);
+ setRightSoftkey(cba);
+ }
+}
+
+void QSoftKeyManagerPrivateS60::updateSoftKeys_sys()
+{
+ //bool status = CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog();
+ if (skipCbaUpdate())
+ return;
+
+ CEikButtonGroupContainer *nativeContainer = S60->buttonGroupContainer();
+ Q_ASSERT_X(nativeContainer, Q_FUNC_INFO, "Native CBA does not exist!");
+ ensureCbaVisibilityAndResponsiviness(*nativeContainer);
+ clearSoftkeys(*nativeContainer);
+ setSoftkeys(*nativeContainer);
+
+ nativeContainer->DrawDeferred(); // 3.1 needs an extra invitation
+}
+
+bool QSoftKeyManagerPrivateS60::handleCommand(int command)
+{
+ QAction *action = realSoftKeyActions.value(command);
+ if (action) {
+ QVariant property = action->property(MENU_ACTION_PROPERTY);
+ if (property.isValid() && property.toBool()) {
+ QT_TRAP_THROWING(S60->menuBar()->TryDisplayMenuBarL());
+ } else if (action->menu()) {
+ // TODO: This is hack, in order to use exising QMenuBar implementation for Symbian
+ // menubar needs to have widget to which it is associated. Since we want to associate
+ // menubar to action (which is inherited from QObejct), we create and associate QWidget
+ // to action and pass that for QMenuBar. This associates the menubar to action, and we
+ // can have own menubar for each action.
+ QWidget *actionContainer = action->property("_q_action_widget").value<QWidget*>();
+ if(!actionContainer) {
+ actionContainer = new QWidget(action->parentWidget());
+ QMenuBar *menuBar = new QMenuBar(actionContainer);
+ foreach(QAction *menuAction, action->menu()->actions()) {
+ QMenu *menu = menuAction->menu();
+ if(menu)
+ menuBar->addMenu(action->menu());
+ else
+ menuBar->addAction(menuAction);
+ }
+ QVariant v;
+ v.setValue(actionContainer);
+ action->setProperty("_q_action_widget", v);
+ }
+ qt_symbian_next_menu_from_action(actionContainer);
+ QT_TRAP_THROWING(S60->menuBar()->TryDisplayMenuBarL());
+ // TODO: hack remove, it can happen that IsDisplayingMenuOrDialog return false
+ // in updateSoftKeys_sys, and we will override menu CBA with our own
+ skipNextUpdate = true;
+ } else {
+ Q_ASSERT(action->softKeyRole() != QAction::NoSoftKey);
+ QWidget *actionParent = action->parentWidget();
+ Q_ASSERT_X(actionParent, Q_FUNC_INFO, "No parent set for softkey action!");
+ if (actionParent->isEnabled()) {
+ action->activate(QAction::Trigger);
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+QT_END_NAMESPACE
+#endif //QT_NO_SOFTKEYMANAGER
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gui/kernel/qsoftkeymanager_s60_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QSOFTKEYMANAGER_S60_P_H
+#define QSOFTKEYMANAGER_S60_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "private/qobject_p.h"
+#include "private/qsoftkeymanager_common_p.h"
+
+QT_BEGIN_HEADER
+
+#ifndef QT_NO_SOFTKEYMANAGER
+
+QT_BEGIN_NAMESPACE
+
+class CEikButtonGroupContainer;
+class QAction;
+
+class QSoftKeyManagerPrivateS60 : public QSoftKeyManagerPrivate
+{
+ Q_DECLARE_PUBLIC(QSoftKeyManager)
+
+public:
+ QSoftKeyManagerPrivateS60();
+
+public:
+ void updateSoftKeys_sys();
+ bool handleCommand(int command);
+
+private:
+ bool skipCbaUpdate();
+ void ensureCbaVisibilityAndResponsiviness(CEikButtonGroupContainer &cba);
+ void clearSoftkeys(CEikButtonGroupContainer &cba);
+ QString softkeyText(QAction &softkeyAction);
+ QAction *highestPrioritySoftkey(QAction::SoftKeyRole role);
+ static bool actionPriorityMoreThan(const QAction* item1, const QAction* item2);
+ void setNativeSoftkey(CEikButtonGroupContainer &cba, TInt position, TInt command, const TDesC& text);
+ bool isOrientationLandscape();
+ QSize cbaIconSize(CEikButtonGroupContainer *cba, int position);
+ bool setSoftkeyImage(CEikButtonGroupContainer *cba, QAction &action, int position);
+ bool setSoftkey(CEikButtonGroupContainer &cba, QAction::SoftKeyRole role, int position);
+ bool setLeftSoftkey(CEikButtonGroupContainer &cba);
+ bool setMiddleSoftkey(CEikButtonGroupContainer &cba);
+ bool setRightSoftkey(CEikButtonGroupContainer &cba);
+ void setSoftkeys(CEikButtonGroupContainer &cba);
+
+private:
+ QHash<int, QAction*> realSoftKeyActions;
+ QSize cachedCbaIconSize[2];
+ bool skipNextUpdate;
+};
+
+
+QT_END_NAMESPACE
+
+#endif //QT_NO_SOFTKEYMANAGER
+
+QT_END_HEADER
+
+#endif // QSOFTKEYMANAGER_S60_P_H
--- a/src/gui/kernel/qt_cocoa_helpers_mac.mm Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm Fri Mar 12 15:46:37 2010 +0200
@@ -143,6 +143,9 @@
void macWindowFade(void * /*OSWindowRef*/ window, float durationSeconds)
{
+#ifdef QT_MAC_USE_COCOA
+ QMacCocoaAutoReleasePool pool;
+#endif
OSWindowRef wnd = static_cast<OSWindowRef>(window);
if (wnd) {
QWidget *widget;
@@ -1278,4 +1281,17 @@
}
#endif
+QMacCocoaAutoReleasePool::QMacCocoaAutoReleasePool()
+{
+#ifndef QT_MAC_USE_COCOA
+ NSApplicationLoad();
+#endif
+ pool = (void*)[[NSAutoreleasePool alloc] init];
+}
+
+QMacCocoaAutoReleasePool::~QMacCocoaAutoReleasePool()
+{
+ [(NSAutoreleasePool*)pool release];
+}
+
QT_END_NAMESPACE
--- a/src/gui/kernel/qt_s60_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qt_s60_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -121,12 +121,14 @@
int virtualMouseRequired : 1;
int qtOwnsS60Environment : 1;
int supportsPremultipliedAlpha : 1;
+ int avkonComponentsSupportTransparency : 1;
QApplication::QS60MainApplicationFactory s60ApplicationFactory; // typedef'ed pointer type
static inline void updateScreenSize();
static inline RWsSession& wsSession();
static inline RWindowGroup& windowGroup();
static inline CWsScreenDevice* screenDevice();
static inline CCoeAppUi* appUi();
+ static inline CEikMenuBar* menuBar();
#ifdef Q_WS_S60
static inline CEikStatusPane* statusPane();
static inline CCoeControl* statusPaneSubPane(TInt aPaneId);
@@ -269,6 +271,11 @@
return CCoeEnv::Static()-> AppUi();
}
+inline CEikMenuBar* QS60Data::menuBar()
+{
+ return CEikonEnv::Static()->AppUiFactory()->MenuBar();
+}
+
#ifdef Q_WS_S60
inline CEikStatusPane* QS60Data::statusPane()
{
--- a/src/gui/kernel/qwidget.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qwidget.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -2026,6 +2026,14 @@
}
#endif
+#ifdef Q_WS_S60
+ if (q->windowType() == Qt::Dialog && q->testAttribute(Qt::WA_TranslucentBackground)
+ && S60->avkonComponentsSupportTransparency) {
+ setOpaque(false);
+ return;
+ }
+#endif
+
if (q->testAttribute(Qt::WA_OpaquePaintEvent) || q->testAttribute(Qt::WA_PaintOnScreen)) {
setOpaque(true);
return;
@@ -3344,7 +3352,7 @@
\note Setting the size to \c{QSize(0, 0)} will cause the widget to not
appear on screen. This also applies to windows.
- \sa pos, geometry, minimumSize, maximumSize, resizeEvent()
+ \sa pos, geometry, minimumSize, maximumSize, resizeEvent(), adjustSize()
*/
/*!
--- a/src/gui/kernel/qwidget_mac.mm Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qwidget_mac.mm Fri Mar 12 15:46:37 2010 +0200
@@ -404,7 +404,7 @@
return;
qt_mac_app_fullscreen = b;
if (b) {
- SetSystemUIMode(kUIModeAllSuppressed, 0);
+ SetSystemUIMode(kUIModeAllHidden, kUIOptionAutoShowMenuBar);
} else {
SetSystemUIMode(kUIModeNormal, 0);
}
@@ -3414,6 +3414,38 @@
ShowHide(window, false);
#else
[window orderOut:window];
+ // Unfortunately it is not as easy as just hiding the window, we need
+ // to find out if we were in full screen mode. If we were and this is
+ // the last window in full screen mode then we need to unset the full screen
+ // mode. If this is not the last visible window in full screen mode then we
+ // don't change the full screen mode.
+ if(q->isFullScreen())
+ {
+ bool keepFullScreen = false;
+ QWidgetList windowList = qApp->topLevelWidgets();
+ int windowCount = windowList.count();
+ for(int i = 0; i < windowCount; i++)
+ {
+ QWidget *w = windowList[i];
+ // If it is the same window, we don't need to check :-)
+ if(q == w)
+ continue;
+ // If they are not visible or if they are minimized then
+ // we just ignore them.
+ if(!w->isVisible() || w->isMinimized())
+ continue;
+ // Is it full screen?
+ // Notice that if there is one window in full screen mode then we
+ // cannot switch the full screen mode off, therefore we just abort.
+ if(w->isFullScreen()) {
+ keepFullScreen = true;
+ break;
+ }
+ }
+ // No windows in full screen mode, so let just unset that flag.
+ if(!keepFullScreen)
+ qt_mac_set_fullscreen_mode(false);
+ }
#endif
toggleDrawers(false);
#ifndef QT_MAC_USE_COCOA
@@ -3478,6 +3510,8 @@
if (!QWidget::mouseGrabber()){
QWidget *enterWidget = QApplication::widgetAt(QCursor::pos());
+ if (enterWidget && enterWidget->data->in_destructor)
+ enterWidget = 0;
QApplicationPrivate::dispatchEnterLeave(enterWidget, qt_mouseover);
qt_mouseover = enterWidget;
}
--- a/src/gui/painting/qcolor.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/painting/qcolor.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -934,8 +934,7 @@
/*!
\fn QRgb QColor::rgba() const
- Returns the RGB value of the color. Unlike rgb(), the alpha is not
- stripped.
+ Returns the RGB value of the color, including its alpha.
For an invalid color, the alpha value of the returned color is unspecified.
@@ -950,8 +949,7 @@
}
/*!
- Sets the RGBA value to \a rgba. Unlike setRgb(QRgb rgb), this function does
- not ignore the alpha.
+ Sets the RGB value to \a rgba, including its alpha.
\sa rgba(), rgb()
*/
@@ -968,8 +966,7 @@
/*!
\fn QRgb QColor::rgb() const
- Returns the RGB value of the color. The alpha is stripped for
- compatibility.
+ Returns the RGB value of the color. The alpha value is opaque.
\sa getRgb(), rgba()
*/
@@ -983,7 +980,7 @@
/*!
\overload
- Sets the RGB value to \a rgb, ignoring the alpha.
+ Sets the RGB value to \a rgb. The alpha value is set to opaque.
*/
void QColor::setRgb(QRgb rgb)
{
--- a/src/gui/painting/qpaintengine_raster.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/painting/qpaintengine_raster.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -3081,6 +3081,8 @@
QVarLengthArray<glyph_t> glyphs;
QTransform matrix = s->matrix;
matrix.translate(p.x(), p.y());
+ if (matrix.type() == QTransform::TxScale)
+ fe->setFontScale(matrix.m11());
ti.fontEngine->getGlyphPositions(ti.glyphs, matrix, ti.flags, glyphs, positions);
const QFixed aliasDelta = QFixed::fromReal(aliasedCoordinateDelta);
@@ -3097,6 +3099,9 @@
alphaPenBlt(glyphBitmapBytes, glyphBitmapSize.iWidth, 8, x, y, glyphBitmapSize.iWidth, glyphBitmapSize.iHeight);
}
+ if (matrix.type() == QTransform::TxScale)
+ fe->setFontScale(1.0);
+
return;
}
#endif // Q_OS_SYMBIAN && QT_NO_FREETYPE
@@ -3269,7 +3274,9 @@
}
#elif defined (Q_OS_SYMBIAN) && defined(QT_NO_FREETYPE) // Q_WS_WIN || Q_WS_MAC
- if (s->matrix.type() <= QTransform::TxTranslate) {
+ if (s->matrix.type() <= QTransform::TxTranslate
+ || (s->matrix.type() == QTransform::TxScale
+ && (qFuzzyCompare(s->matrix.m11(), s->matrix.m22())))) {
drawGlyphsS60(p, ti);
return;
}
--- a/src/gui/painting/qpaintengine_raster_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/painting/qpaintengine_raster_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -264,13 +264,13 @@
#endif // Q_OS_SYMBIAN && QT_NO_FREETYPE
inline void ensureBrush(const QBrush &brush) {
- if (!qbrush_fast_equals(state()->lastBrush, brush) || state()->fillFlags)
+ if (!qbrush_fast_equals(state()->lastBrush, brush) || (brush.style() != Qt::NoBrush && state()->fillFlags))
updateBrush(brush);
}
inline void ensureBrush() { ensureBrush(state()->brush); }
inline void ensurePen(const QPen &pen) {
- if (!qpen_fast_equals(state()->lastPen, pen) || state()->strokeFlags)
+ if (!qpen_fast_equals(state()->lastPen, pen) || (pen.style() != Qt::NoPen && state()->strokeFlags))
updatePen(pen);
}
inline void ensurePen() { ensurePen(state()->pen); }
--- a/src/gui/painting/qpainter.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/painting/qpainter.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -7382,10 +7382,15 @@
typedef QList<QPaintDeviceRedirection> QPaintDeviceRedirectionList;
Q_GLOBAL_STATIC(QPaintDeviceRedirectionList, globalRedirections)
Q_GLOBAL_STATIC(QMutex, globalRedirectionsMutex)
+Q_GLOBAL_STATIC(QAtomicInt, globalRedirectionAtomic)
/*!
\threadsafe
+ \obsolete
+
+ Please use QWidget::render() instead.
+
Redirects all paint commands for the given paint \a device, to the
\a replacement device. The optional point \a offset defines an
offset within the source device.
@@ -7395,9 +7400,10 @@
device's painter (if any) before redirecting. Call
restoreRedirected() to restore the previous redirection.
- In general, you'll probably find that calling
- QPixmap::grabWidget() or QPixmap::grabWindow() is an easier
- solution.
+ \warning Making use of redirections in the QPainter API implies
+ that QPainter::begin() and QPaintDevice destructors need to hold
+ a mutex for a short period. This can impact performance. Use of
+ QWidget::render is strongly encouraged.
\sa redirected(), restoreRedirected()
*/
@@ -7429,14 +7435,24 @@
Q_ASSERT(redirections != 0);
*redirections += QPaintDeviceRedirection(device, rdev ? rdev : replacement, offset + roffset,
hadInternalWidgetRedirection ? redirections->size() - 1 : -1);
+ globalRedirectionAtomic()->ref();
}
/*!
\threadsafe
+ \obsolete
+
+ Using QWidget::render() obsoletes the use of this function.
+
Restores the previous redirection for the given \a device after a
call to setRedirected().
+ \warning Making use of redirections in the QPainter API implies
+ that QPainter::begin() and QPaintDevice destructors need to hold
+ a mutex for a short period. This can impact performance. Use of
+ QWidget::render is strongly encouraged.
+
\sa redirected()
*/
void QPainter::restoreRedirected(const QPaintDevice *device)
@@ -7447,6 +7463,7 @@
Q_ASSERT(redirections != 0);
for (int i = redirections->size()-1; i >= 0; --i) {
if (redirections->at(i) == device) {
+ globalRedirectionAtomic()->deref();
const int internalWidgetRedirectionIndex = redirections->at(i).internalWidgetRedirectionIndex;
redirections->removeAt(i);
// Restore the internal widget redirection, i.e. remove it from the global
@@ -7468,9 +7485,18 @@
/*!
\threadsafe
+ \obsolete
+
+ Using QWidget::render() obsoletes the use of this function.
+
Returns the replacement for given \a device. The optional out
parameter \a offset returns the offset within the replaced device.
+ \warning Making use of redirections in the QPainter API implies
+ that QPainter::begin() and QPaintDevice destructors need to hold
+ a mutex for a short period. This can impact performance. Use of
+ QWidget::render is strongly encouraged.
+
\sa setRedirected(), restoreRedirected()
*/
QPaintDevice *QPainter::redirected(const QPaintDevice *device, QPoint *offset)
@@ -7483,6 +7509,9 @@
return widgetPrivate->redirected(offset);
}
+ if (*globalRedirectionAtomic() == 0)
+ return 0;
+
QMutexLocker locker(globalRedirectionsMutex());
QPaintDeviceRedirectionList *redirections = globalRedirections();
Q_ASSERT(redirections != 0);
@@ -7500,6 +7529,9 @@
void qt_painter_removePaintDevice(QPaintDevice *dev)
{
+ if (*globalRedirectionAtomic() == 0)
+ return;
+
QMutex *mutex = 0;
QT_TRY {
mutex = globalRedirectionsMutex();
--- a/src/gui/styles/qcommonstyle.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qcommonstyle.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1608,7 +1608,7 @@
if (toolbutton->toolButtonStyle == Qt::ToolButtonTextUnderIcon) {
pr.setHeight(pmSize.height() + 6);
- tr.adjust(0, pr.height() - 1, 0, -3);
+ tr.adjust(0, pr.height() - 1, 0, -2);
pr.translate(shiftX, shiftY);
if (!hasArrow) {
proxy()->drawItemPixmap(p, pr, Qt::AlignCenter, pm);
--- a/src/gui/styles/qgtkstyle.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qgtkstyle.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1106,8 +1106,14 @@
// ### Note: Ubuntulooks breaks when the proper widget is passed
// Murrine engine requires a widget not to get RGBA check - warnings
GtkWidget *gtkCheckButton = d->gtkWidget(QLS("GtkCheckButton"));
- gtkPainter.paintOption(gtkCheckButton , buttonRect, state, shadow, gtkRadioButton->style, QLS("radiobutton"));
-
+ QString key(QLS("radiobutton"));
+ if (option->state & State_HasFocus) { // Themes such as Nodoka check this flag
+ key += QLatin1Char('f');
+ GTK_WIDGET_SET_FLAGS(gtkCheckButton, GTK_HAS_FOCUS);
+ }
+ gtkPainter.paintOption(gtkCheckButton , buttonRect, state, shadow, gtkRadioButton->style, key);
+ if (option->state & State_HasFocus)
+ GTK_WIDGET_UNSET_FLAGS(gtkCheckButton, GTK_HAS_FOCUS);
}
break;
@@ -1128,6 +1134,11 @@
int spacing;
GtkWidget *gtkCheckButton = d->gtkWidget(QLS("GtkCheckButton"));
+ QString key(QLS("checkbutton"));
+ if (option->state & State_HasFocus) { // Themes such as Nodoka checks this flag
+ key += QLatin1Char('f');
+ GTK_WIDGET_SET_FLAGS(gtkCheckButton, GTK_HAS_FOCUS);
+ }
// Some styles such as aero-clone assume they can paint in the spacing area
gtkPainter.setClipRect(option->rect);
@@ -1137,7 +1148,10 @@
QRect checkRect = option->rect.adjusted(spacing, spacing, -spacing, -spacing);
gtkPainter.paintCheckbox(gtkCheckButton, checkRect, state, shadow, gtkCheckButton->style,
- QLS("checkbutton"));
+ key);
+ if (option->state & State_HasFocus)
+ GTK_WIDGET_UNSET_FLAGS(gtkCheckButton, GTK_HAS_FOCUS);
+
}
break;
--- a/src/gui/styles/qmacstyle_mac.mm Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qmacstyle_mac.mm Fri Mar 12 15:46:37 2010 +0200
@@ -667,32 +667,47 @@
switch (ct) {
case QStyle::CT_PushButton: {
- const QPushButton *psh = static_cast<const QPushButton *>(widg);
- QString buttonText = qt_mac_removeMnemonics(psh->text());
- if (buttonText.contains(QLatin1Char('\n')))
- ret = QSize(-1, -1);
- else if (sz == QAquaSizeLarge)
- ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricPushButtonHeight));
- else if (sz == QAquaSizeSmall)
- ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricSmallPushButtonHeight));
- else if (sz == QAquaSizeMini)
- ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricMiniPushButtonHeight));
-
- if (!psh->icon().isNull()){
- // If the button got an icon, and the icon is larger than the
- // button, we can't decide on a default size
- ret.setWidth(-1);
- if (ret.height() < psh->iconSize().height())
- ret.setHeight(-1);
- }
- else if (buttonText == QLatin1String("OK") || buttonText == QLatin1String("Cancel")){
- // Aqua Style guidelines restrict the size of OK and Cancel buttons to 68 pixels.
- // However, this doesn't work for German, therefore only do it for English,
- // I suppose it would be better to do some sort of lookups for languages
- // that like to have really long words.
- ret.setWidth(77 - 8);
- }
-
+ const QPushButton *psh = qobject_cast<const QPushButton *>(widg);
+ // If this comparison is false, then the widget was not a push button.
+ // This is bad and there's very little we can do since we were requested to find a
+ // sensible size for a widget that pretends to be a QPushButton but is not.
+ if(psh) {
+ QString buttonText = qt_mac_removeMnemonics(psh->text());
+ if (buttonText.contains(QLatin1Char('\n')))
+ ret = QSize(-1, -1);
+ else if (sz == QAquaSizeLarge)
+ ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricPushButtonHeight));
+ else if (sz == QAquaSizeSmall)
+ ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricSmallPushButtonHeight));
+ else if (sz == QAquaSizeMini)
+ ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricMiniPushButtonHeight));
+
+ if (!psh->icon().isNull()){
+ // If the button got an icon, and the icon is larger than the
+ // button, we can't decide on a default size
+ ret.setWidth(-1);
+ if (ret.height() < psh->iconSize().height())
+ ret.setHeight(-1);
+ }
+ else if (buttonText == QLatin1String("OK") || buttonText == QLatin1String("Cancel")){
+ // Aqua Style guidelines restrict the size of OK and Cancel buttons to 68 pixels.
+ // However, this doesn't work for German, therefore only do it for English,
+ // I suppose it would be better to do some sort of lookups for languages
+ // that like to have really long words.
+ ret.setWidth(77 - 8);
+ }
+ } else {
+ // The only sensible thing to do is to return whatever the style suggests...
+ if (sz == QAquaSizeLarge)
+ ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricPushButtonHeight));
+ else if (sz == QAquaSizeSmall)
+ ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricSmallPushButtonHeight));
+ else if (sz == QAquaSizeMini)
+ ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricMiniPushButtonHeight));
+ else
+ // Since there's no default size we return the large size...
+ ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricPushButtonHeight));
+ }
#if 0 //Not sure we are applying the rules correctly for RadioButtons/CheckBoxes --Sam
} else if (ct == QStyle::CT_RadioButton) {
QRadioButton *rdo = static_cast<QRadioButton *>(widg);
@@ -749,23 +764,30 @@
if (sz == QAquaSizeSmall) {
int width = 0, height = 0;
if (szHint == QSize(-1, -1)) { //just 'guess'..
- const QToolButton *bt = static_cast<const QToolButton *>(widg);
- if (!bt->icon().isNull()) {
- QSize iconSize = bt->iconSize();
- QSize pmSize = bt->icon().actualSize(QSize(32, 32), QIcon::Normal);
- width = qMax(width, qMax(iconSize.width(), pmSize.width()));
- height = qMax(height, qMax(iconSize.height(), pmSize.height()));
- }
- if (!bt->text().isNull() && bt->toolButtonStyle() != Qt::ToolButtonIconOnly) {
- int text_width = bt->fontMetrics().width(bt->text()),
- text_height = bt->fontMetrics().height();
- if (bt->toolButtonStyle() == Qt::ToolButtonTextUnderIcon) {
- width = qMax(width, text_width);
- height += text_height;
- } else {
- width += text_width;
- width = qMax(height, text_height);
+ const QToolButton *bt = qobject_cast<const QToolButton *>(widg);
+ // If this conversion fails then the widget was not what it claimed to be.
+ if(bt) {
+ if (!bt->icon().isNull()) {
+ QSize iconSize = bt->iconSize();
+ QSize pmSize = bt->icon().actualSize(QSize(32, 32), QIcon::Normal);
+ width = qMax(width, qMax(iconSize.width(), pmSize.width()));
+ height = qMax(height, qMax(iconSize.height(), pmSize.height()));
}
+ if (!bt->text().isNull() && bt->toolButtonStyle() != Qt::ToolButtonIconOnly) {
+ int text_width = bt->fontMetrics().width(bt->text()),
+ text_height = bt->fontMetrics().height();
+ if (bt->toolButtonStyle() == Qt::ToolButtonTextUnderIcon) {
+ width = qMax(width, text_width);
+ height += text_height;
+ } else {
+ width += text_width;
+ width = qMax(height, text_height);
+ }
+ }
+ } else {
+ // Let's return the size hint...
+ width = szHint.width();
+ height = szHint.height();
}
} else {
width = szHint.width();
@@ -778,37 +800,47 @@
break;
case QStyle::CT_Slider: {
int w = -1;
- const QSlider *sld = static_cast<const QSlider *>(widg);
- if (sz == QAquaSizeLarge) {
- if (sld->orientation() == Qt::Horizontal) {
- w = qt_mac_aqua_get_metric(kThemeMetricHSliderHeight);
- if (sld->tickPosition() != QSlider::NoTicks)
- w += qt_mac_aqua_get_metric(kThemeMetricHSliderTickHeight);
- } else {
- w = qt_mac_aqua_get_metric(kThemeMetricVSliderWidth);
- if (sld->tickPosition() != QSlider::NoTicks)
- w += qt_mac_aqua_get_metric(kThemeMetricVSliderTickWidth);
+ const QSlider *sld = qobject_cast<const QSlider *>(widg);
+ // If this conversion fails then the widget was not what it claimed to be.
+ if(sld) {
+ if (sz == QAquaSizeLarge) {
+ if (sld->orientation() == Qt::Horizontal) {
+ w = qt_mac_aqua_get_metric(kThemeMetricHSliderHeight);
+ if (sld->tickPosition() != QSlider::NoTicks)
+ w += qt_mac_aqua_get_metric(kThemeMetricHSliderTickHeight);
+ } else {
+ w = qt_mac_aqua_get_metric(kThemeMetricVSliderWidth);
+ if (sld->tickPosition() != QSlider::NoTicks)
+ w += qt_mac_aqua_get_metric(kThemeMetricVSliderTickWidth);
+ }
+ } else if (sz == QAquaSizeSmall) {
+ if (sld->orientation() == Qt::Horizontal) {
+ w = qt_mac_aqua_get_metric(kThemeMetricSmallHSliderHeight);
+ if (sld->tickPosition() != QSlider::NoTicks)
+ w += qt_mac_aqua_get_metric(kThemeMetricSmallHSliderTickHeight);
+ } else {
+ w = qt_mac_aqua_get_metric(kThemeMetricSmallVSliderWidth);
+ if (sld->tickPosition() != QSlider::NoTicks)
+ w += qt_mac_aqua_get_metric(kThemeMetricSmallVSliderTickWidth);
+ }
+ } else if (sz == QAquaSizeMini) {
+ if (sld->orientation() == Qt::Horizontal) {
+ w = qt_mac_aqua_get_metric(kThemeMetricMiniHSliderHeight);
+ if (sld->tickPosition() != QSlider::NoTicks)
+ w += qt_mac_aqua_get_metric(kThemeMetricMiniHSliderTickHeight);
+ } else {
+ w = qt_mac_aqua_get_metric(kThemeMetricMiniVSliderWidth);
+ if (sld->tickPosition() != QSlider::NoTicks)
+ w += qt_mac_aqua_get_metric(kThemeMetricMiniVSliderTickWidth);
+ }
}
- } else if (sz == QAquaSizeSmall) {
- if (sld->orientation() == Qt::Horizontal) {
- w = qt_mac_aqua_get_metric(kThemeMetricSmallHSliderHeight);
- if (sld->tickPosition() != QSlider::NoTicks)
- w += qt_mac_aqua_get_metric(kThemeMetricSmallHSliderTickHeight);
- } else {
- w = qt_mac_aqua_get_metric(kThemeMetricSmallVSliderWidth);
- if (sld->tickPosition() != QSlider::NoTicks)
- w += qt_mac_aqua_get_metric(kThemeMetricSmallVSliderTickWidth);
- }
- } else if (sz == QAquaSizeMini) {
- if (sld->orientation() == Qt::Horizontal) {
- w = qt_mac_aqua_get_metric(kThemeMetricMiniHSliderHeight);
- if (sld->tickPosition() != QSlider::NoTicks)
- w += qt_mac_aqua_get_metric(kThemeMetricMiniHSliderTickHeight);
- } else {
- w = qt_mac_aqua_get_metric(kThemeMetricMiniVSliderWidth);
- if (sld->tickPosition() != QSlider::NoTicks)
- w += qt_mac_aqua_get_metric(kThemeMetricMiniVSliderTickWidth);
- }
+ } else {
+ // This is tricky, we were requested to find a size for a slider which is not
+ // a slider. We don't know if this is vertical or horizontal or if we need to
+ // have tick marks or not.
+ // For this case we will return an horizontal slider without tick marks.
+ w = qt_mac_aqua_get_metric(kThemeMetricHSliderHeight);
+ w += qt_mac_aqua_get_metric(kThemeMetricHSliderTickHeight);
}
if (sld->orientation() == Qt::Horizontal)
ret.setHeight(w);
@@ -2379,7 +2411,12 @@
ret = 0;
break;
case PM_ToolBarFrameWidth:
- ret = 0;
+ ret = 1;
+ if (widget) {
+ if (QMainWindow * mainWindow = qobject_cast<QMainWindow *>(widget->parent()))
+ if (mainWindow->unifiedTitleAndToolBarOnMac())
+ ret = 0;
+ }
break;
default:
ret = QWindowsStyle::pixelMetric(metric, opt, widget);
@@ -4309,8 +4346,6 @@
rect.setY(0);
rect.setHeight(widget->height());
}
- if (opt->direction == Qt::RightToLeft)
- rect.adjust(15, 0, -20, 0);
}
break;
case SE_ProgressBarGroove:
@@ -5685,12 +5720,16 @@
break;
case CT_ToolButton:
if (widget && qobject_cast<const QToolBar *>(widget->parentWidget())) {
- sz.rwidth() += 4;
- if (sz.height() <= 32) {
- // Workaround strange HIToolBar bug when getting constraints.
- sz.rheight() += 1;
+ if (QMainWindow * mainWindow = qobject_cast<QMainWindow *>(widget->parent())) {
+ if (mainWindow->unifiedTitleAndToolBarOnMac()) {
+ sz.rwidth() += 4;
+ if (sz.height() <= 32) {
+ // Workaround strange HIToolBar bug when getting constraints.
+ sz.rheight() += 1;
+ }
+ return sz;
+ }
}
- return sz;
}
sz.rwidth() += 10;
sz.rheight() += 10;
--- a/src/gui/styles/qs60style.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qs60style.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -68,6 +68,10 @@
#include "qtoolbutton.h"
#include "qfocusframe.h"
#include "qformlayout.h"
+#include "qradiobutton.h"
+#include "qcheckbox.h"
+#include "qdesktopwidget.h"
+#include "qprogressbar.h"
#include "private/qtoolbarextension_p.h"
#include "private/qcombobox_p.h"
@@ -88,10 +92,10 @@
const layoutHeader QS60StylePrivate::m_layoutHeaders[] = {
// *** generated layout data ***
-{240,320,1,15,"QVGA Landscape"},
-{320,240,1,15,"QVGA Portrait"},
-{360,640,1,15,"NHD Landscape"},
-{640,360,1,15,"NHD Portrait"},
+{240,320,1,16,"QVGA Landscape"},
+{320,240,1,16,"QVGA Portrait"},
+{360,640,1,16,"NHD Landscape"},
+{640,360,1,16,"NHD Portrait"},
{352,800,1,12,"E90 Landscape"}
// *** End of generated data ***
};
@@ -100,10 +104,10 @@
const short QS60StylePrivate::data[][MAX_PIXELMETRICS] = {
// *** generated pixel metrics ***
-{5,0,-909,0,0,2,0,0,-1,7,12,19,13,13,6,200,-909,-909,-909,20,13,2,0,0,21,7,18,-909,3,3,1,-909,-909,0,1,0,0,12,20,15,15,18,18,1,115,18,0,-909,-909,-909,-909,0,0,16,2,-909,0,0,-909,16,-909,-909,-909,-909,32,18,55,24,55,3,3,4,9,13,-909,5,51,11,5,0,3,3,6,8,3,3,-909,2,-909,-909,-909,-909,5,5,3,1},
-{5,0,-909,0,0,1,0,0,-1,8,14,22,15,15,7,164,-909,-909,-909,19,15,2,0,0,21,8,27,-909,4,4,1,-909,-909,0,7,6,0,13,23,17,17,21,21,7,115,21,0,-909,-909,-909,-909,0,0,15,1,-909,0,0,-909,15,-909,-909,-909,-909,32,21,65,27,65,4,4,5,10,15,-909,5,58,13,5,0,4,4,7,9,4,4,-909,2,-909,-909,-909,-909,6,6,3,1},
-{7,0,-909,0,0,2,0,0,-1,25,69,28,19,19,9,258,-909,-909,-909,23,19,26,0,0,32,25,72,-909,5,5,2,-909,-909,0,7,21,0,17,29,22,22,27,27,7,173,29,0,-909,-909,-909,-909,0,0,25,2,-909,0,0,-909,25,-909,-909,-909,-909,87,27,77,35,77,5,5,6,8,19,-909,7,74,19,7,0,5,5,8,12,5,5,-909,3,-909,-909,-909,-909,7,7,3,1},
-{7,0,-909,0,0,2,0,0,-1,25,68,28,19,19,9,258,-909,-909,-909,31,19,6,0,0,32,25,60,-909,5,5,2,-909,-909,0,7,32,0,17,29,22,22,27,27,7,173,29,0,-909,-909,-909,-909,0,0,26,2,-909,0,0,-909,26,-909,-909,-909,-909,87,27,96,35,96,5,5,6,8,19,-909,7,74,22,7,0,5,5,8,12,5,5,-909,3,-909,-909,-909,-909,7,7,3,1},
+{5,0,-909,0,0,2,0,0,-1,7,12,19,13,13,6,200,-909,-909,-909,20,13,2,0,0,21,7,18,-909,3,3,1,-909,-909,0,1,0,0,12,20,15,15,18,18,1,115,18,0,-909,-909,-909,-909,0,0,16,2,-909,0,0,-909,16,-909,-909,-909,-909,32,18,55,24,55,4,4,4,9,13,-909,5,51,11,5,0,3,3,6,8,3,3,-909,2,-909,-909,-909,-909,5,5,3,1},
+{5,0,-909,0,0,1,0,0,-1,8,14,22,15,15,7,164,-909,-909,-909,19,15,2,0,0,21,8,27,-909,4,4,1,-909,-909,0,7,6,0,13,23,17,17,21,21,7,115,21,0,-909,-909,-909,-909,0,0,15,1,-909,0,0,-909,15,-909,-909,-909,-909,32,21,65,27,65,3,3,5,10,15,-909,5,58,13,5,0,4,4,7,9,4,4,-909,2,-909,-909,-909,-909,6,6,3,1},
+{7,0,-909,0,0,2,0,0,-1,25,69,28,19,19,9,258,-909,-909,-909,23,19,26,0,0,32,25,72,-909,5,5,2,-909,-909,0,7,21,0,17,29,22,22,27,27,7,173,29,0,-909,-909,-909,-909,0,0,25,2,-909,0,0,-909,25,-909,-909,-909,-909,87,27,77,35,77,13,13,6,8,19,-909,7,74,19,7,0,5,5,8,12,5,5,-909,3,-909,-909,-909,-909,7,7,3,1},
+{7,0,-909,0,0,2,0,0,-1,25,68,28,19,19,9,258,-909,-909,-909,31,19,6,0,0,32,25,60,-909,5,5,2,-909,-909,0,7,32,0,17,29,22,22,27,27,7,173,29,0,-909,-909,-909,-909,0,0,26,2,-909,0,0,-909,26,-909,-909,-909,-909,87,27,96,35,96,12,12,6,8,19,-909,7,74,22,7,0,5,5,8,12,5,5,-909,3,-909,-909,-909,-909,7,7,3,1},
{7,0,-909,0,0,2,0,0,-1,10,20,27,18,18,9,301,-909,-909,-909,29,18,5,0,0,35,7,32,-909,5,5,2,-909,-909,0,2,8,0,16,28,21,21,26,26,2,170,26,0,-909,-909,-909,-909,0,0,21,6,-909,0,0,-909,-909,-909,-909,-909,-909,54,26,265,34,265,5,5,6,3,18,-909,7,72,19,7,0,5,6,8,11,6,5,-909,2,-909,-909,-909,-909,5,5,3,1}
// *** End of generated data ***
};
@@ -564,9 +568,11 @@
const QSize &size, QPainter *painter, SkinElementFlags flags)
{
QPixmap result;
+ const int animationFrame = (flags & SF_Animation) ? currentAnimationFrame(part) : 0;
+
const QString cacheKey =
- QString::fromLatin1("S60Style: SkinParts=%1 QSize=%2|%3 SkinPartFlags=%4")
- .arg((int)part).arg(size.width()).arg(size.height()).arg((int)flags);
+ QString::fromLatin1("S60Style: SkinParts=%1 QSize=%2|%3 SkinPartFlags=%4 AnimationFrame=%5")
+ .arg((int)part).arg(size.width()).arg(size.height()).arg((int)flags).arg(animationFrame);
if (!QPixmapCache::find(cacheKey, result)) {
result = QS60StylePrivate::part(part, size, painter, flags);
QPixmapCache::insert(cacheKey, result);
@@ -672,8 +678,7 @@
s60Color(QS60StyleEnums::CL_QsnHighlightColors, 2, 0));
// set background image as a texture brush
palette->setBrush(QPalette::Window, backgroundTexture());
- // set these as transparent so that styled full screen theme background is visible
- palette->setColor(QPalette::AlternateBase, Qt::transparent);
+ // set as transparent so that styled full screen theme background is visible
palette->setBrush(QPalette::Base, Qt::transparent);
// set button and tooltipbase based on pixel colors
const QColor buttonColor = colorFromFrameGraphics(SF_ButtonNormal);
@@ -685,6 +690,9 @@
palette->setColor(QPalette::Midlight, palette->color(QPalette::Button).lighter(125));
palette->setColor(QPalette::Mid, palette->color(QPalette::Button).darker(150));
palette->setColor(QPalette::Shadow, Qt::black);
+ QColor alternateBase = palette->light().color();
+ alternateBase.setAlphaF(0.8);
+ palette->setColor(QPalette::AlternateBase, alternateBase);
QApplication::setPalette(*palette); //calling QApplication::setPalette clears palette hash
setThemePaletteHash(palette);
@@ -775,6 +783,11 @@
QApplication::setPalette(widgetPalette, "QComboBox");
widgetPalette = *palette;
+ widgetPalette.setColor(QPalette::WindowText, s60Color(QS60StyleEnums::CL_QsnTextColors, 7, 0));
+ QApplication::setPalette(widgetPalette, "QRadioButton");
+ QApplication::setPalette(widgetPalette, "QCheckBox");
+ widgetPalette = *palette;
+
widgetPalette.setColor(QPalette::WindowText, mainAreaTextColor);
widgetPalette.setColor(QPalette::Button, QApplication::palette().color(QPalette::Button));
widgetPalette.setColor(QPalette::Dark, mainAreaTextColor.darker());
@@ -813,13 +826,13 @@
//ratio of 1:2 for horizontal tab bars (and 2:1 for vertical ones).
result.setWidth(result.height() >> 1);
break;
-
+
case QS60StyleEnums::SP_QgnGrafNsliderEndLeft:
case QS60StyleEnums::SP_QgnGrafNsliderEndRight:
case QS60StyleEnums::SP_QgnGrafNsliderMiddle:
result.setWidth(result.height() >> 1);
break;
-
+
case QS60StyleEnums::SP_QgnGrafNsliderMarker:
case QS60StyleEnums::SP_QgnGrafNsliderMarkerSelected:
result.scale(pixelMetric(QStyle::PM_SliderLength),
@@ -922,10 +935,10 @@
horizontal ? QS60StylePrivate::SE_ScrollBarGrooveHorizontal : QS60StylePrivate::SE_ScrollBarGrooveVertical;
QS60StylePrivate::drawSkinElement(grooveElement, painter, grooveRect, flags);
- const QStyle::SubControls subControls = optionSlider->subControls;
+ const SubControls subControls = optionSlider->subControls;
// select correct slider (horizontal/vertical/pressed)
- const bool sliderPressed = ((optionSlider->state & QStyle::State_Sunken) && (subControls & SC_ScrollBarSlider));
+ const bool sliderPressed = ((optionSlider->state & State_Sunken) && (subControls & SC_ScrollBarSlider));
const QS60StylePrivate::SkinElements handleElement =
horizontal ?
( sliderPressed ?
@@ -946,13 +959,13 @@
const bool horizontal = optionSlider->orientation == Qt::Horizontal;
//Highlight
-/* if (optionSlider->state & QStyle::State_HasFocus)
+/* if (optionSlider->state & State_HasFocus)
drawPrimitive(PE_FrameFocusRect, optionSlider, painter, widget);*/
-
+
//Groove graphics
if (QS60StylePrivate::hasSliderGrooveGraphic()) {
- const QS60StylePrivate::SkinElements grooveElement = horizontal ?
- QS60StylePrivate::SE_SliderGrooveHorizontal :
+ const QS60StylePrivate::SkinElements grooveElement = horizontal ?
+ QS60StylePrivate::SE_SliderGrooveHorizontal :
QS60StylePrivate::SE_SliderGrooveVertical;
QS60StylePrivate::drawSkinElement(grooveElement, painter, sliderGroove, flags);
} else {
@@ -972,10 +985,10 @@
//Handle graphics
const QRect sliderHandle = subControlRect(control, optionSlider, SC_SliderHandle, widget);
QS60StylePrivate::SkinElements handleElement;
- if (optionSlider->state & QStyle::State_Sunken)
+ if (optionSlider->state & State_Sunken)
handleElement =
horizontal ? QS60StylePrivate::SE_SliderHandleSelectedHorizontal : QS60StylePrivate::SE_SliderHandleSelectedVertical;
- else
+ else
handleElement =
horizontal ? QS60StylePrivate::SE_SliderHandleHorizontal : QS60StylePrivate::SE_SliderHandleVertical;
QS60StylePrivate::drawSkinElement(handleElement, painter, sliderHandle, flags);
@@ -994,7 +1007,7 @@
buttonOption.QStyleOption::operator=(*cmb);
const int maxHeight = cmbxFrame.height();
const int maxWidth = cmbxFrame.width() - cmbxEditField.width();
- const int topLeftPoint = direction ?
+ const int topLeftPoint = direction ?
(cmbxEditField.right() + 1) : (cmbxEditField.left() + 1 - maxWidth);
const QRect buttonRect(topLeftPoint, cmbxEditField.top(), maxWidth, maxHeight);
buttonOption.rect = buttonRect;
@@ -1020,102 +1033,62 @@
#ifndef QT_NO_TOOLBUTTON
case CC_ToolButton:
if (const QStyleOptionToolButton *toolBtn = qstyleoption_cast<const QStyleOptionToolButton *>(option)) {
- const State bflags = toolBtn->state;
+ State bflags = toolBtn->state & ~State_Sunken;
+
+ if (bflags & State_AutoRaise) {
+ if (!(bflags & State_MouseOver) || !(bflags & State_Enabled)) {
+ bflags &= ~State_Raised;
+ }
+ }
+ State mflags = bflags;
+ if (toolBtn->state & State_Sunken) {
+ if (toolBtn->activeSubControls & SC_ToolButton)
+ bflags |= State_Sunken;
+ mflags |= State_Sunken;
+ }
+
const QRect button(subControlRect(control, toolBtn, SC_ToolButton, widget));
QRect menuRect = QRect();
if (toolBtn->subControls & SC_ToolButtonMenu)
menuRect = subControlRect(control, toolBtn, SC_ToolButtonMenu, widget);
- QStyleOptionToolButton toolButton = *toolBtn;
-
- if (sub&SC_ToolButton) {
+ if (toolBtn->subControls & SC_ToolButton) {
QStyleOption tool(0);
tool.palette = toolBtn->palette;
- // Check if toolbutton is in toolbar.
- QToolBar *toolBar = 0;
- if (widget)
- toolBar = qobject_cast<QToolBar *>(widget->parentWidget());
-
- if (bflags & (State_Sunken | State_On | State_Raised)) {
+ if (bflags & (State_Sunken | State_On | State_Raised | State_Enabled)) {
tool.rect = button.unite(menuRect);
tool.state = bflags;
-
- // todo: I'd like to move extension button next to where last button is
- // however, the painter seems to want to clip the button rect even if I turn of the clipping.
- if (toolBar && (qobject_cast<const QToolBarExtension *>(widget))){
- /*QList<QAction *> actionList = toolBar->actions();
- const int actionCount = actionList.count();
- const int toolbarWidth = toolBar->width();
- const int extButtonWidth = pixelMetric(PM_ToolBarExtensionExtent, option, widget);
- const int toolBarButtonWidth = pixelMetric(PM_ToolBarIconSize, option, widget);
- const int frame = pixelMetric(PM_ToolBarFrameWidth, option, widget);
- const int margin = pixelMetric(PM_ToolBarItemMargin, option, widget);
- const int border = frame + margin;
- const int spacing = pixelMetric(PM_ToolBarItemSpacing, option, widget);
- const int toolBarButtonArea = toolbarWidth - extButtonWidth - spacing - 2*border;
- const int numberOfVisibleButtons = toolBarButtonArea / toolBarButtonWidth;
- // new extension button place is after border and all the other visible buttons (with spacings)
- const int newXForExtensionButton = numberOfVisibleButtons * toolBarButtonWidth + (numberOfVisibleButtons-1)*spacing + border;
- painter->save();
- painter->setClipping(false);
- tool.rect.translate(-newXForExtensionButton,0);
- painter->restore();*/
- }
-
- if (toolBar){
- /*if (toolBar->orientation() == Qt::Vertical){
- // todo: I'd like to make all vertical buttons the same size, but again the painter
- // prefers to use clipping for button rects, even though clipping has been set off.
- painter->save();
- painter->setClipping(false);
-
- const int origWidth = tool.rect.width();
- const int newWidth = toolBar->width()-2*pixelMetric(PM_ToolBarFrameWidth, option, widget);
- painter->translate(origWidth-newWidth,0);
- tool.rect.translate(origWidth-tool.rect.width(),0);
- tool.rect.setWidth(newWidth);
-
- if (option->state & QStyle::State_Sunken)
- QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_ToolBarButtonPressed, painter, tool.rect, flags);
- else
- QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_ToolBarButton, painter, tool.rect, flags);
-
- }*/
- if (option->state & QStyle::State_Sunken)
- QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_ToolBarButtonPressed, painter, tool.rect, flags);
- else
- QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_ToolBarButton, painter, tool.rect, flags);
- /*
- if (toolBar->orientation() == Qt::Vertical)
- painter->restore();
- */
- } else {
- drawPrimitive(PE_PanelButtonTool, &tool, painter, widget);
- }
-
- if (toolButton.subControls & SC_ToolButtonMenu) {
- tool.rect = menuRect;
- tool.state = bflags;
- drawPrimitive(PE_IndicatorArrowDown, &tool, painter, widget);
- }
+ const QToolButton *toolButtonWidget = qobject_cast<const QToolButton *>(widget);
+ QS60StylePrivate::SkinElements element;
+ if (toolButtonWidget)
+ element = (toolButtonWidget->isDown()) ? QS60StylePrivate::SE_ToolBarButtonPressed : QS60StylePrivate::SE_ToolBarButton;
+ else
+ element = (option->state & State_Sunken) ? QS60StylePrivate::SE_ToolBarButtonPressed : QS60StylePrivate::SE_ToolBarButton;
+ QS60StylePrivate::drawSkinElement(element, painter, tool.rect, flags);
+ drawPrimitive(PE_PanelButtonTool, &tool, painter, widget);
+ }
+ if (toolBtn->subControls & SC_ToolButtonMenu) {
+ tool.rect = menuRect;
+ tool.state = mflags;
+ drawPrimitive(PE_IndicatorArrowDown, &tool, painter, widget);
}
}
-
+ QStyleOptionToolButton toolButton = *toolBtn;
if (toolBtn->features & QStyleOptionToolButton::Arrow) {
- QStyle::PrimitiveElement pe;
+ PrimitiveElement pe;
switch (toolBtn->arrowType) {
case Qt::LeftArrow:
- pe = QStyle::PE_IndicatorArrowLeft;
+ pe = PE_IndicatorArrowLeft;
break;
case Qt::RightArrow:
- pe = QStyle::PE_IndicatorArrowRight;
+ pe = PE_IndicatorArrowRight;
break;
case Qt::UpArrow:
- pe = QStyle::PE_IndicatorArrowUp;
+ pe = PE_IndicatorArrowUp;
break;
case Qt::DownArrow:
- pe = QStyle::PE_IndicatorArrowDown;
+ pe = PE_IndicatorArrowDown;
break;
default:
break; }
@@ -1199,7 +1172,7 @@
// Draw frame
const QRect textRect = subControlRect(CC_GroupBox, option, SC_GroupBoxLabel, widget);
const QRect checkBoxRect = subControlRect(CC_GroupBox, option, SC_GroupBoxCheckBox, widget);
- if (groupBox->subControls & QStyle::SC_GroupBoxFrame) {
+ if (groupBox->subControls & SC_GroupBoxFrame) {
QStyleOptionFrameV2 frame;
frame.QStyleOption::operator=(*groupBox);
frame.features = groupBox->features;
@@ -1210,14 +1183,14 @@
}
// Draw title
- if ((groupBox->subControls & QStyle::SC_GroupBoxLabel) && !groupBox->text.isEmpty()) {
+ if ((groupBox->subControls & SC_GroupBoxLabel) && !groupBox->text.isEmpty()) {
const QColor textColor = groupBox->textColor;
painter->save();
if (textColor.isValid())
painter->setPen(textColor);
int alignment = int(groupBox->textAlignment);
- if (!styleHint(QStyle::SH_UnderlineShortcut, option, widget))
+ if (!styleHint(SH_UnderlineShortcut, option, widget))
alignment |= Qt::TextHideMnemonic;
drawItemText(painter, textRect, Qt::TextShowMnemonic | Qt::AlignHCenter | Qt::AlignVCenter | alignment,
@@ -1249,6 +1222,31 @@
Q_D(const QS60Style);
const QS60StylePrivate::SkinElementFlags flags = (option->state & State_Enabled) ? QS60StylePrivate::SF_StateEnabled : QS60StylePrivate::SF_StateDisabled;
switch (element) {
+ case CE_CheckBox:
+ case CE_RadioButton:
+ if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(option)) {
+ bool isRadio = (element == CE_RadioButton);
+ // Highlight needs to be drawn first, as it goes "underneath" the text and indicator.
+ if (btn->state & State_HasFocus) {
+ QStyleOptionFocusRect fropt;
+ fropt.QStyleOption::operator=(*btn);
+ fropt.rect = subElementRect(isRadio ? SE_RadioButtonFocusRect
+ : SE_CheckBoxFocusRect, btn, widget);
+ drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget);
+ }
+ QStyleOptionButton subopt = *btn;
+
+ subopt.rect = subElementRect(isRadio ? SE_RadioButtonIndicator
+ : SE_CheckBoxIndicator, btn, widget);
+ drawPrimitive(isRadio ? PE_IndicatorRadioButton : PE_IndicatorCheckBox,
+ &subopt, painter, widget);
+ subopt.rect = subElementRect(isRadio ? SE_RadioButtonContents
+ : SE_CheckBoxContents, btn, widget);
+
+ drawControl(isRadio ? CE_RadioButtonLabel : CE_CheckBoxLabel, &subopt, painter, widget);
+ }
+ break;
+
case CE_PushButton:
if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(option)) {
@@ -1261,13 +1259,13 @@
break;
case CE_PushButtonBevel:
if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
- const bool isDisabled = !(option->state & QStyle::State_Enabled);
+ const bool isDisabled = !(option->state & State_Enabled);
const bool isFlat = button->features & QStyleOptionButton::Flat;
QS60StyleEnums::SkinParts skinPart;
QS60StylePrivate::SkinElements skinElement;
if (!isDisabled) {
- const bool isPressed = (option->state & QStyle::State_Sunken) ||
- (option->state & QStyle::State_On);
+ const bool isPressed = (option->state & State_Sunken) ||
+ (option->state & State_On);
if (isFlat) {
skinPart =
isPressed ? QS60StyleEnums::SP_QsnFrButtonTbCenterPressed : QS60StyleEnums::SP_QsnFrButtonTbCenter;
@@ -1292,7 +1290,7 @@
if (const QStyleOptionToolButton *toolBtn = qstyleoption_cast<const QStyleOptionToolButton *>(option)) {
QStyleOptionToolButton optionToolButton = *toolBtn;
- if (!optionToolButton.icon.isNull() && (optionToolButton.state & QStyle::State_Sunken)
+ if (!optionToolButton.icon.isNull() && (optionToolButton.state & State_Sunken)
&& (optionToolButton.state & State_Enabled)) {
const QIcon::State state = optionToolButton.state & State_On ? QIcon::On : QIcon::Off;
@@ -1351,8 +1349,8 @@
painter->save();
painter->setClipRect(voptAdj.rect);
- const bool isSelected = (vopt->state & QStyle::State_Selected);
- const bool hasFocus = (vopt->state & QStyle::State_HasFocus);
+ const bool isSelected = (vopt->state & State_Selected);
+ const bool hasFocus = (vopt->state & State_HasFocus);
bool isScrollBarVisible = false;
int scrollBarWidth = 0;
@@ -1426,8 +1424,8 @@
}
// draw the icon
- const QIcon::Mode mode = (voptAdj.state & QStyle::State_Enabled) ? QIcon::Normal : QIcon::Disabled;
- const QIcon::State state = voptAdj.state & QStyle::State_Open ? QIcon::On : QIcon::Off;
+ const QIcon::Mode mode = (voptAdj.state & State_Enabled) ? QIcon::Normal : QIcon::Disabled;
+ const QIcon::State state = voptAdj.state & State_Open ? QIcon::On : QIcon::Off;
voptAdj.icon.paint(painter, iconRect, voptAdj.decorationAlignment, mode, state);
// Draw selection check mark. Show check mark only in multi selection modes.
@@ -1439,29 +1437,29 @@
QStyleOptionViewItemV4 checkMarkOption(voptAdj);
// Draw selection mark.
- if (voptAdj.state & QStyle::State_Selected && !singleSelection) {
+ if (voptAdj.state & State_Selected && !singleSelection) {
checkMarkOption.rect = selectionRect;
- drawPrimitive(QStyle::PE_IndicatorViewItemCheck, &checkMarkOption, painter, widget);
+ drawPrimitive(PE_IndicatorViewItemCheck, &checkMarkOption, painter, widget);
if ( textRect.right() > selectionRect.left() )
textRect.setRight(selectionRect.left());
} else if (singleSelection &&
voptAdj.features & QStyleOptionViewItemV2::HasCheckIndicator &&
selectionRect.isValid()) {
checkMarkOption.rect = selectionRect;
- checkMarkOption.state = checkMarkOption.state & ~QStyle::State_HasFocus;
+ checkMarkOption.state = checkMarkOption.state & ~State_HasFocus;
switch (vopt->checkState) {
case Qt::Unchecked:
- checkMarkOption.state |= QStyle::State_Off;
+ checkMarkOption.state |= State_Off;
break;
case Qt::PartiallyChecked:
- checkMarkOption.state |= QStyle::State_NoChange;
+ checkMarkOption.state |= State_NoChange;
break;
case Qt::Checked:
- checkMarkOption.state |= QStyle::State_On;
+ checkMarkOption.state |= State_On;
break;
}
- drawPrimitive(QStyle::PE_IndicatorViewItemCheck, &checkMarkOption, painter, widget);
+ drawPrimitive(PE_IndicatorViewItemCheck, &checkMarkOption, painter, widget);
}
}
@@ -1486,7 +1484,7 @@
case CE_TabBarTabShape:
if (const QStyleOptionTabV3 *optionTab = qstyleoption_cast<const QStyleOptionTabV3 *>(option)) {
QStyleOptionTabV3 optionTabAdj = *optionTab;
- const bool isSelected = optionTab->state & QStyle::State_Selected;
+ const bool isSelected = optionTab->state & State_Selected;
const bool directionMirrored = (optionTab->direction == Qt::RightToLeft);
QS60StylePrivate::SkinElements skinElement;
switch (optionTab->shape) {
@@ -1521,9 +1519,9 @@
skinElement==QS60StylePrivate::SE_TabBarTabSouthActive||
skinElement==QS60StylePrivate::SE_TabBarTabWestActive) {
const int borderThickness =
- QS60StylePrivate::pixelMetric(QStyle::PM_DefaultFrameWidth);
+ QS60StylePrivate::pixelMetric(PM_DefaultFrameWidth);
const int tabOverlap =
- QS60StylePrivate::pixelMetric(QStyle::PM_TabBarTabOverlap) - borderThickness;
+ QS60StylePrivate::pixelMetric(PM_TabBarTabOverlap) - borderThickness;
//todo: draw navi wipe behind tabbar - must be drawn with first draw
if (skinElement==QS60StylePrivate::SE_TabBarTabEastInactive||
@@ -1546,9 +1544,9 @@
QStyleOptionTabV3 optionTab = *tab;
QRect tr = optionTab.rect;
const bool directionMirrored = (optionTab.direction == Qt::RightToLeft);
- const int borderThickness = QS60StylePrivate::pixelMetric(QStyle::PM_DefaultFrameWidth);
+ const int borderThickness = QS60StylePrivate::pixelMetric(PM_DefaultFrameWidth);
const int tabOverlap =
- QS60StylePrivate::pixelMetric(QStyle::PM_TabBarTabOverlap) - borderThickness;
+ QS60StylePrivate::pixelMetric(PM_TabBarTabOverlap) - borderThickness;
const QRect windowRect = painter->window();
switch (tab->shape) {
@@ -1602,12 +1600,12 @@
m.rotate(newRotation);
painter->setTransform(m, true);
}
- tr.adjust(0, 0, pixelMetric(QStyle::PM_TabBarTabShiftHorizontal, tab, widget),
- pixelMetric(QStyle::PM_TabBarTabShiftVertical, tab, widget));
+ tr.adjust(0, 0, pixelMetric(PM_TabBarTabShiftHorizontal, tab, widget),
+ pixelMetric(PM_TabBarTabShiftVertical, tab, widget));
if (selected) {
- tr.setBottom(tr.bottom() - pixelMetric(QStyle::PM_TabBarTabShiftVertical, tab, widget));
- tr.setRight(tr.right() - pixelMetric(QStyle::PM_TabBarTabShiftHorizontal, tab, widget));
+ tr.setBottom(tr.bottom() - pixelMetric(PM_TabBarTabShiftVertical, tab, widget));
+ tr.setRight(tr.right() - pixelMetric(PM_TabBarTabShiftHorizontal, tab, widget));
}
int alignment = Qt::AlignCenter | Qt::TextShowMnemonic;
@@ -1648,17 +1646,20 @@
// busy indicator
const QS60StylePrivate::SkinElementFlag orientationFlag = optionProgressBar->orientation == Qt::Horizontal ?
QS60StylePrivate::SF_PointNorth : QS60StylePrivate::SF_PointWest;
- QS60StylePrivate::drawSkinPart(QS60StyleEnums::SP_QgnGrafBarWait, painter, progressRect, flags | orientationFlag);
+
+ QS60StylePrivate::drawSkinPart(QS60StyleEnums::SP_QgnGrafBarWaitAnim,
+ painter, progressRect, flags | orientationFlag | QS60StylePrivate::SF_Animation );
} else {
const qreal progressFactor = (optionProgressBar->minimum == optionProgressBar->maximum) ? 1.0
: (qreal)optionProgressBar->progress / optionProgressBar->maximum;
+ const int frameWidth = pixelMetric(PM_DefaultFrameWidth, option, widget);
if (optionProgressBar->orientation == Qt::Horizontal) {
progressRect.setWidth(int(progressRect.width() * progressFactor));
if(optionProgressBar->direction == Qt::RightToLeft)
- progressRect.translate(optionProgressBar->rect.width()-progressRect.width(), 0);
- progressRect.adjust(1, 0, -1, 0);
+ progressRect.translate(optionProgressBar->rect.width() - progressRect.width(), 0);
+ progressRect.adjust(frameWidth, 0, -frameWidth, 0);
} else {
- progressRect.adjust(0, 1, 0, -1);
+ progressRect.adjust(0, frameWidth, 0, -frameWidth);
progressRect.setTop(progressRect.bottom() - int(progressRect.height() * progressFactor));
}
@@ -1714,9 +1715,9 @@
QRect textRect = subElementRect(SE_ItemViewItemText, &optionMenuItem, widget);
//todo: move the vertical spacing stuff into subElementRect
- const int vSpacing = QS60StylePrivate::pixelMetric(QStyle::PM_LayoutVerticalSpacing);
+ const int vSpacing = QS60StylePrivate::pixelMetric(PM_LayoutVerticalSpacing);
if (checkable){
- const int hSpacing = QS60StylePrivate::pixelMetric(QStyle::PM_LayoutHorizontalSpacing);
+ const int hSpacing = QS60StylePrivate::pixelMetric(PM_LayoutHorizontalSpacing);
QStyleOptionMenuItem optionCheckBox;
optionCheckBox.QStyleOptionMenuItem::operator=(*menuItem);
optionCheckBox.rect.setWidth(pixelMetric(PM_IndicatorWidth));
@@ -1754,7 +1755,7 @@
QStyleOptionMenuItem arrowOptions;
arrowOptions.QStyleOption::operator=(*menuItem);
const int indicatorWidth = (pixelMetric(PM_ListViewIconSize, option, widget) >> 1) +
- pixelMetric(QStyle::PM_LayoutVerticalSpacing, option, widget);
+ pixelMetric(PM_LayoutVerticalSpacing, option, widget);
if (optionMenuItem.direction == Qt::LeftToRight)
arrowOptions.rect.setLeft(textRect.right());
arrowOptions.rect.setWidth(indicatorWidth);
@@ -1925,8 +1926,7 @@
break;
case CE_MenuScroller:
break;
- case CE_FocusFrame:
- {
+ case CE_FocusFrame: {
// The pen width should nearly fill the layoutspacings around the widget
const int penWidth =
qMin(pixelMetric(QS60Style::PM_LayoutVerticalSpacing), pixelMetric(QS60Style::PM_LayoutHorizontalSpacing))
@@ -1985,11 +1985,21 @@
*/
void QS60Style::drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
{
- Q_D(const QS60Style);
const QS60StylePrivate::SkinElementFlags flags = (option->state & State_Enabled) ? QS60StylePrivate::SF_StateEnabled : QS60StylePrivate::SF_StateDisabled;
bool commonStyleDraws = false;
switch (element) {
+ case PE_FrameFocusRect: {
+ //Draw themed highlight to radiobuttons and checkboxes.
+ //For other widgets skip, unless palette has been modified. In that case, draw with commonstyle.
+ if (option->palette.highlight().color() == QS60StylePrivate::themePalette()->highlight().color())
+ if ((qstyleoption_cast<const QStyleOptionFocusRect *>(option) &&
+ (qobject_cast<const QRadioButton *>(widget) || qobject_cast<const QCheckBox *>(widget))))
+ QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_ListHighlight, painter, option->rect, flags);
+ else
+ commonStyleDraws = true;
+ }
+ break;
#ifndef QT_NO_LINEEDIT
case PE_PanelLineEdit:
if (const QStyleOptionFrame *lineEdit = qstyleoption_cast<const QStyleOptionFrame *>(option)) {
@@ -2004,15 +2014,14 @@
}
break;
#endif // QT_NO_LINEEDIT
- case PE_IndicatorCheckBox:
- {
+ case PE_IndicatorCheckBox: {
// Draw checkbox indicator as color skinned graphics.
- const QS60StyleEnums::SkinParts skinPart = (option->state & QStyle::State_On) ?
+ const QS60StyleEnums::SkinParts skinPart = (option->state & State_On) ?
QS60StyleEnums::SP_QgnIndiCheckboxOn : QS60StyleEnums::SP_QgnIndiCheckboxOff;
painter->save();
- QColor themeColor = QS60StylePrivate::themePalette()->windowText().color();
- QColor windowTextColor = option->palette.windowText().color();
+ const QColor themeColor = QS60StylePrivate::themePalette()->windowText().color();
+ const QColor windowTextColor = option->palette.windowText().color();
if (themeColor != windowTextColor)
painter->setPen(windowTextColor);
@@ -2032,7 +2041,7 @@
if (checkBoxVisible && singleSelection) {
drawPrimitive(PE_IndicatorCheckBox, option, painter, widget);
// ... or normal "tick" selection at the end.
- } else if (option->state & QStyle::State_Selected) {
+ } else if (option->state & State_Selected) {
QRect tickRect = option->rect;
const int frameBorderWidth = QS60StylePrivate::pixelMetric(PM_Custom_FrameCornerWidth);
// adjust tickmark rect to exclude frame border
@@ -2059,15 +2068,15 @@
buttonRect.adjust(0, -newY, -1, -newY);
painter->save();
- QColor themeColor = d->s60Color(QS60StyleEnums::CL_QsnTextColors, 6, option);
- QColor buttonTextColor = option->palette.buttonText().color();
+ const QColor themeColor = QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, option);
+ const QColor buttonTextColor = option->palette.buttonText().color();
if (themeColor != buttonTextColor)
painter->setPen(buttonTextColor);
else
painter->setPen(themeColor);
// Draw radiobutton indicator as color skinned graphics.
- QS60StyleEnums::SkinParts skinPart = (option->state & QStyle::State_On) ?
+ QS60StyleEnums::SkinParts skinPart = (option->state & State_On) ?
QS60StyleEnums::SP_QgnIndiRadiobuttOn : QS60StyleEnums::SP_QgnIndiRadiobuttOff;
QS60StylePrivate::drawSkinPart(skinPart, painter, buttonRect,
(flags | QS60StylePrivate::SF_ColorSkinned));
@@ -2077,15 +2086,14 @@
case PE_PanelButtonCommand:
case PE_PanelButtonTool:
case PE_PanelButtonBevel:
- case PE_FrameButtonBevel: {
+ case PE_FrameButtonBevel:
if (QS60StylePrivate::canDrawThemeBackground(option->palette.base())) {
- const bool isPressed = option->state & QStyle::State_Sunken;
+ const bool isPressed = option->state & State_Sunken;
const QS60StylePrivate::SkinElements skinElement =
isPressed ? QS60StylePrivate::SE_ButtonPressed : QS60StylePrivate::SE_ButtonNormal;
QS60StylePrivate::drawSkinElement(skinElement, painter, option->rect, flags);
} else {
commonStyleDraws = true;
- }
}
break;
#ifndef QT_NO_TOOLBUTTON
@@ -2207,7 +2215,6 @@
break;
#ifndef QT_NO_ITEMVIEWS
case PE_PanelItemViewItem:
- case PE_PanelItemViewRow: // ### Qt 5: remove
break;
#endif //QT_NO_ITEMVIEWS
@@ -2276,7 +2283,23 @@
}
}
break;
-
+ case PE_PanelItemViewRow: // ### Qt 5: remove
+#ifndef QT_NO_ITEMVIEWS
+ if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(option)) {
+ if (vopt->palette.base().texture().cacheKey() != QS60StylePrivate::m_themePalette->base().texture().cacheKey()) {
+ //QPalette::Base has been changed, let commonstyle draw the item
+ commonStyleDraws = true;
+ } else {
+ QPalette::ColorGroup cg = vopt->state & State_Enabled ? QPalette::Normal : QPalette::Disabled;
+ if (cg == QPalette::Normal && !(vopt->state & State_Active))
+ cg = QPalette::Inactive;
+ if (vopt->features & QStyleOptionViewItemV2::Alternate)
+ painter->fillRect(vopt->rect, vopt->palette.brush(cg, QPalette::AlternateBase));
+ //apart from alternate base, no background for list item is drawn for S60Style
+ }
+ }
+#endif
+ break;
case PE_PanelScrollAreaCorner:
break;
@@ -2361,8 +2384,7 @@
if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt))
sz += QSize(2 * f->lineWidth, 4 * f->lineWidth);
break;
- case CT_TabBarTab:
- {
+ case CT_TabBarTab: {
const QSize naviPaneSize = QS60StylePrivate::naviPaneSize();
sz = QCommonStyle::sizeFromContents(ct, opt, csz, widget);
if (naviPaneSize.height() > sz.height())
@@ -2374,8 +2396,19 @@
if (QS60StylePrivate::isTouchSupported())
//Make itemview easier to use in touch devices
//QCommonStyle does not adjust height with horizontal margin, it only adjusts width
- sz.setHeight(sz.height() + 2 * pixelMetric(QStyle::PM_FocusFrameVMargin));
+ sz.setHeight(sz.height() + 2 * pixelMetric(PM_FocusFrameVMargin));
break;
+#ifndef QT_NO_COMBOBOX
+ case CT_ComboBox: {
+ // Fixing Ui design issues with too wide QComboBoxes and greedy SizeHints
+ // Make sure, that the combobox says within the screen.
+ const QSize desktopContentSize = QApplication::desktop()->availableGeometry().size()
+ -QSize(pixelMetric(PM_LayoutLeftMargin) + pixelMetric(PM_LayoutRightMargin), 0);
+ sz = QCommonStyle::sizeFromContents(ct, opt, csz, widget).
+ boundedTo(desktopContentSize);
+ }
+ break;
+#endif
default:
sz = QCommonStyle::sizeFromContents( ct, opt, csz, widget);
break;
@@ -2414,7 +2447,7 @@
retValue = QPalette::Base;
break;
case SH_ItemView_ActivateItemOnSingleClick:
- retValue = true;
+ retValue = QS60StylePrivate::isSingleClickUi();
break;
case SH_ProgressDialog_TextLabelAlignment:
retValue = (QApplication::layoutDirection() == Qt::LeftToRight) ?
@@ -2526,7 +2559,7 @@
if (const QStyleOptionSpinBox *spinbox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
const int frameThickness = spinbox->frame ? pixelMetric(PM_SpinBoxFrameWidth, spinbox, widget) : 0;
const int buttonMargin = spinbox->frame ? 2 : 0;
- const int buttonWidth = QS60StylePrivate::pixelMetric(QStyle::PM_ButtonIconSize) + 2 * buttonMargin;
+ const int buttonWidth = QS60StylePrivate::pixelMetric(PM_ButtonIconSize) + 2 * buttonMargin;
QSize buttonSize;
buttonSize.setHeight(qMax(8, spinbox->rect.height() - frameThickness));
//width should at least be equal to height
@@ -2575,34 +2608,36 @@
ret = cmb->rect;
const int width = cmb->rect.width();
const int height = cmb->rect.height();
- const int buttonIconSize = QS60StylePrivate::pixelMetric(QStyle::PM_ButtonIconSize);
+ const int buttonIconSize = QS60StylePrivate::pixelMetric(PM_ButtonIconSize);
const int buttonMargin = cmb->frame ? 2 : 0;
// lets use spinbox frame here as well, as no combobox specific value available.
const int frameThickness = cmb->frame ? pixelMetric(PM_SpinBoxFrameWidth, cmb, widget) : 0;
const int buttonWidth = qMax(cmb->rect.height(), buttonIconSize);
- const int xposMod = (cmb->rect.x()) + width - buttonMargin - buttonWidth;
- const int ypos = cmb->rect.y();
QSize buttonSize;
buttonSize.setWidth(buttonWidth + 2 * buttonMargin);
buttonSize.setHeight(qMax(8, (cmb->rect.height() >> 1) - frameThickness)); //buttons should be squares
buttonSize = buttonSize.expandedTo(QApplication::globalStrut());
switch (scontrol) {
- case SC_ComboBoxArrow:
+ case SC_ComboBoxArrow: {
+ const int xposMod = cmb->rect.x() + width - buttonMargin - buttonWidth;
+ const int ypos = cmb->rect.y();
ret.setRect(xposMod, ypos + buttonMargin, buttonWidth, height - 2 * buttonMargin);
+ }
break;
case SC_ComboBoxEditField: {
- const int withFrameX = cmb->rect.x() + cmb->rect.width() - frameThickness - buttonSize.width();
+ const int withFrameX = cmb->rect.x() + width - frameThickness - buttonSize.width();
ret = QRect(
frameThickness,
frameThickness,
withFrameX - frameThickness,
- cmb->rect.height() - 2 * frameThickness);
+ height - 2 * frameThickness);
}
break;
default:
break;
}
+ ret = visualRect(cmb->direction, cmb->rect, ret);
}
break;
case CC_GroupBox:
@@ -2613,7 +2648,7 @@
case SC_GroupBoxLabel: {
//slightly indent text and boxes, so that dialog border does not mess with them.
const int horizontalSpacing =
- QS60StylePrivate::pixelMetric(QStyle::PM_LayoutHorizontalSpacing);
+ QS60StylePrivate::pixelMetric(PM_LayoutHorizontalSpacing);
ret.adjust(2, horizontalSpacing - 3, 0, 0);
}
break;
@@ -2668,6 +2703,9 @@
{
QRect ret;
switch (element) {
+ case SE_RadioButtonFocusRect:
+ ret = opt->rect;
+ break;
case SE_LineEditContents: {
// in S60 the input text box doesn't start from line Edit's TL, but
// a bit indented.
@@ -2686,9 +2724,9 @@
if (const QStyleOptionTabWidgetFrame *twf = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) {
const int tabOverlapNoBorder =
- QS60StylePrivate::pixelMetric(QStyle::PM_TabBarTabOverlap);
+ QS60StylePrivate::pixelMetric(PM_TabBarTabOverlap);
const int tabOverlap =
- tabOverlapNoBorder-QS60StylePrivate::pixelMetric(QStyle::PM_DefaultFrameWidth);
+ tabOverlapNoBorder-QS60StylePrivate::pixelMetric(PM_DefaultFrameWidth);
const QTabWidget *tab = qobject_cast<const QTabWidget *>(widget);
int gain = (tab) ? tabOverlap * tab->count() : 0;
switch (twf->shape) {
@@ -2737,8 +2775,8 @@
multiSelection &&
(vopt->features & QStyleOptionViewItemV2::HasCheckIndicator)) {
const int verticalSpacing =
- QS60StylePrivate::pixelMetric(QStyle::PM_LayoutVerticalSpacing);
- //const int horizontalSpacing = QS60StylePrivate::pixelMetric(QStyle::PM_LayoutHorizontalSpacing);
+ QS60StylePrivate::pixelMetric(PM_LayoutVerticalSpacing);
+ //const int horizontalSpacing = QS60StylePrivate::pixelMetric(PM_LayoutHorizontalSpacing);
const int checkBoxRectWidth = subElementRect(SE_ItemViewItemCheckIndicator, opt, widget).width();
ret.adjust(-checkBoxRectWidth - verticalSpacing, 0, -checkBoxRectWidth - verticalSpacing, 0);
}
@@ -2784,9 +2822,9 @@
singleSelection;
// Selection check mark rect.
- const int indicatorWidth = QS60StylePrivate::pixelMetric(QStyle::PM_IndicatorWidth);
- const int indicatorHeight = QS60StylePrivate::pixelMetric(QStyle::PM_IndicatorHeight);
- const int spacing = QS60StylePrivate::pixelMetric(QStyle::PM_CheckBoxLabelSpacing);
+ const int indicatorWidth = QS60StylePrivate::pixelMetric(PM_IndicatorWidth);
+ const int indicatorHeight = QS60StylePrivate::pixelMetric(PM_IndicatorHeight);
+ const int spacing = QS60StylePrivate::pixelMetric(PM_CheckBoxLabelSpacing);
const int itemHeight = opt->rect.height();
int heightOffset = 0;
@@ -2818,6 +2856,25 @@
}
ret = visualRect(opt->direction, opt->rect, ret);
break;
+ case SE_RadioButtonIndicator: {
+ const int height = pixelMetric(PM_ExclusiveIndicatorHeight, opt, widget);
+ ret.setRect(opt->rect.x(), opt->rect.y() + ((opt->rect.height() - height) >> 1),
+ pixelMetric(PM_ExclusiveIndicatorWidth, opt, widget), height);
+ ret.translate(2, 0); //move indicator slightly to avoid highlight crossing over it
+ ret = visualRect(opt->direction, opt->rect, ret);
+ }
+ break;
+ case SE_CheckBoxIndicator: {
+ const int height = pixelMetric(PM_IndicatorHeight, opt, widget);
+ ret.setRect(opt->rect.x(), opt->rect.y() + ((opt->rect.height() - height) >> 1),
+ pixelMetric(PM_IndicatorWidth, opt, widget), height);
+ ret.translate(2, 0); //move indicator slightly to avoid highlight crossing over it
+ ret = visualRect(opt->direction, opt->rect, ret);
+ }
+ break;
+ case SE_CheckBoxFocusRect:
+ ret = opt->rect;
+ break;
default:
ret = QCommonStyle::subElementRect(element, opt, widget);
}
@@ -2835,6 +2892,12 @@
if (!widget)
return;
+ //Currently we only support animations in QProgressBar.
+#ifndef QT_NO_PROGRESSBAR
+ if (qobject_cast<QProgressBar *>(widget))
+ widget->installEventFilter(this);
+#endif
+
if (false
#ifndef QT_NO_SCROLLBAR
|| qobject_cast<QScrollBar *>(widget)
@@ -2867,6 +2930,8 @@
*/
void QS60Style::unpolish(QWidget *widget)
{
+ Q_D(QS60Style);
+
if (false
#ifndef QT_NO_SCROLLBAR
|| qobject_cast<QScrollBar *>(widget)
@@ -2893,6 +2958,14 @@
if (widget)
widget->setPalette(QPalette());
+#if defined(Q_WS_S60) && !defined(QT_NO_PROGRESSBAR)
+ if (QProgressBar *bar = qobject_cast<QProgressBar *>(widget)) {
+ widget->removeEventFilter(this);
+ d->m_bars.removeAll(bar);
+ }
+#else
+ Q_UNUSED(d)
+#endif
QCommonStyle::unpolish(widget);
}
@@ -2924,10 +2997,23 @@
bool QS60Style::event(QEvent *e)
{
#ifdef QT_KEYPAD_NAVIGATION
- if (QS60StylePrivate::isTouchSupported())
- return false;
Q_D(QS60Style);
+ const QEvent::Type eventType = e->type();
+ if ((eventType == QEvent::FocusIn ||
+ eventType == QEvent::FocusOut ||
+ eventType == QEvent::EnterEditFocus ||
+ eventType == QEvent::LeaveEditFocus) &&
+ QS60StylePrivate::isTouchSupported())
+ return false;
+#endif
+
switch (e->type()) {
+ case QEvent::Timer: {
+ QTimerEvent *te = static_cast<QTimerEvent*>(e);
+ timerEvent(te);
+ }
+ break;
+#ifdef QT_KEYPAD_NAVIGATION
case QEvent::FocusIn:
if (QWidget *focusWidget = QApplication::focusWidget()) {
if (!d->m_focusFrame)
@@ -2946,12 +3032,10 @@
if (d->m_focusFrame)
d->m_focusFrame->update();
break;
+#endif
default:
break;
}
-#else
- Q_UNUSED(e)
-#endif
return false;
}
@@ -2961,7 +3045,7 @@
QIcon QS60Style::standardIconImplementation(StandardPixmap standardIcon,
const QStyleOption *option, const QWidget *widget) const
{
- const int iconDimension = QS60StylePrivate::pixelMetric(QStyle::PM_ToolBarIconSize);
+ const int iconDimension = QS60StylePrivate::pixelMetric(PM_ToolBarIconSize);
const QRect iconSize = (!option) ? QRect(0, 0, iconDimension, iconDimension) : option->rect;
QS60StyleEnums::SkinParts part;
QS60StylePrivate::SkinElementFlags adjustedFlags;
@@ -2971,67 +3055,67 @@
QS60StylePrivate::SF_StateDisabled;
switch(standardIcon) {
- case QStyle::SP_MessageBoxWarning:
+ case SP_MessageBoxWarning:
part = QS60StyleEnums::SP_QgnNoteWarning;
break;
- case QStyle::SP_MessageBoxInformation:
+ case SP_MessageBoxInformation:
part = QS60StyleEnums::SP_QgnNoteInfo;
break;
- case QStyle::SP_MessageBoxCritical:
+ case SP_MessageBoxCritical:
part = QS60StyleEnums::SP_QgnNoteError;
break;
- case QStyle::SP_MessageBoxQuestion:
+ case SP_MessageBoxQuestion:
part = QS60StyleEnums::SP_QgnNoteQuery;
break;
- case QStyle::SP_ArrowRight:
+ case SP_ArrowRight:
part = QS60StyleEnums::SP_QgnIndiNaviArrowRight;
break;
- case QStyle::SP_ArrowLeft:
+ case SP_ArrowLeft:
part = QS60StyleEnums::SP_QgnIndiNaviArrowLeft;
break;
- case QStyle::SP_ArrowUp:
+ case SP_ArrowUp:
part = QS60StyleEnums::SP_QgnIndiNaviArrowLeft;
adjustedFlags |= QS60StylePrivate::SF_PointEast;
break;
- case QStyle::SP_ArrowDown:
+ case SP_ArrowDown:
part = QS60StyleEnums::SP_QgnIndiNaviArrowLeft;
adjustedFlags |= QS60StylePrivate::SF_PointWest;
break;
- case QStyle::SP_ArrowBack:
+ case SP_ArrowBack:
if (QApplication::layoutDirection() == Qt::RightToLeft)
return QS60Style::standardIcon(SP_ArrowRight, option, widget);
return QS60Style::standardIcon(SP_ArrowLeft, option, widget);
- case QStyle::SP_ArrowForward:
+ case SP_ArrowForward:
if (QApplication::layoutDirection() == Qt::RightToLeft)
return QS60Style::standardIcon(SP_ArrowLeft, option, widget);
return QS60Style::standardIcon(SP_ArrowRight, option, widget);
- case QStyle::SP_ComputerIcon:
+ case SP_ComputerIcon:
part = QS60StyleEnums::SP_QgnPropPhoneMemcLarge;
break;
- case QStyle::SP_DirClosedIcon:
+ case SP_DirClosedIcon:
part = QS60StyleEnums::SP_QgnPropFolderSmall;
break;
- case QStyle::SP_DirOpenIcon:
+ case SP_DirOpenIcon:
part = QS60StyleEnums::SP_QgnPropFolderCurrent;
break;
- case QStyle::SP_DirIcon:
+ case SP_DirIcon:
part = QS60StyleEnums::SP_QgnPropFolderSmall;
break;
- case QStyle::SP_FileDialogNewFolder:
+ case SP_FileDialogNewFolder:
part = QS60StyleEnums::SP_QgnPropFolderSmallNew;
break;
- case QStyle::SP_FileIcon:
+ case SP_FileIcon:
part = QS60StyleEnums::SP_QgnPropFileSmall;
break;
- case QStyle::SP_TrashIcon:
+ case SP_TrashIcon:
part = QS60StyleEnums::SP_QgnNoteErased;
break;
- case QStyle::SP_ToolBarHorizontalExtensionButton:
+ case SP_ToolBarHorizontalExtensionButton:
part = QS60StyleEnums::SP_QgnIndiSubMenu;
if (QApplication::layoutDirection() == Qt::RightToLeft)
adjustedFlags |= QS60StylePrivate::SF_PointSouth;
break;
- case QStyle::SP_ToolBarVerticalExtensionButton:
+ case SP_ToolBarVerticalExtensionButton:
adjustedFlags |= QS60StylePrivate::SF_PointEast;
part = QS60StyleEnums::SP_QgnIndiSubMenu;
break;
@@ -3045,6 +3129,72 @@
QCommonStyle::standardIconImplementation(standardIcon, option, widget) : QIcon(cachedPixMap);
}
+/*!
+ \internal
+ Animate indeterminate progress bars only when visible
+*/
+bool QS60Style::eventFilter(QObject *object, QEvent *event)
+{
+#ifdef Q_WS_S60
+#ifndef QT_NO_PROGRESSBAR
+ Q_D(QS60Style);
+ switch(event->type()) {
+ case QEvent::StyleChange:
+ case QEvent::Show:
+ if (QProgressBar *bar = qobject_cast<QProgressBar *>(object)) {
+ if (!d->m_bars.contains(bar))
+ d->m_bars << bar;
+ if (d->m_bars.size() == 1) //only start with first animated progressbar
+ d->startAnimation(QS60StyleEnums::SP_QgnGrafBarWaitAnim);
+ }
+ break;
+ case QEvent::Destroy:
+ case QEvent::Hide:
+ d->stopAnimation(QS60StyleEnums::SP_QgnGrafBarWaitAnim);
+ d->m_bars.removeAll(reinterpret_cast<QProgressBar *>(object));
+ break;
+ default:
+ break;
+ }
+#endif // QT_NO_PROGRESSBAR
+#endif // Q_WS_S60
+ return QStyle::eventFilter(object, event);
+}
+
+/*!
+ \internal
+ Handle the timer \a event.
+*/
+void QS60Style::timerEvent(QTimerEvent *event)
+{
+#ifdef Q_WS_S60
+#ifndef QT_NO_PROGRESSBAR
+ Q_D(QS60Style);
+
+ QS60StyleAnimation *progressBarAnimation =
+ QS60StylePrivate::animationDefinition(QS60StyleEnums::SP_QgnGrafBarWaitAnim);
+
+ if (event->timerId() == progressBarAnimation->timerId()) {
+
+ Q_ASSERT(progressBarAnimation->interval() > 0);
+
+ if (progressBarAnimation->currentFrame() == progressBarAnimation->frameCount() )
+ if (progressBarAnimation->playMode() == QS60StyleEnums::AM_Looping)
+ progressBarAnimation->setCurrentFrame(0);
+ else
+ d->stopAnimation(progressBarAnimation->animationId());
+
+ foreach (QProgressBar *bar, d->m_bars) {
+ if ((bar->minimum() == 0 && bar->maximum() == 0))
+ bar->update();
+ }
+ progressBarAnimation->setCurrentFrame(progressBarAnimation->currentFrame() + 1);
+ }
+#endif // QT_NO_PROGRESSBAR
+#endif // Q_WS_S60
+ event->ignore();
+}
+
extern QPoint qt_s60_fill_background_offset(const QWidget *targetWidget);
bool qt_s60_fill_background(QPainter *painter, const QRegion &rgn, const QBrush &brush)
@@ -3056,11 +3206,13 @@
const QPaintDevice *target = painter->device();
if (target->devType() == QInternal::Widget) {
const QWidget *widget = static_cast<const QWidget *>(target);
- const QVector<QRect> &rects = rgn.rects();
- for (int i = 0; i < rects.size(); ++i) {
- const QRect rect(rects.at(i));
- painter->drawPixmap(rect.topLeft(), backgroundTexture,
- rect.translated(qt_s60_fill_background_offset(widget)));
+ if (!widget->testAttribute(Qt::WA_TranslucentBackground)) {
+ const QVector<QRect> &rects = rgn.rects();
+ for (int i = 0; i < rects.size(); ++i) {
+ const QRect rect(rects.at(i));
+ painter->drawPixmap(rect.topLeft(), backgroundTexture,
+ rect.translated(qt_s60_fill_background_offset(widget)));
+ }
}
}
return true;
--- a/src/gui/styles/qs60style.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qs60style.h Fri Mar 12 15:46:37 2010 +0200
@@ -94,6 +94,9 @@
QIcon standardIconImplementation(
StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0 ) const;
+protected:
+ void timerEvent(QTimerEvent *event);
+ bool eventFilter(QObject *o, QEvent *e);
private:
Q_DISABLE_COPY(QS60Style)
friend class QStyleFactory;
--- a/src/gui/styles/qs60style_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qs60style_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -74,7 +74,6 @@
unsigned short width;
int major_version;
int minor_version;
- bool mirroring; // TODO: (nice to have) Use Qt::LayoutDirection
const char* layoutName;
} layoutHeader;
@@ -93,6 +92,29 @@
#endif // !Q_WS_S60
public:
+
+ // S60 definitions within theme
+ enum ThemeDefinitions {
+ TD_AnimationData,
+ };
+
+ //Defines which values are contained within animation data (retrieved using TD_AnimationData).
+ //Additionally defines the order in which the items are given out in QList<QVariant>.
+ enum AnimationData {
+ AD_Interval = 0,
+ AD_NumberOfFrames,
+ AD_AnimationPlayMode, //currently not used as themes seem to contain invalid data
+ };
+
+ // Animation modes
+ enum AnimationMode {
+ AM_PlayOnce = 0, //animation is played exactly once
+ AM_Looping, //animation is repeated until stopped
+ AM_Bounce //animation is played repeatedly until stopped,
+ //but frames are played in reverse order every second time
+ //(no support yet)
+ };
+
// S60 look-and-feel font categories
enum FontCategories {
FC_Undefined,
@@ -104,7 +126,7 @@
};
enum SkinParts {
- SP_QgnGrafBarWait,
+ SP_QgnGrafBarWaitAnim,
SP_QgnGrafBarFrameCenter,
SP_QgnGrafBarFrameSideL,
SP_QgnGrafBarFrameSideR,
@@ -287,7 +309,70 @@
};
};
+#ifdef Q_WS_S60
+class CAknBitmapAnimation;
+NONSHARABLE_CLASS (AnimationData) : public QObject
+{
+public:
+ AnimationData(const QS60StyleEnums::SkinParts part, int frames, int interval);
+
+ const QS60StyleEnums::SkinParts m_id;
+ int m_frames;
+ int m_interval;
+ QS60StyleEnums::AnimationMode m_mode;
+};
+
+
+NONSHARABLE_CLASS (AnimationDataV2) : public AnimationData
+{
+public:
+ AnimationDataV2(const AnimationData &data);
+ ~AnimationDataV2();
+
+ CAknBitmapAnimation *m_animation;
+ int m_currentFrame;
+ bool m_resourceBased;
+ int m_timerId;
+};
+
+
+class QS60StyleAnimation : public QObject
+{
+public:
+ QS60StyleAnimation(const QS60StyleEnums::SkinParts part, int frames, int interval);
+ ~QS60StyleAnimation();
+
+public:
+ QS60StyleEnums::SkinParts animationId() const {return m_currentData->m_id;}
+ int frameCount() const { return m_currentData->m_frames;}
+ int interval() const {return m_currentData->m_interval;}
+ QS60StyleEnums::AnimationMode playMode() const {return m_currentData->m_mode;}
+ CAknBitmapAnimation* animationObject() const {return m_currentData->m_animation;}
+ bool isResourceBased() const {return m_currentData->m_resourceBased;}
+ int timerId() const {return m_currentData->m_timerId;}
+ int currentFrame() const {return m_currentData->m_currentFrame;}
+
+ void setFrameCount(int frameCount) {m_currentData->m_frames = frameCount;}
+ void setInterval(int interval) {m_currentData->m_interval = interval;}
+ void setAnimationObject(CAknBitmapAnimation* animation);
+ void setResourceBased(bool resourceBased) {m_currentData->m_resourceBased = resourceBased;}
+ void setTimerId(int timerId) {m_currentData->m_timerId = timerId;}
+ void setCurrentFrame(int currentFrame) {m_currentData->m_currentFrame = currentFrame;}
+
+ void resetToDefaults();
+
+private: //data members
+ //TODO: consider changing these to non-pointers as the classes are rather small anyway
+ AnimationData *m_defaultData;
+ AnimationDataV2 *m_currentData;
+};
+
+#endif //Q_WS_S60
+
+
class QFocusFrame;
+class QProgressBar;
+class QS60StyleAnimation;
// Private class
#ifdef Q_OS_SYMBIAN
@@ -371,6 +456,7 @@
SF_StateEnabled = 0x0010, // Enabled = the default
SF_StateDisabled = 0x0020,
SF_ColorSkinned = 0x0040, // pixmap is colored with foreground pen color
+ SF_Animation = 0x0080,
};
enum CacheClearReason {
@@ -412,6 +498,7 @@
static bool isTouchSupported();
static bool isToolBarBackground();
static bool hasSliderGrooveGraphic();
+ static bool isSingleClickUi();
// calculates average color based on button skin graphics (minus borders).
QColor colorFromFrameGraphics(SkinFrameElements frame) const;
@@ -455,6 +542,16 @@
//so that theme graphic background can be drawn.
static bool canDrawThemeBackground(const QBrush &backgroundBrush);
+ static int currentAnimationFrame(QS60StyleEnums::SkinParts part);
+#ifdef Q_WS_S60
+
+ //No support for animations on emulated style
+ void startAnimation(QS60StyleEnums::SkinParts animation);
+ void stopAnimation(QS60StyleEnums::SkinParts animation);
+ static QS60StyleAnimation* animationDefinition(QS60StyleEnums::SkinParts part);
+
+#endif
+
private:
static void drawPart(QS60StyleEnums::SkinParts part, QPainter *painter,
const QRect &rect, SkinElementFlags flags = KDefaultSkinElementFlags);
@@ -497,6 +594,12 @@
QPalette m_originalPalette;
QPointer<QFocusFrame> m_focusFrame;
+
+#ifdef Q_WS_S60
+ //list of progress bars having animation running
+ QList<QProgressBar *> m_bars;
+#endif
+
};
QT_END_NAMESPACE
--- a/src/gui/styles/qs60style_s60.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qs60style_s60.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -63,6 +63,7 @@
#include <aknutils.h>
#include <aknnavi.h>
#include <gulicon.h>
+#include <AknBitmapAnimation.h>
#if !defined(QT_NO_STYLE_S60) || defined(QT_PLUGIN)
@@ -72,6 +73,7 @@
EDrawIcon,
EDrawGulIcon,
EDrawBackground,
+ EDrawAnimation,
ENoDraw
};
@@ -97,6 +99,47 @@
int newMinorSkinId;
} partMapEntry;
+AnimationData::AnimationData(const QS60StyleEnums::SkinParts part, int frames, int interval) : m_id(part),
+ m_frames(frames), m_interval(interval), m_mode(QS60StyleEnums::AM_Looping)
+{
+}
+
+AnimationDataV2::AnimationDataV2(const AnimationData &data) : AnimationData(data.m_id, data.m_frames, data.m_interval),
+ m_animation(0), m_currentFrame(0), m_resourceBased(false), m_timerId(0)
+{
+}
+AnimationDataV2::~AnimationDataV2()
+{
+ delete m_animation;
+}
+
+QS60StyleAnimation::QS60StyleAnimation(const QS60StyleEnums::SkinParts part, int frames, int interval)
+{
+ QT_TRAP_THROWING(m_defaultData = new (ELeave) AnimationData(part, frames, interval));
+ QT_TRAP_THROWING(m_currentData = new (ELeave) AnimationDataV2(*m_defaultData));
+}
+
+QS60StyleAnimation::~QS60StyleAnimation()
+{
+ delete m_currentData;
+ delete m_defaultData;
+}
+
+void QS60StyleAnimation::setAnimationObject(CAknBitmapAnimation* animation)
+{
+ Q_ASSERT(animation);
+ if (m_currentData->m_animation)
+ delete m_currentData->m_animation;
+ m_currentData->m_animation = animation;
+}
+
+void QS60StyleAnimation::resetToDefaults()
+{
+ delete m_currentData;
+ m_currentData = 0;
+ QT_TRAP_THROWING(m_currentData = new (ELeave) AnimationDataV2(*m_defaultData));
+}
+
class QS60StyleModeSpecifics
{
public:
@@ -113,6 +156,8 @@
static QSize naviPaneSize();
static TAknsItemID partSpecificThemeId(int part);
+ static QVariant themeDefinition(QS60StyleEnums::ThemeDefinitions definition, QS60StyleEnums::SkinParts part);
+
private:
static QPixmap createSkinnedGraphicsLX(QS60StyleEnums::SkinParts part,
const QSize &size, QS60StylePrivate::SkinElementFlags flags);
@@ -128,7 +173,7 @@
};
const partMapEntry QS60StyleModeSpecifics::m_partMap[] = {
- /* SP_QgnGrafBarWait */ {KAknsIIDQgnGrafBarWaitAnim, EDrawIcon, ES60_All, -1,-1},
+ /* SP_QgnGrafBarWaitAnim */ {KAknsIIDQgnGrafBarWaitAnim, EDrawAnimation, ES60_All, -1,-1},
/* SP_QgnGrafBarFrameCenter */ {KAknsIIDQgnGrafBarFrameCenter, EDrawIcon, ES60_All, -1,-1},
/* SP_QgnGrafBarFrameSideL */ {KAknsIIDQgnGrafBarFrameSideL, EDrawIcon, ES60_All, -1,-1},
/* SP_QgnGrafBarFrameSideR */ {KAknsIIDQgnGrafBarFrameSideR, EDrawIcon, ES60_All, -1,-1},
@@ -371,7 +416,7 @@
void QS60StyleModeSpecifics::fallbackInfo(const QS60StyleEnums::SkinParts &stylePart, TInt &fallbackIndex)
{
switch(stylePart) {
- case QS60StyleEnums::SP_QgnGrafBarWait:
+ case QS60StyleEnums::SP_QgnGrafBarWaitAnim:
fallbackIndex = EMbmAvkonQgn_graf_bar_wait_1;
break;
case QS60StyleEnums::SP_QgnGrafBarFrameCenter:
@@ -604,6 +649,11 @@
return QSysInfo::s60Version() != QSysInfo::SV_S60_3_1;
}
+bool QS60StylePrivate::isSingleClickUi()
+{
+ return (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0);
+}
+
QPoint qt_s60_fill_background_offset(const QWidget *targetWidget)
{
CCoeControl *control = targetWidget->effectiveWinId();
@@ -709,6 +759,69 @@
// QS60WindowSurface::lockBitmapHeap();
break;
}
+ case EDrawAnimation: {
+ CFbsBitmap* animationFrame;
+ CFbsBitmap* frameMask;
+ CAknBitmapAnimation* aknAnimation = 0;
+ TBool constructedFromTheme = ETrue;
+
+ QS60StyleAnimation* animation = QS60StylePrivate::animationDefinition(part); //ownership is not passed
+ if (animation) {
+ if (!animation->animationObject() && !animation->isResourceBased()) {// no pre-made item exists, create new animation
+ CAknBitmapAnimation* newAnimation = CAknBitmapAnimation::NewL();
+ CleanupStack::PushL(newAnimation);
+ if (newAnimation)
+ constructedFromTheme = newAnimation->ConstructFromSkinL(skinId);
+ if (constructedFromTheme && newAnimation->BitmapAnimData()->FrameArray().Count() > 0) {
+ animation->setResourceBased(false);
+ animation->setAnimationObject(newAnimation); //animation takes ownership
+ }
+ CleanupStack::Pop(newAnimation);
+ }
+ //fill-in stored information
+ aknAnimation = animation->animationObject();
+ constructedFromTheme = !animation->isResourceBased();
+ }
+
+ const int currentFrame = QS60StylePrivate::currentAnimationFrame(part);
+ if (constructedFromTheme && aknAnimation && aknAnimation->BitmapAnimData()->FrameArray().Count() > 0) {
+ //Animation was created succesfully and contains frames, just fetch current frame
+ if(currentFrame >= aknAnimation->BitmapAnimData()->FrameArray().Count())
+ User::Leave(KErrOverflow);
+ const CBitmapFrameData* frameData = aknAnimation->BitmapAnimData()->FrameArray().At(currentFrame);
+ if (frameData) {
+ animationFrame = frameData->Bitmap();
+ frameMask = frameData->Mask();
+ }
+ } else {
+ //Theme does not contain animation theming, create frames from resource file
+ TInt fallbackGraphicID = -1;
+ fallbackInfo(part, fallbackGraphicID);
+ fallbackGraphicID = fallbackGraphicID + (currentFrame * 2); //skip masks
+ TInt fallbackGraphicsMaskID =
+ (fallbackGraphicID == KErrNotFound) ? KErrNotFound : fallbackGraphicID + 1; //masks are auto-generated as next in mif files
+ if (fallbackGraphicsMaskID != KErrNotFound)
+ fallbackGraphicsMaskID = fallbackGraphicsMaskID + (currentFrame * 2); //skip actual graphics
+
+ //Then draw animation frame
+ AknsUtils::CreateIconL(
+ skinInstance,
+ KAknsIIDDefault, //animation is not themed, lets force fallback graphics
+ animationFrame,
+ frameMask,
+ AknIconUtils::AvkonIconFileName(),
+ fallbackGraphicID ,
+ fallbackGraphicsMaskID);
+ }
+ result = fromFbsBitmap(animationFrame, frameMask, flags, targetSize);
+ if (!constructedFromTheme) {
+ delete animationFrame;
+ animationFrame = 0;
+ delete frameMask;
+ frameMask = 0;
+ }
+ break;
+ }
}
if (!result)
result = QPixmap();
@@ -731,7 +844,6 @@
MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
QPixmap result;
-// QS60WindowSurface::unlockBitmapHeap();
static const TDisplayMode displayMode = S60->supportsPremultipliedAlpha ? Q_SYMBIAN_ECOLOR16MAP : EColor16MA;
static const TInt drawParam = S60->supportsPremultipliedAlpha ? KAknsDrawParamDefault : KAknsDrawParamNoClearUnderImage|KAknsDrawParamRGBOnly;
@@ -985,8 +1097,13 @@
m_pmPointer = data[activeLayoutIndex];
}
+Q_GLOBAL_STATIC(QList<QS60StyleAnimation *>, m_animations)
+
QS60StylePrivate::QS60StylePrivate()
{
+ //Animation defaults need to be created when style is instantiated
+ QS60StyleAnimation* progressBarAnimation = new QS60StyleAnimation(QS60StyleEnums::SP_QgnGrafBarWaitAnim, 7, 100);
+ m_animations()->append(progressBarAnimation);
// No need to set active layout, if dynamic metrics API is available
setActiveLayout();
}
@@ -1187,6 +1304,11 @@
setThemePalette(topLevelWidget);
topLevelWidget->ensurePolished();
}
+#ifndef QT_NO_PROGRESSBAR
+ //re-start animation timer
+ stopAnimation(QS60StyleEnums::SP_QgnGrafBarWaitAnim); //todo: once we have more animations, we could say "stop all running ones"
+ startAnimation(QS60StyleEnums::SP_QgnGrafBarWaitAnim); //and "re-start all previously running ones"
+#endif
}
QSize QS60StylePrivate::naviPaneSize()
@@ -1206,6 +1328,121 @@
return QSize(0,0);
}
+int QS60StylePrivate::currentAnimationFrame(QS60StyleEnums::SkinParts part)
+{
+ QS60StyleAnimation *animation = animationDefinition(part);
+ // todo: looping could be done in QS60Style::timerEvent
+ if (animation->frameCount() == animation->currentFrame())
+ animation->setCurrentFrame(0);
+ return animation->currentFrame();
+}
+
+QS60StyleAnimation* QS60StylePrivate::animationDefinition(QS60StyleEnums::SkinParts part)
+{
+ int i = 0;
+ const int animationsCount = m_animations()->isEmpty() ? 0 : m_animations()->count();
+ for(; i < animationsCount; i++) {
+ if (part == m_animations()->at(i)->animationId())
+ break;
+ }
+ return m_animations()->at(i);
+}
+
+void QS60StylePrivate::startAnimation(QS60StyleEnums::SkinParts animationPart)
+{
+ Q_Q(QS60Style);
+
+ //Query animation data from theme and store values to local struct.
+ QVariant themeAnimationDataVariant = QS60StyleModeSpecifics::themeDefinition(
+ QS60StyleEnums::TD_AnimationData, animationPart);
+ QList<QVariant> themeAnimationData = themeAnimationDataVariant.toList();
+
+ QS60StyleAnimation *animation = QS60StylePrivate::animationDefinition(animationPart);
+ if (animation) {
+ if (themeAnimationData.at(QS60StyleEnums::AD_Interval).toInt() != 0)
+ animation->setInterval(themeAnimationData.at(QS60StyleEnums::AD_Interval).toInt());
+
+ if (themeAnimationData.at(QS60StyleEnums::AD_NumberOfFrames).toInt() != 0)
+ animation->setFrameCount(themeAnimationData.at(QS60StyleEnums::AD_NumberOfFrames).toInt());
+
+ //todo: playmode is ignored for now, since it seems to return invalid data on some themes
+ //lets use the table values for play mode
+
+ animation->setCurrentFrame(0); //always initialize
+ const int timerId = q->startTimer(animation->interval());
+ animation->setTimerId(timerId);
+ }
+}
+
+void QS60StylePrivate::stopAnimation(QS60StyleEnums::SkinParts animationPart)
+{
+ Q_Q(QS60Style);
+
+ QS60StyleAnimation *animation = QS60StylePrivate::animationDefinition(animationPart);
+ if (animation) {
+ animation->setCurrentFrame(0);
+ if (animation->timerId() != 0) {
+ q->killTimer(animation->timerId());
+ animation->setTimerId(0);
+ }
+ animation->resetToDefaults();
+ }
+}
+
+QVariant QS60StyleModeSpecifics::themeDefinition(
+ QS60StyleEnums::ThemeDefinitions definition, QS60StyleEnums::SkinParts part)
+{
+ MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
+
+ Q_ASSERT(skinInstance);
+
+ switch(definition) {
+ //Animation definitions
+ case QS60StyleEnums::TD_AnimationData:
+ {
+ CAknsBmpAnimItemData *animationData;
+ TAknsItemID animationSkinId = partSpecificThemeId(part);
+ QList<QVariant> list;
+
+ TRAPD( error, QT_TRYCATCH_LEAVING(
+ animationData = static_cast<CAknsBmpAnimItemData*>(skinInstance->CreateUncachedItemDataL(
+ animationSkinId, EAknsITBmpAnim))));
+ if (error)
+ return list;
+
+ if (animationData) {
+ list.append((int)animationData->FrameInterval());
+ list.append((int)animationData->NumberOfImages());
+
+ QS60StyleEnums::AnimationMode playMode;
+ switch(animationData->PlayMode()) {
+ case CBitmapAnimClientData::EPlay:
+ playMode = QS60StyleEnums::AM_PlayOnce;
+ break;
+ case CBitmapAnimClientData::ECycle:
+ playMode = QS60StyleEnums::AM_Looping;
+ break;
+ case CBitmapAnimClientData::EBounce:
+ playMode = QS60StyleEnums::AM_Bounce;
+ break;
+ default:
+ break;
+ }
+ list.append(QVariant((int)playMode));
+ delete animationData;
+ } else {
+ list.append(0);
+ list.append(0);
+ }
+ return list;
+ }
+ break;
+ default:
+ break;
+ }
+ return QVariant();
+}
+
#endif // Q_WS_S60
QT_END_NAMESPACE
--- a/src/gui/styles/qs60style_simulated.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qs60style_simulated.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -342,6 +342,11 @@
return false;
}
+bool QS60StylePrivate::isSingleClickUi()
+{
+ return false;
+}
+
QFont QS60StylePrivate::s60Font_specific(
QS60StyleEnums::FontCategories fontCategory,
int pointSize, bool resolveFontSize)
@@ -364,6 +369,11 @@
return result;
}
+int QS60StylePrivate::currentAnimationFrame(QS60StyleEnums::SkinParts part)
+{
+ return 0;
+}
+
/*!
Constructs a QS60Style object.
*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gui/styles/qstyle_s60.qrc Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,137 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/trolltech/styles/commonstyle">
+<!-- <file>images/filelink-16.png</file> -->
+<file>images/filelink-32.png</file>
+<!-- <file>images/filelink-128.png</file> -->
+<!-- <file>images/file-16.png</file> -->
+<file>images/file-32.png</file>
+<!-- <file>images/file-128.png</file> -->
+<!-- <file>images/newdirectory-16.png</file> -->
+<file>images/newdirectory-32.png</file>
+<!-- <file>images/newdirectory-128.png</file> -->
+<!-- <file>images/parentdir-16.png</file> -->
+<file>images/parentdir-32.png</file>
+<!-- <file>images/parentdir-128.png</file> -->
+<!-- <file>images/dvd-16.png</file> -->
+<!-- <file>images/dvd-32.png</file> -->
+<!-- <file>images/dvd-128.png</file> -->
+<!-- <file>images/cdr-16.png</file> -->
+<!-- <file>images/cdr-32.png</file> -->
+<!-- <file>images/cdr-128.png</file> -->
+<!-- <file>images/floppy-16.png</file> -->
+<!-- <file>images/floppy-32.png</file> -->
+<!-- <file>images/floppy-128.png</file> -->
+<!-- <file>images/harddrive-16.png</file> -->
+<file>images/harddrive-32.png</file>
+<!-- <file>images/harddrive-128.png</file> -->
+<!-- <file>images/trash-16.png</file> -->
+<!-- <file>images/trash-32.png</file> -->
+<!-- <file>images/trash-128.png</file> -->
+<!-- <file>images/networkdrive-16.png</file> -->
+<!-- <file>images/networkdrive-32.png</file> -->
+<!-- <file>images/networkdrive-128.png</file> -->
+<!-- <file>images/computer-16.png</file> -->
+<!-- <file>images/computer-32.png</file> -->
+<!-- <file>images/desktop-16.png</file> -->
+<file>images/desktop-32.png</file>
+<!-- <file>images/dirclosed-16.png</file> -->
+<file>images/dirclosed-32.png</file>
+<!-- <file>images/dirclosed-128.png</file> -->
+<!-- <file>images/dirlink-16.png</file> -->
+<file>images/dirlink-32.png</file>
+<!-- <file>images/dirlink-128.png</file> -->
+<!-- <file>images/diropen-16.png</file> -->
+<file>images/diropen-32.png</file>
+<!-- <file>images/diropen-128.png</file> -->
+<!-- <file>images/left-16.png</file> -->
+<file>images/left-32.png</file>
+<!-- <file>images/left-128.png</file> -->
+<!-- <file>images/right-16.png</file> -->
+<file>images/right-32.png</file>
+<!-- <file>images/right-128.png</file> -->
+<!-- <file>images/up-16.png</file> -->
+<file>images/up-32.png</file>
+<!-- <file>images/up-128.png</file> -->
+<!-- <file>images/down-16.png</file> -->
+<file>images/down-32.png</file>
+<!-- <file>images/down-128.png</file> -->
+<!-- <file>images/filecontents-16.png</file> -->
+<file>images/filecontents-32.png</file>
+<!-- <file>images/filecontents-128.png</file> -->
+<!-- <file>images/fileinfo-16.png</file> -->
+<file>images/fileinfo-32.png</file>
+<!-- <file>images/fileinfo-128.png</file> -->
+<!-- <file>images/viewdetailed-16.png</file> -->
+<file>images/viewdetailed-32.png</file>
+<!-- <file>images/viewdetailed-128.png</file> -->
+<!-- <file>images/viewlist-16.png</file> -->
+<file>images/viewlist-32.png</file>
+<!-- <file>images/viewlist-128.png</file> -->
+<file>images/fontbitmap-16.png</file>
+<file>images/fonttruetype-16.png</file>
+<!-- <file>images/standardbutton-apply-128.png</file> -->
+<!-- <file>images/standardbutton-apply-16.png</file> -->
+<file>images/standardbutton-apply-32.png</file>
+<!-- <file>images/standardbutton-cancel-128.png</file> -->
+<!-- <file>images/standardbutton-cancel-16.png</file> -->
+<file>images/standardbutton-cancel-32.png</file>
+<!-- <file>images/standardbutton-clear-128.png</file> -->
+<!-- <file>images/standardbutton-clear-16.png</file> -->
+<file>images/standardbutton-clear-32.png</file>
+<!-- <file>images/standardbutton-close-128.png</file> -->
+<!-- <file>images/standardbutton-close-16.png</file> -->
+<file>images/standardbutton-close-32.png</file>
+<!-- <file>images/standardbutton-delete-128.png</file> -->
+<!-- <file>images/standardbutton-delete-16.png</file> -->
+<file>images/standardbutton-delete-32.png</file>
+<!-- <file>images/standardbutton-help-128.png</file> -->
+<!-- <file>images/standardbutton-help-16.png</file> -->
+<file>images/standardbutton-help-32.png</file>
+<!-- <file>images/standardbutton-no-128.png</file> -->
+<!-- <file>images/standardbutton-no-16.png</file> -->
+<file>images/standardbutton-no-32.png</file>
+<!-- <file>images/standardbutton-ok-128.png</file> -->
+<!-- <file>images/standardbutton-ok-16.png</file> -->
+<file>images/standardbutton-ok-32.png</file>
+<!-- <file>images/standardbutton-open-128.png</file> -->
+<!-- <file>images/standardbutton-open-16.png</file> -->
+<file>images/standardbutton-open-32.png</file>
+<!-- <file>images/standardbutton-save-128.png</file> -->
+<!-- <file>images/standardbutton-save-16.png</file> -->
+<file>images/standardbutton-save-32.png</file>
+<!-- <file>images/standardbutton-yes-128.png</file> -->
+<!-- <file>images/standardbutton-yes-16.png</file> -->
+<file>images/standardbutton-yes-32.png</file>
+<file>images/standardbutton-closetab-16.png</file>
+<file>images/standardbutton-closetab-down-16.png</file>
+<file>images/standardbutton-closetab-hover-16.png</file>
+<!-- <file>images/refresh-24.png</file> -->
+<file>images/refresh-32.png</file>
+<!-- <file>images/stop-24.png</file> -->
+<file>images/stop-32.png</file>
+<!-- <file>images/media-stop-16.png</file> -->
+<file>images/media-stop-32.png</file>
+<!-- <file>images/media-play-16.png</file> -->
+<file>images/media-play-32.png</file>
+<!-- <file>images/media-pause-16.png</file> -->
+<file>images/media-pause-32.png</file>
+<!-- <file>images/media-seek-forward-16.png</file> -->
+<file>images/media-seek-forward-32.png</file>
+<!-- <file>images/media-seek-backward-16.png</file> -->
+<file>images/media-seek-backward-32.png</file>
+<!-- <file>images/media-skip-forward-16.png</file> -->
+<file>images/media-skip-forward-32.png</file>
+<!-- <file>images/media-skip-backward-16.png</file> -->
+<file>images/media-skip-backward-32.png</file>
+<file>images/media-volume-16.png</file>
+<file>images/media-volume-muted-16.png</file>
+</qresource>
+<!--
+<qresource prefix="/trolltech/styles/macstyle">
+<file>images/closedock-16.png</file>
+<file>images/closedock-down-16.png</file>
+<file>images/dockdock-16.png</file>
+<file>images/dockdock-down-16.png</file>
+</qresource>
+-->
+</RCC>
--- a/src/gui/styles/styles.pri Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/styles.pri Fri Mar 12 15:46:37 2010 +0200
@@ -23,10 +23,12 @@
styles/qstylesheetstyle.cpp \
styles/qstylesheetstyle_default.cpp
-!wince* {
- RESOURCES += styles/qstyle.qrc
+wince* {
+ RESOURCES += styles/qstyle_wince.qrc
+} else:symbian {
+ RESOURCES += styles/qstyle_s60.qrc
} else {
- RESOURCES += styles/qstyle_wince.qrc
+ RESOURCES += styles/qstyle.qrc
}
contains( styles, all ) {
@@ -168,7 +170,7 @@
SOURCES += styles/qs60style.cpp
symbian {
SOURCES += styles/qs60style_s60.cpp
- LIBS += -laknicon -laknskins -laknskinsrv -lfontutils -legul
+ LIBS += -laknicon -laknskins -laknskinsrv -lfontutils -legul -lbmpanim
} else {
SOURCES += styles/qs60style_simulated.cpp
RESOURCES += styles/qstyle_s60_simulated.qrc
--- a/src/gui/text/qfontengine.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/text/qfontengine.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -357,9 +357,6 @@
++i;
}
} else {
- positions.resize(glyphs.numGlyphs);
- glyphs_out.resize(glyphs.numGlyphs);
- int i = 0;
while (i < glyphs.numGlyphs) {
if (!glyphs.attributes[i].dontPrint) {
QFixed gpos_x = xpos + glyphs.offsets[i].x;
--- a/src/gui/text/qfontengine_s60.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/text/qfontengine_s60.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -129,26 +129,62 @@
return uc;
}
+CFont *QFontEngineS60::fontWithSize(qreal size) const
+{
+ CFont *result = 0;
+ TFontSpec fontSpec(qt_QString2TPtrC(QFontEngine::fontDef.family), TInt(size));
+ fontSpec.iFontStyle.SetBitmapType(EAntiAliasedGlyphBitmap);
+ fontSpec.iFontStyle.SetPosture(QFontEngine::fontDef.style == QFont::StyleNormal?EPostureUpright:EPostureItalic);
+ fontSpec.iFontStyle.SetStrokeWeight(QFontEngine::fontDef.weight > QFont::Normal?EStrokeWeightBold:EStrokeWeightNormal);
+ const TInt errorCode = S60->screenDevice()->GetNearestFontToDesignHeightInPixels(result, fontSpec);
+ Q_ASSERT(result && (errorCode == 0));
+ return result;
+}
+
+void QFontEngineS60::setFontScale(qreal scale)
+{
+ if (qFuzzyCompare(scale, qreal(1))) {
+ if (!m_originalFont)
+ m_originalFont = fontWithSize(m_originalFontSizeInPixels);
+ m_activeFont = m_originalFont;
+ } else {
+ const qreal scaledFontSizeInPixels = m_originalFontSizeInPixels * scale;
+ if (!m_scaledFont ||
+ (TInt(scaledFontSizeInPixels) != TInt(m_scaledFontSizeInPixels))) {
+ releaseFont(m_scaledFont);
+ m_scaledFontSizeInPixels = scaledFontSizeInPixels;
+ m_scaledFont = fontWithSize(m_scaledFontSizeInPixels);
+ }
+ m_activeFont = m_scaledFont;
+ }
+}
+
+void QFontEngineS60::releaseFont(CFont *&font)
+{
+ if (font) {
+ S60->screenDevice()->ReleaseFont(font);
+ font = 0;
+ }
+}
+
QFontEngineS60::QFontEngineS60(const QFontDef &request, const QFontEngineS60Extensions *extensions)
: m_extensions(extensions)
+ , m_originalFont(0)
+ , m_originalFontSizeInPixels((request.pixelSize >= 0)?
+ request.pixelSize:pointsToPixels(request.pointSize))
+ , m_scaledFont(0)
+ , m_scaledFontSizeInPixels(0)
+ , m_activeFont(0)
{
QFontEngine::fontDef = request;
- m_fontSizeInPixels = (request.pixelSize >= 0)?
- request.pixelSize:pointsToPixels(request.pointSize);
-
- TFontSpec fontSpec(qt_QString2TPtrC(request.family), m_fontSizeInPixels);
- fontSpec.iFontStyle.SetBitmapType(EAntiAliasedGlyphBitmap);
- fontSpec.iFontStyle.SetPosture(request.style == QFont::StyleNormal?EPostureUpright:EPostureItalic);
- fontSpec.iFontStyle.SetStrokeWeight(request.weight > QFont::Normal?EStrokeWeightBold:EStrokeWeightNormal);
- const TInt errorCode = S60->screenDevice()->GetNearestFontToDesignHeightInPixels(m_font, fontSpec);
- Q_ASSERT(errorCode == 0);
-
+ setFontScale(1.0);
cache_cost = sizeof(QFontEngineS60);
}
QFontEngineS60::~QFontEngineS60()
{
- S60->screenDevice()->ReleaseFont(m_font);
+ releaseFont(m_originalFont);
+ releaseFont(m_scaledFont);
}
bool QFontEngineS60::stringToCMap(const QChar *characters, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const
@@ -251,12 +287,12 @@
QFixed QFontEngineS60::ascent() const
{
- return m_font->FontMaxAscent();
+ return m_originalFont->FontMaxAscent();
}
QFixed QFontEngineS60::descent() const
{
- return m_font->FontMaxDescent();
+ return m_originalFont->FontMaxDescent();
}
QFixed QFontEngineS60::leading() const
@@ -266,7 +302,7 @@
qreal QFontEngineS60::maxCharWidth() const
{
- return m_font->MaxCharWidthInPixels();
+ return m_originalFont->MaxCharWidthInPixels();
}
const char *QFontEngineS60::name() const
@@ -302,11 +338,11 @@
const TUint specialCode = (TUint)glyph | 0x80000000;
const CFont::TCharacterDataAvailability availability =
- m_font->GetCharacterData(specialCode, metrics, bitmap, bitmapSize);
+ m_activeFont->GetCharacterData(specialCode, metrics, bitmap, bitmapSize);
const glyph_t fallbackGlyph = '?';
if (availability != CFont::EAllCharacterData) {
const CFont::TCharacterDataAvailability fallbackAvailability =
- m_font->GetCharacterData(fallbackGlyph, metrics, bitmap, bitmapSize);
+ m_activeFont->GetCharacterData(fallbackGlyph, metrics, bitmap, bitmapSize);
Q_ASSERT(fallbackAvailability == CFont::EAllCharacterData);
}
}
--- a/src/gui/text/qfontengine_s60_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/text/qfontengine_s60_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -58,9 +58,6 @@
#include "qsize.h"
#include <openfont.h>
-class CFbsBitmap;
-class CFbsBitmapDevice;
-class CFbsBitGc;
class CFont;
QT_BEGIN_NAMESPACE
@@ -120,15 +117,21 @@
Type type() const;
void getCharacterData(glyph_t glyph, TOpenFontCharMetrics& metrics, const TUint8*& bitmap, TSize& bitmapSize) const;
+ void setFontScale(qreal scale);
private:
friend class QFontPrivate;
QFixed glyphAdvance(HB_Glyph glyph) const;
+ CFont *fontWithSize(qreal size) const;
+ static void releaseFont(CFont *&font);
- CFont* m_font;
const QFontEngineS60Extensions *m_extensions;
- qreal m_fontSizeInPixels;
+ CFont* m_originalFont;
+ const qreal m_originalFontSizeInPixels;
+ CFont* m_scaledFont;
+ qreal m_scaledFontSizeInPixels;
+ CFont* m_activeFont;
};
class QFontEngineMultiS60 : public QFontEngineMulti
--- a/src/gui/text/qtextoption.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/text/qtextoption.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -52,6 +52,9 @@
/*!
Constructs a text option with default properties for text.
+ The text alignment property is set to Qt::AlignLeft. The
+ word wrap property is set to QTextOption::WordWrap. The
+ using of design metrics flag is set to false.
*/
QTextOption::QTextOption()
: align(Qt::AlignLeft),
@@ -67,6 +70,8 @@
/*!
Constructs a text option with the given \a alignment for text.
+ The word wrap property is set to QTextOption::WordWrap. The using
+ of design metrics flag is set to false.
*/
QTextOption::QTextOption(Qt::Alignment alignment)
: align(alignment),
--- a/src/gui/text/qzipreader_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/text/qzipreader_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -49,7 +49,7 @@
// -------------
//
// This file is not part of the Qt API. It exists for the convenience
-// of the QLibrary class. This header file may change from
+// of the QZipReader class. This header file may change from
// version to version without notice, or even be removed.
//
// We mean it.
--- a/src/gui/text/qzipwriter_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/text/qzipwriter_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -47,7 +47,7 @@
// -------------
//
// This file is not part of the Qt API. It exists for the convenience
-// of the QLibrary class. This header file may change from
+// of the QZipWriter class. This header file may change from
// version to version without notice, or even be removed.
//
// We mean it.
--- a/src/gui/util/qsystemtrayicon_mac.mm Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/util/qsystemtrayicon_mac.mm Fri Mar 12 15:46:37 2010 +0200
@@ -569,16 +569,3 @@
}
@end
-
-/* Done here because this is the only .mm for now! -Sam */
-QMacCocoaAutoReleasePool::QMacCocoaAutoReleasePool()
-{
- NSApplicationLoad();
- pool = (void*)[[NSAutoreleasePool alloc] init];
-}
-
-QMacCocoaAutoReleasePool::~QMacCocoaAutoReleasePool()
-{
- [(NSAutoreleasePool*)pool release];
-}
-
--- a/src/gui/util/util.pri Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/util/util.pri Fri Mar 12 15:46:37 2010 +0200
@@ -41,5 +41,5 @@
symbian {
LIBS += -lsendas2 -letext -lapmime
- contains(QT_CONFIG, s60): LIBS += -lplatformenv -lCommonUI
+ contains(QT_CONFIG, s60): LIBS += -lplatformenv -lcommonui
}
--- a/src/gui/widgets/qdialogbuttonbox.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qdialogbuttonbox.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1017,6 +1017,8 @@
If the button has already been added, it is removed and added again with the
new role.
+ \note The button box takes ownership of the button.
+
\sa removeButton(), clear()
*/
void QDialogButtonBox::addButton(QAbstractButton *button, ButtonRole role)
--- a/src/gui/widgets/qlinecontrol.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qlinecontrol.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -524,8 +524,11 @@
m_textLayout.draw(painter, offset, selections, clip);
if (flags & DrawCursor){
+ int cursor = m_cursor;
+ if (m_preeditCursor != -1)
+ cursor += m_preeditCursor;
if(!m_blinkPeriod || m_blinkStatus)
- m_textLayout.drawCursor(painter, offset, m_cursor, m_cursorWidth);
+ m_textLayout.drawCursor(painter, offset, cursor, m_cursorWidth);
}
}
--- a/src/gui/widgets/qlinecontrol_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qlinecontrol_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -549,7 +549,10 @@
inline qreal QLineControl::cursorToX() const
{
- return cursorToX(m_cursor);
+ int cursor = m_cursor;
+ if (m_preeditCursor != -1)
+ cursor += m_preeditCursor;
+ return cursorToX(cursor);
}
inline bool QLineControl::isReadOnly() const
--- a/src/gui/widgets/qmainwindow.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmainwindow.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -119,8 +119,6 @@
q->setAttribute(Qt::WA_Hover);
#ifdef QT_SOFTKEYS_ENABLED
menuBarAction = QSoftKeyManager::createAction(QSoftKeyManager::MenuSoftKey, q);
- menuBarAction->setObjectName(QLatin1String("_q_menuSoftKeyAction"));
- menuBarAction->setVisible(false);
#endif
}
--- a/src/gui/widgets/qmainwindowlayout_mac.mm Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmainwindowlayout_mac.mm Fri Mar 12 15:46:37 2010 +0200
@@ -472,14 +472,20 @@
void QMainWindowLayout::cleanUpMacToolbarItems()
{
- for (int i = 0; i < toolbarItemsCopy.size(); ++i)
+#ifdef QT_MAC_USE_COCOA
+ QMacCocoaAutoReleasePool pool;
+#endif
+ for (int i = 0; i < toolbarItemsCopy.size(); ++i) {
+#ifdef QT_MAC_USE_COCOA
+ NSToolbarItem *item = static_cast<NSToolbarItem *>(toolbarItemsCopy.at(i));
+ [item setView:0];
+#endif
CFRelease(toolbarItemsCopy.at(i));
+ }
toolbarItemsCopy.clear();
unifiedToolbarHash.clear();
#ifdef QT_MAC_USE_COCOA
- QMacCocoaAutoReleasePool pool;
-
OSWindowRef window = qt_mac_window_for(layoutState.mainWindow);
NSToolbar *macToolbar = [window toolbar];
if (macToolbar) {
--- a/src/gui/widgets/qmenu.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmenu.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1588,10 +1588,9 @@
}
/*!
- This will set the default action to \a act. The default action may
- have a visual queue depending on the current QStyle. A default
- action is usually meant to indicate what will defaultly happen on a
- drop, as shown in a context menu.
+ This sets the default action to \a act. The default action may have
+ a visual cue, depending on the current QStyle. A default action
+ usually indicates what will happen by default when a drop occurs.
\sa defaultAction()
*/
--- a/src/gui/widgets/qmenu_mac.mm Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmenu_mac.mm Fri Mar 12 15:46:37 2010 +0200
@@ -175,6 +175,22 @@
return ret;
}
+static void cancelAllMenuTracking()
+{
+#ifdef QT_MAC_USE_COCOA
+ QMacCocoaAutoReleasePool pool;
+ NSMenu *mainMenu = [NSApp mainMenu];
+ [mainMenu cancelTracking];
+ for (NSMenuItem *item in [mainMenu itemArray]) {
+ if ([item submenu]) {
+ [[item submenu] cancelTracking];
+ }
+ }
+#else
+ CancelMenuTracking(AcquireRootMenu(), true, 0);
+#endif
+}
+
static bool actualMenuItemVisibility(const QMenuBarPrivate::QMacMenuBarPrivate *mbp,
const QMacMenuAction *action)
{
@@ -1830,6 +1846,12 @@
mac_menubar = 0;
if (qt_mac_current_menubar.qmenubar == q) {
+#ifdef QT_MAC_USE_COCOA
+ QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *loader = getMenuLoader();
+ [loader removeActionsFromAppMenu];
+#else
+ cancelAllMenuTracking();
+#endif
extern void qt_event_request_menubarupdate(); //qapplication_mac.cpp
qt_event_request_menubarupdate();
}
@@ -1933,20 +1955,6 @@
return qt_mac_is_ancestor(menuBar->parentWidget(), modalWidget);
}
-static void cancelAllMenuTracking()
-{
-#ifdef QT_MAC_USE_COCOA
- QMacCocoaAutoReleasePool pool;
- NSMenu *mainMenu = [NSApp mainMenu];
- [mainMenu cancelTracking];
- for (NSMenuItem *item in [mainMenu itemArray]) {
- if ([item submenu]) {
- [[item submenu] cancelTracking];
- }
- }
-#endif
-}
-
/*!
\internal
--- a/src/gui/widgets/qmenu_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmenu_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -71,6 +71,7 @@
#ifndef QT_NO_MENU
#ifdef Q_WS_S60
+void qt_symbian_next_menu_from_action(QWidget* actionContainer);
void qt_symbian_show_toplevel(CEikMenuPane* menuPane);
void qt_symbian_show_submenu(CEikMenuPane* menuPane, int id);
#endif // Q_WS_S60
@@ -87,7 +88,7 @@
typedef void NSMenuItem;
# endif //__OBJC__
struct QMacMenuAction {
- QMacMenuAction()
+ QMacMenuAction()
#ifndef QT_MAC_USE_COCOA
: command(0)
#else
@@ -124,7 +125,7 @@
#ifdef Q_WS_WINCE
struct QWceMenuAction {
- uint command;
+ uint command;
QPointer<QAction> action;
HMENU menuHandle;
QWceMenuAction() : menuHandle(0), command(0) {}
@@ -340,7 +341,7 @@
QList<QWceMenuAction*> actionItems;
HMENU menuHandle;
QWceMenuPrivate();
- ~QWceMenuPrivate();
+ ~QWceMenuPrivate();
void addAction(QAction *, QWceMenuAction* =0);
void addAction(QWceMenuAction *, QWceMenuAction* =0);
void syncAction(QWceMenuAction *);
--- a/src/gui/widgets/qmenu_symbian.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmenu_symbian.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -81,6 +81,7 @@
static uint qt_symbian_menu_static_cmd_id = QT_SYMBIAN_FIRST_MENU_ITEM;
static QPointer<QWidget> widgetWithContextMenu;
static QList<QAction*> contextMenuActionList;
+static QWidget* actionMenu = NULL;
static int contexMenuCommand=0;
bool menuExists()
@@ -224,8 +225,26 @@
}
#ifdef Q_WS_S60
+void qt_symbian_next_menu_from_action(QWidget *actionContainer)
+{
+ actionMenu = actionContainer;
+}
+
void qt_symbian_show_toplevel( CEikMenuPane* menuPane)
{
+ if (actionMenu) {
+ QMenuBarPrivate *mb = 0;
+ mb = menubars()->value(actionMenu);
+ qt_symbian_menu_static_cmd_id = QT_SYMBIAN_FIRST_MENU_ITEM;
+ deleteAll( &symbianMenus );
+ Q_ASSERT(mb);
+ mb->symbian_menubar->rebuild();
+ for (int i = 0; i < symbianMenus.count(); ++i)
+ QT_TRAP_THROWING(menuPane->AddMenuItemL(symbianMenus.at(i)->menuItemData));
+ actionMenu = NULL;
+ return;
+ }
+
if (!menuExists())
return;
rebuildMenu();
@@ -271,10 +290,16 @@
void QMenuBarPrivate::symbianCreateMenuBar(QWidget *parent)
{
Q_Q(QMenuBar);
- if (parent && parent->isWindow()){
- menubars()->insert(q->window(), this);
- symbian_menubar = new QSymbianMenuBarPrivate(this);
- nativeMenuBars.append(q);
+ if (parent) {
+ if(parent->isWindow()) {
+ menubars()->insert(q->window(), this);
+ symbian_menubar = new QSymbianMenuBarPrivate(this);
+ nativeMenuBars.append(q);
+ } else {
+ menubars()->insert(q->parentWidget(), this);
+ symbian_menubar = new QSymbianMenuBarPrivate(this);
+ nativeMenuBars.append(q);
+ }
}
}
@@ -284,6 +309,7 @@
int index = nativeMenuBars.indexOf(q);
nativeMenuBars.removeAt(index);
menubars()->remove(q->window(), this);
+ menubars()->remove(q->parentWidget(), this);
rebuildMenu();
if (symbian_menubar)
delete symbian_menubar;
--- a/src/gui/widgets/qmenubar.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmenubar.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -667,7 +667,7 @@
\i Application Menu | About <application name>
\i The application name is fetched from the \c {Info.plist} file
(see note below). If this entry is not found no About item
- will appear in the Application Menu.
+ will appear in the Application Menu.
\row \i config, options, setup, settings or preferences
\i Application Menu | Preferences
\i If this entry is not found the Settings item will be disabled
--- a/src/gui/widgets/qprintpreviewwidget.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qprintpreviewwidget.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -151,7 +151,11 @@
public:
GraphicsView(QWidget* parent = 0)
: QGraphicsView(parent)
- {}
+ {
+#ifdef Q_WS_MAC
+ setFrameStyle(QFrame::NoFrame);
+#endif
+ }
signals:
void resized();
--- a/src/gui/widgets/qtoolbar.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qtoolbar.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -441,8 +441,7 @@
When a QToolBar is not a child of a QMainWindow, it looses 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. This is a known
- issue which will be fixed in a future release.
+ and implementing QWidgetAction::createWidget() instead.
\sa QToolButton, QMenu, QAction, {Application Example}
*/
--- a/src/network/access/qfilenetworkreply.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qfilenetworkreply.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -49,10 +49,15 @@
QT_BEGIN_NAMESPACE
QFileNetworkReplyPrivate::QFileNetworkReplyPrivate()
- : QNetworkReplyPrivate(), realFileSize(0)
+ : QNetworkReplyPrivate(), fileEngine(0), fileSize(0), filePos(0)
{
}
+QFileNetworkReplyPrivate::~QFileNetworkReplyPrivate()
+{
+ delete fileEngine;
+}
+
QFileNetworkReply::~QFileNetworkReply()
{
}
@@ -94,9 +99,8 @@
if (fileName.isEmpty()) {
fileName = url.toString(QUrl::RemoveAuthority | QUrl::RemoveFragment | QUrl::RemoveQuery);
}
- d->realFile.setFileName(fileName);
- QFileInfo fi(d->realFile);
+ QFileInfo fi(fileName);
if (fi.isDir()) {
QString msg = QCoreApplication::translate("QNetworkAccessFileBackend", "Cannot open %1: Path is a directory").arg(url.toString());
setError(QNetworkReply::ContentOperationNotPermittedError, msg);
@@ -106,14 +110,15 @@
return;
}
- bool opened = d->realFile.open(QIODevice::ReadOnly | QIODevice::Unbuffered);
+ d->fileEngine = QAbstractFileEngine::create(fileName);
+ bool opened = d->fileEngine->open(QIODevice::ReadOnly | QIODevice::Unbuffered);
// could we open the file?
if (!opened) {
QString msg = QCoreApplication::translate("QNetworkAccessFileBackend", "Error opening %1: %2")
- .arg(d->realFile.fileName(), d->realFile.errorString());
+ .arg(fileName, d->fileEngine->errorString());
- if (d->realFile.exists()) {
+ if (fi.exists()) {
setError(QNetworkReply::ContentAccessDenied, msg);
QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
Q_ARG(QNetworkReply::NetworkError, QNetworkReply::ContentAccessDenied));
@@ -126,13 +131,13 @@
return;
}
- d->realFileSize = fi.size();
+ d->fileSize = fi.size();
setHeader(QNetworkRequest::LastModifiedHeader, fi.lastModified());
- setHeader(QNetworkRequest::ContentLengthHeader, d->realFileSize);
+ setHeader(QNetworkRequest::ContentLengthHeader, d->fileSize);
QMetaObject::invokeMethod(this, "metaDataChanged", Qt::QueuedConnection);
QMetaObject::invokeMethod(this, "downloadProgress", Qt::QueuedConnection,
- Q_ARG(qint64, d->realFileSize), Q_ARG(qint64, d->realFileSize));
+ Q_ARG(qint64, d->fileSize), Q_ARG(qint64, d->fileSize));
QMetaObject::invokeMethod(this, "readyRead", Qt::QueuedConnection);
QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
}
@@ -146,20 +151,25 @@
{
Q_D(QFileNetworkReply);
QNetworkReply::close();
- d->realFile.close();
+ if (d->fileEngine)
+ d->fileEngine->close();
}
void QFileNetworkReply::abort()
{
Q_D(QFileNetworkReply);
QNetworkReply::close();
- d->realFile.close();
+ if (d->fileEngine)
+ d->fileEngine->close();
}
qint64 QFileNetworkReply::bytesAvailable() const
{
Q_D(const QFileNetworkReply);
- return QNetworkReply::bytesAvailable() + d->realFile.bytesAvailable();
+ if (!d->fileEngine)
+ return 0;
+
+ return QNetworkReply::bytesAvailable() + d->fileSize - d->filePos;
}
bool QFileNetworkReply::isSequential () const
@@ -170,7 +180,7 @@
qint64 QFileNetworkReply::size() const
{
Q_D(const QFileNetworkReply);
- return d->realFileSize;
+ return d->fileSize;
}
/*!
@@ -179,11 +189,17 @@
qint64 QFileNetworkReply::readData(char *data, qint64 maxlen)
{
Q_D(QFileNetworkReply);
- qint64 ret = d->realFile.read(data, maxlen);
- if (ret == 0 && bytesAvailable() == 0)
+ if (!d->fileEngine)
+ return -1;
+
+ qint64 ret = d->fileEngine->read(data, maxlen);
+ if (ret == 0 && bytesAvailable() == 0) {
return -1; // everything had been read
- else
- return ret;
+ } else if (ret > 0) {
+ d->filePos += ret;
+ }
+
+ return ret;
}
--- a/src/network/access/qfilenetworkreply_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qfilenetworkreply_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -57,6 +57,7 @@
#include "qnetworkreply_p.h"
#include "qnetworkaccessmanager.h"
#include <QFile>
+#include <QAbstractFileEngine>
QT_BEGIN_NAMESPACE
@@ -85,9 +86,11 @@
{
public:
QFileNetworkReplyPrivate();
+ ~QFileNetworkReplyPrivate();
- QFile realFile;
- qint64 realFileSize;
+ QAbstractFileEngine *fileEngine;
+ qint64 fileSize;
+ qint64 filePos;
virtual bool isFinished() const;
--- a/src/network/access/qhttpnetworkconnection.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qhttpnetworkconnection.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -564,7 +564,8 @@
}
-QString QHttpNetworkConnectionPrivate::errorDetail(QNetworkReply::NetworkError errorCode, QAbstractSocket* socket)
+QString QHttpNetworkConnectionPrivate::errorDetail(QNetworkReply::NetworkError errorCode, QAbstractSocket* socket,
+ const QString &extraDetail)
{
Q_ASSERT(socket);
@@ -581,7 +582,7 @@
errorString = QLatin1String(QT_TRANSLATE_NOOP("QHttp", "Connection closed"));
break;
case QNetworkReply::TimeoutError:
- errorString = QLatin1String(QT_TRANSLATE_NOOP("QHttp", "HTTP request failed"));
+ errorString = QLatin1String(QT_TRANSLATE_NOOP("QAbstractSocket", "Socket operation timed out"));
break;
case QNetworkReply::ProxyAuthenticationRequiredError:
errorString = QLatin1String(QT_TRANSLATE_NOOP("QHttp", "Proxy requires authentication"));
@@ -600,7 +601,7 @@
break;
default:
// all other errors are treated as QNetworkReply::UnknownNetworkError
- errorString = QLatin1String(QT_TRANSLATE_NOOP("QHttp", "HTTP request failed"));
+ errorString = extraDetail;
break;
}
return errorString;
@@ -687,8 +688,14 @@
if (channels[i].resendCurrent) {
channels[i].resendCurrent = false;
channels[i].state = QHttpNetworkConnectionChannel::IdleState;
- if (channels[i].reply)
+ if (channels[i].reply) {
+
+ // if this is not possible, error will be emitted and connection terminated
+ if (!channels[i].resetUploadData())
+ continue;
+
channels[i].sendRequest();
+ }
}
}
--- a/src/network/access/qhttpnetworkconnection_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qhttpnetworkconnection_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -185,7 +185,8 @@
void createAuthorization(QAbstractSocket *socket, QHttpNetworkRequest &request);
- QString errorDetail(QNetworkReply::NetworkError errorCode, QAbstractSocket *socket);
+ QString errorDetail(QNetworkReply::NetworkError errorCode, QAbstractSocket *socket,
+ const QString &extraDetail = QString());
#ifndef QT_NO_COMPRESS
bool expand(QAbstractSocket *socket, QHttpNetworkReply *reply, bool dataComplete);
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -674,15 +674,8 @@
case 407: // proxy auth required
if (connection->d_func()->handleAuthenticateChallenge(socket, reply, (statusCode == 407), resend)) {
if (resend) {
- QNonContiguousByteDevice* uploadByteDevice = request.uploadByteDevice();
- if (uploadByteDevice) {
- if (uploadByteDevice->reset()) {
- written = 0;
- } else {
- connection->d_func()->emitReplyError(socket, reply, QNetworkReply::ContentReSendError);
- break;
- }
- }
+ if (!resetUploadData())
+ break;
reply->d_func()->eraseData();
@@ -712,6 +705,22 @@
}
}
+bool QHttpNetworkConnectionChannel::resetUploadData()
+{
+ QNonContiguousByteDevice* uploadByteDevice = request.uploadByteDevice();
+ if (!uploadByteDevice)
+ return true;
+
+ if (uploadByteDevice->reset()) {
+ written = 0;
+ return true;
+ } else {
+ connection->d_func()->emitReplyError(socket, reply, QNetworkReply::ContentReSendError);
+ return false;
+ }
+}
+
+
void QHttpNetworkConnectionChannel::pipelineInto(HttpMessagePair &pair)
{
// this is only called for simple GET
@@ -872,7 +881,7 @@
break;
}
QPointer<QObject> that = connection;
- QString errorString = connection->d_func()->errorDetail(errorCode, socket);
+ QString errorString = connection->d_func()->errorDetail(errorCode, socket, socket->errorString());
if (send2Reply) {
if (reply) {
reply->d_func()->errorString = errorString;
--- a/src/network/access/qhttpnetworkconnectionchannel_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qhttpnetworkconnectionchannel_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -151,6 +151,8 @@
void allDone(); // reply header + body have been read
void handleStatus(); // called from allDone()
+ bool resetUploadData(); // return true if resetting worked or there is no upload data
+
void pipelineInto(HttpMessagePair &pair);
void requeueCurrentlyPipelinedRequests();
void detectPipeliningSupport();
--- a/src/network/access/qhttpnetworkheader.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qhttpnetworkheader.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -80,7 +80,7 @@
QByteArray result;
bool first = true;
- foreach (QByteArray value, allValues) {
+ foreach (const QByteArray &value, allValues) {
if (!first)
result += ", ";
first = false;
--- a/src/network/access/qnetworkaccesshttpbackend.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qnetworkaccesshttpbackend.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -753,7 +753,7 @@
QByteArray value = rawHeader(it->first);
if (!value.isEmpty()) {
if (qstricmp(it->first.constData(), "set-cookie") == 0)
- value += "\n";
+ value += '\n';
else
value += ", ";
}
--- a/src/network/access/qnetworkrequest.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qnetworkrequest.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -649,7 +649,7 @@
{
QList<QNetworkCookie> result;
QList<QByteArray> cookieList = raw.split(';');
- foreach (QByteArray cookie, cookieList) {
+ foreach (const QByteArray &cookie, cookieList) {
QList<QNetworkCookie> parsed = QNetworkCookie::parseCookies(cookie.trimmed());
if (parsed.count() != 1)
return QVariant(); // invalid Cookie: header
--- a/src/network/kernel/qauthenticator.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/kernel/qauthenticator.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -270,7 +270,7 @@
break;
case Ntlm:
// #### extract from header
- realm = QString();
+ realm.clear();
break;
case DigestMd5: {
realm = QString::fromLatin1(options.value("realm"));
@@ -281,7 +281,7 @@
break;
}
default:
- realm = QString();
+ realm.clear();
challenge = QByteArray();
phase = Invalid;
}
--- a/src/network/kernel/qnetworkinterface.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/kernel/qnetworkinterface.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -541,7 +541,7 @@
{
QList<QSharedDataPointer<QNetworkInterfacePrivate> > privs = manager()->allInterfaces();
QList<QNetworkInterface> result;
- foreach (QSharedDataPointer<QNetworkInterfacePrivate> p, privs) {
+ foreach (const QSharedDataPointer<QNetworkInterfacePrivate> &p, privs) {
QNetworkInterface item;
item.d = p;
result << item;
@@ -560,7 +560,7 @@
{
QList<QSharedDataPointer<QNetworkInterfacePrivate> > privs = manager()->allInterfaces();
QList<QHostAddress> result;
- foreach (const QSharedDataPointer<QNetworkInterfacePrivate> p, privs) {
+ foreach (const QSharedDataPointer<QNetworkInterfacePrivate> &p, privs) {
foreach (const QNetworkAddressEntry &entry, p->addressEntries)
result += entry.ip();
}
--- a/src/network/socket/qlocalserver.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qlocalserver.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -122,9 +122,9 @@
qDeleteAll(d->pendingConnections);
d->pendingConnections.clear();
d->closeServer();
- d->serverName = QString();
- d->fullServerName = QString();
- d->errorString = QString();
+ d->serverName.clear();
+ d->fullServerName.clear();
+ d->errorString.clear();
d->error = QAbstractSocket::UnknownSocketError;
}
@@ -226,8 +226,8 @@
}
if (!d->listen(name)) {
- d->serverName = QString();
- d->fullServerName = QString();
+ d->serverName.clear();
+ d->fullServerName.clear();
return false;
}
--- a/src/network/socket/qlocalsocket_tcp.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qlocalsocket_tcp.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -102,8 +102,8 @@
switch(newState) {
case QAbstractSocket::UnconnectedState:
state = QLocalSocket::UnconnectedState;
- serverName = QString();
- fullServerName = QString();
+ serverName.clear();
+ fullServerName.clear();
break;
case QAbstractSocket::ConnectingState:
state = QLocalSocket::ConnectingState;
@@ -218,7 +218,7 @@
|| state() == ConnectingState)
return;
- d->errorString = QString();
+ d->errorString.clear();
d->state = ConnectingState;
emit stateChanged(d->state);
@@ -333,8 +333,8 @@
{
Q_D(QLocalSocket);
d->tcpSocket->close();
- d->serverName = QString();
- d->fullServerName = QString();
+ d->serverName.clear();
+ d->fullServerName.clear();
QIODevice::close();
}
--- a/src/network/socket/qlocalsocket_unix.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qlocalsocket_unix.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -109,8 +109,8 @@
switch(newState) {
case QAbstractSocket::UnconnectedState:
state = QLocalSocket::UnconnectedState;
- serverName = QString();
- fullServerName = QString();
+ serverName.clear();
+ fullServerName.clear();
break;
case QAbstractSocket::ConnectingState:
state = QLocalSocket::ConnectingState;
@@ -225,7 +225,7 @@
|| state() == ConnectingState)
return;
- d->errorString = QString();
+ d->errorString.clear();
d->unixSocket.setSocketState(QAbstractSocket::ConnectingState);
d->state = ConnectingState;
emit stateChanged(d->state);
@@ -341,7 +341,7 @@
errorOccurred(QLocalSocket::UnknownSocketError, function);
}
connectingSocket = -1;
- connectingName = QString();
+ connectingName.clear();
connectingOpenMode = 0;
}
@@ -438,10 +438,10 @@
if (d->connectingSocket != -1)
::close(d->connectingSocket);
d->connectingSocket = -1;
- d->connectingName = QString();
+ d->connectingName.clear();
d->connectingOpenMode = 0;
- d->serverName = QString();
- d->fullServerName = QString();
+ d->serverName.clear();
+ d->fullServerName.clear();
QIODevice::close();
}
--- a/src/network/socket/qnativesocketengine.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qnativesocketengine.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -778,6 +778,14 @@
QNativeSocketEnginePrivate::RemoteHostClosedErrorString);
close();
return -1;
+ } else if (readBytes == -1) {
+ if (!d->hasSetSocketError) {
+ d->hasSetSocketError = true;
+ d->socketError = QAbstractSocket::NetworkError;
+ d->socketErrorString = qt_error_string();
+ }
+ close();
+ return -1;
}
return readBytes;
}
--- a/src/network/socket/qnativesocketengine_unix.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qnativesocketengine_unix.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -903,7 +903,7 @@
case EBADF:
case EINVAL:
case EIO:
- setError(QAbstractSocket::NetworkError, ReadErrorString);
+ //error string is now set in read(), not here in nativeRead()
break;
#ifdef Q_OS_SYMBIAN
case EPIPE:
--- a/src/network/socket/qnativesocketengine_win.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qnativesocketengine_win.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1068,7 +1068,7 @@
break;
case WSAEBADF:
case WSAEINVAL:
- setError(QAbstractSocket::NetworkError, ReadErrorString);
+ //error string is now set in read(), not here in nativeRead()
break;
case WSAECONNRESET:
case WSAECONNABORTED:
@@ -1199,8 +1199,10 @@
#if defined (QTCPSOCKETENGINE_DEBUG)
qDebug("QNativeSocketEnginePrivate::nativeClose()");
#endif
- linger l = {1, 0};
- ::setsockopt(socketDescriptor, SOL_SOCKET, SO_DONTLINGER, (char*)&l, sizeof(l));
+ // We were doing a setsockopt here before with SO_DONTLINGER. (However with kind of wrong
+ // usage of parameters, it wants a BOOL but we used a struct and pretended it to be bool).
+ // We don't think setting this option should be done here, if a user wants it she/he can
+ // do it manually with socketDescriptor()/setSocketDescriptor();
::closesocket(socketDescriptor);
}
--- a/src/network/socket/qtcpserver.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qtcpserver.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -513,6 +513,10 @@
0 is returned if this function is called when there are no pending
connections.
+ \note The returned QTcpSocket object cannot be used from another
+ thread. If you want to use an incoming connection from another thread,
+ you need to override incomingConnection().
+
\sa hasPendingConnections()
*/
QTcpSocket *QTcpServer::nextPendingConnection()
@@ -543,6 +547,11 @@
may not be usable with native socket functions, and should only be
used with QTcpSocket::setSocketDescriptor().
+ \note If you want to handle an incoming connection as a new QTcpSocket
+ object in another thread you have to pass the socketDescriptor
+ to the other thread and create the QTcpSocket object there and
+ use its setSocketDescriptor() method.
+
\sa newConnection(), nextPendingConnection()
*/
void QTcpServer::incomingConnection(int socketDescriptor)
--- a/src/network/ssl/qsslcertificate.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/ssl/qsslcertificate.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -634,11 +634,11 @@
QByteArray tmp;
for (int i = 0; i <= array.size() - 64; i += 64) {
tmp += QByteArray::fromRawData(array.data() + i, 64);
- tmp += "\n";
+ tmp += '\n';
}
if (int remainder = array.size() % 64) {
tmp += QByteArray::fromRawData(array.data() + array.size() - remainder, remainder);
- tmp += "\n";
+ tmp += '\n';
}
return BEGINCERTSTRING "\n" + tmp + ENDCERTSTRING "\n";
@@ -696,11 +696,11 @@
static bool matchLineFeed(const QByteArray &pem, int *offset)
{
- char ch = pem.at(*offset);
+ char ch;
// ignore extra whitespace at the end of the line
- while (ch == ' ' && *offset < pem.size())
- ch = pem.at(++*offset);
+ while (*offset < pem.size() && (ch = pem.at(*offset)) == ' ')
+ ++*offset;
if (ch == '\n') {
*offset += 1;
@@ -732,7 +732,7 @@
break;
offset = endPos + sizeof(ENDCERTSTRING) - 1;
- if (!matchLineFeed(pem, &offset))
+ if (offset < pem.size() && !matchLineFeed(pem, &offset))
break;
QByteArray decoded = QByteArray::fromBase64(
--- a/src/network/ssl/qsslsocket.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/ssl/qsslsocket.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1109,7 +1109,7 @@
{
Q_D(QSslSocket);
d->configuration.ciphers.clear();
- foreach (QString cipherName, ciphers.split(QLatin1String(":"),QString::SkipEmptyParts)) {
+ foreach (const QString &cipherName, ciphers.split(QLatin1String(":"),QString::SkipEmptyParts)) {
for (int i = 0; i < 3; ++i) {
// ### Crude
QSslCipher cipher(cipherName, QSsl::SslProtocol(i));
--- a/src/network/ssl/qsslsocket_openssl.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/ssl/qsslsocket_openssl.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -553,6 +553,12 @@
#endif
writeBuffer.free(writtenBytes);
totalBytesWritten += writtenBytes;
+
+ if (writtenBytes < nextDataBlockSize) {
+ // break out of the writing loop and try again after we had read
+ transmitting = true;
+ break;
+ }
}
if (totalBytesWritten > 0) {
@@ -586,12 +592,26 @@
while ((pendingBytes = plainSocket->bytesAvailable()) > 0) {
// Read encrypted data from the socket into a buffer.
data.resize(pendingBytes);
- int decryptedBytesRead = plainSocket->read(data.data(), pendingBytes);
+ // just peek() here because q_BIO_write could write less data than expected
+ int encryptedBytesRead = plainSocket->peek(data.data(), pendingBytes);
#ifdef QSSLSOCKET_DEBUG
- qDebug() << "QSslSocketBackendPrivate::transmit: read" << decryptedBytesRead << "encrypted bytes from the socket";
+ qDebug() << "QSslSocketBackendPrivate::transmit: read" << encryptedBytesRead << "encrypted bytes from the socket";
#endif
// Write encrypted data from the buffer into the read BIO.
- q_BIO_write(readBio, data.constData(), decryptedBytesRead);
+ int writtenToBio = q_BIO_write(readBio, data.constData(), encryptedBytesRead);
+
+ // do the actual read() here and throw away the results.
+ if (writtenToBio > 0) {
+ // ### TODO: make this cheaper by not making it memcpy. E.g. make it work with data=0x0 or make it work with seek
+ plainSocket->read(data.data(), writtenToBio);
+ } else {
+ // ### Better error handling.
+ q->setErrorString(QSslSocket::tr("Unable to decrypt data: %1").arg(SSL_ERRORSTR()));
+ q->setSocketError(QAbstractSocket::UnknownSocketError);
+ emit q->error(QAbstractSocket::UnknownSocketError);
+ return;
+ }
+
transmitting = true;
}
@@ -798,7 +818,7 @@
QRegExp regexp(commonName, Qt::CaseInsensitive, QRegExp::Wildcard);
if (!regexp.exactMatch(peerName)) {
bool matched = false;
- foreach (QString altName, configuration.peerCertificate
+ foreach (const QString &altName, configuration.peerCertificate
.alternateSubjectNames().values(QSsl::DnsEntry)) {
regexp.setPattern(altName);
if (regexp.exactMatch(peerName)) {
--- a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -184,6 +184,9 @@
simpleShaderProg->addShader(vertexShader);
simpleShaderProg->addShader(fragShader);
simpleShaderProg->bindAttributeLocation("vertexCoordsArray", QT_VERTEX_COORDS_ATTR);
+ simpleShaderProg->bindAttributeLocation("pmvMatrix1", QT_PMV_MATRIX_1_ATTR);
+ simpleShaderProg->bindAttributeLocation("pmvMatrix2", QT_PMV_MATRIX_2_ATTR);
+ simpleShaderProg->bindAttributeLocation("pmvMatrix3", QT_PMV_MATRIX_3_ATTR);
simpleShaderProg->link();
if (!simpleShaderProg->isLinked()) {
qCritical() << "Errors linking simple shader:"
@@ -324,6 +327,11 @@
newProg->program->bindAttributeLocation("textureCoordArray", QT_TEXTURE_COORDS_ATTR);
if (newProg->useOpacityAttribute)
newProg->program->bindAttributeLocation("opacityArray", QT_OPACITY_ATTR);
+ if (newProg->usePmvMatrix) {
+ newProg->program->bindAttributeLocation("pmvMatrix1", QT_PMV_MATRIX_1_ATTR);
+ newProg->program->bindAttributeLocation("pmvMatrix2", QT_PMV_MATRIX_2_ATTR);
+ newProg->program->bindAttributeLocation("pmvMatrix3", QT_PMV_MATRIX_3_ATTR);
+ }
newProg->program->link();
if (!newProg->program->isLinked()) {
@@ -424,7 +432,6 @@
"patternColor",
"globalOpacity",
"depth",
- "pmvMatrix",
"maskTexture",
"fragmentColor",
"linearData",
@@ -743,6 +750,7 @@
}
requiredProgram.useTextureCoords = texCoords;
requiredProgram.useOpacityAttribute = (opacityMode == AttributeOpacity);
+ requiredProgram.usePmvMatrix = true;
// At this point, requiredProgram is fully populated so try to find the program in the cache
currentShaderProg = sharedShaders->findProgramInCache(requiredProgram);
--- a/src/opengl/gl2paintengineex/qglengineshadermanager_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/gl2paintengineex/qglengineshadermanager_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -253,6 +253,9 @@
static const GLuint QT_VERTEX_COORDS_ATTR = 0;
static const GLuint QT_TEXTURE_COORDS_ATTR = 1;
static const GLuint QT_OPACITY_ATTR = 2;
+static const GLuint QT_PMV_MATRIX_1_ATTR = 3;
+static const GLuint QT_PMV_MATRIX_2_ATTR = 4;
+static const GLuint QT_PMV_MATRIX_3_ATTR = 5;
class QGLEngineShaderProg;
@@ -397,6 +400,7 @@
bool useTextureCoords;
bool useOpacityAttribute;
+ bool usePmvMatrix;
bool operator==(const QGLEngineShaderProg& other) {
// We don't care about the program
@@ -431,7 +435,6 @@
PatternColor,
GlobalOpacity,
Depth,
- PmvMatrix,
MaskTexture,
FragmentColor,
LinearData,
--- a/src/opengl/gl2paintengineex/qglengineshadersource_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/gl2paintengineex/qglengineshadersource_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -63,210 +63,229 @@
QT_MODULE(OpenGL)
-static const char* const qglslMainVertexShader = "\
- uniform highp float depth;\
- void setPosition();\
- void main(void)\
- {\
- setPosition();\
- gl_Position.z = depth * gl_Position.w;\
- }";
+static const char* const qglslMainVertexShader = "\n\
+ void setPosition(); \n\
+ void main(void) \n\
+ { \n\
+ setPosition(); \n\
+ }\n";
-static const char* const qglslMainWithTexCoordsVertexShader = "\
- attribute highp vec2 textureCoordArray; \
- varying highp vec2 textureCoords; \
- uniform highp float depth;\
- void setPosition();\
- void main(void) \
- {\
- setPosition();\
- gl_Position.z = depth * gl_Position.w;\
- textureCoords = textureCoordArray; \
- }";
+static const char* const qglslMainWithTexCoordsVertexShader = "\n\
+ attribute highp vec2 textureCoordArray; \n\
+ varying highp vec2 textureCoords; \n\
+ void setPosition(); \n\
+ void main(void) \n\
+ { \n\
+ setPosition(); \n\
+ textureCoords = textureCoordArray; \n\
+ }\n";
-static const char* const qglslMainWithTexCoordsAndOpacityVertexShader = "\
- attribute highp vec2 textureCoordArray; \
- attribute lowp float opacityArray; \
- varying highp vec2 textureCoords; \
- varying lowp float opacity; \
- uniform highp float depth; \
- void setPosition(); \
- void main(void) \
- { \
- setPosition(); \
- gl_Position.z = depth * gl_Position.w; \
- textureCoords = textureCoordArray; \
- opacity = opacityArray; \
- }";
+static const char* const qglslMainWithTexCoordsAndOpacityVertexShader = "\n\
+ attribute highp vec2 textureCoordArray; \n\
+ attribute lowp float opacityArray; \n\
+ varying highp vec2 textureCoords; \n\
+ varying lowp float opacity; \n\
+ void setPosition(); \n\
+ void main(void) \n\
+ { \n\
+ setPosition(); \n\
+ textureCoords = textureCoordArray; \n\
+ opacity = opacityArray; \n\
+ }\n";
// NOTE: We let GL do the perspective correction so texture lookups in the fragment
// shader are also perspective corrected.
-static const char* const qglslPositionOnlyVertexShader = "\
- attribute highp vec2 vertexCoordsArray;\
- uniform highp mat3 pmvMatrix;\
- void setPosition(void)\
- {\
- vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \
- gl_Position = vec4(transformedPos.xy, 0.0, transformedPos.z); \
- }";
+static const char* const qglslPositionOnlyVertexShader = "\n\
+ attribute highp vec2 vertexCoordsArray; \n\
+ attribute highp vec3 pmvMatrix1; \n\
+ attribute highp vec3 pmvMatrix2; \n\
+ attribute highp vec3 pmvMatrix3; \n\
+ void setPosition(void) \n\
+ { \n\
+ highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
+ vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
+ gl_Position = vec4(transformedPos.xy, 0.0, transformedPos.z); \n\
+ }\n";
-static const char* const qglslUntransformedPositionVertexShader = "\
- attribute highp vec4 vertexCoordsArray;\
- void setPosition(void)\
- {\
- gl_Position = vertexCoordsArray;\
- }";
+static const char* const qglslUntransformedPositionVertexShader = "\n\
+ attribute highp vec4 vertexCoordsArray; \n\
+ void setPosition(void) \n\
+ { \n\
+ gl_Position = vertexCoordsArray; \n\
+ }\n";
// Pattern Brush - This assumes the texture size is 8x8 and thus, the inverted size is 0.125
-static const char* const qglslPositionWithPatternBrushVertexShader = "\
- attribute highp vec2 vertexCoordsArray; \
- uniform highp mat3 pmvMatrix; \
- uniform mediump vec2 halfViewportSize; \
- uniform highp vec2 invertedTextureSize; \
- uniform highp mat3 brushTransform; \
- varying highp vec2 patternTexCoords; \
- void setPosition(void) { \
- vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \
- gl_Position.xy = transformedPos.xy / transformedPos.z; \
- mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \
- mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1.0); \
- mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \
- gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \
- patternTexCoords.xy = (hTexCoords.xy * 0.125) * invertedHTexCoordsZ; \
- }";
+static const char* const qglslPositionWithPatternBrushVertexShader = "\n\
+ attribute highp vec2 vertexCoordsArray; \n\
+ attribute highp vec3 pmvMatrix1; \n\
+ attribute highp vec3 pmvMatrix2; \n\
+ attribute highp vec3 pmvMatrix3; \n\
+ uniform mediump vec2 halfViewportSize; \n\
+ uniform highp vec2 invertedTextureSize; \n\
+ uniform highp mat3 brushTransform; \n\
+ varying highp vec2 patternTexCoords; \n\
+ void setPosition(void) \n\
+ { \n\
+ highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
+ vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
+ gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
+ mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
+ mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1.0); \n\
+ mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
+ gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
+ patternTexCoords.xy = (hTexCoords.xy * 0.125) * invertedHTexCoordsZ; \n\
+ }\n";
static const char* const qglslAffinePositionWithPatternBrushVertexShader
= qglslPositionWithPatternBrushVertexShader;
-static const char* const qglslPatternBrushSrcFragmentShader = "\
- uniform lowp sampler2D brushTexture;\
- uniform lowp vec4 patternColor; \
- varying highp vec2 patternTexCoords;\
- lowp vec4 srcPixel() { \
- return patternColor * (1.0 - texture2D(brushTexture, patternTexCoords).r); \
+static const char* const qglslPatternBrushSrcFragmentShader = "\n\
+ uniform lowp sampler2D brushTexture; \n\
+ uniform lowp vec4 patternColor; \n\
+ varying highp vec2 patternTexCoords;\n\
+ lowp vec4 srcPixel() \n\
+ { \n\
+ return patternColor * (1.0 - texture2D(brushTexture, patternTexCoords).r); \n\
}\n";
// Linear Gradient Brush
-static const char* const qglslPositionWithLinearGradientBrushVertexShader = "\
- attribute highp vec2 vertexCoordsArray; \
- uniform highp mat3 pmvMatrix; \
- uniform mediump vec2 halfViewportSize; \
- uniform highp vec3 linearData; \
- uniform highp mat3 brushTransform; \
- varying mediump float index; \
- void setPosition() { \
- vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \
- gl_Position.xy = transformedPos.xy / transformedPos.z; \
- mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \
- mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \
- mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \
- gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \
- index = (dot(linearData.xy, hTexCoords.xy) * linearData.z) * invertedHTexCoordsZ; \
- }";
+static const char* const qglslPositionWithLinearGradientBrushVertexShader = "\n\
+ attribute highp vec2 vertexCoordsArray; \n\
+ attribute highp vec3 pmvMatrix1; \n\
+ attribute highp vec3 pmvMatrix2; \n\
+ attribute highp vec3 pmvMatrix3; \n\
+ uniform mediump vec2 halfViewportSize; \n\
+ uniform highp vec3 linearData; \n\
+ uniform highp mat3 brushTransform; \n\
+ varying mediump float index; \n\
+ void setPosition() \n\
+ { \n\
+ highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
+ vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
+ gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
+ mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
+ mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\
+ mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
+ gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
+ index = (dot(linearData.xy, hTexCoords.xy) * linearData.z) * invertedHTexCoordsZ; \n\
+ }\n";
static const char* const qglslAffinePositionWithLinearGradientBrushVertexShader
= qglslPositionWithLinearGradientBrushVertexShader;
-static const char* const qglslLinearGradientBrushSrcFragmentShader = "\
- uniform lowp sampler2D brushTexture; \
- varying mediump float index; \
- lowp vec4 srcPixel() { \
- mediump vec2 val = vec2(index, 0.5); \
- return texture2D(brushTexture, val); \
+static const char* const qglslLinearGradientBrushSrcFragmentShader = "\n\
+ uniform lowp sampler2D brushTexture; \n\
+ varying mediump float index; \n\
+ lowp vec4 srcPixel() \n\
+ { \n\
+ mediump vec2 val = vec2(index, 0.5); \n\
+ return texture2D(brushTexture, val); \n\
}\n";
// Conical Gradient Brush
-static const char* const qglslPositionWithConicalGradientBrushVertexShader = "\
- attribute highp vec2 vertexCoordsArray;\
- uniform highp mat3 pmvMatrix;\
- uniform mediump vec2 halfViewportSize; \
- uniform highp mat3 brushTransform; \
- varying highp vec2 A; \
- void setPosition(void)\
- {\
- vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \
- gl_Position.xy = transformedPos.xy / transformedPos.z; \
- mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \
- mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \
- mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \
- gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \
- A = hTexCoords.xy * invertedHTexCoordsZ; \
- }";
+static const char* const qglslPositionWithConicalGradientBrushVertexShader = "\n\
+ attribute highp vec2 vertexCoordsArray; \n\
+ attribute highp vec3 pmvMatrix1; \n\
+ attribute highp vec3 pmvMatrix2; \n\
+ attribute highp vec3 pmvMatrix3; \n\
+ uniform mediump vec2 halfViewportSize; \n\
+ uniform highp mat3 brushTransform; \n\
+ varying highp vec2 A; \n\
+ void setPosition(void) \n\
+ { \n\
+ highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
+ vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
+ gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
+ mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
+ mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\
+ mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
+ gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
+ A = hTexCoords.xy * invertedHTexCoordsZ; \n\
+ }\n";
static const char* const qglslAffinePositionWithConicalGradientBrushVertexShader
= qglslPositionWithConicalGradientBrushVertexShader;
static const char* const qglslConicalGradientBrushSrcFragmentShader = "\n\
#define INVERSE_2PI 0.1591549430918953358 \n\
- uniform lowp sampler2D brushTexture; \n\
- uniform mediump float angle; \
- varying highp vec2 A; \
- lowp vec4 srcPixel() { \
- highp float t; \
- if (abs(A.y) == abs(A.x)) \
- t = (atan(-A.y + 0.002, A.x) + angle) * INVERSE_2PI; \
- else \
- t = (atan(-A.y, A.x) + angle) * INVERSE_2PI; \
- return texture2D(brushTexture, vec2(t - floor(t), 0.5)); \
- }";
+ uniform lowp sampler2D brushTexture; \n\
+ uniform mediump float angle; \n\
+ varying highp vec2 A; \n\
+ lowp vec4 srcPixel() \n\
+ { \n\
+ highp float t; \n\
+ if (abs(A.y) == abs(A.x)) \n\
+ t = (atan(-A.y + 0.002, A.x) + angle) * INVERSE_2PI; \n\
+ else \n\
+ t = (atan(-A.y, A.x) + angle) * INVERSE_2PI; \n\
+ return texture2D(brushTexture, vec2(t - floor(t), 0.5)); \n\
+ }\n";
// Radial Gradient Brush
-static const char* const qglslPositionWithRadialGradientBrushVertexShader = "\
- attribute highp vec2 vertexCoordsArray;\
- uniform highp mat3 pmvMatrix;\
- uniform mediump vec2 halfViewportSize; \
- uniform highp mat3 brushTransform; \
- uniform highp vec2 fmp; \
- varying highp float b; \
- varying highp vec2 A; \
- void setPosition(void) \
- {\
- vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \
- gl_Position.xy = transformedPos.xy / transformedPos.z; \
- mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \
- mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \
- mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \
- gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \
- A = hTexCoords.xy * invertedHTexCoordsZ; \
- b = 2.0 * dot(A, fmp); \
- }";
+static const char* const qglslPositionWithRadialGradientBrushVertexShader = "\n\
+ attribute highp vec2 vertexCoordsArray;\n\
+ attribute highp vec3 pmvMatrix1; \n\
+ attribute highp vec3 pmvMatrix2; \n\
+ attribute highp vec3 pmvMatrix3; \n\
+ uniform mediump vec2 halfViewportSize; \n\
+ uniform highp mat3 brushTransform; \n\
+ uniform highp vec2 fmp; \n\
+ varying highp float b; \n\
+ varying highp vec2 A; \n\
+ void setPosition(void) \n\
+ {\n\
+ highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
+ vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
+ gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
+ mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
+ mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\
+ mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
+ gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
+ A = hTexCoords.xy * invertedHTexCoordsZ; \n\
+ b = 2.0 * dot(A, fmp); \n\
+ }\n";
static const char* const qglslAffinePositionWithRadialGradientBrushVertexShader
= qglslPositionWithRadialGradientBrushVertexShader;
-static const char* const qglslRadialGradientBrushSrcFragmentShader = "\
- uniform lowp sampler2D brushTexture; \
- uniform highp float fmp2_m_radius2; \
- uniform highp float inverse_2_fmp2_m_radius2; \
- varying highp float b; \
- varying highp vec2 A; \
- lowp vec4 srcPixel() { \
- highp float c = -dot(A, A); \
- highp vec2 val = vec2((-b + sqrt(b*b - 4.0*fmp2_m_radius2*c)) * inverse_2_fmp2_m_radius2, 0.5); \
- return texture2D(brushTexture, val); \
- }";
+static const char* const qglslRadialGradientBrushSrcFragmentShader = "\n\
+ uniform lowp sampler2D brushTexture; \n\
+ uniform highp float fmp2_m_radius2; \n\
+ uniform highp float inverse_2_fmp2_m_radius2; \n\
+ varying highp float b; \n\
+ varying highp vec2 A; \n\
+ lowp vec4 srcPixel() \n\
+ { \n\
+ highp float c = -dot(A, A); \n\
+ highp vec2 val = vec2((-b + sqrt(b*b - 4.0*fmp2_m_radius2*c)) * inverse_2_fmp2_m_radius2, 0.5); \n\
+ return texture2D(brushTexture, val); \n\
+ }\n";
// Texture Brush
-static const char* const qglslPositionWithTextureBrushVertexShader = "\
- attribute highp vec2 vertexCoordsArray; \
- uniform highp mat3 pmvMatrix; \
- uniform mediump vec2 halfViewportSize; \
- uniform highp vec2 invertedTextureSize; \
- uniform highp mat3 brushTransform; \
- varying highp vec2 textureCoords; \
- void setPosition(void) { \
- vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \
- gl_Position.xy = transformedPos.xy / transformedPos.z; \
- mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \
- mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \
- mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \
- gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \
- textureCoords.xy = (hTexCoords.xy * invertedTextureSize) * gl_Position.w; \
- }";
+static const char* const qglslPositionWithTextureBrushVertexShader = "\n\
+ attribute highp vec2 vertexCoordsArray; \n\
+ attribute highp vec3 pmvMatrix1; \n\
+ attribute highp vec3 pmvMatrix2; \n\
+ attribute highp vec3 pmvMatrix3; \n\
+ uniform mediump vec2 halfViewportSize; \n\
+ uniform highp vec2 invertedTextureSize; \n\
+ uniform highp mat3 brushTransform; \n\
+ varying highp vec2 textureCoords; \n\
+ void setPosition(void) \n\
+ { \n\
+ highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
+ vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
+ gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
+ mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
+ mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\
+ mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
+ gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
+ textureCoords.xy = (hTexCoords.xy * invertedTextureSize) * gl_Position.w; \n\
+ }\n";
static const char* const qglslAffinePositionWithTextureBrushVertexShader
= qglslPositionWithTextureBrushVertexShader;
@@ -275,148 +294,165 @@
// OpenGL ES does not support GL_REPEAT wrap modes for NPOT textures. So instead,
// we emulate GL_REPEAT by only taking the fractional part of the texture coords.
// TODO: Special case POT textures which don't need this emulation
-static const char* const qglslTextureBrushSrcFragmentShader = "\
- varying highp vec2 textureCoords; \
- uniform lowp sampler2D brushTexture; \
- lowp vec4 srcPixel() { \
- return texture2D(brushTexture, fract(textureCoords)); \
- }";
+static const char* const qglslTextureBrushSrcFragmentShader = "\n\
+ varying highp vec2 textureCoords; \n\
+ uniform lowp sampler2D brushTexture; \n\
+ lowp vec4 srcPixel() { \n\
+ return texture2D(brushTexture, fract(textureCoords)); \n\
+ }\n";
#else
-static const char* const qglslTextureBrushSrcFragmentShader = "\
- varying highp vec2 textureCoords; \
- uniform lowp sampler2D brushTexture; \
- lowp vec4 srcPixel() { \
- return texture2D(brushTexture, textureCoords); \
- }";
+static const char* const qglslTextureBrushSrcFragmentShader = "\n\
+ varying highp vec2 textureCoords; \n\
+ uniform lowp sampler2D brushTexture; \n\
+ lowp vec4 srcPixel() \n\
+ { \n\
+ return texture2D(brushTexture, textureCoords); \n\
+ }\n";
#endif
-static const char* const qglslTextureBrushSrcWithPatternFragmentShader = "\
- varying highp vec2 textureCoords; \
- uniform lowp vec4 patternColor; \
- uniform lowp sampler2D brushTexture; \
- lowp vec4 srcPixel() { \
- return patternColor * (1.0 - texture2D(brushTexture, textureCoords).r); \
- }";
+static const char* const qglslTextureBrushSrcWithPatternFragmentShader = "\n\
+ varying highp vec2 textureCoords; \n\
+ uniform lowp vec4 patternColor; \n\
+ uniform lowp sampler2D brushTexture; \n\
+ lowp vec4 srcPixel() \n\
+ { \n\
+ return patternColor * (1.0 - texture2D(brushTexture, textureCoords).r); \n\
+ }\n";
// Solid Fill Brush
-static const char* const qglslSolidBrushSrcFragmentShader = "\
- uniform lowp vec4 fragmentColor; \
- lowp vec4 srcPixel() { \
- return fragmentColor; \
- }";
+static const char* const qglslSolidBrushSrcFragmentShader = "\n\
+ uniform lowp vec4 fragmentColor; \n\
+ lowp vec4 srcPixel() \n\
+ { \n\
+ return fragmentColor; \n\
+ }\n";
-static const char* const qglslImageSrcFragmentShader = "\
- varying highp vec2 textureCoords; \
- uniform lowp sampler2D imageTexture; \
- lowp vec4 srcPixel() { \
- return texture2D(imageTexture, textureCoords); \
- }";
+static const char* const qglslImageSrcFragmentShader = "\n\
+ varying highp vec2 textureCoords; \n\
+ uniform lowp sampler2D imageTexture; \n\
+ lowp vec4 srcPixel() \n\
+ { \n\
+ return texture2D(imageTexture, textureCoords); \n\
+ }\n";
+
+static const char* const qglslCustomSrcFragmentShader = "\n\
+ varying highp vec2 textureCoords; \n\
+ uniform lowp sampler2D imageTexture; \n\
+ lowp vec4 customShader(lowp sampler2D texture, highp vec2 coords); \n\
+ lowp vec4 srcPixel() \n\
+ { \n\
+ return customShader(imageTexture, textureCoords); \n\
+ }\n";
-static const char* const qglslCustomSrcFragmentShader = "\
- varying highp vec2 textureCoords; \
- uniform lowp sampler2D imageTexture; \
- lowp vec4 customShader(lowp sampler2D texture, highp vec2 coords); \
- lowp vec4 srcPixel() { \
- return customShader(imageTexture, textureCoords); \
- }";
+static const char* const qglslImageSrcWithPatternFragmentShader = "\n\
+ varying highp vec2 textureCoords; \n\
+ uniform lowp vec4 patternColor; \n\
+ uniform lowp sampler2D imageTexture; \n\
+ lowp vec4 srcPixel() \n\
+ { \n\
+ return patternColor * (1.0 - texture2D(imageTexture, textureCoords).r); \n\
+ }\n";
-static const char* const qglslImageSrcWithPatternFragmentShader = "\
- varying highp vec2 textureCoords; \
- uniform lowp vec4 patternColor; \
- uniform lowp sampler2D imageTexture; \
- lowp vec4 srcPixel() { \
- return patternColor * (1.0 - texture2D(imageTexture, textureCoords).r); \
+static const char* const qglslNonPremultipliedImageSrcFragmentShader = "\n\
+ varying highp vec2 textureCoords; \n\
+ uniform lowp sampler2D imageTexture; \n\
+ lowp vec4 srcPixel() \n\
+ { \n\
+ lowp vec4 sample = texture2D(imageTexture, textureCoords); \n\
+ sample.rgb = sample.rgb * sample.a; \n\
+ return sample; \n\
+ }\n";
+
+static const char* const qglslShockingPinkSrcFragmentShader = "\n\
+ lowp vec4 srcPixel() \n\
+ { \n\
+ return vec4(0.98, 0.06, 0.75, 1.0); \n\
}\n";
-static const char* const qglslNonPremultipliedImageSrcFragmentShader = "\
- varying highp vec2 textureCoords; \
- uniform lowp sampler2D imageTexture; \
- lowp vec4 srcPixel() { \
- lowp vec4 sample = texture2D(imageTexture, textureCoords); \
- sample.rgb = sample.rgb * sample.a; \
- return sample; \
- }";
+static const char* const qglslMainFragmentShader_ImageArrays = "\n\
+ varying lowp float opacity; \n\
+ lowp vec4 srcPixel(); \n\
+ void main() \n\
+ { \n\
+ gl_FragColor = srcPixel() * opacity; \n\
+ }\n";
-static const char* const qglslShockingPinkSrcFragmentShader = "\
- lowp vec4 srcPixel() { \
- return vec4(0.98, 0.06, 0.75, 1.0); \
- }";
+static const char* const qglslMainFragmentShader_CMO = "\n\
+ uniform lowp float globalOpacity; \n\
+ lowp vec4 srcPixel(); \n\
+ lowp vec4 applyMask(lowp vec4); \n\
+ lowp vec4 compose(lowp vec4); \n\
+ void main() \n\
+ { \n\
+ gl_FragColor = applyMask(compose(srcPixel()*globalOpacity))); \n\
+ }\n";
-static const char* const qglslMainFragmentShader_ImageArrays = "\
- varying lowp float opacity; \
- lowp vec4 srcPixel(); \
- void main() { \
- gl_FragColor = srcPixel() * opacity; \
- }";
+static const char* const qglslMainFragmentShader_CM = "\n\
+ lowp vec4 srcPixel(); \n\
+ lowp vec4 applyMask(lowp vec4); \n\
+ lowp vec4 compose(lowp vec4); \n\
+ void main() \n\
+ { \n\
+ gl_FragColor = applyMask(compose(srcPixel())); \n\
+ }\n";
-static const char* const qglslMainFragmentShader_CMO = "\
- uniform lowp float globalOpacity; \
- lowp vec4 srcPixel(); \
- lowp vec4 applyMask(lowp vec4); \
- lowp vec4 compose(lowp vec4); \
- void main() { \
- gl_FragColor = applyMask(compose(srcPixel()*globalOpacity))); \
- }";
-
-static const char* const qglslMainFragmentShader_CM = "\
- lowp vec4 srcPixel(); \
- lowp vec4 applyMask(lowp vec4); \
- lowp vec4 compose(lowp vec4); \
- void main() { \
- gl_FragColor = applyMask(compose(srcPixel())); \
- }";
+static const char* const qglslMainFragmentShader_MO = "\n\
+ uniform lowp float globalOpacity; \n\
+ lowp vec4 srcPixel(); \n\
+ lowp vec4 applyMask(lowp vec4); \n\
+ void main() \n\
+ { \n\
+ gl_FragColor = applyMask(srcPixel()*globalOpacity); \n\
+ }\n";
-static const char* const qglslMainFragmentShader_MO = "\
- uniform lowp float globalOpacity; \
- lowp vec4 srcPixel(); \
- lowp vec4 applyMask(lowp vec4); \
- void main() { \
- gl_FragColor = applyMask(srcPixel()*globalOpacity); \
- }";
+static const char* const qglslMainFragmentShader_M = "\n\
+ lowp vec4 srcPixel(); \n\
+ lowp vec4 applyMask(lowp vec4); \n\
+ void main() \n\
+ { \n\
+ gl_FragColor = applyMask(srcPixel()); \n\
+ }\n";
-static const char* const qglslMainFragmentShader_M = "\
- lowp vec4 srcPixel(); \
- lowp vec4 applyMask(lowp vec4); \
- void main() { \
- gl_FragColor = applyMask(srcPixel()); \
- }";
-
-static const char* const qglslMainFragmentShader_CO = "\
- uniform lowp float globalOpacity; \
- lowp vec4 srcPixel(); \
- lowp vec4 compose(lowp vec4); \
- void main() { \
- gl_FragColor = compose(srcPixel()*globalOpacity); \
- }";
+static const char* const qglslMainFragmentShader_CO = "\n\
+ uniform lowp float globalOpacity; \n\
+ lowp vec4 srcPixel(); \n\
+ lowp vec4 compose(lowp vec4); \n\
+ void main() \n\
+ { \n\
+ gl_FragColor = compose(srcPixel()*globalOpacity); \n\
+ }\n";
-static const char* const qglslMainFragmentShader_C = "\
- lowp vec4 srcPixel(); \
- lowp vec4 compose(lowp vec4); \
- void main() { \
- gl_FragColor = compose(srcPixel()); \
- }";
+static const char* const qglslMainFragmentShader_C = "\n\
+ lowp vec4 srcPixel(); \n\
+ lowp vec4 compose(lowp vec4); \n\
+ void main() \n\
+ { \n\
+ gl_FragColor = compose(srcPixel()); \n\
+ }\n";
-static const char* const qglslMainFragmentShader_O = "\
- uniform lowp float globalOpacity; \
- lowp vec4 srcPixel(); \
- void main() { \
- gl_FragColor = srcPixel()*globalOpacity; \
- }";
+static const char* const qglslMainFragmentShader_O = "\n\
+ uniform lowp float globalOpacity; \n\
+ lowp vec4 srcPixel(); \n\
+ void main() \n\
+ { \n\
+ gl_FragColor = srcPixel()*globalOpacity; \n\
+ }\n";
-static const char* const qglslMainFragmentShader = "\
- lowp vec4 srcPixel(); \
- void main() { \
- gl_FragColor = srcPixel(); \
- }";
+static const char* const qglslMainFragmentShader = "\n\
+ lowp vec4 srcPixel(); \n\
+ void main() \n\
+ { \n\
+ gl_FragColor = srcPixel(); \n\
+ }\n";
-static const char* const qglslMaskFragmentShader = "\
- varying highp vec2 textureCoords;\
- uniform lowp sampler2D maskTexture;\
- lowp vec4 applyMask(lowp vec4 src) \
- {\
- lowp vec4 mask = texture2D(maskTexture, textureCoords); \
- return src * mask.a; \
- }";
+static const char* const qglslMaskFragmentShader = "\n\
+ varying highp vec2 textureCoords;\n\
+ uniform lowp sampler2D maskTexture;\n\
+ lowp vec4 applyMask(lowp vec4 src) \n\
+ {\n\
+ lowp vec4 mask = texture2D(maskTexture, textureCoords); \n\
+ return src * mask.a; \n\
+ }\n";
// For source over with subpixel antialiasing, the final color is calculated per component as follows
// (.a is alpha component, .c is red, green or blue component):
@@ -433,23 +469,23 @@
// dest.c = dest.c * (1 - mask.c) + src.c * alpha
//
-static const char* const qglslRgbMaskFragmentShaderPass1 = "\
- varying highp vec2 textureCoords;\
- uniform lowp sampler2D maskTexture;\
- lowp vec4 applyMask(lowp vec4 src) \
- {\
- lowp vec4 mask = texture2D(maskTexture, textureCoords); \
- return src.a * mask; \
- }";
+static const char* const qglslRgbMaskFragmentShaderPass1 = "\n\
+ varying highp vec2 textureCoords;\n\
+ uniform lowp sampler2D maskTexture;\n\
+ lowp vec4 applyMask(lowp vec4 src) \n\
+ { \n\
+ lowp vec4 mask = texture2D(maskTexture, textureCoords); \n\
+ return src.a * mask; \n\
+ }\n";
-static const char* const qglslRgbMaskFragmentShaderPass2 = "\
- varying highp vec2 textureCoords;\
- uniform lowp sampler2D maskTexture;\
- lowp vec4 applyMask(lowp vec4 src) \
- {\
- lowp vec4 mask = texture2D(maskTexture, textureCoords); \
- return src * mask; \
- }";
+static const char* const qglslRgbMaskFragmentShaderPass2 = "\n\
+ varying highp vec2 textureCoords;\n\
+ uniform lowp sampler2D maskTexture;\n\
+ lowp vec4 applyMask(lowp vec4 src) \n\
+ { \n\
+ lowp vec4 mask = texture2D(maskTexture, textureCoords); \n\
+ return src * mask; \n\
+ }\n";
/*
Left to implement:
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -168,12 +168,6 @@
if (matrixDirty)
updateMatrix();
-
- if (simpleShaderMatrixUniformDirty) {
- const GLuint location = shaderManager->simpleProgram()->uniformLocation("pmvMatrix");
- glUniformMatrix3fv(location, 1, GL_FALSE, (GLfloat*)pmvMatrix);
- simpleShaderMatrixUniformDirty = false;
- }
}
void QGL2PaintEngineExPrivate::updateBrushTexture()
@@ -392,9 +386,11 @@
matrixDirty = false;
- // The actual data has been updated so both shader program's uniforms need updating
- simpleShaderMatrixUniformDirty = true;
- shaderMatrixUniformDirty = true;
+ // Set the PMV matrix attribute. As we use an attributes rather than uniforms, we only
+ // need to do this once for every matrix change and persists across all shader programs.
+ glVertexAttrib3fv(QT_PMV_MATRIX_1_ATTR, pmvMatrix[0]);
+ glVertexAttrib3fv(QT_PMV_MATRIX_2_ATTR, pmvMatrix[1]);
+ glVertexAttrib3fv(QT_PMV_MATRIX_3_ATTR, pmvMatrix[2]);
dasher.setInvScale(inverseScale);
stroker.setInvScale(inverseScale);
@@ -932,18 +928,12 @@
if (changed) {
// The shader program has changed so mark all uniforms as dirty:
brushUniformsDirty = true;
- shaderMatrixUniformDirty = true;
opacityUniformDirty = true;
}
if (brushUniformsDirty && mode != ImageDrawingMode && mode != ImageArrayDrawingMode)
updateBrushUniforms();
- if (shaderMatrixUniformDirty) {
- glUniformMatrix3fv(location(QGLEngineShaderManager::PmvMatrix), 1, GL_FALSE, (GLfloat*)pmvMatrix);
- shaderMatrixUniformDirty = false;
- }
-
if (opacityMode == QGLEngineShaderManager::UniformOpacity && opacityUniformDirty) {
shaderManager->currentProgram()->setUniformValue(location(QGLEngineShaderManager::GlobalOpacity), (GLfloat)q->state()->opacity);
opacityUniformDirty = false;
@@ -1955,11 +1945,8 @@
if (old_state == s || old_state->renderHintsChanged)
renderHintsChanged();
- if (old_state == s || old_state->matrixChanged) {
+ if (old_state == s || old_state->matrixChanged)
d->matrixDirty = true;
- d->simpleShaderMatrixUniformDirty = true;
- d->shaderMatrixUniformDirty = true;
- }
if (old_state == s || old_state->compositionModeChanged)
d->compositionModeDirty = true;
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -252,8 +252,6 @@
bool compositionModeDirty;
bool brushTextureDirty;
bool brushUniformsDirty;
- bool simpleShaderMatrixUniformDirty;
- bool shaderMatrixUniformDirty;
bool opacityUniformDirty;
bool stencilClean; // Has the stencil not been used for clipping so far?
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -42,6 +42,8 @@
#include "qtextureglyphcache_gl_p.h"
#include "qpaintengineex_opengl2_p.h"
+QT_BEGIN_NAMESPACE
+
#ifdef Q_WS_WIN
extern Q_GUI_EXPORT bool qt_cleartype_enabled;
#endif
@@ -243,3 +245,5 @@
return m_type == QFontEngineGlyphCache::Raster_RGBMask ? 2 : 0;
#endif
}
+
+QT_END_NAMESPACE
--- a/src/opengl/qgl.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/qgl.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -4393,6 +4393,13 @@
\note This function temporarily disables depth-testing when the
text is drawn.
+ \note This function can only be used inside a
+ QPainter::beginNativePainting()/QPainter::endNativePainting() block
+ if the default OpenGL paint engine is QPaintEngine::OpenGL. To make
+ QPaintEngine::OpenGL the default GL engine, call
+ QGL::setPreferredPaintEngine(QPaintEngine::OpenGL) before the
+ QApplication constructor.
+
\l{Overpainting Example}{Overpaint} with QPainter::drawText() instead.
*/
@@ -4412,8 +4419,17 @@
bool auto_swap = autoBufferSwap();
QPaintEngine::Type oldEngineType = qgl_engine_selector()->preferredPaintEngine();
+
+ QPaintEngine *engine = paintEngine();
+ if (engine && (oldEngineType == QPaintEngine::OpenGL2) && engine->isActive()) {
+ qWarning("QGLWidget::renderText(): Calling renderText() while a GL 2 paint engine is"
+ " active on the same device is not allowed.");
+ return;
+ }
+
+ // this changes what paintEngine() returns
qgl_engine_selector()->setPreferredPaintEngine(QPaintEngine::OpenGL);
- QPaintEngine *engine = paintEngine();
+ engine = paintEngine();
QPainter *p;
bool reuse_painter = false;
if (engine->isActive()) {
@@ -4506,8 +4522,17 @@
win_y = height - win_y; // y is inverted
QPaintEngine::Type oldEngineType = qgl_engine_selector()->preferredPaintEngine();
+ QPaintEngine *engine = paintEngine();
+
+ if (engine && (oldEngineType == QPaintEngine::OpenGL2) && engine->isActive()) {
+ qWarning("QGLWidget::renderText(): Calling renderText() while a GL 2 paint engine is"
+ " active on the same device is not allowed.");
+ return;
+ }
+
+ // this changes what paintEngine() returns
qgl_engine_selector()->setPreferredPaintEngine(QPaintEngine::OpenGL);
- QPaintEngine *engine = paintEngine();
+ engine = paintEngine();
QPainter *p;
bool reuse_painter = false;
bool use_depth_testing = glIsEnabled(GL_DEPTH_TEST);
--- a/src/opengl/qglshaderprogram.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/qglshaderprogram.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -106,6 +106,19 @@
\snippet doc/src/snippets/code/src_opengl_qglshaderprogram.cpp 2
+ \section1 Binary shaders and programs
+
+ Binary shaders may be specified using \c{glShaderBinary()} on
+ the return value from QGLShader::shaderId(). The QGLShader instance
+ containing the binary can then be added to the shader program with
+ addShader() and linked in the usual fashion with link().
+
+ Binary programs may be specified using \c{glProgramBinaryOES()}
+ on the return value from programId(). Then the application should
+ call link(), which will notice that the program has already been
+ specified and linked, allowing other operations to be performed
+ on the shader program.
+
\sa QGLShader
*/
@@ -632,8 +645,6 @@
qWarning("QGLShaderProgram::addShader: Program and shader are not associated with same context.");
return false;
}
- if (!shader->d_func()->compiled)
- return false;
if (!shader->d_func()->shaderGuard.id())
return false;
glAttachShader(d->programGuard.id(), shader->d_func()->shaderGuard.id());
@@ -820,8 +831,20 @@
GLuint program = d->programGuard.id();
if (!program)
return false;
+ GLint value;
+ if (d->shaders.isEmpty()) {
+ // If there are no explicit shaders, then it is possible that the
+ // application added a program binary with glProgramBinaryOES(),
+ // or otherwise populated the shaders itself. Check to see if the
+ // program is already linked and bail out if so.
+ value = 0;
+ glGetProgramiv(program, GL_LINK_STATUS, &value);
+ d->linked = (value != 0);
+ if (d->linked)
+ return true;
+ }
glLinkProgram(program);
- GLint value = 0;
+ value = 0;
glGetProgramiv(program, GL_LINK_STATUS, &value);
d->linked = (value != 0);
value = 0;
@@ -928,6 +951,15 @@
GLuint QGLShaderProgram::programId() const
{
Q_D(const QGLShaderProgram);
+ GLuint id = d->programGuard.id();
+ if (id)
+ return id;
+
+ // Create the identifier if we don't have one yet. This is for
+ // applications that want to create the attached shader configuration
+ // themselves, particularly those using program binaries.
+ if (!const_cast<QGLShaderProgram *>(this)->init())
+ return 0;
return d->programGuard.id();
}
--- a/src/opengl/qpixmapdata_gl.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/qpixmapdata_gl.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -252,10 +252,6 @@
{
setSerialNumber(++qt_gl_pixmap_serial);
m_glDevice.setPixmapData(this);
-
- // Set InteralBindOptions minus the memory managed, since this
- // QGLTexture is not managed as part of the internal texture cache
- m_texture.options = QGLContext::PremultipliedAlphaBindOption;
}
QGLPixmapData::~QGLPixmapData()
@@ -344,18 +340,18 @@
}
if (!m_source.isNull()) {
- glBindTexture(target, m_texture.id);
if (external_format == GL_RGB) {
- const QImage tx = m_source.convertToFormat(QImage::Format_RGB888);
+ const QImage tx = m_source.convertToFormat(QImage::Format_RGB888).mirrored(false, true);
+
+ glBindTexture(target, m_texture.id);
glTexSubImage2D(target, 0, 0, 0, w, h, external_format,
GL_UNSIGNED_BYTE, tx.bits());
} else {
const QImage tx = ctx->d_func()->convertToGLFormat(m_source, true, external_format);
+
+ glBindTexture(target, m_texture.id);
glTexSubImage2D(target, 0, 0, 0, w, h, external_format,
GL_UNSIGNED_BYTE, tx.bits());
- // convertToGLFormat will flip the Y axis, so it needs to
- // be drawn upside down
- m_texture.options |= QGLContext::InvertedYBindOption;
}
if (useFramebufferObjects())
--- a/src/openvg/qpixmapdata_vg.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/openvg/qpixmapdata_vg.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -46,11 +46,13 @@
#include "qvgimagepool_p.h"
#ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE
+#include <private/qt_s60_p.h>
+#include <fbs.h>
#include <graphics/sgimage.h>
typedef EGLImageKHR (*pfnEglCreateImageKHR)(EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, EGLint*);
typedef EGLBoolean (*pfnEglDestroyImageKHR)(EGLDisplay, EGLImageKHR);
typedef VGImage (*pfnVgCreateEGLImageTargetKHR)(VGeglImageKHR);
-#endif
+#endif // QT_SYMBIAN_SUPPORTS_SGIMAGE
QT_BEGIN_NAMESPACE
@@ -425,6 +427,34 @@
}
#if defined(Q_OS_SYMBIAN)
+
+static CFbsBitmap* createBlitCopy(CFbsBitmap* bitmap)
+{
+ CFbsBitmap *copy = q_check_ptr(new CFbsBitmap);
+ if(!copy)
+ return 0;
+
+ if (copy->Create(bitmap->SizeInPixels(), bitmap->DisplayMode()) != KErrNone) {
+ delete copy;
+ copy = 0;
+
+ return 0;
+ }
+
+ CFbsBitmapDevice* bitmapDevice = 0;
+ CFbsBitGc *bitmapGc = 0;
+ QT_TRAP_THROWING(bitmapDevice = CFbsBitmapDevice::NewL(copy));
+ QT_TRAP_THROWING(bitmapGc = CFbsBitGc::NewL());
+ bitmapGc->Activate(bitmapDevice);
+
+ bitmapGc->BitBlt(TPoint(), bitmap);
+
+ delete bitmapGc;
+ delete bitmapDevice;
+
+ return copy;
+}
+
void QVGPixmapData::cleanup()
{
is_null = w = h = 0;
@@ -510,7 +540,49 @@
eglDestroyImageKHR(context->display(), eglImage);
SgDriver::Close();
} else if (type == QPixmapData::FbsBitmap) {
+ CFbsBitmap *bitmap = reinterpret_cast<CFbsBitmap*>(pixmap);
+ bool deleteSourceBitmap = false;
+
+#ifdef Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE
+
+ // Rasterize extended bitmaps
+
+ TUid extendedBitmapType = bitmap->ExtendedBitmapType();
+ if (extendedBitmapType != KNullUid) {
+ bitmap = createBlitCopy(bitmap);
+ deleteSourceBitmap = true;
+ }
+#endif
+
+ if (bitmap->IsCompressedInRAM()) {
+ bitmap = createBlitCopy(bitmap);
+ deleteSourceBitmap = true;
+ }
+
+ TDisplayMode displayMode = bitmap->DisplayMode();
+ QImage::Format format = qt_TDisplayMode2Format(displayMode);
+
+ TSize size = bitmap->SizeInPixels();
+
+ bitmap->BeginDataAccess();
+ uchar *bytes = (uchar*)bitmap->DataAddress();
+ QImage img = QImage(bytes, size.iWidth, size.iHeight, format);
+ img = img.copy();
+ bitmap->EndDataAccess();
+
+ if(displayMode == EGray2) {
+ //Symbian thinks set pixels are white/transparent, Qt thinks they are foreground/solid
+ //So invert mono bitmaps so that masks work correctly.
+ img.invertPixels();
+ } else if(displayMode == EColor16M) {
+ img = img.rgbSwapped(); // EColor16M is BGR
+ }
+
+ fromImage(img, Qt::AutoColor);
+
+ if(deleteSourceBitmap)
+ delete bitmap;
}
#else
Q_UNUSED(pixmap);
@@ -593,7 +665,25 @@
SgDriver::Close();
return reinterpret_cast<void*>(sgImage);
} else if (type == QPixmapData::FbsBitmap) {
- return 0;
+ CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap);
+
+ if (bitmap) {
+ if (bitmap->Create(TSize(source.width(), source.height()),
+ EColor16MAP) == KErrNone) {
+ const uchar *sptr = qt_vg_imageBits(source);
+ bitmap->BeginDataAccess();
+
+ uchar *dptr = (uchar*)bitmap->DataAddress();
+ Mem::Copy(dptr, sptr, source.byteCount());
+
+ bitmap->EndDataAccess();
+ } else {
+ delete bitmap;
+ bitmap = 0;
+ }
+ }
+
+ return reinterpret_cast<void*>(bitmap);
}
#else
Q_UNUSED(type);
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -552,6 +552,34 @@
return &lockedImage;
}
+
+bool QDirectFBPixmapData::scroll(int dx, int dy, const QRect &rect)
+{
+ if (!dfbSurface) {
+ return false;
+ }
+ unlockSurface();
+ DFBResult result = dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBPixmapData::scroll", result);
+ return false;
+ }
+ result = dfbSurface->SetPorterDuff(dfbSurface, DSPD_NONE);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBPixmapData::scroll", result);
+ return false;
+ }
+
+ const DFBRectangle source = { rect.x(), rect.y(), rect.width(), rect.height() };
+ result = dfbSurface->Blit(dfbSurface, dfbSurface, &source, source.x + dx, source.y + dy);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBPixmapData::scroll", result);
+ return false;
+ }
+
+ return true;
+}
+
void QDirectFBPixmapData::invalidate()
{
if (dfbSurface) {
@@ -568,6 +596,3 @@
QT_END_NAMESPACE
#endif // QT_NO_QWS_DIRECTFB
-
-
-
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h Fri Mar 12 15:46:37 2010 +0200
@@ -81,6 +81,7 @@
virtual QImage toImage() const;
virtual QPaintEngine *paintEngine() const;
virtual QImage *buffer();
+ virtual bool scroll(int dx, int dy, const QRect &rect);
// Pure virtual in QPixmapData, so re-implement here and delegate to QDirectFBPaintDevice
virtual int metric(QPaintDevice::PaintDeviceMetric m) const { return QDirectFBPaintDevice::metric(m); }
--- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -378,9 +378,6 @@
return;
}
screen->flipSurface(dfbSurface, flipFlags, region, offset);
- if (noSystemBackground) {
- dfbSurface->Clear(dfbSurface, 0, 0, 0, 0);
- }
#else
setOpaque(windowOpacity != 0xff);
if (mode == Offscreen) {
--- a/src/plugins/imageformats/ico/qicohandler.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/imageformats/ico/qicohandler.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -556,7 +556,11 @@
else // # colors used
icoAttrib.ncolors = header.biClrUsed ? header.biClrUsed : 1 << icoAttrib.nbits;
icoAttrib.w = iconEntry.bWidth;
+ if (icoAttrib.w == 0)
+ icoAttrib.w = header.biWidth;
icoAttrib.h = iconEntry.bHeight;
+ if (icoAttrib.h == 0)
+ icoAttrib.h = header.biHeight/2;
QImage::Format format = QImage::Format_ARGB32;
if (icoAttrib.nbits == 24)
--- a/src/plugins/phonon/mmf/mmf.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/phonon/mmf/mmf.pro Fri Mar 12 15:46:37 2010 +0200
@@ -92,7 +92,7 @@
LIBS += -lmediaclientaudiostream # For CMdaAudioOutputStream
# These are for effects.
-LIBS += -lAudioEqualizerEffect -lBassBoostEffect -lDistanceAttenuationEffect -lDopplerbase -lEffectBase -lEnvironmentalReverbEffect -lListenerDopplerEffect -lListenerLocationEffect -lListenerOrientationEffect -lLocationBase -lLoudnessEffect -lOrientationBase -lSourceDopplerEffect -lSourceLocationEffect -lSourceOrientationEffect -lStereoWideningEffect
+LIBS += -lAudioEqualizerEffect -lBassBoostEffect -lDistanceAttenuationEffect -lDopplerBase -lEffectBase -lEnvironmentalReverbEffect -lListenerDopplerEffect -lListenerLocationEffect -lListenerOrientationEffect -lLocationBase -lLoudnessEffect -lOrientationBase -lSourceDopplerEffect -lSourceLocationEffect -lSourceOrientationEffect -lStereoWideningEffect
# This is needed for having the .qtplugin file properly created on Symbian.
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/phonon_backend
--- a/src/plugins/s60/3_2/3_2.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/s60/3_2/3_2.pro Fri Mar 12 15:46:37 2010 +0200
@@ -10,7 +10,7 @@
SOURCES += ../src/qlocale_3_2.cpp \
../src/qdesktopservices_3_2.cpp \
../src/qcoreapplication_3_2.cpp
- LIBS += -lDirectoryLocalizer -lefsrv
+ LIBS += -ldirectorylocalizer -lefsrv
INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
}
--- a/src/plugins/s60/5_0/5_0.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/s60/5_0/5_0.pro Fri Mar 12 15:46:37 2010 +0200
@@ -10,7 +10,7 @@
SOURCES += ../src/qlocale_3_2.cpp \
../src/qdesktopservices_3_2.cpp \
../src/qcoreapplication_3_2.cpp
- LIBS += -lDirectoryLocalizer -lefsrv
+ LIBS += -ldirectorylocalizer -lefsrv
INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
}
--- a/src/plugins/s60/s60pluginbase.pri Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/s60/s60pluginbase.pri Fri Mar 12 15:46:37 2010 +0200
@@ -6,11 +6,12 @@
MMP_RULES += NOEXPORTLIBRARY
-defBlock = \
+# :QTP:QTPROD-479:defBlock name clashes with def_block.prf
+pluginDefBlock = \
"$${LITERAL_HASH}ifdef WINSCW" \
"DEFFILE ../bwins/qts60plugin.def" \
"$${LITERAL_HASH}else" \
"DEFFILE ../eabi/qts60plugin.def" \
"$${LITERAL_HASH}endif"
-MMP_RULES += defBlock
\ No newline at end of file
+MMP_RULES += pluginDefBlock
\ No newline at end of file
--- a/src/qbase.pri Fri Feb 19 23:40:16 2010 +0200
+++ b/src/qbase.pri Fri Mar 12 15:46:37 2010 +0200
@@ -95,31 +95,17 @@
DEFINES+=QT_MAKEDLL
TARGET.CAPABILITY = All -Tcb
- defBlock = \
- "$${LITERAL_HASH}ifdef WINSCW" \
- "DEFFILE ../s60installs/bwins/$${TARGET}.def" \
- "$${LITERAL_HASH}elif defined EABI" \
- "DEFFILE ../s60installs/eabi/$${TARGET}.def" \
- "$${LITERAL_HASH}endif"
-
- contains(QT_CONFIG, private_tests) {
- #When building autotest configuration, there are extra exports from
- #the Qt DLLs, which we don't want in the frozen DEF files.
- MMP_RULES += EXPORTUNFROZEN
- } else {
- #When building without autotests, DEF files are used by default.
- #This is to maintain binary compatibility with previous releases.
-
- #with defBlock enabled, removed exported symbols are treated as errors
- #and there is binary compatibility between successive builds.
- #with defBlock disabled, binary compatibility is broken every time you build
- MMP_RULES += defBlock
-
- #with EXPORTUNFROZEN enabled, new exports are included in the dll without
- #needing to run abld freeze, however binary compatibility is only maintained
- #for symbols that are frozen (and only if defBlock is also enabled)
- #the downside of EXPORTUNFROZEN is that the linker gets run twice
- #MMP_RULES += EXPORTUNFROZEN
+ # When building without autotests, DEF files are used by default.
+ # This is to maintain binary compatibility with previous releases.
+ # To explicitly disable DEF files usage, eg. when lots of code churn is
+ # going on, and functions may be added and removed before shipping,
+ # configure with -no-usedeffiles
+ # WARNING - disabling DEF files *will* break BC with previous released versions
+ # of Qt, and the only compatibility will be between this build of Qt and anything
+ # built in this exact environment. *Never* use this when building a version
+ # for release.
+ contains(CONFIG, def_files) {
+ defFilePath=../s60installs
}
}
load(armcc_warnings)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/backup_registration.xml Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+ <system_backup/>
+ <restore requires_reboot = "no"/>
+</backup_registration>
--- a/src/s60installs/bwins/QtCoreu.def Fri Feb 19 23:40:16 2010 +0200
+++ b/src/s60installs/bwins/QtCoreu.def Fri Mar 12 15:46:37 2010 +0200
@@ -4400,4 +4400,3 @@
?signalIndex@SignalEvent@QStateMachine@@QBEHXZ @ 4399 NONAME ; int QStateMachine::SignalEvent::signalIndex(void) const
?disconnectOne@QMetaObject@@SA_NPBVQObject@@H0H@Z @ 4400 NONAME ; bool QMetaObject::disconnectOne(class QObject const *, int, class QObject const *, int)
-
--- a/src/s60installs/bwins/QtGuiu.def Fri Feb 19 23:40:16 2010 +0200
+++ b/src/s60installs/bwins/QtGuiu.def Fri Mar 12 15:46:37 2010 +0200
@@ -5527,7 +5527,7 @@
?invalidateChildrenSceneTransform@QGraphicsItemPrivate@@QAEXXZ @ 5526 NONAME ; void QGraphicsItemPrivate::invalidateChildrenSceneTransform(void)
?invalidateDepthRecursively@QGraphicsItemPrivate@@QAEXXZ @ 5527 NONAME ; void QGraphicsItemPrivate::invalidateDepthRecursively(void)
?invalidateFilter@QSortFilterProxyModel@@IAEXXZ @ 5528 NONAME ; void QSortFilterProxyModel::invalidateFilter(void)
- ?invalidateGraphicsEffectsRecursively@QGraphicsItemPrivate@@QAEXXZ @ 5529 NONAME ; void QGraphicsItemPrivate::invalidateGraphicsEffectsRecursively(void)
+ ?invalidateGraphicsEffectsRecursively@QGraphicsItemPrivate@@QAEXXZ @ 5529 NONAME ABSENT ; void QGraphicsItemPrivate::invalidateGraphicsEffectsRecursively(void)
?invalidateGraphicsEffectsRecursively@QWidgetPrivate@@QAEXXZ @ 5530 NONAME ; void QWidgetPrivate::invalidateGraphicsEffectsRecursively(void)
?invalidateScene@QGraphicsView@@QAEXABVQRectF@@V?$QFlags@W4SceneLayer@QGraphicsScene@@@@@Z @ 5531 NONAME ; void QGraphicsView::invalidateScene(class QRectF const &, class QFlags<enum QGraphicsScene::SceneLayer>)
?invalidateSizeCache@QWidgetItemV2@@AAEXXZ @ 5532 NONAME ; void QWidgetItemV2::invalidateSizeCache(void)
@@ -9555,7 +9555,7 @@
?setParent@QWidget@@QAEXPAV1@@Z @ 9554 NONAME ; void QWidget::setParent(class QWidget *)
?setParent@QWidget@@QAEXPAV1@V?$QFlags@W4WindowType@Qt@@@@@Z @ 9555 NONAME ; void QWidget::setParent(class QWidget *, class QFlags<enum Qt::WindowType>)
?setParentItem@QGraphicsItem@@QAEXPAV1@@Z @ 9556 NONAME ; void QGraphicsItem::setParentItem(class QGraphicsItem *)
- ?setParentItemHelper@QGraphicsItemPrivate@@QAEXPAVQGraphicsItem@@@Z @ 9557 NONAME ; void QGraphicsItemPrivate::setParentItemHelper(class QGraphicsItem *)
+ ?setParentItemHelper@QGraphicsItemPrivate@@QAEXPAVQGraphicsItem@@@Z @ 9557 NONAME ABSENT ; void QGraphicsItemPrivate::setParentItemHelper(class QGraphicsItem *)
?setParentLayoutItem@QGraphicsLayoutItem@@QAEXPAV1@@Z @ 9558 NONAME ; void QGraphicsLayoutItem::setParentLayoutItem(class QGraphicsLayoutItem *)
?setParent_sys@QWidgetPrivate@@QAEXPAVQWidget@@V?$QFlags@W4WindowType@Qt@@@@@Z @ 9559 NONAME ; void QWidgetPrivate::setParent_sys(class QWidget *, class QFlags<enum Qt::WindowType>)
?setPasswordCharacter@QLineControl@@QAEXABVQChar@@@Z @ 9560 NONAME ; void QLineControl::setPasswordCharacter(class QChar const &)
@@ -12551,4 +12551,15 @@
??0Tab@QTextOption@@QAE@ABU01@@Z @ 12550 NONAME ; QTextOption::Tab::Tab(struct QTextOption::Tab const &)
?effectiveBoundingRect@QGraphicsItemPrivate@@QBE?AVQRectF@@ABV2@@Z @ 12551 NONAME ; class QRectF QGraphicsItemPrivate::effectiveBoundingRect(class QRectF const &) const
?glyphCache@QFontEngine@@QBEPAVQFontEngineGlyphCache@@PAXW4Type@2@ABVQTransform@@@Z @ 12552 NONAME ; class QFontEngineGlyphCache * QFontEngine::glyphCache(void *, enum QFontEngineGlyphCache::Type, class QTransform const &) const
+ ??0Tab@QTextOption@@QAE@ABU01@@Z @ 12553 NONAME ABSENT ; QTextOption::Tab::Tab(struct QTextOption::Tab const &)
+ ?effectiveBoundingRect@QGraphicsItemPrivate@@QBE?AVQRectF@@ABV2@@Z @ 12554 NONAME ABSENT ; class QRectF QGraphicsItemPrivate::effectiveBoundingRect(class QRectF const &) const
+ ?glyphCache@QFontEngine@@QBEPAVQFontEngineGlyphCache@@PAXW4Type@2@ABVQTransform@@@Z @ 12555 NONAME ABSENT ; class QFontEngineGlyphCache * QFontEngine::glyphCache(void *, enum QFontEngineGlyphCache::Type, class QTransform const &) const
+ ?qt_blurImage@@YAXAAVQImage@@M_NH@Z @ 12556 NONAME ; void qt_blurImage(class QImage &, float, bool, int)
+ ?qt_blurImage@@YAXPAVQPainter@@AAVQImage@@M_N2H@Z @ 12557 NONAME ; void qt_blurImage(class QPainter *, class QImage &, float, bool, bool, int)
+ ?qt_halfScaled@@YA?AVQImage@@ABV1@@Z @ 12558 NONAME ; class QImage qt_halfScaled(class QImage const &)
+ ?qt_memrotate90@@YAXPBIHHHPAIH@Z @ 12559 NONAME ; void qt_memrotate90(unsigned int const *, int, int, int, unsigned int *, int)
+ ?qt_memrotate90_gl@@YAXPBIHHHPAIH@Z @ 12560 NONAME ; void qt_memrotate90_gl(unsigned int const *, int, int, int, unsigned int *, int)
+ ?symbianHandleCommand@QApplicationPrivate@@QAEHPBVQSymbianEvent@@@Z @ 12561 NONAME ; int QApplicationPrivate::symbianHandleCommand(class QSymbianEvent const *)
+ ?symbianProcessWsEvent@QApplicationPrivate@@QAEHPBVQSymbianEvent@@@Z @ 12562 NONAME ; int QApplicationPrivate::symbianProcessWsEvent(class QSymbianEvent const *)
+ ?symbianResourceChange@QApplicationPrivate@@QAEHPBVQSymbianEvent@@@Z @ 12563 NONAME ; int QApplicationPrivate::symbianResourceChange(class QSymbianEvent const *)
--- a/src/s60installs/bwins/QtScriptu.def Fri Feb 19 23:40:16 2010 +0200
+++ b/src/s60installs/bwins/QtScriptu.def Fri Mar 12 15:46:37 2010 +0200
@@ -369,4 +369,5 @@
?willExecuteProgram@QScriptEngineAgentPrivate@@UAEXABVDebuggerCallFrame@QTJSC@@HH@Z @ 368 NONAME ; void QScriptEngineAgentPrivate::willExecuteProgram(class QTJSC::DebuggerCallFrame const &, int, int)
?staticMetaObject@QScriptExtensionPlugin@@2UQMetaObject@@B @ 369 NONAME ; struct QMetaObject const QScriptExtensionPlugin::staticMetaObject
?staticMetaObject@QScriptEngine@@2UQMetaObject@@B @ 370 NONAME ; struct QMetaObject const QScriptEngine::staticMetaObject
+ ?isQObject@QScriptDeclarativeClass@@UBE_NXZ @ 371 NONAME ; bool QScriptDeclarativeClass::isQObject(void) const
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/bld.inf Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,108 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+*
+* Description: Build information file for Qt configuration
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+TOOLS2
+
+PRJ_EXPORTS
+qtconfig.xml /epoc32/tools/makefile_templates/qt/qtconfig.xml
+qtconfig.flm /epoc32/tools/makefile_templates/qt/qtconfig.flm
+qtconfig.mk /epoc32/tools/makefile_templates/qt/qtconfig.mk
+qtconfig.meta /epoc32/tools/makefile_templates/qt/qtconfig.meta
+
+#ifdef SBSV2
+wrappers/qmake.bat /epoc32/tools/qmake.bat
+wrappers/qmake /epoc32/tools/qmake
+#else
+wrappers/qmake_abld.bat /epoc32/tools/qmake.bat
+wrappers/qmake_abld /epoc32/tools/qmake
+#endif
+wrappers/moc.bat /epoc32/tools/moc.bat
+wrappers/moc /epoc32/tools/moc
+wrappers/rcc.bat /epoc32/tools/rcc.bat
+wrappers/rcc /epoc32/tools/rcc
+wrappers/uic.bat /epoc32/tools/uic.bat
+wrappers/uic /epoc32/tools/uic
+wrappers/qt.conf /epoc32/tools/qt/qt.conf
+
+../../../mkspecs/symbian-abld/qmake.conf /epoc32/tools/qt/mkspecs/symbian-abld/qmake.conf
+../../../mkspecs/symbian-sbsv2/qmake.conf /epoc32/tools/qt/mkspecs/symbian-sbsv2/qmake.conf
+../../../mkspecs/common/symbian/stl-off/new /epoc32/tools/qt/mkspecs/common/symbian/stl-off/new
+../../../mkspecs/common/symbian/qplatformdefs.h /epoc32/tools/qt/mkspecs/common/symbian/qplatformdefs.h
+../../../mkspecs/common/symbian/symbian.conf /epoc32/tools/qt/mkspecs/common/symbian/symbian.conf
+../../../mkspecs/features/assistant.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/build_pass.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/dbusadaptors.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/dbusinterfaces.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/debug.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/debug_and_release.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/default_post.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/default_pre.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/designer.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/dll.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/exclusive_builds.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/help.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/include_source_dir.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/incredibuild_xge.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/lex.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/link_pkgconfig.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/moc.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/no_debug_info.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qdbus.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qt.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qt_config.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qt_functions.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qtestlib.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qtopia.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qtopiainc.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qtopialib.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qttest_p4.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/release.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/resources.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/shared.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/silent.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/static.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/static_and_shared.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/staticlib.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/uic.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/uitools.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/use_c_linker.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/warn_off.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/warn_on.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/yacc.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/symbian/application_icon.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/armcc_warnings.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/data_caging_paths.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/default_post.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/default_pre.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/epocallowdlldata.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/moc.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/platform_paths.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/qt.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/stl.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/stl_off.prf /epoc32/tools/qt/mkspecs/features/symbian/
+
+//For UDA image
+../../../confml/qt.confml CONFML_EXPORT_PATH(qt.confml,uda_content)
+../../../implml/qt_copy.implml CRML_EXPORT_PATH(qt_copy.implml,uda_content)
+../../../content/apps/qt.sisx CRML_EXPORT_PATH(../content/sis/,uda_content)
+../../../content/apps/qt_stub.sis /epoc32/data/z/system/install/qt_stub.sis
+
+PRJ_MMPFILES
+
+
+PRJ_TESTMMPFILES
+
+
+PRJ_EXTENSIONS
+START EXTENSION qt/qtconfig
+OPTION QT_ROOT ..
+OPTION OPTIONS -opensource -confirm-license -openvg -script -no-scripttools -webkit -make make -graphicssystem openvg -no-phonon-backend -usedeffiles
+END
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/cmaker/config/export.mk Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+#
+# Description: makefile_templates, actual build configuration export makefile
+#
+
+MAKEFILE = /sf/mw/qt/src/s60installs/deviceconfiguration/cmaker/config/export.mk
+
+
+$(call push,MAKEFILE_STACK,$(MAKEFILE))
+
+
+TEMPLATEMAKEFILES = /sf/mw/qt/src/s60installs/deviceconfiguration/qtconfig.meta /epoc32/tools/makefile_templates/qt/
+
+
+template_makefiles :: template_makefiles_config
+
+
+$(call addfiles, $(TEMPLATEMAKEFILES), template_makefiles_config)
+
+
+$(call popout,MAKEFILE_STACK)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/cmaker/makefile Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,14 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+#
+# Description: exporting of *.meta file via cmaker
+#
+
+MAKEFILE = /sf/mw/qt/src/s60installs/deviceconfiguration/cmaker/makefile
+
+# Place the first target as the default target which is executed from this level
+
+export_template_files :: template_makefiles
+
+include include_template.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/qtconfig.flm Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,90 @@
+# /****************************************************************************
+# **
+# ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# ** Contact:
+# **
+# ****************************************************************************/
+
+# FLM to build Qt tools.
+
+QT_ROOT=../../..
+TARGETDIR:=$(EPOCROOT)/$(INSTALLPATH)
+SOURCEDIR:=$(EXTENSION_ROOT)/$(QT_ROOT)/bin
+TOOLSSRCDIR:=$(EXTENSION_ROOT)/$(QT_ROOT)/src/tools
+CONFIGURE_APP=configure$(DOTEXE)
+
+$(call makepath,$(TARGETDIR))
+
+ifeq ($(OSTYPE),unix)
+PLATFORM:=$(PLATFORM.LINUX)
+ ifeq ($(XPLATFORM), symbian-sbsv2)
+ CONFIGURE_APP=configure_symbian
+ endif
+else
+PLATFORM:=$(PLATFORM.WIN32)
+endif
+
+TARGET_TOOLS:=$(TARGETDIR)/qmake$(DOTEXE) $(TARGETDIR)/moc$(DOTEXE) $(TARGETDIR)/rcc$(DOTEXE) $(TARGETDIR)/uic$(DOTEXE)
+QT_TOOLS:= $(TOOLSSRCDIR)/uic $(TOOLSSRCDIR)/moc $(TOOLSSRCDIR)/rcc
+TARGET_LIB:=$(TARGETDIR)/mingwm10.dll
+SOURCE_TOOLS:=$(SOURCEDIR)/qmake$(DOTEXE) $(SOURCEDIR)/moc$(DOTEXE) $(SOURCEDIR)/rcc$(DOTEXE) $(SOURCEDIR)/uic$(DOTEXE)
+
+define QtConfiguration
+$(TARGET_LIB): $(SOURCEDIR)/qmake$(DOTEXE)
+ $(call startrule,mingw_deploy) \
+ $(GNUCP) $(EPOCROOT)/epoc32/gcc_mingw/bin/mingwm10.dll $$@ ; \
+ $(GNUCP) $(EPOCROOT)/epoc32/gcc_mingw/bin/mingwm10.dll $(SOURCEDIR) \
+ $(call endrule,mingw_deploy)
+
+ifeq ($(OSTYPE),unix)
+$(TARGET_TOOLS): $(QT_TOOLS)
+else
+$(TARGET_TOOLS): $(SOURCEDIR)/qmake$(DOTEXE)
+endif
+ $(call startrule,qtconf_deploy) \
+ $(GNUCP) $(SOURCEDIR)/$$(notdir $$@) $$@ \
+ $(call endrule,qtconf_deploy)
+
+ifeq ($(OSTYPE),unix)
+$(QT_TOOLS): $(TOOLSSRCDIR)/bootstrap
+ $(call startrule,qtconf_tools_build) \
+ cd $$@; \
+ $(GNUMAKE38); \
+ cd .. \
+ $(call endrule,qtconf_tools_build)
+
+$(TOOLSSRCDIR)/bootstrap:$(SOURCEDIR)/qmake$(DOTEXE)
+ $(call startrule,qtconf_bootstrap_build) \
+ cd $(TOOLSSRCDIR)/bootstrap; \
+ $(GNUMAKE38); \
+ cd .. \
+ $(call endrule,qtconf_bootstrap_build)
+endif
+
+
+$(SOURCEDIR)/qmake$(DOTEXE): $(EXTENSION_ROOT)/$(QT_ROOT)/$(CONFIGURE_APP)
+ $(call startrule,qtconf) \
+ cd $(EXTENSION_ROOT)/$(QT_ROOT) && \
+ $(EXTENSION_ROOT)/$(QT_ROOT)/$(CONFIGURE_APP) -platform $(PLATFORM) -xplatform $(XPLATFORM) $(OPTIONS) \
+ $(call endrule,qtconf)
+endef
+
+# Here a variable named "done_<sanitised $SISFILE>" gets created
+GUARD:=done_$(call sanitise,$(TARGETDIR)/qmake$(DOTEXE))
+# If variable "done_..." not set, set it to 1, so that
+# UREL and UDEB do not execute makesis twice on the same target
+ifeq ($($(GUARD)),)
+$(GUARD):=1
+ifeq ($(OSTYPE),unix)
+ALL:: $(QT_TOOLS) $(TARGET_TOOLS) $(TARGET_LIB)
+else
+ALL:: $(TARGET_TOOLS) $(TARGET_LIB)
+endif
+$(eval $(call QtConfiguration))
+$(eval $(call whatmacro,$(TARGET_TOOLS)))
+ifeq ($(OSTYPE),unix)
+$(eval $(call GenerateStandardCleanTarget,$(QT_TOOLS) $(TARGET_TOOLS) $(SOURCE_TOOLS),$(TARGETDIR)))
+else
+$(eval $(call GenerateStandardCleanTarget,$(TARGET_TOOLS) $(SOURCE_TOOLS),$(TARGETDIR)))
+endif
+endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/qtconfig.meta Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,8 @@
+# Meta information for Python Py2exe
+#
+# Copyright (c) 2007 Symbian Software Ltd. All rights reserved.
+#
+
+platform tools2
+makefile gnumake
+techstream qt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/qtconfig.mk Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,76 @@
+#
+# Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+#
+# Description:
+#
+
+# All paths used in this file end with the path delimiter '/'
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+COPY := $(call ecopy)
+
+EPOC_ROOT := $(subst \,/,$(EPOCROOT))
+QT_ROOT := $(subst src/s60installs/deviceconfiguration,,$(subst \,/,$(EXTENSION_ROOT)))
+INSTALLPATH := epoc32/tools/qt/
+
+# Determine which platform we are building on
+ifeq ($(OSTYPE),unix)
+CONF_PLATFORM := linux-g++-32
+DOTEXE :=
+else
+CONF_PLATFORM := win32-g++-symbian
+DOTEXE := .exe
+endif
+
+# This variable is needed to do the 'cd' on Windows
+CONFIGURE_ROOT := $(subst src\s60installs\deviceconfiguration,,$(EXTENSION_ROOT))
+
+
+TARGETDIR := $(EPOC_ROOT)$(INSTALLPATH)
+SOURCEDIR := $(QT_ROOT)bin/
+TARGET_TOOLS := $(TARGETDIR)qmake$(DOTEXE) $(TARGETDIR)moc$(DOTEXE) $(TARGETDIR)rcc$(DOTEXE) $(TARGETDIR)uic$(DOTEXE)
+SOURCE_TOOLS := $(SOURCEDIR)qmake$(DOTEXE) $(SOURCEDIR)moc$(DOTEXE) $(SOURCEDIR)rcc$(DOTEXE) $(SOURCEDIR)uic$(DOTEXE)
+
+XPLATFORM:=symbian-abld
+
+$(TARGETDIR):
+ $(call makepath,$(TARGETDIR))
+
+$(SOURCEDIR)qmake$(DOTEXE): $(QT_ROOT)configure$(DOTEXE)
+ echo Configuring Qt for build on $(CONF_PLATFORM) with $(XPLATFORM) as build setup
+ cd $(CONFIGURE_ROOT) && $(QT_ROOT)configure$(DOTEXE) -platform $(CONF_PLATFORM) -xplatform $(XPLATFORM) $(OPTIONS)
+ $(COPY) $(QT_ROOT).qmake.cache $(EPOC_ROOT)$(INSTALLPATH)qmake.cache
+ $(COPY) $(EPOC_ROOT)epoc32/gcc_mingw/bin/mingwm10.dll $(EPOC_ROOT)$(INSTALLPATH)mingwm10.dll
+ $(COPY) $(EPOC_ROOT)epoc32/gcc_mingw/bin/mingwm10.dll $(QT_ROOT)bin/mingwm10.dll
+
+$(TARGET_TOOLS): $(SOURCE_TOOLS)
+ $(COPY) $(SOURCEDIR)$(notdir $@) $@
+
+do_nothing:
+
+MAKMAKE : do_nothing
+
+BLD : $(TARGETDIR) $(TARGET_TOOLS)
+
+FINAL : do_nothing
+
+CLEAN :
+ perl $(EPOCROOT)epoc32/tools/ermdir.pl $(TARGETDIR)
+ perl -e "foreach(split(/ /, \"$(SOURCE_TOOLS)\")) {unlink \"$$_\";}"
+
+RELEASABLES : do_nothing
+
+SAVESPACE : BLD
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+RESOURCE : do_nothing
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/qtconfig.xml Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<build xmlns="http://symbian.com/xml/build"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://symbian.com/xml/build http://symbian.com/xml/build/2_0.xsd">
+
+ <!-- Tools interfaces -->
+
+ <interface name="qt.qtconfig" extends="Symbian.UserFLM" flm="qtconfig.flm">
+ <param name='QT_ROOT' default='../../../'/>
+ <param name='INSTALLPATH' default='epoc32/tools/qt'/>
+ <param name='XPLATFORM' default='symbian-sbsv2'/>
+ <param name='PLATFORM.WIN32' default='win32-g++-symbian' />
+ <param name='PLATFORM.LINUX' default='linux-g++-32' />
+ <param name='OPTIONS' default='' />
+ </interface>
+
+</build>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/moc Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+
+PRGDIR=`dirname "$0"`
+PRGDIR=`cd "$PRGDIR"; pwd`
+
+[ -z "$QMAKESPEC" ] && export QMAKESPEC=$PRGDIR/qt/mkspecs/symbian-sbsv2
+
+"$PRGDIR/qt/moc" "$@"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/moc.bat Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+@REM Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@REM All rights reserved.
+
+@ECHO OFF
+SETLOCAL
+
+SET __PRG__=%~dp0qt\moc.exe
+
+IF DEFINED QMAKESPEC GOTO :mkspec_set
+SET QMAKESPEC=%~dp0qt\mkspecs\symbian-abld
+
+:mkspec_set
+"%__PRG__%" %*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/qmake Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+
+PRGDIR=`dirname "$0"`
+PRGDIR=`cd "$PRGDIR"; pwd`
+
+[ -z "$QMAKESPEC" ] && export QMAKESPEC=$PRGDIR/qt/mkspecs/symbian-sbsv2
+
+"$PRGDIR/qt/qmake" "$@"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/qmake.bat Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,16 @@
+@REM Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@REM All rights reserved.
+
+@ECHO OFF
+SETLOCAL
+
+SET __PRG__=%~dp0qt/qmake.exe
+
+IF DEFINED QMAKESPEC GOTO :mkspec_set
+SET QMAKESPEC=%~dp0qt/mkspecs/symbian-sbsv2
+
+:mkspec_set
+REM The following line can be used to enable qmake.cache
+REM %__PRG__% -cache %~dp0qt\qmake.cache %*
+
+"%__PRG__%" %*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/qmake_abld Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+
+PRGDIR=`dirname "$0"`
+PRGDIR=`cd "$PRGDIR"; pwd`
+
+[ -z "$QMAKESPEC" ] && export QMAKESPEC=$PRGDIR/qt/mkspecs/symbian-abld
+
+"$PRGDIR/qt/qmake" "$@"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/qmake_abld.bat Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,16 @@
+@REM Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@REM All rights reserved.
+
+@ECHO OFF
+SETLOCAL
+
+SET __PRG__=%~dp0qt/qmake.exe
+
+IF DEFINED QMAKESPEC GOTO :mkspec_set
+SET QMAKESPEC=%~dp0qt/mkspecs/symbian-abld
+
+:mkspec_set
+REM The following line can be used to enable qmake.cache
+REM %__PRG__% -cache %~dp0qt\qmake.cache %*
+
+"%__PRG__%" %*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/qt.conf Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,5 @@
+[Paths]
+Data = $(EPOCROOT)epoc32/tools/qt
+Headers = $(EPOCROOT)epoc32/include/mw
+Binaries = $(EPOCROOT)epoc32/tools/qt
+Prefix = $(EPOCROOT)sf/mw/qt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/rcc Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+
+PRGDIR=`dirname "$0"`
+PRGDIR=`cd "$PRGDIR"; pwd`
+
+[ -z "$QMAKESPEC" ] && export QMAKESPEC=$PRGDIR/qt/mkspecs/symbian-sbsv2
+
+"$PRGDIR/qt/rcc" "$@"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/rcc.bat Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+@REM Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@REM All rights reserved.
+
+@ECHO OFF
+SETLOCAL
+
+SET __PRG__=%~dp0qt\rcc.exe
+
+IF DEFINED QMAKESPEC GOTO :mkspec_set
+SET QMAKESPEC=%~dp0qt\mkspecs\symbian-abld
+
+:mkspec_set
+"%__PRG__%" %*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/uic Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+
+PRGDIR=`dirname "$0"`
+PRGDIR=`cd "$PRGDIR"; pwd`
+
+[ -z "$QMAKESPEC" ] && export QMAKESPEC=$PRGDIR/qt/mkspecs/symbian-sbsv2
+
+"$PRGDIR/qt/uic" "$@"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/uic.bat Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+@REM Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@REM All rights reserved.
+
+@ECHO OFF
+SETLOCAL
+
+SET __PRG__=%~dp0qt\uic.exe
+
+IF DEFINED QMAKESPEC GOTO :mkspec_set
+SET QMAKESPEC=%~dp0qt\mkspecs\symbian-abld
+
+:mkspec_set
+"%__PRG__%" %*
--- a/src/s60installs/eabi/QtGuiu.def Fri Feb 19 23:40:16 2010 +0200
+++ b/src/s60installs/eabi/QtGuiu.def Fri Mar 12 15:46:37 2010 +0200
@@ -4671,7 +4671,7 @@
_ZN20QGraphicsItemPrivate18setTransformHelperERK10QTransform @ 4670 NONAME
_ZN20QGraphicsItemPrivate18subFocusItemChangeEv @ 4671 NONAME
_ZN20QGraphicsItemPrivate18updateAncestorFlagEN13QGraphicsItem16GraphicsItemFlagENS_12AncestorFlagEbb @ 4672 NONAME
- _ZN20QGraphicsItemPrivate19setParentItemHelperEP13QGraphicsItem @ 4673 NONAME
+ _ZN20QGraphicsItemPrivate19setParentItemHelperEP13QGraphicsItem @ 4673 NONAME ABSENT
_ZN20QGraphicsItemPrivate20removeExtraItemCacheEv @ 4674 NONAME
_ZN20QGraphicsItemPrivate23appendGraphicsTransformEP18QGraphicsTransform @ 4675 NONAME
_ZN20QGraphicsItemPrivate25movableAncestorIsSelectedEPK13QGraphicsItem @ 4676 NONAME
@@ -11639,7 +11639,7 @@
_ZN19QGraphicsBlurEffect4drawEP8QPainter @ 11638 NONAME
_ZN19QKeyEventTransition15setModifierMaskE6QFlagsIN2Qt16KeyboardModifierEE @ 11639 NONAME
_ZN20QGraphicsItemPrivate18siblingOrderChangeEv @ 11640 NONAME
- _ZN20QGraphicsItemPrivate36invalidateGraphicsEffectsRecursivelyEv @ 11641 NONAME
+ _ZN20QGraphicsItemPrivate36invalidateGraphicsEffectsRecursivelyEv @ 11641 NONAME ABSENT
_ZN21QMouseEventTransition14setHitTestPathERK12QPainterPath @ 11642 NONAME
_ZN21QMouseEventTransition15setModifierMaskE6QFlagsIN2Qt16KeyboardModifierEE @ 11643 NONAME
_ZN22QGraphicsOpacityEffect4drawEP8QPainter @ 11644 NONAME
@@ -11737,26 +11737,59 @@
_Zls6QDebugRKN12QStyleOption10OptionTypeE @ 11736 NONAME
_ZN12QTextControl31setIgnoreUnusedNavigationEventsEb @ 11737 NONAME
_ZNK12QTextControl28ignoreUnusedNavigationEventsEv @ 11738 NONAME
- _ZN11QEglContext11doneCurrentEv @ 11739 NONAME
- _ZN11QEglContext11makeCurrentEi @ 11740 NONAME
- _ZN11QEglContext11openDisplayEP12QPaintDevice @ 11741 NONAME
- _ZN11QEglContext11swapBuffersEi @ 11742 NONAME
- _ZN11QEglContext12chooseConfigERK14QEglPropertiesN4QEgl16PixelFormatMatchE @ 11743 NONAME
- _ZN11QEglContext13createContextEPS_PK14QEglProperties @ 11744 NONAME
- _ZN11QEglContext13createSurfaceEP12QPaintDevicePK14QEglProperties @ 11745 NONAME
- _ZN11QEglContext14destroySurfaceEi @ 11746 NONAME
- _ZN11QEglContext15lazyDoneCurrentEv @ 11747 NONAME
- _ZN11QEglContextC1Ev @ 11748 NONAME
- _ZN11QEglContextD1Ev @ 11749 NONAME
- _ZN14QEglProperties11removeValueEi @ 11750 NONAME
- _ZN14QEglProperties14setPixelFormatEN6QImage6FormatE @ 11751 NONAME
- _ZN14QEglProperties17setRenderableTypeEN4QEgl3APIE @11752 NONAME
- _ZN14QEglProperties19reduceConfigurationEv @11753 NONAME
- _ZN14QEglProperties20setPaintDeviceFormatEP12QPaintDevice @11754 NONAME
- _ZN14QEglProperties8setValueEii @11755 NONAME
- _ZN14QEglPropertiesC1Ei @11756 NONAME
- _ZN14QEglPropertiesC1Ev @11757 NONAME
- _ZNK11QEglContext12configAttribEiPi @11758 NONAME
- _ZNK11QEglContext9isCurrentEv @11759 NONAME
- _ZNK14QEglProperties5valueEi @11760 NONAME
+ _ZN11QVectorPathD1Ev @ 11739 NONAME
+ _ZN11QVectorPathD2Ev @ 11740 NONAME
+ _ZNK11QVectorPath12addCacheDataEP14QPaintEngineExPvPFvS1_S2_E @ 11741 NONAME
+ _ZNK20QGraphicsItemPrivate20discardUpdateRequestEbbb @ 11742 NONAME
+ _ZN11QEglContext10extensionsEv @ 11743 NONAME
+ _ZN11QEglContext10getDisplayEP12QPaintDevice @ 11744 NONAME
+ _ZN11QEglContext10waitClientEv @ 11745 NONAME
+ _ZN11QEglContext10waitNativeEv @ 11746 NONAME
+ _ZN11QEglContext11doneCurrentEv @ 11747 NONAME
+ _ZN11QEglContext11errorStringEi @ 11748 NONAME
+ _ZN11QEglContext11makeCurrentEi @ 11749 NONAME
+ _ZN11QEglContext11openDisplayEP12QPaintDevice @ 11750 NONAME
+ _ZN11QEglContext11swapBuffersEi @ 11751 NONAME
+ _ZN11QEglContext12chooseConfigERK14QEglPropertiesN4QEgl16PixelFormatMatchE @ 11752 NONAME
+ _ZN11QEglContext12hasExtensionEPKc @ 11753 NONAME
+ _ZN11QEglContext13createContextEPS_PK14QEglProperties @ 11754 NONAME
+ _ZN11QEglContext13createSurfaceEP12QPaintDevicePK14QEglProperties @ 11755 NONAME
+ _ZN11QEglContext14currentContextEN4QEgl3APIE @ 11756 NONAME
+ _ZN11QEglContext14defaultDisplayEP12QPaintDevice @ 11757 NONAME
+ _ZN11QEglContext14destroySurfaceEi @ 11758 NONAME
+ _ZN11QEglContext14dumpAllConfigsEv @ 11759 NONAME
+ _ZN11QEglContext15lazyDoneCurrentEv @ 11760 NONAME
+ _ZN11QEglContext17setCurrentContextEN4QEgl3APIEPS_ @ 11761 NONAME
+ _ZN11QEglContext7destroyEv @ 11762 NONAME
+ _ZN11QEglContextC1Ev @ 11763 NONAME
+ _ZN11QEglContextC2Ev @ 11764 NONAME
+ _ZN11QEglContextD1Ev @ 11765 NONAME
+ _ZN11QEglContextD2Ev @ 11766 NONAME
+ _ZN14QEglProperties11removeValueEi @ 11767 NONAME
+ _ZN14QEglProperties14dumpAllConfigsEv @ 11768 NONAME
+ _ZN14QEglProperties14setPixelFormatEN6QImage6FormatE @ 11769 NONAME
+ _ZN14QEglProperties17setRenderableTypeEN4QEgl3APIE @ 11770 NONAME
+ _ZN14QEglProperties19reduceConfigurationEv @ 11771 NONAME
+ _ZN14QEglProperties20setPaintDeviceFormatEP12QPaintDevice @ 11772 NONAME
+ _ZN14QEglProperties8setValueEii @ 11773 NONAME
+ _ZN14QEglPropertiesC1Ei @ 11774 NONAME
+ _ZN14QEglPropertiesC1Ev @ 11775 NONAME
+ _ZN14QEglPropertiesC2Ei @ 11776 NONAME
+ _ZN14QEglPropertiesC2Ev @ 11777 NONAME
+ _ZNK11QEglContext12configAttribEiPi @ 11778 NONAME
+ _ZNK11QEglContext16configPropertiesEi @ 11779 NONAME
+ _ZNK11QEglContext7isValidEv @ 11780 NONAME
+ _ZNK11QEglContext9isCurrentEv @ 11781 NONAME
+ _ZNK14QEglProperties5valueEi @ 11782 NONAME
+ _ZNK14QEglProperties8toStringEv @ 11783 NONAME
+ _ZNK11QFontEngine10glyphCacheEPvN21QFontEngineGlyphCache4TypeERK10QTransform @ 11784 NONAME
+ _ZNK20QGraphicsItemPrivate21effectiveBoundingRectERK6QRectF @ 11785 NONAME
+ _Z12qt_blurImageP8QPainterR6QImagefbbi @ 11786 NONAME
+ _Z12qt_blurImageR6QImagefbi @ 11787 NONAME
+ _Z13qt_halfScaledRK6QImage @ 11788 NONAME
+ _Z14qt_memrotate90PKjiiiPji @ 11789 NONAME
+ _Z17qt_memrotate90_glPKjiiiPji @ 11790 NONAME
+ _ZN19QApplicationPrivate20symbianHandleCommandEPK13QSymbianEvent @ 11791 NONAME
+ _ZN19QApplicationPrivate21symbianProcessWsEventEPK13QSymbianEvent @ 11792 NONAME
+ _ZN19QApplicationPrivate21symbianResourceChangeEPK13QSymbianEvent @ 11793 NONAME
--- a/src/s60installs/eabi/QtScriptu.def Fri Feb 19 23:40:16 2010 +0200
+++ b/src/s60installs/eabi/QtScriptu.def Fri Mar 12 15:46:37 2010 +0200
@@ -393,4 +393,5 @@
_ZNK23QScriptDeclarativeClass7contextEv @ 392 NONAME
_ZTI23QScriptDeclarativeClass @ 393 NONAME
_ZTV23QScriptDeclarativeClass @ 394 NONAME
+ _ZNK23QScriptDeclarativeClass9isQObjectEv @ 395 NONAME
--- a/src/s60installs/s60installs.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/src/s60installs/s60installs.pro Fri Mar 12 15:46:37 2010 +0200
@@ -81,7 +81,11 @@
DEPLOYMENT += phonon_backend_plugins
}
- DEPLOYMENT += qtresources qtlibraries imageformats_plugins codecs_plugins graphicssystems_plugins
+ # Support backup & restore for Qt libraries
+ qtbackup.sources = backup_registration.xml
+ qtbackup.path = c:/private/10202D56/import/packages/$$replace(TARGET.UID3, 0x,)
+
+ DEPLOYMENT += qtresources qtlibraries qtbackup imageformats_plugins codecs_plugins graphicssystems_plugins
contains(QT_CONFIG, svg): {
qtlibraries.sources += QtSvg.dll
@@ -113,6 +117,10 @@
graphicssystems_plugins.sources += qvggraphicssystem.dll
}
+ contains(QT_CONFIG, multimedia) {
+ qtlibraries.sources += QtMultimedia.dll
+ }
+
#BLD_INF_RULES.prj_exports += "qt.iby $$CORE_MW_LAYER_IBY_EXPORT_PATH(qt.iby)"
#:QTP:QTPROD-220: Qt Examples should be exported to ROFS3
#BLD_INF_RULES.prj_exports += "qtdemoapps.iby $$CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(qtdemoapps.iby)"
Binary file src/s60installs/sqlite3.sis has changed
Binary file src/s60installs/sqlite3_selfsigned.sis has changed
--- a/src/script/api/qscriptvalue.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/script/api/qscriptvalue.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1148,10 +1148,15 @@
}
if (d->type != other.d_ptr->type) {
- if (d->type == QScriptValuePrivate::JavaScriptCore)
- return JSC::JSValue::strictEqual(d->jscValue, d->engine->scriptValueToJSCValue(other));
- else if (other.d_ptr->type == QScriptValuePrivate::JavaScriptCore)
- return JSC::JSValue::strictEqual(other.d_ptr->engine->scriptValueToJSCValue(*this), other.d_ptr->jscValue);
+ if (d->type == QScriptValuePrivate::JavaScriptCore) {
+ QScriptEnginePrivate *eng_p = d->engine ? d->engine : other.d_ptr->engine;
+ if (eng_p)
+ return JSC::JSValue::strictEqual(d->jscValue, eng_p->scriptValueToJSCValue(other));
+ } else if (other.d_ptr->type == QScriptValuePrivate::JavaScriptCore) {
+ QScriptEnginePrivate *eng_p = other.d_ptr->engine ? other.d_ptr->engine : d->engine;
+ if (eng_p)
+ return JSC::JSValue::strictEqual(eng_p->scriptValueToJSCValue(*this), other.d_ptr->jscValue);
+ }
return false;
}
--- a/src/sql/drivers/sqlite/qsql_sqlite.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -245,9 +245,9 @@
values[i + idx] = QVariant(QVariant::String);
break;
default:
- values[i + idx] = QString::fromUtf16(static_cast<const ushort *>(
+ values[i + idx] = QString(reinterpret_cast<const QChar *>(
sqlite3_column_text16(stmt, i)),
- sqlite3_column_bytes16(stmt, i) / sizeof(ushort));
+ sqlite3_column_bytes16(stmt, i) / sizeof(QChar));
break;
}
}
--- a/src/sql/kernel/qsqlresult.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/sql/kernel/qsqlresult.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -136,7 +136,7 @@
i >>= 4;
}
- return QString::fromUtf16(arr, int(ptr - arr) + 1);
+ return QString(reinterpret_cast<const QChar *>(arr), int(ptr - arr) + 1);
}
static bool qIsAlnum(QChar ch)
--- a/src/src.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/src/src.pro Fri Mar 12 15:46:37 2010 +0200
@@ -106,6 +106,7 @@
contains(QT_CONFIG, webkit) {
src_webkit.depends = src_gui src_sql src_network src_xml
contains(QT_CONFIG, phonon):src_webkit.depends += src_phonon
+ contains(QT_CONFIG, xmlpatterns): src_webkit.depends += src_xmlpatterns
contains(QT_CONFIG, declarative):src_declarative.depends += src_webkit
#exists($$QT_SOURCE_TREE/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro): src_webkit.depends += src_javascriptcore
}
--- a/src/tools/rcc/rcc.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/rcc/rcc.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -544,6 +544,8 @@
const QString filename = nodes.at(nodes.size()-1);
RCCFileInfo *s = new RCCFileInfo(file);
s->m_parent = parent;
+ if (parent->m_children.contains(filename))
+ qWarning("potential duplicate alias detected: '%s'", qPrintable(filename));
parent->m_children.insertMulti(filename, s);
return true;
}
--- a/src/tools/uic/cpp/cppwriteinitialization.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/uic/cpp/cppwriteinitialization.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -2787,8 +2787,8 @@
return;
QMap<QString, bool> map; // bool is dummy. The idea is to sort that (always generate in the same order) by putting a set into a map
- foreach (QString str, directives)
- map[str] = true;
+ foreach (const QString &str, directives)
+ map.insert(str, true);
if (map.size() == 1) {
outputStream << "#ifndef " << map.constBegin().key() << endl;
@@ -2797,7 +2797,7 @@
outputStream << "#if";
bool doOr = false;
- foreach (QString str, map.keys()) {
+ foreach (const QString &str, map.keys()) {
if (doOr)
outputStream << " ||";
outputStream << " !defined(" << str << ')';
--- a/src/tools/uic3/converter.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/uic3/converter.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -121,7 +121,7 @@
return className.at(1) .isUpper() && className.at(2).isLower();
}
-DomUI *Ui3Reader::generateUi4(const QDomElement &widget, bool implicitIncludes)
+DomUI *Ui3Reader::generateUi4(const QDomElement &widget)
{
QDomNodeList nl;
candidateCustomWidgets.clear();
@@ -401,7 +401,7 @@
bool resolved = false;
if (objName == receiver) {
// see if it's a custom slot
- foreach (QString cs, ui_custom_slots) {
+ foreach (const QString &cs, ui_custom_slots) {
if (cs == slot) {
resolved = true;
break;
@@ -474,7 +474,7 @@
// Magic header generation feature for legacy KDE forms
// (for example, filesharing/advanced/kcm_sambaconf/share.ui)
- if (implicitIncludes && isKDEClass(customClass)) {
+ if ((m_options & ImplicitIncludes) && isKDEClass(customClass)) {
QString header = customClass.toLower();
header += QLatin1String(".h");
DomHeader *domHeader = new DomHeader;
@@ -710,10 +710,13 @@
ui_action_list.append(a);
} else if (t == QLatin1String("property")) {
// skip the property it is already handled by createProperties
-
- QString name = e.attribute(QLatin1String("name")); // change the varname this widget
- if (name == QLatin1String("name"))
- ui_widget->setAttributeName(DomTool::readProperty(w, QLatin1String("name"), QVariant()).toString());
+ const QString name = e.attribute(QLatin1String("name")); // change the varname this widget
+ if (name == QLatin1String("name")) {
+ // Do not name QLayoutWidget if layout names are to be used.
+ const bool applyName = !(m_options & PreserveLayoutNames) || className != QLatin1String("QLayoutWidget");
+ if (applyName)
+ ui_widget->setAttributeName(DomTool::readProperty(w, QLatin1String("name"), QVariant()).toString());
+ }
} else if (t == QLatin1String("row")) {
DomRow *row = new DomRow();
row->read(e);
@@ -797,6 +800,11 @@
createProperties(w, &ui_property_list, className);
createAttributes(w, &ui_attribute_list, className);
+ if (m_options & PreserveLayoutNames) {
+ const QString layoutName = getLayoutName(w);
+ if (!layoutName.isEmpty())
+ lay->setAttributeName(layoutName);
+ }
QDomElement e = w.firstChild().toElement();
while (!e.isNull()) {
@@ -1114,7 +1122,7 @@
if (prop->kind() == DomProperty::Set) {
QStringList flags = prop->elementSet().split(QLatin1Char('|'));
QStringList v;
- foreach (QString fl, flags) {
+ foreach (const QString &fl, flags) {
QString e = WidgetInfo::resolveEnumerator(className, fl);
if (e.isEmpty()) {
e = m_porting->renameEnumerator(className + QLatin1String("::") + fl);
@@ -1275,7 +1283,7 @@
QString newText = t;
//split type name on <>*& and whitespace
QStringList typeNames = t.split(QRegExp(QLatin1String("<|>|\\*|&| ")), QString::SkipEmptyParts);
- foreach(QString typeName , typeNames) {
+ foreach(const QString &typeName , typeNames) {
QString newName = fixClassName(typeName);
if( newName != typeName ) {
newText.replace(typeName, newName);
--- a/src/tools/uic3/form.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/uic3/form.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -100,7 +100,7 @@
\sa createFormImpl()
*/
-void Ui3Reader::createFormDecl(const QDomElement &e, bool implicitIncludes)
+void Ui3Reader::createFormDecl(const QDomElement &e)
{
QDomElement body = e;
@@ -138,7 +138,7 @@
QString tagName = n3.tagName().toLower();
if (tagName == QLatin1String("class")) {
cl = n3.firstChild().toText().data();
- if (!nofwd)
+ if (m_options & CustomWidgetForwardDeclarations)
forwardDecl << cl;
customWidgets.insert(cl, 0);
} else if (tagName == QLatin1String("header")) {
@@ -257,10 +257,10 @@
d.option().copyrightHeader = false;
d.option().extractImages = m_extractImages;
d.option().qrcOutputFile = m_qrcOutputFile;
- d.option().implicitIncludes = implicitIncludes;
+ d.option().implicitIncludes = (m_options & ImplicitIncludes) ? 1 : 0;
if (trmacro.size())
d.option().translateFunction = trmacro;
- DomUI *ui = generateUi4(e, implicitIncludes);
+ DomUI *ui = generateUi4(e);
d.uic(fileName, ui, &out);
delete ui;
--- a/src/tools/uic3/main.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/uic3/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -78,13 +78,11 @@
QByteArray image_tmpfile;
const char* projectName = 0;
const char* trmacro = 0;
- bool nofwd = false;
bool fix = false;
bool deps = false;
- bool implicitIncludes = true;
+ unsigned readerOptions = Ui3Reader::ImplicitIncludes|Ui3Reader::CustomWidgetForwardDeclarations;
QByteArray pchFile;
-
QApplication app(argc, argv, false);
for (int n = 1; n < argc && error == 0; n++) {
@@ -146,9 +144,11 @@
} else if (opt == "d") {
deps = true;
} else if (opt == "no-implicit-includes") {
- implicitIncludes = false;
+ readerOptions &= ~Ui3Reader::ImplicitIncludes;
} else if (opt == "nofwd") {
- nofwd = true;
+ readerOptions &= ~Ui3Reader::CustomWidgetForwardDeclarations;
+ } else if (opt == "layout-names") {
+ readerOptions |= Ui3Reader::PreserveLayoutNames;
} else if (opt == "nounload") {
// skip
} else if (opt == "convert") {
@@ -253,6 +253,7 @@
"\t-extract qrcFile Create resource file and extract embedded images into \"image\" dir\n"
"\t-pch file Add #include \"file\" as the first statement in implementation\n"
"\t-nofwd Omit forward declarations of custom classes\n"
+ "\t-layout-names Preserve layout names of Qt Designer 3\n"
"\t-no-implicit-includes Do not generate #include-directives for custom classes\n"
"\t-nounload Do not unload plugins after processing\n"
"\t-tr func Use func() instead of tr() for i18n\n"
@@ -289,9 +290,8 @@
QTextStream out(&fileOut);
- Ui3Reader ui3(out);
+ Ui3Reader ui3(out, readerOptions);
ui3.setExtractImages(extract, qrcOutputFile);
-
if (projectName && imagecollection) {
out.setEncoding(QTextStream::Latin1);
ui3.embed(projectName, images);
@@ -338,10 +338,10 @@
QStringList globalIncludes, localIncludes;
ui3.computeDeps(e, globalIncludes, localIncludes, impl);
- foreach (QString i, globalIncludes)
+ foreach (const QString &i, globalIncludes)
printf("%s\n", i.toLatin1().constData());
- foreach (QString i, localIncludes)
+ foreach (const QString &i, localIncludes)
printf("%s\n", i.toLatin1().constData());
if (impl)
@@ -349,7 +349,7 @@
return 0;
} else if (convert) {
- ui3.generateUi4(QFile::decodeName(fileName), QFile::decodeName(outputFile), doc, implicitIncludes);
+ ui3.generateUi4(QFile::decodeName(fileName), QFile::decodeName(outputFile), doc);
return 0;
}
@@ -388,8 +388,6 @@
subcl,
QString::fromUtf8(trmacro),
QString::fromUtf8(className),
- nofwd,
- implicitIncludes,
convertedUi);
if (!protector.isEmpty()) {
--- a/src/tools/uic3/ui3reader.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/uic3/ui3reader.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -176,7 +176,6 @@
{
outputFileName.clear();
trmacro.clear();
- nofwd = false;
fileName.clear();
writeFunctImpl = true;
@@ -241,11 +240,10 @@
return widget;
}
-Ui3Reader::Ui3Reader(QTextStream &outStream)
- : out(outStream), trout(&languageChangeBody)
+Ui3Reader::Ui3Reader(QTextStream &outStream, unsigned options) :
+ m_options(options), out(outStream), trout(&languageChangeBody),
+ m_porting(new Porting), m_extractImages(false)
{
- m_porting = new Porting();
- m_extractImages = false;
}
Ui3Reader::~Ui3Reader()
@@ -255,14 +253,13 @@
void Ui3Reader::generate(const QString &fn, const QString &outputFn,
QDomDocument doc, bool decl, bool subcl, const QString &trm,
- const QString& subClass, bool omitForwardDecls, bool implicitIncludes, const QString &convertedUiFile)
+ const QString& subClass, const QString &convertedUiFile)
{
init();
fileName = fn;
outputFileName = outputFn;
trmacro = trm;
- nofwd = omitForwardDecls;
QDomElement e = parse(doc);
@@ -281,21 +278,21 @@
createSubImpl(e, subClass);
} else {
if (decl)
- createFormDecl(e, implicitIncludes);
+ createFormDecl(e);
else
createFormImpl(e);
}
}
-void Ui3Reader::generateUi4(const QString &fn, const QString &outputFn, QDomDocument doc, bool implicitIncludes)
+void Ui3Reader::generateUi4(const QString &fn, const QString &outputFn, QDomDocument doc)
{
init();
fileName = fn;
outputFileName = outputFn;
- DomUI *ui = generateUi4(parse(doc), implicitIncludes);
+ DomUI *ui = generateUi4(parse(doc));
if (!ui)
return;
@@ -317,11 +314,6 @@
this->trmacro = trmacro;
}
-void Ui3Reader::setForwardDeclarationsEnabled(bool b)
-{
- nofwd = !b;
-}
-
void Ui3Reader::setOutputFileName(const QString &fileName)
{
outputFileName = fileName;
--- a/src/tools/uic3/ui3reader.h Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/uic3/ui3reader.h Fri Mar 12 15:46:37 2010 +0200
@@ -68,23 +68,24 @@
class Ui3Reader
{
public:
- Ui3Reader(QTextStream &stream);
+ enum Options { CustomWidgetForwardDeclarations = 0x1, ImplicitIncludes = 0x2, PreserveLayoutNames = 0x4 };
+
+ explicit Ui3Reader(QTextStream &stream, unsigned options);
~Ui3Reader();
void computeDeps(const QDomElement &e, QStringList &globalIncludes, QStringList &localIncludes, bool impl = false);
- void generateUi4(const QString &fn, const QString &outputFn, QDomDocument doc, bool implicitIncludes);
+ void generateUi4(const QString &fn, const QString &outputFn, QDomDocument doc);
void generate(const QString &fn, const QString &outputFn,
QDomDocument doc, bool decl, bool subcl, const QString &trm,
- const QString& subclname, bool omitForwardDecls, bool implicitIncludes, const QString &convertedUiFile);
+ const QString& subclname, const QString &convertedUiFile);
void embed(const char *project, const QStringList &images);
void setTrMacro(const QString &trmacro);
- void setForwardDeclarationsEnabled(bool b);
void setOutputFileName(const QString &fileName);
- void createFormDecl(const QDomElement &e, bool implicitIncludes);
+ void createFormDecl(const QDomElement &e);
void createFormImpl(const QDomElement &e);
void createWrapperDecl(const QDomElement &e, const QString &convertedUiFile);
@@ -125,7 +126,7 @@
void errorInvalidSlot(const QString &slot, const QString &widgetName, const QString &widgetClass,
int line, int col);
- DomUI *generateUi4(const QDomElement &e, bool implicitIncludes);
+ DomUI *generateUi4(const QDomElement &e);
DomWidget *createWidget(const QDomElement &w, const QString &widgetClass = QString());
void createProperties(const QDomElement &e, QList<DomProperty*> *properties, const QString &className);
void createAttributes(const QDomElement &e, QList<DomProperty*> *properties, const QString &className);
@@ -145,6 +146,8 @@
void fixLayoutMargin(DomLayout *ui_layout);
+ const unsigned m_options;
+
QTextStream &out;
QTextOStream trout;
QString languageChangeBody;
@@ -157,7 +160,6 @@
QString formName;
QString lastItem;
QString trmacro;
- bool nofwd;
struct Buddy
{
--- a/src/xml/dom/qdom.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/src/xml/dom/qdom.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -2596,11 +2596,15 @@
already has an element node as a child, \a newChild is not added as
a child and a null node is returned.
- Calling this function on a null node(created, for example, with the
- default constructor) does nothing.
-
- The DOM specification disallow inserting attribute nodes, but due
- to historical reasons QDom accept them nevertheless.
+ Returns a new reference to \a newChild on success or a \link
+ isNull() null node\endlink on failure.
+
+ Calling this function on a null node(created, for example, with
+ the default constructor) does nothing and returns a \link isNull()
+ null node\endlink.
+
+ The DOM specification disallow inserting attribute nodes, but for
+ historical reasons, QDom accepts them anyway.
\sa insertBefore() insertAfter() replaceChild() removeChild()
*/
@@ -2969,7 +2973,7 @@
}
/*!
- Returns the next sibilng element with tag name \a tagName if \a tagName
+ Returns the next sibling element with tag name \a tagName if \a tagName
is non-empty; otherwise returns any next sibling element.
Returns a null element if no such sibling exists.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/cmdline_deeppath/lupdatecmd Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+cd ../../recursivescan
+lupdate sub/finddialog.cpp -ts project.ts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/cmdline_deeppath/project.ts.result Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>FindDialog</name>
+ <message>
+ <location filename="sub/finddialog.cpp" line="57"/>
+ <source>Enter the text you want to find.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sub/finddialog.cpp" line="66"/>
+ <source>Search reached end of the document</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sub/finddialog.cpp" line="68"/>
+ <source>Search reached start of the document</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sub/finddialog.cpp" line="70"/>
+ <source>Text not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/cmdline_recurse/lupdatecmd Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+cd ../../recursivescan
+lupdate . -ts project.ts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/cmdline_recurse/project.ts.result Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>FindDialog</name>
+ <message>
+ <location filename="project.ui" line="57"/>
+ <source>Qt Assistant - Finn text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="project.ui" line="60"/>
+ <source>Finn tekst</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sub/finddialog.cpp" line="57"/>
+ <source>Enter the text you want to find.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sub/finddialog.cpp" line="66"/>
+ <source>Search reached end of the document</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sub/finddialog.cpp" line="68"/>
+ <source>Search reached start of the document</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sub/finddialog.cpp" line="70"/>
+ <source>Text not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="main.cpp" line="53"/>
+ <source>
+newline at the start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main.cpp" line="54"/>
+ <source>newline at the end
+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main.cpp" line="55"/>
+ <source>newline and space at the end
+ </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main.cpp" line="56"/>
+ <source>space and newline at the end
+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main.cpp" line="57"/>
+ <source> Tab at the start and newline at the end
+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main.cpp" line="58"/>
+ <source>
+ newline and tab at the start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main.cpp" line="59"/>
+ <source> space and tab at the start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main.cpp" line="60"/>
+ <source> space_first</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="main.cpp" line="61"/>
+ <source>space_last </source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>text/c++</name>
+ <message>
+ <location filename="sub/filetypes/main.c++" line="47"/>
+ <source>test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>text/cpp</name>
+ <message>
+ <location filename="sub/filetypes/main.cpp" line="47"/>
+ <source>test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>text/cxx</name>
+ <message>
+ <location filename="sub/filetypes/main.cxx" line="47"/>
+ <source>test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr3/expectedoutput.txt Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+lupdate warning: Codec for tr\(\) 'ISO-8859-1' disagrees with existing file's codec 'UTF-8'\. Expect trouble\.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr3/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+int main(int argc, char **argv)
+{
+ QObject::tr("hi");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr3/project.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,4 @@
+SOURCES += main.cpp
+
+TRANSLATIONS = project.ts
+CODECFORTR = latin1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr3/project.ts.before Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>UTF-8</defaultcodec>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="main.cpp" line="44"/>
+ <source>hi</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr3/project.ts.result Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="main.cpp" line="44"/>
+ <source>hi</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr4/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+int main(int argc, char **argv)
+{
+ QObject::tr("hi");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr4/project.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,4 @@
+SOURCES += main.cpp
+
+TRANSLATIONS = project.ts
+CODECFORTR = latin2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr4/project.ts.before Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>ISO-8859-2</defaultcodec>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="main.cpp" line="44"/>
+ <source>hi</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr4/project.ts.result Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>ISO-8859-2</defaultcodec>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="main.cpp" line="44"/>
+ <source>hi</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/from_subdir/lupdatecmd Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+lupdate translations/translations.pro
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/from_subdir/project.ts.result Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>QApplication</name>
+ <message>
+ <location filename="src/main.cpp" line="49"/>
+ <source>string in main.cpp</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="src/main.h" line="45"/>
+ <source>string in main.h</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/from_subdir/src/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// IMPORTANT!!!! If you want to add testdata to this file,
+// always add it to the end in order to not change the linenumbers of translations!!!
+
+#include "main.h"
+
+int main(char **argv, int argc)
+{
+ return QApplication::tr("string in main.cpp");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/from_subdir/src/main.h Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// IMPORTANT!!!! If you want to add testdata to this file,
+// always add it to the end in order to not change the linenumbers of translations!!!
+
+QT_TRANSLATE_NOOP("QApplication", "string in main.h")
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/from_subdir/translations/translations.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,7 @@
+VPATH = ../src
+INCLUDEPATH = ../src
+
+SOURCES += main.cpp
+HEADERS += main.h
+
+TRANSLATIONS += ../project.ts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full/lupdatecmd Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+TRANSLATION: project.ts project_sub.ts
+cd ../../subdirs_full
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full/project.ts.result Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>subdir1</name>
+ <message>
+ <location filename="subdir1/main.cpp" line="45"/>
+ <source>minimal test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>subsub1</name>
+ <message>
+ <location filename="subdir2/subsub1/main.cpp" line="45"/>
+ <source>minimal test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full/project_sub.ts.result Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>ISO-8859-2</defaultcodec>
+<context>
+ <name>subsub2</name>
+ <message>
+ <location filename="subdir2/subsub2/main.cpp" line="45"/>
+ <source>minimal test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/expectedoutput.txt Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+lupdate warning: TS files from command line will override TRANSLATIONS in project\.pro\.
+lupdate warning: TS files from command line prevent recursing into .*/subdir2/subsub2/subsub2\.pro\.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/lupdatecmd Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,3 @@
+TRANSLATION: project.ts project_sub.ts
+cd ../../subdirs_full
+lupdate project.pro -ts project.ts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/project.ts.result Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>subdir1</name>
+ <message>
+ <location filename="subdir1/main.cpp" line="45"/>
+ <source>minimal test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>subsub1</name>
+ <message>
+ <location filename="subdir2/subsub1/main.cpp" line="45"/>
+ <source>minimal test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts_join/lupdatecmd Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+cd ../../subdirs_full
+lupdate subdir1/subdir1.pro subdir2/subsub1/subsub1.pro -ts project.ts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts_join/project.ts.result Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>subdir1</name>
+ <message>
+ <location filename="subdir1/main.cpp" line="45"/>
+ <source>minimal test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>subsub1</name>
+ <message>
+ <location filename="subdir2/subsub1/main.cpp" line="45"/>
+ <source>minimal test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part/expectedoutput.txt Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+lupdate warning: no TS files specified\. Only diagnostics will be produced for 'project\.pro'\.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part/lupdatecmd Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+TRANSLATION: project.ts project_sub.ts
+cd ../../subdirs_part
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part/project_sub.ts.result Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>ISO-8859-2</defaultcodec>
+<context>
+ <name>subsub2</name>
+ <message>
+ <location filename="subdir2/subsub2/main.cpp" line="45"/>
+ <source>minimal test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part_ts/expectedoutput.txt Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+lupdate warning: TS files from command line prevent recursing into .*/subdir2/subsub2/subsub2\.pro\.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part_ts/lupdatecmd Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,3 @@
+TRANSLATION: project.ts project_sub.ts
+cd ../../subdirs_part
+lupdate project.pro -ts project.ts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part_ts/project.ts.result Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>subdir1</name>
+ <message>
+ <location filename="subdir1/main.cpp" line="45"/>
+ <source>minimal test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>subsub1</name>
+ <message>
+ <location filename="subdir2/subsub1/main.cpp" line="45"/>
+ <source>minimal test</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
--- a/tests/auto/linguist/lupdate/testdata/good/reloutput/lupdatecmd Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/linguist/lupdate/testdata/good/reloutput/lupdatecmd Fri Mar 12 15:46:37 2010 +0200
@@ -1,2 +1,1 @@
TRANSLATION: translations/project.ts
-lupdate project.pro -ts translations/project.ts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/project.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,4 @@
+TEMPLATE = subdirs
+SUBDIRS = subdir1 subdir2/subdir2.pro
+
+TRANSLATIONS = project.ts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir1/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+QString foo()
+{
+ QCoreApplication::translate("subdir1","minimal test");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir1/subdir1.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+SOURCES += main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subdir2.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = subsub1 subsub2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subsub1/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+QString foo()
+{
+ QCoreApplication::translate("subsub1","minimal test");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subsub1/subsub1.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+SOURCES += main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subsub2/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+QString foo()
+{
+ QCoreApplication::translate("subsub2","minimal test");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subsub2/subsub2.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,4 @@
+SOURCES += main.cpp
+
+TRANSLATIONS = ../../project_sub.ts
+CODECFORTR = ISO-8859-2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/project.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = subdir1 subdir2/subdir2.pro
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir1/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+QString foo()
+{
+ QCoreApplication::translate("subdir1","minimal test");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir1/subdir1.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+SOURCES += main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subdir2.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = subsub1 subsub2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subsub1/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+QString foo()
+{
+ QCoreApplication::translate("subsub1","minimal test");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subsub1/subsub1.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+SOURCES += main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subsub2/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+QString foo()
+{
+ QCoreApplication::translate("subsub2","minimal test");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subsub2/subsub2.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,4 @@
+SOURCES += main.cpp
+
+TRANSLATIONS = ../../project_sub.ts
+CODECFORTR = ISO-8859-2
--- a/tests/auto/linguist/lupdate/tst_lupdate.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/linguist/lupdate/tst_lupdate.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -59,8 +59,6 @@
private slots:
void good_data();
void good();
- void commandline_data();
- void commandline();
#if CHECK_SIMTEXTH
void simtexth();
void simtexth_data();
@@ -245,10 +243,10 @@
qDebug() << "Checking...";
- QString generatedtsfile(dir + QLatin1String("/project.ts"));
+ QString workDir = dir;
+ QStringList generatedtsfiles(QLatin1String("project.ts"));
+ QString lupdatecmd;
- // look for a command
- QString lupdatecmd;
QFile file(dir + "/lupdatecmd");
if (file.exists()) {
QVERIFY2(file.open(QIODevice::ReadOnly | QIODevice::Text), qPrintable(file.fileName()));
@@ -262,23 +260,32 @@
break;
} else if (cmdstring.startsWith("TRANSLATION:")) {
cmdstring.remove(0, 12);
- generatedtsfile = dir + QLatin1Char('/') + cmdstring.trimmed();
+ generatedtsfiles.clear();
+ foreach (const QByteArray &s, cmdstring.split(' '))
+ if (!s.isEmpty())
+ generatedtsfiles << s;
+ } else if (cmdstring.startsWith("cd ")) {
+ cmdstring.remove(0, 3);
+ workDir = QDir::cleanPath(dir + QLatin1Char('/') + cmdstring);
}
}
file.close();
}
- QFile::remove(generatedtsfile);
- QString beforetsfile = generatedtsfile + QLatin1String(".before");
- if (QFile::exists(beforetsfile))
- QVERIFY2(QFile::copy(beforetsfile, generatedtsfile), qPrintable(beforetsfile));
+ foreach (const QString &ts, generatedtsfiles) {
+ QString genTs = workDir + QLatin1Char('/') + ts;
+ QFile::remove(genTs);
+ QString beforetsfile = dir + QLatin1Char('/') + ts + QLatin1String(".before");
+ if (QFile::exists(beforetsfile))
+ QVERIFY2(QFile::copy(beforetsfile, genTs), qPrintable(beforetsfile));
+ }
if (lupdatecmd.isEmpty())
lupdatecmd = QLatin1String("project.pro");
lupdatecmd.prepend("-silent ");
QProcess proc;
- proc.setWorkingDirectory(dir);
+ proc.setWorkingDirectory(workDir);
proc.setProcessChannelMode(QProcess::MergedChannels);
proc.start(m_cmdLupdate + ' ' + lupdatecmd, QIODevice::ReadWrite | QIODevice::Text);
QVERIFY2(proc.waitForFinished(5000), qPrintable(lupdatecmd));
@@ -287,7 +294,7 @@
"\"lupdate " + lupdatecmd.toLatin1() + "\" crashed\n" + output);
QVERIFY2(!proc.exitCode(),
"\"lupdate " + lupdatecmd.toLatin1() + "\" exited with code " +
- QByteArray::number(proc.exitCode()) + "\n" + proc.readAll());
+ QByteArray::number(proc.exitCode()) + "\n" + output);
// If the file expectedoutput.txt exists, compare the
// console output with the content of that file
@@ -299,47 +306,9 @@
return;
}
- QString expectedFile = generatedtsfile + QLatin1String(".result");
- doCompare(generatedtsfile, expectedFile, false);
-}
-
-void tst_lupdate::commandline_data()
-{
- QTest::addColumn<QString>("currentPath");
- QTest::addColumn<QString>("commandline");
- QTest::addColumn<QString>("generatedtsfile");
- QTest::addColumn<QString>("expectedtsfile");
-
- QTest::newRow("Recursive scan") << QString("recursivescan")
- << QString(". -ts foo.ts") << QString("foo.ts") << QString("foo.ts.result");
- QTest::newRow("Deep path argument") << QString("recursivescan")
- << QString("sub/finddialog.cpp -ts bar.ts") << QString("bar.ts") << QString("bar.ts.result");
-}
-
-void tst_lupdate::commandline()
-{
- QFETCH(QString, currentPath);
- QFETCH(QString, commandline);
- QFETCH(QString, generatedtsfile);
- QFETCH(QString, expectedtsfile);
-
- QString generated =
- m_basePath + currentPath + QLatin1Char('/') + generatedtsfile;
- QFile gen(generated);
- if (gen.exists())
- QVERIFY(gen.remove());
- QProcess proc;
- proc.setWorkingDirectory(m_basePath + currentPath);
- proc.setProcessChannelMode(QProcess::MergedChannels);
- proc.start(m_cmdLupdate + " -silent " + commandline, QIODevice::ReadWrite | QIODevice::Text);
- QVERIFY2(proc.waitForFinished(5000), qPrintable(commandline));
- QVERIFY2(proc.exitStatus() == QProcess::NormalExit,
- "\"lupdate -silent " + commandline.toLatin1() + "\" crashed\n" + proc.readAll());
- QVERIFY2(!proc.exitCode(),
- "\"lupdate -silent " + commandline.toLatin1() + "\" exited with code " +
- QByteArray::number(proc.exitCode()) + "\n" + proc.readAll());
-
- doCompare(generated, m_basePath + currentPath + QLatin1Char('/') + expectedtsfile, false);
+ foreach (const QString &ts, generatedtsfiles)
+ doCompare(workDir + QLatin1Char('/') + ts,
+ dir + QLatin1Char('/') + ts + QLatin1String(".result"), false);
}
#if CHECK_SIMTEXTH
--- a/tests/auto/maketestselftest/tst_maketestselftest.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/maketestselftest/tst_maketestselftest.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -92,6 +92,9 @@
QStringList subdirs = dir.entryList(QDir::AllDirs|QDir::NoDotAndDotDot);
foreach (const QString& subdir, subdirs) {
+ if (subdir == QString::fromLatin1("tmp")) {
+ continue;
+ }
QTest::newRow(qPrintable(subdir)) << subdir;
}
}
--- a/tests/auto/qbytearray/tst_qbytearray.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qbytearray/tst_qbytearray.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -76,6 +76,7 @@
void qCompress();
void qUncompress_data();
void qUncompress();
+ void qCompressionZeroTermination();
#endif
void constByteArray();
void leftJustified();
@@ -261,6 +262,14 @@
}
QCOMPARE(res, out);
}
+
+void tst_QByteArray::qCompressionZeroTermination()
+{
+ QString s = "Hello, I'm a string.";
+ QByteArray ba = ::qUncompress(::qCompress(s.toLocal8Bit()));
+ QVERIFY((int) *(ba.data() + ba.size()) == 0);
+}
+
#endif
void tst_QByteArray::constByteArray()
--- a/tests/auto/qdatetime/tst_qdatetime.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qdatetime/tst_qdatetime.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -147,9 +147,16 @@
tst_QDateTime::tst_QDateTime()
{
+#ifdef Q_OS_SYMBIAN
+ // Symbian's timezone server cannot handle DST correctly for dates before year 1997
+ uint x1 = QDateTime(QDate(2000, 1, 1), QTime()).toTime_t();
+ uint x2 = QDateTime(QDate(2000, 6, 1), QTime()).toTime_t();
+ europeanTimeZone = (x1 == 946681200 && x2 == 959810400);
+#else
uint x1 = QDateTime(QDate(1990, 1, 1), QTime()).toTime_t();
uint x2 = QDateTime(QDate(1990, 6, 1), QTime()).toTime_t();
europeanTimeZone = (x1 == 631148400 && x2 == 644191200);
+#endif
}
tst_QDateTime::~tst_QDateTime()
--- a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -71,6 +71,7 @@
void colorize();
void drawPixmapItem();
void deviceCoordinateTranslateCaching();
+ void inheritOpacity();
};
void tst_QGraphicsEffect::initTestCase()
@@ -79,8 +80,8 @@
class CustomItem : public QGraphicsRectItem
{
public:
- CustomItem(qreal x, qreal y, qreal width, qreal height)
- : QGraphicsRectItem(x, y, width, height), numRepaints(0),
+ CustomItem(qreal x, qreal y, qreal width, qreal height, QGraphicsItem *parent = 0)
+ : QGraphicsRectItem(x, y, width, height, parent), numRepaints(0),
m_painter(0), m_styleOption(0)
{}
@@ -560,6 +561,35 @@
QVERIFY(item->numRepaints == numRepaints);
}
+void tst_QGraphicsEffect::inheritOpacity()
+{
+ QGraphicsScene scene;
+ QGraphicsRectItem *rectItem = new QGraphicsRectItem(0, 0, 10, 10);
+ CustomItem *item = new CustomItem(0, 0, 10, 10, rectItem);
+
+ scene.addItem(rectItem);
+
+ item->setGraphicsEffect(new DeviceEffect);
+ item->setPen(Qt::NoPen);
+ item->setBrush(Qt::red);
+
+ rectItem->setOpacity(0.5);
+
+ QGraphicsView view(&scene);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QTRY_VERIFY(item->numRepaints >= 1);
+
+ int numRepaints = item->numRepaints;
+
+ rectItem->setOpacity(1);
+ QTest::qWait(50);
+
+ // item should have been rerendered due to opacity changing
+ QTRY_VERIFY(item->numRepaints > numRepaints);
+}
+
QTEST_MAIN(tst_QGraphicsEffect)
#include "tst_qgraphicseffect.moc"
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -316,6 +316,7 @@
void childrenBoundingRectTransformed();
void childrenBoundingRect2();
void childrenBoundingRect3();
+ void childrenBoundingRect4();
void group();
void setGroup();
void setGroup2();
@@ -417,6 +418,7 @@
void task197802_childrenVisibility();
void QTBUG_4233_updateCachedWithSceneRect();
void QTBUG_5418_textItemSetDefaultColor();
+ void QTBUG_6738_missingUpdateWithSetParent();
private:
QList<QGraphicsItem *> paintedItems;
@@ -3257,6 +3259,32 @@
QCOMPARE(subTreeRect.height(), qreal(251.7766952966369));
}
+void tst_QGraphicsItem::childrenBoundingRect4()
+{
+ QGraphicsScene scene;
+
+ QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 10, 10));
+ QGraphicsRectItem *rect2 = scene.addRect(QRectF(0, 0, 20, 20));
+ QGraphicsRectItem *rect3 = scene.addRect(QRectF(0, 0, 30, 30));
+ rect2->setParentItem(rect);
+ rect3->setParentItem(rect);
+
+ QGraphicsView view(&scene);
+ view.show();
+
+ QTest::qWaitForWindowShown(&view);
+
+ // Try to mess up the cached bounding rect.
+ rect->childrenBoundingRect();
+ rect2->childrenBoundingRect();
+
+ rect3->setOpacity(0.0);
+ rect3->setParentItem(rect2);
+
+ QCOMPARE(rect->childrenBoundingRect(), rect3->boundingRect());
+ QCOMPARE(rect2->childrenBoundingRect(), rect3->boundingRect());
+}
+
void tst_QGraphicsItem::group()
{
QGraphicsScene scene;
@@ -9869,5 +9897,63 @@
QCOMPARE(i->painted, 0); //same color as before should not trigger an update (QTBUG-6242)
}
+void tst_QGraphicsItem::QTBUG_6738_missingUpdateWithSetParent()
+{
+ // In all 3 test cases below the reparented item should disappear
+ EventTester *parent = new EventTester;
+ EventTester *child = new EventTester(parent);
+ EventTester *child2 = new EventTester(parent);
+ EventTester *child3 = new EventTester(parent);
+ EventTester *child4 = new EventTester(parent);
+
+ child->setPos(10, 10);
+ child2->setPos(20, 20);
+ child3->setPos(30, 30);
+ child4->setPos(40, 40);
+
+ QGraphicsScene scene;
+ scene.addItem(parent);
+
+ class MyGraphicsView : public QGraphicsView
+ { public:
+ int repaints;
+ QRegion paintedRegion;
+ MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene), repaints(0) {}
+ void paintEvent(QPaintEvent *e)
+ {
+ ++repaints;
+ paintedRegion += e->region();
+ QGraphicsView::paintEvent(e);
+ }
+ void reset() { repaints = 0; paintedRegion = QRegion(); }
+ };
+
+ MyGraphicsView view(&scene);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+ QTRY_VERIFY(view.repaints > 0);
+
+ // test case #1
+ view.reset();
+ child2->setVisible(false);
+ child2->setParentItem(child);
+
+ QTRY_VERIFY(view.repaints == 1);
+
+ // test case #2
+ view.reset();
+ child3->setOpacity(0.0);
+ child3->setParentItem(child);
+
+ QTRY_VERIFY(view.repaints == 1);
+
+ // test case #3
+ view.reset();
+ child4->setParentItem(child);
+ child4->setVisible(false);
+
+ QTRY_VERIFY(view.repaints == 1);
+}
+
QTEST_MAIN(tst_QGraphicsItem)
#include "tst_qgraphicsitem.moc"
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -270,6 +270,7 @@
void initialFocus_data();
void initialFocus();
void polishItems();
+ void polishItems2();
void isActive();
void siblingIndexAlwaysValid();
@@ -3942,14 +3943,23 @@
class PolishItem : public QGraphicsTextItem
{
public:
- PolishItem(QGraphicsItem *parent = 0) : QGraphicsTextItem(parent) { }
-
+ PolishItem(QGraphicsItem *parent = 0)
+ : QGraphicsTextItem(parent), polished(false), deleteChildrenInPolish(true), addChildrenInPolish(false) { }
+
+ bool polished;
+ bool deleteChildrenInPolish;
+ bool addChildrenInPolish;
protected:
QVariant itemChange(GraphicsItemChange change, const QVariant& value)
{
if (change == ItemVisibleChange) {
- if (value.toBool())
+ polished = true;
+ if (deleteChildrenInPolish)
qDeleteAll(childItems());
+ if (addChildrenInPolish) {
+ for (int i = 0; i < 10; ++i)
+ new PolishItem(this);
+ }
}
return QGraphicsItem::itemChange(change, value);
}
@@ -3966,6 +3976,35 @@
QMetaObject::invokeMethod(&scene,"_q_polishItems");
}
+void tst_QGraphicsScene::polishItems2()
+{
+ QGraphicsScene scene;
+ PolishItem *item = new PolishItem;
+ item->addChildrenInPolish = true;
+ item->deleteChildrenInPolish = true;
+ // These children should be deleted in the polish.
+ for (int i = 0; i < 20; ++i)
+ new PolishItem(item);
+ scene.addItem(item);
+
+ // Wait for the polish event to be delivered.
+ QVERIFY(!item->polished);
+ QApplication::sendPostedEvents(&scene, QEvent::MetaCall);
+ QVERIFY(item->polished);
+
+ // We deleted the children we added above, but we also
+ // added 10 new children. These should be polished in the next
+ // event loop iteration.
+ QList<QGraphicsItem *> children = item->childItems();
+ QCOMPARE(children.count(), 10);
+ foreach (QGraphicsItem *child, children)
+ QVERIFY(!static_cast<PolishItem *>(child)->polished);
+
+ QApplication::sendPostedEvents(&scene, QEvent::MetaCall);
+ foreach (QGraphicsItem *child, children)
+ QVERIFY(static_cast<PolishItem *>(child)->polished);
+}
+
void tst_QGraphicsScene::isActive()
{
QGraphicsScene scene1;
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -163,6 +163,7 @@
void addChildInpolishEvent();
void polishEvent();
void polishEvent2();
+ void initialShow();
// Task fixes
void task236127_bspTreeIndexFails();
@@ -2856,6 +2857,30 @@
QVERIFY(widget->events.contains(QEvent::Polish));
}
+void tst_QGraphicsWidget::initialShow()
+{
+ class MyGraphicsWidget : public QGraphicsWidget
+ { public:
+ MyGraphicsWidget() : repaints(0) {}
+ int repaints;
+ void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget*) { ++repaints; }
+ void polishEvent() { update(); }
+ };
+
+ QGraphicsScene scene;
+ MyGraphicsWidget *widget = new MyGraphicsWidget;
+
+ QGraphicsView view(&scene);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QTest::qWait(100);
+ scene.addItem(widget);
+ QTest::qWait(100);
+
+ QCOMPARE(widget->repaints, 1);
+}
+
void tst_QGraphicsWidget::QT_BUG_6544_tabFocusFirstUnsetWhenRemovingItems()
{
QGraphicsScene scene;
Binary file tests/auto/qimagereader/baseline/35floppy.png has changed
Binary file tests/auto/qimagereader/baseline/connect.png has changed
Binary file tests/auto/qimagereader/baseline/kde_favicon.png has changed
Binary file tests/auto/qimagereader/baseline/semitransparent.png has changed
--- a/tests/auto/qimagereader/tst_qimagereader.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qimagereader/tst_qimagereader.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1633,7 +1633,8 @@
QTest::newRow("floppy (16px,32px - 16 colors)") << "35floppy.ico";
QTest::newRow("semitransparent") << "semitransparent.ico";
- QTest::newRow("slightlybroken") << "kde_favicon.ico";
+ QTest::newRow("slightlybrokenBMPHeader") << "kde_favicon.ico";
+ QTest::newRow("sightlybrokenIconHeader") << "connect.ico";
}
void tst_QImageReader::pixelCompareWithBaseline()
@@ -1641,14 +1642,20 @@
QFETCH(QString, fileName);
QImage icoImg;
+ const QString inputFileName(QString::fromAscii("images/%1").arg(fileName));
+ QFileInfo fi(inputFileName);
+
// might fail if the plugin does not exist, which is ok.
- if (icoImg.load(QString::fromAscii("images/%1").arg(fileName))) {
- QString baselineFileName = QString::fromAscii("baseline/%1").arg(fileName);
+ if (icoImg.load(inputFileName)) {
+ icoImg = icoImg.convertToFormat(QImage::Format_ARGB32_Premultiplied);
+ const QString baselineFileName(QString::fromAscii("baseline/%1.png").arg(fi.baseName()));
#if 0
icoImg.save(baselineFileName);
#else
QImage baseImg;
QVERIFY(baseImg.load(baselineFileName));
+ baseImg = baseImg.convertToFormat(QImage::Format_ARGB32_Premultiplied);
+ QCOMPARE(int(baseImg.format()), int(icoImg.format()));
QCOMPARE(baseImg, icoImg);
#endif
}
--- a/tests/auto/qpixmap/tst_qpixmap.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qpixmap/tst_qpixmap.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -145,9 +145,11 @@
void fromWinHICON();
#endif
-#if defined(Q_WS_S60)
+#if defined(Q_OS_SYMBIAN)
void fromSymbianCFbsBitmap_data();
void fromSymbianCFbsBitmap();
+ void toSymbianCFbsBitmap_data();
+ void toSymbianCFbsBitmap();
#endif
void onlyNullPixmapsOutsideGuiThread();
@@ -1110,7 +1112,7 @@
#endif // Q_WS_WIN
-#if defined(Q_WS_S60)
+#if defined(Q_OS_SYMBIAN)
Q_DECLARE_METATYPE(TDisplayMode)
void tst_QPixmap::fromSymbianCFbsBitmap_data()
@@ -1206,6 +1208,45 @@
CleanupStack::PopAndDestroy(3);
}
+
+void tst_QPixmap::toSymbianCFbsBitmap_data()
+{
+ QTest::addColumn<int>("red");
+ QTest::addColumn<int>("green");
+ QTest::addColumn<int>("blue");
+
+ QTest::newRow("red") << 255 << 0 << 0;
+ QTest::newRow("green") << 0 << 255 << 0;
+ QTest::newRow("blue") << 0 << 0 << 255;
+}
+
+void tst_QPixmap::toSymbianCFbsBitmap()
+{
+ QFETCH(int, red);
+ QFETCH(int, green);
+ QFETCH(int, blue);
+
+ QPixmap pm(100, 100);
+ pm.fill(QColor(red, green, blue));
+
+ CFbsBitmap *bitmap = pm.toSymbianCFbsBitmap();
+
+ QVERIFY(bitmap != 0);
+
+ // Verify size
+ QCOMPARE(100, (int) bitmap->SizeInPixels().iWidth);
+ QCOMPARE(100, (int) bitmap->SizeInPixels().iHeight);
+
+ // Verify pixel color
+ TRgb pixel;
+ bitmap->GetPixel(pixel, TPoint(0,0));
+ QCOMPARE((int)pixel.Red(), red);
+ QCOMPARE((int)pixel.Green(), green);
+ QCOMPARE((int)pixel.Blue(), blue);
+
+ // Clean up
+ delete bitmap;
+}
#endif
void tst_QPixmap::onlyNullPixmapsOutsideGuiThread()
--- a/tests/auto/qscriptvalue/qscriptvalue.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qscriptvalue/qscriptvalue.pro Fri Mar 12 15:46:37 2010 +0200
@@ -1,5 +1,7 @@
load(qttest_p4)
QT = core gui script
SOURCES += tst_qscriptvalue.cpp
+HEADERS += tst_qscriptvalue.h
-
+# Generated by testgen
+SOURCES += tst_qscriptvalue_generated.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/testgen/data.txt Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,116 @@
+# Data set for QScriptValue autotest.
+
+# Each line is a c++ code that should return a QScriptValue object.
+# Lines that are empty or start with '#' will be ignored
+
+QScriptValue()
+
+#Unbound values
+QScriptValue(QScriptValue::UndefinedValue)
+QScriptValue(QScriptValue::NullValue)
+QScriptValue(true)
+QScriptValue(false)
+QScriptValue(int(122))
+QScriptValue(uint(124))
+QScriptValue(0)
+QScriptValue(0.0)
+QScriptValue(123.0)
+QScriptValue(6.37e-8)
+QScriptValue(-6.37e-8)
+QScriptValue(0x43211234)
+QScriptValue(0x10000)
+QScriptValue(0x10001)
+QScriptValue(qSNaN())
+QScriptValue(qQNaN())
+QScriptValue(qInf())
+QScriptValue(-qInf())
+QScriptValue("NaN")
+QScriptValue("Infinity")
+QScriptValue("-Infinity")
+QScriptValue("ciao")
+QScriptValue(QString::fromLatin1("ciao"))
+QScriptValue(QString(""))
+QScriptValue(QString())
+QScriptValue(QString("0"))
+QScriptValue(QString("123"))
+QScriptValue(QString("12.4"))
+
+#Unbound values (bound to a null engine)
+QScriptValue(0, QScriptValue::UndefinedValue)
+QScriptValue(0, QScriptValue::NullValue)
+QScriptValue(0, true)
+QScriptValue(0, false)
+QScriptValue(0, int(122))
+QScriptValue(0, uint(124))
+QScriptValue(0, 0)
+QScriptValue(0, 0.0)
+QScriptValue(0, 123.0)
+QScriptValue(0, 6.37e-8)
+QScriptValue(0, -6.37e-8)
+QScriptValue(0, 0x43211234)
+QScriptValue(0, 0x10000)
+QScriptValue(0, 0x10001)
+QScriptValue(0, qSNaN())
+QScriptValue(0, qQNaN())
+QScriptValue(0, qInf())
+QScriptValue(0, -qInf())
+QScriptValue(0, "NaN")
+QScriptValue(0, "Infinity")
+QScriptValue(0, "-Infinity")
+QScriptValue(0, "ciao")
+QScriptValue(0, QString::fromLatin1("ciao"))
+QScriptValue(0, QString(""))
+QScriptValue(0, QString())
+QScriptValue(0, QString("0"))
+QScriptValue(0, QString("123"))
+QScriptValue(0, QString("12.3"))
+
+#Bound values
+QScriptValue(engine, QScriptValue::UndefinedValue)
+QScriptValue(engine, QScriptValue::NullValue)
+QScriptValue(engine, true)
+QScriptValue(engine, false)
+QScriptValue(engine, int(122))
+QScriptValue(engine, uint(124))
+QScriptValue(engine, 0)
+QScriptValue(engine, 0.0)
+QScriptValue(engine, 123.0)
+QScriptValue(engine, 6.37e-8)
+QScriptValue(engine, -6.37e-8)
+QScriptValue(engine, 0x43211234)
+QScriptValue(engine, 0x10000)
+QScriptValue(engine, 0x10001)
+QScriptValue(engine, qSNaN())
+QScriptValue(engine, qQNaN())
+QScriptValue(engine, qInf())
+QScriptValue(engine, -qInf())
+QScriptValue(engine, "NaN")
+QScriptValue(engine, "Infinity")
+QScriptValue(engine, "-Infinity")
+QScriptValue(engine, "ciao")
+QScriptValue(engine, QString::fromLatin1("ciao"))
+QScriptValue(engine, QString(""))
+QScriptValue(engine, QString())
+QScriptValue(engine, QString("0"))
+QScriptValue(engine, QString("123"))
+QScriptValue(engine, QString("1.23"))
+
+# evaluate
+engine->evaluate("[]")
+engine->evaluate("{}")
+engine->evaluate("Object.prototype")
+engine->evaluate("Date.prototype")
+engine->evaluate("Array.prototype")
+engine->evaluate("Function.prototype")
+engine->evaluate("Error.prototype")
+engine->evaluate("Object")
+engine->evaluate("Array")
+engine->evaluate("Number")
+engine->evaluate("Function")
+engine->evaluate("(function() { return 1; })")
+engine->evaluate("(function() { return 'ciao'; })")
+engine->evaluate("(function() { throw new Error('foo'); })")
+engine->evaluate("/foo/")
+engine->evaluate("new Object()")
+engine->evaluate("new Array()")
+engine->evaluate("new Error()")
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/testgen/gen.py Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,242 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+#Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
+
+## $QT_BEGIN_LICENSE:LGPL$
+## No Commercial Usage
+## This file contains pre-release code and may not be distributed.
+## You may use this file in accordance with the terms and conditions
+## contained in the Technology Preview License Agreement accompanying
+## this package.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 2.1 as published by the Free Software
+## Foundation and appearing in the file LICENSE.LGPL included in the
+## packaging of this file. Please review the following information to
+## ensure the GNU Lesser General Public License version 2.1 requirements
+## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## In addition, as a special exception, Nokia gives you certain additional
+## rights. These rights are described in the Nokia Qt LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## If you have questions regarding the use of this file, please contact
+## Nokia at qt-info@nokia.com.
+##
+##
+##
+##
+##
+##
+##
+##
+## $QT_END_LICENSE$
+
+from __future__ import with_statement
+from string import Template
+
+class Options():
+ """Option manager. It parse and check all paramteres, set internal variables."""
+ def __init__(self, args):
+ import logging as log
+ log.basicConfig()
+ #comand line options parser
+ from optparse import OptionParser
+ #load some directory searching stuff
+ import os.path, sys
+
+ opt = OptionParser("%prog [options] path_to_input_file path_to_output_file.")
+
+ self._o, self._a = opt.parse_args(args)
+
+ try:
+ if not (os.path.exists(self._a[0])):
+ raise Exception("Path doesn't exist")
+ if len(self._a) != 2:
+ raise IndexError("Only two files!")
+ self._o.ipath = self._a[0]
+ self._o.opath = self._a[1]
+ except IndexError:
+ log.error("Bad usage. Please try -h or --help")
+ sys.exit(1)
+ except Exception:
+ log.error("Path '" + self._a[0] + " or " + self._a[1] + "' don't exist")
+ sys.exit(2)
+
+ def __getattr__(self, attr):
+ """map all options properties into this object (remove one level of indirection)"""
+ return getattr(self._o, attr)
+
+
+mainTempl = Template("""/*
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+////////////////////////////////////////////////////////////////
+// THIS FILE IS AUTOGENERATED, ALL MODIFICATIONS WILL BE LAST //
+////////////////////////////////////////////////////////////////
+
+#include "testgenerator.h"
+
+#include <QtCore/qdatastream.h>
+#include <QtCore/qdatetime.h>
+#include <QtCore/qdebug.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qnumeric.h>
+#include <QtCore/qvariant.h>
+#include <QtCore/qvector.h>
+#include <QtScript/qscriptvalue.h>
+#include <QtScript/qscriptengine.h>
+
+
+
+typedef bool (QScriptValue::*ComparisionType) (const QScriptValue&) const;
+static QVector<bool> compare(ComparisionType compare, QScriptValue value, const QScriptValueList& values) {
+ QVector<bool> result;
+ result.reserve(${count});
+
+ QScriptValueList::const_iterator i = values.constBegin();
+ for (; i != values.constEnd(); ++i) {
+ result << (value.*compare)(*i);
+ }
+ return result;
+}
+
+static void dump(QDataStream& out, QScriptValue& value, const QString& expression, const QScriptValueList& allValues)
+{
+ out << QString(expression);
+
+ out << value.isValid();
+ out << value.isBool();
+ out << value.isBoolean();
+ out << value.isNumber();
+ out << value.isFunction();
+ out << value.isNull();
+ out << value.isString();
+ out << value.isUndefined();
+ out << value.isVariant();
+ out << value.isQObject();
+ out << value.isQMetaObject();
+ out << value.isObject();
+ out << value.isDate();
+ out << value.isRegExp();
+ out << value.isArray();
+ out << value.isError();
+
+ out << value.toString();
+ out << value.toNumber();
+ out << value.toBool();
+ out << value.toBoolean();
+ out << value.toInteger();
+ out << value.toInt32();
+ out << value.toUInt32();
+ out << value.toUInt16();
+
+ out << compare(&QScriptValue::equals, value, allValues);
+ out << compare(&QScriptValue::strictlyEquals, value, allValues);
+ out << compare(&QScriptValue::lessThan, value, allValues);
+ out << compare(&QScriptValue::instanceOf, value, allValues);
+
+ out << qscriptvalue_cast<QString>(value);
+ out << qscriptvalue_cast<qsreal>(value);
+ out << qscriptvalue_cast<bool>(value);
+ out << qscriptvalue_cast<qint32>(value);
+ out << qscriptvalue_cast<quint32>(value);
+ out << qscriptvalue_cast<quint16>(value);
+}
+
+void TestGenerator::prepareData()
+{
+ QScriptEngine* engine = new QScriptEngine;
+
+ QScriptValueList allValues;
+ allValues << ${values};
+ QVector<QString> allDataTags;
+ allDataTags.reserve(${count});
+ allDataTags << ${dataTags};
+ QDataStream out(&m_tempFile);
+ out << allDataTags;
+
+ for(unsigned i = 0; i < ${count}; ++i)
+ dump(out, allValues[i], allDataTags[i], allValues);
+
+ delete engine;
+}
+""")
+qsvTempl = Template("""
+ {
+ QScriptValue value = ${expr};
+ dump(out, value, "${expr_esc}", allValues);
+ }""")
+
+
+
+if __name__ == '__main__':
+ import sys
+ o = Options(sys.argv[1:])
+ out = []
+ qsv = []
+ # load input file
+ with open(o.ipath) as f:
+ for row in f.readlines():
+ qsv.append(row)
+
+ #skip comments and empty lines
+ qsv = filter(lambda w: len(w.strip()) and not w.startswith('#'), qsv)
+
+ escape = lambda w: w.replace('\\','\\\\').replace('"','\\"')
+
+ for row in qsv:
+ row = row.replace('\n','')
+ row_esc = escape(row)
+ out.append(qsvTempl.substitute(expr = row, expr_esc = row_esc))
+
+ result = mainTempl.substitute(dump= "".join(out) \
+ , values = (11 * ' ' + '<< ').join(qsv) \
+ , count = len(qsv) \
+ , dataTags = (11 * ' ' + '<< ').join(map(lambda w: '"' + escape(w.replace('\n','')) + '"\n', qsv)))
+
+ with open(o.opath, 'w') as f:
+ f.write(result)
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/testgen/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "testgenerator.h"
+#include <QtCore/qdebug.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/QCoreApplication>
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication a(argc, argv);
+
+ if (argc != 2) {
+ qWarning() << "./prog outputfile";
+ exit(1);
+ }
+
+ //Procced
+ TestGenerator gen(a.arguments()[1]);
+ gen.run();
+
+ return 0;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/testgen/testgen.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,18 @@
+QT += core script
+TARGET = testgen
+CONFIG += console
+CONFIG -= app_bundle
+TEMPLATE = app
+
+SOURCES += main.cpp \
+ testgenerator.cpp
+HEADERS += testgenerator.h
+
+
+INPUT_DATASET = data.txt
+dataset.name = Generating QScraiptValue autotest's dataset
+dataset.output = autogenerated.cpp
+dataset.commands = python gen.py data.txt autogenerated.cpp
+dataset.input = INPUT_DATASET
+dataset.variable_out = SOURCES
+QMAKE_EXTRA_COMPILERS += dataset
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/testgen/testgenerator.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,688 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "testgenerator.h"
+
+#include <QtCore/qdatastream.h>
+#include <QtCore/qdatetime.h>
+#include <QtCore/qdebug.h>
+#include <QtCore/qnumeric.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/qtextstream.h>
+#include <QtCore/qvariant.h>
+#include <QtScript/qscriptvalue.h>
+
+void TestGenerator::save(const QString& data)
+{
+ QTextStream out(&m_ofile);
+ out << data;
+}
+
+static QString escape(QString txt)
+{
+ return txt.replace("\\","\\\\").replace("\"","\\\"").replace("\n","\\n");
+}
+
+template<typename T>
+QString prepareToInsert(T value) {return QString::fromAscii("\"") + escape(value) + "\"";}
+template<>
+QString prepareToInsert<qsreal>(qsreal value)
+{
+ if (qIsNaN(value))
+ return "qQNaN()";
+ if (qIsInf(value))
+ return "qInf()";
+ return QString::number(value, 'g', 16);
+}
+template<>
+QString prepareToInsert<qint32>(qint32 value) {return QString::number(value);}
+template<>
+QString prepareToInsert<quint32>(quint32 value) {return QString::number(value);}
+template<>
+QString prepareToInsert<quint16>(quint16 value) {return QString::number(value);}
+template<>
+QString prepareToInsert<bool>(bool value) {return value ? "true" : "false";}
+template<>
+QString prepareToInsert<QString>(QString value) {return QString::fromAscii("\"") + escape(value) + "\"";}
+
+template<typename T>
+QString typeName() {return QString();}
+template<>
+QString typeName<qsreal>() {return "qsreal";}
+template<>
+QString typeName<qint32>() {return "qint32";}
+template<>
+QString typeName<quint32>() {return "quint32";}
+template<>
+QString typeName<quint16>() {return "quint16";}
+template<>
+QString typeName<bool>() {return "bool";}
+template<>
+QString typeName<QString>() {return "QString";}
+
+static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
+{
+ static const QString templ("void tst_QScriptValue::%1_initData()\n"\
+ "{\n"\
+ " QTest::addColumn<bool>(\"expected\");\n"\
+ " initScriptValues();\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
+ "{\n"\
+ " static QSet<QString> %1;\n"\
+ " if (%1.isEmpty()) {\n"\
+ " %1%2\n"\
+ " }\n"\
+ " newRow(expr) << %1.contains(expr);\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
+ "{\n"\
+ " QFETCH(bool, expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
+ "}\n"\
+ "\n"\
+ "DEFINE_TEST_FUNCTION(%1)\n"\
+ "\n");
+
+ if (!list.size()) {
+ qWarning() << name << ": nothing to add!" ;
+ return QString();
+ }
+
+ QString result = templ;
+ QStringList set;
+ foreach(QString t, list) {
+ t = escape(t);
+ t.append('\"');
+ t.prepend('\"');
+ set.append(QString(" << "));
+ set.append(t);
+ set.append("\n ");
+ }
+ set.append(";");
+ return result.arg(name, set.join(QString()));
+}
+
+template<typename T>
+static QString generateToXXXDef(const QString& name, const QList<QPair<QString, T> >& list)
+{
+ static const QString templ = "\n"\
+ "void tst_QScriptValue::%1_initData()\n"\
+ "{\n"\
+ " QTest::addColumn<%2>(\"expected\");\n"\
+ " initScriptValues();\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
+ "{\n"\
+ " static QHash<QString, %2> %1;\n"\
+ " if (%1.isEmpty()) {\n"\
+ "%3"\
+ " }\n"\
+ " newRow(expr) << %1.value(expr);\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
+ "{\n"\
+ " QFETCH(%2, expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
+ "}\n"\
+ "\n"\
+ "DEFINE_TEST_FUNCTION(%1)\n";
+ QString result = templ;
+
+ typename QList<QPair<QString, T> >::const_iterator i = list.constBegin();
+ QStringList set;
+ for(; i != list.constEnd(); ++i) {
+ QPair<QString, T> t = *i;
+ t.first = escape(t.first);
+ set.append(QString(" "));
+ set.append(name);
+ set.append(".insert(\"");
+ set.append(t.first);
+ set.append(QString::fromAscii("\", "));
+ set.append(prepareToInsert<T>(t.second));
+ set.append(QString::fromAscii(");\n"));
+ }
+ return result.arg(name, typeName<T>(), set.join(QString()));
+}
+
+
+template<>
+QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString, qsreal> >& list)
+{
+ static const QString templ = "\n"\
+ "void tst_QScriptValue::%1_initData()\n"\
+ "{\n"\
+ " QTest::addColumn<%2>(\"expected\");\n"\
+ " initScriptValues();\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
+ "{\n"\
+ " static QHash<QString, %2> %1;\n"\
+ " if (%1.isEmpty()) {\n"\
+ "%3"\
+ " }\n"\
+ " newRow(expr) << %1.value(expr);\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
+ "{\n"\
+ " QFETCH(%2, expected);\n"\
+ "%666"
+ " if (qIsInf(expected)) {\n"\
+ " QVERIFY(qIsInf(value.%1()));\n"\
+ " return;\n"\
+ " }\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
+ "}\n"\
+ "\n"\
+ "DEFINE_TEST_FUNCTION(%1)\n";
+ QString result = templ;
+
+ QList<QPair<QString, qsreal> >::const_iterator i = list.constBegin();
+ QStringList set;
+ for(; i != list.constEnd(); ++i) {
+ QPair<QString, qsreal> t = *i;
+ t.first = escape(t.first);
+ set.append(QString(" "));
+ set.append(name);
+ set.append(".insert(\"");
+ set.append(t.first);
+ set.append(QString::fromAscii("\", "));
+ set.append(prepareToInsert<qsreal>(t.second));
+ set.append(QString::fromAscii(");\n"));
+ }
+ // toInteger shouldn't return NaN, so it would be nice to catch the case.
+ QString hook;
+ if (name == "toNumber") {
+ hook =
+ " if (qIsNaN(expected)) {\n"\
+ " QVERIFY(qIsNaN(value.toNumber()));\n"\
+ " return;\n"\
+ " }\n";
+ }
+ return result.arg(name, typeName<qsreal>(), set.join(QString()), hook);
+}
+
+template<typename T>
+static QString generateCastDef(const QList<QPair<QString, T> >& list)
+{
+ static const QString templ = "\n"\
+ "void tst_QScriptValue::qscriptvalue_cast%2_initData()\n"\
+ "{\n"\
+ " QTest::addColumn<%2>(\"expected\");\n"\
+ " initScriptValues();\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValue::qscriptvalue_cast%2_makeData(const char* expr)\n"\
+ "{\n"\
+ " static QHash<QString, %2> value;\n"\
+ " if (value.isEmpty()) {\n"\
+ "%3"\
+ " }\n"\
+ " newRow(expr) << value.value(expr);\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValue::qscriptvalue_cast%2_test(const char*, const QScriptValue& value)\n"\
+ "{\n"\
+ " QFETCH(%2, expected);\n"\
+ " QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
+ "}\n"\
+ "\n"\
+ "DEFINE_TEST_FUNCTION(qscriptvalue_cast%2)\n";
+ QString result = templ;
+
+ typename QList<QPair<QString, T> >::const_iterator i = list.constBegin();
+ QStringList set;
+ for(; i != list.constEnd(); ++i) {
+ QPair<QString, T> t = *i;
+ t.first = escape(t.first);
+ set.append(QString(" "));
+ set.append("value.insert(\"");
+ set.append(t.first);
+ set.append(QString::fromAscii("\", "));
+ set.append(prepareToInsert<T>(t.second));
+ set.append(QString::fromAscii(");\n"));
+ }
+ return result.arg(typeName<T>(), set.join(QString()));
+}
+
+template<>
+QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
+{
+ static const QString templ = "\n"\
+ "void tst_QScriptValue::qscriptvalue_cast%2_initData()\n"\
+ "{\n"\
+ " QTest::addColumn<%2>(\"expected\");\n"\
+ " initScriptValues();\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValue::qscriptvalue_cast%2_makeData(const char* expr)\n"\
+ "{\n"\
+ " static QHash<QString, %2> value;\n"\
+ " if (value.isEmpty()) {\n"\
+ "%3"\
+ " }\n"\
+ " newRow(expr) << value.value(expr);\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValue::qscriptvalue_cast%2_test(const char*, const QScriptValue& value)\n"\
+ "{\n"\
+ " QFETCH(%2, expected);\n"\
+ " if (qIsNaN(expected)) {\n"
+ " QVERIFY(qIsNaN(qscriptvalue_cast<%2>(value)));\n"
+ " return;\n"
+ " }\n"\
+ " if (qIsInf(expected)) {\n"
+ " QVERIFY(qIsInf(qscriptvalue_cast<%2>(value)));\n"
+ " return;\n"
+ " }\n"
+ " QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
+ "}\n"\
+ "\n"\
+ "DEFINE_TEST_FUNCTION(qscriptvalue_cast%2)\n";
+ QString result = templ;
+
+ QList<QPair<QString, qsreal> >::const_iterator i = list.constBegin();
+ QStringList set;
+ for(; i != list.constEnd(); ++i) {
+ QPair<QString, qsreal> t = *i;
+ t.first = escape(t.first);
+ set.append(QString(" "));
+ set.append("value.insert(\"");
+ set.append(t.first);
+ set.append(QString::fromAscii("\", "));
+ set.append(prepareToInsert<qsreal>(t.second));
+ set.append(QString::fromAscii(");\n"));
+ }
+ return result.arg(typeName<qsreal>(), set.join(QString()));
+}
+
+static QString generateCompareDef(const QString& comparisionType, const QList<QString> tags)
+{
+ static const QString templ = "\n"\
+ "void tst_QScriptValue::%1_initData()\n"\
+ "{\n"\
+ " QTest::addColumn<QScriptValue>(\"other\");\n"\
+ " QTest::addColumn<bool>(\"expected\");\n"\
+ " initScriptValues();\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValue::%1_makeData(const char *expr)\n"\
+ "{\n"\
+ " static QSet<QString> equals;\n"\
+ " if (equals.isEmpty()) {\n"\
+ "%2\n"\
+ " }\n"\
+ " QHash<QString, QScriptValue>::const_iterator it;\n"\
+ " for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {\n"\
+ " QString tag = QString::fromLatin1(\"%20 <=> %21\").arg(expr).arg(it.key());\n"\
+ " newRow(tag.toLatin1()) << it.value() << equals.contains(tag);\n"\
+ " }\n"\
+ "}\n"\
+ "\n"\
+ "void tst_QScriptValue::%1_test(const char *, const QScriptValue& value)\n"\
+ "{\n"\
+ " QFETCH(QScriptValue, other);\n"\
+ " QFETCH(bool, expected);\n"\
+ " QCOMPARE(value.%1(other), expected);\n"\
+ "}\n"\
+ "\n"\
+ "DEFINE_TEST_FUNCTION(%1)\n";
+ Q_ASSERT(comparisionType == "strictlyEquals"
+ || comparisionType == "equals"
+ || comparisionType == "lessThan"
+ || comparisionType == "instanceOf");
+ QString result = templ;
+
+ QStringList set;
+ foreach(const QString& tmp, tags) {
+ set.append(" equals.insert(\"" + escape(tmp) + "\");");
+ }
+ return result.arg(comparisionType, set.join("\n"));
+}
+
+static QString generateInitDef(const QVector<QString>& allDataTags)
+{
+ static const QString templ = "/****************************************************************************\n"
+ "**\n"
+ "** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).\n"
+ "** All rights reserved.\n"
+ "** Contact: Nokia Corporation (qt-info@nokia.com)\n"
+ "**\n"
+ "** This file is part of the test suite of the Qt Toolkit.\n"
+ "**\n"
+ "** $QT_BEGIN_LICENSE:LGPL$\n"
+ "** No Commercial Usage\n"
+ "** This file contains pre-release code and may not be distributed.\n"
+ "** You may use this file in accordance with the terms and conditions\n"
+ "** contained in the Technology Preview License Agreement accompanying\n"
+ "** this package.\n"
+ "**\n"
+ "** GNU Lesser General Public License Usage\n"
+ "** Alternatively, this file may be used under the terms of the GNU Lesser\n"
+ "** General Public License version 2.1 as published by the Free Software\n"
+ "** Foundation and appearing in the file LICENSE.LGPL included in the\n"
+ "** packaging of this file. Please review the following information to\n"
+ "** ensure the GNU Lesser General Public License version 2.1 requirements\n"
+ "** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\n"
+ "**\n"
+ "** In addition, as a special exception, Nokia gives you certain additional\n"
+ "** rights. These rights are described in the Nokia Qt LGPL Exception\n"
+ "** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.\n"
+ "**\n"
+ "** If you have questions regarding the use of this file, please contact\n"
+ "** Nokia at qt-info@nokia.com.\n"
+ "**\n"
+ "**\n"
+ "**\n"
+ "**\n"
+ "**\n"
+ "**\n"
+ "**\n"
+ "**\n"
+ "** $QT_END_LICENSE$\n"
+ "**\n"
+ "****************************************************************************/\n"
+ "\n"\
+ "#include \"tst_qscriptvalue.h\"\n\n"\
+ "#define DEFINE_TEST_VALUE(expr) m_values.insert(QString::fromLatin1(#expr), expr)\n"\
+ "\n"\
+ "void tst_QScriptValue::initScriptValues()\n"\
+ "{\n"\
+ " m_values.clear();\n"\
+ " if (engine) \n"\
+ " delete engine;\n"\
+ " engine = new QScriptEngine;\n"\
+ "%1\n}\n\n";
+ QString result = templ;
+ QStringList set;
+ foreach(const QString tag, allDataTags) {
+ set.append(" DEFINE_TEST_VALUE(" + tag + ");");
+ }
+
+ return result.arg(set.join("\n"));
+}
+
+static void squashTags(QString dataTag, const QVector<bool>& results, QList<QString>& tags, QVector<QString> dataTags)
+{
+ for(int i = 0; i < results.count(); ++i) {
+ if (results.at(i))
+ tags.append(dataTag + " <=> " + dataTags[i]);
+ }
+}
+
+
+QString TestGenerator::generateTest()
+{
+ // All data tags keept in one place.
+ QVector<QString> dataTags;
+
+ // Data tags for values that return true in isXXX call
+ QList<QString> isValidList;
+ QList<QString> isBoolList;
+ QList<QString> isBooleanList;
+ QList<QString> isNumberList;
+ QList<QString> isFunctionList;
+ QList<QString> isNullList;
+ QList<QString> isStringList;
+ QList<QString> isUndefinedList;
+ QList<QString> isVariantList;
+ QList<QString> isQObjectList;
+ QList<QString> isQMetaObjectList;
+ QList<QString> isObjectList;
+ QList<QString> isDateList;
+ QList<QString> isRegExpList;
+ QList<QString> isArrayList;
+ QList<QString> isErrorList;
+
+ // List of pairs data tag and value returned from toXXX call
+ QList<QPair<QString, QString> > toStringList;
+ QList<QPair<QString, qsreal> > toNumberList;
+ QList<QPair<QString, bool> > toBoolList;
+ QList<QPair<QString, bool> > toBooleanList;
+ QList<QPair<QString, qsreal> > toIntegerList;
+ QList<QPair<QString, qint32> > toInt32List;
+ QList<QPair<QString, quint32> > toUInt32List;
+ QList<QPair<QString, quint16> > toUInt16List;
+
+ // List of complex tags returning true
+ QList<QString> equalsList;
+ QList<QString> strictlyEqualsList;
+ QList<QString> lessThanList;
+ QList<QString> instanceOfList;
+
+ QList<QPair<QString, QString> > castStringList;
+ QList<QPair<QString, qsreal> > castSRealList;
+ QList<QPair<QString, bool> > castBoolList;
+ QList<QPair<QString, qint32> > castInt32List;
+ QList<QPair<QString, quint32> > castUInt32List;
+ QList<QPair<QString, quint16> > castUInt16List;
+
+ // Load.
+ m_tempFile.seek(0);
+ QDataStream in(&m_tempFile);
+ in >> dataTags;
+ Q_ASSERT(in.status() == in.Ok);
+
+ while(!in.atEnd())
+ {
+ bool isValidRes;
+ bool isBoolRes;
+ bool isBooleanRes;
+ bool isNumberRes;
+ bool isFunctionRes;
+ bool isNullRes;
+ bool isStringRes;
+ bool isUndefinedRes;
+ bool isVariantRes;
+ bool isQObjectRes;
+ bool isQMetaObjectRes;
+ bool isObjectRes;
+ bool isDateRes;
+ bool isRegExpRes;
+ bool isArrayRes;
+ bool isErrorRes;
+
+ QString toStringRes;
+ qsreal toNumberRes;
+ bool toBoolRes;
+ bool toBooleanRes;
+ qsreal toIntegerRes;
+ qint32 toInt32Res;
+ quint32 toUInt32Res;
+ quint16 toUInt16Res;
+ //toVariantRes;
+ //toDateTimeRes;
+
+ QVector<bool> equalsRes;
+ QVector<bool> strictlyEqualsRes;
+ QVector<bool> lessThanRes;
+ QVector<bool> instanceOfRes;
+
+ QString castStringRes;
+ qsreal castSRealRes;
+ bool castBoolRes;
+ qint32 castInt32Res;
+ quint32 castUInt32Res;
+ quint16 castUInt16Res;
+
+ QString dataTag;
+ in >> dataTag;
+ in >> isValidRes;
+ in >> isBoolRes;
+ in >> isBooleanRes;
+ in >> isNumberRes;
+ in >> isFunctionRes;
+ in >> isNullRes;
+ in >> isStringRes;
+ in >> isUndefinedRes;
+ in >> isVariantRes;
+ in >> isQObjectRes;
+ in >> isQMetaObjectRes;
+ in >> isObjectRes;
+ in >> isDateRes;
+ in >> isRegExpRes;
+ in >> isArrayRes;
+ in >> isErrorRes;
+
+ if (isValidRes) isValidList.append(dataTag);
+ if (isBoolRes) isBoolList.append(dataTag);
+ if (isBooleanRes) isBooleanList.append(dataTag);
+ if (isNumberRes) isNumberList.append(dataTag);
+ if (isFunctionRes) isFunctionList.append(dataTag);
+ if (isNullRes) isNullList.append(dataTag);
+ if (isStringRes) isStringList.append(dataTag);
+ if (isUndefinedRes) isUndefinedList.append(dataTag);
+ if (isVariantRes) isVariantList.append(dataTag);
+ if (isQObjectRes) isQObjectList.append(dataTag);
+ if (isQMetaObjectRes) isQMetaObjectList.append(dataTag);
+ if (isObjectRes) isObjectList.append(dataTag);
+ if (isDateRes) isDateList.append(dataTag);
+ if (isRegExpRes) isRegExpList.append(dataTag);
+ if (isArrayRes) isArrayList.append(dataTag);
+ if (isErrorRes) isErrorList.append(dataTag);
+
+ in >> toStringRes;
+ in >> toNumberRes;
+ in >> toBoolRes;
+ in >> toBooleanRes;
+ in >> toIntegerRes;
+ in >> toInt32Res;
+ in >> toUInt32Res;
+ in >> toUInt16Res;
+ //in >> toVariantRes;
+ //in >> toDateTimeRes;
+
+ toStringList.append(QPair<QString, QString>(dataTag, toStringRes));
+ toNumberList.append(QPair<QString, qsreal>(dataTag, toNumberRes));
+ toBoolList.append(QPair<QString, bool>(dataTag, toBoolRes));
+ toBooleanList.append(QPair<QString, bool>(dataTag, toBooleanRes));
+ toIntegerList.append(QPair<QString, qsreal>(dataTag, toIntegerRes));
+ toInt32List.append(QPair<QString, qint32>(dataTag, toInt32Res));
+ toUInt32List.append(QPair<QString, quint32>(dataTag, toUInt32Res));
+ toUInt16List.append(QPair<QString, quint16>(dataTag, toUInt16Res));
+
+ in >> equalsRes;
+ in >> strictlyEqualsRes;
+ in >> lessThanRes;
+ in >> instanceOfRes;
+
+ squashTags(dataTag, equalsRes, equalsList, dataTags);
+ squashTags(dataTag, strictlyEqualsRes, strictlyEqualsList, dataTags);
+ squashTags(dataTag, lessThanRes, lessThanList, dataTags);
+ squashTags(dataTag, instanceOfRes, instanceOfList, dataTags);
+
+ in >> castStringRes;
+ in >> castSRealRes;
+ in >> castBoolRes;
+ in >> castInt32Res;
+ in >> castUInt32Res;
+ in >> castUInt16Res;
+
+ castStringList.append(QPair<QString, QString>(dataTag, castStringRes));
+ castSRealList.append(QPair<QString, qsreal>(dataTag, castSRealRes));
+ castBoolList.append(QPair<QString, bool>(dataTag, castBoolRes));
+ castInt32List.append(QPair<QString, qint32>(dataTag, castInt32Res));
+ castUInt32List.append(QPair<QString, quint32>(dataTag, castUInt32Res));
+ castUInt16List.append(QPair<QString, quint16>(dataTag, castUInt16Res));
+
+ Q_ASSERT(in.status() == in.Ok);
+ }
+
+ Q_ASSERT(in.atEnd());
+
+ // Generate.
+ QStringList result;
+ result.append(generateInitDef(dataTags));
+ result.append(generateIsXXXDef("isValid", isValidList));
+ result.append(generateIsXXXDef("isBool", isBoolList));
+ result.append(generateIsXXXDef("isBoolean", isBooleanList));
+ result.append(generateIsXXXDef("isNumber", isNumberList));
+ result.append(generateIsXXXDef("isFunction", isFunctionList));
+ result.append(generateIsXXXDef("isNull", isNullList));
+ result.append(generateIsXXXDef("isString", isStringList));
+ result.append(generateIsXXXDef("isUndefined", isUndefinedList));
+ result.append(generateIsXXXDef("isVariant", isVariantList));
+ result.append(generateIsXXXDef("isQObject", isQObjectList));
+ result.append(generateIsXXXDef("isQMetaObject", isQMetaObjectList));
+ result.append(generateIsXXXDef("isObject", isObjectList));
+ result.append(generateIsXXXDef("isDate", isDateList));
+ result.append(generateIsXXXDef("isRegExp", isRegExpList));
+ result.append(generateIsXXXDef("isArray", isArrayList));
+ result.append(generateIsXXXDef("isError", isErrorList));
+
+ result.append(generateToXXXDef<QString>("toString", toStringList));
+ result.append(generateToXXXDef<qsreal>("toNumber", toNumberList));
+ result.append(generateToXXXDef<bool>("toBool", toBoolList));
+ result.append(generateToXXXDef<bool>("toBoolean", toBooleanList));
+ result.append(generateToXXXDef<qsreal>("toInteger", toIntegerList));
+ result.append(generateToXXXDef<qint32>("toInt32", toInt32List));
+ result.append(generateToXXXDef<quint32>("toUInt32", toUInt32List));
+ result.append(generateToXXXDef<quint16>("toUInt16", toUInt16List));
+
+ result.append(generateCompareDef("equals", equalsList));
+ result.append(generateCompareDef("strictlyEquals", strictlyEqualsList));
+ result.append(generateCompareDef("lessThan", lessThanList));
+ result.append(generateCompareDef("instanceOf", instanceOfList));
+
+ result.append(generateCastDef(castStringList));
+ result.append(generateCastDef(castSRealList));
+ result.append(generateCastDef(castBoolList));
+ result.append(generateCastDef(castInt32List));
+ result.append(generateCastDef(castUInt32List));
+ result.append(generateCastDef(castUInt16List));
+
+ return result.join("\n");
+}
+
+
+
+
+
+
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/testgen/testgenerator.h Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef TESTGENERATOR_H
+#define TESTGENERATOR_H
+
+#include <QtCore/qdebug.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qtemporaryfile.h>
+
+class TestGenerator {
+public:
+ TestGenerator(QString& outputpath)
+ : m_ofile(outputpath)
+ {
+ // Open output file
+ if (!m_ofile.open(QIODevice::WriteOnly | QIODevice::Text)) {
+ qWarning() << "Can't open output file: " << outputpath;
+ exit(2);
+ }
+ m_tempFile.open();
+ }
+
+ void run()
+ {
+ prepareData();
+ Q_ASSERT(m_tempFile.size());
+ save(generateTest());
+ }
+
+ void prepareData();
+ QString generateTest();
+ void save(const QString& data);
+private:
+ QFile m_ofile;
+ QTemporaryFile m_tempFile;
+};
+
+#endif // TESTGENERATOR_H
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -39,14 +39,8 @@
**
****************************************************************************/
-
-#include <QtTest/QtTest>
+#include "tst_qscriptvalue.h"
#include <QtGui/QPushButton>
-#include <QtCore/qnumeric.h>
-
-#include <QtScript/qscriptclass.h>
-#include <QtScript/qscriptvalue.h>
-#include <QtScript/qscriptengine.h>
//TESTED_CLASS=
//TESTED_FILES=
@@ -55,62 +49,70 @@
extern bool qt_script_isJITEnabled();
QT_END_NAMESPACE
-class tst_QScriptValue : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QScriptValue();
- virtual ~tst_QScriptValue();
-
-private slots:
- void ctor();
- void engine();
- void toString();
- void toNumber();
- void toBoolean();
- void toBool();
- void toInteger();
- void toInt32();
- void toUInt32();
- void toUInt16();
- void toVariant();
- void toQObject();
- void toObject();
- void toDateTime();
- void toRegExp();
- void instanceOf();
- void isArray();
- void isDate();
- void isError();
- void isRegExp();
- void getSetPrototype();
- void getSetScope();
- void getSetProperty();
- void arrayElementGetterSetter();
- void getSetData();
- void getSetScriptClass();
- void call();
- void construct();
- void lessThan();
- void equals();
- void strictlyEquals();
- void castToPointer();
- void prettyPrinter_data();
- void prettyPrinter();
- void engineDeleted();
- void valueOfWithClosure();
- void objectId();
-};
-
tst_QScriptValue::tst_QScriptValue()
+ : engine(0)
{
}
tst_QScriptValue::~tst_QScriptValue()
{
+ delete engine;
}
+void tst_QScriptValue::dataHelper(InitDataFunction init, DefineDataFunction define)
+{
+ QTest::addColumn<QString>("__expression__");
+ (this->*init)();
+ QHash<QString,QScriptValue>::const_iterator it;
+ for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+ m_currentExpression = it.key();
+ (this->*define)(it.key().toLatin1());
+ }
+ m_currentExpression = QString();
+}
+
+QTestData &tst_QScriptValue::newRow(const char *tag)
+{
+ return QTest::newRow(tag) << m_currentExpression;
+}
+
+void tst_QScriptValue::testHelper(TestFunction fun)
+{
+ QFETCH(QString, __expression__);
+ QScriptValue value = m_values.value(__expression__);
+ (this->*fun)(__expression__.toLatin1(), value);
+}
+
+void tst_QScriptValue::assignAndCopyConstruct_initData()
+{
+ QTest::addColumn<int>("dummy");
+ initScriptValues();
+}
+
+void tst_QScriptValue::assignAndCopyConstruct_makeData(const char *expr)
+{
+ newRow(expr) << 0;
+}
+
+void tst_QScriptValue::assignAndCopyConstruct_test(const char *, const QScriptValue &value)
+{
+ QScriptValue copy(value);
+ QCOMPARE(copy.strictlyEquals(value), !value.isNumber() || !qIsNaN(value.toNumber()));
+ QCOMPARE(copy.engine(), value.engine());
+
+ QScriptValue assigned = copy;
+ QCOMPARE(assigned.strictlyEquals(value), !copy.isNumber() || !qIsNaN(copy.toNumber()));
+ QCOMPARE(assigned.engine(), assigned.engine());
+
+ QScriptValue other(!value.toBool());
+ assigned = other;
+ QVERIFY(!assigned.strictlyEquals(copy));
+ QVERIFY(assigned.strictlyEquals(other));
+ QCOMPARE(assigned.engine(), other.engine());
+}
+
+DEFINE_TEST_FUNCTION(assignAndCopyConstruct)
+
void tst_QScriptValue::ctor()
{
QScriptEngine eng;
@@ -330,19 +332,12 @@
QVERIFY(QScriptValue(0, QString("ciao")).isString());
}
-void tst_QScriptValue::engine()
-{
- QScriptEngine eng;
- QScriptValue object = eng.newObject();
- QCOMPARE(object.engine(), &eng);
-}
-
static QScriptValue myFunction(QScriptContext *, QScriptEngine *eng)
{
return eng->undefinedValue();
}
-void tst_QScriptValue::toString()
+void tst_QScriptValue::toString_old()
{
QScriptEngine eng;
@@ -456,7 +451,7 @@
QVERIFY(variant.toString().isEmpty());
}
-void tst_QScriptValue::toNumber()
+void tst_QScriptValue::toNumber_old()
{
QScriptEngine eng;
@@ -529,7 +524,7 @@
}
}
-void tst_QScriptValue::toBoolean() // deprecated
+void tst_QScriptValue::toBoolean_old() // deprecated
{
QScriptEngine eng;
@@ -626,7 +621,7 @@
}
}
-void tst_QScriptValue::toBool()
+void tst_QScriptValue::toBool_old()
{
QScriptEngine eng;
@@ -723,7 +718,7 @@
}
}
-void tst_QScriptValue::toInteger()
+void tst_QScriptValue::toInteger_old()
{
QScriptEngine eng;
@@ -810,7 +805,7 @@
QCOMPARE(inv.toInteger(), 0.0);
}
-void tst_QScriptValue::toInt32()
+void tst_QScriptValue::toInt32_old()
{
QScriptEngine eng;
@@ -946,7 +941,7 @@
QCOMPARE(qscriptvalue_cast<qint32>(inv), 0);
}
-void tst_QScriptValue::toUInt32()
+void tst_QScriptValue::toUInt32_old()
{
QScriptEngine eng;
@@ -1078,7 +1073,7 @@
QCOMPARE(qscriptvalue_cast<quint32>(inv), quint32(0));
}
-void tst_QScriptValue::toUInt16()
+void tst_QScriptValue::toUInt16_old()
{
QScriptEngine eng;
@@ -1239,7 +1234,7 @@
Q_DECLARE_METATYPE(QVariant)
#endif
-void tst_QScriptValue::toVariant()
+void tst_QScriptValue::toVariant_old()
{
QScriptEngine eng;
@@ -1346,7 +1341,7 @@
// unfortunately, this is necessary in order to do qscriptvalue_cast<QPushButton*>(...)
Q_DECLARE_METATYPE(QPushButton*)
-void tst_QScriptValue::toQObject()
+void tst_QScriptValue::toQObject_old()
{
QScriptEngine eng;
@@ -1541,7 +1536,7 @@
}
}
-void tst_QScriptValue::toDateTime()
+void tst_QScriptValue::toDateTime_old()
{
QScriptEngine eng;
QDateTime dt = eng.evaluate("new Date(0)").toDateTime();
@@ -1559,7 +1554,7 @@
QVERIFY(!eng.undefinedValue().toDateTime().isValid());
}
-void tst_QScriptValue::toRegExp()
+void tst_QScriptValue::toRegExp_old()
{
QScriptEngine eng;
{
@@ -1589,7 +1584,7 @@
QVERIFY(eng.undefinedValue().toRegExp().isEmpty());
}
-void tst_QScriptValue::instanceOf()
+void tst_QScriptValue::instanceOf_old()
{
QScriptEngine eng;
QScriptValue obj = eng.newObject();
@@ -1625,7 +1620,7 @@
QCOMPARE(obj.instanceOf(otherEngine.globalObject().property("Object")), false);
}
-void tst_QScriptValue::isArray()
+void tst_QScriptValue::isArray_old()
{
QScriptEngine eng;
QVERIFY(eng.evaluate("[]").isArray());
@@ -1638,7 +1633,7 @@
QVERIFY(!eng.undefinedValue().isArray());
}
-void tst_QScriptValue::isDate()
+void tst_QScriptValue::isDate_old()
{
QScriptEngine eng;
QVERIFY(eng.evaluate("new Date()").isDate());
@@ -1652,7 +1647,7 @@
QVERIFY(!eng.undefinedValue().isDate());
}
-void tst_QScriptValue::isError()
+void tst_QScriptValue::isError_old()
{
QStringList errors;
errors << "Error"
@@ -1677,7 +1672,7 @@
QVERIFY(!eng.evaluate("new Object()").isError());
}
-void tst_QScriptValue::isRegExp()
+void tst_QScriptValue::isRegExp_old()
{
QScriptEngine eng;
QVERIFY(eng.evaluate("/foo/").isRegExp());
@@ -2718,7 +2713,7 @@
QVERIFY(!QScriptValue(QScriptValue::NullValue).construct().isValid());
}
-void tst_QScriptValue::lessThan()
+void tst_QScriptValue::lessThan_old()
{
QScriptEngine eng;
@@ -2812,7 +2807,7 @@
QCOMPARE(date1.lessThan(QScriptValue(&otherEngine, 123)), false);
}
-void tst_QScriptValue::equals()
+void tst_QScriptValue::equals_old()
{
QScriptEngine eng;
@@ -2907,7 +2902,7 @@
QScriptValue qobj1 = eng.newQObject(this);
QScriptValue qobj2 = eng.newQObject(this);
QScriptValue qobj3 = eng.newQObject(0);
- QScriptValue qobj4 = eng.newQObject(new QObject());
+ QScriptValue qobj4 = eng.newQObject(new QObject(), QScriptEngine::ScriptOwnership);
QVERIFY(qobj1.equals(qobj2)); // compares the QObject pointers
QVERIFY(!qobj2.equals(qobj4)); // compares the QObject pointers
QVERIFY(!qobj2.equals(obj2)); // compares the QObject pointers
@@ -3005,7 +3000,7 @@
QCOMPARE(date1.equals(QScriptValue(&otherEngine, 123)), false);
}
-void tst_QScriptValue::strictlyEquals()
+void tst_QScriptValue::strictlyEquals_old()
{
QScriptEngine eng;
@@ -3091,6 +3086,20 @@
QVERIFY(!falskt.strictlyEquals(null));
QVERIFY(!falskt.strictlyEquals(QScriptValue()));
+ QVERIFY(!QScriptValue(false).strictlyEquals(123));
+ QVERIFY(!QScriptValue(QScriptValue::UndefinedValue).strictlyEquals(123));
+ QVERIFY(!QScriptValue(QScriptValue::NullValue).strictlyEquals(123));
+ QVERIFY(!QScriptValue(false).strictlyEquals("ciao"));
+ QVERIFY(!QScriptValue(QScriptValue::UndefinedValue).strictlyEquals("ciao"));
+ QVERIFY(!QScriptValue(QScriptValue::NullValue).strictlyEquals("ciao"));
+ QVERIFY(QScriptValue(&eng, "ciao").strictlyEquals("ciao"));
+ QVERIFY(QScriptValue("ciao").strictlyEquals(QScriptValue(&eng, "ciao")));
+ QVERIFY(!QScriptValue("ciao").strictlyEquals(123));
+ QVERIFY(!QScriptValue("ciao").strictlyEquals(QScriptValue(&eng, 123)));
+ QVERIFY(!QScriptValue(123).strictlyEquals("ciao"));
+ QVERIFY(!QScriptValue(123).strictlyEquals(QScriptValue(&eng, "ciao")));
+ QVERIFY(!QScriptValue(&eng, 123).strictlyEquals("ciao"));
+
QScriptValue obj1 = eng.newObject();
QScriptValue obj2 = eng.newObject();
QCOMPARE(obj1.strictlyEquals(obj2), false);
@@ -3442,4 +3451,3 @@
}
QTEST_MAIN(tst_QScriptValue)
-#include "tst_qscriptvalue.moc"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.h Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,410 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef TST_QSCRIPTVALUE_H
+#define TST_QSCRIPTVALUE_H
+
+#include <QtCore/qobject.h>
+#include <QtCore/qnumeric.h>
+#include <QtScript/qscriptclass.h>
+#include <QtScript/qscriptengine.h>
+#include <QtScript/qscriptvalue.h>
+#include <QtTest/QtTest>
+
+Q_DECLARE_METATYPE(QVariant)
+Q_DECLARE_METATYPE(QScriptValue)
+
+class tst_QScriptValue : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_QScriptValue();
+ virtual ~tst_QScriptValue();
+
+private slots:
+ // Generated test functions
+ void isArray_data();
+ void isArray();
+
+ void isBool_data();
+ void isBool();
+
+ void isBoolean_data();
+ void isBoolean();
+
+ void isDate_data();
+ void isDate();
+
+ void isError_data();
+ void isError();
+
+ void isFunction_data();
+ void isFunction();
+
+ void isNull_data();
+ void isNull();
+
+ void isNumber_data();
+ void isNumber();
+
+ void isObject_data();
+ void isObject();
+
+// void isQMetaObject_data();
+// void isQMetaObject();
+
+// void isQObject_data();
+// void isQObject();
+
+ void isRegExp_data();
+ void isRegExp();
+
+ void isString_data();
+ void isString();
+
+ void isUndefined_data();
+ void isUndefined();
+
+ void isValid_data();
+ void isValid();
+
+// void isVariant_data();
+// void isVariant();
+
+ void toBool_data();
+ void toBool();
+
+ void toBoolean_data();
+ void toBoolean();
+
+// void toDateTime_data();
+// void toDateTime();
+
+ void toInt32_data();
+ void toInt32();
+
+ void toInteger_data();
+ void toInteger();
+
+ void toNumber_data();
+ void toNumber();
+
+// void toQMetaObject_data();
+// void toQMetaObject();
+
+// void toQObject_data();
+// void toQObject();
+
+// void toRegExp_data();
+// void toRegExp();
+
+ void toString_data();
+ void toString();
+
+ void toUInt16_data();
+ void toUInt16();
+
+ void toUInt32_data();
+ void toUInt32();
+
+// void toVariant_data();
+// void toVariant();
+
+ void equals_data();
+ void equals();
+
+ void strictlyEquals_data();
+ void strictlyEquals();
+
+ void lessThan_data();
+ void lessThan();
+
+ void instanceOf_data();
+ void instanceOf();
+
+ void assignAndCopyConstruct_data();
+ void assignAndCopyConstruct();
+
+ void qscriptvalue_castQString_data();
+ void qscriptvalue_castQString();
+
+ void qscriptvalue_castqsreal_data();
+ void qscriptvalue_castqsreal();
+
+ void qscriptvalue_castbool_data();
+ void qscriptvalue_castbool();
+
+ void qscriptvalue_castqint32_data();
+ void qscriptvalue_castqint32();
+
+ void qscriptvalue_castquint32_data();
+ void qscriptvalue_castquint32();
+
+ void qscriptvalue_castquint16_data();
+ void qscriptvalue_castquint16();
+
+ // Non-generated test functions
+
+ void toObject();
+ void ctor();
+
+ void toString_old();
+ void toNumber_old();
+ void toBoolean_old();
+ void toBool_old();
+ void toInteger_old();
+ void toInt32_old();
+ void toUInt32_old();
+ void toUInt16_old();
+ void toVariant_old();
+ void toQObject_old();
+ void toDateTime_old();
+ void toRegExp_old();
+ void instanceOf_old();
+ void isArray_old();
+ void isDate_old();
+ void isError_old();
+ void isRegExp_old();
+
+ void lessThan_old();
+ void equals_old();
+ void strictlyEquals_old();
+
+ void getSetPrototype();
+ void getSetScope();
+ void getSetProperty();
+ void arrayElementGetterSetter();
+ void getSetData();
+ void getSetScriptClass();
+ void call();
+ void construct();
+ void castToPointer();
+ void prettyPrinter_data();
+ void prettyPrinter();
+ void engineDeleted();
+ void valueOfWithClosure();
+ void objectId();
+
+private:
+ typedef void (tst_QScriptValue::*InitDataFunction)();
+ typedef void (tst_QScriptValue::*DefineDataFunction)(const char *);
+ void dataHelper(InitDataFunction init, DefineDataFunction define);
+ QTestData &newRow(const char *tag);
+
+ typedef void (tst_QScriptValue::*TestFunction)(const char *, const QScriptValue &);
+ void testHelper(TestFunction fun);
+
+ // Generated functions
+
+ void initScriptValues();
+
+ void isArray_initData();
+ void isArray_makeData(const char *expr);
+ void isArray_test(const char *expr, const QScriptValue &value);
+
+ void isBool_initData();
+ void isBool_makeData(const char *expr);
+ void isBool_test(const char *expr, const QScriptValue &value);
+
+ void isBoolean_initData();
+ void isBoolean_makeData(const char *expr);
+ void isBoolean_test(const char *expr, const QScriptValue &value);
+
+ void isDate_initData();
+ void isDate_makeData(const char *expr);
+ void isDate_test(const char *expr, const QScriptValue &value);
+
+ void isError_initData();
+ void isError_makeData(const char *expr);
+ void isError_test(const char *expr, const QScriptValue &value);
+
+ void isFunction_initData();
+ void isFunction_makeData(const char *expr);
+ void isFunction_test(const char *expr, const QScriptValue &value);
+
+ void isNull_initData();
+ void isNull_makeData(const char *expr);
+ void isNull_test(const char *expr, const QScriptValue &value);
+
+ void isNumber_initData();
+ void isNumber_makeData(const char *expr);
+ void isNumber_test(const char *expr, const QScriptValue &value);
+
+ void isObject_initData();
+ void isObject_makeData(const char *expr);
+ void isObject_test(const char *expr, const QScriptValue &value);
+
+ void isQMetaObject_initData();
+ void isQMetaObject_makeData(const char *expr);
+ void isQMetaObject_test(const char *expr, const QScriptValue &value);
+
+ void isQObject_initData();
+ void isQObject_makeData(const char *expr);
+ void isQObject_test(const char *expr, const QScriptValue &value);
+
+ void isRegExp_initData();
+ void isRegExp_makeData(const char *expr);
+ void isRegExp_test(const char *expr, const QScriptValue &value);
+
+ void isString_initData();
+ void isString_makeData(const char *expr);
+ void isString_test(const char *expr, const QScriptValue &value);
+
+ void isUndefined_initData();
+ void isUndefined_makeData(const char *expr);
+ void isUndefined_test(const char *expr, const QScriptValue &value);
+
+ void isValid_initData();
+ void isValid_makeData(const char *expr);
+ void isValid_test(const char *expr, const QScriptValue &value);
+
+ void isVariant_initData();
+ void isVariant_makeData(const char *expr);
+ void isVariant_test(const char *expr, const QScriptValue &value);
+
+ void toBool_initData();
+ void toBool_makeData(const char *);
+ void toBool_test(const char *, const QScriptValue &value);
+
+ void toBoolean_initData();
+ void toBoolean_makeData(const char *);
+ void toBoolean_test(const char *, const QScriptValue &value);
+
+ void toDateTime_initData();
+ void toDateTime_makeData(const char *);
+ void toDateTime_test(const char *, const QScriptValue &value);
+
+ void toInt32_initData();
+ void toInt32_makeData(const char *);
+ void toInt32_test(const char *, const QScriptValue &value);
+
+ void toInteger_initData();
+ void toInteger_makeData(const char *);
+ void toInteger_test(const char *, const QScriptValue &value);
+
+ void toNumber_initData();
+ void toNumber_makeData(const char *);
+ void toNumber_test(const char *, const QScriptValue &value);
+
+ void toQMetaObject_initData();
+ void toQMetaObject_makeData(const char *);
+ void toQMetaObject_test(const char *, const QScriptValue &value);
+
+ void toQObject_initData();
+ void toQObject_makeData(const char *);
+ void toQObject_test(const char *, const QScriptValue &value);
+
+ void toRegExp_initData();
+ void toRegExp_makeData(const char *);
+ void toRegExp_test(const char *, const QScriptValue &value);
+
+ void toString_initData();
+ void toString_makeData(const char *);
+ void toString_test(const char *, const QScriptValue &value);
+
+ void toUInt16_initData();
+ void toUInt16_makeData(const char *);
+ void toUInt16_test(const char *, const QScriptValue &value);
+
+ void toUInt32_initData();
+ void toUInt32_makeData(const char *);
+ void toUInt32_test(const char *, const QScriptValue &value);
+
+ void toVariant_initData();
+ void toVariant_makeData(const char *);
+ void toVariant_test(const char *, const QScriptValue &value);
+
+ void equals_initData();
+ void equals_makeData(const char *);
+ void equals_test(const char *, const QScriptValue &value);
+
+ void strictlyEquals_initData();
+ void strictlyEquals_makeData(const char *);
+ void strictlyEquals_test(const char *, const QScriptValue &value);
+
+ void lessThan_initData();
+ void lessThan_makeData(const char *);
+ void lessThan_test(const char *, const QScriptValue &value);
+
+ void instanceOf_initData();
+ void instanceOf_makeData(const char *);
+ void instanceOf_test(const char *, const QScriptValue &value);
+
+ void assignAndCopyConstruct_initData();
+ void assignAndCopyConstruct_makeData(const char *);
+ void assignAndCopyConstruct_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castQString_initData();
+ void qscriptvalue_castQString_makeData(const char *);
+ void qscriptvalue_castQString_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castqsreal_initData();
+ void qscriptvalue_castqsreal_makeData(const char *);
+ void qscriptvalue_castqsreal_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castbool_initData();
+ void qscriptvalue_castbool_makeData(const char *);
+ void qscriptvalue_castbool_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castqint32_initData();
+ void qscriptvalue_castqint32_makeData(const char *);
+ void qscriptvalue_castqint32_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castquint32_initData();
+ void qscriptvalue_castquint32_makeData(const char *);
+ void qscriptvalue_castquint32_test(const char *, const QScriptValue &value);
+
+ void qscriptvalue_castquint16_initData();
+ void qscriptvalue_castquint16_makeData(const char *);
+ void qscriptvalue_castquint16_test(const char *, const QScriptValue &value);
+
+private:
+ QScriptEngine *engine;
+ QHash<QString, QScriptValue> m_values;
+ QString m_currentExpression;
+};
+
+#define DEFINE_TEST_FUNCTION(name) \
+void tst_QScriptValue::name##_data() { dataHelper(&tst_QScriptValue::name##_initData, &tst_QScriptValue::name##_makeData); } \
+void tst_QScriptValue::name() { testHelper(&tst_QScriptValue::name##_test); }
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,6369 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "tst_qscriptvalue.h"
+
+#define DEFINE_TEST_VALUE(expr) m_values.insert(QString::fromLatin1(#expr), expr)
+
+void tst_QScriptValue::initScriptValues()
+{
+ m_values.clear();
+ if (engine)
+ delete engine;
+ engine = new QScriptEngine;
+ DEFINE_TEST_VALUE(QScriptValue());
+ DEFINE_TEST_VALUE(QScriptValue(QScriptValue::UndefinedValue));
+ DEFINE_TEST_VALUE(QScriptValue(QScriptValue::NullValue));
+ DEFINE_TEST_VALUE(QScriptValue(true));
+ DEFINE_TEST_VALUE(QScriptValue(false));
+ DEFINE_TEST_VALUE(QScriptValue(int(122)));
+ DEFINE_TEST_VALUE(QScriptValue(uint(124)));
+ DEFINE_TEST_VALUE(QScriptValue(0));
+ DEFINE_TEST_VALUE(QScriptValue(0.0));
+ DEFINE_TEST_VALUE(QScriptValue(123.0));
+ DEFINE_TEST_VALUE(QScriptValue(6.37e-8));
+ DEFINE_TEST_VALUE(QScriptValue(-6.37e-8));
+ DEFINE_TEST_VALUE(QScriptValue(0x43211234));
+ DEFINE_TEST_VALUE(QScriptValue(0x10000));
+ DEFINE_TEST_VALUE(QScriptValue(0x10001));
+ DEFINE_TEST_VALUE(QScriptValue(qSNaN()));
+ DEFINE_TEST_VALUE(QScriptValue(qQNaN()));
+ DEFINE_TEST_VALUE(QScriptValue(qInf()));
+ DEFINE_TEST_VALUE(QScriptValue(-qInf()));
+ DEFINE_TEST_VALUE(QScriptValue("NaN"));
+ DEFINE_TEST_VALUE(QScriptValue("Infinity"));
+ DEFINE_TEST_VALUE(QScriptValue("-Infinity"));
+ DEFINE_TEST_VALUE(QScriptValue("ciao"));
+ DEFINE_TEST_VALUE(QScriptValue(QString::fromLatin1("ciao")));
+ DEFINE_TEST_VALUE(QScriptValue(QString("")));
+ DEFINE_TEST_VALUE(QScriptValue(QString()));
+ DEFINE_TEST_VALUE(QScriptValue(QString("0")));
+ DEFINE_TEST_VALUE(QScriptValue(QString("123")));
+ DEFINE_TEST_VALUE(QScriptValue(QString("12.4")));
+ DEFINE_TEST_VALUE(QScriptValue(0, QScriptValue::UndefinedValue));
+ DEFINE_TEST_VALUE(QScriptValue(0, QScriptValue::NullValue));
+ DEFINE_TEST_VALUE(QScriptValue(0, true));
+ DEFINE_TEST_VALUE(QScriptValue(0, false));
+ DEFINE_TEST_VALUE(QScriptValue(0, int(122)));
+ DEFINE_TEST_VALUE(QScriptValue(0, uint(124)));
+ DEFINE_TEST_VALUE(QScriptValue(0, 0));
+ DEFINE_TEST_VALUE(QScriptValue(0, 0.0));
+ DEFINE_TEST_VALUE(QScriptValue(0, 123.0));
+ DEFINE_TEST_VALUE(QScriptValue(0, 6.37e-8));
+ DEFINE_TEST_VALUE(QScriptValue(0, -6.37e-8));
+ DEFINE_TEST_VALUE(QScriptValue(0, 0x43211234));
+ DEFINE_TEST_VALUE(QScriptValue(0, 0x10000));
+ DEFINE_TEST_VALUE(QScriptValue(0, 0x10001));
+ DEFINE_TEST_VALUE(QScriptValue(0, qSNaN()));
+ DEFINE_TEST_VALUE(QScriptValue(0, qQNaN()));
+ DEFINE_TEST_VALUE(QScriptValue(0, qInf()));
+ DEFINE_TEST_VALUE(QScriptValue(0, -qInf()));
+ DEFINE_TEST_VALUE(QScriptValue(0, "NaN"));
+ DEFINE_TEST_VALUE(QScriptValue(0, "Infinity"));
+ DEFINE_TEST_VALUE(QScriptValue(0, "-Infinity"));
+ DEFINE_TEST_VALUE(QScriptValue(0, "ciao"));
+ DEFINE_TEST_VALUE(QScriptValue(0, QString::fromLatin1("ciao")));
+ DEFINE_TEST_VALUE(QScriptValue(0, QString("")));
+ DEFINE_TEST_VALUE(QScriptValue(0, QString()));
+ DEFINE_TEST_VALUE(QScriptValue(0, QString("0")));
+ DEFINE_TEST_VALUE(QScriptValue(0, QString("123")));
+ DEFINE_TEST_VALUE(QScriptValue(0, QString("12.3")));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QScriptValue::UndefinedValue));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QScriptValue::NullValue));
+ DEFINE_TEST_VALUE(QScriptValue(engine, true));
+ DEFINE_TEST_VALUE(QScriptValue(engine, false));
+ DEFINE_TEST_VALUE(QScriptValue(engine, int(122)));
+ DEFINE_TEST_VALUE(QScriptValue(engine, uint(124)));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 0));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 0.0));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 123.0));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 6.37e-8));
+ DEFINE_TEST_VALUE(QScriptValue(engine, -6.37e-8));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 0x43211234));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 0x10000));
+ DEFINE_TEST_VALUE(QScriptValue(engine, 0x10001));
+ DEFINE_TEST_VALUE(QScriptValue(engine, qSNaN()));
+ DEFINE_TEST_VALUE(QScriptValue(engine, qQNaN()));
+ DEFINE_TEST_VALUE(QScriptValue(engine, qInf()));
+ DEFINE_TEST_VALUE(QScriptValue(engine, -qInf()));
+ DEFINE_TEST_VALUE(QScriptValue(engine, "NaN"));
+ DEFINE_TEST_VALUE(QScriptValue(engine, "Infinity"));
+ DEFINE_TEST_VALUE(QScriptValue(engine, "-Infinity"));
+ DEFINE_TEST_VALUE(QScriptValue(engine, "ciao"));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QString::fromLatin1("ciao")));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QString("")));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QString()));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QString("0")));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QString("123")));
+ DEFINE_TEST_VALUE(QScriptValue(engine, QString("1.23")));
+ DEFINE_TEST_VALUE(engine->evaluate("[]"));
+ DEFINE_TEST_VALUE(engine->evaluate("{}"));
+ DEFINE_TEST_VALUE(engine->evaluate("Object.prototype"));
+ DEFINE_TEST_VALUE(engine->evaluate("Date.prototype"));
+ DEFINE_TEST_VALUE(engine->evaluate("Array.prototype"));
+ DEFINE_TEST_VALUE(engine->evaluate("Function.prototype"));
+ DEFINE_TEST_VALUE(engine->evaluate("Error.prototype"));
+ DEFINE_TEST_VALUE(engine->evaluate("Object"));
+ DEFINE_TEST_VALUE(engine->evaluate("Array"));
+ DEFINE_TEST_VALUE(engine->evaluate("Number"));
+ DEFINE_TEST_VALUE(engine->evaluate("Function"));
+ DEFINE_TEST_VALUE(engine->evaluate("(function() { return 1; })"));
+ DEFINE_TEST_VALUE(engine->evaluate("(function() { return 'ciao'; })"));
+ DEFINE_TEST_VALUE(engine->evaluate("(function() { throw new Error('foo'); })"));
+ DEFINE_TEST_VALUE(engine->evaluate("/foo/"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Object()"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Array()"));
+ DEFINE_TEST_VALUE(engine->evaluate("new Error()"));
+}
+
+
+void tst_QScriptValue::isValid_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isValid_makeData(const char* expr)
+{
+ static QSet<QString> isValid;
+ if (isValid.isEmpty()) {
+ isValid << "QScriptValue(QScriptValue::UndefinedValue)"
+ << "QScriptValue(QScriptValue::NullValue)"
+ << "QScriptValue(true)"
+ << "QScriptValue(false)"
+ << "QScriptValue(int(122))"
+ << "QScriptValue(uint(124))"
+ << "QScriptValue(0)"
+ << "QScriptValue(0.0)"
+ << "QScriptValue(123.0)"
+ << "QScriptValue(6.37e-8)"
+ << "QScriptValue(-6.37e-8)"
+ << "QScriptValue(0x43211234)"
+ << "QScriptValue(0x10000)"
+ << "QScriptValue(0x10001)"
+ << "QScriptValue(qSNaN())"
+ << "QScriptValue(qQNaN())"
+ << "QScriptValue(qInf())"
+ << "QScriptValue(-qInf())"
+ << "QScriptValue(\"NaN\")"
+ << "QScriptValue(\"Infinity\")"
+ << "QScriptValue(\"-Infinity\")"
+ << "QScriptValue(\"ciao\")"
+ << "QScriptValue(QString::fromLatin1(\"ciao\"))"
+ << "QScriptValue(QString(\"\"))"
+ << "QScriptValue(QString())"
+ << "QScriptValue(QString(\"0\"))"
+ << "QScriptValue(QString(\"123\"))"
+ << "QScriptValue(QString(\"12.4\"))"
+ << "QScriptValue(0, QScriptValue::UndefinedValue)"
+ << "QScriptValue(0, QScriptValue::NullValue)"
+ << "QScriptValue(0, true)"
+ << "QScriptValue(0, false)"
+ << "QScriptValue(0, int(122))"
+ << "QScriptValue(0, uint(124))"
+ << "QScriptValue(0, 0)"
+ << "QScriptValue(0, 0.0)"
+ << "QScriptValue(0, 123.0)"
+ << "QScriptValue(0, 6.37e-8)"
+ << "QScriptValue(0, -6.37e-8)"
+ << "QScriptValue(0, 0x43211234)"
+ << "QScriptValue(0, 0x10000)"
+ << "QScriptValue(0, 0x10001)"
+ << "QScriptValue(0, qSNaN())"
+ << "QScriptValue(0, qQNaN())"
+ << "QScriptValue(0, qInf())"
+ << "QScriptValue(0, -qInf())"
+ << "QScriptValue(0, \"NaN\")"
+ << "QScriptValue(0, \"Infinity\")"
+ << "QScriptValue(0, \"-Infinity\")"
+ << "QScriptValue(0, \"ciao\")"
+ << "QScriptValue(0, QString::fromLatin1(\"ciao\"))"
+ << "QScriptValue(0, QString(\"\"))"
+ << "QScriptValue(0, QString())"
+ << "QScriptValue(0, QString(\"0\"))"
+ << "QScriptValue(0, QString(\"123\"))"
+ << "QScriptValue(0, QString(\"12.3\"))"
+ << "QScriptValue(engine, QScriptValue::UndefinedValue)"
+ << "QScriptValue(engine, QScriptValue::NullValue)"
+ << "QScriptValue(engine, true)"
+ << "QScriptValue(engine, false)"
+ << "QScriptValue(engine, int(122))"
+ << "QScriptValue(engine, uint(124))"
+ << "QScriptValue(engine, 0)"
+ << "QScriptValue(engine, 0.0)"
+ << "QScriptValue(engine, 123.0)"
+ << "QScriptValue(engine, 6.37e-8)"
+ << "QScriptValue(engine, -6.37e-8)"
+ << "QScriptValue(engine, 0x43211234)"
+ << "QScriptValue(engine, 0x10000)"
+ << "QScriptValue(engine, 0x10001)"
+ << "QScriptValue(engine, qSNaN())"
+ << "QScriptValue(engine, qQNaN())"
+ << "QScriptValue(engine, qInf())"
+ << "QScriptValue(engine, -qInf())"
+ << "QScriptValue(engine, \"NaN\")"
+ << "QScriptValue(engine, \"Infinity\")"
+ << "QScriptValue(engine, \"-Infinity\")"
+ << "QScriptValue(engine, \"ciao\")"
+ << "QScriptValue(engine, QString::fromLatin1(\"ciao\"))"
+ << "QScriptValue(engine, QString(\"\"))"
+ << "QScriptValue(engine, QString())"
+ << "QScriptValue(engine, QString(\"0\"))"
+ << "QScriptValue(engine, QString(\"123\"))"
+ << "QScriptValue(engine, QString(\"1.23\"))"
+ << "engine->evaluate(\"[]\")"
+ << "engine->evaluate(\"{}\")"
+ << "engine->evaluate(\"Object.prototype\")"
+ << "engine->evaluate(\"Date.prototype\")"
+ << "engine->evaluate(\"Array.prototype\")"
+ << "engine->evaluate(\"Function.prototype\")"
+ << "engine->evaluate(\"Error.prototype\")"
+ << "engine->evaluate(\"Object\")"
+ << "engine->evaluate(\"Array\")"
+ << "engine->evaluate(\"Number\")"
+ << "engine->evaluate(\"Function\")"
+ << "engine->evaluate(\"(function() { return 1; })\")"
+ << "engine->evaluate(\"(function() { return 'ciao'; })\")"
+ << "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
+ << "engine->evaluate(\"/foo/\")"
+ << "engine->evaluate(\"new Object()\")"
+ << "engine->evaluate(\"new Array()\")"
+ << "engine->evaluate(\"new Error()\")"
+ ;
+ }
+ newRow(expr) << isValid.contains(expr);
+}
+
+void tst_QScriptValue::isValid_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isValid(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isValid)
+
+
+void tst_QScriptValue::isBool_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isBool_makeData(const char* expr)
+{
+ static QSet<QString> isBool;
+ if (isBool.isEmpty()) {
+ isBool << "QScriptValue(true)"
+ << "QScriptValue(false)"
+ << "QScriptValue(0, true)"
+ << "QScriptValue(0, false)"
+ << "QScriptValue(engine, true)"
+ << "QScriptValue(engine, false)"
+ ;
+ }
+ newRow(expr) << isBool.contains(expr);
+}
+
+void tst_QScriptValue::isBool_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isBool(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isBool)
+
+
+void tst_QScriptValue::isBoolean_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isBoolean_makeData(const char* expr)
+{
+ static QSet<QString> isBoolean;
+ if (isBoolean.isEmpty()) {
+ isBoolean << "QScriptValue(true)"
+ << "QScriptValue(false)"
+ << "QScriptValue(0, true)"
+ << "QScriptValue(0, false)"
+ << "QScriptValue(engine, true)"
+ << "QScriptValue(engine, false)"
+ ;
+ }
+ newRow(expr) << isBoolean.contains(expr);
+}
+
+void tst_QScriptValue::isBoolean_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isBoolean(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isBoolean)
+
+
+void tst_QScriptValue::isNumber_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isNumber_makeData(const char* expr)
+{
+ static QSet<QString> isNumber;
+ if (isNumber.isEmpty()) {
+ isNumber << "QScriptValue(int(122))"
+ << "QScriptValue(uint(124))"
+ << "QScriptValue(0)"
+ << "QScriptValue(0.0)"
+ << "QScriptValue(123.0)"
+ << "QScriptValue(6.37e-8)"
+ << "QScriptValue(-6.37e-8)"
+ << "QScriptValue(0x43211234)"
+ << "QScriptValue(0x10000)"
+ << "QScriptValue(0x10001)"
+ << "QScriptValue(qSNaN())"
+ << "QScriptValue(qQNaN())"
+ << "QScriptValue(qInf())"
+ << "QScriptValue(-qInf())"
+ << "QScriptValue(0, int(122))"
+ << "QScriptValue(0, uint(124))"
+ << "QScriptValue(0, 0)"
+ << "QScriptValue(0, 0.0)"
+ << "QScriptValue(0, 123.0)"
+ << "QScriptValue(0, 6.37e-8)"
+ << "QScriptValue(0, -6.37e-8)"
+ << "QScriptValue(0, 0x43211234)"
+ << "QScriptValue(0, 0x10000)"
+ << "QScriptValue(0, 0x10001)"
+ << "QScriptValue(0, qSNaN())"
+ << "QScriptValue(0, qQNaN())"
+ << "QScriptValue(0, qInf())"
+ << "QScriptValue(0, -qInf())"
+ << "QScriptValue(engine, int(122))"
+ << "QScriptValue(engine, uint(124))"
+ << "QScriptValue(engine, 0)"
+ << "QScriptValue(engine, 0.0)"
+ << "QScriptValue(engine, 123.0)"
+ << "QScriptValue(engine, 6.37e-8)"
+ << "QScriptValue(engine, -6.37e-8)"
+ << "QScriptValue(engine, 0x43211234)"
+ << "QScriptValue(engine, 0x10000)"
+ << "QScriptValue(engine, 0x10001)"
+ << "QScriptValue(engine, qSNaN())"
+ << "QScriptValue(engine, qQNaN())"
+ << "QScriptValue(engine, qInf())"
+ << "QScriptValue(engine, -qInf())"
+ ;
+ }
+ newRow(expr) << isNumber.contains(expr);
+}
+
+void tst_QScriptValue::isNumber_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isNumber(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isNumber)
+
+
+void tst_QScriptValue::isFunction_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isFunction_makeData(const char* expr)
+{
+ static QSet<QString> isFunction;
+ if (isFunction.isEmpty()) {
+ isFunction << "engine->evaluate(\"Function.prototype\")"
+ << "engine->evaluate(\"Object\")"
+ << "engine->evaluate(\"Array\")"
+ << "engine->evaluate(\"Number\")"
+ << "engine->evaluate(\"Function\")"
+ << "engine->evaluate(\"(function() { return 1; })\")"
+ << "engine->evaluate(\"(function() { return 'ciao'; })\")"
+ << "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
+ << "engine->evaluate(\"/foo/\")"
+ ;
+ }
+ newRow(expr) << isFunction.contains(expr);
+}
+
+void tst_QScriptValue::isFunction_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isFunction(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isFunction)
+
+
+void tst_QScriptValue::isNull_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isNull_makeData(const char* expr)
+{
+ static QSet<QString> isNull;
+ if (isNull.isEmpty()) {
+ isNull << "QScriptValue(QScriptValue::NullValue)"
+ << "QScriptValue(0, QScriptValue::NullValue)"
+ << "QScriptValue(engine, QScriptValue::NullValue)"
+ ;
+ }
+ newRow(expr) << isNull.contains(expr);
+}
+
+void tst_QScriptValue::isNull_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isNull(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isNull)
+
+
+void tst_QScriptValue::isString_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isString_makeData(const char* expr)
+{
+ static QSet<QString> isString;
+ if (isString.isEmpty()) {
+ isString << "QScriptValue(\"NaN\")"
+ << "QScriptValue(\"Infinity\")"
+ << "QScriptValue(\"-Infinity\")"
+ << "QScriptValue(\"ciao\")"
+ << "QScriptValue(QString::fromLatin1(\"ciao\"))"
+ << "QScriptValue(QString(\"\"))"
+ << "QScriptValue(QString())"
+ << "QScriptValue(QString(\"0\"))"
+ << "QScriptValue(QString(\"123\"))"
+ << "QScriptValue(QString(\"12.4\"))"
+ << "QScriptValue(0, \"NaN\")"
+ << "QScriptValue(0, \"Infinity\")"
+ << "QScriptValue(0, \"-Infinity\")"
+ << "QScriptValue(0, \"ciao\")"
+ << "QScriptValue(0, QString::fromLatin1(\"ciao\"))"
+ << "QScriptValue(0, QString(\"\"))"
+ << "QScriptValue(0, QString())"
+ << "QScriptValue(0, QString(\"0\"))"
+ << "QScriptValue(0, QString(\"123\"))"
+ << "QScriptValue(0, QString(\"12.3\"))"
+ << "QScriptValue(engine, \"NaN\")"
+ << "QScriptValue(engine, \"Infinity\")"
+ << "QScriptValue(engine, \"-Infinity\")"
+ << "QScriptValue(engine, \"ciao\")"
+ << "QScriptValue(engine, QString::fromLatin1(\"ciao\"))"
+ << "QScriptValue(engine, QString(\"\"))"
+ << "QScriptValue(engine, QString())"
+ << "QScriptValue(engine, QString(\"0\"))"
+ << "QScriptValue(engine, QString(\"123\"))"
+ << "QScriptValue(engine, QString(\"1.23\"))"
+ ;
+ }
+ newRow(expr) << isString.contains(expr);
+}
+
+void tst_QScriptValue::isString_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isString(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isString)
+
+
+void tst_QScriptValue::isUndefined_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isUndefined_makeData(const char* expr)
+{
+ static QSet<QString> isUndefined;
+ if (isUndefined.isEmpty()) {
+ isUndefined << "QScriptValue(QScriptValue::UndefinedValue)"
+ << "QScriptValue(0, QScriptValue::UndefinedValue)"
+ << "QScriptValue(engine, QScriptValue::UndefinedValue)"
+ << "engine->evaluate(\"{}\")"
+ ;
+ }
+ newRow(expr) << isUndefined.contains(expr);
+}
+
+void tst_QScriptValue::isUndefined_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isUndefined(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isUndefined)
+
+
+
+
+
+void tst_QScriptValue::isObject_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isObject_makeData(const char* expr)
+{
+ static QSet<QString> isObject;
+ if (isObject.isEmpty()) {
+ isObject << "engine->evaluate(\"[]\")"
+ << "engine->evaluate(\"Object.prototype\")"
+ << "engine->evaluate(\"Date.prototype\")"
+ << "engine->evaluate(\"Array.prototype\")"
+ << "engine->evaluate(\"Function.prototype\")"
+ << "engine->evaluate(\"Error.prototype\")"
+ << "engine->evaluate(\"Object\")"
+ << "engine->evaluate(\"Array\")"
+ << "engine->evaluate(\"Number\")"
+ << "engine->evaluate(\"Function\")"
+ << "engine->evaluate(\"(function() { return 1; })\")"
+ << "engine->evaluate(\"(function() { return 'ciao'; })\")"
+ << "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
+ << "engine->evaluate(\"/foo/\")"
+ << "engine->evaluate(\"new Object()\")"
+ << "engine->evaluate(\"new Array()\")"
+ << "engine->evaluate(\"new Error()\")"
+ ;
+ }
+ newRow(expr) << isObject.contains(expr);
+}
+
+void tst_QScriptValue::isObject_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isObject(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isObject)
+
+
+void tst_QScriptValue::isDate_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isDate_makeData(const char* expr)
+{
+ static QSet<QString> isDate;
+ if (isDate.isEmpty()) {
+ isDate << "engine->evaluate(\"Date.prototype\")"
+ ;
+ }
+ newRow(expr) << isDate.contains(expr);
+}
+
+void tst_QScriptValue::isDate_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isDate(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isDate)
+
+
+void tst_QScriptValue::isRegExp_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isRegExp_makeData(const char* expr)
+{
+ static QSet<QString> isRegExp;
+ if (isRegExp.isEmpty()) {
+ isRegExp << "engine->evaluate(\"/foo/\")"
+ ;
+ }
+ newRow(expr) << isRegExp.contains(expr);
+}
+
+void tst_QScriptValue::isRegExp_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isRegExp(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isRegExp)
+
+
+void tst_QScriptValue::isArray_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isArray_makeData(const char* expr)
+{
+ static QSet<QString> isArray;
+ if (isArray.isEmpty()) {
+ isArray << "engine->evaluate(\"[]\")"
+ << "engine->evaluate(\"Array.prototype\")"
+ << "engine->evaluate(\"new Array()\")"
+ ;
+ }
+ newRow(expr) << isArray.contains(expr);
+}
+
+void tst_QScriptValue::isArray_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isArray(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isArray)
+
+
+void tst_QScriptValue::isError_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isError_makeData(const char* expr)
+{
+ static QSet<QString> isError;
+ if (isError.isEmpty()) {
+ isError << "engine->evaluate(\"Error.prototype\")"
+ << "engine->evaluate(\"new Error()\")"
+ ;
+ }
+ newRow(expr) << isError.contains(expr);
+}
+
+void tst_QScriptValue::isError_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isError(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isError)
+
+
+
+void tst_QScriptValue::toString_initData()
+{
+ QTest::addColumn<QString>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::toString_makeData(const char* expr)
+{
+ static QHash<QString, QString> toString;
+ if (toString.isEmpty()) {
+ toString.insert("QScriptValue()", "");
+ toString.insert("QScriptValue(QScriptValue::UndefinedValue)", "undefined");
+ toString.insert("QScriptValue(QScriptValue::NullValue)", "null");
+ toString.insert("QScriptValue(true)", "true");
+ toString.insert("QScriptValue(false)", "false");
+ toString.insert("QScriptValue(int(122))", "122");
+ toString.insert("QScriptValue(uint(124))", "124");
+ toString.insert("QScriptValue(0)", "0");
+ toString.insert("QScriptValue(0.0)", "0");
+ toString.insert("QScriptValue(123.0)", "123");
+ toString.insert("QScriptValue(6.37e-8)", "6.37e-8");
+ toString.insert("QScriptValue(-6.37e-8)", "-6.37e-8");
+ toString.insert("QScriptValue(0x43211234)", "1126240820");
+ toString.insert("QScriptValue(0x10000)", "65536");
+ toString.insert("QScriptValue(0x10001)", "65537");
+ toString.insert("QScriptValue(qSNaN())", "NaN");
+ toString.insert("QScriptValue(qQNaN())", "NaN");
+ toString.insert("QScriptValue(qInf())", "Infinity");
+ toString.insert("QScriptValue(-qInf())", "-Infinity");
+ toString.insert("QScriptValue(\"NaN\")", "NaN");
+ toString.insert("QScriptValue(\"Infinity\")", "Infinity");
+ toString.insert("QScriptValue(\"-Infinity\")", "-Infinity");
+ toString.insert("QScriptValue(\"ciao\")", "ciao");
+ toString.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", "ciao");
+ toString.insert("QScriptValue(QString(\"\"))", "");
+ toString.insert("QScriptValue(QString())", "");
+ toString.insert("QScriptValue(QString(\"0\"))", "0");
+ toString.insert("QScriptValue(QString(\"123\"))", "123");
+ toString.insert("QScriptValue(QString(\"12.4\"))", "12.4");
+ toString.insert("QScriptValue(0, QScriptValue::UndefinedValue)", "undefined");
+ toString.insert("QScriptValue(0, QScriptValue::NullValue)", "null");
+ toString.insert("QScriptValue(0, true)", "true");
+ toString.insert("QScriptValue(0, false)", "false");
+ toString.insert("QScriptValue(0, int(122))", "122");
+ toString.insert("QScriptValue(0, uint(124))", "124");
+ toString.insert("QScriptValue(0, 0)", "0");
+ toString.insert("QScriptValue(0, 0.0)", "0");
+ toString.insert("QScriptValue(0, 123.0)", "123");
+ toString.insert("QScriptValue(0, 6.37e-8)", "6.37e-8");
+ toString.insert("QScriptValue(0, -6.37e-8)", "-6.37e-8");
+ toString.insert("QScriptValue(0, 0x43211234)", "1126240820");
+ toString.insert("QScriptValue(0, 0x10000)", "65536");
+ toString.insert("QScriptValue(0, 0x10001)", "65537");
+ toString.insert("QScriptValue(0, qSNaN())", "NaN");
+ toString.insert("QScriptValue(0, qQNaN())", "NaN");
+ toString.insert("QScriptValue(0, qInf())", "Infinity");
+ toString.insert("QScriptValue(0, -qInf())", "-Infinity");
+ toString.insert("QScriptValue(0, \"NaN\")", "NaN");
+ toString.insert("QScriptValue(0, \"Infinity\")", "Infinity");
+ toString.insert("QScriptValue(0, \"-Infinity\")", "-Infinity");
+ toString.insert("QScriptValue(0, \"ciao\")", "ciao");
+ toString.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", "ciao");
+ toString.insert("QScriptValue(0, QString(\"\"))", "");
+ toString.insert("QScriptValue(0, QString())", "");
+ toString.insert("QScriptValue(0, QString(\"0\"))", "0");
+ toString.insert("QScriptValue(0, QString(\"123\"))", "123");
+ toString.insert("QScriptValue(0, QString(\"12.3\"))", "12.3");
+ toString.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", "undefined");
+ toString.insert("QScriptValue(engine, QScriptValue::NullValue)", "null");
+ toString.insert("QScriptValue(engine, true)", "true");
+ toString.insert("QScriptValue(engine, false)", "false");
+ toString.insert("QScriptValue(engine, int(122))", "122");
+ toString.insert("QScriptValue(engine, uint(124))", "124");
+ toString.insert("QScriptValue(engine, 0)", "0");
+ toString.insert("QScriptValue(engine, 0.0)", "0");
+ toString.insert("QScriptValue(engine, 123.0)", "123");
+ toString.insert("QScriptValue(engine, 6.37e-8)", "6.37e-8");
+ toString.insert("QScriptValue(engine, -6.37e-8)", "-6.37e-8");
+ toString.insert("QScriptValue(engine, 0x43211234)", "1126240820");
+ toString.insert("QScriptValue(engine, 0x10000)", "65536");
+ toString.insert("QScriptValue(engine, 0x10001)", "65537");
+ toString.insert("QScriptValue(engine, qSNaN())", "NaN");
+ toString.insert("QScriptValue(engine, qQNaN())", "NaN");
+ toString.insert("QScriptValue(engine, qInf())", "Infinity");
+ toString.insert("QScriptValue(engine, -qInf())", "-Infinity");
+ toString.insert("QScriptValue(engine, \"NaN\")", "NaN");
+ toString.insert("QScriptValue(engine, \"Infinity\")", "Infinity");
+ toString.insert("QScriptValue(engine, \"-Infinity\")", "-Infinity");
+ toString.insert("QScriptValue(engine, \"ciao\")", "ciao");
+ toString.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", "ciao");
+ toString.insert("QScriptValue(engine, QString(\"\"))", "");
+ toString.insert("QScriptValue(engine, QString())", "");
+ toString.insert("QScriptValue(engine, QString(\"0\"))", "0");
+ toString.insert("QScriptValue(engine, QString(\"123\"))", "123");
+ toString.insert("QScriptValue(engine, QString(\"1.23\"))", "1.23");
+ toString.insert("engine->evaluate(\"[]\")", "");
+ toString.insert("engine->evaluate(\"{}\")", "undefined");
+ toString.insert("engine->evaluate(\"Object.prototype\")", "[object Object]");
+ toString.insert("engine->evaluate(\"Date.prototype\")", "Invalid Date");
+ toString.insert("engine->evaluate(\"Array.prototype\")", "");
+ toString.insert("engine->evaluate(\"Function.prototype\")", "function () {\n [native code]\n}");
+ toString.insert("engine->evaluate(\"Error.prototype\")", "Error: Unknown error");
+ toString.insert("engine->evaluate(\"Object\")", "function Object() {\n [native code]\n}");
+ toString.insert("engine->evaluate(\"Array\")", "function Array() {\n [native code]\n}");
+ toString.insert("engine->evaluate(\"Number\")", "function Number() {\n [native code]\n}");
+ toString.insert("engine->evaluate(\"Function\")", "function Function() {\n [native code]\n}");
+ toString.insert("engine->evaluate(\"(function() { return 1; })\")", "function () { return 1; }");
+ toString.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", "function () { return 'ciao'; }");
+ toString.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", "function () { throw new Error('foo'); }");
+ toString.insert("engine->evaluate(\"/foo/\")", "/foo/");
+ toString.insert("engine->evaluate(\"new Object()\")", "[object Object]");
+ toString.insert("engine->evaluate(\"new Array()\")", "");
+ toString.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
+ }
+ newRow(expr) << toString.value(expr);
+}
+
+void tst_QScriptValue::toString_test(const char*, const QScriptValue& value)
+{
+ QFETCH(QString, expected);
+ QCOMPARE(value.toString(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toString)
+
+
+void tst_QScriptValue::toNumber_initData()
+{
+ QTest::addColumn<qsreal>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::toNumber_makeData(const char* expr)
+{
+ static QHash<QString, qsreal> toNumber;
+ if (toNumber.isEmpty()) {
+ toNumber.insert("QScriptValue()", 0);
+ toNumber.insert("QScriptValue(QScriptValue::UndefinedValue)", qQNaN());
+ toNumber.insert("QScriptValue(QScriptValue::NullValue)", 0);
+ toNumber.insert("QScriptValue(true)", 1);
+ toNumber.insert("QScriptValue(false)", 0);
+ toNumber.insert("QScriptValue(int(122))", 122);
+ toNumber.insert("QScriptValue(uint(124))", 124);
+ toNumber.insert("QScriptValue(0)", 0);
+ toNumber.insert("QScriptValue(0.0)", 0);
+ toNumber.insert("QScriptValue(123.0)", 123);
+ toNumber.insert("QScriptValue(6.37e-8)", 6.369999999999999e-08);
+ toNumber.insert("QScriptValue(-6.37e-8)", -6.369999999999999e-08);
+ toNumber.insert("QScriptValue(0x43211234)", 1126240820);
+ toNumber.insert("QScriptValue(0x10000)", 65536);
+ toNumber.insert("QScriptValue(0x10001)", 65537);
+ toNumber.insert("QScriptValue(qSNaN())", qQNaN());
+ toNumber.insert("QScriptValue(qQNaN())", qQNaN());
+ toNumber.insert("QScriptValue(qInf())", qInf());
+ toNumber.insert("QScriptValue(-qInf())", qInf());
+ toNumber.insert("QScriptValue(\"NaN\")", qQNaN());
+ toNumber.insert("QScriptValue(\"Infinity\")", qInf());
+ toNumber.insert("QScriptValue(\"-Infinity\")", qInf());
+ toNumber.insert("QScriptValue(\"ciao\")", qQNaN());
+ toNumber.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", qQNaN());
+ toNumber.insert("QScriptValue(QString(\"\"))", 0);
+ toNumber.insert("QScriptValue(QString())", 0);
+ toNumber.insert("QScriptValue(QString(\"0\"))", 0);
+ toNumber.insert("QScriptValue(QString(\"123\"))", 123);
+ toNumber.insert("QScriptValue(QString(\"12.4\"))", 12.4);
+ toNumber.insert("QScriptValue(0, QScriptValue::UndefinedValue)", qQNaN());
+ toNumber.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+ toNumber.insert("QScriptValue(0, true)", 1);
+ toNumber.insert("QScriptValue(0, false)", 0);
+ toNumber.insert("QScriptValue(0, int(122))", 122);
+ toNumber.insert("QScriptValue(0, uint(124))", 124);
+ toNumber.insert("QScriptValue(0, 0)", 0);
+ toNumber.insert("QScriptValue(0, 0.0)", 0);
+ toNumber.insert("QScriptValue(0, 123.0)", 123);
+ toNumber.insert("QScriptValue(0, 6.37e-8)", 6.369999999999999e-08);
+ toNumber.insert("QScriptValue(0, -6.37e-8)", -6.369999999999999e-08);
+ toNumber.insert("QScriptValue(0, 0x43211234)", 1126240820);
+ toNumber.insert("QScriptValue(0, 0x10000)", 65536);
+ toNumber.insert("QScriptValue(0, 0x10001)", 65537);
+ toNumber.insert("QScriptValue(0, qSNaN())", qQNaN());
+ toNumber.insert("QScriptValue(0, qQNaN())", qQNaN());
+ toNumber.insert("QScriptValue(0, qInf())", qInf());
+ toNumber.insert("QScriptValue(0, -qInf())", qInf());
+ toNumber.insert("QScriptValue(0, \"NaN\")", qQNaN());
+ toNumber.insert("QScriptValue(0, \"Infinity\")", qInf());
+ toNumber.insert("QScriptValue(0, \"-Infinity\")", qInf());
+ toNumber.insert("QScriptValue(0, \"ciao\")", qQNaN());
+ toNumber.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", qQNaN());
+ toNumber.insert("QScriptValue(0, QString(\"\"))", 0);
+ toNumber.insert("QScriptValue(0, QString())", 0);
+ toNumber.insert("QScriptValue(0, QString(\"0\"))", 0);
+ toNumber.insert("QScriptValue(0, QString(\"123\"))", 123);
+ toNumber.insert("QScriptValue(0, QString(\"12.3\"))", 12.3);
+ toNumber.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", qQNaN());
+ toNumber.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+ toNumber.insert("QScriptValue(engine, true)", 1);
+ toNumber.insert("QScriptValue(engine, false)", 0);
+ toNumber.insert("QScriptValue(engine, int(122))", 122);
+ toNumber.insert("QScriptValue(engine, uint(124))", 124);
+ toNumber.insert("QScriptValue(engine, 0)", 0);
+ toNumber.insert("QScriptValue(engine, 0.0)", 0);
+ toNumber.insert("QScriptValue(engine, 123.0)", 123);
+ toNumber.insert("QScriptValue(engine, 6.37e-8)", 6.369999999999999e-08);
+ toNumber.insert("QScriptValue(engine, -6.37e-8)", -6.369999999999999e-08);
+ toNumber.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+ toNumber.insert("QScriptValue(engine, 0x10000)", 65536);
+ toNumber.insert("QScriptValue(engine, 0x10001)", 65537);
+ toNumber.insert("QScriptValue(engine, qSNaN())", qQNaN());
+ toNumber.insert("QScriptValue(engine, qQNaN())", qQNaN());
+ toNumber.insert("QScriptValue(engine, qInf())", qInf());
+ toNumber.insert("QScriptValue(engine, -qInf())", qInf());
+ toNumber.insert("QScriptValue(engine, \"NaN\")", qQNaN());
+ toNumber.insert("QScriptValue(engine, \"Infinity\")", qInf());
+ toNumber.insert("QScriptValue(engine, \"-Infinity\")", qInf());
+ toNumber.insert("QScriptValue(engine, \"ciao\")", qQNaN());
+ toNumber.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", qQNaN());
+ toNumber.insert("QScriptValue(engine, QString(\"\"))", 0);
+ toNumber.insert("QScriptValue(engine, QString())", 0);
+ toNumber.insert("QScriptValue(engine, QString(\"0\"))", 0);
+ toNumber.insert("QScriptValue(engine, QString(\"123\"))", 123);
+ toNumber.insert("QScriptValue(engine, QString(\"1.23\"))", 1.23);
+ toNumber.insert("engine->evaluate(\"[]\")", 0);
+ toNumber.insert("engine->evaluate(\"{}\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Object.prototype\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Date.prototype\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Array.prototype\")", 0);
+ toNumber.insert("engine->evaluate(\"Function.prototype\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Error.prototype\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Object\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Array\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Number\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Function\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"(function() { return 1; })\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"/foo/\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"new Object()\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"new Array()\")", 0);
+ toNumber.insert("engine->evaluate(\"new Error()\")", qQNaN());
+ }
+ newRow(expr) << toNumber.value(expr);
+}
+
+void tst_QScriptValue::toNumber_test(const char*, const QScriptValue& value)
+{
+ QFETCH(qsreal, expected);
+ if (qIsNaN(expected)) {
+ QVERIFY(qIsNaN(value.toNumber()));
+ return;
+ }
+ if (qIsInf(expected)) {
+ QVERIFY(qIsInf(value.toNumber()));
+ return;
+ }
+ QCOMPARE(value.toNumber(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toNumber)
+
+
+void tst_QScriptValue::toBool_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::toBool_makeData(const char* expr)
+{
+ static QHash<QString, bool> toBool;
+ if (toBool.isEmpty()) {
+ toBool.insert("QScriptValue()", false);
+ toBool.insert("QScriptValue(QScriptValue::UndefinedValue)", false);
+ toBool.insert("QScriptValue(QScriptValue::NullValue)", false);
+ toBool.insert("QScriptValue(true)", true);
+ toBool.insert("QScriptValue(false)", false);
+ toBool.insert("QScriptValue(int(122))", true);
+ toBool.insert("QScriptValue(uint(124))", true);
+ toBool.insert("QScriptValue(0)", false);
+ toBool.insert("QScriptValue(0.0)", false);
+ toBool.insert("QScriptValue(123.0)", true);
+ toBool.insert("QScriptValue(6.37e-8)", true);
+ toBool.insert("QScriptValue(-6.37e-8)", true);
+ toBool.insert("QScriptValue(0x43211234)", true);
+ toBool.insert("QScriptValue(0x10000)", true);
+ toBool.insert("QScriptValue(0x10001)", true);
+ toBool.insert("QScriptValue(qSNaN())", false);
+ toBool.insert("QScriptValue(qQNaN())", false);
+ toBool.insert("QScriptValue(qInf())", true);
+ toBool.insert("QScriptValue(-qInf())", true);
+ toBool.insert("QScriptValue(\"NaN\")", true);
+ toBool.insert("QScriptValue(\"Infinity\")", true);
+ toBool.insert("QScriptValue(\"-Infinity\")", true);
+ toBool.insert("QScriptValue(\"ciao\")", true);
+ toBool.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", true);
+ toBool.insert("QScriptValue(QString(\"\"))", false);
+ toBool.insert("QScriptValue(QString())", false);
+ toBool.insert("QScriptValue(QString(\"0\"))", true);
+ toBool.insert("QScriptValue(QString(\"123\"))", true);
+ toBool.insert("QScriptValue(QString(\"12.4\"))", true);
+ toBool.insert("QScriptValue(0, QScriptValue::UndefinedValue)", false);
+ toBool.insert("QScriptValue(0, QScriptValue::NullValue)", false);
+ toBool.insert("QScriptValue(0, true)", true);
+ toBool.insert("QScriptValue(0, false)", false);
+ toBool.insert("QScriptValue(0, int(122))", true);
+ toBool.insert("QScriptValue(0, uint(124))", true);
+ toBool.insert("QScriptValue(0, 0)", false);
+ toBool.insert("QScriptValue(0, 0.0)", false);
+ toBool.insert("QScriptValue(0, 123.0)", true);
+ toBool.insert("QScriptValue(0, 6.37e-8)", true);
+ toBool.insert("QScriptValue(0, -6.37e-8)", true);
+ toBool.insert("QScriptValue(0, 0x43211234)", true);
+ toBool.insert("QScriptValue(0, 0x10000)", true);
+ toBool.insert("QScriptValue(0, 0x10001)", true);
+ toBool.insert("QScriptValue(0, qSNaN())", false);
+ toBool.insert("QScriptValue(0, qQNaN())", false);
+ toBool.insert("QScriptValue(0, qInf())", true);
+ toBool.insert("QScriptValue(0, -qInf())", true);
+ toBool.insert("QScriptValue(0, \"NaN\")", true);
+ toBool.insert("QScriptValue(0, \"Infinity\")", true);
+ toBool.insert("QScriptValue(0, \"-Infinity\")", true);
+ toBool.insert("QScriptValue(0, \"ciao\")", true);
+ toBool.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", true);
+ toBool.insert("QScriptValue(0, QString(\"\"))", false);
+ toBool.insert("QScriptValue(0, QString())", false);
+ toBool.insert("QScriptValue(0, QString(\"0\"))", true);
+ toBool.insert("QScriptValue(0, QString(\"123\"))", true);
+ toBool.insert("QScriptValue(0, QString(\"12.3\"))", true);
+ toBool.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", false);
+ toBool.insert("QScriptValue(engine, QScriptValue::NullValue)", false);
+ toBool.insert("QScriptValue(engine, true)", true);
+ toBool.insert("QScriptValue(engine, false)", false);
+ toBool.insert("QScriptValue(engine, int(122))", true);
+ toBool.insert("QScriptValue(engine, uint(124))", true);
+ toBool.insert("QScriptValue(engine, 0)", false);
+ toBool.insert("QScriptValue(engine, 0.0)", false);
+ toBool.insert("QScriptValue(engine, 123.0)", true);
+ toBool.insert("QScriptValue(engine, 6.37e-8)", true);
+ toBool.insert("QScriptValue(engine, -6.37e-8)", true);
+ toBool.insert("QScriptValue(engine, 0x43211234)", true);
+ toBool.insert("QScriptValue(engine, 0x10000)", true);
+ toBool.insert("QScriptValue(engine, 0x10001)", true);
+ toBool.insert("QScriptValue(engine, qSNaN())", false);
+ toBool.insert("QScriptValue(engine, qQNaN())", false);
+ toBool.insert("QScriptValue(engine, qInf())", true);
+ toBool.insert("QScriptValue(engine, -qInf())", true);
+ toBool.insert("QScriptValue(engine, \"NaN\")", true);
+ toBool.insert("QScriptValue(engine, \"Infinity\")", true);
+ toBool.insert("QScriptValue(engine, \"-Infinity\")", true);
+ toBool.insert("QScriptValue(engine, \"ciao\")", true);
+ toBool.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", true);
+ toBool.insert("QScriptValue(engine, QString(\"\"))", false);
+ toBool.insert("QScriptValue(engine, QString())", false);
+ toBool.insert("QScriptValue(engine, QString(\"0\"))", true);
+ toBool.insert("QScriptValue(engine, QString(\"123\"))", true);
+ toBool.insert("QScriptValue(engine, QString(\"1.23\"))", true);
+ toBool.insert("engine->evaluate(\"[]\")", true);
+ toBool.insert("engine->evaluate(\"{}\")", false);
+ toBool.insert("engine->evaluate(\"Object.prototype\")", true);
+ toBool.insert("engine->evaluate(\"Date.prototype\")", true);
+ toBool.insert("engine->evaluate(\"Array.prototype\")", true);
+ toBool.insert("engine->evaluate(\"Function.prototype\")", true);
+ toBool.insert("engine->evaluate(\"Error.prototype\")", true);
+ toBool.insert("engine->evaluate(\"Object\")", true);
+ toBool.insert("engine->evaluate(\"Array\")", true);
+ toBool.insert("engine->evaluate(\"Number\")", true);
+ toBool.insert("engine->evaluate(\"Function\")", true);
+ toBool.insert("engine->evaluate(\"(function() { return 1; })\")", true);
+ toBool.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", true);
+ toBool.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", true);
+ toBool.insert("engine->evaluate(\"/foo/\")", true);
+ toBool.insert("engine->evaluate(\"new Object()\")", true);
+ toBool.insert("engine->evaluate(\"new Array()\")", true);
+ toBool.insert("engine->evaluate(\"new Error()\")", true);
+ }
+ newRow(expr) << toBool.value(expr);
+}
+
+void tst_QScriptValue::toBool_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.toBool(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toBool)
+
+
+void tst_QScriptValue::toBoolean_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::toBoolean_makeData(const char* expr)
+{
+ static QHash<QString, bool> toBoolean;
+ if (toBoolean.isEmpty()) {
+ toBoolean.insert("QScriptValue()", false);
+ toBoolean.insert("QScriptValue(QScriptValue::UndefinedValue)", false);
+ toBoolean.insert("QScriptValue(QScriptValue::NullValue)", false);
+ toBoolean.insert("QScriptValue(true)", true);
+ toBoolean.insert("QScriptValue(false)", false);
+ toBoolean.insert("QScriptValue(int(122))", true);
+ toBoolean.insert("QScriptValue(uint(124))", true);
+ toBoolean.insert("QScriptValue(0)", false);
+ toBoolean.insert("QScriptValue(0.0)", false);
+ toBoolean.insert("QScriptValue(123.0)", true);
+ toBoolean.insert("QScriptValue(6.37e-8)", true);
+ toBoolean.insert("QScriptValue(-6.37e-8)", true);
+ toBoolean.insert("QScriptValue(0x43211234)", true);
+ toBoolean.insert("QScriptValue(0x10000)", true);
+ toBoolean.insert("QScriptValue(0x10001)", true);
+ toBoolean.insert("QScriptValue(qSNaN())", false);
+ toBoolean.insert("QScriptValue(qQNaN())", false);
+ toBoolean.insert("QScriptValue(qInf())", true);
+ toBoolean.insert("QScriptValue(-qInf())", true);
+ toBoolean.insert("QScriptValue(\"NaN\")", true);
+ toBoolean.insert("QScriptValue(\"Infinity\")", true);
+ toBoolean.insert("QScriptValue(\"-Infinity\")", true);
+ toBoolean.insert("QScriptValue(\"ciao\")", true);
+ toBoolean.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", true);
+ toBoolean.insert("QScriptValue(QString(\"\"))", false);
+ toBoolean.insert("QScriptValue(QString())", false);
+ toBoolean.insert("QScriptValue(QString(\"0\"))", true);
+ toBoolean.insert("QScriptValue(QString(\"123\"))", true);
+ toBoolean.insert("QScriptValue(QString(\"12.4\"))", true);
+ toBoolean.insert("QScriptValue(0, QScriptValue::UndefinedValue)", false);
+ toBoolean.insert("QScriptValue(0, QScriptValue::NullValue)", false);
+ toBoolean.insert("QScriptValue(0, true)", true);
+ toBoolean.insert("QScriptValue(0, false)", false);
+ toBoolean.insert("QScriptValue(0, int(122))", true);
+ toBoolean.insert("QScriptValue(0, uint(124))", true);
+ toBoolean.insert("QScriptValue(0, 0)", false);
+ toBoolean.insert("QScriptValue(0, 0.0)", false);
+ toBoolean.insert("QScriptValue(0, 123.0)", true);
+ toBoolean.insert("QScriptValue(0, 6.37e-8)", true);
+ toBoolean.insert("QScriptValue(0, -6.37e-8)", true);
+ toBoolean.insert("QScriptValue(0, 0x43211234)", true);
+ toBoolean.insert("QScriptValue(0, 0x10000)", true);
+ toBoolean.insert("QScriptValue(0, 0x10001)", true);
+ toBoolean.insert("QScriptValue(0, qSNaN())", false);
+ toBoolean.insert("QScriptValue(0, qQNaN())", false);
+ toBoolean.insert("QScriptValue(0, qInf())", true);
+ toBoolean.insert("QScriptValue(0, -qInf())", true);
+ toBoolean.insert("QScriptValue(0, \"NaN\")", true);
+ toBoolean.insert("QScriptValue(0, \"Infinity\")", true);
+ toBoolean.insert("QScriptValue(0, \"-Infinity\")", true);
+ toBoolean.insert("QScriptValue(0, \"ciao\")", true);
+ toBoolean.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", true);
+ toBoolean.insert("QScriptValue(0, QString(\"\"))", false);
+ toBoolean.insert("QScriptValue(0, QString())", false);
+ toBoolean.insert("QScriptValue(0, QString(\"0\"))", true);
+ toBoolean.insert("QScriptValue(0, QString(\"123\"))", true);
+ toBoolean.insert("QScriptValue(0, QString(\"12.3\"))", true);
+ toBoolean.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", false);
+ toBoolean.insert("QScriptValue(engine, QScriptValue::NullValue)", false);
+ toBoolean.insert("QScriptValue(engine, true)", true);
+ toBoolean.insert("QScriptValue(engine, false)", false);
+ toBoolean.insert("QScriptValue(engine, int(122))", true);
+ toBoolean.insert("QScriptValue(engine, uint(124))", true);
+ toBoolean.insert("QScriptValue(engine, 0)", false);
+ toBoolean.insert("QScriptValue(engine, 0.0)", false);
+ toBoolean.insert("QScriptValue(engine, 123.0)", true);
+ toBoolean.insert("QScriptValue(engine, 6.37e-8)", true);
+ toBoolean.insert("QScriptValue(engine, -6.37e-8)", true);
+ toBoolean.insert("QScriptValue(engine, 0x43211234)", true);
+ toBoolean.insert("QScriptValue(engine, 0x10000)", true);
+ toBoolean.insert("QScriptValue(engine, 0x10001)", true);
+ toBoolean.insert("QScriptValue(engine, qSNaN())", false);
+ toBoolean.insert("QScriptValue(engine, qQNaN())", false);
+ toBoolean.insert("QScriptValue(engine, qInf())", true);
+ toBoolean.insert("QScriptValue(engine, -qInf())", true);
+ toBoolean.insert("QScriptValue(engine, \"NaN\")", true);
+ toBoolean.insert("QScriptValue(engine, \"Infinity\")", true);
+ toBoolean.insert("QScriptValue(engine, \"-Infinity\")", true);
+ toBoolean.insert("QScriptValue(engine, \"ciao\")", true);
+ toBoolean.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", true);
+ toBoolean.insert("QScriptValue(engine, QString(\"\"))", false);
+ toBoolean.insert("QScriptValue(engine, QString())", false);
+ toBoolean.insert("QScriptValue(engine, QString(\"0\"))", true);
+ toBoolean.insert("QScriptValue(engine, QString(\"123\"))", true);
+ toBoolean.insert("QScriptValue(engine, QString(\"1.23\"))", true);
+ toBoolean.insert("engine->evaluate(\"[]\")", true);
+ toBoolean.insert("engine->evaluate(\"{}\")", false);
+ toBoolean.insert("engine->evaluate(\"Object.prototype\")", true);
+ toBoolean.insert("engine->evaluate(\"Date.prototype\")", true);
+ toBoolean.insert("engine->evaluate(\"Array.prototype\")", true);
+ toBoolean.insert("engine->evaluate(\"Function.prototype\")", true);
+ toBoolean.insert("engine->evaluate(\"Error.prototype\")", true);
+ toBoolean.insert("engine->evaluate(\"Object\")", true);
+ toBoolean.insert("engine->evaluate(\"Array\")", true);
+ toBoolean.insert("engine->evaluate(\"Number\")", true);
+ toBoolean.insert("engine->evaluate(\"Function\")", true);
+ toBoolean.insert("engine->evaluate(\"(function() { return 1; })\")", true);
+ toBoolean.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", true);
+ toBoolean.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", true);
+ toBoolean.insert("engine->evaluate(\"/foo/\")", true);
+ toBoolean.insert("engine->evaluate(\"new Object()\")", true);
+ toBoolean.insert("engine->evaluate(\"new Array()\")", true);
+ toBoolean.insert("engine->evaluate(\"new Error()\")", true);
+ }
+ newRow(expr) << toBoolean.value(expr);
+}
+
+void tst_QScriptValue::toBoolean_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.toBoolean(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toBoolean)
+
+
+void tst_QScriptValue::toInteger_initData()
+{
+ QTest::addColumn<qsreal>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::toInteger_makeData(const char* expr)
+{
+ static QHash<QString, qsreal> toInteger;
+ if (toInteger.isEmpty()) {
+ toInteger.insert("QScriptValue()", 0);
+ toInteger.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+ toInteger.insert("QScriptValue(QScriptValue::NullValue)", 0);
+ toInteger.insert("QScriptValue(true)", 1);
+ toInteger.insert("QScriptValue(false)", 0);
+ toInteger.insert("QScriptValue(int(122))", 122);
+ toInteger.insert("QScriptValue(uint(124))", 124);
+ toInteger.insert("QScriptValue(0)", 0);
+ toInteger.insert("QScriptValue(0.0)", 0);
+ toInteger.insert("QScriptValue(123.0)", 123);
+ toInteger.insert("QScriptValue(6.37e-8)", 0);
+ toInteger.insert("QScriptValue(-6.37e-8)", 0);
+ toInteger.insert("QScriptValue(0x43211234)", 1126240820);
+ toInteger.insert("QScriptValue(0x10000)", 65536);
+ toInteger.insert("QScriptValue(0x10001)", 65537);
+ toInteger.insert("QScriptValue(qSNaN())", 0);
+ toInteger.insert("QScriptValue(qQNaN())", 0);
+ toInteger.insert("QScriptValue(qInf())", qInf());
+ toInteger.insert("QScriptValue(-qInf())", qInf());
+ toInteger.insert("QScriptValue(\"NaN\")", 0);
+ toInteger.insert("QScriptValue(\"Infinity\")", qInf());
+ toInteger.insert("QScriptValue(\"-Infinity\")", qInf());
+ toInteger.insert("QScriptValue(\"ciao\")", 0);
+ toInteger.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+ toInteger.insert("QScriptValue(QString(\"\"))", 0);
+ toInteger.insert("QScriptValue(QString())", 0);
+ toInteger.insert("QScriptValue(QString(\"0\"))", 0);
+ toInteger.insert("QScriptValue(QString(\"123\"))", 123);
+ toInteger.insert("QScriptValue(QString(\"12.4\"))", 12);
+ toInteger.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+ toInteger.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+ toInteger.insert("QScriptValue(0, true)", 1);
+ toInteger.insert("QScriptValue(0, false)", 0);
+ toInteger.insert("QScriptValue(0, int(122))", 122);
+ toInteger.insert("QScriptValue(0, uint(124))", 124);
+ toInteger.insert("QScriptValue(0, 0)", 0);
+ toInteger.insert("QScriptValue(0, 0.0)", 0);
+ toInteger.insert("QScriptValue(0, 123.0)", 123);
+ toInteger.insert("QScriptValue(0, 6.37e-8)", 0);
+ toInteger.insert("QScriptValue(0, -6.37e-8)", 0);
+ toInteger.insert("QScriptValue(0, 0x43211234)", 1126240820);
+ toInteger.insert("QScriptValue(0, 0x10000)", 65536);
+ toInteger.insert("QScriptValue(0, 0x10001)", 65537);
+ toInteger.insert("QScriptValue(0, qSNaN())", 0);
+ toInteger.insert("QScriptValue(0, qQNaN())", 0);
+ toInteger.insert("QScriptValue(0, qInf())", qInf());
+ toInteger.insert("QScriptValue(0, -qInf())", qInf());
+ toInteger.insert("QScriptValue(0, \"NaN\")", 0);
+ toInteger.insert("QScriptValue(0, \"Infinity\")", qInf());
+ toInteger.insert("QScriptValue(0, \"-Infinity\")", qInf());
+ toInteger.insert("QScriptValue(0, \"ciao\")", 0);
+ toInteger.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+ toInteger.insert("QScriptValue(0, QString(\"\"))", 0);
+ toInteger.insert("QScriptValue(0, QString())", 0);
+ toInteger.insert("QScriptValue(0, QString(\"0\"))", 0);
+ toInteger.insert("QScriptValue(0, QString(\"123\"))", 123);
+ toInteger.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+ toInteger.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+ toInteger.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+ toInteger.insert("QScriptValue(engine, true)", 1);
+ toInteger.insert("QScriptValue(engine, false)", 0);
+ toInteger.insert("QScriptValue(engine, int(122))", 122);
+ toInteger.insert("QScriptValue(engine, uint(124))", 124);
+ toInteger.insert("QScriptValue(engine, 0)", 0);
+ toInteger.insert("QScriptValue(engine, 0.0)", 0);
+ toInteger.insert("QScriptValue(engine, 123.0)", 123);
+ toInteger.insert("QScriptValue(engine, 6.37e-8)", 0);
+ toInteger.insert("QScriptValue(engine, -6.37e-8)", 0);
+ toInteger.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+ toInteger.insert("QScriptValue(engine, 0x10000)", 65536);
+ toInteger.insert("QScriptValue(engine, 0x10001)", 65537);
+ toInteger.insert("QScriptValue(engine, qSNaN())", 0);
+ toInteger.insert("QScriptValue(engine, qQNaN())", 0);
+ toInteger.insert("QScriptValue(engine, qInf())", qInf());
+ toInteger.insert("QScriptValue(engine, -qInf())", qInf());
+ toInteger.insert("QScriptValue(engine, \"NaN\")", 0);
+ toInteger.insert("QScriptValue(engine, \"Infinity\")", qInf());
+ toInteger.insert("QScriptValue(engine, \"-Infinity\")", qInf());
+ toInteger.insert("QScriptValue(engine, \"ciao\")", 0);
+ toInteger.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+ toInteger.insert("QScriptValue(engine, QString(\"\"))", 0);
+ toInteger.insert("QScriptValue(engine, QString())", 0);
+ toInteger.insert("QScriptValue(engine, QString(\"0\"))", 0);
+ toInteger.insert("QScriptValue(engine, QString(\"123\"))", 123);
+ toInteger.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+ toInteger.insert("engine->evaluate(\"[]\")", 0);
+ toInteger.insert("engine->evaluate(\"{}\")", 0);
+ toInteger.insert("engine->evaluate(\"Object.prototype\")", 0);
+ toInteger.insert("engine->evaluate(\"Date.prototype\")", 0);
+ toInteger.insert("engine->evaluate(\"Array.prototype\")", 0);
+ toInteger.insert("engine->evaluate(\"Function.prototype\")", 0);
+ toInteger.insert("engine->evaluate(\"Error.prototype\")", 0);
+ toInteger.insert("engine->evaluate(\"Object\")", 0);
+ toInteger.insert("engine->evaluate(\"Array\")", 0);
+ toInteger.insert("engine->evaluate(\"Number\")", 0);
+ toInteger.insert("engine->evaluate(\"Function\")", 0);
+ toInteger.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+ toInteger.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+ toInteger.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+ toInteger.insert("engine->evaluate(\"/foo/\")", 0);
+ toInteger.insert("engine->evaluate(\"new Object()\")", 0);
+ toInteger.insert("engine->evaluate(\"new Array()\")", 0);
+ toInteger.insert("engine->evaluate(\"new Error()\")", 0);
+ }
+ newRow(expr) << toInteger.value(expr);
+}
+
+void tst_QScriptValue::toInteger_test(const char*, const QScriptValue& value)
+{
+ QFETCH(qsreal, expected);
+ if (qIsInf(expected)) {
+ QVERIFY(qIsInf(value.toInteger()));
+ return;
+ }
+ QCOMPARE(value.toInteger(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toInteger)
+
+
+void tst_QScriptValue::toInt32_initData()
+{
+ QTest::addColumn<qint32>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::toInt32_makeData(const char* expr)
+{
+ static QHash<QString, qint32> toInt32;
+ if (toInt32.isEmpty()) {
+ toInt32.insert("QScriptValue()", 0);
+ toInt32.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+ toInt32.insert("QScriptValue(QScriptValue::NullValue)", 0);
+ toInt32.insert("QScriptValue(true)", 1);
+ toInt32.insert("QScriptValue(false)", 0);
+ toInt32.insert("QScriptValue(int(122))", 122);
+ toInt32.insert("QScriptValue(uint(124))", 124);
+ toInt32.insert("QScriptValue(0)", 0);
+ toInt32.insert("QScriptValue(0.0)", 0);
+ toInt32.insert("QScriptValue(123.0)", 123);
+ toInt32.insert("QScriptValue(6.37e-8)", 0);
+ toInt32.insert("QScriptValue(-6.37e-8)", 0);
+ toInt32.insert("QScriptValue(0x43211234)", 1126240820);
+ toInt32.insert("QScriptValue(0x10000)", 65536);
+ toInt32.insert("QScriptValue(0x10001)", 65537);
+ toInt32.insert("QScriptValue(qSNaN())", 0);
+ toInt32.insert("QScriptValue(qQNaN())", 0);
+ toInt32.insert("QScriptValue(qInf())", 0);
+ toInt32.insert("QScriptValue(-qInf())", 0);
+ toInt32.insert("QScriptValue(\"NaN\")", 0);
+ toInt32.insert("QScriptValue(\"Infinity\")", 0);
+ toInt32.insert("QScriptValue(\"-Infinity\")", 0);
+ toInt32.insert("QScriptValue(\"ciao\")", 0);
+ toInt32.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+ toInt32.insert("QScriptValue(QString(\"\"))", 0);
+ toInt32.insert("QScriptValue(QString())", 0);
+ toInt32.insert("QScriptValue(QString(\"0\"))", 0);
+ toInt32.insert("QScriptValue(QString(\"123\"))", 123);
+ toInt32.insert("QScriptValue(QString(\"12.4\"))", 12);
+ toInt32.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+ toInt32.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+ toInt32.insert("QScriptValue(0, true)", 1);
+ toInt32.insert("QScriptValue(0, false)", 0);
+ toInt32.insert("QScriptValue(0, int(122))", 122);
+ toInt32.insert("QScriptValue(0, uint(124))", 124);
+ toInt32.insert("QScriptValue(0, 0)", 0);
+ toInt32.insert("QScriptValue(0, 0.0)", 0);
+ toInt32.insert("QScriptValue(0, 123.0)", 123);
+ toInt32.insert("QScriptValue(0, 6.37e-8)", 0);
+ toInt32.insert("QScriptValue(0, -6.37e-8)", 0);
+ toInt32.insert("QScriptValue(0, 0x43211234)", 1126240820);
+ toInt32.insert("QScriptValue(0, 0x10000)", 65536);
+ toInt32.insert("QScriptValue(0, 0x10001)", 65537);
+ toInt32.insert("QScriptValue(0, qSNaN())", 0);
+ toInt32.insert("QScriptValue(0, qQNaN())", 0);
+ toInt32.insert("QScriptValue(0, qInf())", 0);
+ toInt32.insert("QScriptValue(0, -qInf())", 0);
+ toInt32.insert("QScriptValue(0, \"NaN\")", 0);
+ toInt32.insert("QScriptValue(0, \"Infinity\")", 0);
+ toInt32.insert("QScriptValue(0, \"-Infinity\")", 0);
+ toInt32.insert("QScriptValue(0, \"ciao\")", 0);
+ toInt32.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+ toInt32.insert("QScriptValue(0, QString(\"\"))", 0);
+ toInt32.insert("QScriptValue(0, QString())", 0);
+ toInt32.insert("QScriptValue(0, QString(\"0\"))", 0);
+ toInt32.insert("QScriptValue(0, QString(\"123\"))", 123);
+ toInt32.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+ toInt32.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+ toInt32.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+ toInt32.insert("QScriptValue(engine, true)", 1);
+ toInt32.insert("QScriptValue(engine, false)", 0);
+ toInt32.insert("QScriptValue(engine, int(122))", 122);
+ toInt32.insert("QScriptValue(engine, uint(124))", 124);
+ toInt32.insert("QScriptValue(engine, 0)", 0);
+ toInt32.insert("QScriptValue(engine, 0.0)", 0);
+ toInt32.insert("QScriptValue(engine, 123.0)", 123);
+ toInt32.insert("QScriptValue(engine, 6.37e-8)", 0);
+ toInt32.insert("QScriptValue(engine, -6.37e-8)", 0);
+ toInt32.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+ toInt32.insert("QScriptValue(engine, 0x10000)", 65536);
+ toInt32.insert("QScriptValue(engine, 0x10001)", 65537);
+ toInt32.insert("QScriptValue(engine, qSNaN())", 0);
+ toInt32.insert("QScriptValue(engine, qQNaN())", 0);
+ toInt32.insert("QScriptValue(engine, qInf())", 0);
+ toInt32.insert("QScriptValue(engine, -qInf())", 0);
+ toInt32.insert("QScriptValue(engine, \"NaN\")", 0);
+ toInt32.insert("QScriptValue(engine, \"Infinity\")", 0);
+ toInt32.insert("QScriptValue(engine, \"-Infinity\")", 0);
+ toInt32.insert("QScriptValue(engine, \"ciao\")", 0);
+ toInt32.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+ toInt32.insert("QScriptValue(engine, QString(\"\"))", 0);
+ toInt32.insert("QScriptValue(engine, QString())", 0);
+ toInt32.insert("QScriptValue(engine, QString(\"0\"))", 0);
+ toInt32.insert("QScriptValue(engine, QString(\"123\"))", 123);
+ toInt32.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+ toInt32.insert("engine->evaluate(\"[]\")", 0);
+ toInt32.insert("engine->evaluate(\"{}\")", 0);
+ toInt32.insert("engine->evaluate(\"Object.prototype\")", 0);
+ toInt32.insert("engine->evaluate(\"Date.prototype\")", 0);
+ toInt32.insert("engine->evaluate(\"Array.prototype\")", 0);
+ toInt32.insert("engine->evaluate(\"Function.prototype\")", 0);
+ toInt32.insert("engine->evaluate(\"Error.prototype\")", 0);
+ toInt32.insert("engine->evaluate(\"Object\")", 0);
+ toInt32.insert("engine->evaluate(\"Array\")", 0);
+ toInt32.insert("engine->evaluate(\"Number\")", 0);
+ toInt32.insert("engine->evaluate(\"Function\")", 0);
+ toInt32.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+ toInt32.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+ toInt32.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+ toInt32.insert("engine->evaluate(\"/foo/\")", 0);
+ toInt32.insert("engine->evaluate(\"new Object()\")", 0);
+ toInt32.insert("engine->evaluate(\"new Array()\")", 0);
+ toInt32.insert("engine->evaluate(\"new Error()\")", 0);
+ }
+ newRow(expr) << toInt32.value(expr);
+}
+
+void tst_QScriptValue::toInt32_test(const char*, const QScriptValue& value)
+{
+ QFETCH(qint32, expected);
+ QCOMPARE(value.toInt32(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toInt32)
+
+
+void tst_QScriptValue::toUInt32_initData()
+{
+ QTest::addColumn<quint32>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::toUInt32_makeData(const char* expr)
+{
+ static QHash<QString, quint32> toUInt32;
+ if (toUInt32.isEmpty()) {
+ toUInt32.insert("QScriptValue()", 0);
+ toUInt32.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+ toUInt32.insert("QScriptValue(QScriptValue::NullValue)", 0);
+ toUInt32.insert("QScriptValue(true)", 1);
+ toUInt32.insert("QScriptValue(false)", 0);
+ toUInt32.insert("QScriptValue(int(122))", 122);
+ toUInt32.insert("QScriptValue(uint(124))", 124);
+ toUInt32.insert("QScriptValue(0)", 0);
+ toUInt32.insert("QScriptValue(0.0)", 0);
+ toUInt32.insert("QScriptValue(123.0)", 123);
+ toUInt32.insert("QScriptValue(6.37e-8)", 0);
+ toUInt32.insert("QScriptValue(-6.37e-8)", 0);
+ toUInt32.insert("QScriptValue(0x43211234)", 1126240820);
+ toUInt32.insert("QScriptValue(0x10000)", 65536);
+ toUInt32.insert("QScriptValue(0x10001)", 65537);
+ toUInt32.insert("QScriptValue(qSNaN())", 0);
+ toUInt32.insert("QScriptValue(qQNaN())", 0);
+ toUInt32.insert("QScriptValue(qInf())", 0);
+ toUInt32.insert("QScriptValue(-qInf())", 0);
+ toUInt32.insert("QScriptValue(\"NaN\")", 0);
+ toUInt32.insert("QScriptValue(\"Infinity\")", 0);
+ toUInt32.insert("QScriptValue(\"-Infinity\")", 0);
+ toUInt32.insert("QScriptValue(\"ciao\")", 0);
+ toUInt32.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+ toUInt32.insert("QScriptValue(QString(\"\"))", 0);
+ toUInt32.insert("QScriptValue(QString())", 0);
+ toUInt32.insert("QScriptValue(QString(\"0\"))", 0);
+ toUInt32.insert("QScriptValue(QString(\"123\"))", 123);
+ toUInt32.insert("QScriptValue(QString(\"12.4\"))", 12);
+ toUInt32.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+ toUInt32.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+ toUInt32.insert("QScriptValue(0, true)", 1);
+ toUInt32.insert("QScriptValue(0, false)", 0);
+ toUInt32.insert("QScriptValue(0, int(122))", 122);
+ toUInt32.insert("QScriptValue(0, uint(124))", 124);
+ toUInt32.insert("QScriptValue(0, 0)", 0);
+ toUInt32.insert("QScriptValue(0, 0.0)", 0);
+ toUInt32.insert("QScriptValue(0, 123.0)", 123);
+ toUInt32.insert("QScriptValue(0, 6.37e-8)", 0);
+ toUInt32.insert("QScriptValue(0, -6.37e-8)", 0);
+ toUInt32.insert("QScriptValue(0, 0x43211234)", 1126240820);
+ toUInt32.insert("QScriptValue(0, 0x10000)", 65536);
+ toUInt32.insert("QScriptValue(0, 0x10001)", 65537);
+ toUInt32.insert("QScriptValue(0, qSNaN())", 0);
+ toUInt32.insert("QScriptValue(0, qQNaN())", 0);
+ toUInt32.insert("QScriptValue(0, qInf())", 0);
+ toUInt32.insert("QScriptValue(0, -qInf())", 0);
+ toUInt32.insert("QScriptValue(0, \"NaN\")", 0);
+ toUInt32.insert("QScriptValue(0, \"Infinity\")", 0);
+ toUInt32.insert("QScriptValue(0, \"-Infinity\")", 0);
+ toUInt32.insert("QScriptValue(0, \"ciao\")", 0);
+ toUInt32.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+ toUInt32.insert("QScriptValue(0, QString(\"\"))", 0);
+ toUInt32.insert("QScriptValue(0, QString())", 0);
+ toUInt32.insert("QScriptValue(0, QString(\"0\"))", 0);
+ toUInt32.insert("QScriptValue(0, QString(\"123\"))", 123);
+ toUInt32.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+ toUInt32.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+ toUInt32.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+ toUInt32.insert("QScriptValue(engine, true)", 1);
+ toUInt32.insert("QScriptValue(engine, false)", 0);
+ toUInt32.insert("QScriptValue(engine, int(122))", 122);
+ toUInt32.insert("QScriptValue(engine, uint(124))", 124);
+ toUInt32.insert("QScriptValue(engine, 0)", 0);
+ toUInt32.insert("QScriptValue(engine, 0.0)", 0);
+ toUInt32.insert("QScriptValue(engine, 123.0)", 123);
+ toUInt32.insert("QScriptValue(engine, 6.37e-8)", 0);
+ toUInt32.insert("QScriptValue(engine, -6.37e-8)", 0);
+ toUInt32.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+ toUInt32.insert("QScriptValue(engine, 0x10000)", 65536);
+ toUInt32.insert("QScriptValue(engine, 0x10001)", 65537);
+ toUInt32.insert("QScriptValue(engine, qSNaN())", 0);
+ toUInt32.insert("QScriptValue(engine, qQNaN())", 0);
+ toUInt32.insert("QScriptValue(engine, qInf())", 0);
+ toUInt32.insert("QScriptValue(engine, -qInf())", 0);
+ toUInt32.insert("QScriptValue(engine, \"NaN\")", 0);
+ toUInt32.insert("QScriptValue(engine, \"Infinity\")", 0);
+ toUInt32.insert("QScriptValue(engine, \"-Infinity\")", 0);
+ toUInt32.insert("QScriptValue(engine, \"ciao\")", 0);
+ toUInt32.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+ toUInt32.insert("QScriptValue(engine, QString(\"\"))", 0);
+ toUInt32.insert("QScriptValue(engine, QString())", 0);
+ toUInt32.insert("QScriptValue(engine, QString(\"0\"))", 0);
+ toUInt32.insert("QScriptValue(engine, QString(\"123\"))", 123);
+ toUInt32.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+ toUInt32.insert("engine->evaluate(\"[]\")", 0);
+ toUInt32.insert("engine->evaluate(\"{}\")", 0);
+ toUInt32.insert("engine->evaluate(\"Object.prototype\")", 0);
+ toUInt32.insert("engine->evaluate(\"Date.prototype\")", 0);
+ toUInt32.insert("engine->evaluate(\"Array.prototype\")", 0);
+ toUInt32.insert("engine->evaluate(\"Function.prototype\")", 0);
+ toUInt32.insert("engine->evaluate(\"Error.prototype\")", 0);
+ toUInt32.insert("engine->evaluate(\"Object\")", 0);
+ toUInt32.insert("engine->evaluate(\"Array\")", 0);
+ toUInt32.insert("engine->evaluate(\"Number\")", 0);
+ toUInt32.insert("engine->evaluate(\"Function\")", 0);
+ toUInt32.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+ toUInt32.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+ toUInt32.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+ toUInt32.insert("engine->evaluate(\"/foo/\")", 0);
+ toUInt32.insert("engine->evaluate(\"new Object()\")", 0);
+ toUInt32.insert("engine->evaluate(\"new Array()\")", 0);
+ toUInt32.insert("engine->evaluate(\"new Error()\")", 0);
+ }
+ newRow(expr) << toUInt32.value(expr);
+}
+
+void tst_QScriptValue::toUInt32_test(const char*, const QScriptValue& value)
+{
+ QFETCH(quint32, expected);
+ QCOMPARE(value.toUInt32(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toUInt32)
+
+
+void tst_QScriptValue::toUInt16_initData()
+{
+ QTest::addColumn<quint16>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::toUInt16_makeData(const char* expr)
+{
+ static QHash<QString, quint16> toUInt16;
+ if (toUInt16.isEmpty()) {
+ toUInt16.insert("QScriptValue()", 0);
+ toUInt16.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+ toUInt16.insert("QScriptValue(QScriptValue::NullValue)", 0);
+ toUInt16.insert("QScriptValue(true)", 1);
+ toUInt16.insert("QScriptValue(false)", 0);
+ toUInt16.insert("QScriptValue(int(122))", 122);
+ toUInt16.insert("QScriptValue(uint(124))", 124);
+ toUInt16.insert("QScriptValue(0)", 0);
+ toUInt16.insert("QScriptValue(0.0)", 0);
+ toUInt16.insert("QScriptValue(123.0)", 123);
+ toUInt16.insert("QScriptValue(6.37e-8)", 0);
+ toUInt16.insert("QScriptValue(-6.37e-8)", 0);
+ toUInt16.insert("QScriptValue(0x43211234)", 4660);
+ toUInt16.insert("QScriptValue(0x10000)", 0);
+ toUInt16.insert("QScriptValue(0x10001)", 1);
+ toUInt16.insert("QScriptValue(qSNaN())", 0);
+ toUInt16.insert("QScriptValue(qQNaN())", 0);
+ toUInt16.insert("QScriptValue(qInf())", 0);
+ toUInt16.insert("QScriptValue(-qInf())", 0);
+ toUInt16.insert("QScriptValue(\"NaN\")", 0);
+ toUInt16.insert("QScriptValue(\"Infinity\")", 0);
+ toUInt16.insert("QScriptValue(\"-Infinity\")", 0);
+ toUInt16.insert("QScriptValue(\"ciao\")", 0);
+ toUInt16.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+ toUInt16.insert("QScriptValue(QString(\"\"))", 0);
+ toUInt16.insert("QScriptValue(QString())", 0);
+ toUInt16.insert("QScriptValue(QString(\"0\"))", 0);
+ toUInt16.insert("QScriptValue(QString(\"123\"))", 123);
+ toUInt16.insert("QScriptValue(QString(\"12.4\"))", 12);
+ toUInt16.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+ toUInt16.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+ toUInt16.insert("QScriptValue(0, true)", 1);
+ toUInt16.insert("QScriptValue(0, false)", 0);
+ toUInt16.insert("QScriptValue(0, int(122))", 122);
+ toUInt16.insert("QScriptValue(0, uint(124))", 124);
+ toUInt16.insert("QScriptValue(0, 0)", 0);
+ toUInt16.insert("QScriptValue(0, 0.0)", 0);
+ toUInt16.insert("QScriptValue(0, 123.0)", 123);
+ toUInt16.insert("QScriptValue(0, 6.37e-8)", 0);
+ toUInt16.insert("QScriptValue(0, -6.37e-8)", 0);
+ toUInt16.insert("QScriptValue(0, 0x43211234)", 4660);
+ toUInt16.insert("QScriptValue(0, 0x10000)", 0);
+ toUInt16.insert("QScriptValue(0, 0x10001)", 1);
+ toUInt16.insert("QScriptValue(0, qSNaN())", 0);
+ toUInt16.insert("QScriptValue(0, qQNaN())", 0);
+ toUInt16.insert("QScriptValue(0, qInf())", 0);
+ toUInt16.insert("QScriptValue(0, -qInf())", 0);
+ toUInt16.insert("QScriptValue(0, \"NaN\")", 0);
+ toUInt16.insert("QScriptValue(0, \"Infinity\")", 0);
+ toUInt16.insert("QScriptValue(0, \"-Infinity\")", 0);
+ toUInt16.insert("QScriptValue(0, \"ciao\")", 0);
+ toUInt16.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+ toUInt16.insert("QScriptValue(0, QString(\"\"))", 0);
+ toUInt16.insert("QScriptValue(0, QString())", 0);
+ toUInt16.insert("QScriptValue(0, QString(\"0\"))", 0);
+ toUInt16.insert("QScriptValue(0, QString(\"123\"))", 123);
+ toUInt16.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+ toUInt16.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+ toUInt16.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+ toUInt16.insert("QScriptValue(engine, true)", 1);
+ toUInt16.insert("QScriptValue(engine, false)", 0);
+ toUInt16.insert("QScriptValue(engine, int(122))", 122);
+ toUInt16.insert("QScriptValue(engine, uint(124))", 124);
+ toUInt16.insert("QScriptValue(engine, 0)", 0);
+ toUInt16.insert("QScriptValue(engine, 0.0)", 0);
+ toUInt16.insert("QScriptValue(engine, 123.0)", 123);
+ toUInt16.insert("QScriptValue(engine, 6.37e-8)", 0);
+ toUInt16.insert("QScriptValue(engine, -6.37e-8)", 0);
+ toUInt16.insert("QScriptValue(engine, 0x43211234)", 4660);
+ toUInt16.insert("QScriptValue(engine, 0x10000)", 0);
+ toUInt16.insert("QScriptValue(engine, 0x10001)", 1);
+ toUInt16.insert("QScriptValue(engine, qSNaN())", 0);
+ toUInt16.insert("QScriptValue(engine, qQNaN())", 0);
+ toUInt16.insert("QScriptValue(engine, qInf())", 0);
+ toUInt16.insert("QScriptValue(engine, -qInf())", 0);
+ toUInt16.insert("QScriptValue(engine, \"NaN\")", 0);
+ toUInt16.insert("QScriptValue(engine, \"Infinity\")", 0);
+ toUInt16.insert("QScriptValue(engine, \"-Infinity\")", 0);
+ toUInt16.insert("QScriptValue(engine, \"ciao\")", 0);
+ toUInt16.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+ toUInt16.insert("QScriptValue(engine, QString(\"\"))", 0);
+ toUInt16.insert("QScriptValue(engine, QString())", 0);
+ toUInt16.insert("QScriptValue(engine, QString(\"0\"))", 0);
+ toUInt16.insert("QScriptValue(engine, QString(\"123\"))", 123);
+ toUInt16.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+ toUInt16.insert("engine->evaluate(\"[]\")", 0);
+ toUInt16.insert("engine->evaluate(\"{}\")", 0);
+ toUInt16.insert("engine->evaluate(\"Object.prototype\")", 0);
+ toUInt16.insert("engine->evaluate(\"Date.prototype\")", 0);
+ toUInt16.insert("engine->evaluate(\"Array.prototype\")", 0);
+ toUInt16.insert("engine->evaluate(\"Function.prototype\")", 0);
+ toUInt16.insert("engine->evaluate(\"Error.prototype\")", 0);
+ toUInt16.insert("engine->evaluate(\"Object\")", 0);
+ toUInt16.insert("engine->evaluate(\"Array\")", 0);
+ toUInt16.insert("engine->evaluate(\"Number\")", 0);
+ toUInt16.insert("engine->evaluate(\"Function\")", 0);
+ toUInt16.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+ toUInt16.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+ toUInt16.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+ toUInt16.insert("engine->evaluate(\"/foo/\")", 0);
+ toUInt16.insert("engine->evaluate(\"new Object()\")", 0);
+ toUInt16.insert("engine->evaluate(\"new Array()\")", 0);
+ toUInt16.insert("engine->evaluate(\"new Error()\")", 0);
+ }
+ newRow(expr) << toUInt16.value(expr);
+}
+
+void tst_QScriptValue::toUInt16_test(const char*, const QScriptValue& value)
+{
+ QFETCH(quint16, expected);
+ QCOMPARE(value.toUInt16(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toUInt16)
+
+
+void tst_QScriptValue::equals_initData()
+{
+ QTest::addColumn<QScriptValue>("other");
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::equals_makeData(const char *expr)
+{
+ static QSet<QString> equals;
+ if (equals.isEmpty()) {
+ equals.insert("QScriptValue() <=> QScriptValue()");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(true) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(false) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(0) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(qInf()) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(qInf()) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-qInf())");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(-qInf())");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, -qInf())");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(-qInf())");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -qInf())");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-qInf())");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -qInf())");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+ }
+ QHash<QString, QScriptValue>::const_iterator it;
+ for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+ QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+ newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+ }
+}
+
+void tst_QScriptValue::equals_test(const char *, const QScriptValue& value)
+{
+ QFETCH(QScriptValue, other);
+ QFETCH(bool, expected);
+ QCOMPARE(value.equals(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(equals)
+
+
+void tst_QScriptValue::strictlyEquals_initData()
+{
+ QTest::addColumn<QScriptValue>("other");
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
+{
+ static QSet<QString> equals;
+ if (equals.isEmpty()) {
+ equals.insert("QScriptValue() <=> QScriptValue()");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(qInf()) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-qInf())");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+ }
+ QHash<QString, QScriptValue>::const_iterator it;
+ for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+ QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+ newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+ }
+}
+
+void tst_QScriptValue::strictlyEquals_test(const char *, const QScriptValue& value)
+{
+ QFETCH(QScriptValue, other);
+ QFETCH(bool, expected);
+ QCOMPARE(value.strictlyEquals(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(strictlyEquals)
+
+
+void tst_QScriptValue::lessThan_initData()
+{
+ QTest::addColumn<QScriptValue>("other");
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::lessThan_makeData(const char *expr)
+{
+ static QSet<QString> equals;
+ if (equals.isEmpty()) {
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(true) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(true) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(true) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(true) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(true) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(true) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(true) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(true) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(true) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(true) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(true) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(true) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(true) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(true) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(false) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(false) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0x43211234) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0x43211234) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-6.37e-8)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(true)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(false)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(-6.37e-8)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"/foo/\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"/foo/\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"/foo/\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-6.37e-8)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(false)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(-6.37e-8)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"/foo/\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"/foo/\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"/foo/\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(false)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-6.37e-8)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"\"))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"[]\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(false)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0.0)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-6.37e-8)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, false)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0.0)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"/foo/\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"/foo/\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(\"-Infinity\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"/foo/\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(true)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(6.37e-8)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, true)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(int(122))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(uint(124))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(123.0)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x43211234)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x10000)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x10001)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(qInf())");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"NaN\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"ciao\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, int(122))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, uint(124))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 123.0)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x10000)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x10001)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, qInf())");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Object\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Array\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Number\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Function\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Object()\")");
+ }
+ QHash<QString, QScriptValue>::const_iterator it;
+ for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+ QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+ newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+ }
+}
+
+void tst_QScriptValue::lessThan_test(const char *, const QScriptValue& value)
+{
+ QFETCH(QScriptValue, other);
+ QFETCH(bool, expected);
+ QCOMPARE(value.lessThan(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(lessThan)
+
+
+void tst_QScriptValue::instanceOf_initData()
+{
+ QTest::addColumn<QScriptValue>("other");
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::instanceOf_makeData(const char *expr)
+{
+ static QSet<QString> equals;
+ if (equals.isEmpty()) {
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")");
+ }
+ QHash<QString, QScriptValue>::const_iterator it;
+ for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+ QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+ newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+ }
+}
+
+void tst_QScriptValue::instanceOf_test(const char *, const QScriptValue& value)
+{
+ QFETCH(QScriptValue, other);
+ QFETCH(bool, expected);
+ QCOMPARE(value.instanceOf(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(instanceOf)
+
+
+void tst_QScriptValue::qscriptvalue_castQString_initData()
+{
+ QTest::addColumn<QString>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castQString_makeData(const char* expr)
+{
+ static QHash<QString, QString> value;
+ if (value.isEmpty()) {
+ value.insert("QScriptValue()", "");
+ value.insert("QScriptValue(QScriptValue::UndefinedValue)", "");
+ value.insert("QScriptValue(QScriptValue::NullValue)", "");
+ value.insert("QScriptValue(true)", "true");
+ value.insert("QScriptValue(false)", "false");
+ value.insert("QScriptValue(int(122))", "122");
+ value.insert("QScriptValue(uint(124))", "124");
+ value.insert("QScriptValue(0)", "0");
+ value.insert("QScriptValue(0.0)", "0");
+ value.insert("QScriptValue(123.0)", "123");
+ value.insert("QScriptValue(6.37e-8)", "6.37e-8");
+ value.insert("QScriptValue(-6.37e-8)", "-6.37e-8");
+ value.insert("QScriptValue(0x43211234)", "1126240820");
+ value.insert("QScriptValue(0x10000)", "65536");
+ value.insert("QScriptValue(0x10001)", "65537");
+ value.insert("QScriptValue(qSNaN())", "NaN");
+ value.insert("QScriptValue(qQNaN())", "NaN");
+ value.insert("QScriptValue(qInf())", "Infinity");
+ value.insert("QScriptValue(-qInf())", "-Infinity");
+ value.insert("QScriptValue(\"NaN\")", "NaN");
+ value.insert("QScriptValue(\"Infinity\")", "Infinity");
+ value.insert("QScriptValue(\"-Infinity\")", "-Infinity");
+ value.insert("QScriptValue(\"ciao\")", "ciao");
+ value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", "ciao");
+ value.insert("QScriptValue(QString(\"\"))", "");
+ value.insert("QScriptValue(QString())", "");
+ value.insert("QScriptValue(QString(\"0\"))", "0");
+ value.insert("QScriptValue(QString(\"123\"))", "123");
+ value.insert("QScriptValue(QString(\"12.4\"))", "12.4");
+ value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", "");
+ value.insert("QScriptValue(0, QScriptValue::NullValue)", "");
+ value.insert("QScriptValue(0, true)", "true");
+ value.insert("QScriptValue(0, false)", "false");
+ value.insert("QScriptValue(0, int(122))", "122");
+ value.insert("QScriptValue(0, uint(124))", "124");
+ value.insert("QScriptValue(0, 0)", "0");
+ value.insert("QScriptValue(0, 0.0)", "0");
+ value.insert("QScriptValue(0, 123.0)", "123");
+ value.insert("QScriptValue(0, 6.37e-8)", "6.37e-8");
+ value.insert("QScriptValue(0, -6.37e-8)", "-6.37e-8");
+ value.insert("QScriptValue(0, 0x43211234)", "1126240820");
+ value.insert("QScriptValue(0, 0x10000)", "65536");
+ value.insert("QScriptValue(0, 0x10001)", "65537");
+ value.insert("QScriptValue(0, qSNaN())", "NaN");
+ value.insert("QScriptValue(0, qQNaN())", "NaN");
+ value.insert("QScriptValue(0, qInf())", "Infinity");
+ value.insert("QScriptValue(0, -qInf())", "-Infinity");
+ value.insert("QScriptValue(0, \"NaN\")", "NaN");
+ value.insert("QScriptValue(0, \"Infinity\")", "Infinity");
+ value.insert("QScriptValue(0, \"-Infinity\")", "-Infinity");
+ value.insert("QScriptValue(0, \"ciao\")", "ciao");
+ value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", "ciao");
+ value.insert("QScriptValue(0, QString(\"\"))", "");
+ value.insert("QScriptValue(0, QString())", "");
+ value.insert("QScriptValue(0, QString(\"0\"))", "0");
+ value.insert("QScriptValue(0, QString(\"123\"))", "123");
+ value.insert("QScriptValue(0, QString(\"12.3\"))", "12.3");
+ value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", "");
+ value.insert("QScriptValue(engine, QScriptValue::NullValue)", "");
+ value.insert("QScriptValue(engine, true)", "true");
+ value.insert("QScriptValue(engine, false)", "false");
+ value.insert("QScriptValue(engine, int(122))", "122");
+ value.insert("QScriptValue(engine, uint(124))", "124");
+ value.insert("QScriptValue(engine, 0)", "0");
+ value.insert("QScriptValue(engine, 0.0)", "0");
+ value.insert("QScriptValue(engine, 123.0)", "123");
+ value.insert("QScriptValue(engine, 6.37e-8)", "6.37e-8");
+ value.insert("QScriptValue(engine, -6.37e-8)", "-6.37e-8");
+ value.insert("QScriptValue(engine, 0x43211234)", "1126240820");
+ value.insert("QScriptValue(engine, 0x10000)", "65536");
+ value.insert("QScriptValue(engine, 0x10001)", "65537");
+ value.insert("QScriptValue(engine, qSNaN())", "NaN");
+ value.insert("QScriptValue(engine, qQNaN())", "NaN");
+ value.insert("QScriptValue(engine, qInf())", "Infinity");
+ value.insert("QScriptValue(engine, -qInf())", "-Infinity");
+ value.insert("QScriptValue(engine, \"NaN\")", "NaN");
+ value.insert("QScriptValue(engine, \"Infinity\")", "Infinity");
+ value.insert("QScriptValue(engine, \"-Infinity\")", "-Infinity");
+ value.insert("QScriptValue(engine, \"ciao\")", "ciao");
+ value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", "ciao");
+ value.insert("QScriptValue(engine, QString(\"\"))", "");
+ value.insert("QScriptValue(engine, QString())", "");
+ value.insert("QScriptValue(engine, QString(\"0\"))", "0");
+ value.insert("QScriptValue(engine, QString(\"123\"))", "123");
+ value.insert("QScriptValue(engine, QString(\"1.23\"))", "1.23");
+ value.insert("engine->evaluate(\"[]\")", "");
+ value.insert("engine->evaluate(\"{}\")", "");
+ value.insert("engine->evaluate(\"Object.prototype\")", "[object Object]");
+ value.insert("engine->evaluate(\"Date.prototype\")", "Invalid Date");
+ value.insert("engine->evaluate(\"Array.prototype\")", "");
+ value.insert("engine->evaluate(\"Function.prototype\")", "function () {\n [native code]\n}");
+ value.insert("engine->evaluate(\"Error.prototype\")", "Error: Unknown error");
+ value.insert("engine->evaluate(\"Object\")", "function Object() {\n [native code]\n}");
+ value.insert("engine->evaluate(\"Array\")", "function Array() {\n [native code]\n}");
+ value.insert("engine->evaluate(\"Number\")", "function Number() {\n [native code]\n}");
+ value.insert("engine->evaluate(\"Function\")", "function Function() {\n [native code]\n}");
+ value.insert("engine->evaluate(\"(function() { return 1; })\")", "function () { return 1; }");
+ value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", "function () { return 'ciao'; }");
+ value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", "function () { throw new Error('foo'); }");
+ value.insert("engine->evaluate(\"/foo/\")", "/foo/");
+ value.insert("engine->evaluate(\"new Object()\")", "[object Object]");
+ value.insert("engine->evaluate(\"new Array()\")", "");
+ value.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
+ }
+ newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castQString_test(const char*, const QScriptValue& value)
+{
+ QFETCH(QString, expected);
+ QCOMPARE(qscriptvalue_cast<QString>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castQString)
+
+
+void tst_QScriptValue::qscriptvalue_castqsreal_initData()
+{
+ QTest::addColumn<qsreal>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castqsreal_makeData(const char* expr)
+{
+ static QHash<QString, qsreal> value;
+ if (value.isEmpty()) {
+ value.insert("QScriptValue()", 0);
+ value.insert("QScriptValue(QScriptValue::UndefinedValue)", qQNaN());
+ value.insert("QScriptValue(QScriptValue::NullValue)", 0);
+ value.insert("QScriptValue(true)", 1);
+ value.insert("QScriptValue(false)", 0);
+ value.insert("QScriptValue(int(122))", 122);
+ value.insert("QScriptValue(uint(124))", 124);
+ value.insert("QScriptValue(0)", 0);
+ value.insert("QScriptValue(0.0)", 0);
+ value.insert("QScriptValue(123.0)", 123);
+ value.insert("QScriptValue(6.37e-8)", 6.369999999999999e-08);
+ value.insert("QScriptValue(-6.37e-8)", -6.369999999999999e-08);
+ value.insert("QScriptValue(0x43211234)", 1126240820);
+ value.insert("QScriptValue(0x10000)", 65536);
+ value.insert("QScriptValue(0x10001)", 65537);
+ value.insert("QScriptValue(qSNaN())", qQNaN());
+ value.insert("QScriptValue(qQNaN())", qQNaN());
+ value.insert("QScriptValue(qInf())", qInf());
+ value.insert("QScriptValue(-qInf())", qInf());
+ value.insert("QScriptValue(\"NaN\")", qQNaN());
+ value.insert("QScriptValue(\"Infinity\")", qInf());
+ value.insert("QScriptValue(\"-Infinity\")", qInf());
+ value.insert("QScriptValue(\"ciao\")", qQNaN());
+ value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", qQNaN());
+ value.insert("QScriptValue(QString(\"\"))", 0);
+ value.insert("QScriptValue(QString())", 0);
+ value.insert("QScriptValue(QString(\"0\"))", 0);
+ value.insert("QScriptValue(QString(\"123\"))", 123);
+ value.insert("QScriptValue(QString(\"12.4\"))", 12.4);
+ value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", qQNaN());
+ value.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+ value.insert("QScriptValue(0, true)", 1);
+ value.insert("QScriptValue(0, false)", 0);
+ value.insert("QScriptValue(0, int(122))", 122);
+ value.insert("QScriptValue(0, uint(124))", 124);
+ value.insert("QScriptValue(0, 0)", 0);
+ value.insert("QScriptValue(0, 0.0)", 0);
+ value.insert("QScriptValue(0, 123.0)", 123);
+ value.insert("QScriptValue(0, 6.37e-8)", 6.369999999999999e-08);
+ value.insert("QScriptValue(0, -6.37e-8)", -6.369999999999999e-08);
+ value.insert("QScriptValue(0, 0x43211234)", 1126240820);
+ value.insert("QScriptValue(0, 0x10000)", 65536);
+ value.insert("QScriptValue(0, 0x10001)", 65537);
+ value.insert("QScriptValue(0, qSNaN())", qQNaN());
+ value.insert("QScriptValue(0, qQNaN())", qQNaN());
+ value.insert("QScriptValue(0, qInf())", qInf());
+ value.insert("QScriptValue(0, -qInf())", qInf());
+ value.insert("QScriptValue(0, \"NaN\")", qQNaN());
+ value.insert("QScriptValue(0, \"Infinity\")", qInf());
+ value.insert("QScriptValue(0, \"-Infinity\")", qInf());
+ value.insert("QScriptValue(0, \"ciao\")", qQNaN());
+ value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", qQNaN());
+ value.insert("QScriptValue(0, QString(\"\"))", 0);
+ value.insert("QScriptValue(0, QString())", 0);
+ value.insert("QScriptValue(0, QString(\"0\"))", 0);
+ value.insert("QScriptValue(0, QString(\"123\"))", 123);
+ value.insert("QScriptValue(0, QString(\"12.3\"))", 12.3);
+ value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", qQNaN());
+ value.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+ value.insert("QScriptValue(engine, true)", 1);
+ value.insert("QScriptValue(engine, false)", 0);
+ value.insert("QScriptValue(engine, int(122))", 122);
+ value.insert("QScriptValue(engine, uint(124))", 124);
+ value.insert("QScriptValue(engine, 0)", 0);
+ value.insert("QScriptValue(engine, 0.0)", 0);
+ value.insert("QScriptValue(engine, 123.0)", 123);
+ value.insert("QScriptValue(engine, 6.37e-8)", 6.369999999999999e-08);
+ value.insert("QScriptValue(engine, -6.37e-8)", -6.369999999999999e-08);
+ value.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+ value.insert("QScriptValue(engine, 0x10000)", 65536);
+ value.insert("QScriptValue(engine, 0x10001)", 65537);
+ value.insert("QScriptValue(engine, qSNaN())", qQNaN());
+ value.insert("QScriptValue(engine, qQNaN())", qQNaN());
+ value.insert("QScriptValue(engine, qInf())", qInf());
+ value.insert("QScriptValue(engine, -qInf())", qInf());
+ value.insert("QScriptValue(engine, \"NaN\")", qQNaN());
+ value.insert("QScriptValue(engine, \"Infinity\")", qInf());
+ value.insert("QScriptValue(engine, \"-Infinity\")", qInf());
+ value.insert("QScriptValue(engine, \"ciao\")", qQNaN());
+ value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", qQNaN());
+ value.insert("QScriptValue(engine, QString(\"\"))", 0);
+ value.insert("QScriptValue(engine, QString())", 0);
+ value.insert("QScriptValue(engine, QString(\"0\"))", 0);
+ value.insert("QScriptValue(engine, QString(\"123\"))", 123);
+ value.insert("QScriptValue(engine, QString(\"1.23\"))", 1.23);
+ value.insert("engine->evaluate(\"[]\")", 0);
+ value.insert("engine->evaluate(\"{}\")", qQNaN());
+ value.insert("engine->evaluate(\"Object.prototype\")", qQNaN());
+ value.insert("engine->evaluate(\"Date.prototype\")", qQNaN());
+ value.insert("engine->evaluate(\"Array.prototype\")", 0);
+ value.insert("engine->evaluate(\"Function.prototype\")", qQNaN());
+ value.insert("engine->evaluate(\"Error.prototype\")", qQNaN());
+ value.insert("engine->evaluate(\"Object\")", qQNaN());
+ value.insert("engine->evaluate(\"Array\")", qQNaN());
+ value.insert("engine->evaluate(\"Number\")", qQNaN());
+ value.insert("engine->evaluate(\"Function\")", qQNaN());
+ value.insert("engine->evaluate(\"(function() { return 1; })\")", qQNaN());
+ value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", qQNaN());
+ value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", qQNaN());
+ value.insert("engine->evaluate(\"/foo/\")", qQNaN());
+ value.insert("engine->evaluate(\"new Object()\")", qQNaN());
+ value.insert("engine->evaluate(\"new Array()\")", 0);
+ value.insert("engine->evaluate(\"new Error()\")", qQNaN());
+ }
+ newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castqsreal_test(const char*, const QScriptValue& value)
+{
+ QFETCH(qsreal, expected);
+ if (qIsNaN(expected)) {
+ QVERIFY(qIsNaN(qscriptvalue_cast<qsreal>(value)));
+ return;
+ }
+ if (qIsInf(expected)) {
+ QVERIFY(qIsInf(qscriptvalue_cast<qsreal>(value)));
+ return;
+ }
+ QCOMPARE(qscriptvalue_cast<qsreal>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castqsreal)
+
+
+void tst_QScriptValue::qscriptvalue_castbool_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castbool_makeData(const char* expr)
+{
+ static QHash<QString, bool> value;
+ if (value.isEmpty()) {
+ value.insert("QScriptValue()", false);
+ value.insert("QScriptValue(QScriptValue::UndefinedValue)", false);
+ value.insert("QScriptValue(QScriptValue::NullValue)", false);
+ value.insert("QScriptValue(true)", true);
+ value.insert("QScriptValue(false)", false);
+ value.insert("QScriptValue(int(122))", true);
+ value.insert("QScriptValue(uint(124))", true);
+ value.insert("QScriptValue(0)", false);
+ value.insert("QScriptValue(0.0)", false);
+ value.insert("QScriptValue(123.0)", true);
+ value.insert("QScriptValue(6.37e-8)", true);
+ value.insert("QScriptValue(-6.37e-8)", true);
+ value.insert("QScriptValue(0x43211234)", true);
+ value.insert("QScriptValue(0x10000)", true);
+ value.insert("QScriptValue(0x10001)", true);
+ value.insert("QScriptValue(qSNaN())", false);
+ value.insert("QScriptValue(qQNaN())", false);
+ value.insert("QScriptValue(qInf())", true);
+ value.insert("QScriptValue(-qInf())", true);
+ value.insert("QScriptValue(\"NaN\")", true);
+ value.insert("QScriptValue(\"Infinity\")", true);
+ value.insert("QScriptValue(\"-Infinity\")", true);
+ value.insert("QScriptValue(\"ciao\")", true);
+ value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", true);
+ value.insert("QScriptValue(QString(\"\"))", false);
+ value.insert("QScriptValue(QString())", false);
+ value.insert("QScriptValue(QString(\"0\"))", true);
+ value.insert("QScriptValue(QString(\"123\"))", true);
+ value.insert("QScriptValue(QString(\"12.4\"))", true);
+ value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", false);
+ value.insert("QScriptValue(0, QScriptValue::NullValue)", false);
+ value.insert("QScriptValue(0, true)", true);
+ value.insert("QScriptValue(0, false)", false);
+ value.insert("QScriptValue(0, int(122))", true);
+ value.insert("QScriptValue(0, uint(124))", true);
+ value.insert("QScriptValue(0, 0)", false);
+ value.insert("QScriptValue(0, 0.0)", false);
+ value.insert("QScriptValue(0, 123.0)", true);
+ value.insert("QScriptValue(0, 6.37e-8)", true);
+ value.insert("QScriptValue(0, -6.37e-8)", true);
+ value.insert("QScriptValue(0, 0x43211234)", true);
+ value.insert("QScriptValue(0, 0x10000)", true);
+ value.insert("QScriptValue(0, 0x10001)", true);
+ value.insert("QScriptValue(0, qSNaN())", false);
+ value.insert("QScriptValue(0, qQNaN())", false);
+ value.insert("QScriptValue(0, qInf())", true);
+ value.insert("QScriptValue(0, -qInf())", true);
+ value.insert("QScriptValue(0, \"NaN\")", true);
+ value.insert("QScriptValue(0, \"Infinity\")", true);
+ value.insert("QScriptValue(0, \"-Infinity\")", true);
+ value.insert("QScriptValue(0, \"ciao\")", true);
+ value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", true);
+ value.insert("QScriptValue(0, QString(\"\"))", false);
+ value.insert("QScriptValue(0, QString())", false);
+ value.insert("QScriptValue(0, QString(\"0\"))", true);
+ value.insert("QScriptValue(0, QString(\"123\"))", true);
+ value.insert("QScriptValue(0, QString(\"12.3\"))", true);
+ value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", false);
+ value.insert("QScriptValue(engine, QScriptValue::NullValue)", false);
+ value.insert("QScriptValue(engine, true)", true);
+ value.insert("QScriptValue(engine, false)", false);
+ value.insert("QScriptValue(engine, int(122))", true);
+ value.insert("QScriptValue(engine, uint(124))", true);
+ value.insert("QScriptValue(engine, 0)", false);
+ value.insert("QScriptValue(engine, 0.0)", false);
+ value.insert("QScriptValue(engine, 123.0)", true);
+ value.insert("QScriptValue(engine, 6.37e-8)", true);
+ value.insert("QScriptValue(engine, -6.37e-8)", true);
+ value.insert("QScriptValue(engine, 0x43211234)", true);
+ value.insert("QScriptValue(engine, 0x10000)", true);
+ value.insert("QScriptValue(engine, 0x10001)", true);
+ value.insert("QScriptValue(engine, qSNaN())", false);
+ value.insert("QScriptValue(engine, qQNaN())", false);
+ value.insert("QScriptValue(engine, qInf())", true);
+ value.insert("QScriptValue(engine, -qInf())", true);
+ value.insert("QScriptValue(engine, \"NaN\")", true);
+ value.insert("QScriptValue(engine, \"Infinity\")", true);
+ value.insert("QScriptValue(engine, \"-Infinity\")", true);
+ value.insert("QScriptValue(engine, \"ciao\")", true);
+ value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", true);
+ value.insert("QScriptValue(engine, QString(\"\"))", false);
+ value.insert("QScriptValue(engine, QString())", false);
+ value.insert("QScriptValue(engine, QString(\"0\"))", true);
+ value.insert("QScriptValue(engine, QString(\"123\"))", true);
+ value.insert("QScriptValue(engine, QString(\"1.23\"))", true);
+ value.insert("engine->evaluate(\"[]\")", true);
+ value.insert("engine->evaluate(\"{}\")", false);
+ value.insert("engine->evaluate(\"Object.prototype\")", true);
+ value.insert("engine->evaluate(\"Date.prototype\")", true);
+ value.insert("engine->evaluate(\"Array.prototype\")", true);
+ value.insert("engine->evaluate(\"Function.prototype\")", true);
+ value.insert("engine->evaluate(\"Error.prototype\")", true);
+ value.insert("engine->evaluate(\"Object\")", true);
+ value.insert("engine->evaluate(\"Array\")", true);
+ value.insert("engine->evaluate(\"Number\")", true);
+ value.insert("engine->evaluate(\"Function\")", true);
+ value.insert("engine->evaluate(\"(function() { return 1; })\")", true);
+ value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", true);
+ value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", true);
+ value.insert("engine->evaluate(\"/foo/\")", true);
+ value.insert("engine->evaluate(\"new Object()\")", true);
+ value.insert("engine->evaluate(\"new Array()\")", true);
+ value.insert("engine->evaluate(\"new Error()\")", true);
+ }
+ newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castbool_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(qscriptvalue_cast<bool>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castbool)
+
+
+void tst_QScriptValue::qscriptvalue_castqint32_initData()
+{
+ QTest::addColumn<qint32>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castqint32_makeData(const char* expr)
+{
+ static QHash<QString, qint32> value;
+ if (value.isEmpty()) {
+ value.insert("QScriptValue()", 0);
+ value.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+ value.insert("QScriptValue(QScriptValue::NullValue)", 0);
+ value.insert("QScriptValue(true)", 1);
+ value.insert("QScriptValue(false)", 0);
+ value.insert("QScriptValue(int(122))", 122);
+ value.insert("QScriptValue(uint(124))", 124);
+ value.insert("QScriptValue(0)", 0);
+ value.insert("QScriptValue(0.0)", 0);
+ value.insert("QScriptValue(123.0)", 123);
+ value.insert("QScriptValue(6.37e-8)", 0);
+ value.insert("QScriptValue(-6.37e-8)", 0);
+ value.insert("QScriptValue(0x43211234)", 1126240820);
+ value.insert("QScriptValue(0x10000)", 65536);
+ value.insert("QScriptValue(0x10001)", 65537);
+ value.insert("QScriptValue(qSNaN())", 0);
+ value.insert("QScriptValue(qQNaN())", 0);
+ value.insert("QScriptValue(qInf())", 0);
+ value.insert("QScriptValue(-qInf())", 0);
+ value.insert("QScriptValue(\"NaN\")", 0);
+ value.insert("QScriptValue(\"Infinity\")", 0);
+ value.insert("QScriptValue(\"-Infinity\")", 0);
+ value.insert("QScriptValue(\"ciao\")", 0);
+ value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+ value.insert("QScriptValue(QString(\"\"))", 0);
+ value.insert("QScriptValue(QString())", 0);
+ value.insert("QScriptValue(QString(\"0\"))", 0);
+ value.insert("QScriptValue(QString(\"123\"))", 123);
+ value.insert("QScriptValue(QString(\"12.4\"))", 12);
+ value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+ value.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+ value.insert("QScriptValue(0, true)", 1);
+ value.insert("QScriptValue(0, false)", 0);
+ value.insert("QScriptValue(0, int(122))", 122);
+ value.insert("QScriptValue(0, uint(124))", 124);
+ value.insert("QScriptValue(0, 0)", 0);
+ value.insert("QScriptValue(0, 0.0)", 0);
+ value.insert("QScriptValue(0, 123.0)", 123);
+ value.insert("QScriptValue(0, 6.37e-8)", 0);
+ value.insert("QScriptValue(0, -6.37e-8)", 0);
+ value.insert("QScriptValue(0, 0x43211234)", 1126240820);
+ value.insert("QScriptValue(0, 0x10000)", 65536);
+ value.insert("QScriptValue(0, 0x10001)", 65537);
+ value.insert("QScriptValue(0, qSNaN())", 0);
+ value.insert("QScriptValue(0, qQNaN())", 0);
+ value.insert("QScriptValue(0, qInf())", 0);
+ value.insert("QScriptValue(0, -qInf())", 0);
+ value.insert("QScriptValue(0, \"NaN\")", 0);
+ value.insert("QScriptValue(0, \"Infinity\")", 0);
+ value.insert("QScriptValue(0, \"-Infinity\")", 0);
+ value.insert("QScriptValue(0, \"ciao\")", 0);
+ value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+ value.insert("QScriptValue(0, QString(\"\"))", 0);
+ value.insert("QScriptValue(0, QString())", 0);
+ value.insert("QScriptValue(0, QString(\"0\"))", 0);
+ value.insert("QScriptValue(0, QString(\"123\"))", 123);
+ value.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+ value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+ value.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+ value.insert("QScriptValue(engine, true)", 1);
+ value.insert("QScriptValue(engine, false)", 0);
+ value.insert("QScriptValue(engine, int(122))", 122);
+ value.insert("QScriptValue(engine, uint(124))", 124);
+ value.insert("QScriptValue(engine, 0)", 0);
+ value.insert("QScriptValue(engine, 0.0)", 0);
+ value.insert("QScriptValue(engine, 123.0)", 123);
+ value.insert("QScriptValue(engine, 6.37e-8)", 0);
+ value.insert("QScriptValue(engine, -6.37e-8)", 0);
+ value.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+ value.insert("QScriptValue(engine, 0x10000)", 65536);
+ value.insert("QScriptValue(engine, 0x10001)", 65537);
+ value.insert("QScriptValue(engine, qSNaN())", 0);
+ value.insert("QScriptValue(engine, qQNaN())", 0);
+ value.insert("QScriptValue(engine, qInf())", 0);
+ value.insert("QScriptValue(engine, -qInf())", 0);
+ value.insert("QScriptValue(engine, \"NaN\")", 0);
+ value.insert("QScriptValue(engine, \"Infinity\")", 0);
+ value.insert("QScriptValue(engine, \"-Infinity\")", 0);
+ value.insert("QScriptValue(engine, \"ciao\")", 0);
+ value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+ value.insert("QScriptValue(engine, QString(\"\"))", 0);
+ value.insert("QScriptValue(engine, QString())", 0);
+ value.insert("QScriptValue(engine, QString(\"0\"))", 0);
+ value.insert("QScriptValue(engine, QString(\"123\"))", 123);
+ value.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+ value.insert("engine->evaluate(\"[]\")", 0);
+ value.insert("engine->evaluate(\"{}\")", 0);
+ value.insert("engine->evaluate(\"Object.prototype\")", 0);
+ value.insert("engine->evaluate(\"Date.prototype\")", 0);
+ value.insert("engine->evaluate(\"Array.prototype\")", 0);
+ value.insert("engine->evaluate(\"Function.prototype\")", 0);
+ value.insert("engine->evaluate(\"Error.prototype\")", 0);
+ value.insert("engine->evaluate(\"Object\")", 0);
+ value.insert("engine->evaluate(\"Array\")", 0);
+ value.insert("engine->evaluate(\"Number\")", 0);
+ value.insert("engine->evaluate(\"Function\")", 0);
+ value.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+ value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+ value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+ value.insert("engine->evaluate(\"/foo/\")", 0);
+ value.insert("engine->evaluate(\"new Object()\")", 0);
+ value.insert("engine->evaluate(\"new Array()\")", 0);
+ value.insert("engine->evaluate(\"new Error()\")", 0);
+ }
+ newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castqint32_test(const char*, const QScriptValue& value)
+{
+ QFETCH(qint32, expected);
+ QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castqint32)
+
+
+void tst_QScriptValue::qscriptvalue_castquint32_initData()
+{
+ QTest::addColumn<quint32>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castquint32_makeData(const char* expr)
+{
+ static QHash<QString, quint32> value;
+ if (value.isEmpty()) {
+ value.insert("QScriptValue()", 0);
+ value.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+ value.insert("QScriptValue(QScriptValue::NullValue)", 0);
+ value.insert("QScriptValue(true)", 1);
+ value.insert("QScriptValue(false)", 0);
+ value.insert("QScriptValue(int(122))", 122);
+ value.insert("QScriptValue(uint(124))", 124);
+ value.insert("QScriptValue(0)", 0);
+ value.insert("QScriptValue(0.0)", 0);
+ value.insert("QScriptValue(123.0)", 123);
+ value.insert("QScriptValue(6.37e-8)", 0);
+ value.insert("QScriptValue(-6.37e-8)", 0);
+ value.insert("QScriptValue(0x43211234)", 1126240820);
+ value.insert("QScriptValue(0x10000)", 65536);
+ value.insert("QScriptValue(0x10001)", 65537);
+ value.insert("QScriptValue(qSNaN())", 0);
+ value.insert("QScriptValue(qQNaN())", 0);
+ value.insert("QScriptValue(qInf())", 0);
+ value.insert("QScriptValue(-qInf())", 0);
+ value.insert("QScriptValue(\"NaN\")", 0);
+ value.insert("QScriptValue(\"Infinity\")", 0);
+ value.insert("QScriptValue(\"-Infinity\")", 0);
+ value.insert("QScriptValue(\"ciao\")", 0);
+ value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+ value.insert("QScriptValue(QString(\"\"))", 0);
+ value.insert("QScriptValue(QString())", 0);
+ value.insert("QScriptValue(QString(\"0\"))", 0);
+ value.insert("QScriptValue(QString(\"123\"))", 123);
+ value.insert("QScriptValue(QString(\"12.4\"))", 12);
+ value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+ value.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+ value.insert("QScriptValue(0, true)", 1);
+ value.insert("QScriptValue(0, false)", 0);
+ value.insert("QScriptValue(0, int(122))", 122);
+ value.insert("QScriptValue(0, uint(124))", 124);
+ value.insert("QScriptValue(0, 0)", 0);
+ value.insert("QScriptValue(0, 0.0)", 0);
+ value.insert("QScriptValue(0, 123.0)", 123);
+ value.insert("QScriptValue(0, 6.37e-8)", 0);
+ value.insert("QScriptValue(0, -6.37e-8)", 0);
+ value.insert("QScriptValue(0, 0x43211234)", 1126240820);
+ value.insert("QScriptValue(0, 0x10000)", 65536);
+ value.insert("QScriptValue(0, 0x10001)", 65537);
+ value.insert("QScriptValue(0, qSNaN())", 0);
+ value.insert("QScriptValue(0, qQNaN())", 0);
+ value.insert("QScriptValue(0, qInf())", 0);
+ value.insert("QScriptValue(0, -qInf())", 0);
+ value.insert("QScriptValue(0, \"NaN\")", 0);
+ value.insert("QScriptValue(0, \"Infinity\")", 0);
+ value.insert("QScriptValue(0, \"-Infinity\")", 0);
+ value.insert("QScriptValue(0, \"ciao\")", 0);
+ value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+ value.insert("QScriptValue(0, QString(\"\"))", 0);
+ value.insert("QScriptValue(0, QString())", 0);
+ value.insert("QScriptValue(0, QString(\"0\"))", 0);
+ value.insert("QScriptValue(0, QString(\"123\"))", 123);
+ value.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+ value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+ value.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+ value.insert("QScriptValue(engine, true)", 1);
+ value.insert("QScriptValue(engine, false)", 0);
+ value.insert("QScriptValue(engine, int(122))", 122);
+ value.insert("QScriptValue(engine, uint(124))", 124);
+ value.insert("QScriptValue(engine, 0)", 0);
+ value.insert("QScriptValue(engine, 0.0)", 0);
+ value.insert("QScriptValue(engine, 123.0)", 123);
+ value.insert("QScriptValue(engine, 6.37e-8)", 0);
+ value.insert("QScriptValue(engine, -6.37e-8)", 0);
+ value.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+ value.insert("QScriptValue(engine, 0x10000)", 65536);
+ value.insert("QScriptValue(engine, 0x10001)", 65537);
+ value.insert("QScriptValue(engine, qSNaN())", 0);
+ value.insert("QScriptValue(engine, qQNaN())", 0);
+ value.insert("QScriptValue(engine, qInf())", 0);
+ value.insert("QScriptValue(engine, -qInf())", 0);
+ value.insert("QScriptValue(engine, \"NaN\")", 0);
+ value.insert("QScriptValue(engine, \"Infinity\")", 0);
+ value.insert("QScriptValue(engine, \"-Infinity\")", 0);
+ value.insert("QScriptValue(engine, \"ciao\")", 0);
+ value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+ value.insert("QScriptValue(engine, QString(\"\"))", 0);
+ value.insert("QScriptValue(engine, QString())", 0);
+ value.insert("QScriptValue(engine, QString(\"0\"))", 0);
+ value.insert("QScriptValue(engine, QString(\"123\"))", 123);
+ value.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+ value.insert("engine->evaluate(\"[]\")", 0);
+ value.insert("engine->evaluate(\"{}\")", 0);
+ value.insert("engine->evaluate(\"Object.prototype\")", 0);
+ value.insert("engine->evaluate(\"Date.prototype\")", 0);
+ value.insert("engine->evaluate(\"Array.prototype\")", 0);
+ value.insert("engine->evaluate(\"Function.prototype\")", 0);
+ value.insert("engine->evaluate(\"Error.prototype\")", 0);
+ value.insert("engine->evaluate(\"Object\")", 0);
+ value.insert("engine->evaluate(\"Array\")", 0);
+ value.insert("engine->evaluate(\"Number\")", 0);
+ value.insert("engine->evaluate(\"Function\")", 0);
+ value.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+ value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+ value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+ value.insert("engine->evaluate(\"/foo/\")", 0);
+ value.insert("engine->evaluate(\"new Object()\")", 0);
+ value.insert("engine->evaluate(\"new Array()\")", 0);
+ value.insert("engine->evaluate(\"new Error()\")", 0);
+ }
+ newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castquint32_test(const char*, const QScriptValue& value)
+{
+ QFETCH(quint32, expected);
+ QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castquint32)
+
+
+void tst_QScriptValue::qscriptvalue_castquint16_initData()
+{
+ QTest::addColumn<quint16>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castquint16_makeData(const char* expr)
+{
+ static QHash<QString, quint16> value;
+ if (value.isEmpty()) {
+ value.insert("QScriptValue()", 0);
+ value.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+ value.insert("QScriptValue(QScriptValue::NullValue)", 0);
+ value.insert("QScriptValue(true)", 1);
+ value.insert("QScriptValue(false)", 0);
+ value.insert("QScriptValue(int(122))", 122);
+ value.insert("QScriptValue(uint(124))", 124);
+ value.insert("QScriptValue(0)", 0);
+ value.insert("QScriptValue(0.0)", 0);
+ value.insert("QScriptValue(123.0)", 123);
+ value.insert("QScriptValue(6.37e-8)", 0);
+ value.insert("QScriptValue(-6.37e-8)", 0);
+ value.insert("QScriptValue(0x43211234)", 4660);
+ value.insert("QScriptValue(0x10000)", 0);
+ value.insert("QScriptValue(0x10001)", 1);
+ value.insert("QScriptValue(qSNaN())", 0);
+ value.insert("QScriptValue(qQNaN())", 0);
+ value.insert("QScriptValue(qInf())", 0);
+ value.insert("QScriptValue(-qInf())", 0);
+ value.insert("QScriptValue(\"NaN\")", 0);
+ value.insert("QScriptValue(\"Infinity\")", 0);
+ value.insert("QScriptValue(\"-Infinity\")", 0);
+ value.insert("QScriptValue(\"ciao\")", 0);
+ value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+ value.insert("QScriptValue(QString(\"\"))", 0);
+ value.insert("QScriptValue(QString())", 0);
+ value.insert("QScriptValue(QString(\"0\"))", 0);
+ value.insert("QScriptValue(QString(\"123\"))", 123);
+ value.insert("QScriptValue(QString(\"12.4\"))", 12);
+ value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+ value.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+ value.insert("QScriptValue(0, true)", 1);
+ value.insert("QScriptValue(0, false)", 0);
+ value.insert("QScriptValue(0, int(122))", 122);
+ value.insert("QScriptValue(0, uint(124))", 124);
+ value.insert("QScriptValue(0, 0)", 0);
+ value.insert("QScriptValue(0, 0.0)", 0);
+ value.insert("QScriptValue(0, 123.0)", 123);
+ value.insert("QScriptValue(0, 6.37e-8)", 0);
+ value.insert("QScriptValue(0, -6.37e-8)", 0);
+ value.insert("QScriptValue(0, 0x43211234)", 4660);
+ value.insert("QScriptValue(0, 0x10000)", 0);
+ value.insert("QScriptValue(0, 0x10001)", 1);
+ value.insert("QScriptValue(0, qSNaN())", 0);
+ value.insert("QScriptValue(0, qQNaN())", 0);
+ value.insert("QScriptValue(0, qInf())", 0);
+ value.insert("QScriptValue(0, -qInf())", 0);
+ value.insert("QScriptValue(0, \"NaN\")", 0);
+ value.insert("QScriptValue(0, \"Infinity\")", 0);
+ value.insert("QScriptValue(0, \"-Infinity\")", 0);
+ value.insert("QScriptValue(0, \"ciao\")", 0);
+ value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+ value.insert("QScriptValue(0, QString(\"\"))", 0);
+ value.insert("QScriptValue(0, QString())", 0);
+ value.insert("QScriptValue(0, QString(\"0\"))", 0);
+ value.insert("QScriptValue(0, QString(\"123\"))", 123);
+ value.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+ value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+ value.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+ value.insert("QScriptValue(engine, true)", 1);
+ value.insert("QScriptValue(engine, false)", 0);
+ value.insert("QScriptValue(engine, int(122))", 122);
+ value.insert("QScriptValue(engine, uint(124))", 124);
+ value.insert("QScriptValue(engine, 0)", 0);
+ value.insert("QScriptValue(engine, 0.0)", 0);
+ value.insert("QScriptValue(engine, 123.0)", 123);
+ value.insert("QScriptValue(engine, 6.37e-8)", 0);
+ value.insert("QScriptValue(engine, -6.37e-8)", 0);
+ value.insert("QScriptValue(engine, 0x43211234)", 4660);
+ value.insert("QScriptValue(engine, 0x10000)", 0);
+ value.insert("QScriptValue(engine, 0x10001)", 1);
+ value.insert("QScriptValue(engine, qSNaN())", 0);
+ value.insert("QScriptValue(engine, qQNaN())", 0);
+ value.insert("QScriptValue(engine, qInf())", 0);
+ value.insert("QScriptValue(engine, -qInf())", 0);
+ value.insert("QScriptValue(engine, \"NaN\")", 0);
+ value.insert("QScriptValue(engine, \"Infinity\")", 0);
+ value.insert("QScriptValue(engine, \"-Infinity\")", 0);
+ value.insert("QScriptValue(engine, \"ciao\")", 0);
+ value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+ value.insert("QScriptValue(engine, QString(\"\"))", 0);
+ value.insert("QScriptValue(engine, QString())", 0);
+ value.insert("QScriptValue(engine, QString(\"0\"))", 0);
+ value.insert("QScriptValue(engine, QString(\"123\"))", 123);
+ value.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+ value.insert("engine->evaluate(\"[]\")", 0);
+ value.insert("engine->evaluate(\"{}\")", 0);
+ value.insert("engine->evaluate(\"Object.prototype\")", 0);
+ value.insert("engine->evaluate(\"Date.prototype\")", 0);
+ value.insert("engine->evaluate(\"Array.prototype\")", 0);
+ value.insert("engine->evaluate(\"Function.prototype\")", 0);
+ value.insert("engine->evaluate(\"Error.prototype\")", 0);
+ value.insert("engine->evaluate(\"Object\")", 0);
+ value.insert("engine->evaluate(\"Array\")", 0);
+ value.insert("engine->evaluate(\"Number\")", 0);
+ value.insert("engine->evaluate(\"Function\")", 0);
+ value.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+ value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+ value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+ value.insert("engine->evaluate(\"/foo/\")", 0);
+ value.insert("engine->evaluate(\"new Object()\")", 0);
+ value.insert("engine->evaluate(\"new Array()\")", 0);
+ value.insert("engine->evaluate(\"new Error()\")", 0);
+ }
+ newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castquint16_test(const char*, const QScriptValue& value)
+{
+ QFETCH(quint16, expected);
+ QCOMPARE(qscriptvalue_cast<quint16>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castquint16)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qsslcertificate/more-certificates/malformed-just-begin-no-newline.pem Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+-----BEGIN CERTIFICATE-----
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qsslcertificate/more-certificates/malformed-just-begin.pem Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+-----BEGIN CERTIFICATE-----
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qsslcertificate/more-certificates/no-ending-newline.pem Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB8zCCAVwCAREwDQYJKoZIhvcNAQEFBQAwWzELMAkGA1UEBhMCQVUxEzARBgNV
+BAgTClF1ZWVuc2xhbmQxGjAYBgNVBAoTEUNyeXB0U29mdCBQdHkgTHRkMRswGQYD
+VQQDExJUZXN0IENBICgxMDI0IGJpdCkwHhcNMDcwNDE3MDc0MDI2WhcNMDcwNTE3
+MDc0MDI2WjApMRowGAYDVQQDExFuYW1lL3dpdGgvc2xhc2hlczELMAkGA1UEBhMC
+Tk8wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOud6QOsME+pWANExxgmL0iT
+1ayg++hTxHsqAYnm/FoMxfUh+NdKkgJn2/GfNppinfPOSI667VqonU+7JBZDTLV5
+CPbZIo9fFQpDJQN6naev4yaxU1VeYFfI7S8c8zYKeGSR+RenNNeLvfH80YxPpZZ1
+snv8IfDH2V8MVxiyr7lLAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAleaU4pgzV6KY
++q9QuXapUYMsC2GiNtDmkG3k+MTHUO8XlE4hqPrIM6rRf7zKQdZ950R2wL9FSnYl
+Qm1Tdv38dCka6ivMBqvRuOt9axH3m0G7nzHL7U3zaCbtEx3yVln+b3yYtiVpTuq0
+3MLrt7tQGAW6ra8ISf6YY1W65/uVXZE=
+-----END CERTIFICATE-----
\ No newline at end of file
--- a/tests/auto/qsslcertificate/tst_qsslcertificate.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qsslcertificate/tst_qsslcertificate.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -543,6 +543,9 @@
QTest::newRow("\"d.*/c.*.pem\" wildcard der") << QString("d.*/c.*.pem") << int(QRegExp::Wildcard) << false << 0;
QTest::newRow("trailing-whitespace") << QString("more-certificates/trailing-whitespace.pem") << int(QRegExp::FixedString) << true << 1;
+ QTest::newRow("no-ending-newline") << QString("more-certificates/no-ending-newline.pem") << int(QRegExp::FixedString) << true << 1;
+ QTest::newRow("malformed-just-begin") << QString("more-certificates/malformed-just-begin.pem") << int(QRegExp::FixedString) << true << 0;
+ QTest::newRow("malformed-just-begin-no-newline") << QString("more-certificates/malformed-just-begin-no-newline.pem") << int(QRegExp::FixedString) << true << 0;
}
void tst_QSslCertificate::fromPath()
--- a/tests/auto/qstyle/tst_qstyle.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qstyle/tst_qstyle.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -52,6 +52,7 @@
#include <qstyleoption.h>
#include <qscrollbar.h>
#include <qprogressbar.h>
+#include <qtoolbutton.h>
#include <qplastiquestyle.h>
#include <qwindowsstyle.h>
@@ -445,6 +446,8 @@
if (QSysInfo::WindowsVersion == QSysInfo::WV_VISTA)
testPainting(&vistastyle, "vista");
+ else if (QSysInfo::WindowsVersion == QSysInfo::WV_XP)
+ testPainting(&vistastyle, "xp");
#endif
}
@@ -460,6 +463,7 @@
void tst_QStyle::testPainting(QStyle *style, const QString &platform)
{
+qDebug("TEST PAINTING");
//Test Menu
QString fileName = "images/" + platform + "/menu.png";
QMenu menu;
@@ -538,6 +542,19 @@
pixmap = QPixmap::grabWidget(&mdiArea);
mdiArea.hide();
comparePixmap(fileName, pixmap);
+
+ // QToolButton
+ fileName = "images/" + platform + "/toolbutton.png";
+ QToolButton tb;
+ tb.setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+ tb.setText("AaQqPpXx");
+ tb.setIcon(style->standardPixmap(QStyle::SP_DirHomeIcon));
+ tb.setStyle(style);
+ tb.show();
+ pixmap = QPixmap::grabWidget(&tb);
+ tb.hide();
+ comparePixmap(fileName, pixmap);
+
}
void tst_QStyle::testMacStyle()
--- a/tests/auto/qtableview/tst_qtableview.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qtableview/tst_qtableview.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -3024,6 +3024,14 @@
<< QPoint(0, 0)
<< 1
<< 1;
+
+ QTest::newRow("QTBUG-6004 (follow-up): No failing Q_ASSERT, then it passes.")
+ << 10 << 10
+ << (SpanList() << QRect(2, 2, 1, 3) << QRect(2, 2, 1, 1))
+ << false
+ << QPoint(0, 0)
+ << 1
+ << 1;
}
void tst_QTableView::spans()
--- a/tests/auto/qurl/tst_qurl.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qurl/tst_qurl.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -90,7 +90,6 @@
private slots:
void getSetCheck();
void constructing();
- void isDetached();
void assignment();
void comparison();
void copying();
@@ -166,6 +165,8 @@
void ace_testsuite();
void std3violations_data();
void std3violations();
+ void std3deviations_data();
+ void std3deviations();
void tldRestrictions_data();
void tldRestrictions();
void emptyQueryOrFragment();
@@ -319,25 +320,6 @@
QVERIFY(!buildUNC.isEmpty());
}
-void tst_QUrl::isDetached()
-{
- QUrl url;
- QVERIFY(!url.isDetached());
-
- url = "http://qt.nokia.com/";
- QVERIFY(url.isDetached());
-
- url.clear();
- QVERIFY(!url.isDetached());
-
- url.setHost("qt.nokia.com");
- QVERIFY(url.isDetached());
-
- QUrl url2 = url;
- QVERIFY(!url.isDetached());
- QVERIFY(!url2.isDetached());
-}
-
void tst_QUrl::assignment()
{
QUrl url("http://qt.nokia.com/");
@@ -3258,6 +3240,8 @@
QTest::newRow("bang") << "foo!" << false;
QTest::newRow("plus") << "foo+bar" << false;
QTest::newRow("dot") << "foo.bar";
+ QTest::newRow("startingdot") << ".bar" << false;
+ QTest::newRow("startingdot2") << ".example.com" << false;
QTest::newRow("slash") << "foo/bar" << true;
QTest::newRow("colon") << "foo:80" << true;
QTest::newRow("question") << "foo?bar" << true;
@@ -3302,6 +3286,24 @@
QVERIFY(!url.isValid());
}
+void tst_QUrl::std3deviations_data()
+{
+ QTest::addColumn<QString>("source");
+
+ QTest::newRow("ending-dot") << "example.com.";
+ QTest::newRow("ending-dot3002") << QString("example.com") + QChar(0x3002);
+}
+
+void tst_QUrl::std3deviations()
+{
+ QFETCH(QString, source);
+ QVERIFY(!QUrl::toAce(source).isEmpty());
+
+ QUrl url;
+ url.setHost(source);
+ QVERIFY(!url.host().isEmpty());
+}
+
void tst_QUrl::tldRestrictions_data()
{
QTest::addColumn<QString>("tld");
--- a/tests/auto/qwidget/tst_qwidget.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qwidget/tst_qwidget.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -5439,26 +5439,24 @@
QRegion r;
};
-template<typename R, typename C>
-void verifyColor(R const& region, C const& color)
-{
- const QRegion r = QRegion(region);
- for (int i = 0; i < r.rects().size(); ++i) {
- const QRect rect = r.rects().at(i);
- for (int t = 0; t < 5; t++) {
- const QPixmap pixmap = QPixmap::grabWindow(QDesktopWidget().winId(),
- rect.left(), rect.top(),
- rect.width(), rect.height());
- QCOMPARE(pixmap.size(), rect.size());
- QPixmap expectedPixmap(pixmap); /* ensure equal formats */
- expectedPixmap.fill(color);
- if (pixmap.toImage().pixel(0,0) != QColor(color).rgb() && t < 4 )
- { QTest::qWait(200); continue; }
- QCOMPARE(pixmap.toImage().pixel(0,0), QColor(color).rgb());
- QCOMPARE(pixmap, expectedPixmap);
- break;
- }
- }
+#define VERIFY_COLOR(region, color) { \
+ const QRegion r = QRegion(region); \
+ for (int i = 0; i < r.rects().size(); ++i) { \
+ const QRect rect = r.rects().at(i); \
+ for (int t = 0; t < 5; t++) { \
+ const QPixmap pixmap = QPixmap::grabWindow(QDesktopWidget().winId(), \
+ rect.left(), rect.top(), \
+ rect.width(), rect.height()); \
+ QCOMPARE(pixmap.size(), rect.size()); \
+ QPixmap expectedPixmap(pixmap); /* ensure equal formats */ \
+ expectedPixmap.fill(color); \
+ if (pixmap.toImage().pixel(0,0) != QColor(color).rgb() && t < 4 ) \
+ { QTest::qWait(200); continue; } \
+ QCOMPARE(pixmap.toImage().pixel(0,0), QColor(color).rgb()); \
+ QCOMPARE(pixmap, expectedPixmap); \
+ break; \
+ } \
+ } \
}
void tst_QWidget::moveChild_data()
@@ -5499,9 +5497,9 @@
#endif
QTRY_COMPARE(parent.r, QRegion(parent.rect()) - child.geometry());
QTRY_COMPARE(child.r, QRegion(child.rect()));
- verifyColor(child.geometry().translated(tlwOffset),
+ VERIFY_COLOR(child.geometry().translated(tlwOffset),
child.color);
- verifyColor(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset),
+ VERIFY_COLOR(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset),
parent.color);
parent.reset();
child.reset();
@@ -5520,9 +5518,9 @@
// should be scrolled in backingstore
QCOMPARE(child.r, QRegion());
#endif
- verifyColor(child.geometry().translated(tlwOffset),
+ VERIFY_COLOR(child.geometry().translated(tlwOffset),
child.color);
- verifyColor(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset),
+ VERIFY_COLOR(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset),
parent.color);
}
@@ -5553,8 +5551,8 @@
child.move(desktopDimensions.width()/2, desktopDimensions.height()/2);
qApp->processEvents();
- verifyColor(child.geometry().translated(tlwOffset), Qt::blue);
- verifyColor(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset), Qt::red);
+ VERIFY_COLOR(child.geometry().translated(tlwOffset), Qt::blue);
+ VERIFY_COLOR(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset), Qt::red);
}
void tst_QWidget::subtractOpaqueSiblings()
--- a/tests/auto/selftests/expected_xunit.txt Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/selftests/expected_xunit.txt Fri Mar 12 15:46:37 2010 +0200
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?>
<testsuite errors="5" failures="3" tests="9" name="tst_Xunit">
<properties>
- <property value="4.6.2" name="QTestVersion"/>
- <property value="4.6.2" name="QtVersion"/>
+ <property value="<INSERT_QT_VERSION_HERE>" name="QTestVersion"/>
+ <property value="<INSERT_QT_VERSION_HERE>" name="QtVersion"/>
</properties>
<testcase result="pass" name="initTestCase"/>
<testcase result="pass" name="testFunc1">
--- a/tests/auto/selftests/tst_selftests.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/selftests/tst_selftests.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -248,7 +248,7 @@
continue;
const QString output(QString::fromLatin1(line));
- const QString expected(QString::fromLatin1(exp.at(i)));
+ const QString expected(QString::fromLatin1(exp.at(i)).replace("<INSERT_QT_VERSION_HERE>", QT_VERSION_STR));
if (line.contains("ASSERT") && output != expected)
QEXPECT_FAIL("assert", "QTestLib prints out the absolute path.", Continue);
--- a/tests/auto/xmlpatternsxqts/xmlpatternsxqts.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/xmlpatternsxqts/xmlpatternsxqts.pro Fri Mar 12 15:46:37 2010 +0200
@@ -1,7 +1,6 @@
TEMPLATE = subdirs
contains(QT_CONFIG,xmlpatterns) {
SUBDIRS += lib
- !wince*:lib.file = lib/lib.pro
test.depends = lib
}
SUBDIRS += test
--- a/tests/benchmarks/benchmarks.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/benchmarks.pro Fri Mar 12 15:46:37 2010 +0200
@@ -2,7 +2,10 @@
SUBDIRS = containers-associative \
qanimation \
qbytearray \
- qfile_vs_qnetworkaccessmanager \
+ #qfileinfo \
+ qfile_vs_qnetworkaccessmanager \
+ qfontmetrics \
+ qhostinfo \
qpainter \
qtestlib-simple events \
qtext \
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/benchmarks/qfontmetrics/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,112 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QObject>
+#include <QFont>
+#include <QFontMetrics>
+
+#include <qtest.h>
+
+//this test benchmarks the once-off (per font configuration) cost
+//associated with using QFontMetrics
+class tst_QFontMetrics : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QFontMetrics() {}
+private slots:
+ void fontmetrics_create();
+ void fontmetrics_create_once_loaded();
+
+ void fontmetrics_height();
+ void fontmetrics_height_once_loaded();
+
+private:
+ void testQFontMetrics(const QFontMetrics &fm);
+};
+
+void tst_QFontMetrics::testQFontMetrics( const QFontMetrics &fm )
+{
+ int fontHeight = fm.height();
+}
+
+void tst_QFontMetrics::fontmetrics_create()
+{
+ QBENCHMARK {
+ QFont boldfont = QApplication::font();
+ boldfont.setBold( true );
+ boldfont.setPointSize(boldfont.pointSize() * 1.5 );
+ QFontMetrics bfm( boldfont );
+ }
+}
+
+void tst_QFontMetrics::fontmetrics_create_once_loaded()
+{
+ QBENCHMARK {
+ QFont boldfont = QApplication::font();
+ boldfont.setBold( true );
+ boldfont.setPointSize(boldfont.pointSize() * 1.5 );
+ QFontMetrics bfm( boldfont );
+ }
+}
+
+void tst_QFontMetrics::fontmetrics_height()
+{
+ QFont boldfont = QApplication::font();
+ boldfont.setBold( true );
+ boldfont.setPointSize(boldfont.pointSize() * 1.5 );
+ QFontMetrics bfm( boldfont );
+
+ QBENCHMARK { testQFontMetrics(bfm); }
+}
+
+void tst_QFontMetrics::fontmetrics_height_once_loaded()
+{
+ QFont boldfont = QApplication::font();
+ boldfont.setBold( true );
+ boldfont.setPointSize(boldfont.pointSize() * 1.5 );
+ QFontMetrics bfm( boldfont );
+ QBENCHMARK { testQFontMetrics(bfm); }
+}
+
+QTEST_MAIN(tst_QFontMetrics)
+
+#include "main.moc"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/benchmarks/qfontmetrics/qfontmetrics.pro Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,5 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_bench_QFontMetrics
+
+SOURCES += main.cpp
--- a/tests/benchmarks/qhostinfo/qhostinfo.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qhostinfo/qhostinfo.pro Fri Mar 12 15:46:37 2010 +0200
@@ -1,6 +1,6 @@
load(qttest_p4)
TEMPLATE = app
-TARGET = tst_qhostinfo
+TARGET = tst_bench_qhostinfo
DEPENDPATH += .
INCLUDEPATH += .
--- a/tests/benchmarks/qpainter/tst_qpainter.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qpainter/tst_qpainter.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -45,6 +45,10 @@
#include <QDialog>
#include <QImage>
#include <QPaintEngine>
+#include <math.h>
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
Q_DECLARE_METATYPE(QLine)
Q_DECLARE_METATYPE(QRect)
@@ -178,6 +182,35 @@
void clipAndFill_data();
void clipAndFill();
+ void drawRoundedRect();
+ void drawScaledRoundedRect();
+ void drawTransformedRoundedRect();
+
+ void drawScaledAntialiasedRoundedRect_data();
+ void drawTransformedAntialiasedRoundedRect_data();
+ void drawAntialiasedRoundedRect();
+ void drawScaledAntialiasedRoundedRect();
+ void drawTransformedAntialiasedRoundedRect();
+
+ void drawScaledImageRoundedRect_data();
+ void drawTransformedImageRoundedRect_data();
+ void drawImageRoundedRect();
+ void drawScaledImageRoundedRect();
+ void drawTransformedImageRoundedRect();
+
+ void drawScaledBorderPixmapRoundedRect_data();
+ void drawTransformedBorderPixmapRoundedRect_data();
+ void drawBorderPixmapRoundedRect();
+ void drawScaledBorderPixmapRoundedRect();
+ void drawTransformedBorderPixmapRoundedRect();
+
+ void drawTransformedTransparentImage_data();
+ void drawTransformedSemiTransparentImage_data();
+ void drawTransformedFilledImage_data();
+ void drawTransformedTransparentImage();
+ void drawTransformedSemiTransparentImage();
+ void drawTransformedFilledImage();
+
private:
void setupBrushes();
void createPrimitives();
@@ -185,6 +218,8 @@
void drawPrimitives_data_helper(bool fancypens);
void fillPrimitives_helper(QPainter *painter, PrimitiveType type, PrimitiveSet *s);
+ QTransform transformForAngle(qreal angle);
+
QPaintDevice *surface()
{
return new QPixmap(1024, 1024);
@@ -1123,6 +1158,474 @@
}
}
+QTransform tst_QPainter::transformForAngle(qreal angle)
+{
+ const qreal inv_dist_to_plane = 1. / 1024.;
+
+ QTransform transform;
+
+ QTransform rotTrans;
+ rotTrans.translate(-40, 0);
+ QTransform rotTrans2;
+ rotTrans2.translate(40, 0);
+
+ qreal rad = angle * 2. * M_PI / 360.;
+ qreal c = ::cos(rad);
+ qreal s = ::sin(rad);
+
+ qreal x = 0;
+ qreal y = 80;
+ qreal z = 0;
+
+ qreal len = x * x + y * y + z * z;
+ if (len != 1.) {
+ len = ::sqrt(len);
+ x /= len;
+ y /= len;
+ z /= len;
+ }
+
+ QTransform rot(x*x*(1-c)+c, x*y*(1-c)-z*s, x*z*(1-c)+y*s*inv_dist_to_plane,
+ y*x*(1-c)+z*s, y*y*(1-c)+c, y*z*(1-c)-x*s*inv_dist_to_plane,
+ 0, 0, 1);
+
+ transform *= rotTrans;
+ transform *= rot;
+ transform *= rotTrans2;
+
+ return transform;
+}
+
+void tst_QPainter::drawRoundedRect()
+{
+ QImage surface(100, 100, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ p.setPen(QPen(Qt::black, 1));
+ p.setBrush(Qt::red);
+
+ QBENCHMARK {
+ p.drawRoundedRect(QRectF(.5, .5, 80, 80), 10, 10);
+ }
+}
+
+void tst_QPainter::drawScaledRoundedRect()
+{
+ QImage surface(400, 400, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ p.setPen(QPen(Qt::black, 1));
+ p.setBrush(Qt::red);
+ p.scale(3, 3);
+
+ QBENCHMARK {
+ p.drawRoundedRect(10, 10, 80, 80, 10, 10);
+ }
+}
+
+void tst_QPainter::drawTransformedRoundedRect()
+{
+ QImage surface(400, 400, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ p.setPen(QPen(Qt::black, 1));
+ p.setBrush(Qt::red);
+
+ QBENCHMARK {
+ p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+ p.drawRoundedRect(100, 100, 80, 80, 10, 10);
+ }
+}
+
+void tst_QPainter::drawAntialiasedRoundedRect()
+{
+ QImage surface(100, 100, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ p.setRenderHint(QPainter::Antialiasing, true);
+ p.setPen(QPen(Qt::black, 1));
+ p.setBrush(Qt::red);
+
+ QBENCHMARK {
+ p.drawRoundedRect(QRectF(.5, .5, 80, 80), 10, 10);
+ }
+}
+
+void tst_QPainter::drawScaledAntialiasedRoundedRect_data()
+{
+ QTest::addColumn<float>("scale");
+
+ for (float i = 0; i < 3; i += .1)
+ QTest::newRow(QString(QLatin1String("scale=%1")).arg(i).toLatin1()) << i;
+}
+
+void tst_QPainter::drawScaledAntialiasedRoundedRect()
+{
+ QFETCH(float, scale);
+
+ QImage surface(400, 400, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ p.setRenderHint(QPainter::Antialiasing, true);
+ p.setPen(QPen(Qt::black, 1));
+ p.setBrush(Qt::red);
+ p.scale(scale, scale);
+
+ QBENCHMARK {
+ p.drawRoundedRect(10, 10, 80, 80, 10, 10);
+ }
+}
+
+void tst_QPainter::drawTransformedAntialiasedRoundedRect_data()
+{
+ QTest::addColumn<QTransform>("transform");
+
+ for (float angle = 0; angle < 360; angle += 10)
+ QTest::newRow(QString(QLatin1String("angle=%1")).arg(angle).toLatin1()) << transformForAngle(angle);
+}
+
+void tst_QPainter::drawTransformedAntialiasedRoundedRect()
+{
+ QFETCH(QTransform, transform);
+
+ QImage surface(400, 400, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ p.setRenderHint(QPainter::Antialiasing, true);
+ p.setPen(QPen(Qt::black, 1));
+ p.setBrush(Qt::red);
+
+ QBENCHMARK {
+ p.setWorldTransform(transform);
+ p.drawRoundedRect(100, 100, 80, 80, 10, 10);
+ }
+}
+
+void tst_QPainter::drawImageRoundedRect()
+{
+ //setup image
+ const int radius = 10;
+ QImage rectImage(81, 81, QImage::Format_ARGB32_Premultiplied);
+ rectImage.fill(0);
+ QPainter rp(&rectImage);
+ rp.setRenderHint(QPainter::Antialiasing);
+ rp.setPen(Qt::black);
+ rp.setBrush(Qt::red);
+ rp.drawRoundedRect(QRectF(.5, .5, 80, 80), radius, radius);
+
+ //setup surface
+ QImage surface(100, 100, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ QBENCHMARK {
+ p.drawImage(0,0, rectImage);
+ }
+}
+
+void tst_QPainter::drawScaledImageRoundedRect_data()
+{
+ QTest::addColumn<int>("imageType");
+
+ QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+ QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawScaledImageRoundedRect()
+{
+ QFETCH(int, imageType);
+
+ //setup image
+ const int radius = 10;
+ QImage rectImage(81, 81, (QImage::Format)imageType);
+ rectImage.fill(0);
+ QPainter rp(&rectImage);
+ rp.setRenderHint(QPainter::Antialiasing);
+ rp.setPen(Qt::black);
+ rp.setBrush(Qt::red);
+ rp.drawRoundedRect(QRectF(.5, .5, 80, 80), radius, radius);
+
+ //setup surface
+ QImage surface(400, 400, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+ p.scale(3, 3);
+
+ QBENCHMARK {
+ p.drawImage(0,0, rectImage);
+ }
+}
+
+void tst_QPainter::drawTransformedImageRoundedRect_data()
+{
+ QTest::addColumn<int>("imageType");
+
+ QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+ QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawTransformedImageRoundedRect()
+{
+ QFETCH(int, imageType);
+
+ //setup image
+ const int radius = 10;
+ QImage rectImage(81, 81, (QImage::Format)imageType);
+ rectImage.fill(0);
+ QPainter rp(&rectImage);
+ rp.setRenderHint(QPainter::Antialiasing);
+ rp.setPen(Qt::black);
+ rp.setBrush(Qt::red);
+ rp.drawRoundedRect(QRectF(.5, .5, 80, 80), radius, radius);
+
+ //setup surface
+ QImage surface(400, 400, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ QBENCHMARK {
+ p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+ p.drawImage(100,100, rectImage);
+ }
+}
+
+//code from QmlGraphicsRectangle for drawing rounded rects
+void tst_QPainter::drawBorderPixmapRoundedRect()
+{
+ //setup image
+ const int pw = 1;
+ const int radius = 10;
+ QImage rectImage(radius*2 + 3 + pw*2, radius*2 + 3 + pw*2, QImage::Format_ARGB32_Premultiplied);
+ rectImage.fill(0);
+ QPainter rp(&rectImage);
+ rp.setRenderHint(QPainter::Antialiasing);
+ rp.setPen(Qt::black);
+ rp.setBrush(Qt::red);
+ if (pw%2)
+ rp.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, rectImage.width()-(pw+1), rectImage.height()-(pw+1)), radius, radius);
+ else
+ rp.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, rectImage.width()-pw, rectImage.height()-pw), radius, radius);
+ QPixmap rectPixmap = QPixmap::fromImage(rectImage);
+
+ //setup surface
+ QImage surface(100, 100, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ QBENCHMARK {
+ const int pw = 2;
+ int width = 80;
+ int height = 80;
+
+ int xOffset = (rectPixmap.width()-1)/2;
+ int yOffset = (rectPixmap.height()-1)/2;
+ Q_ASSERT(rectPixmap.width() == 2*xOffset + 1);
+ Q_ASSERT(rectPixmap.height() == 2*yOffset + 1);
+
+ QMargins margins(xOffset, yOffset, xOffset, yOffset);
+ QTileRules rules(Qt::StretchTile, Qt::StretchTile);
+ //NOTE: even though our item may have qreal-based width and height, qDrawBorderPixmap only supports QRects
+ qDrawBorderPixmap(&p, QRect(-pw/2, -pw/2, width+pw, height+pw), margins, rectPixmap, rectPixmap.rect(), margins, rules);
+ }
+}
+
+void tst_QPainter::drawScaledBorderPixmapRoundedRect_data()
+{
+ QTest::addColumn<float>("scale");
+ QTest::addColumn<int>("imageType");
+
+ for (float i = 0; i < 3; i += .1)
+ QTest::newRow(QString(QLatin1String("scale=%1; imagetype=ARGB32_Pre")).arg(i).toLatin1()) << i << (int)QImage::Format_ARGB32_Premultiplied;
+ //for (float i = 0; i < 3; i += .1)
+ // QTest::newRow(QString(QLatin1String("scale=%1; imagetype=ARGB8565_Pre")).arg(i).toLatin1()) << i << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+//code from QmlGraphicsRectangle for drawing rounded rects
+void tst_QPainter::drawScaledBorderPixmapRoundedRect()
+{
+ QFETCH(float, scale);
+ QFETCH(int, imageType);
+
+ //setup image
+ const int pw = 1;
+ const int radius = 10;
+ QImage rectImage(radius*2 + 3 + pw*2, radius*2 + 3 + pw*2, (QImage::Format)imageType);
+ rectImage.fill(0);
+ QPainter rp(&rectImage);
+ rp.setRenderHint(QPainter::Antialiasing);
+ rp.setPen(Qt::black);
+ rp.setBrush(Qt::red);
+ if (pw%2)
+ rp.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, rectImage.width()-(pw+1), rectImage.height()-(pw+1)), radius, radius);
+ else
+ rp.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, rectImage.width()-pw, rectImage.height()-pw), radius, radius);
+
+ QPixmap rectPixmap = QPixmap::fromImage(rectImage);
+
+ //setup surface
+ QImage surface(400, 400, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+ p.scale(scale, scale);
+
+ QBENCHMARK {
+ const int pw = 2;
+ int width = 80;
+ int height = 80;
+
+ int xOffset = (rectPixmap.width()-1)/2;
+ int yOffset = (rectPixmap.height()-1)/2;
+ Q_ASSERT(rectPixmap.width() == 2*xOffset + 1);
+ Q_ASSERT(rectPixmap.height() == 2*yOffset + 1);
+
+ QMargins margins(xOffset, yOffset, xOffset, yOffset);
+ QTileRules rules(Qt::StretchTile, Qt::StretchTile);
+ qDrawBorderPixmap(&p, QRect(-pw/2, -pw/2, width+pw, height+pw), margins, rectPixmap, rectPixmap.rect(), margins, rules);
+ }
+}
+
+void tst_QPainter::drawTransformedBorderPixmapRoundedRect_data()
+{
+ QTest::addColumn<QTransform>("transform");
+ QTest::addColumn<int>("imageType");
+
+ for (float angle = 0; angle < 360; angle += 10)
+ QTest::newRow(QString(QLatin1String("angle=%1; imagetype=ARGB32_Pre")).arg(angle).toLatin1()) << transformForAngle(angle) << (int)QImage::Format_ARGB32_Premultiplied;
+ //for (float angle = 0; angle < 360; angle += 10)
+ // QTest::newRow(QString(QLatin1String("angle=%1; imagetype=ARGB8565_Pre")).arg(angle).toLatin1()) << transformForAngle(angle) << (int)QImage::Format_ARGB8565_Premultiplied;
+
+}
+
+//code from QmlGraphicsRectangle for drawing rounded rects
+void tst_QPainter::drawTransformedBorderPixmapRoundedRect()
+{
+ QFETCH(QTransform, transform);
+ QFETCH(int, imageType);
+
+ //setup image
+ const int pw = 1;
+ const int radius = 10;
+ QImage rectImage(radius*2 + 3 + pw*2, radius*2 + 3 + pw*2, (QImage::Format)imageType);
+ rectImage.fill(0);
+ QPainter rp(&rectImage);
+ rp.setRenderHint(QPainter::Antialiasing);
+ rp.setPen(Qt::black);
+ rp.setBrush(Qt::red);
+ if (pw%2)
+ rp.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, rectImage.width()-(pw+1), rectImage.height()-(pw+1)), radius, radius);
+ else
+ rp.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, rectImage.width()-pw, rectImage.height()-pw), radius, radius);
+
+ QPixmap rectPixmap = QPixmap::fromImage(rectImage);
+
+ //setup surface
+ QImage surface(400, 400, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ QBENCHMARK {
+ p.setWorldTransform(transform);
+ const int pw = 2;
+ int width = 80;
+ int height = 80;
+
+ int xOffset = (rectPixmap.width()-1)/2;
+ int yOffset = (rectPixmap.height()-1)/2;
+ Q_ASSERT(rectPixmap.width() == 2*xOffset + 1);
+ Q_ASSERT(rectPixmap.height() == 2*yOffset + 1);
+
+ QMargins margins(xOffset, yOffset, xOffset, yOffset);
+ QTileRules rules(Qt::StretchTile, Qt::StretchTile);
+ qDrawBorderPixmap(&p, QRect(-pw/2, -pw/2, width+pw, height+pw), margins, rectPixmap, rectPixmap.rect(), margins, rules);
+ }
+}
+
+void tst_QPainter::drawTransformedTransparentImage_data()
+{
+ QTest::addColumn<int>("imageType");
+
+ QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+ QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawTransformedTransparentImage()
+{
+ QFETCH(int, imageType);
+
+ //setup image
+ QImage transImage(200, 200, (QImage::Format)imageType);
+ transImage.fill(0);
+
+ //setup surface
+ QImage surface(200, 200, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ QBENCHMARK {
+ p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+ p.drawImage(0,0, transImage);
+ }
+}
+
+void tst_QPainter::drawTransformedSemiTransparentImage_data()
+{
+ QTest::addColumn<int>("imageType");
+
+ QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+ QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawTransformedSemiTransparentImage()
+{
+ QFETCH(int, imageType);
+
+ //setup image
+ QImage transImage(200, 200, (QImage::Format)imageType);
+ transImage.fill(QColor(0,0,0, 128).rgba());
+
+ //setup surface
+ QImage surface(200, 200, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ QBENCHMARK {
+ p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+ p.drawImage(0,0, transImage);
+ }
+}
+
+void tst_QPainter::drawTransformedFilledImage_data()
+{
+ QTest::addColumn<int>("imageType");
+
+ QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+ QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawTransformedFilledImage()
+{
+ QFETCH(int, imageType);
+
+ //setup image
+ QImage filledImage(200, 200, (QImage::Format)imageType);
+ filledImage.fill(QColor(0,0,0).rgb());
+
+ //setup surface
+ QImage surface(200, 200, QImage::Format_RGB16);
+ surface.fill(QColor(255,255,255).rgb());
+ QPainter p(&surface);
+
+ QBENCHMARK {
+ p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+ p.drawImage(0,0, filledImage);
+ }
+}
QTEST_MAIN(tst_QPainter)
--- a/tests/benchmarks/qscriptengine/qscriptengine.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qscriptengine/qscriptengine.pro Fri Mar 12 15:46:37 2010 +0200
@@ -5,3 +5,8 @@
SOURCES += tst_qscriptengine.cpp
QT += script
+
+symbian* {
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 // Min 128kB, Max 32MB
+ TARGET.EPOCSTACKSIZE = 0x14000
+}
--- a/tests/benchmarks/qscriptengine/tst_qscriptengine.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qscriptengine/tst_qscriptengine.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -256,8 +256,13 @@
QScriptEngine eng;
eng.globalObject().setProperty("fun", eng.newFunction(native_function));
QBENCHMARK{
+#if !defined(Q_OS_SYMBIAN)
eng.evaluate("var w = 0; for (i = 0; i < 100000; ++i) {\n"
" w += fun() + fun(); w -= fun(); fun(); w -= fun(); }");
+#else
+ eng.evaluate("var w = 0; for (i = 0; i < 25000; ++i) {\n"
+ " w += fun() + fun(); w -= fun(); fun(); w -= fun(); }");
+#endif
}
}
--- a/tests/benchmarks/qstring/main.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qstring/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -42,6 +42,12 @@
#include <QFile>
#include <qtest.h>
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+// Application private dir is default serach path for files, so SRCDIR can be set to empty
+#define SRCDIR ""
+#endif
+
class tst_QString: public QObject
{
Q_OBJECT
--- a/tests/benchmarks/qstring/qstring.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qstring/qstring.pro Fri Mar 12 15:46:37 2010 +0200
@@ -5,8 +5,12 @@
wince*:{
DEFINES += SRCDIR=\\\"\\\"
+} else:symbian* {
+ addFiles.sources = utf-8.txt
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+ TARGET.EPOCHEAPSIZE="0x100 0x1000000"
} else {
DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
-
--- a/tests/benchmarks/qtext/main.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qtext/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -44,11 +44,16 @@
#include <QTextDocumentWriter>
#include <QTextLayout>
#include <QTextCursor>
+#include <private/qtextcontrol_p.h>
+#include <qmath.h>
#include <QFile>
+#include <QPainter>
#include <QBuffer>
#include <qtest.h>
#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+// Application private dir is default serach path for files, so SRCDIR can be set to empty
#define SRCDIR ""
#endif
@@ -60,6 +65,7 @@
public:
tst_QText() {
m_lorem = QString::fromLatin1("Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.");
+ m_shortLorem = QString::fromLatin1("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.");
}
private slots:
@@ -73,8 +79,26 @@
void odfWriting_text();
void odfWriting_images();
+ void constructControl();
+ void constructDocument();
+
+ void layout();
+ void paintLayoutToPixmap();
+ void paintLayoutToPixmap_painterFill();
+
+ void document();
+ void paintDocToPixmap();
+ void paintDocToPixmap_painterFill();
+
+ void control();
+ void paintControlToPixmap();
+ void paintControlToPixmap_painterFill();
+
private:
+ QSize setupTextLayout(QTextLayout *layout);
+
QString m_lorem;
+ QString m_shortLorem;
};
void tst_QText::loadHtml_data()
@@ -111,7 +135,11 @@
QTest::newRow("lorem") << m_lorem;
QTest::newRow("short") << QString::fromLatin1("Lorem ipsum dolor sit amet");
+#if !defined(Q_OS_SYMBIAN)
QFile file(QString::fromLatin1(SRCDIR) + QLatin1String("/bidi.txt"));
+#else
+ QFile file( SRCDIR "bidi.txt" );
+#endif
QVERIFY(file.open(QFile::ReadOnly));
QByteArray data = file.readAll();
QVERIFY(data.count() > 1000);
@@ -199,6 +227,189 @@
delete doc;
}
+QSize tst_QText::setupTextLayout(QTextLayout *layout)
+{
+ bool wrap = true;
+ int wrapWidth = 300;
+ layout->setCacheEnabled(true);
+
+ int height = 0;
+ qreal widthUsed = 0;
+ qreal lineWidth = 0;
+
+ //set manual width
+ if (wrap)
+ lineWidth = wrapWidth;
+
+ layout->beginLayout();
+
+ while (1) {
+ QTextLine line = layout->createLine();
+ if (!line.isValid())
+ break;
+
+ if (wrap)
+ line.setLineWidth(lineWidth);
+ }
+ layout->endLayout();
+
+ for (int i = 0; i < layout->lineCount(); ++i) {
+ QTextLine line = layout->lineAt(i);
+ widthUsed = qMax(widthUsed, line.naturalTextWidth());
+ line.setPosition(QPointF(0, height));
+ height += int(line.height());
+ }
+ return QSize(qCeil(widthUsed), height);
+}
+
+void tst_QText::constructControl()
+{
+ QTextControl *control = new QTextControl;
+ delete control;
+
+ QBENCHMARK {
+ QTextControl *control = new QTextControl;
+ delete control;
+ }
+}
+
+void tst_QText::constructDocument()
+{
+ QTextDocument *doc = new QTextDocument;
+ delete doc;
+
+ QBENCHMARK {
+ QTextDocument *doc = new QTextDocument;
+ delete doc;
+ }
+}
+
+void tst_QText::layout()
+{
+ QTextLayout layout(m_shortLorem);
+ setupTextLayout(&layout);
+
+ QBENCHMARK {
+ QTextLayout layout(m_shortLorem);
+ setupTextLayout(&layout);
+ }
+}
+
+void tst_QText::paintLayoutToPixmap()
+{
+ QTextLayout layout(m_shortLorem);
+ QSize size = setupTextLayout(&layout);
+
+ QBENCHMARK {
+ QPixmap img(size);
+ img.fill(Qt::transparent);
+ QPainter p(&img);
+ layout.draw(&p, QPointF(0, 0));
+ }
+}
+
+void tst_QText::paintLayoutToPixmap_painterFill()
+{
+ QTextLayout layout(m_shortLorem);
+ QSize size = setupTextLayout(&layout);
+
+ QBENCHMARK {
+ QPixmap img(size);
+ QPainter p(&img);
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
+ p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+ layout.draw(&p, QPointF(0, 0));
+ }
+}
+
+void tst_QText::document()
+{
+ QTextDocument *doc = new QTextDocument;
+
+ QBENCHMARK {
+ QTextDocument *doc = new QTextDocument;
+ doc->setHtml(m_shortLorem);
+ }
+}
+
+void tst_QText::paintDocToPixmap()
+{
+ QTextDocument *doc = new QTextDocument;
+ doc->setHtml(m_shortLorem);
+ doc->setTextWidth(300);
+ QSize size = doc->size().toSize();
+
+ QBENCHMARK {
+ QPixmap img(size);
+ img.fill(Qt::transparent);
+ QPainter p(&img);
+ doc->drawContents(&p);
+ }
+}
+
+void tst_QText::paintDocToPixmap_painterFill()
+{
+ QTextDocument *doc = new QTextDocument;
+ doc->setHtml(m_shortLorem);
+ doc->setTextWidth(300);
+ QSize size = doc->size().toSize();
+
+ QBENCHMARK {
+ QPixmap img(size);
+ QPainter p(&img);
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
+ p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+ doc->drawContents(&p);
+ }
+}
+
+void tst_QText::control()
+{
+ QTextControl *control = new QTextControl(m_shortLorem);
+
+ QBENCHMARK {
+ QTextControl *control = new QTextControl;
+ QTextDocument *doc = control->document();
+ doc->setHtml(m_shortLorem);
+ }
+}
+
+void tst_QText::paintControlToPixmap()
+{
+ QTextControl *control = new QTextControl;
+ QTextDocument *doc = control->document();
+ doc->setHtml(m_shortLorem);
+ doc->setTextWidth(300);
+ QSize size = doc->size().toSize();
+
+ QBENCHMARK {
+ QPixmap img(size);
+ img.fill(Qt::transparent);
+ QPainter p(&img);
+ control->drawContents(&p, QRectF(QPointF(0, 0), QSizeF(size)));
+ }
+}
+
+void tst_QText::paintControlToPixmap_painterFill()
+{
+ QTextControl *control = new QTextControl;
+ QTextDocument *doc = control->document();
+ doc->setHtml(m_shortLorem);
+ doc->setTextWidth(300);
+ QSize size = doc->size().toSize();
+
+ QBENCHMARK {
+ QPixmap img(size);
+ QPainter p(&img);
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+ p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
+ p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+ control->drawContents(&p, QRectF(QPointF(0, 0), QSizeF(size)));
+ }
+}
+
QTEST_MAIN(tst_QText)
#include "main.moc"
--- a/tests/benchmarks/qtext/qtext.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qtext/qtext.pro Fri Mar 12 15:46:37 2010 +0200
@@ -4,4 +4,11 @@
SOURCES += main.cpp
-DEFINES += SRCDIR=\\\"$$PWD/\\\"
+symbian* {
+ TARGET.CAPABILITY = ALL -TCB
+ addFiles.sources = bidi.txt
+ addFiles.path = .
+ DEPLOYMENT += addFiles
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
\ No newline at end of file
--- a/tests/benchmarks/uimodels/GraphicsViewBenchmark/tests/itemrecyclinglist/listitemcontainer.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/uimodels/GraphicsViewBenchmark/tests/itemrecyclinglist/listitemcontainer.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -189,9 +189,8 @@
if (!listItem)
return;
- QGraphicsEffect* oldEffect = listItem->graphicsEffect();
+ // Deletes the effect.
listItem->setGraphicsEffect(0);
- delete oldEffect;
if (enabled) {
ListItemCache* cache = new ListItemCache;
--- a/tools/assistant/lib/fulltextsearch/qclucene-config_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/fulltextsearch/qclucene-config_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -529,7 +529,7 @@
/* Conditional Debugging */
/* #undef _CL__CND_DEBUG */
-/* debuging option */
+/* debugging option */
/* #undef _DEBUG */
/* Number of bits in a file offset, on hosts where this is settable. */
--- a/tools/assistant/lib/qhelpcollectionhandler.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpcollectionhandler.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -252,7 +252,7 @@
"Key TEXT PRIMARY KEY, "
"Value BLOB )");
- foreach (QString q, tables) {
+ foreach (const QString &q, tables) {
if (!query->exec(q))
return false;
}
@@ -323,7 +323,7 @@
idsToInsert.removeAll(m_query.value(1).toString());
}
- foreach (QString id, idsToInsert) {
+ foreach (const QString &id, idsToInsert) {
m_query.prepare(QLatin1String("INSERT INTO FilterAttributeTable VALUES(NULL, ?)"));
m_query.bindValue(0, id);
m_query.exec();
@@ -346,7 +346,7 @@
m_query.bindValue(0, nameId);
m_query.exec();
- foreach (QString att, attributes) {
+ foreach (const QString &att, attributes) {
m_query.prepare(QLatin1String("INSERT INTO FilterTable VALUES(?, ?)"));
m_query.bindValue(0, nameId);
m_query.bindValue(1, attributeMap[att]);
@@ -400,7 +400,7 @@
return false;
addFilterAttributes(reader.filterAttributes());
- foreach (QString filterName, reader.customFilters())
+ foreach (const QString &filterName, reader.customFilters())
addCustomFilter(filterName, reader.filterAttributes(filterName));
optimizeDatabase(fileName);
@@ -499,7 +499,7 @@
while (m_query.next())
atts.insert(m_query.value(0).toString());
- foreach (QString s, attributes) {
+ foreach (const QString &s, attributes) {
if (!atts.contains(s)) {
m_query.prepare(QLatin1String("INSERT INTO FilterAttributeTable VALUES(NULL, ?)"));
m_query.bindValue(0, s);
--- a/tools/assistant/lib/qhelpcontentwidget.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpcontentwidget.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -253,7 +253,7 @@
const QStringList fileNames = m_helpEngine->orderedFileNameList;
m_mutex.unlock();
- foreach (QString dbFileName, fileNames) {
+ foreach (const QString &dbFileName, fileNames) {
m_mutex.lock();
if (m_abort) {
m_abort = false;
--- a/tools/assistant/lib/qhelpdbreader.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpdbreader.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -515,7 +515,7 @@
QString QHelpDBReader::mergeList(const QStringList &list) const
{
QString str;
- foreach (QString s, list)
+ foreach (const QString &s, list)
str.append(QLatin1Char('\'') + quote(s) + QLatin1String("\', "));
if (str.endsWith(QLatin1String(", ")))
str = str.left(str.length()-2);
@@ -567,14 +567,14 @@
bool needUpdate = !m_viewAttributes.count();
- foreach (QString s, attributes)
+ foreach (const QString &s, attributes)
m_viewAttributes.remove(s);
if (m_viewAttributes.count() || needUpdate) {
m_viewAttributes.clear();
m_indicesCache = indexIds;
}
- foreach (QString s, attributes)
+ foreach (const QString &s, attributes)
m_viewAttributes.insert(s);
m_useAttributesCache = true;
return true;
--- a/tools/assistant/lib/qhelpenginecore.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpenginecore.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -168,7 +168,7 @@
it is removed by calling removeCustomFilter(). customFilters() returns
all defined filters.
- The help engine also offers the possiblity to set and read values
+ The help engine also offers the possibility to set and read values
in a persistant way comparable to ini files or Windows registry
entries. For more information see setValue() or value().
@@ -362,7 +362,7 @@
if (d->setup()) {
const QHelpCollectionHandler::DocInfoList docList =
d->collectionHandler->registeredDocumentations();
- foreach(const QHelpCollectionHandler::DocInfo info, docList) {
+ foreach(const QHelpCollectionHandler::DocInfo &info, docList) {
if (info.namespaceName == namespaceName) {
if (QDir::isAbsolutePath(info.fileName))
return QDir::cleanPath(info.fileName);
@@ -386,7 +386,7 @@
if (!d->setup())
return list;
const QHelpCollectionHandler::DocInfoList docList = d->collectionHandler->registeredDocumentations();
- foreach(const QHelpCollectionHandler::DocInfo info, docList) {
+ foreach(const QHelpCollectionHandler::DocInfo &info, docList) {
list.append(info.namespaceName);
}
return list;
@@ -531,7 +531,7 @@
url.setAuthority(namespaceName);
const QStringList files = reader->files(filterAttributes, extensionFilter);
- foreach (const QString file, files) {
+ foreach (const QString &file, files) {
url.setPath(QLatin1String("/") + file);
res.append(url);
}
--- a/tools/assistant/lib/qhelpgenerator.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpgenerator.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -203,7 +203,7 @@
addProgress(1.0);
emit statusChanged(tr("Insert custom filters..."));
- foreach (QHelpDataCustomFilter f, helpData->customFilters()) {
+ foreach (const QHelpDataCustomFilter &f, helpData->customFilters()) {
if (!registerCustomFilter(f.name, f.filterAttributes, true)) {
cleanupDB();
return false;
@@ -367,7 +367,7 @@
"Name Text, "
"Value BLOB )");
- foreach (QString q, tables) {
+ foreach (const QString &q, tables) {
if (!d->query->exec(q)) {
d->error = tr("Cannot create tables!");
return false;
@@ -629,7 +629,7 @@
idsToInsert.removeAll(d->query->value(1).toString());
}
- foreach (QString id, idsToInsert) {
+ foreach (const QString &id, idsToInsert) {
d->query->prepare(QLatin1String("INSERT INTO FilterAttributeTable VALUES(NULL, ?)"));
d->query->bindValue(0, id);
d->query->exec();
@@ -664,7 +664,7 @@
d->query->bindValue(0, nameId);
d->query->exec();
- foreach (QString att, filterAttribs) {
+ foreach (const QString &att, filterAttribs) {
d->query->prepare(QLatin1String("INSERT INTO FilterTable VALUES(?, ?)"));
d->query->bindValue(0, nameId);
d->query->bindValue(1, attributeMap[att]);
@@ -687,7 +687,7 @@
indexId = d->query->value(0).toInt() + 1;
QList<int> filterAtts;
- foreach (QString filterAtt, filterAttributes) {
+ foreach (const QString &filterAtt, filterAttributes) {
d->query->prepare(QLatin1String("SELECT Id FROM FilterAttributeTable WHERE Name=?"));
d->query->bindValue(0, filterAtt);
d->query->exec();
@@ -704,7 +704,7 @@
int i = 0;
d->query->exec(QLatin1String("BEGIN"));
- foreach (QHelpDataIndexItem itm, keywords) {
+ foreach (const QHelpDataIndexItem &itm, keywords) {
pos = itm.reference.indexOf(QLatin1Char('#'));
fileName = itm.reference.left(pos);
if (pos > -1)
@@ -773,7 +773,7 @@
}
// associate the filter attributes
- foreach (QString filterAtt, filterAttributes) {
+ foreach (const QString &filterAtt, filterAttributes) {
d->query->prepare(QLatin1String("INSERT INTO ContentsFilterTable (FilterAttributeId, ContentsId) "
"SELECT Id, ? FROM FilterAttributeTable WHERE Name=?"));
d->query->bindValue(0, contentId);
@@ -798,7 +798,7 @@
while (d->query->next())
atts.insert(d->query->value(0).toString());
- foreach (QString s, attributes) {
+ foreach (const QString &s, attributes) {
if (!atts.contains(s)) {
d->query->prepare(QLatin1String("INSERT INTO FilterAttributeTable VALUES(NULL, ?)"));
d->query->bindValue(0, s);
--- a/tools/assistant/lib/qhelpindexwidget.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpindexwidget.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -162,7 +162,7 @@
QSet<QString> indicesSet;
m_mutex.unlock();
- foreach (QString dbFileName, m_helpEngine->fileNameReaderMap.keys()) {
+ foreach (const QString &dbFileName, m_helpEngine->fileNameReaderMap.keys()) {
m_mutex.lock();
if (m_abort) {
m_mutex.unlock();
@@ -178,7 +178,7 @@
QStringList lst = reader.indicesForFilter(atts);
if (!lst.isEmpty()) {
m_mutex.lock();
- foreach (QString s, lst)
+ foreach (const QString &s, lst)
indicesSet.insert(s);
if (m_abort) {
m_mutex.unlock();
@@ -317,7 +317,7 @@
if (!wildcard.isEmpty()) {
QRegExp regExp(wildcard, Qt::CaseInsensitive);
regExp.setPatternSyntax(QRegExp::Wildcard);
- foreach (QString index, d->indices) {
+ foreach (const QString &index, d->indices) {
if (index.contains(regExp)) {
lst.append(index);
if (perfectMatch == -1 && index.startsWith(filter, Qt::CaseInsensitive)) {
@@ -332,7 +332,7 @@
}
}
} else {
- foreach (QString index, d->indices) {
+ foreach (const QString &index, d->indices) {
if (index.contains(filter, Qt::CaseInsensitive)) {
lst.append(index);
if (perfectMatch == -1 && index.startsWith(filter, Qt::CaseInsensitive)) {
--- a/tools/assistant/lib/qhelpsearchengine.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchengine.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -214,7 +214,7 @@
search term
The QHelpSearchQuery class contains the field name and the associated search
- term. Depending on the field the search term might get split up into seperate
+ term. Depending on the field the search term might get split up into separate
terms to be parsed differently by the search engine.
\sa QHelpSearchQueryWidget
@@ -238,15 +238,15 @@
\value DEFAULT the default field provided by the search widget, several terms should be
split and stored in the word list except search terms enclosed in quotes.
- \value FUZZY a field only provided in use with clucene. Terms should be split in seperate
+ \value FUZZY a field only provided in use with clucene. Terms should be split in separate
words and passed to the search engine.
- \value WITHOUT a field only provided in use with clucene. Terms should be split in seperate
+ \value WITHOUT a field only provided in use with clucene. Terms should be split in separate
words and passed to the search engine.
- \value PHRASE a field only provided in use with clucene. Terms should not be split in seperate
+ \value PHRASE a field only provided in use with clucene. Terms should not be split in separate
words.
- \value ALL a field only provided in use with clucene. Terms should be split in seperate
+ \value ALL a field only provided in use with clucene. Terms should be split in separate
words and passed to the search engine
- \value ATLEAST a field only provided in use with clucene. Terms should be split in seperate
+ \value ATLEAST a field only provided in use with clucene. Terms should be split in separate
words and passed to the search engine
*/
--- a/tools/assistant/lib/qhelpsearchindexreader_default.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchindexreader_default.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -166,7 +166,7 @@
const QString fileName = it.key();
bool containsAll = true;
QStringList split = fileName.split(QLatin1String("@"));
- foreach (const QString attribute, attributes) {
+ foreach (const QString &attribute, attributes) {
if (!split.contains(attribute, Qt::CaseInsensitive)) {
containsAll = false;
break;
@@ -180,9 +180,9 @@
void Reader::setIndexFile(const QString &namespaceName, const QString &attributes)
{
- QString extention = namespaceName + QLatin1String("@") + attributes;
- indexFile = indexPath + QLatin1String("/indexdb40.") + extention;
- documentFile = indexPath + QLatin1String("/indexdoc40.") + extention;
+ QString extension = namespaceName + QLatin1String("@") + attributes;
+ indexFile = indexPath + QLatin1String("/indexdb40.") + extension;
+ documentFile = indexPath + QLatin1String("/indexdoc40.") + extension;
}
bool Reader::splitSearchTerm(const QString &searchTerm, QStringList *terms,
@@ -235,7 +235,7 @@
void Reader::searchInIndex(const QStringList &terms)
{
- foreach (const QString term, terms) {
+ foreach (const QString &term, terms) {
QVector<Document> documents;
for(IndexTable::ConstIterator it = searchIndexTable.begin();
@@ -254,7 +254,7 @@
DocumentInfo info;
QString title, url;
QVector<DocumentInfo> documentsInfo;
- foreach(const Document doc, documents) {
+ foreach(const Document &doc, documents) {
info.docNumber = doc.docNumber;
info.frequency = doc.frequency;
info.documentUrl = documentList.at(doc.docNumber).at(1);
@@ -519,7 +519,7 @@
mutex.unlock();
QString queryTerm;
- foreach (const QHelpSearchQuery query, queryList) {
+ foreach (const QHelpSearchQuery &query, queryList) {
if (query.fieldName == QHelpSearchQuery::DEFAULT) {
queryTerm = query.wordList.at(0);
break;
@@ -541,7 +541,7 @@
// setup the reader
m_reader.setIndexPath(indexPath);
- foreach(const QString namespaceName, registeredDocs) {
+ foreach(const QString &namespaceName, registeredDocs) {
mutex.lock();
if (m_cancel) {
mutex.unlock();
@@ -553,7 +553,7 @@
const QList<QStringList> attributeSets =
engine.filterAttributeSets(namespaceName);
- foreach (QStringList attributes, attributeSets) {
+ foreach (const QStringList &attributes, attributeSets) {
// read all index files
m_reader.setIndexFile(namespaceName, attributes.join(QLatin1String("@")));
if (!m_reader.readIndex()) {
@@ -577,7 +577,7 @@
QVector<DocumentInfo> hits = m_reader.hits();
if (!hits.isEmpty()) {
if (termSeq.isEmpty()) {
- foreach (const DocumentInfo docInfo, hits) {
+ foreach (const DocumentInfo &docInfo, hits) {
mutex.lock();
if (m_cancel) {
mutex.unlock();
@@ -588,7 +588,7 @@
hitList.append(qMakePair(docInfo.documentTitle, docInfo.documentUrl));
}
} else {
- foreach (const DocumentInfo docInfo, hits) {
+ foreach (const DocumentInfo &docInfo, hits) {
mutex.lock();
if (m_cancel) {
mutex.unlock();
--- a/tools/assistant/lib/qhelpsearchindexwriter_default.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchindexwriter_default.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -104,7 +104,7 @@
return status;
QDataStream docStream(&docFile);
- foreach(const QStringList list, documentList) {
+ foreach(const QStringList &list, documentList) {
docStream << list.at(0);
docStream << list.at(1);
}
@@ -126,9 +126,9 @@
void Writer::setIndexFile(const QString &namespaceName, const QString &attributes)
{
- QString extention = namespaceName + QLatin1String("@") + attributes;
- indexFile = indexPath + QLatin1String("/indexdb40.") + extention;
- documentFile = indexPath + QLatin1String("/indexdoc40.") + extention;
+ QString extension = namespaceName + QLatin1String("@") + attributes;
+ indexFile = indexPath + QLatin1String("/indexdb40.") + extension;
+ documentFile = indexPath + QLatin1String("/indexdoc40.") + extension;
}
void Writer::insertInIndex(const QString &string, int docNum)
@@ -226,7 +226,7 @@
QStringList namespaces;
Writer writer(indexPath);
- foreach(const QString namespaceName, registeredDocs) {
+ foreach(const QString &namespaceName, registeredDocs) {
mutex.lock();
if (m_cancel) {
mutex.unlock();
@@ -242,7 +242,7 @@
const QList<QStringList> attributeSets =
engine.filterAttributeSets(namespaceName);
- foreach (QStringList attributes, attributeSets) {
+ foreach (const QStringList &attributes, attributeSets) {
// cleanup maybe old or unfinished files
writer.setIndexFile(namespaceName, attributes.join(QLatin1String("@")));
writer.removeIndex();
@@ -266,7 +266,7 @@
int docNum = 0;
const QStringList documentsList(documentsSet.toList());
- foreach(const QString url, documentsList) {
+ foreach(const QString &url, documentsList) {
if (m_cancel)
return;
@@ -347,7 +347,7 @@
const QList<QStringList> attributeSets =
engine.filterAttributeSets(namespaceName);
- foreach (QStringList attributes, attributeSets) {
+ foreach (const QStringList &attributes, attributeSets) {
writer.setIndexFile(namespaceName, attributes.join(QLatin1String("@")));
writer.removeIndex();
}
--- a/tools/assistant/lib/qhelpsearchquerywidget.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchquerywidget.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -120,6 +120,22 @@
// nothing todo
}
+ void retranslate()
+ {
+ simpleSearchLabel->setText(QHelpSearchQueryWidget::tr("Search for:"));
+ prevQueryButton->setToolTip(QHelpSearchQueryWidget::tr("Previous search"));
+ nextQueryButton->setToolTip(QHelpSearchQueryWidget::tr("Next search"));
+ searchButton->setText(QHelpSearchQueryWidget::tr("Search"));
+#ifdef QT_CLUCENE_SUPPORT
+ advancedSearchLabel->setText(QHelpSearchQueryWidget::tr("Advanced search"));
+ similarLabel->setText(QHelpSearchQueryWidget::tr("words <B>similar</B> to:"));
+ withoutLabel->setText(QHelpSearchQueryWidget::tr("<B>without</B> the words:"));
+ exactLabel->setText(QHelpSearchQueryWidget::tr("with <B>exact phrase</B>:"));
+ allLabel->setText(QHelpSearchQueryWidget::tr("with <B>all</B> of the words:"));
+ atLeastLabel->setText(QHelpSearchQueryWidget::tr("with <B>at least one</B> of the words:"));
+#endif
+ }
+
QString escapeString(const QString &text)
{
QString retValue = text;
@@ -132,15 +148,15 @@
<< QLatin1String("}") << QLatin1String("~");
// make sure we won't end up with an empty string
- foreach (const QString escapeChar, escapableCharsList) {
+ foreach (const QString &escapeChar, escapableCharsList) {
if (retValue.contains(escapeChar))
retValue.replace(escapeChar, QLatin1String(""));
}
if (retValue.trimmed().isEmpty())
return retValue;
- retValue = text; // now realy escape the string...
- foreach (const QString escapeChar, escapableCharsList) {
+ retValue = text; // now really escape the string...
+ foreach (const QString &escapeChar, escapableCharsList) {
if (retValue.contains(escapeChar))
retValue.replace(escapeChar, escape + escapeChar);
}
@@ -301,7 +317,7 @@
QStringList lst = similarQuery->text().split(exp, QString::SkipEmptyParts);
if (!lst.isEmpty()) {
QStringList fuzzy;
- foreach (const QString term, lst)
+ foreach (const QString &term, lst)
fuzzy += buildTermList(escapeString(term));
queryList.append(QHelpSearchQuery(QHelpSearchQuery::FUZZY, fuzzy));
}
@@ -309,7 +325,7 @@
lst = withoutQuery->text().split(exp, QString::SkipEmptyParts);
if (!lst.isEmpty()) {
QStringList without;
- foreach (const QString term, lst)
+ foreach (const QString &term, lst)
without.append(escapeString(term));
queryList.append(QHelpSearchQuery(QHelpSearchQuery::WITHOUT, without));
}
@@ -323,7 +339,7 @@
lst = allQuery->text().split(exp, QString::SkipEmptyParts);
if (!lst.isEmpty()) {
QStringList all;
- foreach (const QString term, lst)
+ foreach (const QString &term, lst)
all.append(escapeString(term));
queryList.append(QHelpSearchQuery(QHelpSearchQuery::ALL, all));
}
@@ -331,7 +347,7 @@
lst = atLeastQuery->text().split(exp, QString::SkipEmptyParts);
if (!lst.isEmpty()) {
QStringList atLeast;
- foreach (const QString term, lst)
+ foreach (const QString &term, lst)
atLeast += buildTermList(escapeString(term));
queryList.append(QHelpSearchQuery(QHelpSearchQuery::ATLEAST, atLeast));
}
@@ -360,6 +376,13 @@
friend class QHelpSearchQueryWidget;
bool simpleSearch;
+ QLabel *simpleSearchLabel;
+ QLabel *advancedSearchLabel;
+ QLabel *similarLabel;
+ QLabel *withoutLabel;
+ QLabel *exactLabel;
+ QLabel *allLabel;
+ QLabel *atLeastLabel;
QPushButton *searchButton;
QWidget* advancedSearchWidget;
QToolButton *showHideAdvancedSearchButton;
@@ -408,19 +431,17 @@
vLayout->setMargin(0);
QHBoxLayout* hBoxLayout = new QHBoxLayout();
- QLabel *label = new QLabel(tr("Search for:"), this);
+ d->simpleSearchLabel = new QLabel(this);
d->defaultQuery = new QLineEdit(this);
d->defaultQuery->setCompleter(&d->searchCompleter);
d->prevQueryButton = new QToolButton(this);
d->prevQueryButton->setArrowType(Qt::LeftArrow);
- d->prevQueryButton->setToolTip(tr("Previous search"));
d->prevQueryButton->setEnabled(false);
d->nextQueryButton = new QToolButton(this);
d->nextQueryButton->setArrowType(Qt::RightArrow);
- d->nextQueryButton->setToolTip(tr("Next search"));
d->nextQueryButton->setEnabled(false);
- d->searchButton = new QPushButton(tr("Search"), this);
- hBoxLayout->addWidget(label);
+ d->searchButton = new QPushButton(this);
+ hBoxLayout->addWidget(d->simpleSearchLabel);
hBoxLayout->addWidget(d->defaultQuery);
hBoxLayout->addWidget(d->prevQueryButton);
hBoxLayout->addWidget(d->nextQueryButton);
@@ -439,15 +460,15 @@
d->showHideAdvancedSearchButton->setText(QLatin1String("+"));
d->showHideAdvancedSearchButton->setMinimumSize(25, 20);
- label = new QLabel(tr("Advanced search"), this);
+ d->advancedSearchLabel = new QLabel(this);
QSizePolicy sizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
- sizePolicy.setHeightForWidth(label->sizePolicy().hasHeightForWidth());
- label->setSizePolicy(sizePolicy);
+ sizePolicy.setHeightForWidth(d->advancedSearchLabel->sizePolicy().hasHeightForWidth());
+ d->advancedSearchLabel->setSizePolicy(sizePolicy);
QFrame* hLine = new QFrame(this);
hLine->setFrameStyle(QFrame::HLine);
hBoxLayout->addWidget(d->showHideAdvancedSearchButton);
- hBoxLayout->addWidget(label);
+ hBoxLayout->addWidget(d->advancedSearchLabel);
hBoxLayout->addWidget(hLine);
vLayout->addLayout(hBoxLayout);
@@ -457,32 +478,32 @@
QGridLayout *gLayout = new QGridLayout(d->advancedSearchWidget);
gLayout->setMargin(0);
- label = new QLabel(tr("words <B>similar</B> to:"), this);
- gLayout->addWidget(label, 0, 0);
+ d->similarLabel = new QLabel(this);
+ gLayout->addWidget(d->similarLabel, 0, 0);
d->similarQuery = new QLineEdit(this);
d->similarQuery->setCompleter(&d->searchCompleter);
gLayout->addWidget(d->similarQuery, 0, 1);
- label = new QLabel(tr("<B>without</B> the words:"), this);
- gLayout->addWidget(label, 1, 0);
+ d->withoutLabel = new QLabel(this);
+ gLayout->addWidget(d->withoutLabel, 1, 0);
d->withoutQuery = new QLineEdit(this);
d->withoutQuery->setCompleter(&d->searchCompleter);
gLayout->addWidget(d->withoutQuery, 1, 1);
- label = new QLabel(tr("with <B>exact phrase</B>:"), this);
- gLayout->addWidget(label, 2, 0);
+ d->exactLabel = new QLabel(this);
+ gLayout->addWidget(d->exactLabel, 2, 0);
d->exactQuery = new QLineEdit(this);
d->exactQuery->setCompleter(&d->searchCompleter);
gLayout->addWidget(d->exactQuery, 2, 1);
- label = new QLabel(tr("with <B>all</B> of the words:"), this);
- gLayout->addWidget(label, 3, 0);
+ d->allLabel = new QLabel(this);
+ gLayout->addWidget(d->allLabel, 3, 0);
d->allQuery = new QLineEdit(this);
d->allQuery->setCompleter(&d->searchCompleter);
gLayout->addWidget(d->allQuery, 3, 1);
- label = new QLabel(tr("with <B>at least one</B> of the words:"), this);
- gLayout->addWidget(label, 4, 0);
+ d->atLeastLabel = new QLabel(this);
+ gLayout->addWidget(d->atLeastLabel, 4, 0);
d->atLeastQuery = new QLineEdit(this);
d->atLeastQuery->setCompleter(&d->searchCompleter);
gLayout->addWidget(d->atLeastQuery, 4, 1);
@@ -490,6 +511,8 @@
vLayout->addWidget(d->advancedSearchWidget);
d->advancedSearchWidget->hide();
+ d->retranslate();
+
connect(d->exactQuery, SIGNAL(returnPressed()), this, SIGNAL(search()));
connect(d->similarQuery, SIGNAL(returnPressed()), this, SIGNAL(search()));
connect(d->withoutQuery, SIGNAL(returnPressed()), this, SIGNAL(search()));
@@ -510,7 +533,7 @@
}
/*!
- Returns a list of querys to use in combination with the search engines
+ Returns a list of queries to use in combination with the search engines
search(QList<QHelpSearchQuery> &query) function.
*/
QList<QHelpSearchQuery> QHelpSearchQueryWidget::query() const
@@ -531,4 +554,14 @@
}
}
+/*! \reimp
+*/
+void QHelpSearchQueryWidget::changeEvent(QEvent *event)
+{
+ if (event->type() == QEvent::LanguageChange)
+ d->retranslate();
+ else
+ QWidget::changeEvent(event);
+}
+
QT_END_NAMESPACE
--- a/tools/assistant/lib/qhelpsearchquerywidget.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchquerywidget.h Fri Mar 12 15:46:37 2010 +0200
@@ -74,7 +74,8 @@
void search();
private:
- void focusInEvent(QFocusEvent *focusEvent);
+ virtual void focusInEvent(QFocusEvent *focusEvent);
+ virtual void changeEvent(QEvent *event);
private:
QHelpSearchQueryWidgetPrivate *d;
--- a/tools/assistant/lib/qhelpsearchresultwidget.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchresultwidget.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -73,7 +73,7 @@
void showResultPage(const QList<QHelpSearchEngine::SearchHit> hits)
{
- foreach (const QHelpSearchEngine::SearchHit hit, hits)
+ foreach (const QHelpSearchEngine::SearchHit &hit, hits)
new QTreeWidgetItem(this, QStringList(hit.first) << hit.second);
}
@@ -118,7 +118,7 @@
.arg(tr("The search results may not be complete since the "
"documentation is still being indexed!"));
- foreach (const QHelpSearchEngine::SearchHit hit, hits) {
+ foreach (const QHelpSearchEngine::SearchHit &hit, hits) {
htmlFile += QString(QLatin1String("<div style=\"text-align:left; font-weight:bold\""
"><a href=\"%1\">%2</a><div style=\"color:green; font-weight:normal;"
" margin:5px\">%1</div></div><p></p>"))
@@ -408,6 +408,14 @@
connect(engine, SIGNAL(searchingFinished(int)), d, SLOT(setResults(int)));
}
+/*! \reimp
+*/
+void QHelpSearchResultWidget::changeEvent(QEvent *event)
+{
+ if (event->type() == QEvent::LanguageChange)
+ d->setResults(d->searchEngine->hitCount());
+}
+
/*!
Destroys the search result widget.
*/
--- a/tools/assistant/lib/qhelpsearchresultwidget.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchresultwidget.h Fri Mar 12 15:46:37 2010 +0200
@@ -75,6 +75,7 @@
QHelpSearchResultWidgetPrivate *d;
QHelpSearchResultWidget(QHelpSearchEngine *engine);
+ virtual void changeEvent(QEvent *event);
};
QT_END_NAMESPACE
--- a/tools/assistant/tools/assistant/centralwidget.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/tools/assistant/centralwidget.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -358,7 +358,7 @@
void CentralWidget::findNext()
{
- find(findWidget->editFind->text(), true, false);
+ find(findWidget->editFind->text(), true);
}
void CentralWidget::nextPage()
@@ -389,7 +389,7 @@
void CentralWidget::findPrevious()
{
- find(findWidget->editFind->text(), false, true);
+ find(findWidget->editFind->text(), false);
}
void CentralWidget::closeTab()
@@ -697,7 +697,7 @@
void CentralWidget::findCurrentText(const QString &text)
{
- find(text, false, false);
+ find(text, true);
}
void CentralWidget::connectSignals()
@@ -896,19 +896,35 @@
QWidget::keyPressEvent(e);
}
-void CentralWidget::find(const QString &ttf, bool forward, bool backward)
+void CentralWidget::find(const QString &ttf, bool forward)
{
QPalette p = findWidget->editFind->palette();
p.setColor(QPalette::Active, QPalette::Base, Qt::white);
- if (!ttf.isEmpty()) {
- HelpViewer *viewer = currentHelpViewer();
+ bool found = false;
+
+#if defined(QT_NO_WEBKIT)
+ found = findInTextBrowser(ttf, forward);
+#else
+ found = findInWebPage(ttf, forward);
+#endif
+ if (!found && !ttf.isEmpty())
+ p.setColor(QPalette::Active, QPalette::Base, QColor(255, 102, 102));
+
+ if (!findWidget->isVisible())
+ findWidget->show();
+ findWidget->editFind->setPalette(p);
+}
+
+bool CentralWidget::findInWebPage(const QString &ttf, bool forward)
+{
+#if !defined(QT_NO_WEBKIT)
+ if (HelpViewer *viewer = currentHelpViewer()) {
bool found = false;
-#if !defined(QT_NO_WEBKIT)
- if (viewer) {
- QWebPage::FindFlags options;
- if (backward)
+ QWebPage::FindFlags options;
+ if (!ttf.isEmpty()) {
+ if (!forward)
options |= QWebPage::FindBackward;
if (findWidget->checkCase->isChecked())
@@ -923,30 +939,27 @@
if (found)
findWidget->labelWrapped->show();
}
- } else if (tabWidget->currentWidget() == m_searchWidget) {
- QTextBrowser *browser = qFindChild<QTextBrowser*>(m_searchWidget);
- found = findInTextBrowser(browser, ttf, forward, backward);
}
-#else
- QTextBrowser *browser = qobject_cast<QTextBrowser*>(viewer);
- if (tabWidget->currentWidget() == m_searchWidget)
- browser = qFindChild<QTextBrowser*>(m_searchWidget);
- found = findInTextBrowser(browser, ttf, forward, backward);
-#endif
-
- if (!found)
- p.setColor(QPalette::Active, QPalette::Base, QColor(255, 102, 102));
+ // force highlighting of all other matches, also when empty (clear)
+ options = QWebPage::HighlightAllOccurrences;
+ viewer->findText(QLatin1String(""), options);
+ viewer->findText(ttf, options);
+ return found;
}
- if (!findWidget->isVisible())
- findWidget->show();
- findWidget->editFind->setPalette(p);
+ // this needs to stay, case for active search results page
+ return findInTextBrowser(ttf, forward);
+#endif
+ return false;
}
-bool CentralWidget::findInTextBrowser(QTextBrowser* browser, const QString &ttf,
- bool forward, bool backward)
+bool CentralWidget::findInTextBrowser(const QString &ttf, bool forward)
{
- if (!browser)
+ QTextBrowser *browser = qobject_cast<QTextBrowser*>(currentHelpViewer());
+ if (tabWidget->currentWidget() == m_searchWidget)
+ browser = qFindChild<QTextBrowser*>(m_searchWidget);
+
+ if (!browser || ttf.isEmpty())
return false;
QTextDocument *doc = browser->document();
@@ -962,7 +975,7 @@
QTextCursor::MoveAnchor);
}
- if (backward)
+ if (!forward)
options |= QTextDocument::FindBackward;
if (findWidget->checkCase->isChecked())
@@ -1074,20 +1087,29 @@
CentralWidget::setSourceFromSearch(const QUrl &url)
{
setSource(url);
+#if defined(QT_NO_WEBKIT)
highlightSearchTerms();
+#else
+ connect(currentHelpViewer(), SIGNAL(loadFinished(bool)), this,
+ SLOT(highlightSearchTerms()));
+#endif
}
void
CentralWidget::setSourceFromSearchInNewTab(const QUrl &url)
{
setSourceInNewTab(url);
+#if defined(QT_NO_WEBKIT)
highlightSearchTerms();
+#else
+ connect(currentHelpViewer(), SIGNAL(loadFinished(bool)), this,
+ SLOT(highlightSearchTerms()));
+#endif
}
void
CentralWidget::highlightSearchTerms()
{
-#if defined(QT_NO_WEBKIT)
HelpViewer *viewer = currentHelpViewer();
if (!viewer)
return;
@@ -1096,7 +1118,7 @@
QList<QHelpSearchQuery> queryList = searchEngine->query();
QStringList terms;
- foreach (QHelpSearchQuery query, queryList) {
+ foreach (const QHelpSearchQuery &query, queryList) {
switch (query.fieldName) {
default: break;
case QHelpSearchQuery::ALL: {
@@ -1109,6 +1131,7 @@
}
}
+#if defined(QT_NO_WEBKIT)
viewer->viewport()->setUpdatesEnabled(false);
QTextCharFormat marker;
@@ -1140,6 +1163,14 @@
viewer->setTextCursor(firstHit);
viewer->viewport()->setUpdatesEnabled(true);
+#else
+ viewer->findText("", QWebPage::HighlightAllOccurrences);
+ // clears existing selections
+ foreach (const QString& term, terms)
+ viewer->findText(term, QWebPage::HighlightAllOccurrences);
+
+ disconnect(viewer, SIGNAL(loadFinished(bool)), this,
+ SLOT(highlightSearchTerms()));
#endif
}
--- a/tools/assistant/tools/assistant/centralwidget.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/tools/assistant/centralwidget.h Fri Mar 12 15:46:37 2010 +0200
@@ -182,16 +182,16 @@
void printPreview(QPrinter *printer);
void setSourceFromSearch(const QUrl &url);
void setSourceFromSearchInNewTab(const QUrl &url);
+ void highlightSearchTerms();
private:
void connectSignals();
bool eventFilter(QObject *object, QEvent *e);
- void find(const QString &ttf, bool forward, bool backward);
- bool findInTextBrowser(QTextBrowser* browser, const QString &ttf,
- bool forward, bool backward);
+ void find(const QString &ttf, bool forward);
+ bool findInWebPage(const QString &ttf, bool forward);
+ bool findInTextBrowser(const QString &ttf, bool forward);
void initPrinter();
QString quoteTabTitle(const QString &title) const;
- void highlightSearchTerms();
void setLastShownPages();
void getBrowserFontFor(QWidget* viewer, QFont *font);
--- a/tools/assistant/tools/assistant/helpviewer.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/tools/assistant/helpviewer.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -141,12 +141,12 @@
if (mimeType.endsWith(QLatin1String(".svg"))
|| mimeType.endsWith(QLatin1String(".svgz"))) {
mimeType = QLatin1String("image/svg+xml");
- }
- else if (mimeType.endsWith(QLatin1String(".css"))) {
+ } else if (mimeType.endsWith(QLatin1String(".css"))) {
mimeType = QLatin1String("text/css");
- }
- else if (mimeType.endsWith(QLatin1String(".js"))) {
+ } else if (mimeType.endsWith(QLatin1String(".js"))) {
mimeType = QLatin1String("text/javascript");
+ } else if (mimeType.endsWith(QLatin1String(".txt"))) {
+ mimeType = QLatin1String("text/plain");
} else {
mimeType = QLatin1String("text/html");
}
--- a/tools/assistant/translations/qt_help.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/translations/qt_help.pro Fri Mar 12 15:46:37 2010 +0200
@@ -41,6 +41,7 @@
TR_DIR = $$PWD/../../../translations
TRANSLATIONS = \
+ $$TR_DIR/qt_help_cs.ts \
$$TR_DIR/qt_help_da.ts \
$$TR_DIR/qt_help_de.ts \
$$TR_DIR/qt_help_ja.ts \
--- a/tools/assistant/translations/translations.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/translations/translations.pro Fri Mar 12 15:46:37 2010 +0200
@@ -42,6 +42,7 @@
TR_DIR = $$PWD/../../../translations
TRANSLATIONS = \
+ $$TR_DIR/assistant_cs.ts \
$$TR_DIR/assistant_da.ts \
$$TR_DIR/assistant_de.ts \
$$TR_DIR/assistant_fr.ts \
--- a/tools/configure/configureapp.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/configure/configureapp.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -482,6 +482,7 @@
dictionary[ "BUILDNOKIA" ] = "yes";
dictionary[ "BUILDDEV" ] = "yes";
dictionary["LICENSE_CONFIRMED"] = "yes";
+ dictionary[ "SYMBIAN_DEFFILES" ] = "no";
}
else if( configCmdLine.at(i) == "-opensource" ) {
dictionary[ "BUILDTYPE" ] = "opensource";
@@ -803,7 +804,7 @@
else if( configCmdLine.at(i) == "-no-native-gestures" )
dictionary[ "NATIVE_GESTURES" ] = "no";
#if !defined(EVAL)
- // Others ---------------------------------------------------
+ // Symbian Support -------------------------------------------
else if (configCmdLine.at(i) == "-fpu" )
{
++i;
@@ -812,12 +813,17 @@
dictionary[ "ARM_FPU_TYPE" ] = configCmdLine.at(i);
}
- // S60 Support -------------------------------------------
else if( configCmdLine.at(i) == "-s60" )
dictionary[ "S60" ] = "yes";
else if( configCmdLine.at(i) == "-no-s60" )
dictionary[ "S60" ] = "no";
+ else if( configCmdLine.at(i) == "-usedeffiles" )
+ dictionary[ "SYMBIAN_DEFFILES" ] = "yes";
+ else if( configCmdLine.at(i) == "-no-usedeffiles" )
+ dictionary[ "SYMBIAN_DEFFILES" ] = "no";
+
+ // Others ---------------------------------------------------
else if (configCmdLine.at(i) == "-fast" )
dictionary[ "FAST" ] = "yes";
else if (configCmdLine.at(i) == "-no-fast" )
@@ -1471,6 +1477,7 @@
dictionary[ "XMLPATTERNS" ] = "yes";
dictionary[ "QT_GLIB" ] = "no";
dictionary[ "S60" ] = "yes";
+ dictionary[ "SYMBIAN_DEFFILES" ] = "yes";
// iconv makes makes apps start and run ridiculously slowly in symbian emulator (HW not tested)
// iconv_open seems to return -1 always, so something is probably missing from the platform.
dictionary[ "QT_ICONV" ] = "no";
@@ -1825,7 +1832,9 @@
desc("FREETYPE", "yes", "-qt-freetype", "Use the libfreetype bundled with Qt.");
desc( "-fpu <flags>", "VFP type on ARM, supported options: softvfp(default) | vfpv2 | softvfp+vfpv2");
desc("S60", "no", "-no-s60", "Do not compile in S60 support.");
- desc("S60", "yes", "-s60", "Compile with support for the S60 UI Framework\n");
+ desc("S60", "yes", "-s60", "Compile with support for the S60 UI Framework");
+ desc("SYMBIAN_DEFFILES", "no", "-no-usedeffiles", "Disable the usage of DEF files.");
+ desc("SYMBIAN_DEFFILES", "yes", "-usedeffiles", "Enable the usage of DEF files.\n");
return true;
}
return false;
@@ -2529,8 +2538,11 @@
qtConfig += "phonon-backend";
}
- if (dictionary["MULTIMEDIA"] == "yes")
+ if (dictionary["MULTIMEDIA"] == "yes") {
qtConfig += "multimedia";
+ if (dictionary["AUDIO_BACKEND"] == "yes")
+ qtConfig += "audio-backend";
+ }
if (dictionary["WEBKIT"] == "yes")
qtConfig += "webkit";
@@ -2747,6 +2759,13 @@
if ( dictionary["PLUGIN_MANIFESTS"] == "no" )
configStream << " no_plugin_manifest";
+ if ( dictionary.contains("SYMBIAN_DEFFILES") ) {
+ if(dictionary["SYMBIAN_DEFFILES"] == "yes" ) {
+ configStream << " def_files";
+ } else if ( dictionary["SYMBIAN_DEFFILES"] == "no" ) {
+ configStream << " def_files_disabled";
+ }
+ }
configStream << endl;
configStream << "QT_ARCH = " << dictionary[ "ARCHITECTURE" ] << endl;
if (dictionary["QT_EDITION"].contains("OPENSOURCE"))
@@ -3271,6 +3290,14 @@
cout << "Support for S60............." << dictionary[ "S60" ] << endl;
}
+ if (dictionary.contains("SYMBIAN_DEFFILES")) {
+ cout << "Symbian DEF files enabled..." << dictionary[ "SYMBIAN_DEFFILES" ] << endl;
+ if(dictionary["SYMBIAN_DEFFILES"] == "no") {
+ cout << "WARNING: Disabling DEF files will mean that Qt is NOT binary compatible with previous versions." << endl;
+ cout << " This feature is only intended for use during development, NEVER for release builds." << endl;
+ }
+ }
+
if(dictionary["ASSISTANT_WEBKIT"] == "yes")
cout << "Using WebKit as html rendering engine in Qt Assistant." << endl;
--- a/tools/designer/src/components/formeditor/formwindow.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/components/formeditor/formwindow.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -2219,6 +2219,11 @@
QToolBoxHelper::addToolBoxContextMenuActions(toolBox, popup);
}
+ if (manager->actionLower()->isEnabled()) {
+ popup->addAction(manager->actionLower());
+ popup->addAction(manager->actionRaise());
+ popup->addSeparator();
+ }
popup->addAction(manager->actionCut());
popup->addAction(manager->actionCopy());
}
--- a/tools/designer/src/components/formeditor/formwindow.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/components/formeditor/formwindow.h Fri Mar 12 15:46:37 2010 +0200
@@ -278,8 +278,6 @@
void checkPreviewGeometry(QRect &r);
- void finishContextMenu(QWidget *w, QWidget *menuParent, QContextMenuEvent *e);
-
bool handleContextMenu(QWidget *widget, QWidget *managedWidget, QContextMenuEvent *e);
bool handleMouseButtonDblClickEvent(QWidget *widget, QWidget *managedWidget, QMouseEvent *e);
bool handleMousePressEvent(QWidget *widget, QWidget *managedWidget, QMouseEvent *e);
--- a/tools/designer/src/components/formeditor/qdesigner_resource.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/components/formeditor/qdesigner_resource.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -1446,7 +1446,7 @@
return;
QList<QWidget*> tabOrder;
- foreach (QString widgetName, tabStops->elementTabStop()) {
+ foreach (const QString &widgetName, tabStops->elementTabStop()) {
if (QWidget *w = qFindChild<QWidget*>(widget, widgetName)) {
tabOrder.append(w);
}
@@ -2418,7 +2418,7 @@
QList<DomResource*> dom_include;
if (resourceSet) {
const QStringList activePaths = resourceSet->activeQrcPaths();
- foreach (QString path, activePaths) {
+ foreach (const QString &path, activePaths) {
if (qrcPaths.contains(path)) {
DomResource *dom_res = new DomResource;
QString conv_path = path;
--- a/tools/designer/src/components/propertyeditor/designerpropertymanager.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/components/propertyeditor/designerpropertymanager.h Fri Mar 12 15:46:37 2010 +0200
@@ -102,7 +102,7 @@
{
Q_OBJECT
public:
- DesignerPropertyManager(QDesignerFormEditorInterface *core, QObject *parent = 0);
+ explicit DesignerPropertyManager(QDesignerFormEditorInterface *core, QObject *parent = 0);
~DesignerPropertyManager();
virtual QStringList attributes(int propertyType) const;
--- a/tools/designer/src/designer/qdesigner_actions.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/designer/qdesigner_actions.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -580,7 +580,7 @@
return false;
bool atLeastOne = false;
- foreach (QString fileName, fileNames) {
+ foreach (const QString &fileName, fileNames) {
if (readInForm(fileName) && !atLeastOne)
atLeastOne = true;
}
@@ -869,7 +869,7 @@
if (f.fileName() != fileName) {
removeBackup(backupFile);
fi.setFile(fileName);
- backupFile = QString();
+ backupFile.clear();
if (fi.exists())
backupFile = createBackup(fileName);
}
--- a/tools/designer/src/designer/qdesigner_server.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/designer/qdesigner_server.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -83,7 +83,7 @@
sSocket->connectToHost(QHostAddress::LocalHost, port);
if(sSocket->waitForConnected(3000))
{
- foreach(QString file, files)
+ foreach(const QString &file, files)
{
QFileInfo fi(file);
sSocket->write(fi.absoluteFilePath().toUtf8() + '\n');
@@ -96,9 +96,8 @@
void QDesignerServer::readFromClient()
{
- QString file = QString();
while (m_socket->canReadLine()) {
- file = QString::fromUtf8(m_socket->readLine());
+ QString file = QString::fromUtf8(m_socket->readLine());
if (!file.isNull()) {
file.remove(QLatin1Char('\n'));
file.remove(QLatin1Char('\r'));
@@ -143,7 +142,6 @@
void QDesignerClient::readFromSocket()
{
- QString file = QString();
while (m_socket->canReadLine()) {
QString file = QString::fromUtf8(m_socket->readLine());
if (!file.isNull()) {
--- a/tools/designer/src/designer/qdesigner_server.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/designer/qdesigner_server.h Fri Mar 12 15:46:37 2010 +0200
@@ -53,7 +53,7 @@
{
Q_OBJECT
public:
- QDesignerServer(QObject *parent = 0);
+ explicit QDesignerServer(QObject *parent = 0);
virtual ~QDesignerServer();
quint16 serverPort() const;
@@ -74,7 +74,7 @@
{
Q_OBJECT
public:
- QDesignerClient(quint16 port, QObject *parent = 0);
+ explicit QDesignerClient(quint16 port, QObject *parent = 0);
virtual ~QDesignerClient();
private slots:
--- a/tools/designer/src/designer/versiondialog.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/designer/versiondialog.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -113,15 +113,14 @@
if (!secondStage) {
m_path.lineTo(me->pos());
bool gotIt = true;
- QPoint pt;
- foreach(pt, hitPoints) {
+ foreach(const QPoint &pt, hitPoints) {
if (!m_path.contains(pt)) {
gotIt = false;
break;
}
}
if (gotIt) {
- foreach(pt, missPoints) {
+ foreach(const QPoint &pt, missPoints) {
if (m_path.contains(pt)) {
gotIt = false;
break;
--- a/tools/designer/src/lib/shared/actioneditor.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/actioneditor.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -428,7 +428,7 @@
m_actionView->model()->remove(row);
}
-// Set an intial property and mark it as changed in the sheet
+// Set an initial property and mark it as changed in the sheet
static void setInitialProperty(QDesignerPropertySheetExtension *sheet, const QString &name, const QVariant &value)
{
const int index = sheet->indexOf(name);
--- a/tools/designer/src/lib/shared/actionrepository.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/actionrepository.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -244,7 +244,7 @@
ActionRepositoryMimeData::ActionList actionList;
QSet<QAction*> actions;
- foreach (const QModelIndex &index, indexes)
+ foreach (const QModelIndex &index, indexes)
if (QStandardItem *item = itemFromIndex(index))
if (QAction *action = actionOfItem(item))
actions.insert(action);
--- a/tools/designer/src/lib/shared/connectionedit_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/connectionedit_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -87,7 +87,7 @@
class EndPoint {
public:
enum Type { Source, Target };
- EndPoint(Connection *_con = 0, Type _type = Source) : con(_con), type(_type) {}
+ explicit EndPoint(Connection *_con = 0, Type _type = Source) : con(_con), type(_type) {}
bool isNull() const { return con == 0; }
bool operator == (const EndPoint &other) const { return con == other.con && type == other.type; }
bool operator != (const EndPoint &other) const { return !operator == (other); }
--- a/tools/designer/src/lib/shared/filterwidget_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/filterwidget_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -66,7 +66,7 @@
namespace qdesigner_internal {
/* A line edit that displays a grayed hintText (like "Type Here to Filter")
- * when not focussed and empty. When connecting to the changed signals and
+ * when not focused and empty. When connecting to the changed signals and
* querying text, one has to be aware that the text is set to that hint
* text if isShowingHintText() returns true (that is, does not contain
* valid user input). This widget should never have initial focus
--- a/tools/designer/src/lib/shared/iconloader.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/iconloader.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -60,7 +60,7 @@
#endif
<< (QString::fromUtf8(":/trolltech/formeditor/images/designer_") + name);
- foreach (QString f, candidates) {
+ foreach (const QString &f, candidates) {
if (QFile::exists(f))
return QIcon(f);
}
--- a/tools/designer/src/lib/shared/iconselector_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/iconselector_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -76,7 +76,7 @@
{
Q_OBJECT
- LanguageResourceDialog(QDesignerResourceBrowserInterface *rb, QWidget *parent = 0);
+ explicit LanguageResourceDialog(QDesignerResourceBrowserInterface *rb, QWidget *parent = 0);
public:
virtual ~LanguageResourceDialog();
--- a/tools/designer/src/lib/shared/plugindialog.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/plugindialog.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -105,7 +105,7 @@
QTreeWidgetItem *topLevelItem = setTopLevelItem(QLatin1String("Loaded Plugins"));
QFont boldFont = topLevelItem->font(0);
- foreach (QString fileName, fileNames) {
+ foreach (const QString &fileName, fileNames) {
QPluginLoader loader(fileName);
const QFileInfo fileInfo(fileName);
@@ -127,7 +127,7 @@
if (!notLoadedPlugins.isEmpty()) {
QTreeWidgetItem *topLevelItem = setTopLevelItem(QLatin1String("Failed Plugins"));
const QFont boldFont = topLevelItem->font(0);
- foreach (const QString plugin, notLoadedPlugins) {
+ foreach (const QString &plugin, notLoadedPlugins) {
const QString failureReason = pluginManager->failureReason(plugin);
QTreeWidgetItem *pluginItem = setPluginItem(topLevelItem, plugin, boldFont);
setItem(pluginItem, failureReason, failureReason, QString(), QIcon());
--- a/tools/designer/src/lib/shared/qdesigner_introspection.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_introspection.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -63,7 +63,7 @@
static inline QString charToQString(const char *c)
{
if (!c)
- return QString::null;
+ return QString();
return QString::fromUtf8(c);
}
--- a/tools/designer/src/lib/shared/qdesigner_objectinspector_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_objectinspector_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -85,7 +85,7 @@
{
Q_OBJECT
public:
- QDesignerObjectInspector(QWidget *parent = 0, Qt::WindowFlags flags = 0);
+ explicit QDesignerObjectInspector(QWidget *parent = 0, Qt::WindowFlags flags = 0);
// Select a qobject unmanaged by form window
virtual bool selectObject(QObject *o) = 0;
--- a/tools/designer/src/lib/shared/qdesigner_promotiondialog_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_promotiondialog_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -80,9 +80,9 @@
class NewPromotedClassPanel : public QGroupBox {
Q_OBJECT
public:
- NewPromotedClassPanel(const QStringList &baseClasses,
- int selectedBaseClass = -1,
- QWidget *parent = 0);
+ explicit NewPromotedClassPanel(const QStringList &baseClasses,
+ int selectedBaseClass = -1,
+ QWidget *parent = 0);
signals:
void newPromotedClass(const PromotionParameters &, bool *ok);
@@ -114,10 +114,10 @@
public:
enum Mode { ModeEdit, ModeEditChooseClass };
- QDesignerPromotionDialog(QDesignerFormEditorInterface *core,
- QWidget *parent = 0,
- const QString &promotableWidgetClassName = QString(),
- QString *promoteTo = 0);
+ explicit QDesignerPromotionDialog(QDesignerFormEditorInterface *core,
+ QWidget *parent = 0,
+ const QString &promotableWidgetClassName = QString(),
+ QString *promoteTo = 0);
// Return an alphabetically ordered list of base class names for adding new classes.
static const QStringList &baseClassNames(const QDesignerPromotionInterface *promotion);
--- a/tools/designer/src/lib/shared/qdesigner_propertyeditor_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_propertyeditor_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -69,7 +69,7 @@
{
Q_OBJECT
public:
- QDesignerPropertyEditor(QWidget *parent = 0, Qt::WindowFlags flags = 0);
+ explicit QDesignerPropertyEditor(QWidget *parent = 0, Qt::WindowFlags flags = 0);
// A pair <ValidationMode, bool isTranslatable>.
typedef QPair<TextPropertyValidationMode, bool> StringPropertyParameters;
--- a/tools/designer/src/lib/shared/qdesigner_taskmenu.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_taskmenu.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -675,7 +675,7 @@
const QString signalSignature = selectedItem->text(0);
const QStringList parameterNames = qVariantValue<QStringList>(selectedItem->data(0, Qt::UserRole));
- // TODO: Check wether signal is connected to slot
+ // TODO: Check whether signal is connected to slot
integr->emitNavigateToSlot(objectName, signalSignature, parameterNames);
}
}
--- a/tools/designer/src/lib/shared/qdesigner_toolbar.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_toolbar.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -440,7 +440,7 @@
return tb->actions().at(index);
}
-//that's a trick to get acces to the initStyleOption which is a protected member
+//that's a trick to get access to the initStyleOption which is a protected member
class FriendlyToolBar : public QToolBar {
public:
friend class ToolBarEventFilter;
--- a/tools/designer/src/lib/shared/qdesigner_utils_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_utils_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -298,7 +298,7 @@
{
Q_OBJECT
public:
- DesignerIconCache(DesignerPixmapCache *pixmapCache, QObject *parent = 0);
+ explicit DesignerIconCache(DesignerPixmapCache *pixmapCache, QObject *parent = 0);
QIcon icon(const PropertySheetIconValue &value) const;
void clear();
signals:
@@ -313,7 +313,7 @@
class QDESIGNER_SHARED_EXPORT PropertySheetStringValue
{
public:
- PropertySheetStringValue(const QString &value = QString(),
+ explicit PropertySheetStringValue(const QString &value = QString(),
bool translatable = true,
const QString &disambiguation = QString(),
const QString &comment = QString());
@@ -345,11 +345,11 @@
class QDESIGNER_SHARED_EXPORT PropertySheetKeySequenceValue
{
public:
- PropertySheetKeySequenceValue(const QKeySequence &value = QKeySequence(),
+ explicit PropertySheetKeySequenceValue(const QKeySequence &value = QKeySequence(),
bool translatable = true,
const QString &disambiguation = QString(),
const QString &comment = QString());
- PropertySheetKeySequenceValue(const QKeySequence::StandardKey &standardKey,
+ explicit PropertySheetKeySequenceValue(const QKeySequence::StandardKey &standardKey,
bool translatable = true,
const QString &disambiguation = QString(),
const QString &comment = QString());
--- a/tools/designer/src/lib/shared/qdesigner_widgetbox_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_widgetbox_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -70,7 +70,7 @@
public:
enum LoadMode { LoadMerge, LoadReplace, LoadCustomWidgetsOnly };
- QDesignerWidgetBox(QWidget *parent = 0, Qt::WindowFlags flags = 0);
+ explicit QDesignerWidgetBox(QWidget *parent = 0, Qt::WindowFlags flags = 0);
LoadMode loadMode() const;
void setLoadMode(LoadMode lm);
--- a/tools/designer/src/lib/shared/qtresourceview_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qtresourceview_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -68,7 +68,7 @@
{
Q_OBJECT
public:
- QtResourceView(QDesignerFormEditorInterface *core, QWidget *parent = 0);
+ explicit QtResourceView(QDesignerFormEditorInterface *core, QWidget *parent = 0);
~QtResourceView();
void setDragEnabled(bool dragEnabled);
@@ -120,7 +120,7 @@
{
Q_OBJECT
public:
- QtResourceViewDialog(QDesignerFormEditorInterface *core, QWidget *parent = 0);
+ explicit QtResourceViewDialog(QDesignerFormEditorInterface *core, QWidget *parent = 0);
virtual ~QtResourceViewDialog();
QString selectedResource() const;
--- a/tools/designer/src/lib/shared/richtexteditor_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/richtexteditor_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -72,7 +72,7 @@
{
Q_OBJECT
public:
- RichTextEditorDialog(QDesignerFormEditorInterface *core, QWidget *parent = 0);
+ explicit RichTextEditorDialog(QDesignerFormEditorInterface *core, QWidget *parent = 0);
~RichTextEditorDialog();
int showDialog();
--- a/tools/designer/src/lib/shared/shared_settings.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/shared_settings.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -161,7 +161,7 @@
{
// get template paths excluding internal ones
QStringList rc = formTemplatePaths();
- foreach (QString internalTemplatePath, defaultFormTemplatePaths()) {
+ foreach (const QString &internalTemplatePath, defaultFormTemplatePaths()) {
const int index = rc.indexOf(internalTemplatePath);
if (index != -1)
rc.removeAt(index);
--- a/tools/designer/src/lib/shared/textpropertyeditor_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/textpropertyeditor_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -90,7 +90,7 @@
UpdateOnFinished
};
- TextPropertyEditor(QWidget *parent = 0, EmbeddingMode embeddingMode = EmbeddingNone, TextPropertyValidationMode validationMode = ValidationMultiLine);
+ explicit TextPropertyEditor(QWidget *parent = 0, EmbeddingMode embeddingMode = EmbeddingNone, TextPropertyValidationMode validationMode = ValidationMultiLine);
TextPropertyValidationMode textPropertyValidationMode() const { return m_validationMode; }
void setTextPropertyValidationMode(TextPropertyValidationMode vm);
--- a/tools/designer/src/lib/shared/widgetdatabase_p.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/widgetdatabase_p.h Fri Mar 12 15:46:37 2010 +0200
@@ -74,8 +74,8 @@
class QDESIGNER_SHARED_EXPORT WidgetDataBaseItem: public QDesignerWidgetDataBaseItemInterface
{
public:
- WidgetDataBaseItem(const QString &name = QString(),
- const QString &group = QString());
+ explicit WidgetDataBaseItem(const QString &name = QString(),
+ const QString &group = QString());
QString name() const;
void setName(const QString &name);
@@ -159,7 +159,7 @@
{
Q_OBJECT
public:
- WidgetDataBase(QDesignerFormEditorInterface *core, QObject *parent = 0);
+ explicit WidgetDataBase(QDesignerFormEditorInterface *core, QObject *parent = 0);
virtual ~WidgetDataBase();
virtual QDesignerFormEditorInterface *core() const;
--- a/tools/designer/src/lib/shared/widgetfactory.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/widgetfactory.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -774,6 +774,8 @@
void WidgetFactory::applyStyleToTopLevel(QStyle *style, QWidget *widget)
{
+ if (!style)
+ return;
const QPalette standardPalette = style->standardPalette();
if (widget->style() == style && widget->palette() == standardPalette)
return;
--- a/tools/designer/src/lib/uilib/abstractformbuilder.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/uilib/abstractformbuilder.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -364,7 +364,7 @@
const QStringList zOrderNames = ui_widget->elementZOrder();
if (!zOrderNames.isEmpty()) {
QList<QWidget *> zOrder = qVariantValue<QWidgetList>(w->property("_q_zOrder"));
- foreach (QString widgetName, zOrderNames) {
+ foreach (const QString &widgetName, zOrderNames) {
if (QWidget *child = qFindChild<QWidget*>(w, widgetName)) {
if (child->parentWidget() == w) {
zOrder.removeAll(child);
--- a/tools/designer/src/lib/uilib/formbuilder.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/uilib/formbuilder.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -494,7 +494,7 @@
{
m_customWidgets.clear();
- foreach (QString path, m_pluginPaths) {
+ foreach (const QString &path, m_pluginPaths) {
const QDir dir(path);
const QStringList candidates = dir.entryList(QDir::Files);
--- a/tools/designer/src/plugins/activeqt/qaxwidgetextrainfo.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/activeqt/qaxwidgetextrainfo.h Fri Mar 12 15:46:37 2010 +0200
@@ -77,7 +77,7 @@
{
Q_OBJECT
public:
- QAxWidgetExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+ explicit QAxWidgetExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
protected:
virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/activeqt/qdesigneraxwidget.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/activeqt/qdesigneraxwidget.h Fri Mar 12 15:46:37 2010 +0200
@@ -105,7 +105,7 @@
class QDesignerAxPluginWidget : public QDesignerAxWidget
{
- // No Q_OBJECT here! - meta functionality is overriden
+ // No Q_OBJECT here! - meta functionality is overridden
public:
explicit QDesignerAxPluginWidget(QWidget *parent);
virtual ~QDesignerAxPluginWidget();
--- a/tools/designer/src/plugins/widgets/q3iconview/q3iconview_extrainfo.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3iconview/q3iconview_extrainfo.h Fri Mar 12 15:46:37 2010 +0200
@@ -81,7 +81,7 @@
{
Q_OBJECT
public:
- Q3IconViewExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+ explicit Q3IconViewExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
protected:
virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/widgets/q3iconview/q3iconview_plugin.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3iconview/q3iconview_plugin.h Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3IconViewPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3IconViewPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3listbox/q3listbox_extrainfo.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3listbox/q3listbox_extrainfo.h Fri Mar 12 15:46:37 2010 +0200
@@ -79,7 +79,7 @@
{
Q_OBJECT
public:
- Q3ListBoxExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+ explicit Q3ListBoxExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
protected:
virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/widgets/q3listbox/q3listbox_plugin.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3listbox/q3listbox_plugin.h Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3ListBoxPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3ListBoxPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3listview/q3listview_extrainfo.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3listview/q3listview_extrainfo.h Fri Mar 12 15:46:37 2010 +0200
@@ -82,7 +82,7 @@
{
Q_OBJECT
public:
- Q3ListViewExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+ explicit Q3ListViewExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
protected:
virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/widgets/q3listview/q3listview_plugin.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3listview/q3listview_plugin.h Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3ListViewPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3ListViewPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3mainwindow/q3mainwindow_plugin.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3mainwindow/q3mainwindow_plugin.h Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3MainWindowPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3MainWindowPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3table/q3table_extrainfo.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3table/q3table_extrainfo.h Fri Mar 12 15:46:37 2010 +0200
@@ -79,7 +79,7 @@
{
Q_OBJECT
public:
- Q3TableExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+ explicit Q3TableExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
protected:
virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/widgets/q3table/q3table_plugin.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3table/q3table_plugin.h Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3TablePlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3TablePlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3textedit/q3textedit_extrainfo.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3textedit/q3textedit_extrainfo.h Fri Mar 12 15:46:37 2010 +0200
@@ -79,7 +79,7 @@
{
Q_OBJECT
public:
- Q3TextEditExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+ explicit Q3TextEditExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
protected:
virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/widgets/q3textedit/q3textedit_plugin.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3textedit/q3textedit_plugin.h Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3TextEditPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3TextEditPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_extrainfo.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_extrainfo.h Fri Mar 12 15:46:37 2010 +0200
@@ -78,7 +78,7 @@
{
Q_OBJECT
public:
- Q3ToolBarExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+ explicit Q3ToolBarExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
protected:
virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_plugin.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_plugin.h Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3ToolBarPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3ToolBarPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3widgets/q3widget_plugins.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3widgets/q3widget_plugins.h Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3ButtonGroupPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3ButtonGroupPlugin(const QIcon &icon, QObject *parent = 0);
virtual ~Q3ButtonGroupPlugin();
virtual QString name() const;
@@ -80,7 +80,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3ComboBoxPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3ComboBoxPlugin(const QIcon &icon, QObject *parent = 0);
virtual ~Q3ComboBoxPlugin();
virtual QString name() const;
@@ -109,7 +109,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3DateEditPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3DateEditPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
@@ -133,7 +133,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3DateTimeEditPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3DateTimeEditPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
@@ -157,7 +157,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3FramePlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3FramePlugin(const QIcon &icon, QObject *parent = 0);
virtual ~Q3FramePlugin();
virtual QString name() const;
@@ -186,7 +186,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3GroupBoxPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3GroupBoxPlugin(const QIcon &icon, QObject *parent = 0);
virtual ~Q3GroupBoxPlugin();
virtual QString name() const;
@@ -215,7 +215,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3ProgressBarPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3ProgressBarPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
@@ -239,7 +239,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3TextBrowserPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3TextBrowserPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
@@ -263,7 +263,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3TimeEditPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3TimeEditPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_plugin.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_plugin.h Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3WidgetStackPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3WidgetStackPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.h Fri Mar 12 15:46:37 2010 +0200
@@ -59,7 +59,7 @@
{
Q_OBJECT
public:
- Q3WizardHelper(Q3Wizard *wizard);
+ explicit Q3WizardHelper(Q3Wizard *wizard);
private slots:
void slotCurrentChanged();
private:
@@ -71,7 +71,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerExtraInfoExtension)
public:
- Q3WizardExtraInfo(Q3Wizard *wizard, QDesignerFormEditorInterface *core, QObject *parent);
+ explicit Q3WizardExtraInfo(Q3Wizard *wizard, QDesignerFormEditorInterface *core, QObject *parent);
virtual QWidget *widget() const;
virtual Q3Wizard *wizard() const;
--- a/tools/designer/src/plugins/widgets/q3wizard/q3wizard_plugin.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3wizard/q3wizard_plugin.h Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
Q_OBJECT
Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
- Q3WizardPlugin(const QIcon &icon, QObject *parent = 0);
+ explicit Q3WizardPlugin(const QIcon &icon, QObject *parent = 0);
virtual QString name() const;
virtual QString group() const;
--- a/tools/designer/src/src.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/src.pro Fri Mar 12 15:46:37 2010 +0200
@@ -9,6 +9,4 @@
CONFIG(shared,shared|static):SUBDIRS += plugins
-wince*: SUBDIRS -= designer plugins
-symbian: SUBDIRS = uitools
-contains(DEFINES, QT_NO_CURSOR): SUBDIRS -= lib components
\ No newline at end of file
+symbian|wince*: SUBDIRS = uitools
--- a/tools/designer/translations/translations.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/translations/translations.pro Fri Mar 12 15:46:37 2010 +0200
@@ -129,6 +129,7 @@
TR_DIR = $$PWD/../../../translations
TRANSLATIONS = \
+ $$TR_DIR/designer_cs.ts \
$$TR_DIR/designer_de.ts \
$$TR_DIR/designer_fr.ts \
$$TR_DIR/designer_ja.ts \
--- a/tools/linguist/linguist/linguist.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/linguist/linguist.pro Fri Mar 12 15:46:37 2010 +0200
@@ -97,6 +97,7 @@
TR_DIR = $$PWD/../../../translations
TRANSLATIONS = \
+ $$TR_DIR/linguist_cs.ts \
$$TR_DIR/linguist_de.ts \
$$TR_DIR/linguist_fr.ts \
$$TR_DIR/linguist_ja.ts \
--- a/tools/linguist/lrelease/main.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/lrelease/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -40,7 +40,7 @@
****************************************************************************/
#include "translator.h"
-#include "proreader.h"
+#include "profileevaluator.h"
#ifndef QT_BOOTSTRAPPED
#include <QtCore/QCoreApplication>
@@ -246,24 +246,31 @@
foreach (const QString &inputFile, inputFiles) {
if (inputFile.endsWith(QLatin1String(".pro"), Qt::CaseInsensitive)
|| inputFile.endsWith(QLatin1String(".pri"), Qt::CaseInsensitive)) {
- QHash<QByteArray, QStringList> varMap;
- bool ok = evaluateProFile(inputFile, cd.isVerbose(), &varMap);
- if (ok) {
- QStringList translations = varMap.value("TRANSLATIONS");
- if (translations.isEmpty()) {
- qWarning("lrelease warning: Met no 'TRANSLATIONS' entry in"
- " project file '%s'\n",
- qPrintable(inputFile));
- } else {
- foreach (const QString &trans, translations)
- if (!releaseTsFile(trans, cd, removeIdentical))
- return 1;
- }
+ QFileInfo fi(inputFile);
+ ProFile pro(fi.absoluteFilePath());
+
+ ProFileEvaluator visitor;
+ visitor.setVerbose(cd.isVerbose());
+
+ if (!visitor.queryProFile(&pro)) {
+ qWarning("lrelease error: cannot read project file '%s'.", qPrintable(inputFile));
+ continue;
+ }
+ if (!visitor.accept(&pro)) {
+ qWarning("lrelease error: cannot process project file '%s'.", qPrintable(inputFile));
+ continue;
+ }
+
+ QStringList translations = visitor.values(QLatin1String("TRANSLATIONS"));
+ if (translations.isEmpty()) {
+ qWarning("lrelease warning: Met no 'TRANSLATIONS' entry in"
+ " project file '%s'\n",
+ qPrintable(inputFile));
} else {
- qWarning("error: lrelease encountered project file functionality that is currently not supported.\n"
- "You might want to consider using TS files as input instead of a project file.\n"
- "Try the following syntax:\n"
- " lrelease [options] ts-files [-qm qm-file]\n");
+ QDir proDir(fi.absolutePath());
+ foreach (const QString &trans, translations)
+ if (!releaseTsFile(QFileInfo(proDir, trans).filePath(), cd, removeIdentical))
+ return 1;
}
} else {
if (outputFile.isEmpty()) {
--- a/tools/linguist/lupdate/main.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/lupdate/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -43,7 +43,6 @@
#include <translator.h>
#include <profileevaluator.h>
-#include <proreader.h>
#include <QtCore/QCoreApplication>
#include <QtCore/QDebug>
@@ -118,21 +117,26 @@
" -disable-heuristic {sametext|similartext|number}\n"
" Disable the named merge heuristic. Can be specified multiple times.\n"
" -pro <filename>\n"
- " Name of a .pro file. Useful for files with .pro\n"
- " file syntax but different file suffix\n"
+ " Name of a .pro file. Useful for files with .pro file syntax but\n"
+ " different file suffix. Projects are recursed into and merged.\n"
" -source-language <language>[_<region>]\n"
" Specify the language of the source strings for new files.\n"
" Defaults to POSIX if not specified.\n"
" -target-language <language>[_<region>]\n"
" Specify the language of the translations for new files.\n"
" Guessed from the file name if not specified.\n"
+ " -ts <ts-file>...\n"
+ " Specify the output file(s). This will override the TRANSLATIONS\n"
+ " and nullify the CODECFORTR from possibly specified project files.\n"
+ " -codecfortr <codec>\n"
+ " Specify the codec assumed for tr() calls. Effective only with -ts.\n"
" -version\n"
" Display the version of lupdate and exit.\n"
).arg(m_defaultExtensions));
}
static void updateTsFiles(const Translator &fetchedTor, const QStringList &tsFileNames,
- const QByteArray &codecForTr, const QString &sourceLanguage, const QString &targetLanguage,
+ bool setCodec, const QString &sourceLanguage, const QString &targetLanguage,
UpdateOptions options, bool *fail)
{
QDir dir;
@@ -150,10 +154,10 @@
}
tor.resolveDuplicates();
cd.clearErrors();
- if (!codecForTr.isEmpty() && codecForTr != tor.codecName())
+ if (setCodec && fetchedTor.codec() != tor.codec())
qWarning("lupdate warning: Codec for tr() '%s' disagrees with "
"existing file's codec '%s'. Expect trouble.",
- codecForTr.constData(), tor.codecName().constData());
+ fetchedTor.codecName().constData(), tor.codecName().constData());
if (!targetLanguage.isEmpty() && targetLanguage != tor.languageCode())
qWarning("lupdate warning: Specified target language '%s' disagrees with "
"existing file's language '%s'. Ignoring.",
@@ -163,8 +167,8 @@
"existing file's language '%s'. Ignoring.",
qPrintable(sourceLanguage), qPrintable(tor.sourceLanguageCode()));
} else {
- if (!codecForTr.isEmpty())
- tor.setCodecName(codecForTr);
+ if (setCodec)
+ tor.setCodec(fetchedTor.codec());
if (!targetLanguage.isEmpty())
tor.setLanguageCode(targetLanguage);
else
@@ -186,8 +190,8 @@
if (tor.locationsType() == Translator::NoLocations) // Could be set from file
theseOptions |= NoLocations;
Translator out = merge(tor, fetchedTor, theseOptions, err);
- if (!codecForTr.isEmpty())
- out.setCodecName(codecForTr);
+ if (setCodec)
+ out.setCodec(fetchedTor.codec());
if ((options & Verbose) && !err.isEmpty()) {
printOut(err);
@@ -214,16 +218,196 @@
}
}
+static QStringList getSources(const char *var, const char *vvar, const QStringList &baseVPaths,
+ const QString &projectDir, const ProFileEvaluator &visitor)
+{
+ QStringList vPaths = visitor.absolutePathValues(QLatin1String(vvar), projectDir);
+ vPaths += baseVPaths;
+ vPaths.removeDuplicates();
+ return visitor.absoluteFileValues(QLatin1String(var), projectDir, vPaths, 0);
+}
+
+static QStringList getSources(const ProFileEvaluator &visitor, const QString &projectDir)
+{
+ QStringList baseVPaths;
+ baseVPaths += visitor.absolutePathValues(QLatin1String("VPATH"), projectDir);
+ baseVPaths << projectDir; // QMAKE_ABSOLUTE_SOURCE_PATH
+ baseVPaths += visitor.absolutePathValues(QLatin1String("DEPENDPATH"), projectDir);
+ baseVPaths.removeDuplicates();
+
+ QStringList sourceFiles;
+
+ // app/lib template
+ sourceFiles += getSources("SOURCES", "VPATH_SOURCES", baseVPaths, projectDir, visitor);
+
+ sourceFiles += getSources("FORMS", "VPATH_FORMS", baseVPaths, projectDir, visitor);
+ sourceFiles += getSources("FORMS3", "VPATH_FORMS3", baseVPaths, projectDir, visitor);
+
+ QStringList vPathsInc = baseVPaths;
+ vPathsInc += visitor.absolutePathValues(QLatin1String("INCLUDEPATH"), projectDir);
+ vPathsInc.removeDuplicates();
+ sourceFiles += visitor.absoluteFileValues(QLatin1String("HEADERS"), projectDir, vPathsInc, 0);
+
+ sourceFiles.removeDuplicates();
+ sourceFiles.sort();
+
+ return sourceFiles;
+}
+
+static void processSources(Translator &fetchedTor,
+ const QStringList &sourceFiles, ConversionData &cd)
+{
+ QStringList sourceFilesCpp;
+ for (QStringList::const_iterator it = sourceFiles.begin(); it != sourceFiles.end(); ++it) {
+ if (it->endsWith(QLatin1String(".java"), Qt::CaseInsensitive))
+ loadJava(fetchedTor, *it, cd);
+ else if (it->endsWith(QLatin1String(".ui"), Qt::CaseInsensitive)
+ || it->endsWith(QLatin1String(".jui"), Qt::CaseInsensitive))
+ loadUI(fetchedTor, *it, cd);
+ else if (it->endsWith(QLatin1String(".js"), Qt::CaseInsensitive)
+ || it->endsWith(QLatin1String(".qs"), Qt::CaseInsensitive))
+ loadQScript(fetchedTor, *it, cd);
+ else
+ sourceFilesCpp << *it;
+ }
+ loadCPP(fetchedTor, sourceFilesCpp, cd);
+ if (!cd.error().isEmpty())
+ printOut(cd.error());
+}
+
+static void processProjects(
+ bool topLevel, bool nestComplain, const QStringList &proFiles,
+ UpdateOptions options, const QByteArray &codecForSource,
+ const QString &targetLanguage, const QString &sourceLanguage,
+ Translator *parentTor, bool *fail);
+
+static void processProject(
+ bool nestComplain, const QFileInfo &pfi, ProFileEvaluator &visitor,
+ UpdateOptions options, const QByteArray &_codecForSource,
+ const QString &targetLanguage, const QString &sourceLanguage,
+ Translator *fetchedTor, bool *fail)
+{
+ QByteArray codecForSource = _codecForSource;
+ QStringList tmp = visitor.values(QLatin1String("CODECFORSRC"));
+ if (!tmp.isEmpty()) {
+ codecForSource = tmp.last().toLatin1();
+ if (!QTextCodec::codecForName(codecForSource)) {
+ qWarning("lupdate warning: Codec for source '%s' is invalid. "
+ "Falling back to codec for tr().", codecForSource.constData());
+ codecForSource.clear();
+ }
+ }
+ if (visitor.templateType() == ProFileEvaluator::TT_Subdirs) {
+ QStringList subProFiles;
+ QDir proDir(pfi.absoluteDir());
+ foreach (const QString &subdir, visitor.values(QLatin1String("SUBDIRS"))) {
+ QString subPro = QDir::cleanPath(proDir.absoluteFilePath(subdir));
+ QFileInfo subInfo(subPro);
+ if (subInfo.isDir())
+ subProFiles << (subPro + QLatin1Char('/')
+ + subInfo.fileName() + QLatin1String(".pro"));
+ else
+ subProFiles << subPro;
+ }
+ processProjects(false, nestComplain, subProFiles, options, codecForSource,
+ targetLanguage, sourceLanguage, fetchedTor, fail);
+ } else {
+ ConversionData cd;
+ cd.m_noUiLines = options & NoUiLines;
+ cd.m_codecForSource = codecForSource;
+ cd.m_includePath = visitor.values(QLatin1String("INCLUDEPATH"));
+ QStringList sourceFiles = getSources(visitor, pfi.absolutePath());
+ QSet<QString> sourceDirs;
+ sourceDirs.insert(QDir::cleanPath(pfi.absolutePath()) + QLatin1Char('/'));
+ foreach (const QString &sf, sourceFiles)
+ sourceDirs.insert(sf.left(sf.lastIndexOf(QLatin1Char('/')) + 1));
+ QStringList rootList = sourceDirs.toList();
+ rootList.sort();
+ for (int prev = 0, curr = 1; curr < rootList.length(); )
+ if (rootList.at(curr).startsWith(rootList.at(prev)))
+ rootList.removeAt(curr);
+ else
+ prev = curr++;
+ cd.m_projectRoots = QSet<QString>::fromList(rootList);
+ processSources(*fetchedTor, sourceFiles, cd);
+ }
+}
+
+static void processProjects(
+ bool topLevel, bool nestComplain, const QStringList &proFiles,
+ UpdateOptions options, const QByteArray &codecForSource,
+ const QString &targetLanguage, const QString &sourceLanguage,
+ Translator *parentTor, bool *fail)
+{
+ foreach (const QString &proFile, proFiles) {
+ ProFileEvaluator visitor;
+ visitor.setVerbose(options & Verbose);
+
+ QFileInfo pfi(proFile);
+ ProFile pro(pfi.absoluteFilePath());
+ if (!visitor.queryProFile(&pro) || !visitor.accept(&pro)) {
+ if (topLevel)
+ *fail = true;
+ continue;
+ }
+
+ if (visitor.contains(QLatin1String("TRANSLATIONS"))) {
+ if (parentTor) {
+ if (topLevel) {
+ std::cerr << "lupdate warning: TS files from command line "
+ "will override TRANSLATIONS in " << qPrintable(proFile) << ".\n";
+ goto noTrans;
+ } else if (nestComplain) {
+ std::cerr << "lupdate warning: TS files from command line "
+ "prevent recursing into " << qPrintable(proFile) << ".\n";
+ continue;
+ }
+ }
+ QStringList tsFiles;
+ QDir proDir(pfi.absolutePath());
+ foreach (const QString &tsFile, visitor.values(QLatin1String("TRANSLATIONS")))
+ tsFiles << QFileInfo(proDir, tsFile).filePath();
+ if (tsFiles.isEmpty()) {
+ // This might mean either a buggy PRO file or an intentional detach -
+ // we can't know without seeing the actual RHS of the assignment ...
+ // Just assume correctness and be silent.
+ continue;
+ }
+ Translator tor;
+ bool setCodec = false;
+ QStringList tmp = visitor.values(QLatin1String("CODEC"))
+ + visitor.values(QLatin1String("DEFAULTCODEC"))
+ + visitor.values(QLatin1String("CODECFORTR"));
+ if (!tmp.isEmpty()) {
+ tor.setCodecName(tmp.last().toLatin1());
+ setCodec = true;
+ }
+ processProject(false, pfi, visitor, options, codecForSource,
+ targetLanguage, sourceLanguage, &tor, fail);
+ updateTsFiles(tor, tsFiles, setCodec, sourceLanguage, targetLanguage, options, fail);
+ continue;
+ }
+ noTrans:
+ if (!parentTor) {
+ if (topLevel)
+ std::cerr << "lupdate warning: no TS files specified. Only diagnostics "
+ "will be produced for '" << qPrintable(proFile) << "'.\n";
+ Translator tor;
+ processProject(nestComplain, pfi, visitor, options, codecForSource,
+ targetLanguage, sourceLanguage, &tor, fail);
+ } else {
+ processProject(nestComplain, pfi, visitor, options, codecForSource,
+ targetLanguage, sourceLanguage, parentTor, fail);
+ }
+ }
+}
+
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
m_defaultExtensions = QLatin1String("ui,c,c++,cc,cpp,cxx,ch,h,h++,hh,hpp,hxx");
QStringList args = app.arguments();
- QString defaultContext; // This was QLatin1String("@default") before.
- Translator fetchedTor;
- QByteArray codecForTr;
- QByteArray codecForSource;
QStringList tsFileNames;
QStringList proFiles;
QMultiHash<QString, QString> allCSources;
@@ -232,6 +416,7 @@
QStringList includePath;
QString targetLanguage;
QString sourceLanguage;
+ QByteArray codecForTr;
UpdateOptions options =
Verbose | // verbose is on by default starting with Qt 4.2
@@ -330,6 +515,14 @@
} else if (arg == QLatin1String("-version")) {
printOut(QObject::tr("lupdate version %1\n").arg(QLatin1String(QT_VERSION_STR)));
return 0;
+ } else if (arg == QLatin1String("-codecfortr")) {
+ ++i;
+ if (i == argc) {
+ qWarning("The -codecfortr option should be followed by a codec name.");
+ return 1;
+ }
+ codecForTr = args[i].toLatin1();
+ continue;
} else if (arg == QLatin1String("-ts")) {
metTsFlag = true;
continue;
@@ -367,11 +560,6 @@
return 1;
}
- numFiles++;
-
- codecForTr.clear();
- codecForSource.clear();
-
if (metTsFlag) {
bool found = false;
foreach (const Translator::FileFormat &fmt, Translator::registeredFileFormats()) {
@@ -395,6 +583,7 @@
} else if (arg.endsWith(QLatin1String(".pro"), Qt::CaseInsensitive)
|| arg.endsWith(QLatin1String(".pri"), Qt::CaseInsensitive)) {
proFiles << arg;
+ numFiles++;
} else {
QFileInfo fi(arg);
if (!fi.exists()) {
@@ -439,105 +628,53 @@
} else {
sourceFiles << QDir::cleanPath(fi.absoluteFilePath());;
}
+ numFiles++;
}
} // for args
- foreach (const QString &proFile, proFiles)
- projectRoots.insert(QDir::cleanPath(QFileInfo(proFile).absolutePath()) + QLatin1Char('/'));
-
- bool firstPass = true;
- bool fail = false;
- while (firstPass || !proFiles.isEmpty()) {
- ConversionData cd;
- cd.m_defaultContext = defaultContext;
- cd.m_noUiLines = options & NoUiLines;
- cd.m_projectRoots = projectRoots;
- cd.m_includePath = includePath;
- cd.m_allCSources = allCSources;
-
- QStringList tsFiles = tsFileNames;
- if (proFiles.count() > 0) {
- QFileInfo pfi(proFiles.takeFirst());
- QHash<QByteArray, QStringList> variables;
-
- ProFileEvaluator visitor;
- visitor.setVerbose(options & Verbose);
-
- ProFile pro(pfi.absoluteFilePath());
- if (!visitor.queryProFile(&pro))
- return 2;
- if (!visitor.accept(&pro))
- return 2;
-
- if (visitor.templateType() == ProFileEvaluator::TT_Subdirs) {
- QDir proDir(pfi.absoluteDir());
- foreach (const QString &subdir, visitor.values(QLatin1String("SUBDIRS"))) {
- QString subPro = QDir::cleanPath(proDir.absoluteFilePath(subdir));
- QFileInfo subInfo(subPro);
- if (subInfo.isDir())
- proFiles << (subPro + QLatin1Char('/')
- + subInfo.fileName() + QLatin1String(".pro"));
- else
- proFiles << subPro;
- }
- continue;
- }
-
- cd.m_includePath += visitor.values(QLatin1String("INCLUDEPATH"));
-
- evaluateProFile(visitor, &variables, pfi.absolutePath());
-
- sourceFiles = variables.value("SOURCES");
-
- QStringList tmp = variables.value("CODECFORTR");
- if (!tmp.isEmpty() && !tmp.first().isEmpty()) {
- codecForTr = tmp.first().toLatin1();
- fetchedTor.setCodecName(codecForTr);
- cd.m_outputCodec = codecForTr;
- }
- tmp = variables.value("CODECFORSRC");
- if (!tmp.isEmpty() && !tmp.first().isEmpty()) {
- codecForSource = tmp.first().toLatin1();
- if (!QTextCodec::codecForName(codecForSource))
- qWarning("lupdate warning: Codec for source '%s' is invalid. Falling back to codec for tr().",
- codecForSource.constData());
- else
- cd.m_codecForSource = codecForSource;
- }
-
- tsFiles += variables.value("TRANSLATIONS");
- }
-
- QStringList sourceFilesCpp;
- for (QStringList::iterator it = sourceFiles.begin(); it != sourceFiles.end(); ++it) {
- if (it->endsWith(QLatin1String(".java"), Qt::CaseInsensitive))
- loadJava(fetchedTor, *it, cd);
- else if (it->endsWith(QLatin1String(".ui"), Qt::CaseInsensitive)
- || it->endsWith(QLatin1String(".jui"), Qt::CaseInsensitive))
- loadUI(fetchedTor, *it, cd);
- else if (it->endsWith(QLatin1String(".js"), Qt::CaseInsensitive)
- || it->endsWith(QLatin1String(".qs"), Qt::CaseInsensitive))
- loadQScript(fetchedTor, *it, cd);
- else
- sourceFilesCpp << *it;
- }
- loadCPP(fetchedTor, sourceFilesCpp, cd);
- if (!cd.error().isEmpty())
- printOut(cd.error());
-
- tsFiles.sort();
- tsFiles.removeDuplicates();
-
- if (!tsFiles.isEmpty())
- updateTsFiles(fetchedTor, tsFiles, codecForTr, sourceLanguage, targetLanguage, options, &fail);
-
- firstPass = false;
- }
-
if (numFiles == 0) {
printUsage();
return 1;
}
+ if (!targetLanguage.isEmpty() && tsFileNames.count() != 1)
+ std::cerr << "lupdate warning: -target-language usually only "
+ "makes sense with exactly one TS file.\n";
+ if (!codecForTr.isEmpty() && tsFileNames.isEmpty())
+ std::cerr << "lupdate warning: -codecfortr has no effect without -ts.\n";
+
+ bool fail = false;
+ if (proFiles.isEmpty()) {
+ if (tsFileNames.isEmpty())
+ std::cerr << "lupdate warning: no TS files specified. "
+ "Only diagnostics will be produced.\n";
+
+ Translator fetchedTor;
+ ConversionData cd;
+ cd.m_noUiLines = options & NoUiLines;
+ cd.m_projectRoots = projectRoots;
+ cd.m_includePath = includePath;
+ cd.m_allCSources = allCSources;
+ fetchedTor.setCodecName(codecForTr);
+ processSources(fetchedTor, sourceFiles, cd);
+ updateTsFiles(fetchedTor, tsFileNames, !codecForTr.isEmpty(),
+ sourceLanguage, targetLanguage, options, &fail);
+ } else {
+ if (!sourceFiles.isEmpty() || !includePath.isEmpty()) {
+ qWarning("lupdate error: Both project and source files / include paths specified.\n");
+ return 1;
+ }
+ if (!tsFileNames.isEmpty()) {
+ Translator fetchedTor;
+ fetchedTor.setCodecName(codecForTr);
+ processProjects(true, true, proFiles, options, QByteArray(),
+ targetLanguage, sourceLanguage, &fetchedTor, &fail);
+ updateTsFiles(fetchedTor, tsFileNames, !codecForTr.isEmpty(),
+ sourceLanguage, targetLanguage, options, &fail);
+ } else {
+ processProjects(true, false, proFiles, options, QByteArray(),
+ targetLanguage, sourceLanguage, 0, &fail);
+ }
+ }
return fail ? 1 : 0;
}
--- a/tools/linguist/shared/proparser.pri Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/shared/proparser.pri Fri Mar 12 15:46:37 2010 +0200
@@ -2,13 +2,11 @@
INCLUDEPATH *= $$PWD
HEADERS += \
- $$PWD/proreader.h \
$$PWD/abstractproitemvisitor.h \
$$PWD/proitems.h \
$$PWD/profileevaluator.h \
$$PWD/proparserutils.h
SOURCES += \
- $$PWD/proreader.cpp \
$$PWD/proitems.cpp \
$$PWD/profileevaluator.cpp
--- a/tools/linguist/shared/qm.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/shared/qm.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -594,7 +594,7 @@
return false;
}
m += 4;
- QString str = QString::fromUtf16((const ushort *)m, len/2);
+ QString str = QString((const QChar *)m, len/2);
if (QSysInfo::ByteOrder == QSysInfo::LittleEndian) {
for (int i = 0; i < str.length(); ++i)
str[i] = QChar((str.at(i).unicode() >> 8) +
--- a/tools/linguist/shared/translator.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/shared/translator.h Fri Mar 12 15:46:37 2010 +0200
@@ -153,6 +153,7 @@
void reportDuplicates(const Duplicates &dupes, const QString &fileName, bool verbose);
void setCodecName(const QByteArray &name);
+ void setCodec(QTextCodec *codec) { m_codec = codec; }
QByteArray codecName() const;
QTextCodec *codec() const { return m_codec; }
--- a/tools/qttracereplay/main.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/qttracereplay/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -52,6 +52,7 @@
ReplayWidget(const QString &filename);
void paintEvent(QPaintEvent *event);
+ void resizeEvent(QResizeEvent *event);
public slots:
void updateRect();
@@ -64,14 +65,15 @@
int currentIteration;
QTime timer;
+ QList<uint> visibleUpdates;
QList<uint> iterationTimes;
QString filename;
};
void ReplayWidget::updateRect()
{
- if (!updates.isEmpty())
- update(updates.at(currentFrame));
+ if (!visibleUpdates.isEmpty())
+ update(updates.at(visibleUpdates.at(currentFrame)));
}
void ReplayWidget::paintEvent(QPaintEvent *)
@@ -80,10 +82,10 @@
// p.setClipRegion(frames.at(currentFrame).updateRegion);
- buffer.draw(&p, currentFrame);
+ buffer.draw(&p, visibleUpdates.at(currentFrame));
++currentFrame;
- if (currentFrame >= buffer.numFrames()) {
+ if (currentFrame >= visibleUpdates.size()) {
currentFrame = 0;
++currentIteration;
@@ -119,7 +121,7 @@
if (iterationTimes.size() >= 10 || stddev < 4) {
printf("%s, iterations: %d, frames: %d, min(ms): %d, median(ms): %d, stddev: %f %%, max(fps): %f\n", qPrintable(filename),
- iterationTimes.size(), updates.size(), min, median, stddev, 1000. * updates.size() / min);
+ iterationTimes.size(), visibleUpdates.size(), min, median, stddev, 1000. * visibleUpdates.size() / min);
deleteLater();
return;
}
@@ -130,6 +132,21 @@
QTimer::singleShot(0, this, SLOT(updateRect()));
}
+void ReplayWidget::resizeEvent(QResizeEvent *event)
+{
+ visibleUpdates.clear();
+
+ QRect bounds = rect();
+ for (int i = 0; i < updates.size(); ++i) {
+ if (updates.at(i).intersects(bounds))
+ visibleUpdates << i;
+ }
+
+ if (visibleUpdates.size() != updates.size())
+ printf("Warning: skipped %d frames due to limited resolution\n", updates.size() - visibleUpdates.size());
+
+}
+
ReplayWidget::ReplayWidget(const QString &filename_)
: currentFrame(0)
, currentIteration(0)
@@ -138,7 +155,6 @@
setWindowTitle(filename);
QFile file(filename);
- QRect bounds;
if (!file.open(QIODevice::ReadOnly)) {
printf("Failed to load input file '%s'\n", qPrintable(filename_));
return;
--- a/tools/runonphone/main.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/runonphone/main.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -72,7 +72,7 @@
QString serialPortFriendlyName;
QString sisFile;
QString exeFile;
- QString cmdLine;
+ QStringList cmdLine;
QStringList args = QCoreApplication::arguments();
QTextStream outstream(stdout);
QTextStream errstream(stderr);
@@ -124,7 +124,6 @@
i++;
for(;i<args.size();i++) {
cmdLine.append(args.at(i));
- if(i + 1 < args.size()) cmdLine.append(' ');
}
}
}
@@ -204,8 +203,8 @@
QObject::connect(launcher.data(), SIGNAL(applicationOutputReceived(const QString &)), &handler, SLOT(applicationOutputReceived(const QString &)));
QObject::connect(launcher.data(), SIGNAL(copyProgress(int)), &handler, SLOT(copyProgress(int)));
QObject::connect(launcher.data(), SIGNAL(stateChanged(int)), &handler, SLOT(stateChanged(int)));
- QObject::connect(launcher.data(), SIGNAL(stopped(uint,uint,uint,QString)), &handler, SLOT(stopped(uint,uint,uint,QString)));
- QObject::connect(&handler, SIGNAL(resume(uint,uint)), launcher.data(), SLOT(resume(uint,uint)));
+ QObject::connect(launcher.data(), SIGNAL(processStopped(uint,uint,uint,QString)), &handler, SLOT(stopped(uint,uint,uint,QString)));
+ QObject::connect(&handler, SIGNAL(resume(uint,uint)), launcher.data(), SLOT(resumeProcess(uint,uint)));
QObject::connect(&handler, SIGNAL(terminate()), launcher.data(), SLOT(terminate()));
QObject::connect(launcher.data(), SIGNAL(finished()), &handler, SLOT(finished()));
--- a/tools/runonphone/runonphone.pro Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/runonphone/runonphone.pro Fri Mar 12 15:46:37 2010 +0200
@@ -18,7 +18,7 @@
-luuid \
-ladvapi32
}
-unix:!symbian {
+else:unix:!symbian {
SOURCES += serenum_unix.cpp
}
else {
--- a/tools/runonphone/trk/launcher.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/runonphone/trk/launcher.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -76,7 +76,7 @@
CopyState m_copyState;
QString m_fileName;
- QString m_commandLineArgs;
+ QStringList m_commandLineArgs;
QString m_installFileName;
int m_verbose;
Launcher::Actions m_startupActions;
@@ -159,7 +159,7 @@
d->m_installFileName = name;
}
-void Launcher::setCommandLineArgs(const QString &args)
+void Launcher::setCommandLineArgs(const QStringList &args)
{
d->m_commandLineArgs = args;
}
@@ -189,8 +189,10 @@
{
errorMessage->clear();
if (d->m_verbose) {
- const QString msg = QString::fromLatin1("Port=%1 Executable=%2 Package=%3 Remote Package=%4 Install file=%5")
- .arg(d->m_trkServerName, d->m_fileName, d->m_copyState.sourceFileName, d->m_copyState.destinationFileName, d->m_installFileName);
+ const QString msg = QString::fromLatin1("Port=%1 Executable=%2 Arguments=%3 Package=%4 Remote Package=%5 Install file=%6")
+ .arg(d->m_trkServerName, d->m_fileName,
+ d->m_commandLineArgs.join(QString(QLatin1Char(' '))),
+ d->m_copyState.sourceFileName, d->m_copyState.destinationFileName, d->m_installFileName);
logMessage(msg);
}
if (d->m_startupActions & ActionCopy) {
@@ -296,6 +298,34 @@
disconnectTrk();
}
+QString Launcher::msgStopped(uint pid, uint tid, uint address, const QString &why)
+{
+ return QString::fromLatin1("Process %1, thread %2 stopped at 0x%3: %4").
+ arg(pid).arg(tid).arg(address, 0, 16).
+ arg(why.isEmpty() ? QString::fromLatin1("<Unknown reason>") : why);
+}
+
+bool Launcher::parseNotifyStopped(const QByteArray &dataBA,
+ uint *pid, uint *tid, uint *address,
+ QString *why /* = 0 */)
+{
+ if (why)
+ why->clear();
+ *address = *pid = *tid = 0;
+ if (dataBA.size() < 12)
+ return false;
+ const char *data = dataBA.data();
+ *address = extractInt(data);
+ *pid = extractInt(data + 4);
+ *tid = extractInt(data + 8);
+ if (why && dataBA.size() >= 14) {
+ const unsigned short len = extractShort(data + 12);
+ if (len > 0)
+ *why = QString::fromLatin1(data + 14, len);
+ }
+ return true;
+}
+
void Launcher::handleResult(const TrkResult &result)
{
QByteArray prefix = "READ BUF: ";
@@ -315,25 +345,13 @@
break;
}
case TrkNotifyStopped: { // Notified Stopped
- logMessage(prefix + "NOTE: STOPPED " + str);
- // 90 01 78 6a 40 40 00 00 07 23 00 00 07 24 00 00
QString reason;
- if (result.data.size() >= 14) {
- uint pc = extractInt(result.data.mid(0,4).constData());
- uint pid = extractInt(result.data.mid(4,4).constData());
- uint tid = extractInt(result.data.mid(8,4).constData());
- ushort len = extractShort(result.data.mid(12,2).constData());
- if(len > 0)
- reason = result.data.mid(14, len);
- emit(stopped(pc, pid, tid, reason));
- } else {
- emit(stopped(0, 0, 0, reason));
- }
- //const char *data = result.data.data();
-// uint addr = extractInt(data); //code address: 4 bytes; code base address for the library
-// uint pid = extractInt(data + 4); // ProcessID: 4 bytes;
-// uint tid = extractInt(data + 8); // ThreadID: 4 bytes
- //logMessage(prefix << " ADDR: " << addr << " PID: " << pid << " TID: " << tid);
+ uint pc;
+ uint pid;
+ uint tid;
+ parseNotifyStopped(result.data, &pid, &tid, &pc, &reason);
+ logMessage(prefix + msgStopped(pid, tid, pc, reason));
+ emit(processStopped(pc, pid, tid, reason));
d->m_device->sendTrkAck(result.token);
break;
}
@@ -681,6 +699,26 @@
}
}
+QByteArray Launcher::startProcessMessage(const QString &executable,
+ const QStringList &arguments)
+{
+ // It's not started yet
+ QByteArray ba;
+ appendShort(&ba, 0, TargetByteOrder); // create new process
+ appendByte(&ba, 0); // options - currently unused
+ if(arguments.isEmpty()) {
+ appendString(&ba, executable.toLocal8Bit(), TargetByteOrder);
+ return ba;
+ }
+ // Append full command line as one string (leading length information).
+ QByteArray commandLineBa;
+ commandLineBa.append(executable.toLocal8Bit());
+ commandLineBa.append('\0');
+ commandLineBa.append(arguments.join(QString(QLatin1Char(' '))).toLocal8Bit());
+ appendString(&ba, commandLineBa, TargetByteOrder);
+ return ba;
+}
+
void Launcher::startInferiorIfNeeded()
{
emit startingApplication();
@@ -688,24 +726,11 @@
logMessage("Process already 'started'");
return;
}
- // It's not started yet
- QByteArray ba;
- appendShort(&ba, 0, TargetByteOrder); // create new process
- appendByte(&ba, 0); // options - currently unused
-
- if(d->m_commandLineArgs.isEmpty()) {
- appendString(&ba, d->m_fileName.toLocal8Bit(), TargetByteOrder);
- } else {
- QByteArray ba2;
- ba2.append(d->m_fileName.toLocal8Bit());
- ba2.append('\0');
- ba2.append(d->m_commandLineArgs.toLocal8Bit());
- appendString(&ba, ba2, TargetByteOrder);
- }
- d->m_device->sendTrkMessage(TrkCreateItem, TrkCallback(this, &Launcher::handleCreateProcess), ba); // Create Item
+ d->m_device->sendTrkMessage(TrkCreateItem, TrkCallback(this, &Launcher::handleCreateProcess),
+ startProcessMessage(d->m_fileName, d->m_commandLineArgs)); // Create Item
}
-void Launcher::resume(uint pid, uint tid)
+void Launcher::resumeProcess(uint pid, uint tid)
{
QByteArray ba;
appendInt(&ba, pid, BigEndian);
--- a/tools/runonphone/trk/launcher.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/runonphone/trk/launcher.h Fri Mar 12 15:46:37 2010 +0200
@@ -95,7 +95,7 @@
void setFileName(const QString &name);
void setCopyFileName(const QString &srcName, const QString &dstName);
void setInstallFileName(const QString &name);
- void setCommandLineArgs(const QString &args);
+ void setCommandLineArgs(const QStringList &args);
bool startServer(QString *errorMessage);
void setVerbose(int v);
void setSerialFrame(bool b);
@@ -109,6 +109,15 @@
// becomes valid after successful execution of ActionPingOnly
QString deviceDescription(unsigned verbose = 0u) const;
+ static QByteArray startProcessMessage(const QString &executable,
+ const QStringList &arguments);
+ // Parse a TrkNotifyStopped message
+ static bool parseNotifyStopped(const QByteArray &a,
+ uint *pid, uint *tid, uint *address,
+ QString *why = 0);
+ // Helper message
+ static QString msgStopped(uint pid, uint tid, uint address, const QString &why);
+
signals:
void copyingStarted();
void canNotConnect(const QString &errorMessage);
@@ -125,11 +134,11 @@
void applicationOutputReceived(const QString &output);
void copyProgress(int percent);
void stateChanged(int);
- void stopped(uint pc, uint pid, uint tid, const QString& reason);
+ void processStopped(uint pc, uint pid, uint tid, const QString& reason);
public slots:
void terminate();
- void resume(uint pid, uint tid);
+ void resumeProcess(uint pid, uint tid);
private slots:
void handleResult(const trk::TrkResult &data);
--- a/tools/runonphone/trk/trkdevice.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/runonphone/trk/trkdevice.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -99,6 +99,8 @@
#endif
+enum { verboseTrk = 0 };
+
namespace trk {
///////////////////////////////////////////////////////////////////////
@@ -128,6 +130,12 @@
{
}
+QDebug operator<<(QDebug d, const TrkMessage &msg)
+{
+ return d << "Message: Code: " << msg.code
+ << " Token: " << msg.token << " " << msg.data.toHex();
+}
+
} // namespace trk
Q_DECLARE_METATYPE(trk::TrkMessage)
@@ -204,6 +212,8 @@
++m_trkWriteToken;
if (m_trkWriteToken == 0)
++m_trkWriteToken;
+ if (verboseTrk)
+ qDebug() << "Write token: " << m_trkWriteToken;
return m_trkWriteToken;
}
@@ -334,7 +344,8 @@
///////////////////////////////////////////////////////////////////////
-class WriterThread : public QThread {
+class WriterThread : public QThread
+{
Q_OBJECT
Q_DISABLE_COPY(WriterThread)
public:
@@ -400,15 +411,18 @@
m_waitMutex.unlock();
if (m_terminate)
return 1;
+
// Send off message
m_dataMutex.lock();
TrkMessage message;
const TrkWriteQueue::PendingMessageResult pr = m_queue.pendingMessage(&message);
m_dataMutex.unlock();
+
switch (pr) {
case TrkWriteQueue::NoMessage:
break;
case TrkWriteQueue::PendingMessage: {
+ //qDebug() << "Write pending message " << message;
// Untested: try to re-send a few times
bool success = false;
for (int r = 0; !success && (r < MaxAttempts); r++) {
@@ -428,6 +442,8 @@
break;
case TrkWriteQueue::NoopMessageDequeued:
// Sync with thread that owns us via a blocking signal
+ if (verboseTrk)
+ qDebug() << "Noop message dequeued" << message;
emit internalNoopMessageDequeued(message);
break;
} // switch
@@ -499,6 +515,8 @@
bool WriterThread::write(const QByteArray &data, QString *errorMessage)
{
+ if (verboseTrk)
+ qDebug() << "Write raw data: " << data.toHex();
QMutexLocker locker(&m_context->mutex);
#ifdef Q_OS_WIN
DWORD charsWritten;
@@ -557,6 +575,7 @@
tryWrite(); // Have messages been enqueued in-between?
}
+
///////////////////////////////////////////////////////////////////////
//
// ReaderThreadBase: Base class for a thread that reads data from
@@ -566,7 +585,8 @@
//
///////////////////////////////////////////////////////////////////////
-class ReaderThreadBase : public QThread {
+class ReaderThreadBase : public QThread
+{
Q_OBJECT
Q_DISABLE_COPY(ReaderThreadBase)
public:
@@ -625,7 +645,8 @@
//
///////////////////////////////////////////////////////////////////////
-class WinReaderThread : public ReaderThreadBase {
+class WinReaderThread : public ReaderThreadBase
+{
Q_OBJECT
Q_DISABLE_COPY(WinReaderThread)
public:
@@ -835,7 +856,8 @@
{
// Trigger select() by writing to the pipe
char c = 0;
- write(m_terminatePipeFileDescriptors[1], &c, 1);
+ int written = write(m_terminatePipeFileDescriptors[1], &c, 1);
+ // FIXME: Use result.
wait();
}
@@ -1021,6 +1043,8 @@
void TrkDevice::slotMessageReceived(const trk::TrkResult &result, const QByteArray &rawData)
{
d->writerThread->slotHandleResult(result);
+ if (d->verbose > 1)
+ qDebug() << "Received: " << result.toString();
emit messageReceived(result);
if (!rawData.isEmpty())
emit rawDataReceived(rawData);
@@ -1057,6 +1081,8 @@
TrkMessage msg(0x80, token);
msg.token = token;
msg.data.append('\0');
+ if (verboseTrk)
+ qDebug() << "Write synchroneous message: " << msg;
return d->writerThread->trkWriteRawMessage(msg);
// 01 90 00 07 7e 80 01 00 7d 5e 7e
}
--- a/tools/runonphone/trk/trkutils.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/runonphone/trk/trkutils.h Fri Mar 12 15:46:37 2010 +0200
@@ -119,7 +119,8 @@
uint dataseg;
};
-struct TrkAppVersion {
+struct TrkAppVersion
+{
TrkAppVersion();
void reset();
@@ -153,6 +154,10 @@
typedef QList<Library> Libraries;
Libraries libraries;
+ typedef uint Thread;
+ typedef QList<Thread> Threads;
+ Threads threads;
+
// Gdb request
uint currentThread;
QStringList modules;
--- a/tools/shared/findwidget/abstractfindwidget.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/shared/findwidget/abstractfindwidget.h Fri Mar 12 15:46:37 2010 +0200
@@ -70,7 +70,7 @@
};
Q_DECLARE_FLAGS(FindFlags, FindFlag)
- AbstractFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
+ explicit AbstractFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
virtual ~AbstractFindWidget();
bool eventFilter(QObject *object, QEvent *e);
--- a/tools/shared/findwidget/itemviewfindwidget.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/shared/findwidget/itemviewfindwidget.h Fri Mar 12 15:46:37 2010 +0200
@@ -55,7 +55,7 @@
Q_OBJECT
public:
- ItemViewFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
+ explicit ItemViewFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
QAbstractItemView *itemView() const
{ return m_itemView; }
--- a/tools/shared/findwidget/texteditfindwidget.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/shared/findwidget/texteditfindwidget.h Fri Mar 12 15:46:37 2010 +0200
@@ -53,7 +53,7 @@
Q_OBJECT
public:
- TextEditFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
+ explicit TextEditFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
QTextEdit *textEdit() const
{ return m_textEdit; }
--- a/tools/shared/fontpanel/fontpanel.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/shared/fontpanel/fontpanel.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -217,7 +217,7 @@
const QString normalStyle = QLatin1String("Normal");
if (hasStyles) {
- foreach (QString style, styles) {
+ foreach (const QString &style, styles) {
// try to maintain selection or select 'normal' preferably
const int newIndex = m_styleComboBox->count();
m_styleComboBox->addItem(style);
--- a/tools/shared/qtgradienteditor/qtgradientutils.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/shared/qtgradienteditor/qtgradientutils.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -395,7 +395,7 @@
static QStringList styleSheetStops(const QGradient &gradient)
{
QStringList result;
- foreach (QGradientStop stop, gradient.stops()) {
+ foreach (const QGradientStop &stop, gradient.stops()) {
const QColor color = stop.second;
const QString stopDescription = QLatin1String("stop:") + QString::number(stop.first) + QLatin1String(" rgba(")
--- a/tools/shared/qttoolbardialog/qttoolbardialog.h Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/shared/qttoolbardialog/qttoolbardialog.h Fri Mar 12 15:46:37 2010 +0200
@@ -68,7 +68,7 @@
Q_OBJECT
public:
- QtToolBarManager(QObject *parent = 0);
+ explicit QtToolBarManager(QObject *parent = 0);
~QtToolBarManager();
void setMainWindow(QMainWindow *mainWindow);
@@ -100,7 +100,7 @@
Q_OBJECT
public:
- QtToolBarDialog(QWidget *parent = 0, Qt::WindowFlags flags = 0);
+ explicit QtToolBarDialog(QWidget *parent = 0, Qt::WindowFlags flags = 0);
~QtToolBarDialog();
void setToolBarManager(QtToolBarManager *toolBarManager);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/assistant_cs.ts Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1074 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs_CZ">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/>
+ <source>&Close</source>
+ <translation>&ZavÅ™Ãt</translation>
+ </message>
+</context>
+<context>
+ <name>AboutLabel</name>
+ <message>
+ <location line="-14"/>
+ <source>Warning</source>
+ <translation>VarovánÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Unable to launch external application.
+</source>
+ <translation>Chyba při spouštěnà vnějšà aplikace.
+</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+</context>
+<context>
+ <name>BookmarkDialog</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui"/>
+ <source>Add Bookmark</source>
+ <translation>Přidat záložku</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Bookmark:</source>
+ <translation>Záložka:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Add in Folder:</source>
+ <translation>ZÅ™Ãdit ve složce:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>New Folder</source>
+ <translation>Nová složka</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+184"/>
+ <location line="+18"/>
+ <location line="+39"/>
+ <location line="+18"/>
+ <location line="+30"/>
+ <source>Bookmarks</source>
+ <translation>Záložky</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui"/>
+ <source>+</source>
+ <translation>+</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="-61"/>
+ <source>Delete Folder</source>
+ <translation>Smazat složku</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Rename Folder</source>
+ <translation>Přejmenovat složku</translation>
+ </message>
+</context>
+<context>
+ <name>BookmarkManager</name>
+ <message>
+ <location line="+434"/>
+ <source>Bookmarks</source>
+ <translation>Záložky</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>Remove</source>
+ <translation>Odstranit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>You are going to delete a Folder, this will also<br>remove it's content. Are you sure to continue?</source>
+ <translation>Když smažete tuto složku, bude smazán i <br>celý jejà obsah. Opravdu chcete pokraÄovat?</translation>
+ </message>
+ <message>
+ <location line="+143"/>
+ <location line="+9"/>
+ <source>New Folder</source>
+ <translation>Nová složka</translation>
+ </message>
+</context>
+<context>
+ <name>BookmarkWidget</name>
+ <message>
+ <location line="-416"/>
+ <source>Filter:</source>
+ <translation>Filtr:</translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>Remove</source>
+ <translation>Odstranit</translation>
+ </message>
+ <message>
+ <location line="-79"/>
+ <source>Delete Folder</source>
+ <translation>Smazat složku</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Rename Folder</source>
+ <translation>Přejmenovat složku</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Show Bookmark</source>
+ <translation>Ukázat záložku</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Show Bookmark in New Tab</source>
+ <translation>Ukázat záložku v nové kartě</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Delete Bookmark</source>
+ <translation>Smazat záložku</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Rename Bookmark</source>
+ <translation>Přejmenovat záložku</translation>
+ </message>
+ <message>
+ <location line="+62"/>
+ <source>Add</source>
+ <translation>Přidat</translation>
+ </message>
+</context>
+<context>
+ <name>CentralWidget</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+238"/>
+ <source>Add new page</source>
+ <translation>Přidat novou stranu</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Close current page</source>
+ <translation>ZavÅ™Ãt souÄasnou stranu</translation>
+ </message>
+ <message>
+ <location line="+312"/>
+ <source>Print Document</source>
+ <translation>Vytisknout dokument</translation>
+ </message>
+ <message>
+ <location line="+148"/>
+ <location line="+2"/>
+ <source>unknown</source>
+ <translation>Neznámý</translation>
+ </message>
+ <message>
+ <location line="+93"/>
+ <source>Add New Page</source>
+ <translation>Přidat novou stranu</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Close This Page</source>
+ <translation>ZavÅ™Ãt tuto stranu</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Close Other Pages</source>
+ <translation>ZavÅ™Ãt jiné strany</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Add Bookmark for this Page...</source>
+ <translation>Přidat záložku pro tuto stranu...</translation>
+ </message>
+ <message>
+ <location line="+255"/>
+ <source>Search</source>
+ <translation>Hledat</translation>
+ </message>
+</context>
+<context>
+ <name>ContentWindow</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+158"/>
+ <source>Open Link</source>
+ <translation>OtevÅ™Ãt adresu odkazu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Open Link in New Tab</source>
+ <translation>OtevÅ™Ãt odkaz v nové kartÄ›</translation>
+ </message>
+</context>
+<context>
+ <name>FilterNameDialogClass</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/filternamedialog.ui"/>
+ <source>Add Filter Name</source>
+ <translation>Přidat název filtru</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Filter Name:</source>
+ <translation>Název filtru:</translation>
+ </message>
+</context>
+<context>
+ <name>FindWidget</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-955"/>
+ <source>Previous</source>
+ <translation>PÅ™edchozÃ</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Next</source>
+ <translation>DalÅ¡Ã</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Case Sensitive</source>
+ <translation>RozliÅ¡ujÃcà velká a malá pÃsmena</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Whole words</source>
+ <translation>Celá slova</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source><img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped</source>
+ <translation><img src=":/trolltech/assistant/images/wrap.png">&nbsp;Konec strany</translation>
+ </message>
+</context>
+<context>
+ <name>FontPanel</name>
+ <message>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
+ <source>Font</source>
+ <translation>PÃsmo</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>&Writing system</source>
+ <translation>Způsob &psanÃ</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&Family</source>
+ <translation>&PÃsmová rodina</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&Style</source>
+ <translation>&Styl</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&Point size</source>
+ <translation>&Bodová velikost</translation>
+ </message>
+</context>
+<context>
+ <name>HelpViewer</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+492"/>
+ <source>Help</source>
+ <translation>Nápověda</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location line="-62"/>
+ <source><title>Error 404...</title><div align="center"><br><br><h1>The page could not be found</h1><br><h3>'%1'</h3></div></source>
+ <translation><title>Chyba 404 ...</title><div align="center"><br><br><h1>Stranu se nepodaÅ™ilo najÃt.</h1><br><h3>'%1'</h3></div></translation>
+ </message>
+ <message>
+ <location line="+125"/>
+ <source>Copy &Link Location</source>
+ <translation>&KopÃrovat adresu odkazu</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Open Link in New Tab Ctrl+LMB</source>
+ <translation>OtevÅ™Ãt odkaz v nové kartÄ› Ctrl+LMB</translation>
+ </message>
+ <message>
+ <location line="-275"/>
+ <source>Open Link in New Tab</source>
+ <translation>OtevÅ™Ãt odkaz v nové kartÄ›</translation>
+ </message>
+ <message>
+ <location line="+209"/>
+ <source>Unable to launch external application.
+</source>
+ <translation>Chyba při spouštěnà vnějšà aplikace.
+</translation>
+ </message>
+</context>
+<context>
+ <name>IndexWindow</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/>
+ <source>&Look for:</source>
+ <translation>&Hledat:</translation>
+ </message>
+ <message>
+ <location line="+68"/>
+ <source>Open Link</source>
+ <translation>OtevÅ™Ãt adresu odkazu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Open Link in New Tab</source>
+ <translation>OtevÅ™Ãt odkaz v nové kartÄ›</translation>
+ </message>
+</context>
+<context>
+ <name>InstallDialog</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+76"/>
+ <source>Install Documentation</source>
+ <translation>Nainstalovat dokumentaci</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+30"/>
+ <source>Downloading documentation info...</source>
+ <translation>Stahuje se informace o dokumentaci...</translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>Download canceled.</source>
+ <translation>Stahovánà bylo zrušeno.</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <location line="+78"/>
+ <location line="+27"/>
+ <source>Done.</source>
+ <translation>Hotovo.</translation>
+ </message>
+ <message>
+ <location line="-90"/>
+ <source>The file %1 already exists. Do you want to overwrite it?</source>
+ <translation>Soubor %1 již existuje. Chcete jej přepsat?</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Unable to save the file %1: %2.</source>
+ <translation>Soubor %1 nelze uložit: %2.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Downloading %1...</source>
+ <translation>Stahuje se %1...</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <location line="+42"/>
+ <location line="+38"/>
+ <source>Download failed: %1.</source>
+ <translation>Staženà se nezdařilo: %1.</translation>
+ </message>
+ <message>
+ <location line="-70"/>
+ <source>Documentation info file is corrupt!</source>
+ <translation>Soubor s informacà o dokumentaci je poškozen!</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>Download failed: Downloaded file is corrupted.</source>
+ <translation>Staženà se nezdařilo: Stažený soubor je pravděpodobně poškozen.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Installing documentation %1...</source>
+ <translation>Instaluje dokumentace %1...</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Error while installing documentation:
+%1</source>
+ <translation>Chyba při instalaci dokumentace:
+%1</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
+ <source>Available Documentation:</source>
+ <translation>Dostupná dokumentace:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Install</source>
+ <translation>Instalovat</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Installation Path:</source>
+ <translation>Cesta pro instalaci:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+110"/>
+ <location line="+391"/>
+ <source>Index</source>
+ <translation>RejstÅ™Ãk</translation>
+ </message>
+ <message>
+ <location line="-385"/>
+ <location line="+383"/>
+ <source>Contents</source>
+ <translation>Obsah</translation>
+ </message>
+ <message>
+ <location line="-378"/>
+ <location line="+382"/>
+ <source>Bookmarks</source>
+ <translation>Záložky</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Search</source>
+ <translation>Hledat</translation>
+ </message>
+ <message>
+ <location line="-372"/>
+ <location line="+215"/>
+ <location line="+512"/>
+ <source>Qt Assistant</source>
+ <translation>Qt Assistant</translation>
+ </message>
+ <message>
+ <location line="-544"/>
+ <location line="+5"/>
+ <source>Unfiltered</source>
+ <translation>Bez filtru</translation>
+ </message>
+ <message>
+ <location line="+107"/>
+ <source>Page Set&up...</source>
+ <translation>&Nastavenà strany...</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Print Preview...</source>
+ <translation>Náhled tisku...</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&Print...</source>
+ <translation>&Tisk...</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>New &Tab</source>
+ <translation>Nová &karta</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&Close Tab</source>
+ <translation>&ZavÅ™Ãt kartu</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&Quit</source>
+ <translation>&UkonÄit</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&Copy selected Text</source>
+ <translation>&KopÃrovat vybraný text</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>&Find in Text...</source>
+ <translation>&NajÃt v textu...</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Find &Next</source>
+ <translation>Hledat &dál</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Find &Previous</source>
+ <translation>NajÃt &pÅ™edchozÃ</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Preferences...</source>
+ <translation>NastavenÃ...</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Zoom &in</source>
+ <translation>&Zvětšit</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Zoom &out</source>
+ <translation>&Zmenšit</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Normal &Size</source>
+ <translation>Obvyklá &velikost</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Ctrl+0</source>
+ <translation>Ctrl+0</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>ALT+C</source>
+ <translation>ALT+C</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>ALT+I</source>
+ <translation>ALT+I</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>ALT+S</source>
+ <translation>ALT+S</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&Home</source>
+ <translation>&ZaÄáteÄnà strana</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&Back</source>
+ <translation>&Zpět</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&Forward</source>
+ <translation>&Dopředu</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Sync with Table of Contents</source>
+ <translation>SeÅ™Ãdit stranu s kartou obsahu</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Next Page</source>
+ <translation>Dalšà strana</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ctrl+Alt+Right</source>
+ <translation>Ctrl+Alt+Right</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Previous Page</source>
+ <translation>Předchozà strana</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ctrl+Alt+Left</source>
+ <translation>Ctrl+Alt+Left</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Add Bookmark...</source>
+ <translation>Přidat záložku...</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>About...</source>
+ <translation>O...</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Navigation Toolbar</source>
+ <translation>NavigaÄnà pruh</translation>
+ </message>
+ <message>
+ <location line="+76"/>
+ <source>Toolbars</source>
+ <translation>Nástrojové pruhy</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Filter Toolbar</source>
+ <translation>Filtrovacà pruh</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Filtered by:</source>
+ <translation>Filtr:</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Address Toolbar</source>
+ <translation>Adresnà pruh</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Address:</source>
+ <translation>Adresa:</translation>
+ </message>
+ <message>
+ <location line="+114"/>
+ <source>Could not find the associated content item.</source>
+ <translation>NepodaÅ™ilo se najÃt pÅ™ÃsluÅ¡nou položku obsahu.</translation>
+ </message>
+ <message>
+ <location line="+71"/>
+ <source>About %1</source>
+ <translation>O %1</translation>
+ </message>
+ <message>
+ <location line="+114"/>
+ <source>Updating search index</source>
+ <translation>Sestavuje se rejstÅ™Ãk hledánÃ</translation>
+ </message>
+ <message>
+ <location line="-638"/>
+ <source>Looking for Qt Documentation...</source>
+ <translation>Hledá se dokumentace ke Qt...</translation>
+ </message>
+ <message>
+ <location line="+241"/>
+ <source>&Window</source>
+ <translation>&Okno</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Minimize</source>
+ <translation>Zmenšit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ctrl+M</source>
+ <translation>Ctrl+M</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Zoom</source>
+ <translation>ZvÄ›tÅ¡enÃ</translation>
+ </message>
+ <message>
+ <location line="-159"/>
+ <source>&File</source>
+ <translation>&Soubor</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>&Edit</source>
+ <translation>&Úpravy</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>&View</source>
+ <translation>&Pohled</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>&Go</source>
+ <translation>&JÃt na</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>ALT+Home</source>
+ <translation>ALT+Home</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>&Bookmarks</source>
+ <translation>&Záložky</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&Help</source>
+ <translation>&Nápověda</translation>
+ </message>
+ <message>
+ <location line="-40"/>
+ <source>ALT+O</source>
+ <translation>ALT+O</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>CTRL+D</source>
+ <translation>CTRL+D</translation>
+ </message>
+</context>
+<context>
+ <name>PreferencesDialog</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+259"/>
+ <location line="+43"/>
+ <source>Add Documentation</source>
+ <translation>Přidat dokumentaci</translation>
+ </message>
+ <message>
+ <location line="-43"/>
+ <source>Qt Compressed Help Files (*.qch)</source>
+ <translation>StlaÄené soubory s nápovÄ›doun (*.qch)</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>The specified file is not a valid Qt Help File!</source>
+ <translation>Zadaný soubor nenà platným souborem nápovědy ke Qt.</translation>
+ </message>
+ <message>
+ <location line="-8"/>
+ <source>The namespace %1 is already registered!</source>
+ <translation>Jmenný prostor %1 je již zaznamenám!</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>Remove Documentation</source>
+ <translation>Odstranit dokumentaci</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Some documents currently opened in Assistant reference the documentation you are attempting to remove. Removing the documentation will close those documents.</source>
+ <translation>NÄ›které v souÄasnosti otevÅ™ené dokumenty pocházejà z dokumentace, kterou se právÄ› pokouÅ¡Ãte odstranit. PÅ™i odstraňovánà budou zavÅ™eny.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location line="+88"/>
+ <source>Use custom settings</source>
+ <translation>PoužÃt nastavenà stanovená uživatelem</translation>
+ </message>
+</context>
+<context>
+ <name>PreferencesDialogClass</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/preferencesdialog.ui"/>
+ <source>Preferences</source>
+ <translation>NastavenÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Fonts</source>
+ <translation>PÃsma</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Font settings:</source>
+ <translation>Nastavenà pÃsem:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Browser</source>
+ <translation>ProhlÞeÄ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Application</source>
+ <translation>Program</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Filters</source>
+ <translation>Filtr</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Filter:</source>
+ <translation>Filtr:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Attributes:</source>
+ <translation>Vlastnosti:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>1</source>
+ <translation>1</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Add</source>
+ <translation>Přidat</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Remove</source>
+ <translation>Odstranit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Documentation</source>
+ <translation>Dokumentace</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Registered Documentation:</source>
+ <translation>Zaznamenaná dokumentace:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Add...</source>
+ <translation>Přidat...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Options</source>
+ <translation>Volby</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Current Page</source>
+ <translation>Nynějšà strana</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Restore to default</source>
+ <translation>Obnovit výchozà nastavenÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Homepage</source>
+ <translation>ZaÄáteÄnà stránka</translation>
+ </message>
+ <message>
+ <location/>
+ <source>On help start:</source>
+ <translation>Na zaÄátek nápovÄ›dy:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Show my home page</source>
+ <translation>Ukázat moji domovskou stránku</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Show a blank page</source>
+ <translation>Ukázat prázdnou stránku</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Show my tabs from last session</source>
+ <translation>Ukázat mé karty z poslednÃho sezenÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Blank Page</source>
+ <translation>Prázdná strana</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+112"/>
+ <source>The specified collection file does not exist!</source>
+ <translation>Zadaný sbÃrkový soubor nelze najÃt!</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Missing collection file!</source>
+ <translation>ChybÄ›jÃcà sbÃrkový soubor!</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Invalid URL!</source>
+ <translation>Neplatné URL!</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Missing URL!</source>
+ <translation>ChybÄ›jÃcà URL!</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <location line="+19"/>
+ <location line="+19"/>
+ <source>Unknown widget: %1</source>
+ <translation>Neznámý prvek: %1</translation>
+ </message>
+ <message>
+ <location line="-34"/>
+ <location line="+19"/>
+ <location line="+19"/>
+ <source>Missing widget!</source>
+ <translation>ChybÄ›jÃcà prvek!</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <location line="+12"/>
+ <source>The specified Qt help file does not exist!</source>
+ <translation>Zadaný soubor s nápovÄ›dou ke Qt nelze najÃt!</translation>
+ </message>
+ <message>
+ <location line="-7"/>
+ <location line="+12"/>
+ <source>Missing help file!</source>
+ <translation>ChybÄ›jÃcà soubor s nápovÄ›dou!</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Missing filter argument!</source>
+ <translation>ChybÄ›jÃcà argument pro filtr!</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Unknown option: %1</source>
+ <translation>Neznámá volba: %1</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <location line="+2"/>
+ <source>Qt Assistant</source>
+ <translation>Qt Assistant</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/main.cpp" line="+217"/>
+ <source>Could not register documentation file
+%1
+
+Reason:
+%2</source>
+ <translation>Soubor s dokumentacà %1 nelze zaznamenat
+
+Důvod:
+%2</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Documentation successfully registered.</source>
+ <translation>Dokumentace byla úspěšně zaznamenána.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Could not unregister documentation file
+%1
+
+Reason:
+%2</source>
+ <translation>Zaznamenánà souboru s dokumentacà %1 nelze zrušit
+
+Grund:
+%2</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Documentation successfully unregistered.</source>
+ <translation>Dokumentace byla úspěšně odstraněna.</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>Cannot load sqlite database driver!</source>
+ <translation>Databázový ovladaÄ pro SQLite nelze nahrát!</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>The specified collection file could not be read!</source>
+ <translation>Zadaný sbÃrkový soubor nelze pÅ™eÄÃst!</translation>
+ </message>
+</context>
+<context>
+ <name>RemoteControl</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+163"/>
+ <source>Debugging Remote Control</source>
+ <translation>Ladà se dálkové ovládánÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Received Command: %1 %2</source>
+ <translation>PÅ™ijatý pÅ™Ãkaz: %1 : %2</translation>
+ </message>
+</context>
+<context>
+ <name>SearchWidget</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+195"/>
+ <source>&Copy</source>
+ <translation>&KopÃrovat</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Copy &Link Location</source>
+ <translation>&KopÃrovat adresu odkazu</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Open Link in New Tab</source>
+ <translation>OtevÅ™Ãt odkaz v nové kartÄ›</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Select All</source>
+ <translation>Vybrat vše</translation>
+ </message>
+</context>
+<context>
+ <name>TopicChooser</name>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/>
+ <source>Choose a topic for <b>%1</b>:</source>
+ <translation>Vyberte námět pro <b>%1</b>:</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/tools/assistant/topicchooser.ui"/>
+ <source>Choose Topic</source>
+ <translation>Vybrat námět</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Topics</source>
+ <translation>&Náměty</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Display</source>
+ <translation>&Zobrazit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Close</source>
+ <translation>&ZavÅ™Ãt</translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/designer_cs.ts Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,7051 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs_CZ">
+<context>
+ <name>AbstractFindWidget</name>
+ <message>
+ <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+127"/>
+ <source>&Previous</source>
+ <translation>&PÅ™edchozÃ</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>&Next</source>
+ <translation>&DalÅ¡Ã</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>&Case sensitive</source>
+ <translation>&RozliÅ¡ujÃcà velká a malá pÃsmena</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Whole &words</source>
+ <translation>Celá &slova</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source><img src=":/trolltech/shared/images/wrap.png">&nbsp;Search wrapped</source>
+ <translation><img src=":/trolltech/shared/images/wrap.png">&nbsp;Hledánà dosáhlo konce</translation>
+ </message>
+</context>
+<context>
+ <name>AddLinkDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/addlinkdialog.ui"/>
+ <source>Insert Link</source>
+ <translation>Vložit odkaz</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Title:</source>
+ <translation>Název:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>URL:</source>
+ <translation>URL:</translation>
+ </message>
+</context>
+<context>
+ <name>AppFontDialog</name>
+ <message>
+ <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+418"/>
+ <source>Additional Fonts</source>
+ <translation>DodateÄná pÃsma</translation>
+ </message>
+</context>
+<context>
+ <name>AppFontManager</name>
+ <message>
+ <location line="-267"/>
+ <source>'%1' is not a file.</source>
+ <translation>'%1' nenà soubor.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>The font file '%1' does not have read permissions.</source>
+ <translation>Soubor s pÃsmem '%1' nemá oprávnÄ›nà ke ÄtenÃ.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>The font file '%1' is already loaded.</source>
+ <translation>Soubor s pÃsmem '%1' je již nahrán.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>The font file '%1' could not be loaded.</source>
+ <translation>Soubor s pÃsmem '%1' se nepodaÅ™ilo nahrát.</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>'%1' is not a valid font id.</source>
+ <translation>'%1' nenà platným pÃsmovým ID.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>There is no loaded font matching the id '%1'.</source>
+ <translation>Nenà nahráno žádné pÃsmo s ID '%1'.</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>The font '%1' (%2) could not be unloaded.</source>
+ <translation>PÃsmo '%1' (%2) se nepodaÅ™ilo uvolnit z pamÄ›ti.</translation>
+ </message>
+</context>
+<context>
+ <name>AppFontWidget</name>
+ <message>
+ <location line="+26"/>
+ <source>Fonts</source>
+ <translation>PÃsma</translation>
+ </message>
+ <message>
+ <location line="+58"/>
+ <source>Add font files</source>
+ <translation>PÅ™idat soubory s pÃsmy</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Remove current font file</source>
+ <translation>Odstranit souÄasný soubor s pÃsmem</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Remove all font files</source>
+ <translation>Odstranit vÅ¡echny soubory s pÃsmy</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Add Font Files</source>
+ <translation>PÅ™idat soubory s pÃsmy</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Font files (*.ttf)</source>
+ <translation>Soubory s pÃsmy (*.ttf)</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Error Adding Fonts</source>
+ <translation>Chyba pÅ™i pÅ™idávánà pÃsem</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Error Removing Fonts</source>
+ <translation>Chyba pÅ™i odstraňovánà pÃsem</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Remove Fonts</source>
+ <translation>Odstranit pÃsma</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Would you like to remove all fonts?</source>
+ <translation>Chcete odstranit vÅ¡echna pÃsma?</translation>
+ </message>
+</context>
+<context>
+ <name>AppearanceOptionsWidget</name>
+ <message>
+ <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.ui"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location/>
+ <source>User Interface Mode</source>
+ <translation>Okennà režim</translation>
+ </message>
+</context>
+<context>
+ <name>AssistantClient</name>
+ <message>
+ <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+100"/>
+ <source>Unable to send request: Assistant is not responding.</source>
+ <translation>Chyba pÅ™i posÃlánà požadavku: Program Assistant neodpovÃdá.</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>The binary '%1' does not exist.</source>
+ <translation>Proveditelný soubor '%1' neexistuje.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Unable to launch assistant (%1).</source>
+ <translation>Program Assistant nelze spustit (%1).</translation>
+ </message>
+</context>
+<context>
+ <name>BrushPropertyManager</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+149"/>
+ <source>Style</source>
+ <translation>Styl</translation>
+ </message>
+ <message>
+ <location line="-97"/>
+ <source>No brush</source>
+ <translation>Žádný vzor</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Solid</source>
+ <translation>Plný</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Dense 1</source>
+ <translation>Hustota 1</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Dense 2</source>
+ <translation>Hustota 2</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Dense 3</source>
+ <translation>Hustota 3</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Dense 4</source>
+ <translation>Hustota 4</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Dense 5</source>
+ <translation>Hustota 5</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Dense 6</source>
+ <translation>Hustota 6</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Dense 7</source>
+ <translation>Hustota 7</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Horizontal</source>
+ <translation>Vodorovný</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Vertical</source>
+ <translation>Svislý</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Cross</source>
+ <translation>KřÞÃcà se Äáry</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Backward diagonal</source>
+ <translation>ZpÄ›tné úhlopÅ™ÃÄky</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Forward diagonal</source>
+ <translation>VpÅ™ed směřujÃcà úhlopÅ™ÃÄky</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Crossing diagonal</source>
+ <translation>KřÞÃcà se úhlopÅ™ÃÄky</translation>
+ </message>
+ <message>
+ <location line="+94"/>
+ <source>Color</source>
+ <translation>Barva</translation>
+ </message>
+ <message>
+ <location line="+105"/>
+ <source>[%1, %2]</source>
+ <translation>[%1, %2]</translation>
+ </message>
+</context>
+<context>
+ <name>Command</name>
+ <message>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+208"/>
+ <location line="+258"/>
+ <source>Change signal</source>
+ <translation>Změnit signál</translation>
+ </message>
+ <message>
+ <location line="-256"/>
+ <location line="+268"/>
+ <source>Change slot</source>
+ <translation>ZmÄ›nit zdÃÅ™ku</translation>
+ </message>
+ <message>
+ <location line="-220"/>
+ <source>Change signal-slot connection</source>
+ <translation>ZmÄ›nit spojenà signál-zdÃÅ™ka</translation>
+ </message>
+ <message>
+ <location line="+234"/>
+ <source>Change sender</source>
+ <translation>ZmÄ›nit vysÃlaÄ</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Change receiver</source>
+ <translation>ZmÄ›nit pÅ™ijÃmaÄ</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+143"/>
+ <source>Add connection</source>
+ <translation>PÅ™idat spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>Adjust connection</source>
+ <translation>Nastavit spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Delete connections</source>
+ <translation>Smazat spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+58"/>
+ <source>Change source</source>
+ <translation>Změnit zdroj</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Change target</source>
+ <translation>Změnit koncový bod</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+149"/>
+ <source>Insert '%1'</source>
+ <translation>Vložit '%1'</translation>
+ </message>
+ <message>
+ <location line="+167"/>
+ <source>Raise '%1'</source>
+ <translation>'%1' dopředu</translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>Lower '%1'</source>
+ <translation>'%1' dozadu</translation>
+ </message>
+ <message>
+ <location line="+113"/>
+ <source>Delete '%1'</source>
+ <translation>Smazat '%1'</translation>
+ </message>
+ <message>
+ <location line="+119"/>
+ <source>Reparent '%1'</source>
+ <translation>Přiřadit jiný prvek '%1'</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Promote to custom widget</source>
+ <translation>Vytvořit zástupný symbol pro uživatelsky stanovený prvek</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Demote from custom widget</source>
+ <translation>Odstranit zástupný symbol pro uživatelsky stanovenou tÅ™Ãdu</translation>
+ </message>
+ <message>
+ <location line="+79"/>
+ <source>Lay out using grid</source>
+ <translation>RozmÃstit pÅ™edmÄ›ty tabulkovÄ›</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Lay out vertically</source>
+ <translation>RozmÃstit pÅ™edmÄ›ty svisle</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Lay out horizontally</source>
+ <translation>RozmÃstit pÅ™edmÄ›ty vodorovnÄ›</translation>
+ </message>
+ <message>
+ <location line="+41"/>
+ <source>Break layout</source>
+ <translation>ZruÅ¡it rozvrženÃ</translation>
+ </message>
+ <message>
+ <location line="+240"/>
+ <location line="+235"/>
+ <location line="+78"/>
+ <source>Move Page</source>
+ <translation>Posunout stranu</translation>
+ </message>
+ <message>
+ <location line="-279"/>
+ <location line="+123"/>
+ <location line="+188"/>
+ <location line="+666"/>
+ <source>Delete Page</source>
+ <translation>Smazat stranu</translation>
+ </message>
+ <message>
+ <location line="-939"/>
+ <location line="+123"/>
+ <source>Page</source>
+ <translation>Strana</translation>
+ </message>
+ <message>
+ <location line="+860"/>
+ <source>page</source>
+ <translation>Strana</translation>
+ </message>
+ <message>
+ <location line="-978"/>
+ <location line="+123"/>
+ <location line="+186"/>
+ <location line="+667"/>
+ <source>Insert Page</source>
+ <translation>Vložit stranu</translation>
+ </message>
+ <message>
+ <location line="-647"/>
+ <source>Change Tab order</source>
+ <translation>Změnit pořadà karet</translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <source>Create Menu Bar</source>
+ <translation>VytvoÅ™it nabÃdkový pruh</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Delete Menu Bar</source>
+ <translation>Smazat nabÃdkový pruh</translation>
+ </message>
+ <message>
+ <location line="+47"/>
+ <source>Create Status Bar</source>
+ <translation>Vytvořit stavový pruh</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Delete Status Bar</source>
+ <translation>Smazat stavový pruh</translation>
+ </message>
+ <message>
+ <location line="+45"/>
+ <source>Add Tool Bar</source>
+ <translation>Přidat nástrojový pruh</translation>
+ </message>
+ <message>
+ <location line="+59"/>
+ <source>Add Dock Window</source>
+ <translation>Přidat ukotvené okno</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Adjust Size of '%1'</source>
+ <translation>Upravit velikost '%1'</translation>
+ </message>
+ <message>
+ <location line="+57"/>
+ <source>Change Form Layout Item Geometry</source>
+ <translation>Změnit uspořádánà prvku rozvrženà formuláře</translation>
+ </message>
+ <message>
+ <location line="+95"/>
+ <source>Change Layout Item Geometry</source>
+ <translation>ZmÄ›nit uspořádánà prvku rozvrženÃ</translation>
+ </message>
+ <message>
+ <location line="+576"/>
+ <source>Change Table Contents</source>
+ <translation>Změnit obsah tabulky</translation>
+ </message>
+ <message>
+ <location line="+107"/>
+ <source>Change Tree Contents</source>
+ <translation>Změnit obsah stromu</translation>
+ </message>
+ <message>
+ <location line="+74"/>
+ <location line="+146"/>
+ <source>Add action</source>
+ <translation>PÅ™idat Äinnost</translation>
+ </message>
+ <message>
+ <location line="-120"/>
+ <location line="+126"/>
+ <source>Remove action</source>
+ <translation>Odstranit Äinnost</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Add menu</source>
+ <translation>PÅ™idat nabÃdku</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Remove menu</source>
+ <translation>Odstranit nabÃdku</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Create submenu</source>
+ <translation>VytvoÅ™it vedlejšà nabÃdku</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>Delete Tool Bar</source>
+ <translation>Smazat nástrojový pruh</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1195"/>
+ <source>Set action text</source>
+ <translation>Nastavit text k Äinnosti</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert action</source>
+ <translation>Vložit Äinnost</translation>
+ </message>
+ <message>
+ <location line="+89"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+907"/>
+ <source>Move action</source>
+ <translation>Posunout Äinnost</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="-424"/>
+ <source>Change Title</source>
+ <translation>Změnit název</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Insert Menu</source>
+ <translation>Vložit nabÃdku</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+202"/>
+ <source>Change signals/slots</source>
+ <translation>ZmÄ›nit signály/zdÃÅ™ky</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="-867"/>
+ <source>Delete Subwindow</source>
+ <translation>Smazat podokno</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Insert Subwindow</source>
+ <translation>Vložit podokno</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>subwindow</source>
+ <translation>Podokno</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Subwindow</source>
+ <translation>Podokno</translation>
+ </message>
+ <message>
+ <location line="-1821"/>
+ <source>Change Z-order of '%1'</source>
+ <translation>Změnit Z-pořadà '%1'</translation>
+ </message>
+ <message>
+ <location line="+625"/>
+ <source>Simplify Grid Layout</source>
+ <translation>ZjednoduÅ¡it tabulkové rozvrženÃ</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+221"/>
+ <source>Create button group</source>
+ <translation>Seskupit tlaÄÃtka</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Break button group</source>
+ <translation>ZruÅ¡it seskupenà tlaÄÃtek</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Break button group '%1'</source>
+ <translation>Zrušit seskupenà '%1'</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Add buttons to group</source>
+ <translation>PÅ™idat tlaÄÃtka do seskupenÃ</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Remove buttons from group</source>
+ <translation>Odstranit tlaÄÃtka ze seskupenÃ</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+349"/>
+ <source>Morph %1/'%2' into %3</source>
+ <extracomment>MorphWidgetCommand description</extracomment>
+ <translation>Přeměnit %1/'%2' na %3</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_command2.cpp" line="+154"/>
+ <source>Change layout of '%1' from %2 to %3</source>
+ <translation>Změnit rozvrženà '%1' z %2 na %3</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="-14"/>
+ <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="+458"/>
+ <source>Add '%1' to '%2'</source>
+ <extracomment>Command description for adding buttons to a QButtonGroup</extracomment>
+ <translation>Přidat '%1' k '%2'</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Remove '%1' from '%2'</source>
+ <extracomment>Command description for removing buttons from a QButtonGroup</extracomment>
+ <translation>Odstranit '%1' z '%2'</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+55"/>
+ <source>Change script</source>
+ <translation>Změnit skript</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1213"/>
+ <source>Changed '%1' of '%2'</source>
+ <translation>Změněno '%1' z '%2'</translation>
+ </message>
+ <message numerus="yes">
+ <location line="+3"/>
+ <source>Changed '%1' of %n objects</source>
+ <translatorcomment>Singular will never be shown</translatorcomment>
+ <translation>
+ <numerusform>Změněna vlastnost '%1' jednoho předmětu</numerusform>
+ <numerusform>Změněna vlastnost '%1' %n předmětů</numerusform>
+ <numerusform>Změněna vlastnost '%1' %n předmětů</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location line="+76"/>
+ <source>Reset '%1' of '%2'</source>
+ <translation>Znovu nastavit '%1' '%2'</translation>
+ </message>
+ <message numerus="yes">
+ <location line="+3"/>
+ <source>Reset '%1' of %n objects</source>
+ <translatorcomment>Singular will never be shown</translatorcomment>
+ <translation>
+ <numerusform>Znovu nastavit '%1' jednoho předmětu</numerusform>
+ <numerusform>Znovu nastavit '%1' %n předmětů</numerusform>
+ <numerusform>Znovu nastavit '%1' %n předmětů</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location line="+89"/>
+ <source>Add dynamic property '%1' to '%2'</source>
+ <translation>Přidat dynamickou vlastnost '%1' do '%2'</translation>
+ </message>
+ <message numerus="yes">
+ <location line="+3"/>
+ <source>Add dynamic property '%1' to %n objects</source>
+ <translatorcomment>Singular will never be shown</translatorcomment>
+ <translation>
+ <numerusform>Přidat dynamickou vlastnost '%1' do jednoho předmětu</numerusform>
+ <numerusform>Přidat dynamickou vlastnost '%1' do %n předmětů</numerusform>
+ <numerusform>Přidat dynamickou vlastnost '%1' do %n předmětů</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location line="+86"/>
+ <source>Remove dynamic property '%1' from '%2'</source>
+ <translation>Odstranit dynamickou vlastnost '%1' z '%2'</translation>
+ </message>
+ <message numerus="yes">
+ <location line="+3"/>
+ <source>Remove dynamic property '%1' from %n objects</source>
+ <translation>
+ <numerusform>Odstranit dynamickou vlastnost '%1' z jednoho předmětu</numerusform>
+ <numerusform>Odstranit dynamickou vlastnost '%1' z %n předmětů</numerusform>
+ <numerusform>Odstranit dynamickou vlastnost '%1' z %n předmětů</numerusform>
+ </translation>
+ </message>
+</context>
+<context>
+ <name>ConnectDialog</name>
+ <message>
+ <location filename="../tools/designer/src/components/signalsloteditor/connectdialog.ui"/>
+ <source>Configure Connection</source>
+ <translation>Upravit spojenÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>GroupBox</source>
+ <translation>GroupBox</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Edit...</source>
+ <translation>Upravit...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Show signals and slots inherited from QWidget</source>
+ <translation>Ukázat signály a zdÃÅ™ky zdÄ›dÄ›né z QWidget</translation>
+ </message>
+</context>
+<context>
+ <name>ConnectionDelegate</name>
+ <message>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+643"/>
+ <source><object></source>
+ <translation><Předmět></translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source><signal></source>
+ <translation><Signál></translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source><slot></source>
+ <translation><ZdÃÅ™ka></translation>
+ </message>
+</context>
+<context>
+ <name>DPI_Chooser</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+69"/>
+ <source>Standard (96 x 96)</source>
+ <extracomment>Embedded device standard screen resolution</extracomment>
+ <translation>Obvyklé rozlišenà (96 x 96)</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Greenphone (179 x 185)</source>
+ <extracomment>Embedded device screen resolution</extracomment>
+ <translation>Greenphone (179 x 185)</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>High (192 x 192)</source>
+ <extracomment>Embedded device high definition screen resolution</extracomment>
+ <translation>Vysoké rozlišenà (192 x 192)</translation>
+ </message>
+</context>
+<context>
+ <name>Designer</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+449"/>
+ <source>Qt Designer</source>
+ <translation>Qt Designer</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+682"/>
+ <source>Unable to launch %1.</source>
+ <translation>%1 se nepodařilo spustit.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1 timed out.</source>
+ <translation>PÅ™ekroÄenà Äasu pÅ™i provedenà %1.</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+10"/>
+ <source>This file contains top level spacers.<br>They have <b>NOT</b> been saved into the form.</source>
+ <translation>Formulář obsahuje volnÄ› stojÃcà prvky rozloženÃ, které <b>NEBYLY</b> uloženy do formuláře.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Perhaps you forgot to create a layout?</source>
+ <translation>Přidal jste rozvržen�</translation>
+ </message>
+ <message>
+ <location line="+205"/>
+ <source>This file cannot be read because it was created using %1.</source>
+ <translation>Soubor nelze pÅ™eÄÃst, protože byl vytvoÅ™en %1.</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>This file was created using Designer from Qt-%1 and cannot be read.</source>
+ <translation>Soubor nelze pÅ™eÄÃst, protože byl vytvoÅ™en programem Designer ve verzi %1.</translation>
+ </message>
+ <message>
+ <location line="+82"/>
+ <source>This file cannot be read because the extra info extension failed to load.</source>
+ <translation>Soubor nelze pÅ™eÄÃst (Chyba pÅ™i nahrávánà dat ExtraInfoExtension).</translation>
+ </message>
+ <message>
+ <location line="-52"/>
+ <source>The converted file could not be read.</source>
+ <translation>PÅ™evedený soubor se nepodaÅ™ilo pÅ™eÄÃst.</translation>
+ </message>
+ <message>
+ <location line="-76"/>
+ <source>Invalid UI file: The root element <ui> is missing.</source>
+ <translation>Chyba pÅ™i Ätenà souboru s rozhranÃm: KoÅ™enový prvek <ui> chybÃ.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>An error has occurred while reading the UI file at line %1, column %2: %3</source>
+ <translation>Chyba pÅ™i Ätenà souboru s rozhranÃm, řádek %1, sloupec %2: %3</translation>
+ </message>
+ <message>
+ <location line="+74"/>
+ <source>This file was created using Designer from Qt-%1 and will be converted to a new form by Qt Designer.</source>
+ <translation>Soubor byl vytvořen programem Designer ve verzi %1 a bude převeden na nový formulář pomocà programu Qt Designer.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>The old form has not been touched, but you will have to save the form under a new name.</source>
+ <translation>Starý formulář zůstává nezměněn. Nový formulář musà být uložen pod novým názvem.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>This file was created using Designer from Qt-%1 and could not be read:
+%2</source>
+ <translation>Čtenà Designerem %1 vytvořeného souboru se nezdařilo:
+%2</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Please run it through <b>uic3&nbsp;-convert</b> to convert it to Qt-4's ui format.</source>
+ <translation>PÅ™eměňte to, prosÃm, pÅ™Ãkazem <b>uic3&nbsp;-convert</b> na formát rozhranà Qt 4.</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qsimpleresource.cpp" line="+339"/>
+ <source>Custom Widgets</source>
+ <translation>Uživatelsky stanovené prvky</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Promoted Widgets</source>
+ <translation>Zástupný symbol pro uživatelsky stanovené prvky</translation>
+ </message>
+</context>
+<context>
+ <name>DesignerMetaEnum</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="-513"/>
+ <source>%1 is not a valid enumeration value of '%2'.</source>
+ <translation>%1 nenà platnou výÄtovou hodnotou '%2'.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>'%1' could not be converted to an enumeration value of type '%2'.</source>
+ <translation>'%1' se nepodaÅ™ilo pÅ™evést na výÄtovou hodnotu typu '%2'.</translation>
+ </message>
+</context>
+<context>
+ <name>DesignerMetaFlags</name>
+ <message>
+ <location line="+78"/>
+ <source>'%1' could not be converted to a flag value of type '%2'.</source>
+ <translation>'%1' se nepodaÅ™ilo pÅ™evést na pÅ™Ãznakovou hodnotu typu '%2'.</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceProfile</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/deviceprofile.cpp" line="+397"/>
+ <source>'%1' is not a number.</source>
+ <extracomment>Reading a number for an embedded device profile</extracomment>
+ <translation>'%1' nenà platným ÄÃslem.</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>An invalid tag <%1> was encountered.</source>
+ <translation> Byl zjištěn neplatný prvek'%1'.</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceProfileDialog</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.ui"/>
+ <source>&Family</source>
+ <translation>&PÃsmová rodina</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Point Size</source>
+ <translation>&Bodová velikost</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Style</source>
+ <translation>Styl</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Device DPI</source>
+ <translation>Rozlišenà obrazovky</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Name</source>
+ <translation>Název</translation>
+ </message>
+</context>
+<context>
+ <name>DeviceSkin</name>
+ <message>
+ <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
+ <source>The image file '%1' could not be loaded.</source>
+ <translation>Soubor s obrázkem '%1' se nepodařilo nahrát.</translation>
+ </message>
+ <message>
+ <location line="+64"/>
+ <source>The skin directory '%1' does not contain a configuration file.</source>
+ <translation>Adresář se vzhledem '%1' neobsahuje žádný soubor s nastavenÃm.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>The skin configuration file '%1' could not be opened.</source>
+ <translation>Soubor s nastavenÃm vzhledu '%1' se nepodaÅ™ilo otevÅ™Ãt.</translation>
+ </message>
+ <message>
+ <location line="+76"/>
+ <source>Syntax error: %1</source>
+ <translation>Chyba ve skladbÄ›: %1</translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>The skin cursor image file '%1' does not exist.</source>
+ <translation>Soubor s obrázkem pro vzhled ukazovátka '%1' neexistuje.</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Syntax error in area definition: %1</source>
+ <translation>Vymezenà oblasti obsahuje chybu ve skladbě: %1</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Mismatch in number of areas, expected %1, got %2.</source>
+ <translation>Zadaný poÄet oblastà (%1) neodpovÃdá; byly nalezeny %2 oblasti.</translation>
+ </message>
+ <message>
+ <location line="-187"/>
+ <source>The skin configuration file '%1' could not be read: %2</source>
+ <translation>Soubor s nastavenÃm vzhledu '%1' se nepodaÅ™ilo pÅ™eÄÃst: %2</translation>
+ </message>
+ <message>
+ <location line="+91"/>
+ <source>The skin "up" image file '%1' does not exist.</source>
+ <translation>Soubor s nastavenÃm vzhledu '%1' (nahoru) neexistuje.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>The skin "down" image file '%1' does not exist.</source>
+ <translation>Soubor s nastavenÃm vzhledu '%1' (dolů) neexistuje.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>The skin "closed" image file '%1' does not exist.</source>
+ <translation>Soubor s nastavenÃm vzhledu '%1' (zavÅ™eno) neexistuje.</translation>
+ </message>
+</context>
+<context>
+ <name>EmbeddedOptionsControl</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+307"/>
+ <source><html><table><tr><td><b>Font</b></td><td>%1, %2</td></tr><tr><td><b>Style</b></td><td>%3</td></tr><tr><td><b>Resolution</b></td><td>%4 x %5</td></tr></table></html></source>
+ <extracomment>Format embedded device profile description</extracomment>
+ <translation><html><table><tr><td><b>Font</b></td><td>%1, %2</td></tr><tr><td><b>Stil</b></td><td>%3</td></tr><tr><td><b>RozliÅ¡enÃ</b></td><td>%4 x %5</td></tr></table></html></translation>
+ </message>
+</context>
+<context>
+ <name>EmbeddedOptionsPage</name>
+ <message>
+ <location line="+103"/>
+ <source>Embedded Design</source>
+ <extracomment>Tab in preferences dialog</extracomment>
+ <translation>Vložený návrh</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Device Profiles</source>
+ <extracomment>EmbeddedOptionsControl group box"</extracomment>
+ <translation>Profily zaÅ™ÃzenÃ</translation>
+ </message>
+</context>
+<context>
+ <name>FontPanel</name>
+ <message>
+ <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
+ <source>Font</source>
+ <translation>PÃsmo</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>&Writing system</source>
+ <translation>Způsob &psanÃ</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&Family</source>
+ <translation>&PÃsmová rodina</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&Style</source>
+ <translation>&Styl</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&Point size</source>
+ <translation>&Bodová velikost</translation>
+ </message>
+</context>
+<context>
+ <name>FontPropertyManager</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+62"/>
+ <source>PreferDefault</source>
+ <translation>UpÅ™ednostňovat výchozÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>NoAntialias</source>
+ <translation>Žádné vyhlazovánÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>PreferAntialias</source>
+ <translation>UpÅ™ednostňovat vyhlazovánÃ</translation>
+ </message>
+ <message>
+ <location line="+61"/>
+ <source>Antialiasing</source>
+ <translation>VyhlazovánÃ</translation>
+ </message>
+</context>
+<context>
+ <name>FormBuilder</name>
+ <message>
+ <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+359"/>
+ <source>Invalid stretch value for '%1': '%2'</source>
+ <extracomment>Parsing layout stretch values</extracomment>
+ <translation>Neplatná hodnota roztaženà pro '%1': '%2'</translation>
+ </message>
+ <message>
+ <location line="+62"/>
+ <source>Invalid minimum size for '%1': '%2'</source>
+ <extracomment>Parsing grid layout minimum size values</extracomment>
+ <translation>Neplatná nejmenšà velikost pro '%1': '%2'</translation>
+ </message>
+</context>
+<context>
+ <name>FormEditorOptionsPage</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+91"/>
+ <source>%1 %</source>
+ <translation>%1 %</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Preview Zoom</source>
+ <translation>Velikost zvětšenà pro náhled</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Default Zoom</source>
+ <translation>Výchozà zvÄ›tÅ¡enÃ</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Forms</source>
+ <extracomment>Tab in preferences dialog</extracomment>
+ <translation>Formuláře</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Default Grid</source>
+ <translation>Výchozà mřÞka pro nové formuláře</translation>
+ </message>
+</context>
+<context>
+ <name>FormLayoutRowDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui"/>
+ <source>Add Form Layout Row</source>
+ <translation>PÅ™idat řádek s rozvrženÃm formuláře</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Label text:</source>
+ <translation>&Text popisku:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Field &type:</source>
+ <translation>&Typ datového pole:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Field name:</source>
+ <translation>&Název pole:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Buddy:</source>
+ <translation>&Kamarád:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Row:</source>
+ <translation>&Řádek:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Label &name:</source>
+ <translation>&Název popisku:</translation>
+ </message>
+</context>
+<context>
+ <name>FormWindow</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1701"/>
+ <source>Unexpected element <%1></source>
+ <translation>Neplatný prvek <%1></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Error while pasting clipboard contents at line %1, column %2: %3</source>
+ <translation>Chyba při vloženà obsahu schránky, řádek %1, sloupec %2: %3</translation>
+ </message>
+</context>
+<context>
+ <name>FormWindowSettings</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui"/>
+ <source>Form Settings</source>
+ <translation>Nastavenà formuláře</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Layout &Default</source>
+ <translation>&Výchozà rozvrženÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Spacing:</source>
+ <translation>&Odstup:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Margin:</source>
+ <translation>&Okraj:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Layout Function</source>
+ <translation>&Funkce rozvrženÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ma&rgin:</source>
+ <translation>Ok&raj:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Spa&cing:</source>
+ <translation>Odstu&p:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Embedded Design</source>
+ <translation>Vložený návrh</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Author</source>
+ <translation>&Autor</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Include Hints</source>
+ <translation>&Zahrnout rady</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Pixmap Function</source>
+ <translation>&Funkce pixmapy</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Grid</source>
+ <translation>MřÞka</translation>
+ </message>
+</context>
+<context>
+ <name>IconSelector</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+352"/>
+ <source>All Pixmaps (</source>
+ <translation>Všechny soubory s pixmapami (</translation>
+ </message>
+</context>
+<context>
+ <name>ItemPropertyBrowser</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+66"/>
+ <source>XX Icon Selected off</source>
+ <extracomment>Sample string to determinate the width for the first column of the list item property browser</extracomment>
+ <translation>Vybraná ikona, z</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindowBase</name>
+ <message>
+ <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+119"/>
+ <source>Main</source>
+ <extracomment>Not currently used (main tool bar)</extracomment>
+ <translation>Hlavnà pruh s nástroji</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>File</source>
+ <translation>Soubor</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Edit</source>
+ <translation>Úpravy</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Tools</source>
+ <translation>Nástroje</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Qt Designer</source>
+ <translation>Qt Designer</translation>
+ </message>
+</context>
+<context>
+ <name>NewForm</name>
+ <message>
+ <location filename="../tools/designer/src/designer/newform.cpp" line="+79"/>
+ <source>C&reate</source>
+ <translation>&Vytvořit nový z předlohy</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Recent</source>
+ <translation>Naposledy otevřený</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>&Close</source>
+ <translation>&ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&Open...</source>
+ <translation>&OtevÅ™Ãt...</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>&Recent Forms</source>
+ <translation>&Naposledy otevřené formuláře</translation>
+ </message>
+ <message>
+ <location line="+64"/>
+ <source>Read error</source>
+ <translation>Chyba pÅ™i ÄtenÃ</translation>
+ </message>
+ <message>
+ <location line="-100"/>
+ <source>New Form</source>
+ <translation>Nový formulář</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>Show this Dialog on Startup</source>
+ <translation>Ukázat tento dialog pÅ™i spuÅ¡tÄ›nÃ</translation>
+ </message>
+ <message>
+ <location line="+128"/>
+ <source>A temporary form file could not be created in %1.</source>
+ <translation>V adresáři %1 se nepodaÅ™ilo vytvoÅ™it doÄasný soubor s formulářem.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>The temporary form file %1 could not be written.</source>
+ <translation>DoÄasný soubor s formulářem %1 se nepodaÅ™ilo zapsat.</translation>
+ </message>
+</context>
+<context>
+ <name>ObjectInspectorModel</name>
+ <message>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+360"/>
+ <source>Object</source>
+ <translation>Předmět</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Class</source>
+ <translation>TÅ™Ãda</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>separator</source>
+ <translation>OddÄ›lovaÄ</translation>
+ </message>
+ <message>
+ <location line="+98"/>
+ <source><noname></source>
+ <translation><nepojmenovaný></translation>
+ </message>
+</context>
+<context>
+ <name>ObjectNameDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+158"/>
+ <source>Change Object Name</source>
+ <translation>Změnit název předmětu</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Object Name</source>
+ <translation>Název předmětu</translation>
+ </message>
+</context>
+<context>
+ <name>PluginDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/plugindialog.ui"/>
+ <source>Plugin Information</source>
+ <translation>PÅ™Ãdavné moduly</translation>
+ </message>
+ <message>
+ <location/>
+ <source>1</source>
+ <translation>1</translation>
+ </message>
+</context>
+<context>
+ <name>PreferencesDialog</name>
+ <message>
+ <location filename="../tools/designer/src/designer/preferencesdialog.ui"/>
+ <source>Preferences</source>
+ <translation>NastavenÃ</translation>
+ </message>
+</context>
+<context>
+ <name>PreviewConfigurationWidget</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Print/Preview Configuration</source>
+ <translation>Nastavenà tisku/náhledu</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Style</source>
+ <translation>Styl</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Style sheet</source>
+ <translation>Předlohový list</translation>
+ </message>
+ <message>
+ <location/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Device skin</source>
+ <translation>Vzhled pro zaÅ™ÃzenÃ</translation>
+ </message>
+</context>
+<context>
+ <name>PromotionModel</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+112"/>
+ <source>Not used</source>
+ <extracomment>Usage of promoted widgets</extracomment>
+ <translation>NepoužÃvaný</translation>
+ </message>
+</context>
+<context>
+ <name>Q3WizardContainer</name>
+ <message>
+ <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+172"/>
+ <location line="+5"/>
+ <source>Page</source>
+ <translation>Strana</translation>
+ </message>
+</context>
+<context>
+ <name>QAbstractFormBuilder</name>
+ <message>
+ <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+206"/>
+ <source>Unexpected element <%1></source>
+ <translation>Neplatný prvek <%1></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>An error has occurred while reading the UI file at line %1, column %2: %3</source>
+ <translation>Chyba pÅ™i Ätenà souboru s rozhranÃm, řádek %1, sloupec %2: %3</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Invalid UI file: The root element <ui> is missing.</source>
+ <translation>Chyba pÅ™i Ätenà souboru s rozhranÃm: KoÅ™enový prvek <ui> chybÃ.</translation>
+ </message>
+ <message>
+ <location line="+119"/>
+ <source>The creation of a widget of the class '%1' failed.</source>
+ <translation>NepodaÅ™ilo se vytvoÅ™it žádný prvek tÅ™Ãdy '%1'.</translation>
+ </message>
+ <message>
+ <location line="+296"/>
+ <source>Attempt to add child that is not of class QWizardPage to QWizard.</source>
+ <translation>Pokus o pÅ™idánà strany pÅ™edmÄ›tu tÅ™Ãdy QWizard, která nenà typu QWizardPage.</translation>
+ </message>
+ <message>
+ <location line="+86"/>
+ <source>Attempt to add a layout to a widget '%1' (%2) which already has a layout of non-box type %3.
+This indicates an inconsistency in the ui-file.</source>
+ <translation>Pokus o pÅ™idánà rozvrženà na prvek '%1' (%2), který již má rozvrženà typu %3 hat. Ukazuje to na nesrovnalost v souboru s rozhranÃm.</translation>
+ </message>
+ <message>
+ <location line="+144"/>
+ <source>Empty widget item in %1 '%2'.</source>
+ <translation>Prázdná položka prvku v %1 '%2'.</translation>
+ </message>
+ <message>
+ <location line="+680"/>
+ <source>Flags property are not supported yet.</source>
+ <translation>Vlastnosti typu "pÅ™Ãznak" nejsou podporovány.</translation>
+ </message>
+ <message>
+ <location line="+81"/>
+ <source>While applying tab stops: The widget '%1' could not be found.</source>
+ <translation>Chyba při stanovenà pořadà tabulátorů: Nepodařilo se nalézt žádný prvek s názvem '%1'.</translation>
+ </message>
+ <message>
+ <location line="+908"/>
+ <source>Invalid QButtonGroup reference '%1' referenced by '%2'.</source>
+ <translation>Neplatný odkaz na skupinu tlaÄÃtek '%1', odkazováno '%2'.</translation>
+ </message>
+ <message>
+ <location line="+511"/>
+ <source>This version of the uitools library is linked without script support.</source>
+ <translation>Tato verze knihovny uitools nepodporuje skripty.</translation>
+ </message>
+</context>
+<context>
+ <name>QAxWidgetPlugin</name>
+ <message>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+75"/>
+ <source>ActiveX control</source>
+ <translation>Ovládacà prvek ActiveX</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>ActiveX control widget</source>
+ <translation>Ovládacà prvek ActiveX</translation>
+ </message>
+</context>
+<context>
+ <name>QAxWidgetTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+119"/>
+ <source>Set Control</source>
+ <translation>Nastavit ovládacà prvek</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Reset Control</source>
+ <translation>Nastavit znovu ovládacà prvek</translation>
+ </message>
+ <message>
+ <location line="+41"/>
+ <source>Licensed Control</source>
+ <translation>Licencovaný ovládacà prvek</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>The control requires a design-time license</source>
+ <translation>Ovládacà prvek vyžaduje licenci k Äasu návrhu</translation>
+ </message>
+</context>
+<context>
+ <name>QCoreApplication</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+83"/>
+ <source>%1 is not a promoted class.</source>
+ <translation>%1 nenà zástupným symbolem pro uživatelsky stanovenou tÅ™Ãdu.</translation>
+ </message>
+ <message>
+ <location line="+65"/>
+ <source>The base class %1 is invalid.</source>
+ <translation>%1 nenà platnou základnà tÅ™Ãdou.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>The class %1 already exists.</source>
+ <translation>Již existuje tÅ™Ãda s názvem %1.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Promoted Widgets</source>
+ <translation>Zástupný symbol pro uživatelsky stanovené prvky</translation>
+ </message>
+ <message>
+ <location line="+126"/>
+ <source>The class %1 cannot be removed</source>
+ <translation>TÅ™Ãda %1 nemůže být odstranÄ›na</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>The class %1 cannot be removed because it is still referenced.</source>
+ <translation>TÅ™Ãda %1 nemůže být odstranÄ›na, protože se stále použÃvá.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>The class %1 cannot be renamed</source>
+ <translation>TÅ™Ãda %1 nemůže být pÅ™ejmenována</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>The class %1 cannot be renamed to an empty name.</source>
+ <translation>Název pro tÅ™Ãdu nemůže zůstat prázdný (%1).</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>There is already a class named %1.</source>
+ <translation>Již existuje tÅ™Ãda s názvem %1.</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Cannot set an empty include file.</source>
+ <translation>Název pro hlaviÄkový soubor nemůže zůstat prázdný.</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+88"/>
+ <source>Exception at line %1: %2</source>
+ <translation>Chyba výjimky na řádku %1: %2</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Unknown error</source>
+ <translation>Neznámá chyba</translation>
+ </message>
+ <message>
+ <location line="+50"/>
+ <source>An error occurred while running the script for %1: %2
+Script: %3</source>
+ <translation>Při prováděnà skriptu pro %1 se vyskytla chyba: %2Skript: %3</translation>
+ </message>
+</context>
+<context>
+ <name>QDesigner</name>
+ <message>
+ <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+141"/>
+ <source>%1 - warning</source>
+ <translation>%1 - UpozornÄ›nÃ</translation>
+ </message>
+ <message>
+ <location line="+96"/>
+ <source>Qt Designer</source>
+ <translation>Qt Designer</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>This application cannot be used for the Console edition of Qt</source>
+ <translation>Tato aplikace se nedá použÃvat pro konzolové vydánà Qt</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerActions</name>
+ <message>
+ <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+178"/>
+ <source>Edit Widgets</source>
+ <translation>Upravit prvky</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>&Quit</source>
+ <translation>&UkonÄit</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&Minimize</source>
+ <translation>&Zmenšit</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Bring All to Front</source>
+ <translation>Ukázat všechny formuláře</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Preferences...</source>
+ <translation>NastavenÃ...</translation>
+ </message>
+ <message>
+ <location line="+298"/>
+ <source>Clear &Menu</source>
+ <translation>Smazat &nabÃdku</translation>
+ </message>
+ <message>
+ <location line="-233"/>
+ <source>CTRL+SHIFT+S</source>
+ <translation>CTRL+SHIFT+S</translation>
+ </message>
+ <message>
+ <location line="+113"/>
+ <source>CTRL+R</source>
+ <translation>CTRL+R</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>CTRL+M</source>
+ <translation>CTRL+M</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>Qt Designer &Help</source>
+ <translation>&Nápověda k programu Qt Designer</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Current Widget Help</source>
+ <translation>Nápověda k vybranému prvku</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>What's New in Qt Designer?</source>
+ <translation>Co je nového v programu Qt Designer?</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>About Plugins</source>
+ <translation>PÅ™Ãdavné moduly</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+601"/>
+ <source>About Qt Designer</source>
+ <translation>O programu Qt Designer</translation>
+ </message>
+ <message>
+ <location line="-595"/>
+ <source>About Qt</source>
+ <translation>O Qt</translation>
+ </message>
+ <message>
+ <location line="+121"/>
+ <location line="+197"/>
+ <source>Open Form</source>
+ <translation>OtevÅ™Ãt formulář</translation>
+ </message>
+ <message>
+ <location line="-196"/>
+ <location line="+37"/>
+ <location line="+160"/>
+ <source>Designer UI files (*.%1);;All Files (*)</source>
+ <translation>Soubory rozhranà programu Designer (*.%1);;Všechny soubory (*)</translation>
+ </message>
+ <message>
+ <location line="-620"/>
+ <source>%1 already exists.
+Do you want to replace it?</source>
+ <translation>Soubor %1 již existuje.
+Chcete jej nahradit?</translation>
+ </message>
+ <message>
+ <location line="-26"/>
+ <source>Saved %1.</source>
+ <translation>Formulář %1 byl uložen.</translation>
+ </message>
+ <message>
+ <location line="+371"/>
+ <source>&Recent Forms</source>
+ <translation>&Naposledy otevřené formuláře</translation>
+ </message>
+ <message>
+ <location line="+202"/>
+ <source>Designer</source>
+ <translation>Designer</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Feature not implemented yet!</source>
+ <translation>Tato funkce ještě nenà provedena!</translation>
+ </message>
+ <message>
+ <location line="+59"/>
+ <source>Read error</source>
+ <translation>Chyba pÅ™i ÄtenÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>%1
+Do you want to update the file location or generate a new form?</source>
+ <translation>%1
+Chcete zadat jiný název pro soubor, nebo vytvořit nový formulář?</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&Update</source>
+ <translation>&Jiný název</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&New Form</source>
+ <translation>&Nový formulář</translation>
+ </message>
+ <message>
+ <location line="+77"/>
+ <location line="+40"/>
+ <source>Save Form?</source>
+ <translation>Uložit formulář?</translation>
+ </message>
+ <message>
+ <location line="-39"/>
+ <source>Could not open file</source>
+ <translation>Soubor se nepodaÅ™ilo otevÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="+282"/>
+ <location line="+23"/>
+ <source>The backup file %1 could not be written.</source>
+ <translation>Ukládánà na pozadÃ: Soubor se zálohou %1 se nepodaÅ™ilo zapsat.</translation>
+ </message>
+ <message>
+ <location line="+107"/>
+ <source>The backup directory %1 could not be created.</source>
+ <translation>Ukládánà na pozadÃ: Adresář se zálohou %1 se nepodaÅ™ilo.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>The temporary backup directory %1 could not be created.</source>
+ <translation>Ukládánà na pozadÃ: DoÄasný adresář se zálohou %1 se nepodaÅ™ilo.</translation>
+ </message>
+ <message>
+ <location line="+94"/>
+ <source>Please close all forms to enable the loading of additional fonts.</source>
+ <translation>ZavÅ™ete, prosÃm, vÅ¡echny formuláře kvůli umožnÄ›nà nahránà dodateÄných pÃsem.</translation>
+ </message>
+ <message>
+ <location line="-502"/>
+ <source>Select New File</source>
+ <translation>Vybrat nový soubor</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Could not write file</source>
+ <translation>Soubor se nepodařilo zapsat</translation>
+ </message>
+ <message>
+ <location line="+201"/>
+ <source>&Close Preview</source>
+ <translation>&ZavÅ™Ãt náhled</translation>
+ </message>
+ <message>
+ <location line="-898"/>
+ <source>Save &Image...</source>
+ <translation>&Uložit obraz...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&Print...</source>
+ <translation>&Tisk...</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Additional Fonts...</source>
+ <translation>DodateÄná pÃsma...</translation>
+ </message>
+ <message>
+ <location line="+651"/>
+ <source>The file %1 could not be opened.
+Reason: %2
+Would you like to retry or select a different file?</source>
+ <translation>Soubor %1 se nepodaÅ™ilo otevÅ™Ãt:
+%2
+Chcete to zkusit ještě jednou, nebo vybrat jiný soubor?</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>It was not possible to write the entire file %1 to disk.
+Reason:%2
+Would you like to retry?</source>
+ <translation>Soubor %1 se nepodařilo úplně zapsat na disk:
+Důvod: %2
+Chcete to zkusit ještě jednou?</translation>
+ </message>
+ <message>
+ <location line="+429"/>
+ <source>Image files (*.%1)</source>
+ <translation>Soubory s obrazem (*.%1)</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <location line="+17"/>
+ <source>Save Image</source>
+ <translation>Uložit obraz</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>The file %1 could not be written.</source>
+ <translation>Soubor %1 se nepodařilo zapsat.</translation>
+ </message>
+ <message>
+ <location line="-1163"/>
+ <source>&New...</source>
+ <translation>&Nový...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&Open...</source>
+ <translation>&OtevÅ™Ãt...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&Save</source>
+ <translation>&Uložit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Save &As...</source>
+ <translation>Uložit &jako...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Save A&ll</source>
+ <translation>&Uložit vše</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Save As &Template...</source>
+ <translation>Uložit jako &předlohu...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <location line="+901"/>
+ <source>&Close</source>
+ <translation>&ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-896"/>
+ <source>View &Code...</source>
+ <translation>Ukázat &kód...</translation>
+ </message>
+ <message>
+ <location line="+424"/>
+ <location line="+248"/>
+ <source>Save Form As</source>
+ <translation>Uložit formulář jako</translation>
+ </message>
+ <message>
+ <location line="+429"/>
+ <source>Preview failed</source>
+ <translation>Nepodařilo se vytvořit žádný náhled</translation>
+ </message>
+ <message>
+ <location line="-575"/>
+ <source>Code generation failed</source>
+ <translation>Nepodařilo se vytvořit žádný kód</translation>
+ </message>
+ <message>
+ <location line="+328"/>
+ <location line="+34"/>
+ <source>Assistant</source>
+ <translation>Assistant</translation>
+ </message>
+ <message>
+ <location line="+259"/>
+ <source>Saved image %1.</source>
+ <translation>Obraz byl uložen pod %1.</translation>
+ </message>
+ <message>
+ <location line="+70"/>
+ <source>Printed %1.</source>
+ <translation>%1 byl vytištěn.</translation>
+ </message>
+ <message>
+ <location line="-1149"/>
+ <source>ALT+CTRL+S</source>
+ <translation>ALT+CTRL+S</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerAppearanceOptionsPage</name>
+ <message>
+ <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+138"/>
+ <source>Appearance</source>
+ <extracomment>Tab in preferences dialog</extracomment>
+ <translation>Vzhled</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerAppearanceOptionsWidget</name>
+ <message>
+ <location line="-53"/>
+ <source>Docked Window</source>
+ <translation>Režim ukotveného okna</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Multiple Top-Level Windows</source>
+ <translation>Režim vÃce oken</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Toolwindow Font</source>
+ <translation>PÃsmo pro okno s nástroji</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerAxWidget</name>
+ <message>
+ <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="-71"/>
+ <source>Reset control</source>
+ <translation>Nastavit znovu ovládacà prvek</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Set control</source>
+ <translation>Nastavit ovládacà prvek</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+179"/>
+ <source>Control loaded</source>
+ <translation>Ovládacà prvek nahrán</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>A COM exception occurred when executing a meta call of type %1, index %2 of "%3".</source>
+ <translation>PÅ™i vyvolánà postupu typu %1 se vyskytla výjimka COM, rejstÅ™Ãk %2 "%3".</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerFormBuilder</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+89"/>
+ <source>Script errors occurred:</source>
+ <translation>Vyskytly se chyby ve skriptech:</translation>
+ </message>
+ <message>
+ <location line="+307"/>
+ <source>The preview failed to build.</source>
+ <translation>Nepodařilo se vytvořit žádný náhled.</translation>
+ </message>
+ <message>
+ <location line="+65"/>
+ <source>Designer</source>
+ <translation>Designer</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerFormWindow</name>
+ <message>
+ <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+217"/>
+ <source>%1 - %2[*]</source>
+ <translation>%1 - %2[*]</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Save Form?</source>
+ <translation>Uložit formulář?</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Do you want to save the changes to this document before closing?</source>
+ <translation>Chcete v tomto formuláři uložit pÅ™ed zavÅ™enÃm zmÄ›ny?</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>If you don't save, your changes will be lost.</source>
+ <translation>Pokud neprovedete uloženÃ, budou vaÅ¡e zmÄ›ny ztraceny. </translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerMenu</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1181"/>
+ <source>Type Here</source>
+ <translation>Zadejte text</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Add Separator</source>
+ <translation>PÅ™idat oddÄ›lovaÄ</translation>
+ </message>
+ <message>
+ <location line="+371"/>
+ <source>Insert separator</source>
+ <translation>Vložit oddÄ›lovaÄ</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Remove action '%1'</source>
+ <translation>Odstranit Äinnost '%1'</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Remove separator</source>
+ <translation>Odstranit oddÄ›lovaÄ</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <location line="+650"/>
+ <source>Add separator</source>
+ <translation>PÅ™idat oddÄ›lovaÄ</translation>
+ </message>
+ <message>
+ <location line="-348"/>
+ <source>Insert action</source>
+ <translation>Vložit Äinnost</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerMenuBar</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="-375"/>
+ <source>Type Here</source>
+ <translation>Zadejte text</translation>
+ </message>
+ <message>
+ <location line="+298"/>
+ <source>Remove Menu '%1'</source>
+ <translation>Odstranit nabÃdku '%1'</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Remove Menu Bar</source>
+ <translation>Odstranit pruh s nabÃdkou</translation>
+ </message>
+ <message>
+ <location line="+70"/>
+ <source>Menu</source>
+ <translation>NabÃdka</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerPluginManager</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+271"/>
+ <source>An XML error was encountered when parsing the XML of the custom widget %1: %2</source>
+ <translation>Chyba při vyhodnocovánà XML uživatelsky stanoveného prvku %1: %2</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>A required attribute ('%1') is missing.</source>
+ <translation>U prvku chybà vyžadovaná vlastnost ('%1').</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>An invalid property specification ('%1') was encountered. Supported types: %2</source>
+ <translation>'%1' nenà platným vymezenÃm vlastnosti. Jsou podporovány následujÃcà typy: %2</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>'%1' is not a valid string property specification.</source>
+ <translation>'%1' nenà platným vymezenÃm vlastnosti Å™etÄ›zce znaků.</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>The XML of the custom widget %1 does not contain any of the elements <widget> or <ui>.</source>
+ <translation>Kód XML pro prvek %1 neobsahuje platný kořenový prvek (<widget>, nebo <ui>).</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>The class attribute for the class %1 is missing.</source>
+ <translation>Chybà vlastnost tÅ™Ãdy pro tÅ™Ãdu %1.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>The class attribute for the class %1 does not match the class name %2.</source>
+ <translation>Vlastnost tÅ™Ãdy pro tÅ™Ãdu %1 neodpovÃdá názvu tÅ™Ãdy (%2).</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerPropertySheet</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+754"/>
+ <source>Dynamic Properties</source>
+ <translation>Dynamické vlastnosti</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerResource</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+492"/>
+ <source>The layout type '%1' is not supported, defaulting to grid.</source>
+ <translation>Typ rozvrženà '%1' nenà podporován; bylo vytvoÅ™eno mřÞkové rozvrženÃ.</translation>
+ </message>
+ <message>
+ <location line="+243"/>
+ <source>The container extension of the widget '%1' (%2) returned a widget not managed by Designer '%3' (%4) when queried for page #%5.
+Container pages should only be added by specifying them in XML returned by the domXml() method of the custom widget.</source>
+ <translation>Kontejnerové rozÅ¡ÃÅ™enà prvku '%1' (%2) vrátilo pro stranu %5 prvek '%3' (%4), který nenà spravován programem Designer.
+Kontejnerové stránky by měly být zadány výhradně v XML vráceném postupu domXML() uživatelsky stanoveného prvku.</translation>
+ </message>
+ <message>
+ <location line="+599"/>
+ <source>Unexpected element <%1></source>
+ <extracomment>Parsing clipboard contents</extracomment>
+ <translation>Neplatný prvek <%1></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Error while pasting clipboard contents at line %1, column %2: %3</source>
+ <extracomment>Parsing clipboard contents</extracomment>
+ <translation>Chyba při vloženà obsahu schránky, řádek %1, sloupec %2: %3</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Error while pasting clipboard contents: The root element <ui> is missing.</source>
+ <extracomment>Parsing clipboard contents</extracomment>
+ <translation>Chyba pÅ™i vloženà obsahu schránky: KoÅ™enový prvek <ui> chybÃ.</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerSharedSettings</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+83"/>
+ <source>The template path %1 could not be created.</source>
+ <translation>Adresář s pÅ™edlohami %1 se nepodaÅ™ilo zÅ™Ãdit.</translation>
+ </message>
+ <message>
+ <location line="+184"/>
+ <source>An error has been encountered while parsing device profile XML: %1</source>
+ <translation>PÅ™i Ätenà XML profilu zaÅ™Ãzenà se vyskytla chyba: %1</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerToolWindow</name>
+ <message>
+ <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+190"/>
+ <source>Property Editor</source>
+ <translation>Editor vlastnostÃ</translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>Action Editor</source>
+ <translation>Editor ÄinnostÃ</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Object Inspector</source>
+ <translation>Ukazatel předmětů</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>Resource Browser</source>
+ <translation>ProhlÞeÄ zdrojů</translation>
+ </message>
+ <message>
+ <location line="+34"/>
+ <source>Signal/Slot Editor</source>
+ <translation>Editor signálů a zdÃÅ™ek</translation>
+ </message>
+ <message>
+ <location line="+41"/>
+ <source>Widget Box</source>
+ <translation>Krabice s prvky</translation>
+ </message>
+</context>
+<context>
+ <name>QDesignerWorkbench</name>
+ <message>
+ <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+199"/>
+ <source>&File</source>
+ <translation>&Soubor</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>F&orm</source>
+ <translation>F&ormulář</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Preview in</source>
+ <translation>Náhled v</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>&Window</source>
+ <translation>&Okno</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&Help</source>
+ <translation>&Nápověda</translation>
+ </message>
+ <message>
+ <location line="-15"/>
+ <source>Edit</source>
+ <translation>Úpravy</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Toolbars</source>
+ <translation>Nástrojové pruhy</translation>
+ </message>
+ <message>
+ <location line="+465"/>
+ <source>Save Forms?</source>
+ <translation>Uložit formuláře?</translation>
+ </message>
+ <message>
+ <location line="-494"/>
+ <source>&View</source>
+ <translation>&Pohled</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&Settings</source>
+ <translation>&NastavenÃ</translation>
+ </message>
+ <message>
+ <location line="+204"/>
+ <source>Widget Box</source>
+ <translation>Krabice s prvky</translation>
+ </message>
+ <message>
+ <location line="+292"/>
+ <source>If you do not review your documents, all your changes will be lost.</source>
+ <translation>ZmÄ›ny budou ztraceny, pokud se na formuláře jeÅ¡tÄ› jednou nepodÃváte.</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Discard Changes</source>
+ <translation>Zahodit změny</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Review Changes</source>
+ <translation>PodÃvat se na zmÄ›ny</translation>
+ </message>
+ <message>
+ <location line="+95"/>
+ <source>Backup Information</source>
+ <translation>Informace o ukládánà na pozadÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>The last session of Designer was not terminated correctly. Backup files were left behind. Do you want to load them?</source>
+ <translation>Designer zÅ™ejmÄ› nebyl řádnÄ› ukonÄen; existujà soubory z ukládánà na pozadÃ. Chcete je nahrát?</translation>
+ </message>
+ <message>
+ <location line="+111"/>
+ <source>The file <b>%1</b> could not be opened.</source>
+ <translation>Soubor <b>%1</b> se nepodaÅ™ilo otevÅ™Ãt.</translation>
+ </message>
+ <message>
+ <location line="+46"/>
+ <source>The file <b>%1</b> is not a valid Designer UI file.</source>
+ <translation>Soubor <b>%1</b> nenà platným souborem rozhranà programu Designer.</translation>
+ </message>
+ <message numerus="yes">
+ <location line="-259"/>
+ <source>There are %n forms with unsaved changes. Do you want to review these changes before quitting?</source>
+ <translation>
+ <numerusform>Formulář byl zmÄ›nÄ›n, ale zmÄ›ny nebyl uloženy. Chcete se na tyto zmÄ›ny podÃvat pÅ™edtÃm, než program ukonÄÃte?</numerusform>
+ <numerusform>%n formuláře byly zmÄ›nÄ›ny, ale zmÄ›ny nebyl uloženy. Chcete se na tyto zmÄ›ny podÃvat pÅ™edtÃm, než program ukonÄÃte?</numerusform>
+ <numerusform>%n formuláře byly zmÄ›nÄ›ny, ale zmÄ›ny nebyl uloženy. Chcete se na tyto zmÄ›ny podÃvat pÅ™edtÃm, než program ukonÄÃte?</numerusform>
+ </translation>
+ </message>
+</context>
+<context>
+ <name>QFormBuilder</name>
+ <message>
+ <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+163"/>
+ <source>An empty class name was passed on to %1 (object name: '%2').</source>
+ <extracomment>Empty class name passed to widget factory method</extracomment>
+ <translation>Postupu %1 byl pÅ™edán prázdný název tÅ™Ãdy (název pÅ™edmÄ›tu '%2').</translation>
+ </message>
+ <message>
+ <location line="+56"/>
+ <source>QFormBuilder was unable to create a custom widget of the class '%1'; defaulting to base class '%2'.</source>
+ <translation>QFormBuilderu se nepodaÅ™ilo vytvoÅ™it uživatelsky stanovený prvek tÅ™Ãdy '%1'; byl vytvoÅ™en prvek základnà tÅ™Ãdy '%2'.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>QFormBuilder was unable to create a widget of the class '%1'.</source>
+ <translation>QFormBuilderu se nepodaÅ™ilo vytvoÅ™it pÅ™edmÄ›t tÅ™Ãdy '%1'.</translation>
+ </message>
+ <message>
+ <location line="+61"/>
+ <source>The layout type `%1' is not supported.</source>
+ <translation>Rozvrženà typu `%1' nejsou podporována.</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+106"/>
+ <source>The set-type property %1 could not be read.</source>
+ <translation>Vlastnost %1 se nepodaÅ™ilo pÅ™eÄÃst (typ: množstvÃ).</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>The enumeration-type property %1 could not be read.</source>
+ <translation>Vlastnost %1 se nepodaÅ™ilo pÅ™eÄÃst (typ: výÄet).</translation>
+ </message>
+ <message>
+ <location line="+190"/>
+ <source>Reading properties of the type %1 is not supported yet.</source>
+ <translation>Čtenà vlastnostà typu %1 nenà podporováno.</translation>
+ </message>
+ <message>
+ <location line="+266"/>
+ <source>The property %1 could not be written. The type %2 is not supported yet.</source>
+ <translation>Vlastnost %1 se nepodařilo zapsat, protože typ %2 nenà podporován.</translation>
+ </message>
+</context>
+<context>
+ <name>QStackedWidgetEventFilter</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+194"/>
+ <source>Previous Page</source>
+ <translation>Předchozà strana</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Next Page</source>
+ <translation>Dalšà strana</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Delete</source>
+ <translation>Smazat</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Before Current Page</source>
+ <translation>Před nynějšà stranu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>After Current Page</source>
+ <translation>Po nynějšà straně</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change Page Order...</source>
+ <translation>Změnit pořadà stran...</translation>
+ </message>
+ <message>
+ <location line="+72"/>
+ <source>Change Page Order</source>
+ <translation>Změnit pořadà stran</translation>
+ </message>
+ <message>
+ <location line="+49"/>
+ <source>Page %1 of %2</source>
+ <translation>Strana %1 z %2</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+4"/>
+ <source>Insert Page</source>
+ <translation>Vložit stranu</translation>
+ </message>
+</context>
+<context>
+ <name>QStackedWidgetPreviewEventFilter</name>
+ <message>
+ <location line="-153"/>
+ <source>Go to previous page of %1 '%2' (%3/%4).</source>
+ <translation>JÃt na pÅ™edchozà stranu %1 '%2' (%3/%4).</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Go to next page of %1 '%2' (%3/%4).</source>
+ <translation>JÃt na dalšà stranu %1 '%2' (%3/%4).</translation>
+ </message>
+</context>
+<context>
+ <name>QTabWidgetEventFilter</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+89"/>
+ <source>Delete</source>
+ <translation>Smazat</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Before Current Page</source>
+ <translation>Před nynějšà stranu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>After Current Page</source>
+ <translation>Po nynějšà straně</translation>
+ </message>
+ <message>
+ <location line="+283"/>
+ <source>Page %1 of %2</source>
+ <translation>Strana %1 z %2</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+4"/>
+ <source>Insert Page</source>
+ <translation>Vložit stranu</translation>
+ </message>
+</context>
+<context>
+ <name>QToolBoxHelper</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+64"/>
+ <source>Delete Page</source>
+ <translation>Smazat stranu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Before Current Page</source>
+ <translation>Před nynějšà stranu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>After Current Page</source>
+ <translation>Po nynějšà straně</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change Page Order...</source>
+ <translation>Změnit pořadà stran...</translation>
+ </message>
+ <message>
+ <location line="+116"/>
+ <source>Change Page Order</source>
+ <translation>Změnit pořadà stran</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Page %1 of %2</source>
+ <translation>Strana %1 z %2</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Insert Page</source>
+ <translation>Vložit stranu</translation>
+ </message>
+</context>
+<context>
+ <name>QtBoolEdit</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+226"/>
+ <location line="+10"/>
+ <location line="+25"/>
+ <source>True</source>
+ <translation>Pravdivý</translation>
+ </message>
+ <message>
+ <location line="-25"/>
+ <location line="+25"/>
+ <source>False</source>
+ <translation>Nepravdivý</translation>
+ </message>
+</context>
+<context>
+ <name>QtBoolPropertyManager</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1469"/>
+ <source>True</source>
+ <translation>Pravdivý</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>False</source>
+ <translation>Nepravdivý</translation>
+ </message>
+</context>
+<context>
+ <name>QtCharEdit</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1581"/>
+ <source>Clear Char</source>
+ <translation>Smazat znak</translation>
+ </message>
+</context>
+<context>
+ <name>QtColorEditWidget</name>
+ <message>
+ <location line="+605"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+</context>
+<context>
+ <name>QtColorPropertyManager</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4743"/>
+ <source>Red</source>
+ <translation>Červená</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Green</source>
+ <translation>Zelená</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Blue</source>
+ <translation>Modrá</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Alpha</source>
+ <translation>Alfa</translation>
+ </message>
+</context>
+<context>
+ <name>QtCursorDatabase</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-206"/>
+ <source>Arrow</source>
+ <translation>Å ipka</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Up Arrow</source>
+ <translation>Å ipka nahoru</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Cross</source>
+ <translation>KřÞÃcà se Äáry</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Wait</source>
+ <translation>Přesýpacà hodiny</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>IBeam</source>
+ <translation>I trámec</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Size Vertical</source>
+ <translation>Zvětšit svisle</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Size Horizontal</source>
+ <translation>Zvětšit vodorovně</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Size Backslash</source>
+ <translation>ZvÄ›tÅ¡it zpÄ›tné/obrácené lomÃtko</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Size Slash</source>
+ <translation>ZvÄ›tÅ¡it lomÃtko</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Size All</source>
+ <translation>Zvětšit vše</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Blank</source>
+ <translation>Prázdný</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Split Vertical</source>
+ <translation>Rozdělit svisle</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Split Horizontal</source>
+ <translation>Rozdělit vodorovně</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Pointing Hand</source>
+ <translation>UkazujÃcà ruka</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Forbidden</source>
+ <translation>Zakázáno</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Open Hand</source>
+ <translation>Otevřená ruka</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Closed Hand</source>
+ <translation>Zavřená ruka</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>What's This</source>
+ <translation>A co je toto</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Busy</source>
+ <translation>Zaneprázdněn</translation>
+ </message>
+</context>
+<context>
+ <name>QtFontEditWidget</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+198"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Select Font</source>
+ <translation>Vybrat pÃsmo</translation>
+ </message>
+</context>
+<context>
+ <name>QtFontPropertyManager</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-351"/>
+ <source>Family</source>
+ <translation>PÃsmová rodina</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Point Size</source>
+ <translation>Bodová velikost</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Bold</source>
+ <translation>TuÄné</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Italic</source>
+ <translation>KurzÃva</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Underline</source>
+ <translation>PodtrženÃ</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Strikeout</source>
+ <translation>Přeškrtnuté</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Kerning</source>
+ <translation>PodÅ™ezávánÃ</translation>
+ </message>
+</context>
+<context>
+ <name>QtGradientDialog</name>
+ <message>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientdialog.ui"/>
+ <source>Edit Gradient</source>
+ <translation>Upravit přechod</translation>
+ </message>
+</context>
+<context>
+ <name>QtGradientEditor</name>
+ <message>
+ <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+431"/>
+ <source>Start X</source>
+ <translation>ZaÄáteÄnà hodnota x</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Start Y</source>
+ <translation>ZaÄáteÄnà hodnota y</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Final X</source>
+ <translation>Koncová hodnota x</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Final Y</source>
+ <translation>Koncová hodnota y</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <location line="+24"/>
+ <source>Central X</source>
+ <translation>Střed x</translation>
+ </message>
+ <message>
+ <location line="-20"/>
+ <location line="+24"/>
+ <source>Central Y</source>
+ <translation>Střed y</translation>
+ </message>
+ <message>
+ <location line="-20"/>
+ <source>Focal X</source>
+ <translation>Ohnisko x</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Focal Y</source>
+ <translation>Ohnisko y</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Radius</source>
+ <translation>Poloměr</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Angle</source>
+ <translation>Úhel</translation>
+ </message>
+ <message>
+ <location line="+288"/>
+ <source>Linear</source>
+ <translation>PÅ™ÃmoÄarý</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Radial</source>
+ <translation>Paprskovitý</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Conical</source>
+ <translation>Kuželovitý</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Pad</source>
+ <translation>Doplnit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Repeat</source>
+ <translation>Opakovat</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Reflect</source>
+ <translation>Zrcadlit</translation>
+ </message>
+ <message>
+ <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Gradient Editor</source>
+ <translation>Úpravy přechodů</translation>
+ </message>
+ <message>
+ <location/>
+ <source>1</source>
+ <translation>1</translation>
+ </message>
+ <message>
+ <location/>
+ <source>2</source>
+ <translation>2</translation>
+ </message>
+ <message>
+ <location/>
+ <source>3</source>
+ <translation>3</translation>
+ </message>
+ <message>
+ <location/>
+ <source>4</source>
+ <translation>4</translation>
+ </message>
+ <message>
+ <location/>
+ <source>5</source>
+ <translation>5</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Gradient Stops Editor</source>
+ <translation>Editor bodů zastavenà přechodu</translation>
+ </message>
+ <message>
+ <location/>
+ <source>This area allows you to edit gradient stops. Double click on the existing stop handle to duplicate it. Double click outside of the existing stop handles to create a new stop. Drag & drop the handle to reposition it. Use right mouse button to popup context menu with extra actions.</source>
+ <translation>Tato oblast sloužà pro úpravy bodů zastavenà pÅ™echodu. Dvakrát klepnÄ›te na orientaÄnà bod kvůli jeho zdvojenÃ. Dvakrát klepnÄ›te na plochu kvůli vytvoÅ™enà nového orientaÄnÃho bodu. Použijte taženà & upuÅ¡tÄ›nà pro posunutà bodu. Pravým tlaÄÃtkem myÅ¡i se vyvolává nabÃdka s dalÅ¡Ãmi souvisejÃcÃmi volbami.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Zoom</source>
+ <translation>ZvÄ›tÅ¡enÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Position</source>
+ <translation>Poloha</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Hue</source>
+ <translation>Barevný odstÃn</translation>
+ </message>
+ <message>
+ <location/>
+ <source>H</source>
+ <translation>H</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Saturation</source>
+ <translation>Sytost</translation>
+ </message>
+ <message>
+ <location/>
+ <source>S</source>
+ <translation>S</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Sat</source>
+ <translation>Sytost</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Value</source>
+ <translation>Hodnota</translation>
+ </message>
+ <message>
+ <location/>
+ <source>V</source>
+ <translation>V</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Val</source>
+ <translation>Hodnota</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Alpha</source>
+ <translation>Alfa</translation>
+ </message>
+ <message>
+ <location/>
+ <source>A</source>
+ <translation>A</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Type</source>
+ <translation>Typ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Spread</source>
+ <translation>RozÅ¡iÅ™ovánÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Color</source>
+ <translation>Barva</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Current stop's color</source>
+ <translation>Barva nynÄ›jÅ¡Ãho zastavenÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>HSV</source>
+ <translation>HSV</translation>
+ </message>
+ <message>
+ <location/>
+ <source>RGB</source>
+ <translation>RGB</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Current stop's position</source>
+ <translation>Poloha nynÄ›jÅ¡Ãho zastavenÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>%</source>
+ <translation>%</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Zoom In</source>
+ <translation>PřiblÞit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Zoom Out</source>
+ <translation>Oddálit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Toggle details extension</source>
+ <translation>Zařadit dalšà volby</translation>
+ </message>
+ <message>
+ <location/>
+ <source>></source>
+ <translation>></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Linear Type</source>
+ <translation>PÅ™ÃmoÄarý typ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Radial Type</source>
+ <translation>Paprskovitý typ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Conical Type</source>
+ <translation>Kuželovitý typ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Pad Spread</source>
+ <translation>Doplnit rozÅ¡iÅ™ovánÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Repeat Spread</source>
+ <translation>Opakovat rozÅ¡iÅ™ovánÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Reflect Spread</source>
+ <translation>Zrcadlit rozÅ¡iÅ™ovánÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>This area shows a preview of the gradient being edited. It also allows you to edit parameters specific to the gradient's type such as start and final point, radius, etc. by drag & drop.</source>
+ <translation>tato oblast ukazuje náhled právÄ› upravovaného pÅ™echodu. Zde můžete upravovat promÄ›nné pÅ™ÃznaÄné pro pÅ™echod, jako zaÄáteÄnà a koncový bod, polomÄ›r etd. pomocà taženà a pouÅ¡tÄ›nÃ.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Show HSV specification</source>
+ <translation>Ukázat přesné vymezenà HSV</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Show RGB specification</source>
+ <translation>Ukázat přesné vymezenà RGB</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Reset Zoom</source>
+ <translation>Nastavit znovu zvÄ›tÅ¡enÃ</translation>
+ </message>
+</context>
+<context>
+ <name>QtGradientStopsWidget</name>
+ <message>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+947"/>
+ <source>New Stop</source>
+ <translation>Nové zastavenÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Delete</source>
+ <translation>Smazat</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Flip All</source>
+ <translation>Obrátit vše</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Select All</source>
+ <translation>Vybrat vše</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Zoom In</source>
+ <translation>Zvětšit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Zoom Out</source>
+ <translation>Zmenšit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Reset Zoom</source>
+ <translation>Nastavit znovu zvÄ›tÅ¡enÃ</translation>
+ </message>
+</context>
+<context>
+ <name>QtGradientView</name>
+ <message>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+107"/>
+ <source>Grad</source>
+ <translation>Přechod</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Remove Gradient</source>
+ <translation>Odstranit přechod</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Are you sure you want to remove the selected gradient?</source>
+ <translation>Opravdu chcete odstranit vybraný přechod?</translation>
+ </message>
+ <message>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+74"/>
+ <source>New...</source>
+ <translation>Nový...</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+1"/>
+ <source>Edit...</source>
+ <translation>Upravit...</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+1"/>
+ <source>Rename</source>
+ <translation>Přejmenovat</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+1"/>
+ <source>Remove</source>
+ <translation>Odstranit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Gradient View</source>
+ <translation>Pohled na přechod</translation>
+ </message>
+</context>
+<context>
+ <name>QtGradientViewDialog</name>
+ <message>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.ui"/>
+ <source>Select Gradient</source>
+ <translation>Vybrat přechod</translation>
+ </message>
+</context>
+<context>
+ <name>QtKeySequenceEdit</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+221"/>
+ <source>Clear Shortcut</source>
+ <translation>Smazat klávesové zkratky</translation>
+ </message>
+</context>
+<context>
+ <name>QtLocalePropertyManager</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3541"/>
+ <source>%1, %2</source>
+ <translation>%1, %2</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Language</source>
+ <translation>Jazyk</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Country</source>
+ <translation>ZemÄ›</translation>
+ </message>
+</context>
+<context>
+ <name>QtPointFPropertyManager</name>
+ <message>
+ <location line="+411"/>
+ <source>(%1, %2)</source>
+ <translation>(%1, %2)</translation>
+ </message>
+ <message>
+ <location line="+71"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Y</source>
+ <translation>Y</translation>
+ </message>
+</context>
+<context>
+ <name>QtPointPropertyManager</name>
+ <message>
+ <location line="-320"/>
+ <source>(%1, %2)</source>
+ <translation>(%1, %2)</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Y</source>
+ <translation>Y</translation>
+ </message>
+</context>
+<context>
+ <name>QtPropertyBrowserUtils</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-136"/>
+ <source>[%1, %2, %3] (%4)</source>
+ <translation>[%1, %2, %3] (%4)</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>[%1, %2]</source>
+ <translation>[%1, %2]</translation>
+ </message>
+</context>
+<context>
+ <name>QtRectFPropertyManager</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1706"/>
+ <source>[(%1, %2), %3 x %4]</source>
+ <translation>[(%1, %2), %3 x %4]</translation>
+ </message>
+ <message>
+ <location line="+156"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Y</source>
+ <translation>Y</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Width</source>
+ <translation>Å ÃÅ™ka</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Height</source>
+ <translation>Výška</translation>
+ </message>
+</context>
+<context>
+ <name>QtRectPropertyManager</name>
+ <message>
+ <location line="-612"/>
+ <source>[(%1, %2), %3 x %4]</source>
+ <translation>[(%1, %2), %3 x %4]</translation>
+ </message>
+ <message>
+ <location line="+120"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Y</source>
+ <translation>Y</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Width</source>
+ <translation>Å ÃÅ™ka</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Height</source>
+ <translation>Výška</translation>
+ </message>
+</context>
+<context>
+ <name>QtResourceEditorDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+1961"/>
+ <source>Edit Resources</source>
+ <translation>Upravit zdroje</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>New...</source>
+ <translation>Nový...</translation>
+ </message>
+ <message>
+ <location line="-565"/>
+ <location line="+566"/>
+ <source>New Resource File</source>
+ <translation>Nový zdrojový soubor</translation>
+ </message>
+ <message>
+ <location line="-413"/>
+ <source><p><b>Warning:</b> The file</p><p>%1</p><p>is outside of the current resource file's parent directory.</p></source>
+ <translation><p><b>UpozornÄ›nÃ:</b><p>Zvolený soubor: </p><p>%1</p><p>se nacházà mimo adresář se nynÄ›jÅ¡Ãm zdrojovým souborem:</p></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source><p>To resolve the issue, press:</p><table><tr><th align="left">Copy</th><td>to copy the file to the resource file's parent directory.</td></tr><tr><th align="left">Copy As...</th><td>to copy the file into a subdirectory of the resource file's parent directory.</td></tr><tr><th align="left">Keep</th><td>to use its current location.</td></tr></table></source>
+ <translation><p>Zvolte, prosÃm:</p><table><tr><th align="left">KopÃrovat</th><td>pro zkopÃrovánà souboru do adresáře se zdrojovým souborem.</td></tr><tr><th align="left">KopÃrovat jako...</th><td>pro zkopÃrovánà souboru do podadresáře se zdrojovým souborem.</td></tr><tr><th align="left">Zachovat</th><td>, aby se soubor použÃval ve svém nynÄ›jÅ¡Ãm adresáři.</td></tr></table></translation>
+ </message>
+ <message>
+ <location line="+288"/>
+ <source>Could not copy
+%1
+to
+%2</source>
+ <translation>KopÃrovánà se nezdaÅ™ilo:
+%1
+zu:
+%2</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>A parse error occurred at line %1, column %2 of %3:
+%4</source>
+ <translation>V souboru %3 se na řádku %1, v sloupci %2 vyskytla chyba:
+ %4</translation>
+ </message>
+ <message>
+ <location line="+83"/>
+ <source>Open...</source>
+ <translation>OtevÅ™Ãt...</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location line="+11"/>
+ <source>Remove</source>
+ <translation>Odstranit</translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <location line="+11"/>
+ <source>Move Up</source>
+ <translation>Posunout nahoru</translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <location line="+11"/>
+ <source>Move Down</source>
+ <translation>Posunout dolů</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <location line="+1"/>
+ <source>Add Prefix</source>
+ <translation>Přidat předponu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Add Files...</source>
+ <translation>Přidat soubory...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change Prefix</source>
+ <translation>Změnit předponu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change Language</source>
+ <translation>Změnit jazyk</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change Alias</source>
+ <translation>ZmÄ›nit pÅ™ezdÃvku</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Clone Prefix...</source>
+ <translation>Zdvojit předponu...</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>Prefix / Path</source>
+ <translation>Předpona/Cesta</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Language / Alias</source>
+ <translation>Jazyk/PÅ™ezdÃvka</translation>
+ </message>
+ <message>
+ <location line="+117"/>
+ <source><html><p><b>Warning:</b> There have been problems while reloading the resources:</p><pre>%1</pre></html></source>
+ <translation><html><p><b>VarovánÃ:</b> PÅ™i opÄ›tovném nahránà souboru se vyskytly chyby:</p><pre>%1</pre></html></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Resource Warning</source>
+ <translation>Zdroje - VarovánÃ</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui"/>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <location/>
+ <source>New File</source>
+ <translation>Nový soubor</translation>
+ </message>
+ <message>
+ <location/>
+ <source>N</source>
+ <translation>N</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Remove File</source>
+ <translation>Odstranit soubor</translation>
+ </message>
+ <message>
+ <location/>
+ <source>R</source>
+ <translation>L</translation>
+ </message>
+ <message>
+ <location/>
+ <source>I</source>
+ <translation>I</translation>
+ </message>
+ <message>
+ <location/>
+ <source>New Resource</source>
+ <translation>Nový zdroj</translation>
+ </message>
+ <message>
+ <location/>
+ <source>A</source>
+ <translation>A</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Remove Resource or File</source>
+ <translation>Odstranit zdroj nebo soubor</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="-2091"/>
+ <source>%1 already exists.
+Do you want to replace it?</source>
+ <translation>Soubor %1 již existuje.
+Chcete jej nahradit?</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>The file does not appear to be a resource file; element '%1' was found where '%2' was expected.</source>
+ <translation>Soubor zÅ™ejmÄ› nenà zdrojovým souborem; Na mÃstÄ›, kde byl oÄekáván prvek '%2' byl nalezen prvek '%1'.</translation>
+ </message>
+ <message>
+ <location line="+902"/>
+ <source>%1 [read-only]</source>
+ <translation>%1 [pouze pro ÄtenÃ]</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location line="+198"/>
+ <source>%1 [missing]</source>
+ <translation>%1 [chybÃ]</translation>
+ </message>
+ <message>
+ <location line="-72"/>
+ <source><no prefix></source>
+ <translation><žádná předpona></translation>
+ </message>
+ <message>
+ <location line="+322"/>
+ <location line="+25"/>
+ <source>Resource files (*.qrc)</source>
+ <translation>Zdrojové soubory (*.qrc)</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Import Resource File</source>
+ <translation>Zavést zdrojový soubor</translation>
+ </message>
+ <message>
+ <location line="+112"/>
+ <source>newPrefix</source>
+ <translation>nováPředpona</translation>
+ </message>
+ <message>
+ <location line="+49"/>
+ <source>Add Files</source>
+ <translation>Přidat soubory</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>Incorrect Path</source>
+ <translation>Nesprávný údaj o cestě</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location line="+19"/>
+ <location line="+212"/>
+ <location line="+7"/>
+ <source>Copy</source>
+ <translation>KopÃrovat</translation>
+ </message>
+ <message>
+ <location line="-236"/>
+ <source>Copy As...</source>
+ <translation>KopÃrovat jako...</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Keep</source>
+ <translation>Zachovat</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Skip</source>
+ <translation>PÅ™eskoÄit</translation>
+ </message>
+ <message>
+ <location line="+87"/>
+ <source>Clone Prefix</source>
+ <translation>Zdvojit předponu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Enter the suffix which you want to add to the names of the cloned files.
+This could for example be a language extension like "_de".</source>
+ <translation>Zadejte, prosÃm, pÅ™Ãponu, kterou chcete pÅ™idat k názvům zdvojených souborů.
+Může to být napÅ™Ãklad jazykové rozÅ¡ÃÅ™enà "_cs".</translation>
+ </message>
+ <message>
+ <location line="+113"/>
+ <location line="+4"/>
+ <source>Copy As</source>
+ <translation>KopÃrovat jako</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source><p>The selected file:</p><p>%1</p><p>is outside of the current resource file's directory:</p><p>%2</p><p>Please select another path within this directory.<p></source>
+ <translation><p>Vybraný soubor: </p><p>%1</p><p>se nacházà mimo adresář se zdrojovým souborem:</p><p>%2</p><p>Zvolte, prosÃm, jinou cestu, která je obsažena v tomto adresáři.</p></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Could not overwrite %1.</source>
+ <translation>%1 se nepodařilo přepsat.</translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>Save Resource File</source>
+ <translation>Uložit zdrojový soubor</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Could not write %1: %2</source>
+ <translation>Soubor %1 se nepodařilo zapsat: %2</translation>
+ </message>
+ <message>
+ <location line="+71"/>
+ <source>Open Resource File</source>
+ <translation>OtevÅ™Ãt zdrojový soubor</translation>
+ </message>
+</context>
+<context>
+ <name>QtResourceView</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+566"/>
+ <source>Size: %1 x %2
+%3</source>
+ <translation>Velikost: %1 x %2
+%3</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Edit Resources...</source>
+ <translation>Upravit zdroje...</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Reload</source>
+ <translation>Nahrát znovu</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Copy Path</source>
+ <translation>KopÃrovat cestu</translation>
+ </message>
+</context>
+<context>
+ <name>QtResourceViewDialog</name>
+ <message>
+ <location line="+250"/>
+ <source>Select Resource</source>
+ <translation>Vybrat zdroj</translation>
+ </message>
+</context>
+<context>
+ <name>QtSizeFPropertyManager</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-535"/>
+ <source>%1 x %2</source>
+ <translation>%1 x %2</translation>
+ </message>
+ <message>
+ <location line="+130"/>
+ <source>Width</source>
+ <translation>Å ÃÅ™ka</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Height</source>
+ <translation>Výška</translation>
+ </message>
+</context>
+<context>
+ <name>QtSizePolicyPropertyManager</name>
+ <message>
+ <location line="+1709"/>
+ <location line="+1"/>
+ <source><Invalid></source>
+ <translation><Neplatný></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>[%1, %2, %3, %4]</source>
+ <translation>[%1, %2, %3, %4]</translation>
+ </message>
+ <message>
+ <location line="+45"/>
+ <source>Horizontal Policy</source>
+ <translation>Vodorovné nastavenÃ</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Vertical Policy</source>
+ <translation>Svislé nastavenÃ</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Horizontal Stretch</source>
+ <translation>Vodorovné protaženÃ</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Vertical Stretch</source>
+ <translation>Svislé protaženÃ</translation>
+ </message>
+</context>
+<context>
+ <name>QtSizePropertyManager</name>
+ <message>
+ <location line="-2286"/>
+ <source>%1 x %2</source>
+ <translation>%1 x %2</translation>
+ </message>
+ <message>
+ <location line="+96"/>
+ <source>Width</source>
+ <translation>Å ÃÅ™ka</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Height</source>
+ <translation>Výška</translation>
+ </message>
+</context>
+<context>
+ <name>QtToolBarDialog</name>
+ <message>
+ <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1784"/>
+ <source>< S E P A R A T O R ></source>
+ <translation>< O D D Ě L O V A Č ></translation>
+ </message>
+ <message>
+ <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui"/>
+ <source>Customize Toolbars</source>
+ <translation>Přizpůsobit nástrojové pruhy</translation>
+ </message>
+ <message>
+ <location/>
+ <source>1</source>
+ <translation>1</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Actions</source>
+ <translation>ÄŒinnosti</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Toolbars</source>
+ <translation>Nástrojové pruhy</translation>
+ </message>
+ <message>
+ <location/>
+ <source>New</source>
+ <translation>Nový</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Remove</source>
+ <translation>Odstranit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Rename</source>
+ <translation>Přejmenovat</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Up</source>
+ <translation>Nahoru</translation>
+ </message>
+ <message>
+ <location/>
+ <source><-</source>
+ <translation><-</translation>
+ </message>
+ <message>
+ <location/>
+ <source>-></source>
+ <translation>-></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Down</source>
+ <translation>Dolů</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Current Toolbar Actions</source>
+ <translation>ÄŒinnosti souÄasného nástrojového pruhu</translation>
+ </message>
+ <message>
+ <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="-544"/>
+ <source>Custom Toolbar</source>
+ <translation>Uživatelsky stanovené nástrojové pruhy</translation>
+ </message>
+ <message>
+ <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui"/>
+ <source>Add new toolbar</source>
+ <translation>Přidat nový nástrojový pruh</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Remove selected toolbar</source>
+ <translation>Odstranit vybraný nástrojový pruh</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Rename toolbar</source>
+ <translation>Přejmenovat nástrojový pruh</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move action up</source>
+ <translation>Posunout Äinnost nahoru</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Remove action from toolbar</source>
+ <translation>Odstranit Äinnost z nástrojového pruhu</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Add action to toolbar</source>
+ <translation>PÅ™idat Äinnost do nástrojového pruhu</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move action down</source>
+ <translation>Posunout Äinnost dolů</translation>
+ </message>
+</context>
+<context>
+ <name>QtTreePropertyBrowser</name>
+ <message>
+ <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+442"/>
+ <source>Property</source>
+ <translation>Vlastnost</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Value</source>
+ <translation>Hodnota</translation>
+ </message>
+</context>
+<context>
+ <name>SaveFormAsTemplate</name>
+ <message>
+ <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+72"/>
+ <source>Add path...</source>
+ <translation>Přidat cestu...</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Template Exists</source>
+ <translation>Předloha již existuje</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A template with the name %1 already exists.
+Do you want overwrite the template?</source>
+ <translation>Již existuje předloha s názvem %1.
+Chcete tuto předlohu přepsat?</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Overwrite Template</source>
+ <translation>Přepsat předlohu</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Open Error</source>
+ <translation>Chyba pÅ™i otevÃránÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>There was an error opening template %1 for writing. Reason: %2</source>
+ <translation>PÅ™edlohu %1 se nepodaÅ™ilo otevÅ™Ãt pro zápis. Důvod: %2</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Write Error</source>
+ <translation>Chyba při zápisu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>There was an error writing the template %1 to disk. Reason: %2</source>
+ <translation>Předlohu %1 se nepodařilo zapsat do souboru na disku. Důvod: %2</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Pick a directory to save templates in</source>
+ <translation>Vyberte adresář pro ukládánà předloh</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/designer/saveformastemplate.ui"/>
+ <source>Save Form As Template</source>
+ <translation>Uložit formulář jako předlohu</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Category:</source>
+ <translation>&Skupina:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Name:</source>
+ <translation>&Název:</translation>
+ </message>
+</context>
+<context>
+ <name>ScriptErrorDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+59"/>
+ <source>An error occurred while running the scripts for "%1":
+</source>
+ <translation>Při prováděnà skriptu "%1" se vyskytly chyby:
+</translation>
+ </message>
+</context>
+<context>
+ <name>SelectSignalDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/selectsignaldialog.ui"/>
+ <source>Go to slot</source>
+ <translation>JÃt na zdÃÅ™ku</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Select signal</source>
+ <translation>Vybrat signál</translation>
+ </message>
+ <message>
+ <location/>
+ <source>signal</source>
+ <translation>Signál</translation>
+ </message>
+ <message>
+ <location/>
+ <source>class</source>
+ <translation>TÅ™Ãda</translation>
+ </message>
+</context>
+<context>
+ <name>SignalSlotConnection</name>
+ <message>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-358"/>
+ <source>SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4)</source>
+ <translation>VYSÃLAÄŒ(%1), SIGNÃL(%2), PŘIJÃMAÄŒ(%3), ZDÃŘKA(%4)</translation>
+ </message>
+</context>
+<context>
+ <name>SignalSlotDialogClass</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui"/>
+ <source>Signals and slots</source>
+ <translation>Signály a zdÃÅ™ky</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Slots</source>
+ <translation>ZdÃÅ™ky</translation>
+ </message>
+ <message>
+ <location/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Signals</source>
+ <translation>Signály</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Add</source>
+ <translation>Přidat</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Delete</source>
+ <translation>Smazat</translation>
+ </message>
+</context>
+<context>
+ <name>Spacer</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+275"/>
+ <source>Horizontal Spacer '%1', %2 x %3</source>
+ <translation>Vodorovný vymezovaÄ '%1', %2 x %3</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Vertical Spacer '%1', %2 x %3</source>
+ <translation>Svislý vymezovaÄ '%1', %2 x %3</translation>
+ </message>
+</context>
+<context>
+ <name>TemplateOptionsPage</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+156"/>
+ <source>Template Paths</source>
+ <extracomment>Tab in preferences dialog</extracomment>
+ <translation>Adresáře pro předlohy</translation>
+ </message>
+</context>
+<context>
+ <name>ToolBarManager</name>
+ <message>
+ <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+89"/>
+ <source>Configure Toolbars...</source>
+ <translation>Nastavit nástrojové pruhy...</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Window</source>
+ <translation>Okno</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Help</source>
+ <translation>Nápověda</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Style</source>
+ <translation>Styl</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Dock views</source>
+ <translation>KotvÃcà okno</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Toolbars</source>
+ <translation>Nástrojové pruhy</translation>
+ </message>
+</context>
+<context>
+ <name>VersionDialog</name>
+ <message>
+ <location filename="../tools/designer/src/designer/versiondialog.cpp" line="+171"/>
+ <source><h3>%1</h3><br/><br/>Version %2</source>
+ <translation><h3>%1</h3><br/><br/>Verze %2</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Qt Designer</source>
+ <translation>Qt Designer</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source><br/>Qt Designer is a graphical user interface designer for Qt applications.<br/></source>
+ <translation><br/>Qt Designer je obrazový návrhář uživatelského rozhranà pro programy Qt.<br/></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>%1<br/>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</source>
+ <translation>%1<br/>Autorské právo (C) 2009 Nokia Corporation a/nebo jejà dceÅ™inná spoleÄnost(i).</translation>
+ </message>
+</context>
+<context>
+ <name>WidgetDataBase</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="+814"/>
+ <source>The file contains a custom widget '%1' whose base class (%2) differs from the current entry in the widget database (%3). The widget database is left unchanged.</source>
+ <translation>Soubor obsahuje uživatelsky stanovený prvek '%1', jehož základnà tÅ™Ãda (%2) se neshoduje se souÄasným záznamem v databázi prvků (%3). databáze prvků se nemÄ›nÃ.</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ActionEditor</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+139"/>
+ <source>Actions</source>
+ <translation>ÄŒinnosti</translation>
+ </message>
+ <message>
+ <location line="-16"/>
+ <source>New...</source>
+ <translation>Nový...</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Delete</source>
+ <translation>Smazat</translation>
+ </message>
+ <message>
+ <location line="+313"/>
+ <source>New action</source>
+ <translation>Nová Äinnost</translation>
+ </message>
+ <message>
+ <location line="+98"/>
+ <source>Edit action</source>
+ <translation>Upravit Äinnost</translation>
+ </message>
+ <message>
+ <location line="-417"/>
+ <source>Edit...</source>
+ <translation>Upravit...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Go to slot...</source>
+ <translation>JÃt na zdÃÅ™ku...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Copy</source>
+ <translation>KopÃrovat</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Cut</source>
+ <translation>Vyjmout</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Paste</source>
+ <translation>Vložit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Select all</source>
+ <translation>Vybrat vše</translation>
+ </message>
+ <message>
+ <location line="+62"/>
+ <source>Icon View</source>
+ <translation>Pohled s ikonami</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Detailed View</source>
+ <translation>Podrobný pohled</translation>
+ </message>
+ <message>
+ <location line="+413"/>
+ <source>Remove actions</source>
+ <translation>Odstranit Äinnosti</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Remove action '%1'</source>
+ <translation>Odstranit Äinnost '%1'</translation>
+ </message>
+ <message>
+ <location line="+186"/>
+ <source>Used In</source>
+ <translation>PoužÃvaný v</translation>
+ </message>
+ <message>
+ <location line="-608"/>
+ <source>Configure Action Editor</source>
+ <translation>Nastavit editor ÄinnostÃ</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ActionModel</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+95"/>
+ <source>Name</source>
+ <translation>Název</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Used</source>
+ <translation>PoužÃvaný</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Text</source>
+ <translation>Text</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Shortcut</source>
+ <translation>Klávesová zkratka</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Checkable</source>
+ <translation>Zaškrtnutelná</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>ToolTip</source>
+ <translation>Rada k nástroji</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::BrushManagerProxy</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+219"/>
+ <source>The element '%1' is missing the required attribute '%2'.</source>
+ <translation>U prvku '%1' chybà vyžadovaná vlastnost '%2'..</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Empty brush name encountered.</source>
+ <translation>ChybÄ›jÃcà název u vymezenà štÄ›tce.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>An unexpected element '%1' was encountered.</source>
+ <translation>Byl zjištěn neplatný prvek '%1'.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>An error occurred when reading the brush definition file '%1' at line line %2, column %3: %4</source>
+ <translation>Chyba pÅ™i Ätenà souboru s vymezenÃm Å¡tÄ›tce '%1' na řádku %2, sloupec %3: %4</translation>
+ </message>
+ <message>
+ <location line="+43"/>
+ <source>An error occurred when reading the resource file '%1' at line %2, column %3: %4</source>
+ <translation>Chyba pÅ™i Ätenà zdrojového souboru '%1' na řádku %2, sloupec %3: %4</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::BuddyEditor</name>
+ <message>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+261"/>
+ <source>Add buddy</source>
+ <translation>Přidat kamaráda</translation>
+ </message>
+ <message>
+ <location line="+52"/>
+ <source>Remove buddies</source>
+ <translation>Odstranit kamarády</translation>
+ </message>
+ <message numerus="yes">
+ <location line="+24"/>
+ <source>Remove %n buddies</source>
+ <translation>
+ <numerusform>Odstranit jednoho kamaráda</numerusform>
+ <numerusform>Odstranit %n kamarády</numerusform>
+ <numerusform>Odstranit %n kamarády</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location line="+51"/>
+ <source>Add %n buddies</source>
+ <translation>
+ <numerusform>Přidat jednoho kamaráda</numerusform>
+ <numerusform>Přidat %n kamarády</numerusform>
+ <numerusform>Přidat %n kamarády</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location line="+47"/>
+ <source>Set automatically</source>
+ <translation>Nastavit automaticky</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::BuddyEditorPlugin</name>
+ <message>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+73"/>
+ <source>Edit Buddies</source>
+ <translation>Upravit kamarády</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::BuddyEditorTool</name>
+ <message>
+ <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+56"/>
+ <source>Edit Buddies</source>
+ <translation>Upravit kamarády</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ButtonGroupMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+7"/>
+ <source>Select members</source>
+ <translation>Vybrat Äleny</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Break</source>
+ <translation>Zrušit</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ButtonTaskMenu</name>
+ <message>
+ <location line="+121"/>
+ <source>Assign to button group</source>
+ <translation>PÅ™iÅ™adit ke skupinÄ› tlaÄÃtek</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Button group</source>
+ <translation>Skupina tlaÄÃtek</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>New button group</source>
+ <translation>Nová skupina tlaÄÃtek</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change text...</source>
+ <translation>Změnit text...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>None</source>
+ <translation>Žádný</translation>
+ </message>
+ <message>
+ <location line="+101"/>
+ <source>Button group '%1'</source>
+ <translation>Skupina tlaÄÃtek '%1'</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::CodeDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+95"/>
+ <source>Save...</source>
+ <translation>Uložit...</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Copy All</source>
+ <translation>KopÃrovat vÅ¡e</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&Find in Text...</source>
+ <translation>&NajÃt v textu...</translation>
+ </message>
+ <message>
+ <location line="+75"/>
+ <source>A temporary form file could not be created in %1.</source>
+ <translation>V adresáři %1 se nepodaÅ™ilo vytvoÅ™it doÄasný soubor s formulářem.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>The temporary form file %1 could not be written.</source>
+ <translation>DoÄasný soubor s formulářem %1 se nepodaÅ™ilo zapsat.</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>%1 - [Code]</source>
+ <translation>%1 - [Kód]</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Save Code</source>
+ <translation>Uložit kód</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Header Files (*.%1)</source>
+ <translation>HlaviÄkové soubory (*.%1)</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>The file %1 could not be opened: %2</source>
+ <translation>Soubor %1 se nepodaÅ™ilo otevÅ™Ãt: %2</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>The file %1 could not be written: %2</source>
+ <translation>Soubor %1 se nepodařilo zapsat: %2</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>%1 - Error</source>
+ <translation>%1 - Chyba</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ColorAction</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+246"/>
+ <source>Text Color</source>
+ <translation>Barva textu</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ComboBoxTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+68"/>
+ <source>Edit Items...</source>
+ <translation>Upravit záznamy...</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Change Combobox Contents</source>
+ <translation>Změnit obsah skupinové krabice</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::CommandLinkButtonTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+156"/>
+ <source>Change description...</source>
+ <translation>Změnit popis...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ConnectionEdit</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+1313"/>
+ <source>Select All</source>
+ <translation>Vybrat vše</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Delete</source>
+ <translation>Smazat</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>Deselect All</source>
+ <translation>Zrušit výběr všeho</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ConnectionModel</name>
+ <message>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="-465"/>
+ <source>Sender</source>
+ <translation>VysÃlaÄ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Signal</source>
+ <translation>Signál</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Receiver</source>
+ <translation>PÅ™ijÃmaÄ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Slot</source>
+ <translation>ZdÃÅ™ka</translation>
+ </message>
+ <message>
+ <location line="+90"/>
+ <source><sender></source>
+ <translation><VysÃlaÄ></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source><signal></source>
+ <translation><Signál></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source><receiver></source>
+ <translation><PÅ™ijÃmaÄ></translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source><slot></source>
+ <translation><ZdÃÅ™ka></translation>
+ </message>
+ <message>
+ <location line="+110"/>
+ <source>Signal and Slot Editor</source>
+ <translation>Editor signálů a zdÃÅ™ek</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>The connection already exists!<br>%1</source>
+ <translation>Toto spojenà již existuje!<br>%1</br></translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ContainerWidgetTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+107"/>
+ <source>Insert Page Before Current Page</source>
+ <translation>Vložit stranu před nynějšà stranu</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Insert Page After Current Page</source>
+ <translation>Vložit stranu po nynějšà straně</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Add Subwindow</source>
+ <translation>Přidat podokno</translation>
+ </message>
+ <message>
+ <location line="-40"/>
+ <source>Delete</source>
+ <translation>Smazat</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Insert</source>
+ <translation>Vložit</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Subwindow</source>
+ <translation>Podokno</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Page</source>
+ <translation>Strana</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Page %1 of %2</source>
+ <translation>Strana %1 z %2</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::DPI_Chooser</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+52"/>
+ <source> x </source>
+ <extracomment>DPI X/Y separator</extracomment>
+ <translation> x </translation>
+ </message>
+ <message>
+ <location line="-25"/>
+ <source>System (%1 x %2)</source>
+ <extracomment>System resolution</extracomment>
+ <translation>Systémové rozlišenà (%1 x %2)</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>User defined</source>
+ <translation>Stanoveno uživatelem</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::DesignerPropertyManager</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+647"/>
+ <location line="+6"/>
+ <source>AlignLeft</source>
+ <translation>Zarovnat k levému okraji</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>AlignHCenter</source>
+ <translation>Zarovnat vodorovně na střed</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>AlignRight</source>
+ <translation>Zarovnat k pravému okraji</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>AlignJustify</source>
+ <translation>Zarovnat do bloku</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>AlignTop</source>
+ <translation>Zarovnat k hornÃmu okraji</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <location line="+4"/>
+ <source>AlignVCenter</source>
+ <translation>Zarovnat svisle na střed</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>AlignBottom</source>
+ <translation>Zarovnat k dolnÃmu okraji</translation>
+ </message>
+ <message>
+ <location line="+565"/>
+ <source>%1, %2</source>
+ <translation>%1, %2</translation>
+ </message>
+ <message numerus="yes">
+ <location line="+6"/>
+ <source>Customized (%n roles)</source>
+ <translation>
+ <numerusform>Přizpůsobeno (role)</numerusform>
+ <numerusform>Přizpůsobeno (%n role)</numerusform>
+ <numerusform>Přizpůsobeno (%n role)</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Inherited</source>
+ <translation>Zděděno</translation>
+ </message>
+ <message>
+ <location line="+566"/>
+ <source>Horizontal</source>
+ <translation>Vodorovný</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Vertical</source>
+ <translation>Svislý</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Normal Off</source>
+ <translation>Obvyklé, vypnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Normal On</source>
+ <translation>Obvyklé, zapnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Disabled Off</source>
+ <translation>Zakázáno, vypnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Disabled On</source>
+ <translation>Zakázáno, zapnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Active Off</source>
+ <translation>V Äinnosti, vypnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Active On</source>
+ <translation>V Äinnosti, zapnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Selected Off</source>
+ <translation>Vybráno, vypnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Selected On</source>
+ <translation>Vybráno, zapnuto</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <location line="+21"/>
+ <source>translatable</source>
+ <translation>Překlad</translation>
+ </message>
+ <message>
+ <location line="-15"/>
+ <location line="+21"/>
+ <source>disambiguation</source>
+ <translation>ZabránÄ›nà dvojznaÄnosti</translation>
+ </message>
+ <message>
+ <location line="-15"/>
+ <location line="+21"/>
+ <source>comment</source>
+ <translation>Poznámka</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::DeviceProfileDialog</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+63"/>
+ <source>Device Profiles (*.%1)</source>
+ <translation>Profily zaÅ™Ãzenà (*.%1)</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>Default</source>
+ <translation>VýchozÃ</translation>
+ </message>
+ <message>
+ <location line="+67"/>
+ <source>Save Profile</source>
+ <translation>Uložit profil</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Save Profile - Error</source>
+ <translation>Chyba při ukládánà profilu</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Unable to open the file '%1' for writing: %2</source>
+ <translation>Soubor '%1' se nepodaÅ™ilo otevÅ™Ãt pro zápis: %2</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Unable to open the file '%1' for reading: %2</source>
+ <translation>Soubor '%1' se nepodaÅ™ilo otevÅ™Ãt pro ÄtenÃ: %2</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>'%1' is not a valid profile: %2</source>
+ <translation>'%1' nenà platným profilem: %2</translation>
+ </message>
+ <message>
+ <location line="-12"/>
+ <source>Open profile</source>
+ <translation>OtevÅ™Ãt profil</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+6"/>
+ <source>Open Profile - Error</source>
+ <translation>Chyba pÅ™i otevÃránà profilu</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::Dialog</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui"/>
+ <source>Dialog</source>
+ <translation>Dialog</translation>
+ </message>
+ <message>
+ <location/>
+ <source>StringList</source>
+ <translation>Seznam řetězců znaků</translation>
+ </message>
+ <message>
+ <location/>
+ <source>New String</source>
+ <translation>Nový řetězec znaků</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&New</source>
+ <translation>&Nový</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Delete String</source>
+ <translation>Smazat řetězec znaků</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Delete</source>
+ <translation>&Smazat</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Value:</source>
+ <translation>&Hodnota:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move String Up</source>
+ <translation>Posunout řetězec znaků nahoru</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Up</source>
+ <translation>Nahoru</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move String Down</source>
+ <translation>Posunout řetězec znaků dolů</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Down</source>
+ <translation>Dolů</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::EmbeddedOptionsControl</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="-260"/>
+ <source>None</source>
+ <translation>Žádný</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Add a profile</source>
+ <translation>Přidat profil</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Edit the selected profile</source>
+ <translation>Upravit vybraný profil</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Delete the selected profile</source>
+ <translation>Smazat vybraný profil</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Add Profile</source>
+ <translation>Přidat profil</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>New profile</source>
+ <translation>Nový profil</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>Edit Profile</source>
+ <translation>Upravit profil</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Delete Profile</source>
+ <translation>Smazat profil</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Would you like to delete the profile '%1'?</source>
+ <translation>Chcete smazat profil '%1'?</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Default</source>
+ <translation>VýchozÃ</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::FilterWidget</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/>
+ <source><Filter></source>
+ <translation><FIltr></translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::FormEditor</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+190"/>
+ <source>Resource File Changed</source>
+ <translation>Zdrojový soubor byl změněn</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>The file "%1" has changed outside Designer. Do you want to reload it?</source>
+ <translation>Zdrojový soubor "%1" byl změněn mimo program Designer. Chcete jej znovu nahrát?</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::FormLayoutMenu</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="+24"/>
+ <source>Add form layout row...</source>
+ <translation>PÅ™idat řádek s rozvrženÃm formuláře...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::FormWindow</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1267"/>
+ <source>Edit contents</source>
+ <translation>Upravit obsah</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>F2</source>
+ <translation>F2</translation>
+ </message>
+ <message>
+ <location line="+841"/>
+ <source>Resize</source>
+ <translation>Změnit velikost</translation>
+ </message>
+ <message>
+ <location line="+218"/>
+ <location line="+15"/>
+ <source>Key Move</source>
+ <translation>Posunout s pomocà klávesnice</translation>
+ </message>
+ <message>
+ <location line="+276"/>
+ <source>Paste error</source>
+ <translation>Chyba pÅ™i vloženÃ</translation>
+ </message>
+ <message>
+ <location line="+445"/>
+ <source>Lay out</source>
+ <translation>RozvrženÃ</translation>
+ </message>
+ <message>
+ <location line="+493"/>
+ <location line="+55"/>
+ <source>Drop widget</source>
+ <translation>Vložit prvek</translation>
+ </message>
+ <message numerus="yes">
+ <location line="-1058"/>
+ <source>Paste %n action(s)</source>
+ <translation>
+ <numerusform>Vložit jednu Äinnost</numerusform>
+ <numerusform>Vložit %n Äinnosti</numerusform>
+ <numerusform>Vložit %n Äinnosti</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location line="-511"/>
+ <source>Insert widget '%1'</source>
+ <translation>Vložit prvek '%1'</translation>
+ </message>
+ <message numerus="yes">
+ <location line="+513"/>
+ <source>Paste %n widget(s)</source>
+ <translation>
+ <numerusform>Vložit jeden prvek</numerusform>
+ <numerusform>Vložit %n prvky</numerusform>
+ <numerusform>Vložit %n prvky</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Paste (%1 widgets, %2 actions)</source>
+ <translation>Vložit (%1 prvky, %2 Äinnosti)</translation>
+ </message>
+ <message>
+ <location line="+56"/>
+ <source>Cannot paste widgets. Designer could not find a container without a layout to paste into.</source>
+ <translation>Prvky nelze vložit, protože se nepodaÅ™ilo nalézt kontejner, který již nemá rozvrženÃ.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Break the layout of the container you want to paste into, select this container and then paste again.</source>
+ <translation>ZruÅ¡te, prosÃm, rozvrženà kontejneru, do kterého chcete vkládat. Vyberte jej znovu a proveÄte vloženà znovu.</translation>
+ </message>
+ <message>
+ <location line="+408"/>
+ <source>Select Ancestor</source>
+ <translation>Vybrat nadřazený prvek</translation>
+ </message>
+ <message>
+ <location line="+576"/>
+ <source>A QMainWindow-based form does not contain a central widget.</source>
+ <translation>Formulář založený na QMainWindow neobsahuje ústřednà prvek.</translation>
+ </message>
+ <message>
+ <location line="-797"/>
+ <source>Raise widgets</source>
+ <translation>PÅ™enést prvky do popÅ™edÃ</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Lower widgets</source>
+ <translation>PÅ™enést prvky do pozadÃ</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::FormWindowBase</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+393"/>
+ <source>Delete</source>
+ <translation>Smazat</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Delete '%1'</source>
+ <translation>Smazat '%1'</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::FormWindowManager</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+364"/>
+ <source>Cu&t</source>
+ <translation>Vyj&mout</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cuts the selected widgets and puts them on the clipboard</source>
+ <translation>Vyjme vybrané prvky a odložà je do schránky</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&Copy</source>
+ <translation>&KopÃrovat</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Copies the selected widgets to the clipboard</source>
+ <translation>ZkopÃruje vybrané prvky do schránky</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&Paste</source>
+ <translation>&Vložit</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Pastes the clipboard's contents</source>
+ <translation>Vložà obsah schránky</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&Delete</source>
+ <translation>&Smazat</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Deletes the selected widgets</source>
+ <translation>Smaže vybrané prvky</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Select &All</source>
+ <translation>Vybrat &vše</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Selects all widgets</source>
+ <translation>Vybere všechny prvky</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Bring to &Front</source>
+ <translation>PÅ™enést do &popÅ™edÃ</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location line="+1"/>
+ <source>Raises the selected widgets</source>
+ <translation>PÅ™enese vybrané prvky do popÅ™edÃ</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Send to &Back</source>
+ <translation>PÅ™enést do po&zadÃ</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location line="+1"/>
+ <source>Lowers the selected widgets</source>
+ <translation>PÅ™enese vybrané prvky do pozadÃ</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Adjust &Size</source>
+ <translation>Přizpůsobit &velikost</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Adjusts the size of the selected widget</source>
+ <translation>SpoÄÃtá velikost vybraného prvku z rozvrženà a pÅ™izpůsobà velikost prvku</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Lay Out &Horizontally</source>
+ <translation>Uspořádat předměty &vodorovně</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Lays out the selected widgets horizontally</source>
+ <translation>Uspořádá vybrané předměty vodorovně</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Lay Out &Vertically</source>
+ <translation>Uspořádat předměty &svisle</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Lays out the selected widgets vertically</source>
+ <translation>Uspořádá vybrané předměty svisle</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Lay Out in a &Grid</source>
+ <translation>Uspořádat předměty &tabulkově</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Lays out the selected widgets in a grid</source>
+ <translation>Uspořádá vybrané předměty tabulkově</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Lay Out Horizontally in S&plitter</source>
+ <translation>Uspořádat pÅ™edmÄ›ty vodorovnÄ› okolo &dÄ›lÃcà pÅ™ÃÄky</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Lays out the selected widgets horizontally in a splitter</source>
+ <translation>Uspořádá vybrané pÅ™edmÄ›ty vodorovnÄ› okolo dÄ›lÃcà pÅ™ÃÄky</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Lay Out Vertically in Sp&litter</source>
+ <translation>Uspořádat pÅ™edmÄ›ty svisle okolo dÄ›&lÃcà pÅ™ÃÄky</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Lays out the selected widgets vertically in a splitter</source>
+ <translation>Uspořádá vybrané pÅ™edmÄ›ty svisle okolo dÄ›lÃcà pÅ™ÃÄky</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>&Break Layout</source>
+ <translation>&ZruÅ¡it rozvrženÃ</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Breaks the selected layout</source>
+ <translation>Zrušà vybrané rozvrženÃ</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>&Preview...</source>
+ <translation>&Náhled...</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Preview current form</source>
+ <translation>Náhled nynÄ›jÅ¡Ãho formuláře</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Form &Settings...</source>
+ <translation>&Nastavenà formuláře...</translation>
+ </message>
+ <message>
+ <location line="+92"/>
+ <source>Break Layout</source>
+ <translation>ZruÅ¡it rozvrženÃ</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Adjust Size</source>
+ <translation>Přizpůsobit velikost</translation>
+ </message>
+ <message>
+ <location line="+43"/>
+ <source>Could not create form preview</source>
+ <comment>Title of warning message box</comment>
+ <translation>Nepodařilo se vytvořit náhled formuláře</translation>
+ </message>
+ <message>
+ <location line="+341"/>
+ <source>Form Settings - %1</source>
+ <translation>Nastavenà formuláře - %1</translation>
+ </message>
+ <message>
+ <location line="-525"/>
+ <source>Removes empty columns and rows</source>
+ <translation>Odstranà prázdné řádky a sloupce</translation>
+ </message>
+ <message>
+ <location line="-50"/>
+ <source>Lay Out in a &Form Layout</source>
+ <translation>Uspořádat předměty v &rozvrženà formuláře</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Lays out the selected widgets in a form layout</source>
+ <translation>Uspořádá vybrané předměty v dvousloupcovém rozvrženà formuláře</translation>
+ </message>
+ <message>
+ <location line="+45"/>
+ <source>Si&mplify Grid Layout</source>
+ <translation>Z&jednoduÅ¡it tabulkové rozvrženÃ</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::FormWindowSettings</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+193"/>
+ <source>None</source>
+ <translation>Žádný</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Device Profile: %1</source>
+ <translation>Profil zaÅ™ÃzenÃ: %1</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::GridPanel</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/gridpanel.ui"/>
+ <source>Visible</source>
+ <translation>Viditelný</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Snap</source>
+ <translation>Zapadnout</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Reset</source>
+ <translation>Nastavit znovu</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Grid</source>
+ <translation>MřÞka</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Grid &X</source>
+ <translation>MřÞka &x</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Grid &Y</source>
+ <translation>MřÞka &y</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::GroupBoxTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+82"/>
+ <source>Change title...</source>
+ <translation>Změnit název...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::HtmlTextEdit</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="-58"/>
+ <source>Insert HTML entity</source>
+ <translation>Vložit HTML znak</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::IconSelector</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-24"/>
+ <source>The pixmap file '%1' cannot be read.</source>
+ <translation>Soubor s pixmapou '%1' nelze pÅ™eÄÃst.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>The file '%1' does not appear to be a valid pixmap file: %2</source>
+ <translation>Soubor '%1' nenà platným souborem s pixmapou: %2</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>The file '%1' could not be read: %2</source>
+ <translation>Soubor %1 se nepodaÅ™ilo pÅ™eÄÃt: %2</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>Pixmap Read Error</source>
+ <translation>Chyba pÅ™i Ätenà pixmapy</translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Normal Off</source>
+ <translation>Obvyklé, vypnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Normal On</source>
+ <translation>Obvyklé, zapnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Disabled Off</source>
+ <translation>Zakázáno, vypnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Disabled On</source>
+ <translation>Zakázáno, zapnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Active Off</source>
+ <translation>V Äinnosti, vypnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Active On</source>
+ <translation>V Äinnosti, zapnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Selected Off</source>
+ <translation>Vybráno, vypnuto</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Selected On</source>
+ <translation>Vybráno, zapnuto</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Choose Resource...</source>
+ <translation>Vybrat zdroj...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Choose File...</source>
+ <translation>Vybrat soubor...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Reset</source>
+ <translation>Nastavit znovu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Reset All</source>
+ <translation>Nastavit znovu vše</translation>
+ </message>
+ <message>
+ <location line="-85"/>
+ <source>Choose a Pixmap</source>
+ <translation>Vybrat pixmapu</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ItemListEditor</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+358"/>
+ <source>Properties &<<</source>
+ <translation>Vlastnosti &<<</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui"/>
+ <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+2"/>
+ <source>Properties &>></source>
+ <translation>Vlastnosti &>></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Items List</source>
+ <translation>Seznam prvků</translation>
+ </message>
+ <message>
+ <location/>
+ <source>New Item</source>
+ <translation>Nový prvek</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&New</source>
+ <translation>&Nový</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Delete Item</source>
+ <translation>Smazat prvek</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Delete</source>
+ <translation>&Smazat</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move Item Up</source>
+ <translation>Posunout prvek nahoru</translation>
+ </message>
+ <message>
+ <location/>
+ <source>U</source>
+ <translation>U</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move Item Down</source>
+ <translation>Posunout prvek dolů</translation>
+ </message>
+ <message>
+ <location/>
+ <source>D</source>
+ <translation>D</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::LabelTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+85"/>
+ <source>Change rich text...</source>
+ <translation>Změnit upravovatelný text...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change plain text...</source>
+ <translation>Změnit prostý text...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::LanguageResourceDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-258"/>
+ <source>Choose Resource</source>
+ <translation>Vybrat zdroj</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::LineEditTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+80"/>
+ <source>Change text...</source>
+ <translation>Změnit text...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ListWidgetEditor</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+101"/>
+ <source>Edit List Widget</source>
+ <translation>Upravit seznam prvků</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Edit Combobox</source>
+ <translation>Upravit skupinovou krabici</translation>
+ </message>
+ <message>
+ <location line="-51"/>
+ <source>New Item</source>
+ <translation>Nový prvek</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ListWidgetTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+67"/>
+ <source>Edit Items...</source>
+ <translation>Upravit prvky...</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Change List Contents</source>
+ <translation>Změnit obsah seznamu</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::MdiContainerWidgetTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+118"/>
+ <source>Next Subwindow</source>
+ <translation>Dalšà podokno</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Previous Subwindow</source>
+ <translation>Předchozà podokno</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Tile</source>
+ <translation>Uspořádat jedno vedle druhého</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Cascade</source>
+ <translation>Překrývat</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::MenuTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+56"/>
+ <source>Remove</source>
+ <translation>Odstranit</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::MorphMenu</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+264"/>
+ <source>Morph into</source>
+ <translation>Přeměnit prvek na</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::NewActionDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/newactiondialog.ui"/>
+ <source>New Action...</source>
+ <translation>Nová Äinnost...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Text:</source>
+ <translation>&Text:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Shortcut:</source>
+ <translation>Klávesová zkratka:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Checkable:</source>
+ <translation>Zaškrtnutelná:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>ToolTip:</source>
+ <translation>Rada k nástroji:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Icon:</source>
+ <translation>&Ikona:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Object &name:</source>
+ <translation>&Název předmětu:</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::NewDynamicPropertyDialog</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+134"/>
+ <source>Set Property Name</source>
+ <translation>Nastavit název vlastnosti</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>The current object already has a property named '%1'.
+Please select another, unique one.</source>
+ <translation>nynějšà předmět již má vlastnost s názvem '%1'.
+Zvolte, prosÃm, jiný, jedineÄný název.</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui"/>
+ <source>Create Dynamic Property</source>
+ <translation>Vytvořit dynamickou vlastnost</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Property Name</source>
+ <translation>Název vlastnosti</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Property Type</source>
+ <translation>typ vlastnosti</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+4"/>
+ <source>The '_q_' prefix is reserved for the Qt library.
+Please select another name.</source>
+ <translation>PÅ™edpona '_q_' je použÃvána knihovnou Qt pro vnitÅ™nà úÄely.
+Zvolte, prosÃm, jiný název.</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui"/>
+ <source>horizontalSpacer</source>
+ <translation>Vodorovný vymezovaÄ</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::NewFormWidget</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+104"/>
+ <source>Default size</source>
+ <translation>Výchozà velikost</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>QVGA portrait (240x320)</source>
+ <translation>QVGA formát na výšku (240x320)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>QVGA landscape (320x240)</source>
+ <translation>QVGA formát na Å¡ÃÅ™ku (320x240)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>VGA portrait (480x640)</source>
+ <translation>VGA formát na výšku (480x640)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>VGA landscape (640x480)</source>
+ <translation>VGA formát na Å¡ÃÅ™ku (640x480)</translation>
+ </message>
+ <message>
+ <location line="+66"/>
+ <source>Widgets</source>
+ <extracomment>New Form Dialog Categories</extracomment>
+ <translation>Prvky</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Custom Widgets</source>
+ <translation>Uživatelsky stanovené prvky</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>None</source>
+ <translation>Žádný</translation>
+ </message>
+ <message>
+ <location line="+57"/>
+ <source>Error loading form</source>
+ <translation>Formulář se nepodařilo nahrát</translation>
+ </message>
+ <message>
+ <location line="+244"/>
+ <source>Unable to open the form template file '%1': %2</source>
+ <translation>NepodaÅ™ilo se otevÅ™Ãt pÅ™edlohu s formulářem '%1': %2</translation>
+ </message>
+ <message>
+ <location line="+67"/>
+ <source>Internal error: No template selected.</source>
+ <translation>Vnitřnà chyba: Nenà vybrána žádná předloha.</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/newformwidget.ui"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Choose a template for a preview</source>
+ <translation>Vyberte předlohu pro náhled</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Embedded Design</source>
+ <translation>Vložený návrh</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Device:</source>
+ <translation>ZaÅ™ÃzenÃ:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Screen Size:</source>
+ <translation>Velikost obrazovky:</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::NewPromotedClassPanel</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+92"/>
+ <source>Add</source>
+ <translation>Přidat</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>New Promoted Class</source>
+ <translation>Nová uživatelsky stanovená tÅ™Ãda</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Base class name:</source>
+ <translation>Název základnà tÅ™Ãdy:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Promoted class name:</source>
+ <translation>Název uživatelsky stanovené tÅ™Ãdy:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Header file:</source>
+ <translation>HlaviÄkový soubor:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Global include</source>
+ <translation>Celkový hlaviÄkový soubor</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Reset</source>
+ <translation>Nastavit znovu</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ObjectInspector</name>
+ <message>
+ <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+316"/>
+ <source>Change Current Page</source>
+ <translation>Změnit nynějšà stranu</translation>
+ </message>
+ <message>
+ <location line="+438"/>
+ <source>&Find in Text...</source>
+ <translation>&NajÃt v textu...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ObjectInspector::ObjectInspectorPrivate</name>
+ <message>
+ <source>Change Current Page</source>
+ <translation type="obsolete">Změnit nynějšà stranu</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::OrderDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+109"/>
+ <source>Index %1 (%2)</source>
+ <translation>Poloha %1 (%2)</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.ui"/>
+ <source>Change Page Order</source>
+ <translation>Změnit pořadà stran</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Page Order</source>
+ <translation>Pořadà stran</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move page up</source>
+ <translation>Posunout stranu nahoru</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move page down</source>
+ <translation>Posunout stranu dolů</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+3"/>
+ <source>%1 %2</source>
+ <translation>%1 %2</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PaletteEditor</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui"/>
+ <source>Edit Palette</source>
+ <translation>Upravit paletu</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Tune Palette</source>
+ <translation>Vyladit paletu</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Show Details</source>
+ <translation>Ukázat podrobnosti</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Compute Details</source>
+ <translation>SpoÄÃtat podrobnosti</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Quick</source>
+ <translation>Jednoduchý</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Preview</source>
+ <translation>Náhled</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Disabled</source>
+ <translation>Zakázáno</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Inactive</source>
+ <translation>NeÄinný</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Active</source>
+ <translation>V Äinnosti</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PaletteEditorButton</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+57"/>
+ <source>Change Palette</source>
+ <translation>Změnit paletu</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PaletteModel</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+374"/>
+ <source>Color Role</source>
+ <translation>Barevné kolo</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Active</source>
+ <translation>V Äinnosti</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Inactive</source>
+ <translation>NeÄinný</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Disabled</source>
+ <translation>Zakázáno</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PixmapEditor</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="-1539"/>
+ <source>Copy Path</source>
+ <translation>KopÃrovat cestu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Paste Path</source>
+ <translation>Vložit cestu</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Choose Resource...</source>
+ <translation>Vybrat zdroj...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Choose File...</source>
+ <translation>Vybrat soubor...</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <location line="+16"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PlainTextEditorDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+65"/>
+ <source>Edit text</source>
+ <translation>Upravit text</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PluginDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/plugindialog.cpp" line="+72"/>
+ <source>Components</source>
+ <translation>SouÄásti</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Plugin Information</source>
+ <translation>Informace o pÅ™Ãdavných modulech</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Refresh</source>
+ <translation>Obnovit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scan for newly installed custom widget plugins.</source>
+ <translation>Prohledat kvůli novÄ› nainstalovaným pÅ™Ãdavným modulům s uživatelsky stanovenými prvky.</translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>Qt Designer couldn't find any plugins</source>
+ <translation>Programu Qt Designer se nepodaÅ™ilo najÃt jakékoli pÅ™Ãdavné moduly</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Qt Designer found the following plugins</source>
+ <translation>Programu Qt Designer se podaÅ™ilo najÃt následujÃcà pÅ™Ãdavné moduly</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>New custom widget plugins have been found.</source>
+ <translation>Byly nalezeny nové pÅ™Ãdavné moduly s uživatelsky stanovenými prvky.</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PreviewActionGroup</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+95"/>
+ <source>%1 Style</source>
+ <translation>%1-Styl</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PreviewConfigurationWidget</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+139"/>
+ <source>Default</source>
+ <translation>VýchozÃ</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>None</source>
+ <translation>Žádný</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Browse...</source>
+ <translation>Procházet...</translation>
+ </message>
+ <message>
+ <location line="+118"/>
+ <source>Load Custom Device Skin</source>
+ <translation>Nahrát uživatelsky stanovený vzhled zaÅ™ÃzenÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>All QVFB Skins (*.%1)</source>
+ <translation>Všechny vzhledy QVFB (*.%1)</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>%1 - Duplicate Skin</source>
+ <translation>%1 - Zdvojit vzhled</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>The skin '%1' already exists.</source>
+ <translation>Vzhled '%1' již existuje.</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>%1 - Error</source>
+ <translation>%1 - Chyba</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>%1 is not a valid skin directory:
+%2</source>
+ <translation>%1 nenà platným adresářem pro vzhled:
+%2</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PreviewConfigurationWidget::PreviewConfigurationWidgetPrivate</name>
+ <message>
+ <source>Load Custom Device Skin</source>
+ <translation type="obsolete">Nahrát uživatelsky stanovený vzhled zaÅ™ÃzenÃ</translation>
+ </message>
+ <message>
+ <source>All QVFB Skins (*.%1)</source>
+ <translation type="obsolete">Všechny vzhledy QVFB (*.%1)</translation>
+ </message>
+ <message>
+ <source>%1 - Duplicate Skin</source>
+ <translation type="obsolete">%1 - Vzhled již existuje</translation>
+ </message>
+ <message>
+ <source>The skin '%1' already exists.</source>
+ <translation type="obsolete">Vzhled '%1' již existuje.</translation>
+ </message>
+ <message>
+ <source>%1 - Error</source>
+ <translation type="obsolete">%1 - Chyba</translation>
+ </message>
+ <message>
+ <source>%1 is not a valid skin directory:
+%2</source>
+ <translation type="obsolete">%1 nenà platným adresářem vzhledu:
+%2</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PreviewDeviceSkin</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+259"/>
+ <source>&Portrait</source>
+ <translation>Formát na &výšku</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Landscape (&CCW)</source>
+ <extracomment>Rotate form preview counter-clockwise</extracomment>
+ <translation>Formát na Å¡ÃÅ™ku (&proti smÄ›ru otáÄenà hodinových ruÄiÄek)</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&Landscape (CW)</source>
+ <extracomment>Rotate form preview clockwise</extracomment>
+ <translation>Formát na Å¡ÃÅ™ku (po smÄ›ru &otáÄenà hodinových ruÄiÄek)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&Close</source>
+ <translation>&ZavÅ™Ãt</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PreviewManager</name>
+ <message>
+ <location line="+426"/>
+ <source>%1 - [Preview]</source>
+ <translation>%1 - [Náhled]</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PreviewMdiArea</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+72"/>
+ <source>The moose in the noose
+ate the goose who was loose.</source>
+ <extracomment>Palette editor background</extracomment>
+ <translation>Los v chomoutu snědl husu,
+která byla volně puštěná.</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PreviewWidget</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui"/>
+ <source>Preview Window</source>
+ <translation>Náhledové okno</translation>
+ </message>
+ <message>
+ <location/>
+ <source>LineEdit</source>
+ <translation>Úprava Äáry</translation>
+ </message>
+ <message>
+ <location/>
+ <source>ComboBox</source>
+ <translation>Skupinová krabice</translation>
+ </message>
+ <message>
+ <location/>
+ <source>PushButton</source>
+ <translation>TlaÄÃtko na postrÄenÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>ButtonGroup2</source>
+ <translation>Skupina tlaÄÃtek 2</translation>
+ </message>
+ <message>
+ <location/>
+ <source>CheckBox1</source>
+ <translation>ZaÅ¡krtnutelné polÃÄko 1</translation>
+ </message>
+ <message>
+ <location/>
+ <source>CheckBox2</source>
+ <translation>ZaÅ¡krtnutelné polÃÄko 2</translation>
+ </message>
+ <message>
+ <location/>
+ <source>ButtonGroup</source>
+ <translation>Skupina tlaÄÃtek</translation>
+ </message>
+ <message>
+ <location/>
+ <source>RadioButton1</source>
+ <translation>Rozhlasové tlaÄÃtko 1</translation>
+ </message>
+ <message>
+ <location/>
+ <source>RadioButton2</source>
+ <translation>Rozhlasové tlaÄÃtko 2</translation>
+ </message>
+ <message>
+ <location/>
+ <source>RadioButton3</source>
+ <translation>Rozhlasové tlaÄÃtko 3</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PromotionModel</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+17"/>
+ <source>Name</source>
+ <translation>Název</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Header file</source>
+ <translation>HlaviÄkový soubor</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Global include</source>
+ <translation>Celkový hlaviÄkový soubor</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Usage</source>
+ <translation>PoužitÃ</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PromotionTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+85"/>
+ <source>Promoted widgets...</source>
+ <translation>Uživatelsky stanovené prvky...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Promote to ...</source>
+ <translation>Stanovit jako zástupný symbol pro uživatelsky stanovenou tÅ™Ãdu...</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Promote to</source>
+ <translation>Stanovit jako zástupný symbol pro uživatelsky stanovenou tÅ™Ãdu</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Demote to %1</source>
+ <translation>Odstranit zástupný symbol pro uživatelsky stanovenou tÅ™Ãdu a pÅ™emÄ›nit na %1</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Change signals/slots...</source>
+ <translation>ZmÄ›nit signály/zdÃÅ™ky...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PropertyEditor</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+183"/>
+ <source>Add Dynamic Property...</source>
+ <translation>Přidat dynamickou vlastnost...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Remove Dynamic Property</source>
+ <translation>Odstranit dynamickou vlastnost</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Tree View</source>
+ <translation>Stromový pohled</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Drop Down Button View</source>
+ <translation>Podrobný pohled</translation>
+ </message>
+ <message>
+ <location line="+597"/>
+ <source>Object: %1
+Class: %2</source>
+ <translation>Předmět: %1
+TÅ™Ãda: %2</translation>
+ </message>
+ <message>
+ <location line="-600"/>
+ <source>Sorting</source>
+ <translation>TÅ™ÃdÄ›nÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Color Groups</source>
+ <translation>Barevné zdůraznÄ›nÃ</translation>
+ </message>
+ <message>
+ <location line="+66"/>
+ <source>Configure Property Editor</source>
+ <translation>Nastavit editor vlastnostÃ</translation>
+ </message>
+ <message>
+ <location line="-14"/>
+ <source>String...</source>
+ <translation>Řetězec znaků...</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Bool...</source>
+ <translation>Booleánská hodnota...</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Other...</source>
+ <translation>Jiný typ...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::PropertyLineEdit</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+88"/>
+ <source>Insert line break</source>
+ <translation>Vložit zalomenà řádku</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::QDesignerPromotionDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+85"/>
+ <source>Promoted Widgets</source>
+ <translation>Zástupný symbol pro uživatelsky stanovené prvky</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Promoted Classes</source>
+ <translation>Zástupný symbol pro uživatelsky stanovené tÅ™Ãdy</translation>
+ </message>
+ <message>
+ <location line="+60"/>
+ <source>Promote</source>
+ <translation>PoužÃvat</translation>
+ </message>
+ <message>
+ <location line="+169"/>
+ <source>%1 - Error</source>
+ <translation>%1 - Chyba</translation>
+ </message>
+ <message>
+ <location line="-17"/>
+ <source>Change signals/slots...</source>
+ <translation>ZmÄ›nit signály/zdÃÅ™ky...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::QDesignerResource</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+277"/>
+ <source>Loading qrc file</source>
+ <translation>Nahrává se zdrojový soubor</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>The specified qrc file <p><b>%1</b></p><p>could not be found. Do you want to update the file location?</p></source>
+ <translation>Zadaný zdrojový soubor <p><b>%1</b></p><p> se nepodaÅ™ilo najÃt. Chcete zadat novou cestu k umÃstÄ›nà souboru?</p></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>New location for %1</source>
+ <translation>Nové umÃstÄ›nà %1</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Resource files (*.qrc)</source>
+ <translation>Zdrojové soubory (*.qrc)</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::QDesignerTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+68"/>
+ <source>Change objectName...</source>
+ <translation>Změnit název předmětu...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change toolTip...</source>
+ <translation>Změnit radu k nástroji...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change whatsThis...</source>
+ <translation>Změnit "A co je toto"...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change styleSheet...</source>
+ <translation>Změnit předlohový list...</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Create Menu Bar</source>
+ <translation>VytvoÅ™it nabÃdkový pruh</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Add Tool Bar</source>
+ <translation>Přidat nástrojový pruh</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Create Status Bar</source>
+ <translation>Vytvořit stavový pruh</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Remove Status Bar</source>
+ <translation>Odstranit stavový pruh</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change script...</source>
+ <translation>Změnit skript...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change signals/slots...</source>
+ <translation>ZmÄ›nit signály/zdÃÅ™ky...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Go to slot...</source>
+ <translation>JÃt na zdÃÅ™ku...</translation>
+ </message>
+ <message>
+ <location line="+413"/>
+ <source>no signals available</source>
+ <translation>Nejsou dostupné žádné signály</translation>
+ </message>
+ <message numerus="yes">
+ <location line="+67"/>
+ <source>Set size constraint on %n widget(s)</source>
+ <translation>
+ <numerusform>Nastavit omezenà velikosti u jednoho prvku</numerusform>
+ <numerusform>Nastavit omezenà velikosti u %n prvků</numerusform>
+ <numerusform>Nastavit omezenà velikosti u %n prvků</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location line="-477"/>
+ <source>Size Constraints</source>
+ <translation>Omezenà velikosti</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Set Minimum Width</source>
+ <translation>Nastavit nejmenšà šÃÅ™ku</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Set Minimum Height</source>
+ <translation>Nastavit nejmenšà výšku</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Set Minimum Size</source>
+ <translation>Nastavit nejmenšà velikost</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Set Maximum Width</source>
+ <translation>Nastavit nejvÄ›tšà šÃÅ™ku</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Set Maximum Height</source>
+ <translation>Nastavit největšà výšku</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Set Maximum Size</source>
+ <translation>Nastavit největšà velikost</translation>
+ </message>
+ <message>
+ <location line="+235"/>
+ <source>Edit ToolTip</source>
+ <translation>Upravit radu k nástroji</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Edit WhatsThis</source>
+ <translation>Upravit "A co je toto"</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::QDesignerWidgetBox</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+123"/>
+ <location line="+13"/>
+ <source>Unexpected element <%1></source>
+ <translation>Neplatný prvek <%1></translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>A parse error occurred at line %1, column %2 of the XML code specified for the widget %3: %4
+%5</source>
+ <translation>Kód XML pro prvek %3 obsahuje chybu na řádku %1, sloupec %2:%4:
+%5</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>The XML code specified for the widget %1 does not contain any widget elements.
+%2</source>
+ <translation>Kód XML pro prvek %1 neobsahuje prvky.
+%2</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="+349"/>
+ <source>An error has been encountered at line %1 of %2: %3</source>
+ <translation>Chyba na řádku %1 z %2: %3</translation>
+ </message>
+ <message>
+ <location line="+139"/>
+ <source>Unexpected element <%1> encountered when parsing for <widget> or <ui></source>
+ <translation>Na mÃstÄ› oÄekávaného <prvek>- nebo prvku <ui> byl nalezen <%1></translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Unexpected end of file encountered when parsing widgets.</source>
+ <translation>PÅ™i Ätenà nastavenà krabice s prvky se vyskytl pÅ™edÄasný konec souboru.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>A widget element could not be found.</source>
+ <translation>NepodaÅ™ilo se najÃt prvek.</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::QtGradientStopsController</name>
+ <message>
+ <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+173"/>
+ <source>H</source>
+ <translation>H</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>S</source>
+ <translation>S</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>V</source>
+ <translation>V</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+4"/>
+ <source>Hue</source>
+ <translation>Barevný odstÃn</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Sat</source>
+ <translation>Sytost</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Val</source>
+ <translation>Hodnota</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Saturation</source>
+ <translation>Sytost</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Value</source>
+ <translation>Hodnota</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>R</source>
+ <translation>R</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>G</source>
+ <translation>G</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B</source>
+ <translation>B</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Red</source>
+ <translation>Červená</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Green</source>
+ <translation>Zelená</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Blue</source>
+ <translation>Modrá</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::RichTextEditorDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+436"/>
+ <source>Edit text</source>
+ <translation>Upravit text</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>&OK</source>
+ <translation>&OK</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&Cancel</source>
+ <translation>&Zrušit</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <source>Rich Text</source>
+ <translation>Upravovatelný text</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Source</source>
+ <translation>Zdroj</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::RichTextEditorToolBar</name>
+ <message>
+ <location line="-294"/>
+ <source>Bold</source>
+ <translation>TuÄné</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>CTRL+B</source>
+ <translation>CTRL+F</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Italic</source>
+ <translation>KurzÃva</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>CTRL+I</source>
+ <translation>CTRL+K</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Underline</source>
+ <translation>PodtrženÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>CTRL+U</source>
+ <translation>CTRL+U</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Left Align</source>
+ <translation>Zarovnat k levému okraji</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Center</source>
+ <translation>Zarovnat na střed</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Right Align</source>
+ <translation>Zarovnat k pravému okraji</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Justify</source>
+ <translation>Zarovnat do bloku</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Superscript</source>
+ <translation>Hornà index</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Subscript</source>
+ <translation>Dolnà index</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Insert &Link</source>
+ <translation>Vložit &odkaz</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Insert &Image</source>
+ <translation>Vložit &obrázek</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ScriptDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+66"/>
+ <source>Edit script</source>
+ <translation>Upravit skript</translation>
+ </message>
+ <message>
+ <location line="+56"/>
+ <source>Syntax error</source>
+ <translation>Chyba ve skladbÄ›</translation>
+ </message>
+ <message>
+ <location line="-51"/>
+ <source><html>Enter a Qt Script snippet to be executed while loading the form.<br>The widget and its children are accessible via the variables <i>widget</i> and <i>childWidgets</i>, respectively.</source>
+ <translation><html>Zadejte kousek Qt skriptu k provedenà v průbÄ›hu nahrávánà formuláře.<br>Prvek a jemu podÅ™Ãzené prvky jsou pÅ™Ãstupné prostÅ™ednictvÃm promÄ›nných <i>widget</i> und <i>childWidgets</i>.</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ScriptErrorDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+27"/>
+ <source>Script errors</source>
+ <translation>Chyby ve skriptu</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::SignalSlotDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+199"/>
+ <source>There is already a slot with the signature '%1'.</source>
+ <translation>Již existuje zdÃÅ™ka s podpisem '%1'.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>There is already a signal with the signature '%1'.</source>
+ <translation>Již existuje signál s podpisem '%1'.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>%1 - Duplicate Signature</source>
+ <translation>%1 - Podpis již existuje</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <location line="+76"/>
+ <source>Signals/Slots of %1</source>
+ <translation>Signály/ZdÃÅ™ky od %1</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::SignalSlotEditorPlugin</name>
+ <message>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+72"/>
+ <source>Edit Signals/Slots</source>
+ <translation>Upravit signály/zdÃÅ™ky</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>F4</source>
+ <translation>F4</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::SignalSlotEditorTool</name>
+ <message>
+ <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+58"/>
+ <source>Edit Signals/Slots</source>
+ <translation>Upravit signály/zdÃÅ™ky</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::StatusBarTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+81"/>
+ <source>Remove</source>
+ <translation>Odstranit</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::StringListEditorButton</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+56"/>
+ <source>Change String List</source>
+ <translation>Změnit seznamy s řetězci znaků</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::StyleSheetEditorDialog</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+97"/>
+ <source>Edit Style Sheet</source>
+ <translation>Upravit předlohový list</translation>
+ </message>
+ <message>
+ <location line="-7"/>
+ <location line="+280"/>
+ <source>Valid Style Sheet</source>
+ <translation>Platný předlohový list</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid Style Sheet</source>
+ <translation>Neplatný předlohový list</translation>
+ </message>
+ <message>
+ <location line="-281"/>
+ <source>Add Resource...</source>
+ <translation>Přidat zdroj...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Add Gradient...</source>
+ <translation>Přidat přechod...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Add Color...</source>
+ <translation>Přidat barvu...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Add Font...</source>
+ <translation>PÅ™idat pÃsmo...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::TabOrderEditor</name>
+ <message>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+363"/>
+ <source>Start from Here</source>
+ <translation>ZaÄÃt znovu odtud</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Restart</source>
+ <translation>ZaÄÃt znovu</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Tab Order List...</source>
+ <translation>Seznam s poÅ™adÃm tabulátorů...</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Tab Order List</source>
+ <translation>Seznam s poÅ™adÃm tabulátorů</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Tab Order</source>
+ <translation>Pořadà tabulátorů</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::TabOrderEditorPlugin</name>
+ <message>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+73"/>
+ <source>Edit Tab Order</source>
+ <translation>Upravit pořadà tabulátorů</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::TabOrderEditorTool</name>
+ <message>
+ <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+57"/>
+ <source>Edit Tab Order</source>
+ <translation>Upravit pořadà tabulátorů</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::TableWidgetEditor</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+67"/>
+ <source>New Column</source>
+ <translation>Nový sloupec</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>New Row</source>
+ <translation>Nový řádek</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>&Columns</source>
+ <translation>&Sloupce</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&Rows</source>
+ <translation>&Řádky</translation>
+ </message>
+ <message>
+ <location line="+137"/>
+ <source>Properties &<<</source>
+ <translation>Vlastnosti &<<</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.ui"/>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+2"/>
+ <source>Properties &>></source>
+ <translation>Vlastnosti &>></translation>
+ </message>
+ <message>
+ <location/>
+ <source>Edit Table Widget</source>
+ <translation>Upravit prvek s tabulkou</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Items</source>
+ <translation>&Prvky</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Table Items</source>
+ <translation>Prvky tabulek</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::TableWidgetTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+64"/>
+ <source>Edit Items...</source>
+ <translation>Upravit prvky...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::TemplateOptionsWidget</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="-18"/>
+ <source>Pick a directory to save templates in</source>
+ <translation>Vyberte adresář pro ukládánà předloh</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/templateoptionspage.ui"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Additional Template Paths</source>
+ <translation>DodateÄné adresáře pro pÅ™edlohy</translation>
+ </message>
+ <message>
+ <location/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::TextEditTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+59"/>
+ <source>Change HTML...</source>
+ <translation>Změnit HTML...</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>Edit HTML</source>
+ <translation>Upravit HTML</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Edit Text</source>
+ <translation>Upravit text</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Change Plain Text...</source>
+ <translation>Změnit prostý text...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::TextEditor</name>
+ <message>
+ <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="-204"/>
+ <source>Choose Resource...</source>
+ <translation>Vybrat zdroj...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Choose File...</source>
+ <translation>Vybrat soubor...</translation>
+ </message>
+ <message>
+ <location line="+123"/>
+ <source>Choose a File</source>
+ <translation>Vybrat soubor</translation>
+ </message>
+ <message>
+ <location line="-118"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ToolBarEventFilter</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+234"/>
+ <source>Insert Separator</source>
+ <translation>Vložit oddÄ›lovaÄ</translation>
+ </message>
+ <message>
+ <location line="-65"/>
+ <source>Remove action '%1'</source>
+ <translation>Odstranit Äinnost '%1'</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Remove Toolbar '%1'</source>
+ <translation>Odstranit nástrojový pruh '%1'</translation>
+ </message>
+ <message>
+ <location line="-28"/>
+ <source>Insert Separator before '%1'</source>
+ <translation>Vložit oddÄ›lovaÄ pÅ™ed '%1'</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Append Separator</source>
+ <translation>PÅ™ipojit oddÄ›lovaÄ</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::TreeWidgetEditor</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+76"/>
+ <source>&Columns</source>
+ <translation>&Sloupce</translation>
+ </message>
+ <message>
+ <location line="+69"/>
+ <source>Per column properties</source>
+ <translation>Vlastnosti sloupců</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Common properties</source>
+ <translation>SpoleÄné vlastnosti</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+53"/>
+ <source>New Item</source>
+ <translation>Nový prvek</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+194"/>
+ <source>Properties &<<</source>
+ <translation>Vlastnosti &<<</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+2"/>
+ <source>Properties &>></source>
+ <translation>Vlastnosti &>></translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="-327"/>
+ <source>New Column</source>
+ <translation>Nový sloupec</translation>
+ </message>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
+ <source>Edit Tree Widget</source>
+ <translation>Upravit stromový prvek</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Items</source>
+ <translation>&Prvky</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Tree Items</source>
+ <translation>Stromové prvky</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+150"/>
+ <source>New Subitem</source>
+ <translation>Nový podÅ™Ãzený prvek</translation>
+ </message>
+ <message>
+ <location/>
+ <source>New &Subitem</source>
+ <translation>Nový po&dÅ™Ãzený prvek</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Delete Item</source>
+ <translation>Smazat prvek</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move Item Left (before Parent Item)</source>
+ <translation>Posunout prvek doleva (pÅ™ed nadÅ™Ãzený prvek)</translation>
+ </message>
+ <message>
+ <location/>
+ <source>L</source>
+ <translation>L</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move Item Right (as a First Subitem of the Next Sibling Item)</source>
+ <translation>Posunout prvek doprava (jako prvnà podÅ™Ãzený prvek dalÅ¡Ãho rovnocenného prvku)</translation>
+ </message>
+ <message>
+ <location/>
+ <source>R</source>
+ <translation>R</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move Item Up</source>
+ <translation>Posunout prvek nahoru</translation>
+ </message>
+ <message>
+ <location/>
+ <source>U</source>
+ <translation>U</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move Item Down</source>
+ <translation>Posunout prvek dolů</translation>
+ </message>
+ <message>
+ <location/>
+ <source>D</source>
+ <translation>D</translation>
+ </message>
+ <message>
+ <location/>
+ <source>1</source>
+ <translation>1</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&New</source>
+ <translation>&Nový</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Delete</source>
+ <translation>&Smazat</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::TreeWidgetTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+63"/>
+ <source>Edit Items...</source>
+ <translation>Upravit prvky...</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::WidgetBox</name>
+ <message>
+ <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+115"/>
+ <source>Warning: Widget creation failed in the widget box. This could be caused by invalid custom widget XML.</source>
+ <translation>UpozornÄ›nÃ: VytvoÅ™enà prvku v krabici s prvky se nezdaÅ™ilo. Mohlo by to být zapÅ™ÃÄinÄ›no chybným XML kódem uživatelsky stanoveného prvku.</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::WidgetBoxTreeWidget</name>
+ <message>
+ <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-268"/>
+ <source>Scratchpad</source>
+ <translation>SkladovánÃ</translation>
+ </message>
+ <message>
+ <location line="+370"/>
+ <source>Custom Widgets</source>
+ <translation>Uživatelsky stanovené prvky</translation>
+ </message>
+ <message>
+ <location line="+263"/>
+ <source>Expand all</source>
+ <translation>Rozdělat vše</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Collapse all</source>
+ <translation>Složit vše</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>List View</source>
+ <translation>Pohled se seznamem</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Icon View</source>
+ <translation>Pohled s ikonami</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Remove</source>
+ <translation>Odstranit</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Edit name</source>
+ <translation>Upravit název</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::WidgetDataBase</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="-411"/>
+ <source>A custom widget plugin whose class name (%1) matches that of an existing class has been found.</source>
+ <translation>Byl nalezen pÅ™Ãdavný modul, který obsahuje uživatelsky stanovený prvek, jehož název pro tÅ™Ãdu (%1) odpovÃdá stávajÃcà tÅ™ÃdÄ›.</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::WidgetEditorTool</name>
+ <message>
+ <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+67"/>
+ <source>Edit Widgets</source>
+ <translation>Upravit prvky</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::WidgetFactory</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+263"/>
+ <source>The custom widget factory registered for widgets of class %1 returned 0.</source>
+ <translation>Závod pro uživatelsky stanovené prvky tÅ™Ãdy %1 vrátil zpÄ›t 0.</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>A class name mismatch occurred when creating a widget using the custom widget factory registered for widgets of class %1. It returned a widget of class %2.</source>
+ <translation>PÅ™i vytvářenà prvku byly zjiÅ¡tÄ›ny odporujÃcà si názvy tÅ™Ãd: Závod pro uživatelsky stanovené prvky tÅ™Ãdy %1 vrátil zpÄ›t prvek tÅ™Ãdy %2.</translation>
+ </message>
+ <message>
+ <location line="+189"/>
+ <source>The current page of the container '%1' (%2) could not be determined while creating a layout.This indicates an inconsistency in the ui-file, probably a layout being constructed on a container widget.</source>
+ <translation>PÅ™i vytvářenà rozvrženà se nepodaÅ™ilo urÄit nynÄ›jšà stránku kontejneru '%1' (%2). To naznaÄuje jistou nesrovnalost v souboru s rozhranÃm; pravdÄ›podobnÄ› bylo rozvrženà postaveno pÅ™Ãmo na prvku kontejneru.</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Attempt to add a layout to a widget '%1' (%2) which already has an unmanaged layout of type %3.
+This indicates an inconsistency in the ui-file.</source>
+ <translation>Pokus o pÅ™idánà rozvrženà na prvek '%1' (%2), který již má nespravované rozvrženà typu %3. To naznaÄuje jistou nesrovnalost v souboru s rozhranÃm.</translation>
+ </message>
+ <message>
+ <location line="+211"/>
+ <source>Cannot create style '%1'.</source>
+ <translation>Nepodařilo se vytvořit styl '%1'.</translation>
+ </message>
+ <message>
+ <location line="-354"/>
+ <source>%1 Widget</source>
+ <translation>%1 prvek</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::WizardContainerWidgetTaskMenu</name>
+ <message>
+ <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="-49"/>
+ <source>Next</source>
+ <translation>DalÅ¡Ã</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Back</source>
+ <translation>Zpět</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ZoomMenu</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+84"/>
+ <source>%1 %</source>
+ <extracomment>Zoom factor</extracomment>
+ <translation>%1 %</translation>
+ </message>
+</context>
+<context>
+ <name>qdesigner_internal::ZoomablePreviewDeviceSkin</name>
+ <message>
+ <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="-270"/>
+ <source>&Zoom</source>
+ <translation>&Zvětšit</translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/linguist_cs.ts Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2023 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs_CZ">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1357"/>
+ <source>Qt Linguist</source>
+ <translation>Qt Linguist</translation>
+ </message>
+</context>
+<context>
+ <name>BatchTranslationDialog</name>
+ <message>
+ <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+79"/>
+ <source>Batch Translation of '%1' - Qt Linguist</source>
+ <translation>Automatický překlad '%1' - Qt Linguist</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>Searching, please wait...</source>
+ <translation>Hledá se, Äekejte, prosÃm...</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>&Cancel</source>
+ <translation>&Zrušit</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Linguist batch translator</source>
+ <translation>Automatický překladatel (Linguist)</translation>
+ </message>
+ <message numerus="yes">
+ <location line="+1"/>
+ <source>Batch translated %n entries</source>
+ <translation>
+ <numerusform>1 záznam byl automaticky přeložen</numerusform>
+ <numerusform>%n záznamy byly automaticky přeloženy</numerusform>
+ <numerusform>%n záznamů bylo automaticky přeloženo</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/batchtranslation.ui"/>
+ <source>Qt Linguist - Batch Translation</source>
+ <translation>Qt Linguist - Automatický překlad</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Options</source>
+ <translation>Volby</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Set translated entries to finished</source>
+ <translation>OznaÄit pÅ™eložené záznamy jako hotové</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Retranslate entries with existing translation</source>
+ <translation>Znovu pÅ™eložit záznamy s již existujÃcÃm pÅ™ekladem</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Translate also finished entries</source>
+ <translation>Přeložit i hotové záznamy</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Phrase book preference</source>
+ <translation>SlovnÃky</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move up</source>
+ <translation>Posunout nahoru</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move down</source>
+ <translation>Posunout dolů</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Run</source>
+ <translation>&Provést</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Note that the modified entries will be reset to unfinished if 'Set translated entries to finished' above is unchecked</source>
+ <translation>VÅ¡imnÄ›te si, že zmÄ›nÄ›né záznamy budou znovu nastaveny na nevyÅ™Ãzené, pokud nenà zapnuto nahoÅ™e zmÃnÄ›né nastavenà 'OznaÄit pÅ™eložené záznamy jako hotové'</translation>
+ </message>
+ <message>
+ <location/>
+ <source>The batch translator will search through the selected phrase books in the order given above</source>
+ <translation>Automatický pÅ™ekladatel bude prohledávat vybrané slovnÃky v poÅ™adà uvedeném výše</translation>
+ </message>
+</context>
+<context>
+ <name>DataModel</name>
+ <message>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+214"/>
+ <source><qt>Duplicate messages found in '%1':</source>
+ <translation><qt>VÃcekrát existujÃcà hlášenà v '%1':</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source><p>[more duplicates omitted]</source>
+ <translation><p>[vypuÅ¡tÄ›ny dalšà vÃcekrát existujÃcà zprávy]</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source><p>* Context: %1<br>* Source: %2</source>
+ <translation><p>* Souvislosti: %1<br>* Zdroj: %2</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source><br>* Comment: %3</source>
+ <translation><br>* Poznámka: %3</translation>
+ </message>
+ <message>
+ <location line="+70"/>
+ <source>Linguist does not know the plural rules for '%1'.
+Will assume a single universal form.</source>
+ <translation>Pravidla pro tvoÅ™enà množného ÄÃsla (plurálu) jazyka '%1' nejsou v Linguistu stanovena.
+Pracuje se s jednoduchým všeobecným tvarem.</translation>
+ </message>
+ <message>
+ <location line="+56"/>
+ <source>Cannot create '%2': %1</source>
+ <translation>'%2' nemůže být vytvořen: %1</translation>
+ </message>
+ <message>
+ <location line="+56"/>
+ <source>Universal Form</source>
+ <translation>Všeobecný tvar</translation>
+ </message>
+</context>
+<context>
+ <name>ErrorsView</name>
+ <message>
+ <location filename="../tools/linguist/linguist/errorsview.cpp" line="+76"/>
+ <source>Accelerator possibly superfluous in translation.</source>
+ <translation>V textu pÅ™ekladu je možná pÅ™ebyteÄný akcelerátor.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Accelerator possibly missing in translation.</source>
+ <translation>V textu překladu možná chybà akcelerátor.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Translation does not end with the same punctuation as the source text.</source>
+ <translation>InterpunkÄnà znaménko na konci textu pÅ™ekladu se lišà od interpunkce zdrojového textu.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>A phrase book suggestion for '%1' was ignored.</source>
+ <translation>Na návrh slovnÃku pro '%1' nebyl brán zÅ™etel.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Translation does not refer to the same place markers as in the source text.</source>
+ <translation>Držitelé mÃsta v textu pÅ™ekladu a ve zdrojovém textu se liÅ¡Ã.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Translation does not contain the necessary %n place marker.</source>
+ <translation>PotÅ™ebný držitel mÃsta (%n) v pÅ™ekladu chybÃ.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Unknown error</source>
+ <translation>Neznámá chyba</translation>
+ </message>
+</context>
+<context>
+ <name>FindDialog</name>
+ <message>
+ <location filename="../tools/linguist/linguist/finddialog.ui"/>
+ <source>This window allows you to search for some text in the translation source file.</source>
+ <translation>Toto okno vám umožňuje hledánà textu ve zdrojovém souboru s překladem.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Type in the text to search for.</source>
+ <translation>Zadejte text, který se má hledat.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Options</source>
+ <translation>Volby</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Source texts are searched when checked.</source>
+ <translation>Když je zapnuto, hledá se ve zdrojových textech.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Translations are searched when checked.</source>
+ <translation>Když je zapnuto, hledá se v překladech.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Texts such as 'TeX' and 'tex' are considered as different when checked.</source>
+ <translation>Když je zapnuto, texty jako 'TeX' a 'tex' se považujà za rozdÃlné.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Comments and contexts are searched when checked.</source>
+ <translation>Když je zapnuto, prohledávajà se poznámky a souvislosti.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Find</source>
+ <translation>Hledat</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Find what:</source>
+ <translation>&Vzor hledánÃ:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Source texts</source>
+ <translation>&Zdrojové texty</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Translations</source>
+ <translation>&Překlady</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Match case</source>
+ <translation>&Dbát na psanà velkých a malých pÃsmen</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Comments</source>
+ <translation>&Poznámky</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ignore &accelerators</source>
+ <translation>Nedbat na &akcelerátory</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Click here to find the next occurrence of the text you typed in.</source>
+ <translation>KlepnÄ›te sem pro skok k dalÅ¡Ãmu výskytu hledáného textu.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Find Next</source>
+ <translation>Hledat dál</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Click here to close this window.</source>
+ <translation>Klepněte sem pro zavřenà tohoto okna.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/finddialog.cpp" line="+12"/>
+ <source></source>
+ <comment>Choose Edit|Find from the menu bar or press Ctrl+F to pop up the Find dialog</comment>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>FormMultiWidget</name>
+ <message>
+ <location filename="../tools/linguist/linguist/messageeditorwidgets.cpp" line="+296"/>
+ <source>Alt+Delete</source>
+ <extracomment>translate, but don't change</extracomment>
+ <translation>Alt+Delete</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Shift+Alt+Insert</source>
+ <extracomment>translate, but don't change</extracomment>
+ <translation>Shift+Alt+Insert</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Alt+Insert</source>
+ <extracomment>translate, but don't change</extracomment>
+ <translation>Alt+Insert</translation>
+ </message>
+ <message>
+ <location line="+131"/>
+ <source>Confirmation - Qt Linguist</source>
+ <translation>Potvrzenà - Qt Linguist</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Delete non-empty length variant?</source>
+ <translation>Smazat vyplněnou obměnu délky?</translation>
+ </message>
+</context>
+<context>
+ <name>LRelease</name>
+ <message numerus="yes">
+ <location filename="../tools/linguist/shared/qm.cpp" line="+748"/>
+ <source>Dropped %n message(s) which had no ID.</source>
+ <translation>
+ <numerusform>Byl smazán záznam bez identifikátoru.</numerusform>
+ <numerusform>Byly smazány %n záznamy bez identifikátoru.</numerusform>
+ <numerusform>Byly smazány %n záznamy bez identifikátoru.</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location line="+4"/>
+ <source>Excess context/disambiguation dropped from %n message(s).</source>
+ <translation>
+ <numerusform>U jednoho záznamu byla odstranÄ›na pÅ™ebyteÄná souvislost pÅ™ÃpadnÄ› pÅ™ebyteÄné zabránÄ›nà dvojznaÄnosti (pÅ™ebyteÄná informace k rozhodovánÃ).</numerusform>
+ <numerusform>U %n záznamů byla odstranÄ›na pÅ™ebyteÄná souvislost pÅ™ÃpadnÄ› pÅ™ebyteÄné zabránÄ›nà dvojznaÄnosti (pÅ™ebyteÄná informace k rozhodovánÃ).</numerusform>
+ <numerusform>U %n záznamů byla odstranÄ›na pÅ™ebyteÄná souvislost pÅ™ÃpadnÄ› pÅ™ebyteÄné zabránÄ›nà dvojznaÄnosti (pÅ™ebyteÄná informace k rozhodovánÃ).</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location line="+8"/>
+ <source> Generated %n translation(s) (%1 finished and %2 unfinished)
+</source>
+ <translation>
+ <numerusform> Byl vytvoÅ™en jeden pÅ™eklad (%1 dokonÄeno %2 nedokonÄeno)
+</numerusform>
+ <numerusform> Byly vytvoÅ™eny %n pÅ™eklady (%1 dokonÄeno %2 nedokonÄeno)
+</numerusform>
+ <numerusform> Byly vytvoÅ™eny %n pÅ™eklady (%1 dokonÄeno %2 nedokonÄeno)
+</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location line="+4"/>
+ <source> Ignored %n untranslated source text(s)
+</source>
+ <translation>
+ <numerusform> Na jeden nepřeložený text nebyl brán zřetel
+</numerusform>
+ <numerusform> na %n nepřeložené texty nebyl brán zřetel
+</numerusform>
+ <numerusform> na %n nepřeložené texty nebyl brán zřetel
+</numerusform>
+ </translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+ <source>MainWindow</source>
+ <translation>Hlavnà okno</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Phrases</source>
+ <translation>&SlovnÃky</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Close Phrase Book</source>
+ <translation>&ZavÅ™Ãt slovnÃk</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Edit Phrase Book</source>
+ <translation>&Upravit slovnÃk</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Print Phrase Book</source>
+ <translation>&Vytisknout slovnÃk</translation>
+ </message>
+ <message>
+ <location/>
+ <source>V&alidation</source>
+ <translation>&SchválenÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&View</source>
+ <translation>&Pohled</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Vie&ws</source>
+ <translation>Po&hledy</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Toolbars</source>
+ <translation>&Nástrojové lišty</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Help</source>
+ <translation>&Nápověda</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Translation</source>
+ <translation>&Překlad</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&File</source>
+ <translation>&Soubor</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Edit</source>
+ <translation>Ú&pravy</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Open...</source>
+ <translation>&OtevÅ™Ãt...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Open a Qt translation source file (TS file) for editing</source>
+ <translation>OtevÅ™Ãt Qt zdrojový soubor s pÅ™ekladem (soubor TS) pro úpravy</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+O</source>
+ <translation>Ctrl+O</translation>
+ </message>
+ <message>
+ <location/>
+ <source>E&xit</source>
+ <translation>&UkonÄit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Close this window and exit.</source>
+ <translation>Toto okno zavÅ™Ãt a ukonÄit.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+Q</source>
+ <translation>Ctrl+Q</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+646"/>
+ <location line="+15"/>
+ <source>&Save</source>
+ <translation>&Uložit</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+ <source>Save changes made to this Qt translation source file</source>
+ <translation>Uložit změny provedené v tomto Qt zdrojovém souboru s překladem</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move to the previous unfinished item.</source>
+ <translation>JÃt na pÅ™edchozà nevyÅ™Ãzený záznam.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move to the next unfinished item.</source>
+ <translation>JÃt na dalšà nevyÅ™Ãzený záznam.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move to the previous item.</source>
+ <translation>JÃt na pÅ™edchozà záznam.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move to the next item.</source>
+ <translation>JÃt na dalšà záznam.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Mark this item as done and move to the next unfinished item.</source>
+ <translation>OznaÄit tento záznam jako hotový a jÃt na dalšà nevyÅ™Ãzený záznam.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Copy from source text</source>
+ <translation>PÅ™evzÃt zdrojový text</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Toggle the validity check of accelerators, i.e. whether the number of ampersands in the source and translation text is the same. If the check fails, a message is shown in the warnings window.</source>
+ <translation>Zapnout/Vypnout ověřenà akcelerátorů, to znamená, zda se shoduje poÄet znaků obchodnického -A (&) ve zdrojovém textu a v textu pÅ™ekladu. V pÅ™ÃpadÄ› neúspÄ›chu se v oknÄ› s upozornÄ›nÃmi ukáže zpráva s varovánÃm.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Toggle the validity check of ending punctuation. If the check fails, a message is shown in the warnings window.</source>
+ <translation>Zapnout/Vypnout ověřenà znaku na konci vÄ›ty na konci textu. V pÅ™ÃpadÄ› neúspÄ›chu se v oknÄ› s upozornÄ›nÃmi ukáže zpráva s varovánÃm.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Toggle checking that phrase suggestions are used. If the check fails, a message is shown in the warnings window.</source>
+ <translation>Zapnout/Vypnout ověřenà použità návrhů slovnÃku. V pÅ™ÃpadÄ› neúspÄ›chu se v oknÄ› s upozornÄ›nÃmi ukáže zpráva s varovánÃm.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Toggle the validity check of place markers, i.e. whether %1, %2, ... are used consistently in the source text and translation text. If the check fails, a message is shown in the warnings window.</source>
+ <translation>Zapnout/Vypnout ověřenà držitelů mÃsta, to znamená, zda se shoduje použÃvánà %1, %2,... ve zdrojovém textu a v textu pÅ™ekladu. V pÅ™ÃpadÄ› neúspÄ›chu se v oknÄ› s upozornÄ›nÃmi ukáže zpráva s varovánÃm.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Open Read-O&nly...</source>
+ <translation>OtevÅ™Ãt pouze &pro ÄtenÃ...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Save All</source>
+ <translation>&Uložit vše</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+S</source>
+ <translation>Ctrl+S</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-14"/>
+ <location line="+11"/>
+ <source>Save &As...</source>
+ <translation>Uložit &jako...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Save As...</source>
+ <translation>Uložit jako...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Save changes made to this Qt translation source file into a new file.</source>
+ <translation>Uložit změny provedené v tomto Qt zdrojovém souboru s překladem do nového souboru.</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+4"/>
+ <source>&Release</source>
+ <translation>&Vydat</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+ <source>Create a Qt message file suitable for released applications from the current message file.</source>
+ <translation>VytvoÅ™it Qt soubor se zprávami vhodný pro vydané aplikace (soubor QM) ze souÄasného souboru s pÅ™ekladem.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Print...</source>
+ <translation>&Tisk...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+P</source>
+ <translation>Ctrl+P</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Undo</source>
+ <translation>&Zpět</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Recently Opened &Files</source>
+ <translation>Naposledy upravované sou&bory</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Save</source>
+ <translation>Uložit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Print a list of all the translation units in the current translation source file.</source>
+ <translation>Vytisknout seznam se vÅ¡emi pÅ™ekladovými jednotkami v souÄasném zdrojovém souboru s pÅ™ekladem.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Undo the last editing operation performed on the current translation.</source>
+ <translation>Poslednà zmÄ›nu provedenou v souÄasném pÅ™ekladu vrátit zpÄ›t.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+Z</source>
+ <translation>Ctrl+Z</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Redo</source>
+ <translation>&Znovu</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Redo an undone editing operation performed on the translation.</source>
+ <translation>Poslednà zpět vrácenou změnu v překladu provést znovu.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+Y</source>
+ <translation>Ctrl+Y</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Cu&t</source>
+ <translation>&Vyjmout</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Copy the selected translation text to the clipboard and deletes it.</source>
+ <translation>ZkopÃrovat vybraný text s pÅ™ekladem do schránky a smazat jej.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+X</source>
+ <translation>Ctrl+X</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Copy</source>
+ <translation>&KopÃrovat</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Copy the selected translation text to the clipboard.</source>
+ <translation>ZkopÃrovat vybraný text s pÅ™ekladem do schránky.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+C</source>
+ <translation>Ctrl+C</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Paste</source>
+ <translation>&Vložit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Paste the clipboard text into the translation.</source>
+ <translation>Vložit text ze schránky do překladu.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+V</source>
+ <translation>Ctrl+V</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Select &All</source>
+ <translation>Vybrat &vše</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Select the whole translation text.</source>
+ <translation>Vybrat celý text s překladem.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+A</source>
+ <translation>Ctrl+A</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Find...</source>
+ <translation>&Hledat...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Search for some text in the translation source file.</source>
+ <translation>Hledat text v souboru s překladem.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+F</source>
+ <translation>Ctrl+F</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Find &Next</source>
+ <translation>Hledat &dál</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Continue the search where it was left.</source>
+ <translation>PokraÄovat v hledánÃ.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>F3</source>
+ <translation>F3</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Prev Unfinished</source>
+ <translation>&PÅ™edchozà nevyÅ™Ãzený</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Close All</source>
+ <translation>&ZavÅ™Ãt vÅ¡e</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+W</source>
+ <translation>Ctrl+W</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+K</source>
+ <translation>Ctrl+K</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Next Unfinished</source>
+ <translation>&Dalšà nevyÅ™Ãzený</translation>
+ </message>
+ <message>
+ <location/>
+ <source>P&rev</source>
+ <translation>PÅ™ed&chozÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+Shift+K</source>
+ <translation>Ctrl+Shift+K</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ne&xt</source>
+ <translation>Da&lÅ¡Ã</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Done and Next</source>
+ <translation>&Hotovo a dalÅ¡Ã</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Copies the source text into the translation field.</source>
+ <translation>KopÃruje zdrojový text do pole s pÅ™ekladem.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+B</source>
+ <translation>Ctrl+B</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Accelerators</source>
+ <translation>&Akcelerátory</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Ending Punctuation</source>
+ <translation>&Interpunkce na konci</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Phrase matches</source>
+ <translation>&SlovnÃk</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Place &Marker Matches</source>
+ <translation>Držitel &mÃsta</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&New Phrase Book...</source>
+ <translation>&Nový slovnÃk...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Create a new phrase book.</source>
+ <translation>VytvoÅ™it nový slovnÃk.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+N</source>
+ <translation>Ctrl+N</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Open Phrase Book...</source>
+ <translation>&OtevÅ™Ãt slovnÃk...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Open a phrase book to assist translation.</source>
+ <translation>OtevÅ™Ãt slovnÃk kvůli podpoÅ™e pÅ™i pÅ™ekladu.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+H</source>
+ <translation>Ctrl+H</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Reset Sorting</source>
+ <translation>Řazenà &vrátit zpět</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Sort the items back in the same order as in the message file.</source>
+ <translation>SeÅ™adit záznamy ve stejném poÅ™adà jako v původnÃm souboru s pÅ™ekladem.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Display guesses</source>
+ <translation>Ukázat &návrhy</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Set whether or not to display translation guesses.</source>
+ <translation>Zapnout/Vypnout zobrazenà návrhů k překladu.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Statistics</source>
+ <translation>S&tatistika</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Display translation statistics.</source>
+ <translation>Ukázat statistiku k překladu.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Manual</source>
+ <translation>&PÅ™ÃruÄka</translation>
+ </message>
+ <message>
+ <location/>
+ <source>F1</source>
+ <translation>F1</translation>
+ </message>
+ <message>
+ <location/>
+ <source>About Qt Linguist</source>
+ <translation>O Qt Linguistu</translation>
+ </message>
+ <message>
+ <location/>
+ <source>About Qt</source>
+ <translation>O Qt</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Display information about the Qt toolkit by Trolltech.</source>
+ <translation>Zobrazit informace o sadě nástrojů Qt od Trolltechu.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&What's This?</source>
+ <translation>&Copak je asi toto?</translation>
+ </message>
+ <message>
+ <location/>
+ <source>What's This?</source>
+ <translation>Copak je asi toto?</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Enter What's This? mode.</source>
+ <translation>Zapnout režim "Copak je asi toto?".</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Shift+F1</source>
+ <translation>Shift+F1</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Search And Translate...</source>
+ <translation>Hledat a &překládat...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Replace the translation on all entries that matches the search source text.</source>
+ <translation>Nahradit pÅ™eklad u vÅ¡ech záznamů, které odpovÃdajà hledanému textu.</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+21"/>
+ <source>&Batch Translation...</source>
+ <translation>&Automatický překlad...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Batch translate all entries using the information in the phrase books.</source>
+ <translation>Automaticky pÅ™eložit vÅ¡echny záznamy s pomocà slovnÃků.</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-34"/>
+ <location line="+10"/>
+ <source>Release As...</source>
+ <translation>Vydat jako...</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-2004"/>
+ <source></source>
+ <comment>This is the application's main window.</comment>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+188"/>
+ <source>Source text</source>
+ <translation>Zdrojový text</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <location line="+25"/>
+ <source>Index</source>
+ <translation>RejstÅ™Ãk</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <location line="+62"/>
+ <source>Context</source>
+ <translation>Souvislosti</translation>
+ </message>
+ <message>
+ <location line="-61"/>
+ <source>Items</source>
+ <translation>Záznamy</translation>
+ </message>
+ <message>
+ <location line="+78"/>
+ <source>This panel lists the source contexts.</source>
+ <translation>V tomto panelu jsou ukazovány souvislosti.</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Strings</source>
+ <translation>Řetězce</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Phrases and guesses</source>
+ <translation>SlovnÃk a návrhy</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Sources and Forms</source>
+ <translation>Zdrojové soubory a formuláře</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Warnings</source>
+ <translation>UpozornÄ›nÃ</translation>
+ </message>
+ <message>
+ <location line="+59"/>
+ <source> MOD </source>
+ <comment>status bar: file(s) modified</comment>
+ <translation>Změněno</translation>
+ </message>
+ <message>
+ <location line="+130"/>
+ <source>Loading...</source>
+ <translation>Nahrává se...</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <location line="+22"/>
+ <source>Loading File - Qt Linguist</source>
+ <translation>Nahrává se soubor - Qt Linguist</translation>
+ </message>
+ <message>
+ <location line="-21"/>
+ <source>The file '%1' does not seem to be related to the currently open file(s) '%2'.
+
+Close the open file(s) first?</source>
+ <translation>Nezdá se, že by soubor '%1' souvisel s již otevřenými soubory '%2'.
+
+ZavÅ™Ãt nejprve již otevÅ™ený soubor(y)?</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>The file '%1' does not seem to be related to the file '%2' which is being loaded as well.
+
+Skip loading the first named file?</source>
+ <translation>Nezdá se, že by soubor '%1' souvisel s již otevřeným souborem '%2', který je rovněž nahrán.
+
+PÅ™eskoÄit nahrávánà prve jmenovaného souboru?</translation>
+ </message>
+ <message numerus="yes">
+ <location line="+61"/>
+ <source>%n translation unit(s) loaded.</source>
+ <translation>
+ <numerusform>Nahrána jedna překladová jednotka.</numerusform>
+ <numerusform>Nahrány %n překladové jednotky.</numerusform>
+ <numerusform>Nahrány %n překladové jednotky.</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location line="+93"/>
+ <source>Related files (%1);;</source>
+ <translation>PÅ™Ãbuzné soubory (%1);;</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Open Translation Files</source>
+ <translation>OtevÅ™Ãt soubory s pÅ™eklady</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+31"/>
+ <source>File saved.</source>
+ <translation>Soubor uložen.</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+15"/>
+ <location line="+1165"/>
+ <source>Release</source>
+ <translation>Vydat</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1164"/>
+ <source>Qt message files for released applications (*.qm)
+All files (*)</source>
+ <translation>Qt soubory se zprávami pro vydané aplikace (*.qm)
+Všechny soubory (*)</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location line="+12"/>
+ <source>File created.</source>
+ <translation>Soubor vytvořen.</translation>
+ </message>
+ <message>
+ <location line="+34"/>
+ <location line="+355"/>
+ <source>Printing...</source>
+ <translation>Tisk...</translation>
+ </message>
+ <message>
+ <location line="-347"/>
+ <source>Context: %1</source>
+ <translation>Souvislosti: %1</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>finished</source>
+ <translation>vyÅ™Ãzeno</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>unresolved</source>
+ <translation>nevyřešeno</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>obsolete</source>
+ <translation>zastaralé</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <location line="+307"/>
+ <source>Printing... (page %1)</source>
+ <translation>Tisk... (strana %1)</translation>
+ </message>
+ <message>
+ <location line="-300"/>
+ <location line="+307"/>
+ <source>Printing completed</source>
+ <translation>Tisk dokonÄen</translation>
+ </message>
+ <message>
+ <location line="-305"/>
+ <location line="+307"/>
+ <source>Printing aborted</source>
+ <translation>Tisk zrušen</translation>
+ </message>
+ <message>
+ <location line="-232"/>
+ <source>Search wrapped.</source>
+ <translation>Hledánà zaÄÃná odshora.</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <location line="+278"/>
+ <location line="+34"/>
+ <location line="+24"/>
+ <location line="+22"/>
+ <location line="+516"/>
+ <location line="+1"/>
+ <location line="+274"/>
+ <location line="+40"/>
+ <location line="+10"/>
+ <source>Qt Linguist</source>
+ <translation>Qt Linguist</translation>
+ </message>
+ <message>
+ <location line="-1198"/>
+ <location line="+102"/>
+ <source>Cannot find the string '%1'.</source>
+ <translation>Nelze najÃt Å™etÄ›zec '%1'.</translation>
+ </message>
+ <message>
+ <location line="-82"/>
+ <source>Search And Translate in '%1' - Qt Linguist</source>
+ <translation>Hledat a překládat v '%1' - Qt Linguist</translation>
+ </message>
+ <message>
+ <location line="+34"/>
+ <location line="+23"/>
+ <location line="+24"/>
+ <source>Translate - Qt Linguist</source>
+ <translation>Překlad - Qt Linguist</translation>
+ </message>
+ <message numerus="yes">
+ <location line="-46"/>
+ <source>Translated %n entry(s)</source>
+ <translation>
+ <numerusform>Přeložen jeden záznam</numerusform>
+ <numerusform>Přeloženy %n záznamy</numerusform>
+ <numerusform>Přeloženy %n záznamy</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>No more occurrences of '%1'. Start over?</source>
+ <translation>Žádné dalšà výskyty '%1'. ZaÄÃt znovu?</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Create New Phrase Book</source>
+ <translation>VytvoÅ™it nový slovnÃk</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Qt phrase books (*.qph)
+All files (*)</source>
+ <translation>SlovnÃky Qt (*.qph)
+Všechny soubory (*)</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Phrase book created.</source>
+ <translation>SlovnÃk vytvoÅ™en.</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Open Phrase Book</source>
+ <translation>OtevÅ™Ãt slovnÃk</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Qt phrase books (*.qph);;All files (*)</source>
+ <translation>SlovnÃky Qt (*.qph);;VÅ¡echny soubory (*)</translation>
+ </message>
+ <message numerus="yes">
+ <location line="+7"/>
+ <source>%n phrase(s) loaded.</source>
+ <translation>
+ <numerusform>Nahrán jeden záznam ve slovnÃku.</numerusform>
+ <numerusform>Nahrány %n záznamy ve slovnÃku.</numerusform>
+ <numerusform>Nahrány %n záznamy ve slovnÃku.</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location line="+93"/>
+ <location line="+3"/>
+ <location line="+7"/>
+ <source>Add to phrase book</source>
+ <translation>PÅ™idat do slovnÃku</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <source>No appropriate phrasebook found.</source>
+ <translation>Nelze nalézt žádný pÅ™ÃsluÅ¡ný slovnÃk.</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Adding entry to phrasebook %1</source>
+ <translation>PÅ™idává se záznam do slovnÃku %1</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Select phrase book to add to</source>
+ <translation>Do kterého slovnÃku se má záznam pÅ™idat</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Unable to launch Qt Assistant (%1)</source>
+ <translation>Qt Assistant nelze spustit (%1)</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Version %1</source>
+ <translation>Verze %1</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source><center><img src=":/images/splash.png"/></img><p>%1</p></center><p>Qt Linguist is a tool for adding translations to Qt applications.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</source>
+ <translation><center><img src=":/images/splash.png"/></img><p>%1</p></center><p>Qt Linguist je nástrojem pro pÅ™idávánà pÅ™ekladů do aplikacà Qt.</p><p>Copyright (C) 2009 Nokia Corporation a/nebo jejà dceÅ™inná spoleÄnost(i).</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Do you want to save the modified files?</source>
+ <translation>Chcete uložit změněné soubory?</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>Do you want to save '%1'?</source>
+ <translation>Chcete uložit '%1'?</translation>
+ </message>
+ <message>
+ <location line="+43"/>
+ <source>Qt Linguist[*]</source>
+ <translation>Qt Linguist[*]</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>%1[*] - Qt Linguist</source>
+ <translation>%1[*] - Qt Linguist</translation>
+ </message>
+ <message>
+ <location line="+267"/>
+ <location line="+12"/>
+ <source>No untranslated translation units left.</source>
+ <translation>Nezbyly žádné nepřeložené překladové jednotky.</translation>
+ </message>
+ <message>
+ <location line="+176"/>
+ <source>&Window</source>
+ <translation>&Okno</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Minimize</source>
+ <translation>Zmenšit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ctrl+M</source>
+ <translation>Ctrl+M</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Display the manual for %1.</source>
+ <translation>Zobrazit pÅ™ÃruÄku k %1.</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Display information about %1.</source>
+ <translation>Zobrazit údaje o %1.</translation>
+ </message>
+ <message>
+ <location line="+70"/>
+ <source>&Save '%1'</source>
+ <translation>&Uložit '%1'</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Save '%1' &As...</source>
+ <translation>'%1' uložit &jako...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Release '%1'</source>
+ <translation>Vydat '%1'</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Release '%1' As...</source>
+ <translation>'%1' vydat jako...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&Close '%1'</source>
+ <translation>&ZavÅ™Ãt '%1'</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+13"/>
+ <source>&Close</source>
+ <translation>&ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <source>Save All</source>
+ <translation>Uložit vše</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1"/>
+ <source>&Release All</source>
+ <translation>&Vydat vše</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1"/>
+ <source>Close All</source>
+ <translation>ZavÅ™Ãt vÅ¡e</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Translation File &Settings for '%1'...</source>
+ <translation>Nastavenà &souboru s překladem pro '%1' ...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&Batch Translation of '%1'...</source>
+ <translation>&Automatický překlad '%1' ...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Search And &Translate in '%1'...</source>
+ <translation>Hledat a &překládat v '%1' ...</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Search And &Translate...</source>
+ <translation>Hledat a &překládat...</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+51"/>
+ <source>File</source>
+ <translation>Soubor</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+7"/>
+ <source>Edit</source>
+ <translation>Úpravy</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+6"/>
+ <source>Translation</source>
+ <translation>Překlad</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+6"/>
+ <source>Validation</source>
+ <translation>SchválenÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+7"/>
+ <source>Help</source>
+ <translation>Nápověda</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+84"/>
+ <source>Cannot read from phrase book '%1'.</source>
+ <translation>Nelze ÄÃst ze slovnÃku '%1'.</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Close this phrase book.</source>
+ <translation>Tento slovnÃk zavÅ™Ãt.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Enables you to add, modify, or delete entries in this phrase book.</source>
+ <translation>Umožnà vložit, mÄ›nit nebo odstranit záznamy z tohoto slovnÃku.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Print the entries in this phrase book.</source>
+ <translation>Vytisknout záznamy z tohoto slovnÃku.</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Cannot create phrase book '%1'.</source>
+ <translation>Nelze vytvoÅ™it slovnÃk '%1'.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Do you want to save phrase book '%1'?</source>
+ <translation>Chcete uložit slovnÃk '%1'?</translation>
+ </message>
+ <message>
+ <location line="+323"/>
+ <source>All</source>
+ <translation>Vše</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+ <source>Open/Refresh Form &Preview</source>
+ <translation>OtevÅ™Ãt/Obnovit &náhled na formulář</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Form Preview Tool</source>
+ <translation>Nástroj pro náhled na formulář</translation>
+ </message>
+ <message>
+ <location/>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-536"/>
+ <source>Translation File &Settings...</source>
+ <translation>&Nastavenà souboru s překladem...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Add to Phrase Book</source>
+ <translation>&PÅ™idat do slovnÃku</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+T</source>
+ <translation>Ctrl+T</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+J</source>
+ <translation>Ctrl+J</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Ctrl+Shift+J</source>
+ <translation>Ctrl+Shift+J</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Previous unfinished item</source>
+ <translation>PÅ™edchozà nevyÅ™Ãzený záznam</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Next unfinished item</source>
+ <translation>Dalšà nevyÅ™Ãzený záznam</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Move to previous item</source>
+ <translation>JÃt na pÅ™edchozà záznam</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Next item</source>
+ <translation>Dalšà záznam</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Mark item as done and move to the next unfinished item</source>
+ <translation>OznaÄit záznam jako vyÅ™Ãzený a jÃt na dalšà nevyÅ™Ãzený záznam</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Copies the source text into the translation field</source>
+ <translation>KopÃruje zdrojový text do pole s pÅ™ekladem</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Toggle the validity check of accelerators</source>
+ <translation>Zapnout/Vypnout ověřenà akcelerátorů</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Toggle the validity check of ending punctuation</source>
+ <translation>Zapnout/Vypnout ověřenà znaku na konci věty na konci textu</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Toggle checking that phrase suggestions are used</source>
+ <translation>Zapnout/Vypnout ověřenà použità záznamů ze slovnÃku</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Toggle the validity check of place markers</source>
+ <translation>Zapnout/Vypnout ověřenà držitelů mÃsta</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Create a Qt message file suitable for released applications from the current message file. The filename will automatically be determined from the name of the TS file.</source>
+ <translation>VytvoÅ™it z nynÄ›jÅ¡Ãho pÅ™ekladového souboru soubor s hlášenÃmi Qt vhodný pro vydané aplikace. Název souboru bude automaticky odvozen z názvu souboru TS.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Length Variants</source>
+ <translation>Varianty délky</translation>
+ </message>
+</context>
+<context>
+ <name>MessageEditor</name>
+ <message>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+42"/>
+ <source></source>
+ <comment>This is the right panel of the main window.</comment>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Russian</source>
+ <translation>Ruský</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>German</source>
+ <translation>Německý</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Japanese</source>
+ <translation>Japonský</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>French</source>
+ <translation>Francouzský</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Polish</source>
+ <translation>Polský</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Chinese</source>
+ <translation>ÄŒÃnský</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>This whole panel allows you to view and edit the translation of some source text.</source>
+ <translation>Celý tento panel umožňuje zobrazenà a úpravy překladu zdrojového textu.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Source text</source>
+ <translation>Zdrojový text</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>This area shows the source text.</source>
+ <translation>Tato oblast ukazuje zdrojový text.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Source text (Plural)</source>
+ <translation>Zdrojový text (Plural)</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>This area shows the plural form of the source text.</source>
+ <translation>Tato oblast ukazuje množné ÄÃslo zdrojového textu.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Developer comments</source>
+ <translation>Vývojářovy poznámky</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>This area shows a comment that may guide you, and the context in which the text occurs.</source>
+ <translation>Tato oblast ukazuje pÅ™Ãpadn poznámky, jež vás mohou vést, a souvislosti, v nichž se text vyskytuje.</translation>
+ </message>
+ <message>
+ <location line="+59"/>
+ <source>Here you can enter comments for your own use. They have no effect on the translated applications.</source>
+ <translation>Sem můžete vepsat poznámky urÄené pro vaÅ¡e vlastnà použitÃ. Na pÅ™eklad nemajà žádný vliv.</translation>
+ </message>
+ <message>
+ <location line="+232"/>
+ <source>%1 translation (%2)</source>
+ <translation>Překlad %1 (%2)</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>This is where you can enter or modify the translation of the above source text.</source>
+ <translation>Tady můžete zadávat nebo měnit překlad zdrojového textu.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>%1 translation</source>
+ <translation>Překlad %1</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>%1 translator comments</source>
+ <translation>%1 překladatelovy poznámky</translation>
+ </message>
+ <message>
+ <location line="+157"/>
+ <source>'%1'
+Line: %2</source>
+ <translation>'%1'
+Řádek: %2</translation>
+ </message>
+</context>
+<context>
+ <name>MessageModel</name>
+ <message>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/>
+ <source>Completion status for %1</source>
+ <translation>Stav zpracovánà %1</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source><file header></source>
+ <translation><hlaviÄka souboru></translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source><context comment></source>
+ <translation><souvisejÃcà poznámka></translation>
+ </message>
+ <message>
+ <location line="+71"/>
+ <source><unnamed context></source>
+ <translation><nepojmenovaná souvislost></translation>
+ </message>
+</context>
+<context>
+ <name>MsgEdit</name>
+ <message>
+ <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-614"/>
+ <source></source>
+ <comment>This is the right panel of the main window.</comment>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>PhraseBookBox</name>
+ <message>
+ <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+12"/>
+ <source></source>
+ <comment>Go to Phrase > Edit Phrase Book... The dialog that pops up is a PhraseBookBox.</comment>
+ <translation></translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>(New Entry)</source>
+ <translation>(Nový záznam)</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>%1[*] - Qt Linguist</source>
+ <translation>%1[*] - Qt Linguist</translation>
+ </message>
+ <message>
+ <location line="+90"/>
+ <source>Qt Linguist</source>
+ <translation>Qt Linguist</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Cannot save phrase book '%1'.</source>
+ <translation>Nelze uložit slovnÃk '%1'.</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/phrasebookbox.ui"/>
+ <source>Edit Phrase Book</source>
+ <translation>Upravit slovnÃk</translation>
+ </message>
+ <message>
+ <location/>
+ <source>This window allows you to add, modify, or delete entries in a phrase book.</source>
+ <translation>Toto okno vám umožnà vložit, mÄ›nit nebo odstranit záznamy z tohoto slovnÃku.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Translation:</source>
+ <translation>&Překlad:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>This is the phrase in the target language corresponding to the source phrase.</source>
+ <translation>Toto je text, který v cÃlovém jazyce odpovÃdá zdrojovému textu.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>S&ource phrase:</source>
+ <translation>&Zdrojový text:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>This is a definition for the source phrase.</source>
+ <translation>Toto je vymezenà zdrojového textu.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>This is the phrase in the source language.</source>
+ <translation>Toto je text ve zdrojovém jazyce.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Definition:</source>
+ <translation>&VymezenÃ:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Click here to add the phrase to the phrase book.</source>
+ <translation>Sem klepnÄ›te kvůli vloženà nového záznamu do slovnÃku.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&New Entry</source>
+ <translation>&Nový záznam</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Click here to remove the entry from the phrase book.</source>
+ <translation>Sem klepnÄ›te kvůli odstranÄ›nà nového záznamu ze slovnÃku.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Remove Entry</source>
+ <translation>&Odstranit záznam</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Settin&gs...</source>
+ <translation>&NastavenÃ...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Click here to save the changes made.</source>
+ <translation>Sem klepněte kvůli uloženà provedených změn.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Save</source>
+ <translation>&Uložit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Click here to close this window.</source>
+ <translation>Sem klepněte kvůli zavřenà tohoto okna.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+</context>
+<context>
+ <name>PhraseModel</name>
+ <message>
+ <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+117"/>
+ <source>Source phrase</source>
+ <translation>Zdrojový text</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Translation</source>
+ <translation>Překlad</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Definition</source>
+ <translation>VymezenÃ</translation>
+ </message>
+</context>
+<context>
+ <name>PhraseView</name>
+ <message>
+ <location filename="../tools/linguist/linguist/phraseview.cpp" line="+122"/>
+ <source>Insert</source>
+ <translation>Vložit</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Edit</source>
+ <translation>Upravit</translation>
+ </message>
+ <message>
+ <location line="+113"/>
+ <source>Guess (%1)</source>
+ <translation>Návrh (%1)</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Guess</source>
+ <translation>Návrh</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../tools/linguist/shared/qm.cpp" line="+12"/>
+ <source>Compiled Qt translations</source>
+ <translation>Sestavené překlady Qt</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1280"/>
+ <source>Translation files (%1);;</source>
+ <translation>Překladové soubory (%1);;</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>All files (*)</source>
+ <translation>Všechny soubory (*)</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1118"/>
+ <location line="+18"/>
+ <location line="+67"/>
+ <location line="+39"/>
+ <location line="+17"/>
+ <location line="+15"/>
+ <location filename="../tools/linguist/linguist/phrase.cpp" line="+196"/>
+ <source>Qt Linguist</source>
+ <translation>Qt Linguist</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/shared/po.cpp" line="+658"/>
+ <source>GNU Gettext localization files</source>
+ <translation>Překladové soubory GNU Gettext</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/shared/ts.cpp" line="+752"/>
+ <source>Qt translation sources (format 1.1)</source>
+ <translation>Překladové soubory Qt (verze formátu 1.1)</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Qt translation sources (format 2.0)</source>
+ <translation>Překladové soubory Qt (verze formátu 2.0)</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Qt translation sources (latest format)</source>
+ <translation>Překladové soubory Qt (nejnovějšà formát)</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/shared/xliff.cpp" line="+827"/>
+ <source>XLIFF localization files</source>
+ <translation>Překladové soubory XLIFF</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/shared/qph.cpp" line="+183"/>
+ <source>Qt Linguist 'Phrase Book'</source>
+ <translation>SlovnÃk Qt Linguist</translation>
+ </message>
+</context>
+<context>
+ <name>SourceCodeView</name>
+ <message>
+ <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+70"/>
+ <source><i>Source code not available</i></source>
+ <translation><i>Zdrojový text nenà dostupný</i></translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source><i>File %1 not available</i></source>
+ <translation><i>Soubor %1 nenà dostupný</i></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source><i>File %1 not readable</i></source>
+ <translation><i>Soubor %1 nenà Äitelný</i></translation>
+ </message>
+</context>
+<context>
+ <name>Statistics</name>
+ <message>
+ <location filename="../tools/linguist/linguist/statistics.ui"/>
+ <source>Statistics</source>
+ <translation>Statistiky</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Translation</source>
+ <translation>Překlad</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Source</source>
+ <translation>Zdroj</translation>
+ </message>
+ <message>
+ <location/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Words:</source>
+ <translation>Slov:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Characters:</source>
+ <translation>Znaků:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Characters (with spaces):</source>
+ <translation>Znaků (s mezerami):</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+</context>
+<context>
+ <name>TranslateDialog</name>
+ <message>
+ <location filename="../tools/linguist/linguist/translatedialog.ui"/>
+ <source>This window allows you to search for some text in the translation source file.</source>
+ <translation>Toto okno vám umožňuje hledánà textu ve zdrojovém souboru s překladem.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Type in the text to search for.</source>
+ <translation>Zadejte text, který se má hledat.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Find &source text:</source>
+ <translation>Hledat &zdrojový text:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Translate to:</source>
+ <translation>&Překlad:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Search options</source>
+ <translation>Nastavenà hledánÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Texts such as 'TeX' and 'tex' are considered as different when checked.</source>
+ <translation>Když je zapnuto, texty jako 'TeX' a 'tex' se považujà za rozdÃlné.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Match &case</source>
+ <translation>Dbát na &psanà velkých a malých pÃsmen</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Mark new translation as &finished</source>
+ <translation>Nový pÅ™eklad oznaÄit jako &vyÅ™Ãzený</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Click here to find the next occurrence of the text you typed in.</source>
+ <translation>KlepnÄ›te sem pro skok k dalÅ¡Ãmu výskytu hledáného textu.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Find Next</source>
+ <translation>Hledat dál</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Translate</source>
+ <translation>Přeložit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Translate All</source>
+ <translation>Přeložit vše</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Click here to close this window.</source>
+ <translation>Klepněte sem pro zavřenà tohoto okna.</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+</context>
+<context>
+ <name>TranslationSettingsDialog</name>
+ <message>
+ <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/>
+ <source>Any Country</source>
+ <translation>ZemÄ›</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <location line="+8"/>
+ <source>Settings for '%1' - Qt Linguist</source>
+ <translation>Nastavenà pro '%1' - Qt Linguist</translation>
+ </message>
+ <message>
+ <location filename="../tools/linguist/linguist/translationsettings.ui"/>
+ <source>Source language</source>
+ <translation>Zdrojový jazyk</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Language</source>
+ <translation>Jazyk</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Country/Region</source>
+ <translation>ZemÄ›/Oblast</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Target language</source>
+ <translation>CÃlový jazyk</translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/qt_cs.ts Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,10362 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs_CZ">
+<context>
+ <name>AudioEqualizer</name>
+ <message>
+ <source>Frequency band, %1 Hz</source>
+ <translation type="obsolete">KmitoÄtové pásmo, %1 Hz</translation>
+ </message>
+</context>
+<context>
+ <name>AudioOutput</name>
+ <message>
+ <source><html>The audio playback device <b>%1</b> does not work.<br/>Falling back to <b>%2</b>.</html></source>
+ <translation type="obsolete"><html>ZaÅ™Ãzenà pro pÅ™ehrávánà zvuku <b>%1</b> nepracuje.<br/>MÃsto nÄ›j <b>%2</b> se použÃvá.</html></translation>
+ </message>
+ <message>
+ <source>Revert back to device '%1'</source>
+ <translation type="obsolete">PÅ™epnout zpÄ›t na zaÅ™Ãzenà '%1'</translation>
+ </message>
+ <message>
+ <source><html>Switching to the audio playback device <b>%1</b><br/>which just became available and has higher preference.</html></source>
+ <translation type="obsolete"><html>ZaÅ™Ãzenà pro pÅ™ehrávánà zvuku <b>%1</b> bylo spuÅ¡tÄ›no,<br/>protože je právÄ› dostupné a má vÄ›tšà pÅ™ednost.</html></translation>
+ </message>
+</context>
+<context>
+ <name>CloseButton</name>
+ <message>
+ <location filename="../src/gui/widgets/qtabbar.cpp" line="+2245"/>
+ <source>Close Tab</source>
+ <translation>ZavÅ™Ãt kartu</translation>
+ </message>
+</context>
+<context>
+ <name>FakeReply</name>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp" line="+2193"/>
+ <source>Fake error !</source>
+ <translation>Napodobená chyba!</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Invalid URL</source>
+ <translation>Neplátné URL</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/phonon/phononnamespace.cpp" line="+63"/>
+ <source>Games</source>
+ <translation>Hry</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>Music</source>
+ <translation>Hudba</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Video</source>
+ <translation>Video</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Communication</source>
+ <translation>SpojenÃ</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Accessibility</source>
+ <translation>Dostupnost</translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <source>Notifications</source>
+ <translation>OznámenÃ</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::AudioOutput</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+377"/>
+ <source><html>The audio playback device <b>%1</b> does not work.<br/>Falling back to <b>%2</b>.</html></source>
+ <translation><html>ZaÅ™Ãzenà pro pÅ™ehrávánà zvuku <b>%1</b> nepracuje.<br/>MÃsto nÄ›j <b>%2</b> se použÃvá.</html></translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source><html>Switching to the audio playback device <b>%1</b><br/>which just became available and has higher preference.</html></source>
+ <translation><html>ZaÅ™Ãzenà pro pÅ™ehrávánà zvuku <b>%1</b> bylo spuÅ¡tÄ›no,<br/>protože je právÄ› dostupné a má vÄ›tšà pÅ™ednost.</html></translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Revert back to device '%1'</source>
+ <translation>PÅ™epnout zpÄ›t na zaÅ™Ãzenà '%1'</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::Gstreamer::Backend</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+176"/>
+ <source>Warning: You do not seem to have the base GStreamer plugins installed.
+ All audio and video support has been disabled</source>
+ <translation>UpozornÄ›nÃ: Zdá se, že zákládnà pÅ™Ãdavné moduly pro GStreamer nejsou nainstalovány.
+Podpora audia a videa byla vypnuta</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>Warning: You do not seem to have the package gstreamer0.10-plugins-good installed.
+ Some video features have been disabled.</source>
+ <translation>VarovánÃ: BalÃÄek gstreamer0.10-plugins-good nenà nainstalován.
+Některé vlastnosti videa nejsou dostupné.</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::Gstreamer::MediaObject</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+884"/>
+ <location line="+8"/>
+ <location line="+15"/>
+ <location line="+22"/>
+ <location line="+6"/>
+ <location line="+19"/>
+ <location line="+339"/>
+ <location line="+24"/>
+ <source>Could not open media source.</source>
+ <translation>Zdroj s médii se nepodaÅ™ilo otevÅ™Ãt.</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Could not decode media source.</source>
+ <translation>Zdroj s médii se nepodařilo rozluštit.</translation>
+ </message>
+ <message>
+ <location line="-417"/>
+ <source>Invalid source type.</source>
+ <translation>Neplatný typ zdroje s médii.</translation>
+ </message>
+ <message>
+ <location line="-807"/>
+ <source>Cannot start playback.
+
+Check your Gstreamer installation and make sure you
+have libgstreamer-plugins-base installed.</source>
+ <translation>Přehrávánà nelze spustit.
+
+Ověřte, prosÃm, instalaci Gstreamer a ujistÄ›te se,
+že je nainstalován balÃÄek libgstreamer-plugins-base.</translation>
+ </message>
+ <message>
+ <location line="+1211"/>
+ <source>Could not open audio device. The device is already in use.</source>
+ <translation>Zvukové zaÅ™Ãzenà se nepodaÅ™ilo otevÅ™Ãt, protože se již použÃvá.</translation>
+ </message>
+ <message>
+ <location line="-1098"/>
+ <source>A required codec is missing. You need to install the following codec(s) to play this content: %0</source>
+ <translation>VÅ¡echny vyžadované kodeky nejsou nainstalovány. Kvůli pÅ™ehránà tohoto obsahu je potÅ™eba nainstalovat následujÃcà kodek(y): %0</translation>
+ </message>
+ <message>
+ <location line="+1088"/>
+ <source>Could not locate media source.</source>
+ <translation>Zdroj s médii se nepodařilo nalézt.</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/audiooutput.cpp" line="+108"/>
+ <source>Audio Output</source>
+ <translation>Výstup zvuku</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>The audio output device</source>
+ <translation>ZaÅ™Ãzenà pro výstup zvuku</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF::AudioEqualizer</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/audioequalizer.cpp" line="+75"/>
+ <source>Frequency band, %1 Hz</source>
+ <translation>KmitoÄtové pásmo, %1 Hz</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::MMF::EffectFactory</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/effectfactory.cpp" line="+65"/>
+ <source>audio equalizer</source>
+ <translation>zvukový ekvalizér</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Bass boost</source>
+ <translation>Zdůrazněnà basů</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Distance Attenuation</source>
+ <translation>Zeslabenà v závislosti na vzdálenosti</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location line="+2"/>
+ <source>Environmental Reverb</source>
+ <translation>Vnějšà ozvěna</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Loudness</source>
+ <translation>Hlasitost</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Source Orientation</source>
+ <translation>Zaměřenà zdroje</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Stereo Widening</source>
+ <translation>RozÅ¡ÃÅ™enà sterea</translation>
+ </message>
+</context>
+<context>
+ <name>Phonon::VolumeSlider</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/phonon/volumeslider.cpp" line="+42"/>
+ <location line="+18"/>
+ <location line="+129"/>
+ <location line="+15"/>
+ <source>Volume: %1%</source>
+ <translation>Hlasitost: %1%</translation>
+ </message>
+ <message>
+ <location line="-159"/>
+ <location line="+18"/>
+ <location line="+54"/>
+ <source>Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1%</source>
+ <translation>PosuvnÃk se použÃvá k nastavenà hlasitosti. Poloha nejvÃce vlevo odpovÃdá 0%; poloha nejvÃce vpravo odpovÃdá %1%</translation>
+ </message>
+ <message>
+ <location line="+67"/>
+ <source>Muted</source>
+ <translation>ZtlumenÃ</translation>
+ </message>
+</context>
+<context>
+ <name>Q3Accel</name>
+ <message>
+ <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
+ <source>%1, %2 not defined</source>
+ <translation>%1, %2 nejsou stanoveny</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Ambiguous %1 not handled</source>
+ <translation>NejednoznaÄné %1 nemohou být zpracovány</translation>
+ </message>
+</context>
+<context>
+ <name>Q3DataTable</name>
+ <message>
+ <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
+ <source>True</source>
+ <translation>Pravdivý</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>False</source>
+ <translation>Nesprávný</translation>
+ </message>
+ <message>
+ <location line="+507"/>
+ <source>Delete</source>
+ <translation>Smazat</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Insert</source>
+ <translation>Vložit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Update</source>
+ <translation>Obnovit</translation>
+ </message>
+</context>
+<context>
+ <name>Q3FileDialog</name>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+2426"/>
+ <location line="+2027"/>
+ <source>&OK</source>
+ <translation>&OK</translation>
+ </message>
+ <message>
+ <location line="-254"/>
+ <source>&No</source>
+ <translation>&Ne</translation>
+ </message>
+ <message>
+ <location line="-1557"/>
+ <source>Dir</source>
+ <translation>Adresář</translation>
+ </message>
+ <message>
+ <location line="+1557"/>
+ <source>&Yes</source>
+ <translation>&Ano</translation>
+ </message>
+ <message>
+ <location line="-1724"/>
+ <source>Back</source>
+ <translation>Zpět</translation>
+ </message>
+ <message>
+ <location line="-85"/>
+ <source>Date</source>
+ <translation>Datum</translation>
+ </message>
+ <message>
+ <location line="+251"/>
+ <source>File</source>
+ <translation>Soubor</translation>
+ </message>
+ <message>
+ <location line="-255"/>
+ <source>Name</source>
+ <translation>Název</translation>
+ </message>
+ <message>
+ <location line="+961"/>
+ <location line="+1999"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+209"/>
+ <source>Open</source>
+ <translation>OtevÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-2959"/>
+ <source>Size</source>
+ <translation>Velikost</translation>
+ </message>
+ <message>
+ <location line="+1767"/>
+ <source>Sort</source>
+ <translation>RoztÅ™Ãdit</translation>
+ </message>
+ <message>
+ <location line="-1765"/>
+ <source>Type</source>
+ <translation>Typ</translation>
+ </message>
+ <message>
+ <location line="+1710"/>
+ <location line="+5"/>
+ <location line="+355"/>
+ <source>&Open</source>
+ <translation>&OtevÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-357"/>
+ <location line="+341"/>
+ <source>&Save</source>
+ <translation>&Uložit</translation>
+ </message>
+ <message>
+ <location line="+51"/>
+ <location line="+1009"/>
+ <source>Error</source>
+ <translation>Chyba</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+144"/>
+ <source>Open </source>
+ <translation>OtevÅ™Ãt</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="-4660"/>
+ <location line="+30"/>
+ <source>Write: %1</source>
+ <translation>Zapsat: %1</translation>
+ </message>
+ <message>
+ <location line="+3263"/>
+ <source>Sort by &Size</source>
+ <translation>RoztÅ™Ãdit podle &velikosti</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Sort by &Date</source>
+ <translation>RoztÅ™Ãdit podle &data</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Sort by &Name</source>
+ <translation>RoztÅ™Ãdit podle &názvu</translation>
+ </message>
+ <message>
+ <location line="+101"/>
+ <source>New Folder 1</source>
+ <translation>Nová složka 1</translation>
+ </message>
+ <message>
+ <location line="-44"/>
+ <source>the directory</source>
+ <translation>Adresář</translation>
+ </message>
+ <message>
+ <location line="-1723"/>
+ <source>File &type:</source>
+ <translation>Typ &souboru:</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <location line="+1977"/>
+ <location line="+16"/>
+ <source>File &name:</source>
+ <translation>Název &souboru:</translation>
+ </message>
+ <message>
+ <location line="-264"/>
+ <source>Delete %1</source>
+ <translation>Smazat %1</translation>
+ </message>
+ <message>
+ <location line="-3345"/>
+ <location line="+1579"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location line="+1700"/>
+ <source>R&eload</source>
+ <translation>Nahrát &znovu</translation>
+ </message>
+ <message>
+ <location line="+110"/>
+ <source>New Folder</source>
+ <translation>Nová složka</translation>
+ </message>
+ <message>
+ <location line="-101"/>
+ <source>&Unsorted</source>
+ <translation>&NeroztÅ™ÃdÄ›né</translation>
+ </message>
+ <message>
+ <location line="-1673"/>
+ <source>Look &in:</source>
+ <translation>Hle&dat v:</translation>
+ </message>
+ <message>
+ <location line="+79"/>
+ <source>Preview File Contents</source>
+ <translation>Náhled obsahu souboru</translation>
+ </message>
+ <message>
+ <location line="+1700"/>
+ <source>New Folder %1</source>
+ <translation>Nová složka %1</translation>
+ </message>
+ <message>
+ <location line="-1612"/>
+ <source>Read-write</source>
+ <translation>ÄŒÃst/Zapisovat</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Read-only</source>
+ <translation>Pouze ÄÃst</translation>
+ </message>
+ <message>
+ <location line="-1805"/>
+ <source>Copy or Move a File</source>
+ <translation>Soubor kopÃrovat nebo posunout</translation>
+ </message>
+ <message>
+ <location line="+3368"/>
+ <source><qt>Are you sure you wish to delete %1 "%2"?</qt></source>
+ <translation><qt>Jste si jistý, že chcete smazat %1 "%2"?</qt></translation>
+ </message>
+ <message>
+ <location line="+146"/>
+ <source>Find Directory</source>
+ <translation>NajÃt adresář</translation>
+ </message>
+ <message>
+ <location line="-1952"/>
+ <source>Attributes</source>
+ <translation>Vlastnosti</translation>
+ </message>
+ <message>
+ <location line="+1767"/>
+ <source>Show &hidden files</source>
+ <translation>&Ukázat skryté soubory</translation>
+ </message>
+ <message>
+ <location line="-701"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="-73"/>
+ <source>Save As</source>
+ <translation>Uložit jako</translation>
+ </message>
+ <message>
+ <location line="-821"/>
+ <source>Inaccessible</source>
+ <translation>NepÅ™Ãstupné</translation>
+ </message>
+ <message>
+ <location line="+1859"/>
+ <source>%1
+File not found.
+Check path and filename.</source>
+ <translation>%1
+Soubor se nepodařilo nalézt.
+Ověřte cestu a název souboru.</translation>
+ </message>
+ <message>
+ <location line="-1986"/>
+ <source>List View</source>
+ <translation>Pohled se seznamem</translation>
+ </message>
+ <message>
+ <location line="+134"/>
+ <source>Special</source>
+ <translation>Zvláštnà vlastnost</translation>
+ </message>
+ <message>
+ <location line="-8"/>
+ <source>Write-only</source>
+ <translation>Pouze zápis</translation>
+ </message>
+ <message>
+ <location line="+1558"/>
+ <source>the symlink</source>
+ <translation>Symbolický odkaz</translation>
+ </message>
+ <message>
+ <location line="-83"/>
+ <source>&Delete</source>
+ <translation>&Smazat</translation>
+ </message>
+ <message>
+ <location line="-1837"/>
+ <location line="+49"/>
+ <location line="+2149"/>
+ <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+112"/>
+ <source>All Files (*)</source>
+ <translation>Všechny soubory (*)</translation>
+ </message>
+ <message>
+ <location line="-123"/>
+ <location line="+108"/>
+ <source>Directories</source>
+ <translation>Adresáře</translation>
+ </message>
+ <message>
+ <location line="-1816"/>
+ <source>Symlink to Special</source>
+ <translation>Symbolický odkaz k zvláštnÃmu souboru</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+180"/>
+ <source>Select a Directory</source>
+ <translation>Vyberte adresář</translation>
+ </message>
+ <message>
+ <location line="-371"/>
+ <source>All Files (*.*)</source>
+ <translation>Všechny soubory (*.*)</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="-1803"/>
+ <source>Read: %1</source>
+ <translation>ÄŒÃst: %1</translation>
+ </message>
+ <message>
+ <location line="+3272"/>
+ <source>&Rename</source>
+ <translation>&Přejmenovat</translation>
+ </message>
+ <message>
+ <location line="+345"/>
+ <source>Directory:</source>
+ <translation>Adresář:</translation>
+ </message>
+ <message>
+ <location line="-1972"/>
+ <source>One directory up</source>
+ <translation>O jeden adresář nahoru</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Preview File Info</source>
+ <translation>Náhled informace o souboru</translation>
+ </message>
+ <message>
+ <location line="+1663"/>
+ <source>the file</source>
+ <translation>Soubor</translation>
+ </message>
+ <message>
+ <location line="-1698"/>
+ <source>Create New Folder</source>
+ <translation>Vytvořit novou složku</translation>
+ </message>
+ <message>
+ <location line="+147"/>
+ <source>Symlink to File</source>
+ <translation>Symbolický odkaz k souboru</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Symlink to Directory</source>
+ <translation>Symbolický odkaz k adresáři</translation>
+ </message>
+ <message>
+ <location line="-122"/>
+ <source>Detail View</source>
+ <translation>Podrobný pohled</translation>
+ </message>
+</context>
+<context>
+ <name>Q3LocalFs</name>
+ <message>
+ <location filename="../src/qt3support/network/q3localfs.cpp" line="+271"/>
+ <source>Could not open
+%1</source>
+ <translation>NepodaÅ™ilo se otevÅ™Ãt:
+%1</translation>
+ </message>
+ <message>
+ <location line="-52"/>
+ <source>Could not remove file or directory
+%1</source>
+ <translation>Nepodařilo se odstranit soubor nebo adresář
+%1</translation>
+ </message>
+ <message>
+ <location line="-34"/>
+ <source>Could not create directory
+%1</source>
+ <translation>Nepodařilo se vytvořit adresář
+%1</translation>
+ </message>
+ <message>
+ <location line="-55"/>
+ <location line="+10"/>
+ <source>Could not read directory
+%1</source>
+ <translation>NepodaÅ™ilo se pÅ™eÄÃst adresář
+%1</translation>
+ </message>
+ <message>
+ <location line="+106"/>
+ <source>Could not rename
+%1
+to
+%2</source>
+ <translation>Nepodařilo se přejmenovat:
+%1
+na
+%2</translation>
+ </message>
+ <message>
+ <location line="+93"/>
+ <source>Could not write
+%1</source>
+ <translation>Nepodařilo se zapsat:
+%1</translation>
+ </message>
+</context>
+<context>
+ <name>Q3MainWindow</name>
+ <message>
+ <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
+ <source>Line up</source>
+ <translation>Uspořádat</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Customize...</source>
+ <translation>Přizpůsobit...</translation>
+ </message>
+</context>
+<context>
+ <name>Q3NetworkProtocol</name>
+ <message>
+ <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
+ <source>Operation stopped by the user</source>
+ <translation>Operace byla zastavena uživatelem</translation>
+ </message>
+</context>
+<context>
+ <name>Q3ProgressDialog</name>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
+ <location line="+61"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+</context>
+<context>
+ <name>Q3TabDialog</name>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+190"/>
+ <location line="+824"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location line="-323"/>
+ <source>Help</source>
+ <translation>Nápověda</translation>
+ </message>
+ <message>
+ <location line="-43"/>
+ <source>Apply</source>
+ <translation>PoužÃt</translation>
+ </message>
+ <message>
+ <location line="+138"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location line="-50"/>
+ <source>Defaults</source>
+ <translation>VýchozÃ</translation>
+ </message>
+</context>
+<context>
+ <name>Q3TextEdit</name>
+ <message>
+ <location filename="../src/qt3support/text/q3textedit.cpp" line="+5435"/>
+ <source>Cu&t</source>
+ <translation>Vyj&mout</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&Copy</source>
+ <translation>&KopÃrovat</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>&Redo</source>
+ <translation>&Znovu</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>&Undo</source>
+ <translation>&Zpět</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Clear</source>
+ <translation>Smazat</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>&Paste</source>
+ <translation>&Vložit</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <location line="+2"/>
+ <source>Select All</source>
+ <translation>Vybrat vše</translation>
+ </message>
+</context>
+<context>
+ <name>Q3TitleBar</name>
+ <message>
+ <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+256"/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>Minimize</source>
+ <translation>Zmenšit</translation>
+ </message>
+ <message>
+ <source>Puts a minimized back to normal</source>
+ <translation type="obsolete">Dá velikost zmenšeného okna zpátky do obvyklého stavu</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Displays the name of the window and contains controls to manipulate it</source>
+ <translation>Zobrazà název okna a obsahuje pÅ™Ãkazy pro zacházenà s nÃm</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>Makes the window full screen</source>
+ <translation>Dá okno na celou obrazovku</translation>
+ </message>
+ <message>
+ <location line="-36"/>
+ <source>System</source>
+ <translation>Systém</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Maximize</source>
+ <translation>Zvětšit</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Contains commands to manipulate the window</source>
+ <translation>Obsahuje pÅ™Ãkazy pro zacházenà s velikostà okna</translation>
+ </message>
+ <message>
+ <location line="-25"/>
+ <source>Restore up</source>
+ <translation>Obnovit</translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <source>Puts a minimized window back to normal</source>
+ <translation>Dá velikost zmenšeného okna zpátky do obvyklého stavu</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Closes the window</source>
+ <translation>Zavře okno</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Puts a maximized window back to normal</source>
+ <translation>Dá velikost zvětšeného okna zpátky do obvyklého stavu</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Moves the window out of the way</source>
+ <translation>Zmenšà okno</translation>
+ </message>
+ <message>
+ <location line="-25"/>
+ <source>Restore down</source>
+ <translation>Obnovit</translation>
+ </message>
+</context>
+<context>
+ <name>Q3ToolBar</name>
+ <message>
+ <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
+ <source>More...</source>
+ <translation>VÃce...</translation>
+ </message>
+</context>
+<context>
+ <name>Q3UrlOperator</name>
+ <message>
+ <location filename="../src/qt3support/network/q3urloperator.cpp" line="+402"/>
+ <source>The protocol `%1' does not support getting files</source>
+ <translation>Protokol `%1' nepodporuje nahrávánà souborů</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>The protocol `%1' does not support renaming files or directories</source>
+ <translation>Protokol `%1' nepodporuje přejmenovávánà souborů nebo adresářů</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <source>The protocol `%1' does not support listing directories</source>
+ <translation>Protokol `%1' nepodporuje sestavovánà seznamu adresářů</translation>
+ </message>
+ <message>
+ <location line="+499"/>
+ <location line="+1"/>
+ <source>(unknown)</source>
+ <translation>(neznámý)</translation>
+ </message>
+ <message>
+ <location line="-494"/>
+ <source>The protocol `%1' does not support removing files or directories</source>
+ <translation>Protokol `%1' nepodporuje odstraňovánà souborů nebo adresářů</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>The protocol `%1' does not support putting files</source>
+ <translation>Protokol `%1' nepodporuje ukládánà souborů</translation>
+ </message>
+ <message>
+ <location line="-19"/>
+ <location line="+260"/>
+ <location line="+4"/>
+ <source>The protocol `%1' is not supported</source>
+ <translation>Protokol `%1' nenà podporován</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <location line="+4"/>
+ <source>The protocol `%1' does not support copying or moving files or directories</source>
+ <translation>Protokol `%1' nepodporuje kopÃrovánà Äi pÅ™esun souborů nebo adresářů</translation>
+ </message>
+ <message>
+ <location line="-259"/>
+ <source>The protocol `%1' does not support creating new directories</source>
+ <translation>Protokol `%1' nepodporuje vytvářenà nových adresářů</translation>
+ </message>
+</context>
+<context>
+ <name>Q3Wizard</name>
+ <message>
+ <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+181"/>
+ <source>&Help</source>
+ <translation>&Nápověda</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>&Cancel</source>
+ <translation>&Zrušit</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&Finish</source>
+ <translation>Do&konÄit</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>&Next ></source>
+ <translation>&Dalšà ></translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>< &Back</source>
+ <translation>< &Zpět</translation>
+ </message>
+</context>
+<context>
+ <name>QAbstractSocket</name>
+ <message>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="+890"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+633"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+661"/>
+ <location line="+26"/>
+ <source>Host not found</source>
+ <translation>NepodaÅ™ilo se najÃt poÄÃtaÄ</translation>
+ </message>
+ <message>
+ <location line="+50"/>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+3"/>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+4"/>
+ <source>Connection refused</source>
+ <translation>Spojenà bylo odmÃtnuto</translation>
+ </message>
+ <message>
+ <location line="+142"/>
+ <source>Connection timed out</source>
+ <translation>ÄŒasový limit pro spojenà byl pÅ™ekroÄen</translation>
+ </message>
+ <message>
+ <location line="+1029"/>
+ <source>Socket is not connected</source>
+ <translation>Zásuvka (socket) nenà spojena</translation>
+ </message>
+ <message>
+ <location line="-380"/>
+ <source>Socket operation timed out</source>
+ <translation>ÄŒasový limit pro zásuvkovou (socket) operaci byl pÅ™ekroÄen</translation>
+ </message>
+ <message>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="-8"/>
+ <source>Network unreachable</source>
+ <translation>SÃÅ¥ nenà dosažitelná</translation>
+ </message>
+ <message>
+ <location filename="../src/network/socket/qabstractsocket.cpp" line="-1197"/>
+ <location line="+789"/>
+ <location line="+208"/>
+ <source>Operation on socket is not supported</source>
+ <translation>Tato zásuvková (socket) operace nenà podporována</translation>
+ </message>
+</context>
+<context>
+ <name>QAbstractSpinBox</name>
+ <message>
+ <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1219"/>
+ <source>Step &down</source>
+ <translation>Krok &dolů</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>&Step up</source>
+ <translation>&Krok nahoru</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>&Select All</source>
+ <translation>&Vybrat vše</translation>
+ </message>
+</context>
+<context>
+ <name>QAccessibleButton</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+250"/>
+ <source>Press</source>
+ <translation>Stisknout</translation>
+ </message>
+</context>
+<context>
+ <name>QApplication</name>
+ <message>
+ <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+378"/>
+ <source>Activates the program's main window</source>
+ <translation>Spustà hlavnà okno programu</translation>
+ </message>
+ <message>
+ <source>QT_LAYOUT_DIRECTION</source>
+ <translation type="obsolete">LTR</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Activate</source>
+ <translation>Spustit</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="+354"/>
+ <source>Executable '%1' requires Qt %2, found Qt %3.</source>
+ <translation>Použità '%1' vyžaduje Qt %2; bylo ale nalezeno Qt %3.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Incompatible Qt Library Error</source>
+ <translation>Qt nenà sluÄitelná</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2290"/>
+ <source>QT_LAYOUT_DIRECTION</source>
+ <comment>Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</comment>
+ <translation>LTR</translation>
+ </message>
+</context>
+<context>
+ <name>QAxSelect</name>
+ <message>
+ <location filename="../src/activeqt/container/qaxselect.ui"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location/>
+ <source>COM &Object:</source>
+ <translation>COM-&Objekt:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Cancel</source>
+ <translation>&Zrušit</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Select ActiveX Control</source>
+ <translation>Vybrat prvek ActiveX</translation>
+ </message>
+</context>
+<context>
+ <name>QCheckBox</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="-133"/>
+ <source>Check</source>
+ <translation>OznaÄit křÞkem</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Toggle</source>
+ <translation>Přepnout</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>Uncheck</source>
+ <translation>ZruÅ¡it oznaÄenà křÞkem</translation>
+ </message>
+</context>
+<context>
+ <name>QColorDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1352"/>
+ <source>&Red:</source>
+ <translation>&Červená:</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>&Sat:</source>
+ <translation>&Sytost:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&Val:</source>
+ <translation>&Jasnost:</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Hu&e:</source>
+ <translation>Barevný &odstÃn:</translation>
+ </message>
+ <message>
+ <location line="+107"/>
+ <source>Select Color</source>
+ <translation>Vybrat barvu</translation>
+ </message>
+ <message>
+ <location line="+182"/>
+ <source>&Add to Custom Colors</source>
+ <translation>&Přidat k uživatelem stanoveným barvám</translation>
+ </message>
+ <message>
+ <location line="-284"/>
+ <source>Bl&ue:</source>
+ <translation>&Modrá:</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>&Green:</source>
+ <translation>&Zelená:</translation>
+ </message>
+ <message>
+ <location line="+283"/>
+ <source>&Basic colors</source>
+ <translation>Základnà &barvy</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&Custom colors</source>
+ <translation>&Uživatelem stanovené barvy</translation>
+ </message>
+ <message>
+ <location line="-282"/>
+ <source>A&lpha channel:</source>
+ <translation>A&lfa kanál:</translation>
+ </message>
+</context>
+<context>
+ <name>QComboBox</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
+ <location line="+65"/>
+ <source>Open</source>
+ <translation>OtevÅ™Ãt</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+557"/>
+ <source>True</source>
+ <translation>Pravdivý</translation>
+ </message>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+0"/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="-1"/>
+ <source>False</source>
+ <translation>Nesprávný</translation>
+ </message>
+</context>
+<context>
+ <name>QCoreApplication</name>
+ <message>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
+ <source>%1: key is empty</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: Neplatný údaj u klÃÄe (prázdný)</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>%1: unable to make key</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: NepodaÅ™ilo se vytvoÅ™it klÃÄ</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>%1: ftok failed</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: Vyvolánà ftok se nezdařilo</translation>
+ </message>
+ <message>
+ <source>%1: key is empty</source>
+ <translation type="obsolete">%1: Neplatný údaj u klÃÄe (prázdný)</translation>
+ </message>
+ <message>
+ <source>%1: unable to make key</source>
+ <translation type="obsolete">%1: NepodaÅ™ilo se vytvoÅ™it klÃÄ</translation>
+ </message>
+ <message>
+ <source>%1: ftok failed</source>
+ <translation type="obsolete">%1: Vyvolánà ftok se nezdařilo</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_symbian.cpp" line="+65"/>
+ <source>%1: already exists</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: Již existuje</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1: does not exist</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: Neexistuje</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>%1: out of resources</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: Nejsou již použitelné zdroje</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1: unknown error %2</source>
+ <comment>QSystemSemaphore</comment>
+ <translation>%1: Neznámá chyba %2</translation>
+ </message>
+</context>
+<context>
+ <name>QDB2Driver</name>
+ <message>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1552"/>
+ <source>Unable to commit transaction</source>
+ <translation>Transakci se nepodaÅ™ilo provést (operace 'commit', odeslánÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Unable to set autocommit</source>
+ <translation>'autocommit' se nepodařilo nastavit</translation>
+ </message>
+ <message>
+ <location line="-330"/>
+ <source>Unable to connect</source>
+ <translation>NepodaÅ™ilo se navázat spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+315"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Transakci se nepodaÅ™ilo zvrátit (operace 'rollback', zvrácenÃ, se nezdaÅ™ila)</translation>
+ </message>
+</context>
+<context>
+ <name>QDB2Result</name>
+ <message>
+ <location line="-786"/>
+ <source>Unable to bind variable</source>
+ <translation>Proměnnou se nepodařilo provést</translation>
+ </message>
+ <message>
+ <location line="-230"/>
+ <location line="+240"/>
+ <source>Unable to execute statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo provést</translation>
+ </message>
+ <message>
+ <location line="+98"/>
+ <source>Unable to fetch next</source>
+ <translation>Dalšà datový záznam se nepodařilo natáhnout</translation>
+ </message>
+ <message>
+ <location line="-301"/>
+ <source>Unable to prepare statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo pÅ™ipravit</translation>
+ </message>
+ <message>
+ <location line="+282"/>
+ <source>Unable to fetch record %1</source>
+ <translation>Datový záznam %1 se nepodařilo natáhnout</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>Unable to fetch first</source>
+ <translation>Prvnà datový záznam se nepodařilo natáhnout</translation>
+ </message>
+</context>
+<context>
+ <name>QDateTimeEdit</name>
+ <message>
+ <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2287"/>
+ <source>AM</source>
+ <translation>AM</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>PM</source>
+ <translation>PM</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>am</source>
+ <translation>am</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>pm</source>
+ <translation>pm</translation>
+ </message>
+</context>
+<context>
+ <name>QDial</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
+ <source>QDial</source>
+ <translation>QDial</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>SliderHandle</source>
+ <translation>PosuvnÃk</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>SpeedoMeter</source>
+ <translation>Rychloměr</translation>
+ </message>
+</context>
+<context>
+ <name>QDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+501"/>
+ <source>Done</source>
+ <translation>Hotovo</translation>
+ </message>
+ <message>
+ <location line="+135"/>
+ <source>What's This?</source>
+ <translation>Co je toto?</translation>
+ </message>
+</context>
+<context>
+ <name>QDialogButtonBox</name>
+ <message>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1872"/>
+ <location line="+464"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+606"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+0"/>
+ <source>&OK</source>
+ <translation>&OK</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>&No</source>
+ <translation>&Ne</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>&Yes</source>
+ <translation>&Ano</translation>
+ </message>
+ <message>
+ <location line="-11"/>
+ <source>Help</source>
+ <translation>Nápověda</translation>
+ </message>
+ <message>
+ <location line="-15"/>
+ <source>Open</source>
+ <translation>OtevÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Save</source>
+ <translation>Uložit</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>&Save</source>
+ <translation>&Uložit</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Abort</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location line="-32"/>
+ <source>Apply</source>
+ <translation>PoužÃt</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Reset</source>
+ <translation>Vrátit</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Retry</source>
+ <translation>Opakovat</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Restore Defaults</source>
+ <translation>Obnovit výchozÃ</translation>
+ </message>
+ <message>
+ <location line="-44"/>
+ <source>&Close</source>
+ <translation>&ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Ignore</source>
+ <translation>PřehlÞet</translation>
+ </message>
+ <message>
+ <location line="-26"/>
+ <source>Close without Saving</source>
+ <translation>ZavÅ™Ãt bez uloženÃ</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>N&o to All</source>
+ <translation>N&e, žádné</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Save All</source>
+ <translation>Uložit vše</translation>
+ </message>
+ <message>
+ <location line="-35"/>
+ <source>&Cancel</source>
+ <translation>&Zrušit</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Discard</source>
+ <translation>OdmÃtnout</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Yes to &All</source>
+ <translation>Ano, &vše</translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <source>Don't Save</source>
+ <translation>Neukládat</translation>
+ </message>
+</context>
+<context>
+ <name>QDirModel</name>
+ <message>
+ <source>Kind</source>
+ <translation type="obsolete">Druh</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+457"/>
+ <source>Name</source>
+ <translation>Název</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Size</source>
+ <translation>Velikost</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Kind</source>
+ <comment>Match OS X Finder</comment>
+ <translation>Druh</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Type</source>
+ <comment>All other platforms</comment>
+ <translation>Typ</translation>
+ </message>
+ <message>
+ <source>Type</source>
+ <translation type="obsolete">Typ</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Date Modified</source>
+ <translation>Datum změny</translation>
+ </message>
+</context>
+<context>
+ <name>QDockWidget</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1241"/>
+ <source>Dock</source>
+ <translation>Vplout do panelu</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Float</source>
+ <translation>Plout</translation>
+ </message>
+</context>
+<context>
+ <name>QDoubleSpinBox</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-533"/>
+ <source>Less</source>
+ <translation>Méně</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>More</source>
+ <translation>VÃce</translation>
+ </message>
+</context>
+<context>
+ <name>QErrorMessage</name>
+ <message>
+ <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+415"/>
+ <source>&OK</source>
+ <translation>&OK</translation>
+ </message>
+ <message>
+ <location line="-201"/>
+ <source>Fatal Error:</source>
+ <translation>Osudová chyba:</translation>
+ </message>
+ <message>
+ <location line="+200"/>
+ <source>&Show this message again</source>
+ <translation>Toto hlášenà &ukázat ještě jednou</translation>
+ </message>
+ <message>
+ <location line="-206"/>
+ <source>Debug Message:</source>
+ <translation>Hlášenà o odladÄ›nÃ:</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Warning:</source>
+ <translation>VarovánÃ:</translation>
+ </message>
+</context>
+<context>
+ <name>QFile</name>
+ <message>
+ <location filename="../src/corelib/io/qfile.cpp" line="+905"/>
+ <source>Cannot create %1 for output</source>
+ <translation>%1 se nepodaÅ™ilo zÅ™Ãdit pro výstup</translation>
+ </message>
+ <message>
+ <location line="-13"/>
+ <source>Failure to write block</source>
+ <translation>Datový blok se nepodařilo zapsat</translation>
+ </message>
+ <message>
+ <location line="-180"/>
+ <source>Will not rename sequential file using block copy</source>
+ <translation>Nepřejmenuje posloupný soubor pomocà kopie bloku</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Cannot remove source file</source>
+ <translation>Nelze odstranit zdrojový soubor</translation>
+ </message>
+ <message>
+ <location line="+130"/>
+ <source>Cannot open %1 for input</source>
+ <translation>%1 se nepodaÅ™ilo otevÅ™Ãt pro ÄtenÃ</translation>
+ </message>
+ <message>
+ <location line="-168"/>
+ <location line="+155"/>
+ <source>Destination file exists</source>
+ <translation>CÃlový soubor již existuje</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Cannot open for output</source>
+ <translation>NepodaÅ™ilo se otevÅ™Ãt pro zápis</translation>
+ </message>
+</context>
+<context>
+ <name>QFileDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Back</source>
+ <translation>Zpět</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+464"/>
+ <location line="+1"/>
+ <source>File</source>
+ <translation>Soubor</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>File Folder</source>
+ <comment>Match Windows Explorer</comment>
+ <translation>Souborová složka</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Folder</source>
+ <comment>All other platforms</comment>
+ <translation>Složka</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Alias</source>
+ <comment>Mac OS X Finder</comment>
+ <translation>PÅ™ezdÃvka</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Shortcut</source>
+ <comment>All other platforms</comment>
+ <translation>Zkratka</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+541"/>
+ <source>Open</source>
+ <translation>OtevÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="+691"/>
+ <location line="+50"/>
+ <location line="+1528"/>
+ <source>&Open</source>
+ <translation>&OtevÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-1578"/>
+ <location line="+50"/>
+ <source>&Save</source>
+ <translation>&Uložit</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="-22"/>
+ <source>Drive</source>
+ <translation>Disková jednotka</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-714"/>
+ <source>Show </source>
+ <translation>Ukázat </translation>
+ </message>
+ <message>
+ <location line="+2091"/>
+ <source>'%1' is write protected.
+Do you want to delete it anyway?</source>
+ <translation>'%1' je chráněn proti zápisu.
+Přesto chcete soubor smazat?</translation>
+ </message>
+ <message>
+ <location line="-2077"/>
+ <location line="+663"/>
+ <source>File &name:</source>
+ <translation>Název &souboru:</translation>
+ </message>
+ <message>
+ <location line="+1286"/>
+ <source>New Folder</source>
+ <translation>Nová složka</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Parent Directory</source>
+ <translation>Nadřazený adresář</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1956"/>
+ <source>&New Folder</source>
+ <translation>&Nová složka</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qsidebar.cpp" line="+442"/>
+ <source>Remove</source>
+ <translation>Odstranit</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+402"/>
+ <source>My Computer</source>
+ <translation>Můj poÄÃtaÄ</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Look in:</source>
+ <translation>Hledat v:</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Files of type:</source>
+ <translation>Soubory typu:</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-36"/>
+ <source>Find Directory</source>
+ <translation>NajÃt adresář</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>Show &hidden files</source>
+ <translation>&Ukázat skryté soubory</translation>
+ </message>
+ <message>
+ <location line="+2090"/>
+ <source>Are sure you want to delete '%1'?</source>
+ <translation>Jste si jistý, že %1 chcete smazat?</translation>
+ </message>
+ <message>
+ <location line="-2121"/>
+ <source>Save As</source>
+ <translation>Uložit jako</translation>
+ </message>
+ <message>
+ <location line="+1472"/>
+ <location line="+862"/>
+ <source>%1
+Directory not found.
+Please verify the correct directory name was given.</source>
+ <translation>%1
+Adresář se nepodařilo nalézt.
+Ověřte, prosÃm, že byl zadán správný název adresáře.</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>List View</source>
+ <translation>Pohled se seznamem</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1635"/>
+ <location line="+38"/>
+ <source>&Choose</source>
+ <translation>&Vybrat</translation>
+ </message>
+ <message>
+ <location line="-707"/>
+ <source>&Delete</source>
+ <translation>&Smazat</translation>
+ </message>
+ <message>
+ <location line="-15"/>
+ <location line="+450"/>
+ <source>All Files (*)</source>
+ <translation>Všechny soubory (*)</translation>
+ </message>
+ <message>
+ <location line="+227"/>
+ <source>Directories</source>
+ <translation>Adresáře</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+174"/>
+ <source>All Files (*.*)</source>
+ <translation>Všechny soubory (*.*)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-663"/>
+ <source>&Rename</source>
+ <translation>&Přejmenovat</translation>
+ </message>
+ <message>
+ <location line="+2107"/>
+ <source>Could not delete directory.</source>
+ <translation>Adresář se nepodařilo smazat.</translation>
+ </message>
+ <message>
+ <location line="-2099"/>
+ <location line="+659"/>
+ <source>Directory:</source>
+ <translation>Adresář:</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+29"/>
+ <source>Unknown</source>
+ <translation>Neznámý</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+810"/>
+ <source>%1 already exists.
+Do you want to replace it?</source>
+ <translation>Soubor %1 již existuje.
+Chcete jej nahradit?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Forward</source>
+ <translation>Dopředu</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1040"/>
+ <source>Recent Places</source>
+ <translation>Naposledy navÅ¡tÃvené</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Create New Folder</source>
+ <translation>Vytvořit novou složku</translation>
+ </message>
+ <message>
+ <location/>
+ <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+ <source>Detail View</source>
+ <translation>Podrobný pohled</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1020"/>
+ <source>%1
+File not found.
+Please verify the correct file name was given.</source>
+ <translation>%1
+Soubor se nepodařilo nalézt.
+Ověřte, prosÃm, že byl zadán správný název souboru.</translation>
+ </message>
+</context>
+<context>
+ <name>QFileSystemModel</name>
+ <message>
+ <source>Kind</source>
+ <translation type="obsolete">Druh</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+893"/>
+ <source>Name</source>
+ <translation>Název</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Size</source>
+ <translation>Velikost</translation>
+ </message>
+ <message>
+ <source>Type</source>
+ <translation type="obsolete">Typ</translation>
+ </message>
+ <message>
+ <location line="-149"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+478"/>
+ <source>%1 GB</source>
+ <translation>%1 GB</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+4"/>
+ <source>%1 KB</source>
+ <translation>%1 KB</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="-2"/>
+ <source>%1 MB</source>
+ <translation>%1 MB</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="-4"/>
+ <source>%1 TB</source>
+ <translation>%1 TB</translation>
+ </message>
+ <message>
+ <location line="+85"/>
+ <source><b>The name "%1" can not be used.</b><p>Try using another name, with fewer characters or no punctuations marks.</source>
+ <translation><b>Název "%1" nelze použÃt.</b><p>Zkuste použÃt jiný název, s menÅ¡Ãm poÄtem znaků nebo bez zvláštnÃch znaků.</translation>
+ </message>
+ <message>
+ <location line="-78"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+7"/>
+ <source>%1 bytes</source>
+ <translation>%1 bytů</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+258"/>
+ <source>My Computer</source>
+ <translation>Můj poÄÃtaÄ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Computer</source>
+ <translation>PoÄÃtaÄ</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+77"/>
+ <source>Invalid filename</source>
+ <translation>Neplatný název souboru</translation>
+ </message>
+ <message>
+ <location line="+71"/>
+ <source>Kind</source>
+ <comment>Match OS X Finder</comment>
+ <translation>Druh</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Type</source>
+ <comment>All other platforms</comment>
+ <translation>Typ</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Date Modified</source>
+ <translation>Datum změny</translation>
+ </message>
+</context>
+<context>
+ <name>QFontDatabase</name>
+ <message>
+ <location filename="../src/gui/text/qfontdatabase.cpp" line="+2137"/>
+ <source>Any</source>
+ <translation>Všechna</translation>
+ </message>
+ <message>
+ <location line="+60"/>
+ <source>Lao</source>
+ <translation>Laoské</translation>
+ </message>
+ <message>
+ <location line="-2092"/>
+ <location line="+12"/>
+ <location line="+1308"/>
+ <source>Bold</source>
+ <translation>TuÄné</translation>
+ </message>
+ <message>
+ <location line="-1306"/>
+ <source>Demi</source>
+ <translation>PolotuÄné</translation>
+ </message>
+ <message>
+ <location line="+2075"/>
+ <source>Thai</source>
+ <translation>Thajské</translation>
+ </message>
+ <message>
+ <location line="-2083"/>
+ <location line="+18"/>
+ <location line="+1294"/>
+ <source>Black</source>
+ <translation>Černé</translation>
+ </message>
+ <message>
+ <location line="+720"/>
+ <source>Greek</source>
+ <translation>Řecké</translation>
+ </message>
+ <message>
+ <location line="+66"/>
+ <source>Khmer</source>
+ <translation>Khmerské</translation>
+ </message>
+ <message>
+ <location line="-69"/>
+ <source>Latin</source>
+ <translation>Latinské</translation>
+ </message>
+ <message>
+ <location line="-2015"/>
+ <location line="+1304"/>
+ <source>Light</source>
+ <translation>Lehké</translation>
+ </message>
+ <message>
+ <location line="+801"/>
+ <source>Ogham</source>
+ <translation>Ogamské</translation>
+ </message>
+ <message>
+ <location line="-54"/>
+ <source>Oriya</source>
+ <translation>Oriya</translation>
+ </message>
+ <message>
+ <location line="+57"/>
+ <source>Runic</source>
+ <translation>Runové</translation>
+ </message>
+ <message>
+ <location line="-54"/>
+ <source>Tamil</source>
+ <translation>Tamilské</translation>
+ </message>
+ <message>
+ <location line="-33"/>
+ <source>Cyrillic</source>
+ <translation>Cyrilské</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Kannada</source>
+ <translation>Kannada</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Malayalam</source>
+ <translation>Malayalam</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Simplified Chinese</source>
+ <translation>ZjednoduÅ¡ená ÄÃnÅ¡tina</translation>
+ </message>
+ <message>
+ <location line="-2104"/>
+ <location line="+1319"/>
+ <source>Demi Bold</source>
+ <translation>PolotuÄné</translation>
+ </message>
+ <message>
+ <location line="+728"/>
+ <source>Arabic</source>
+ <translation>Arabské</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Hebrew</source>
+ <translation>Hebrejské</translation>
+ </message>
+ <message>
+ <location line="+51"/>
+ <source>Myanmar</source>
+ <translation>Myanmar</translation>
+ </message>
+ <message>
+ <location line="-1932"/>
+ <location line="+1161"/>
+ <source>Italic</source>
+ <translation>Itala</translation>
+ </message>
+ <message>
+ <location line="+789"/>
+ <source>Korean</source>
+ <translation>Korejské</translation>
+ </message>
+ <message>
+ <location line="-2119"/>
+ <location line="+1335"/>
+ <source>Normal</source>
+ <translation>Obvyklé</translation>
+ </message>
+ <message>
+ <location line="-1163"/>
+ <location line="+1160"/>
+ <source>Oblique</source>
+ <translation>Nakloněné</translation>
+ </message>
+ <message>
+ <location line="+748"/>
+ <source>Telugu</source>
+ <translation>Telugu</translation>
+ </message>
+ <message>
+ <location line="-21"/>
+ <source>Thaana</source>
+ <translation>Thaana</translation>
+ </message>
+ <message>
+ <location line="+66"/>
+ <source>Symbol</source>
+ <translation>Symbol</translation>
+ </message>
+ <message>
+ <location line="-69"/>
+ <source>Syriac</source>
+ <translation>Syrské</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Devanagari</source>
+ <translation>Devanagari</translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>Japanese</source>
+ <translation>Japonské</translation>
+ </message>
+ <message>
+ <location line="-51"/>
+ <source>Bengali</source>
+ <translation>Bengálské</translation>
+ </message>
+ <message>
+ <location line="-18"/>
+ <source>Armenian</source>
+ <translation>Arménské</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Sinhala</source>
+ <translation>Sinhálské</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Tibetan</source>
+ <translation>Tibetské</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Vietnamese</source>
+ <translation>Větnamské</translation>
+ </message>
+ <message>
+ <location line="-51"/>
+ <source>Gujarati</source>
+ <translation>Gujarati</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Traditional Chinese</source>
+ <translation>TradiÄnà ÄÃnÅ¡tina</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <source>Georgian</source>
+ <translation>GruzÃnské</translation>
+ </message>
+ <message>
+ <location line="-36"/>
+ <source>Gurmukhi</source>
+ <translation>Gurmukhi</translation>
+ </message>
+</context>
+<context>
+ <name>QFontDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+776"/>
+ <source>&Font</source>
+ <translation>&PÃsmo</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>&Size</source>
+ <translation>&Velikost</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Sample</source>
+ <translation>Vzorek</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <source>Font st&yle</source>
+ <translation>Druh pÃs&ma</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Wr&iting System</source>
+ <translation>Způsob &psanÃ</translation>
+ </message>
+ <message>
+ <location line="-609"/>
+ <location line="+257"/>
+ <source>Select Font</source>
+ <translation>Vybrat pÃsmo</translation>
+ </message>
+ <message>
+ <location line="+350"/>
+ <source>&Underline</source>
+ <translation>&Podtrhnout</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Effects</source>
+ <translation>Efekty</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Stri&keout</source>
+ <translation>Pře&škrtnout</translation>
+ </message>
+</context>
+<context>
+ <name>QFtp</name>
+ <message>
+ <location filename="../src/network/access/qftp.cpp" line="+2333"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+2021"/>
+ <source>Listing directory failed:
+%1</source>
+ <translation>Obsah adresářů nelze ukázat:
+%1</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+15"/>
+ <source>Creating directory failed:
+%1</source>
+ <translation>Vytvořenà adresářů se nezdařilo:
+%1</translation>
+ </message>
+ <message>
+ <location line="-1525"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-1353"/>
+ <source>Not connected</source>
+ <translation>Žádné spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+399"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+332"/>
+ <source>Connection refused for data connection</source>
+ <translation>OdmÃtnuto spojenà spojenà pro data</translation>
+ </message>
+ <message>
+ <location line="+1102"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+1003"/>
+ <source>Login failed:
+%1</source>
+ <translation>Přihlášenà se nezdařilo:
+%1</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+9"/>
+ <source>Downloading file failed:
+%1</source>
+ <translation>Staženà souboru se nezdařilo:
+%1</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+285"/>
+ <source>Connected to host</source>
+ <translation>Spojenà s poÄÃtaÄem navázáno</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qftp.cpp" line="-1437"/>
+ <source>Connection timed out to host %1</source>
+ <translation>ÄŒasový limit pro spojenà s poÄÃtaÄem '%1' byl pÅ™ekroÄen</translation>
+ </message>
+ <message>
+ <location line="+104"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-1458"/>
+ <location line="+1451"/>
+ <source>Connected to host %1</source>
+ <translation>Spojeno s poÄÃtaÄem %1</translation>
+ </message>
+ <message>
+ <location line="+1317"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-290"/>
+ <source>Connecting to host failed:
+%1</source>
+ <translation>Spojenà s poÄÃtaÄem se nezdaÅ™ilo:
+%1</translation>
+ </message>
+ <message>
+ <location line="-1429"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-1267"/>
+ <source>Host %1 not found</source>
+ <translation>PoÄÃtaÄ %1 se nepodaÅ™ilo nalézt</translation>
+ </message>
+ <message>
+ <location line="+1449"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+1282"/>
+ <source>Uploading file failed:
+%1</source>
+ <translation>Nahránà souboru se nezdařilo:
+%1</translation>
+ </message>
+ <message>
+ <location line="-8"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-6"/>
+ <source>Changing directory failed:
+%1</source>
+ <translation>Změna adresáře se nezdařila:
+%1</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+286"/>
+ <source>Host found</source>
+ <translation>PoÄÃtaÄ byl nalezen</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qftp.cpp" line="+20"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-271"/>
+ <source>Removing directory failed:
+%1</source>
+ <translation>Odstraněnà adresáře se nezdařilo:
+%1</translation>
+ </message>
+ <message>
+ <location line="-1457"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-1287"/>
+ <source>Connection refused to host %1</source>
+ <translation>Spojenà s poÄÃtaÄem %1 odmÃtnuto</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+1555"/>
+ <source>Connection to %1 closed</source>
+ <translation>Spojenà s %1 ukonÄeno</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qftp.cpp" line="+1449"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-274"/>
+ <source>Removing file failed:
+%1</source>
+ <translation>Odstraněnà souboru se nezdařilo:
+%1</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+270"/>
+ <source>Host %1 found</source>
+ <translation>PoÄÃtaÄ %1 byl nalezen</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qftp.cpp" line="-944"/>
+ <location line="+29"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="-1093"/>
+ <location line="+728"/>
+ <source>Unknown error</source>
+ <translation>Neznámá chyba</translation>
+ </message>
+ <message>
+ <location line="+951"/>
+ <location filename="../src/qt3support/network/q3ftp.cpp" line="+126"/>
+ <location line="+250"/>
+ <source>Connection closed</source>
+ <translation>Spojenà ukonÄeno</translation>
+ </message>
+</context>
+<context>
+ <name>QHostInfo</name>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
+ <source>Unknown error</source>
+ <translation>Neznámá chyba</translation>
+ </message>
+</context>
+<context>
+ <name>QHostInfoAgent</name>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+257"/>
+ <location line="+32"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+220"/>
+ <location line="+27"/>
+ <source>Host not found</source>
+ <translation>NepodaÅ™ilo se najÃt poÄÃtaÄ</translation>
+ </message>
+ <message>
+ <location line="-45"/>
+ <location line="+39"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-34"/>
+ <location line="+29"/>
+ <source>Unknown address type</source>
+ <translation>Neznámý typ adresy</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-19"/>
+ <location line="+27"/>
+ <source>Unknown error</source>
+ <translation>Neznámá chyba</translation>
+ </message>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-67"/>
+ <source>No host name given</source>
+ <translation>Nebyl zadán název pro hostitelský poÄÃtaÄ</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Invalid hostname</source>
+ <translation>Neplatný název pro hostitelský poÄÃtaÄ</translation>
+ </message>
+</context>
+<context>
+ <name>QHttp</name>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="+2636"/>
+ <source>Connection refused (or timed out)</source>
+ <translation>Spojenà bylo odmÃtnuto (nebo byl pÅ™ekroÄen Äasový limit)</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+584"/>
+ <source>Data corrupted</source>
+ <translation>Data jsou poškozena</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+2308"/>
+ <source>Connected to host</source>
+ <translation>Spojenà s poÄÃtaÄem navázáno</translation>
+ </message>
+ <message>
+ <location line="-14"/>
+ <source>Connected to host %1</source>
+ <translation>Spojeno s poÄÃtaÄem %1</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="+3"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-19"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="-456"/>
+ <source>Host %1 not found</source>
+ <translation>PoÄÃtaÄ %1 se nepodaÅ™ilo nalézt</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+16"/>
+ <source>Host requires authentication</source>
+ <translation>Hostitelský poÄÃtaÄ požaduje autentizaci</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="+325"/>
+ <source>Error writing response to device</source>
+ <translation>PÅ™i psanà odpovÄ›di výstupnÃmu zaÅ™Ãzenà se vyskytla chyba</translation>
+ </message>
+ <message>
+ <location line="-2594"/>
+ <source>HTTPS connection requested but SSL support not compiled in</source>
+ <translation>Požadované HTTPS spojenà nelze vytvořit, protože neexistuje žádná SSL podpora</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+467"/>
+ <source>Host found</source>
+ <translation>PoÄÃtaÄ byl nalezen</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-12"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="-470"/>
+ <source>Connection refused</source>
+ <translation>Spojenà bylo odmÃtnuto</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="+2421"/>
+ <source>Proxy authentication required</source>
+ <translation>Požadována proxy autentizace</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+18"/>
+ <source>Unknown protocol specified</source>
+ <translation>Byl zadán neznámý protokol</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="-132"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-12"/>
+ <location line="+19"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+6"/>
+ <source>HTTP request failed</source>
+ <translation>HTTP dotaz se nezdařil</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-16"/>
+ <source>Proxy requires authentication</source>
+ <translation>Proxy server požaduje autentizaci</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="+136"/>
+ <source>Authentication required</source>
+ <translation>Požadována autentizace</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+12"/>
+ <source>SSL handshake failed</source>
+ <translation>Během startu SSL protokolu se vyskytla chyba</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+456"/>
+ <source>Connection to %1 closed</source>
+ <translation>Spojenà s %1 ukonÄeno</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="+83"/>
+ <location line="+48"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="-347"/>
+ <location line="+47"/>
+ <source>Invalid HTTP chunked body</source>
+ <translation>Obsah (chunked body - rozkouskované tělo) HTTP je neplatný</translation>
+ </message>
+ <message>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+294"/>
+ <source>Host %1 found</source>
+ <translation>PoÄÃtaÄ %1 byl nalezen</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="-349"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="-498"/>
+ <source>Wrong content length</source>
+ <translation>Neplatný údaj o délce obsahu</translation>
+ </message>
+ <message>
+ <location line="-995"/>
+ <location line="+820"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="-634"/>
+ <location line="+567"/>
+ <source>Unknown error</source>
+ <translation>Neznámá chyba</translation>
+ </message>
+ <message>
+ <location line="+351"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+184"/>
+ <source>Invalid HTTP response header</source>
+ <translation>HlaviÄka HTTP odpovÄ›di nenà platná</translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <source>Unknown authentication method</source>
+ <translation>Neznámý způsob autentizace</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-18"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+401"/>
+ <source>Connection closed</source>
+ <translation>Spojenà ukonÄeno</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qhttp.cpp" line="-368"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="-574"/>
+ <source>No server set to connect to</source>
+ <translation>Pro spojenà nebyl nastaven žádný poÄÃtaÄ - server</translation>
+ </message>
+ <message>
+ <location line="+168"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="+60"/>
+ <source>Server closed connection unexpectedly</source>
+ <translation>Server neoÄekávanÄ› uzavÅ™el spojenÃ</translation>
+ </message>
+ <message>
+ <location line="-747"/>
+ <location filename="../src/qt3support/network/q3http.cpp" line="-441"/>
+ <source>Request aborted</source>
+ <translation>Požadavek byl zrušen</translation>
+ </message>
+</context>
+<context>
+ <name>QHttpSocketEngine</name>
+ <message>
+ <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+29"/>
+ <source>Proxy connection refused</source>
+ <translation>Proxy server odmÃtl navázánà spojenÃ</translation>
+ </message>
+ <message>
+ <location line="-35"/>
+ <source>Proxy denied connection</source>
+ <translation>Proxy server odmÃtl spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>Proxy server not found</source>
+ <translation>NepodaÅ™ilo se najÃt žádný proxy server</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Proxy server connection timed out</source>
+ <translation>PÅ™i spojenà s proxy serverem byl pÅ™ekroÄen Äasový limit</translation>
+ </message>
+ <message>
+ <location line="-120"/>
+ <source>Did not receive HTTP response from proxy</source>
+ <translation>Žádná HTTP odpovÄ›Ä od proxy serveru</translation>
+ </message>
+ <message>
+ <location line="+122"/>
+ <source>Proxy connection closed prematurely</source>
+ <translation>Proxy server pÅ™edÄasnÄ› ukonÄil spojenÃ</translation>
+ </message>
+ <message>
+ <location line="-29"/>
+ <source>Error communicating with HTTP proxy</source>
+ <translation>Chyba při spojenàs proxy serverem</translation>
+ </message>
+ <message>
+ <location line="-37"/>
+ <source>Authentication required</source>
+ <translation>Požadována autentizace</translation>
+ </message>
+ <message>
+ <location line="-31"/>
+ <source>Error parsing authentication request from proxy</source>
+ <translation>Chyba pÅ™i vyhodnocenà autentizaÄnÃho požadavku proxy serveru</translation>
+ </message>
+</context>
+<context>
+ <name>QIBaseDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1558"/>
+ <source>Unable to commit transaction</source>
+ <translation>Transakci se nepodaÅ™ilo provést (operace 'commit', odeslánÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <location line="-13"/>
+ <source>Could not start transaction</source>
+ <translation>Nepodařilo se spustit žádnou transakci</translation>
+ </message>
+ <message>
+ <location line="-54"/>
+ <source>Error opening database</source>
+ <translation>NepodaÅ™ilo se otevÅ™Ãt spojenà s databázÃ</translation>
+ </message>
+ <message>
+ <location line="+80"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Transakci se nepodaÅ™ilo zvrátit (operace 'rollback', zvrácenÃ, se nezdaÅ™ila)</translation>
+ </message>
+</context>
+<context>
+ <name>QIBaseResult</name>
+ <message>
+ <location line="-707"/>
+ <source>Unable to commit transaction</source>
+ <translation>Transakci se nepodaÅ™ilo provést (operace 'commit', odeslánÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <location line="-422"/>
+ <source>Unable to open BLOB</source>
+ <translation>NepodaÅ™ilo se otevÅ™Ãt BLOB</translation>
+ </message>
+ <message>
+ <location line="+499"/>
+ <source>Could not describe statement</source>
+ <translation>NepodaÅ™ilo se zÃskat žádný popis pÅ™Ãkazu</translation>
+ </message>
+ <message>
+ <location line="-25"/>
+ <location line="+11"/>
+ <source>Could not describe input statement</source>
+ <translation>NepodaÅ™ilo se zÃskat žádný popis vstupnÃho pÅ™Ãkazu</translation>
+ </message>
+ <message>
+ <location line="-21"/>
+ <source>Could not allocate statement</source>
+ <translation>PÅ™idÄ›lenà pÅ™Ãkazu se nezdaÅ™ilo</translation>
+ </message>
+ <message>
+ <location line="-478"/>
+ <source>Unable to write BLOB</source>
+ <translation>Nepodařilo se zapsat BLOB</translation>
+ </message>
+ <message>
+ <location line="+417"/>
+ <source>Could not start transaction</source>
+ <translation>Nepodařilo se spustit žádnou transakci</translation>
+ </message>
+ <message>
+ <location line="+211"/>
+ <source>Unable to close statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo zavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-231"/>
+ <source>Could not get query info</source>
+ <translation>Požadované informace k vyhledávánà nejsou k dispozici</translation>
+ </message>
+ <message>
+ <location line="-242"/>
+ <location line="+187"/>
+ <source>Could not find array</source>
+ <translation>NepodaÅ™ilo se najÃt pole</translation>
+ </message>
+ <message>
+ <location line="-155"/>
+ <source>Could not get array data</source>
+ <translation>NepodaÅ™ilo se pÅ™eÄÃst data pole</translation>
+ </message>
+ <message>
+ <location line="+449"/>
+ <source>Unable to execute query</source>
+ <translation>Dotaz se nepodařilo provést</translation>
+ </message>
+ <message>
+ <location line="-153"/>
+ <source>Could not prepare statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo pÅ™ipravit</translation>
+ </message>
+ <message>
+ <location line="+199"/>
+ <source>Could not fetch next item</source>
+ <translation>Dalšà prvek se nepodařilo vyzvednout</translation>
+ </message>
+ <message>
+ <location line="+197"/>
+ <source>Could not get statement info</source>
+ <translation>K dispozici nenà žádná informace k pÅ™Ãkazu</translation>
+ </message>
+ <message>
+ <location line="-885"/>
+ <source>Unable to create BLOB</source>
+ <translation>Nepodařilo se vytvořit žádný BLOB</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Unable to read BLOB</source>
+ <translation>BLOB se nepodaÅ™ilo pÅ™eÄÃst</translation>
+ </message>
+</context>
+<context>
+ <name>QIODevice</name>
+ <message>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+2064"/>
+ <source>No such file or directory</source>
+ <translation>NepodaÅ™ilo se najÃt žádný takový soubor nebo adresář</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>Permission denied</source>
+ <translation>PÅ™Ãstup odepÅ™en</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>No space left on device</source>
+ <translation>Na zaÅ™Ãzenà nenà žádný volný úložný prostor</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1561"/>
+ <source>Unknown error</source>
+ <translation>Neznámá chyba</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/global/qglobal.cpp" line="-6"/>
+ <source>Too many open files</source>
+ <translation>PÅ™ÃliÅ¡ mnoho otevÅ™ených souborů</translation>
+ </message>
+</context>
+<context>
+ <name>QInputContext</name>
+ <message>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+256"/>
+ <source>XIM</source>
+ <translation>XIM</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>FEP</source>
+ <translation>FEP</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Windows input method</source>
+ <translation>Windows-vstupnà metoda</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>S60 FEP input method</source>
+ <translation>S60 FEP-vstupnà metoda</translation>
+ </message>
+ <message>
+ <location line="-12"/>
+ <source>XIM input method</source>
+ <translation>XIM-vstupnà metoda</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Mac OS X input method</source>
+ <translation>Mac OS X-vstupnà metoda</translation>
+ </message>
+</context>
+<context>
+ <name>QInputDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
+ <source>Enter a value:</source>
+ <translation>Zadejte hodnotu:</translation>
+ </message>
+</context>
+<context>
+ <name>QLibrary</name>
+ <message>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+411"/>
+ <source>Could not unmap '%1': %2</source>
+ <translation>Operace unmap, zruÅ¡it zobrazenÃ, se nezdaÅ™ila u '%1': %2</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+253"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+109"/>
+ <source>Cannot unload library %1: %2</source>
+ <translation>Knihovnu %1 nelze vyjmout: %2</translation>
+ </message>
+ <message>
+ <location line="-17"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="-22"/>
+ <source>Cannot load library %1: %2</source>
+ <translation>Knihovnu %1 nelze nahrát: %2</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="+341"/>
+ <source>The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5]</source>
+ <translation>PÅ™Ãdavný modul '%1' použÃvá nesluÄitelnou Qt knihovnu. (%2.%3.%4) [%5]</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+51"/>
+ <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+37"/>
+ <source>Cannot resolve symbol "%1" in %2: %3</source>
+ <translation>Symbol "%1" nelze v %2 vyřešit: %3</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/plugin/qlibrary.cpp" line="-347"/>
+ <source>Plugin verification data mismatch in '%1'</source>
+ <translation>Ověřovacà data pÅ™Ãdavného nesouhlasà v '%1'</translation>
+ </message>
+ <message>
+ <location line="+375"/>
+ <source>The plugin '%1' uses incompatible Qt library. (Cannot mix debug and release libraries.)</source>
+ <translation>PÅ™Ãdavný modul '%1' použÃvá nesluÄitelnou Qt knihovnu. (Knihovny vytvoÅ™ené v režimu ladÄ›nà a vydánà nemohou být použÃvány spoleÄnÄ›.)</translation>
+ </message>
+ <message>
+ <location line="-43"/>
+ <source>The file '%1' is not a valid Qt plugin.</source>
+ <translation>Soubor '%1' nenà platným pÅ™Ãdavným modulem Qt.</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+343"/>
+ <source>The shared library was not found.</source>
+ <translation>NepodaÅ™ilo se nalézt sdÃlenou knihovnu.</translation>
+ </message>
+ <message>
+ <location line="+402"/>
+ <source>Unknown error</source>
+ <translation>Neznámá chyba</translation>
+ </message>
+ <message>
+ <location line="-365"/>
+ <source>The plugin '%1' uses incompatible Qt library. Expected build key "%2", got "%3"</source>
+ <translation>PÅ™Ãdavný modul '%1' použÃvá nesluÄitelnou Qt knihovnu. PotÅ™ebný byl zvláštnà klÃÄ pro sestavenà "%2", obdržen "%3"</translation>
+ </message>
+ <message>
+ <location line="-389"/>
+ <source>Could not mmap '%1': %2</source>
+ <translation>Operace mmap se nezdařila u '%1': %2</translation>
+ </message>
+</context>
+<context>
+ <name>QLineEdit</name>
+ <message>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+1991"/>
+ <source>Cu&t</source>
+ <translation>&Vyjmout</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&Copy</source>
+ <translation>&KopÃrovat</translation>
+ </message>
+ <message>
+ <location line="-12"/>
+ <source>&Redo</source>
+ <translation>&Znovu</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>&Undo</source>
+ <translation>&Zpět</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>&Paste</source>
+ <translation>&Vložit</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Delete</source>
+ <translation>Smazat</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Select All</source>
+ <translation>Vybrat vše</translation>
+ </message>
+</context>
+<context>
+ <name>QLocalServer</name>
+ <message>
+ <location filename="../src/network/socket/qlocalserver.cpp" line="+224"/>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+256"/>
+ <source>%1: Name error</source>
+ <translation>%1: Chybný název</translation>
+ </message>
+ <message>
+ <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+9"/>
+ <source>%1: Unknown error %2</source>
+ <translation>%1: Neznámá chyba %2</translation>
+ </message>
+ <message>
+ <location line="-17"/>
+ <source>%1: Permission denied</source>
+ <translation>%1: PÅ™Ãstup odepÅ™en</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>%1: Address in use</source>
+ <translation>%1: Adresa se již použÃvá</translation>
+ </message>
+</context>
+<context>
+ <name>QLocalSocket</name>
+ <message>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+153"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+160"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+75"/>
+ <source>%1: Connection error</source>
+ <translation>%1: Chyba spojenÃ</translation>
+ </message>
+ <message>
+ <location line="-21"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="-21"/>
+ <source>%1: Connection refused</source>
+ <translation>%1: Spojenà bylo odmÃtnuto</translation>
+ </message>
+ <message>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+28"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+10"/>
+ <source>%1: Unknown error %2</source>
+ <translation>%1: Neznámá chyba %2</translation>
+ </message>
+ <message>
+ <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+9"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="-19"/>
+ <source>%1: Socket access error</source>
+ <translation>%1: Chyba pÅ™i pÅ™Ãstupu k zásuvce (socketu)</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: Socket resource error</source>
+ <translation>%1: Chyba zásuvky (socketu) - potÞe se zdrojem</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+12"/>
+ <source>%1: The socket operation is not supported</source>
+ <translation>%1: Tato operace se zásuvkou (socketem) nenà podporována</translation>
+ </message>
+ <message>
+ <location line="-18"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="-18"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="-5"/>
+ <location line="+45"/>
+ <source>%1: Invalid name</source>
+ <translation>%1: Neplatný název</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>%1: Unknown error</source>
+ <translation>%1: Neznámá chyba</translation>
+ </message>
+ <message>
+ <location line="-13"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+9"/>
+ <source>%1: Socket operation timed out</source>
+ <translation>%1: PÅ™ekroÄenà Äasu pÅ™i operaci se zásuvkou (socketem)</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+ <source>%1: Datagram too large</source>
+ <translation>%1: Datagram je pÅ™ÃliÅ¡ veliký</translation>
+ </message>
+ <message>
+ <location line="-15"/>
+ <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="-15"/>
+ <source>%1: Remote closed</source>
+ <translation>%1: Spojenà bylo protějšà stranou uzavřeno</translation>
+ </message>
+</context>
+<context>
+ <name>QMYSQLDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1440"/>
+ <source>Unable to commit transaction</source>
+ <translation>Transakci se nepodaÅ™ilo provést (operace 'commit', odeslánÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <location line="-179"/>
+ <source>Unable to open database '</source>
+ <translation>NepodaÅ™ilo se otevÅ™Ãt spojenà s databázà '</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Unable to connect</source>
+ <translation>NepodaÅ™ilo se navázat spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+185"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Transakci se nepodaÅ™ilo zvrátit (operace 'rollback', zvrácenÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <location line="-34"/>
+ <source>Unable to begin transaction</source>
+ <translation>Transakci se nepodařilo spustit</translation>
+ </message>
+</context>
+<context>
+ <name>QMYSQLResult</name>
+ <message>
+ <location line="-413"/>
+ <source>Unable to execute statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo provést</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Unable to store statement results</source>
+ <translation>Výsledky pÅ™Ãkazu se nepodaÅ™ilo uložit</translation>
+ </message>
+ <message>
+ <location line="-253"/>
+ <source>Unable to execute next query</source>
+ <translation>Dalšà dotaz nelze provést</translation>
+ </message>
+ <message>
+ <location line="+244"/>
+ <location line="+21"/>
+ <source>Unable to bind outvalues</source>
+ <translation>Výstupnà hodnoty se nepodařilo spojit</translation>
+ </message>
+ <message>
+ <location line="-255"/>
+ <source>Unable to store next result</source>
+ <translation>Dalšà výsledek nelze uložit</translation>
+ </message>
+ <message>
+ <location line="-302"/>
+ <source>Unable to fetch data</source>
+ <translation>Nepodařilo se natáhnout žádná data</translation>
+ </message>
+ <message>
+ <location line="+380"/>
+ <location line="+8"/>
+ <source>Unable to prepare statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo pÅ™ipravit</translation>
+ </message>
+ <message>
+ <location line="-199"/>
+ <source>Unable to store result</source>
+ <translation>Výsledek se nepodařilo uložit</translation>
+ </message>
+ <message>
+ <location line="+322"/>
+ <source>Unable to bind value</source>
+ <translation>Hodnotu se nepodařilo spojit</translation>
+ </message>
+ <message>
+ <location line="-328"/>
+ <source>Unable to execute query</source>
+ <translation>Dotaz se nepodařilo provést</translation>
+ </message>
+ <message>
+ <location line="+242"/>
+ <source>Unable to reset statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo znovu nastavit</translation>
+ </message>
+</context>
+<context>
+ <name>QMdiArea</name>
+ <message>
+ <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
+ <source>(Untitled)</source>
+ <translation>(Bez názvu)</translation>
+ </message>
+</context>
+<context>
+ <name>QMdiSubWindow</name>
+ <message>
+ <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+355"/>
+ <source>Help</source>
+ <translation>Nápověda</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Menu</source>
+ <translation>Menu</translation>
+ </message>
+ <message>
+ <location line="+699"/>
+ <source>&Move</source>
+ <translation>Po&sunout</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&Size</source>
+ <translation>Změnit &velikost</translation>
+ </message>
+ <message>
+ <location line="-706"/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-18"/>
+ <source>Minimize</source>
+ <translation>Zmenšit</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Shade</source>
+ <translation>Navinout</translation>
+ </message>
+ <message>
+ <location line="+720"/>
+ <source>Stay on &Top</source>
+ <translation>Zůstat v &popÅ™edÃ</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>&Close</source>
+ <translation>&ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-787"/>
+ <source>- [%1]</source>
+ <translation>- [%1]</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>%1 - [%2]</source>
+ <translation>%1 - [%2]</translation>
+ </message>
+ <message>
+ <location line="+774"/>
+ <source>&Restore</source>
+ <translation>&Obnovit</translation>
+ </message>
+ <message>
+ <location line="-705"/>
+ <source>Restore</source>
+ <translation>Obnovit</translation>
+ </message>
+ <message>
+ <location line="-12"/>
+ <source>Maximize</source>
+ <translation>Zvětšit</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Unshade</source>
+ <translation>Odvinout</translation>
+ </message>
+ <message>
+ <location line="+719"/>
+ <source>Mi&nimize</source>
+ <translation>Zmen&šit</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Ma&ximize</source>
+ <translation>Zvě&tšit</translation>
+ </message>
+ <message>
+ <location line="-714"/>
+ <source>Restore Down</source>
+ <translation>Obnovit</translation>
+ </message>
+</context>
+<context>
+ <name>QMenu</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+158"/>
+ <location line="+225"/>
+ <source>Open</source>
+ <translation>OtevÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-226"/>
+ <location line="+225"/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-222"/>
+ <location line="+225"/>
+ <location line="+51"/>
+ <source>Execute</source>
+ <translation>Provést</translation>
+ </message>
+</context>
+<context>
+ <name>QMenuBar</name>
+ <message>
+ <location filename="../src/gui/widgets/qmenu_symbian.cpp" line="+410"/>
+ <source>Actions</source>
+ <translation>ÄŒinnosti</translation>
+ </message>
+</context>
+<context>
+ <name>QMessageBox</name>
+ <message>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/>
+ <location line="+847"/>
+ <location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
+ <location line="+8"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Help</source>
+ <translation>Nápověda</translation>
+ </message>
+ <message>
+ <source><h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://qt.nokia.com/products/licensing">qt.nokia.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://qt.nokia.com/">qt.nokia.com</a> for more information.</p></source>
+ <translation type="obsolete"><h3>O Qt</h3><p>Tento program použÃvá Qt ve verzi %1.</p><p>Qt je sadou softwarových nástrojů C++ urÄených pro vývoj aplikacà napÅ™ÃÄ platformami.</p><p>Qt poskytuje jednoduchou pÅ™enositelnost pÅ™es MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, a vÅ¡echny hlavnà obchodnà varianty systému Unix. Qt je rovněž dostupný pro vložená zaÅ™Ãzenà jako Qt pro Embedded Linux a Qt pro Windows CE.</p><p>Qt je dostupné pod tÅ™emi rozdÃlnými licenÄnÃmi volbami navrženými pro pÅ™izpůsobenà se potÅ™ebám naÅ¡ich různých uživatelů.</p>Qt licencované pod našà obchodnà licenÄnà smlouvou je vhodné pro vývoj soukromého/obchodnÃho software, kde si nepÅ™ejete sdÃlet jakýkoli zdrojový kód se tÅ™etÃmi stranami, nebo jinak Å™eÄeno, když nemůžete vyhovÄ›t podmÃnkám GNU LGPL ve verzi 2.1 nebo GNU GPL ve verzi 3.0.</p><p>Qt licencované pod GNU LGPL ve verzi 2.1 je vhodné pro vývoj Qt aplikacà (soukromých nebo s otevÅ™eným zdrojovým kódem), za pÅ™edpokladu že můžete souhlasit s požadavky a podmÃnkami GNU LGPL version 2.1.</p><p>Qt licencované pod GNU General Public License ve verzi 3.0 je vhodné pro vývoj aplikacà Qt, u nichž si pÅ™ejete použÃt takovou aplikaci ve spojenà se software, který podléhá požadavkům GNU GPL ve verzi 3.0, nebo kde jste jinak ochoten souhlasit s podmÃnkami GNU GPL ve verzi 3.0.</p><p>PodÃvejte se, prosÃm, na <a href="http://qt.nokia.com/products/licensing">qt.nokia.com/products/licensing</a> kvůli pÅ™ehledu licencovánà Qt.</p><p>Copyright (C) 2009 Nokia Corporation a/nebo jejà dceÅ™inná(é) spoleÄnost(i).</p><p>Qt je výrobkem spoleÄnosti Nokia. PodÃvejte se na <a href="http://qt.nokia.com/">qt.nokia.com</a>kvůli vÃce informacÃm.</p></translation>
+ </message>
+ <message>
+ <location line="-1099"/>
+ <source>Show Details...</source>
+ <translation>Ukázat podrobnosti...</translation>
+ </message>
+ <message>
+ <location line="+1575"/>
+ <source><h3>About Qt</h3><p>This program uses Qt version %1.</p></source>
+ <translation><h3>O Qt</h3><p>Tento program použÃvá Qt-verze %1.</p></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p><p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://qt.nokia.com/products/licensing">qt.nokia.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://qt.nokia.com/">qt.nokia.com</a> for more information.</p></source>
+ <translation><p>Qt je sadou softwarových nástrojů C++ urÄených pro vývoj aplikacà napÅ™ÃÄ platformami.</p><p>Qt poskytuje jednoduchou pÅ™enositelnost pÅ™es MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, a vÅ¡echny hlavnà obchodnà varianty systému Unix. Qt je rovněž dostupný pro vložená zaÅ™Ãzenà jako Qt pro Embedded Linux a Qt pro Windows CE.</p><p>Qt je dostupné pod tÅ™emi rozdÃlnými licenÄnÃmi volbami navrženými pro pÅ™izpůsobenà se potÅ™ebám naÅ¡ich různých uživatelů.</p>Qt licencované pod našà obchodnà licenÄnà smlouvou je vhodné pro vývoj soukromého/obchodnÃho software, kde si nepÅ™ejete sdÃlet jakýkoli zdrojový kód se tÅ™etÃmi stranami, nebo jinak Å™eÄeno, když nemůžete vyhovÄ›t podmÃnkám GNU LGPL ve verzi 2.1 nebo GNU GPL ve verzi 3.0.</p><p>Qt licencované pod GNU LGPL ve verzi 2.1 je vhodné pro vývoj Qt aplikacà (soukromých nebo s otevÅ™eným zdrojovým kódem), za pÅ™edpokladu že můžete souhlasit s požadavky a podmÃnkami GNU LGPL version 2.1.</p><p>Qt licencované pod GNU General Public License ve verzi 3.0 je vhodné pro vývoj aplikacà Qt, u nichž si pÅ™ejete použÃt takovou aplikaci ve spojenà se software, který podléhá požadavkům GNU GPL ve verzi 3.0, nebo kde jste jinak ochoten souhlasit s podmÃnkami GNU GPL ve verzi 3.0.</p><p>PodÃvejte se, prosÃm, na <a href="http://qt.nokia.com/products/licensing">qt.nokia.com/products/licensing</a> kvůli pÅ™ehledu licencovánà Qt.</p><p>Copyright (C) 2009 Nokia Corporation a/nebo jejà dceÅ™inná(é) spoleÄnost(i).</p><p>Qt je výrobkem spoleÄnosti Nokia. PodÃvejte se na <a href="http://qt.nokia.com/">qt.nokia.com</a>kvůli vÃce informacÃm.</p></translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>About Qt</source>
+ <translation>O Qt</translation>
+ </message>
+ <message>
+ <source><p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://www.trolltech.com/company/model/">www.trolltech.com/company/model/</a> for an overview of Qt licensing.</p></source>
+ <translation type="obsolete"><p>Tento program použÃvá Qt Open Source Edition verze %1.</p><p>Qt Open Source Edition je zamýšlena pro vývoj Open Source aplikacÃ. Pro vývoj vlastnických aplikacà (uzavÅ™ené zdrojové kódy) potÅ™ebujete Qt licenci.</p><p>PodÃvejte se, prosÃm, na <a href="http://www.trolltech.com/company/model/">www.trolltech.com/company/model/</a> kvůli pÅ™ehledu licencovánà Qt.</p></translation>
+ </message>
+ <message>
+ <location line="-1610"/>
+ <source>Hide Details...</source>
+ <translation>Skrýt podrobnosti...</translation>
+ </message>
+ <message>
+ <source><p>This program uses Qt version %1.</p></source>
+ <translation type="obsolete"><p>Tento program použÃvá Qt-verze %1.</p></translation>
+ </message>
+</context>
+<context>
+ <name>QMultiInputContext</name>
+ <message>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
+ <source>Select IM</source>
+ <translation>Zvolit způsob vstupu</translation>
+ </message>
+</context>
+<context>
+ <name>QMultiInputContextPlugin</name>
+ <message>
+ <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+102"/>
+ <source>Multiple input method switcher that uses the context menu of the text widgets</source>
+ <translation>PÅ™epÃnaÄ pro vÃce způsobů vstupu, který použÃvá souvisejÃcà nabÃdku textového prvku</translation>
+ </message>
+ <message>
+ <location line="-7"/>
+ <source>Multiple input method switcher</source>
+ <translation>PÅ™epÃnaÄ pro vÃce způsobů vstupu</translation>
+ </message>
+</context>
+<context>
+ <name>QNativeSocketEngine</name>
+ <message>
+ <location filename="../src/network/socket/qnativesocketengine.cpp" line="+269"/>
+ <source>The proxy type is invalid for this operation</source>
+ <translation>Tuto operaci nelze s tÃmto typem proxy provést</translation>
+ </message>
+ <message>
+ <location line="-60"/>
+ <source>Network operation timed out</source>
+ <translation>ÄŒasový limit pro sÃÅ¥ovou operaci byl pÅ™ekroÄen</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>The remote host closed the connection</source>
+ <translation>Vzdálený poÄÃtaÄ uzavÅ™el spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Invalid socket descriptor</source>
+ <translation>Neplatný deskriptor zásuvky (socketu)</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Host unreachable</source>
+ <translation>CÃlový poÄÃtaÄ je nedosažitelný</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>Protocol type not supported</source>
+ <translation>Protokol tohoto typu nenà podporován</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Datagram was too large to send</source>
+ <translation>Datagram byl pro odeslánà pÅ™ÃliÅ¡ veliký</translation>
+ </message>
+ <message>
+ <location line="-45"/>
+ <source>Attempt to use IPv6 socket on a platform with no IPv6 support</source>
+ <translation>VyzkouÅ¡elo se použÃt IPv6 zásuvku (socket) na systému bez podpory IPv6</translation>
+ </message>
+ <message>
+ <location line="+51"/>
+ <source>Unable to receive a message</source>
+ <translation>Zprávu se nepodařilo přijmout</translation>
+ </message>
+ <message>
+ <location line="-24"/>
+ <source>Permission denied</source>
+ <translation>PÅ™Ãstup odepÅ™en</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Connection refused</source>
+ <translation>Spojenà bylo odmÃtnuto</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>Unable to write</source>
+ <translation>Nepodařilo se zapsat</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Another socket is already listening on the same port</source>
+ <translation>Na tomto portu již naslouchá jiná zásuvka (socket)</translation>
+ </message>
+ <message>
+ <location line="-12"/>
+ <source>Unable to send a message</source>
+ <translation>NepodaÅ™ilo se odeslat hlášenÃ</translation>
+ </message>
+ <message>
+ <location line="-12"/>
+ <source>The bound address is already in use</source>
+ <translation>Uvedená adresa se už použÃvá</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>Connection timed out</source>
+ <translation>ÄŒasový limit pro spojenà byl pÅ™ekroÄen</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Network error</source>
+ <translation>SÃÅ¥ová chyba</translation>
+ </message>
+ <message>
+ <location line="-45"/>
+ <source>Unsupported socket operation</source>
+ <translation>Nepodporovaná zásuvková operace (povel pro socket)</translation>
+ </message>
+ <message>
+ <location line="+51"/>
+ <source>Operation on non-socket</source>
+ <translation>Operaci lze použÃt pouze na jedné zásuvce (socketu)</translation>
+ </message>
+ <message>
+ <location line="-66"/>
+ <source>Unable to initialize broadcast socket</source>
+ <translation>Zásuvku pro vysÃlánà (socket) se nepodaÅ™ilo spustit</translation>
+ </message>
+ <message>
+ <location line="+72"/>
+ <source>Unknown error</source>
+ <translation>Neznámá chyba</translation>
+ </message>
+ <message>
+ <location line="-75"/>
+ <source>Unable to initialize non-blocking socket</source>
+ <translation>NeblokujÃcà zásuvku (socket) se nepodaÅ™ilo spustit</translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>The address is protected</source>
+ <translation>Adresa je chráněna</translation>
+ </message>
+ <message>
+ <location line="-18"/>
+ <source>Network unreachable</source>
+ <translation>SÃÅ¥ je nedosažitelná</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>The address is not available</source>
+ <translation>Adresa nenà dostupná</translation>
+ </message>
+ <message>
+ <location line="-30"/>
+ <source>Out of resources</source>
+ <translation>Nejsou dostupné žádné zdroje</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessCacheBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+66"/>
+ <source>Error opening %1</source>
+ <translation>%1 se nepodaÅ™ilo otevÅ™Ãt</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessDebugPipeBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+195"/>
+ <source>Write error writing to %1: %2</source>
+ <translation>Při zápisu do souboru %1: %2 nastala chyba</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessFileBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+100"/>
+ <source>Request for opening non-local file %1</source>
+ <translation>Požadavek na otevÅ™enà souboru pÅ™es sÃÅ¥ %1</translation>
+ </message>
+ <message>
+ <location line="+152"/>
+ <source>Read error reading from %1: %2</source>
+ <translation>PÅ™i Ätenà ze souboru %1 nastala chyba: %2</translation>
+ </message>
+ <message>
+ <location line="-21"/>
+ <source>Cannot open %1: Path is a directory</source>
+ <translation>%1 nelze otevÅ™Ãt: Jedná se o adresář</translation>
+ </message>
+ <message>
+ <location line="-86"/>
+ <source>Error opening %1: %2</source>
+ <translation>%1 se nepodaÅ™ilo otevÅ™Ãt: %2</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Write error writing to %1: %2</source>
+ <translation>Při zápisu do souboru %1: %2 nastala chyba</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessFtpBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+131"/>
+ <source>No suitable proxy found</source>
+ <translation>NepodaÅ™ilo se najÃt žádný vhodný proxy server</translation>
+ </message>
+ <message>
+ <location line="+165"/>
+ <source>Error while downloading %1: %2</source>
+ <translation>Při stahovánà %1 se vyskytla chyba: %2</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Error while uploading %1: %2</source>
+ <translation>Při nahrávánà %1 se vyskytla chyba: %2</translation>
+ </message>
+ <message>
+ <location line="-153"/>
+ <source>Cannot open %1: is a directory</source>
+ <translation>%1 nelze otevÅ™Ãt: Jedná se o adresář</translation>
+ </message>
+ <message>
+ <location line="+112"/>
+ <source>Logging in to %1 failed: authentication required</source>
+ <translation>Přihlášenà do %1 se nezdařilo: Je požadována autentizace</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkAccessHttpBackend</name>
+ <message>
+ <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+585"/>
+ <source>No suitable proxy found</source>
+ <translation>NepodaÅ™ilo se najÃt žádný vhodný proxy server</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkReply</name>
+ <message>
+ <location line="+95"/>
+ <source>Error downloading %1 - server replied: %2</source>
+ <translation>Beim Herunterladen von %1 trat ein Fehler auf - Die Antwort des Servers ist: %2</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+77"/>
+ <source>Protocol "%1" is unknown</source>
+ <translation>Protokol "%1" nenà znám</translation>
+ </message>
+</context>
+<context>
+ <name>QNetworkReplyImpl</name>
+ <message>
+ <location line="+519"/>
+ <location line="+28"/>
+ <source>Operation canceled</source>
+ <translation>Operace byla zrušena</translation>
+ </message>
+</context>
+<context>
+ <name>QOCIDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2166"/>
+ <source>Unable to commit transaction</source>
+ <translation>Transakci se nepodaÅ™ilo provést (operace 'commit', odeslánÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <source>Unable to initialize</source>
+ <translation type="obsolete">Inicializace se nezdařila</translation>
+ </message>
+ <message>
+ <location line="-90"/>
+ <source>Unable to logon</source>
+ <translation>Přihlášenà se nezdařilo</translation>
+ </message>
+ <message>
+ <location line="+109"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Transakci se nepodaÅ™ilo zvrátit (operace 'rollback', zvrácenÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <location line="-38"/>
+ <source>Unable to begin transaction</source>
+ <translation>Transakci se nepodařilo spustit</translation>
+ </message>
+ <message>
+ <location line="-215"/>
+ <source>Unable to initialize</source>
+ <comment>QOCIDriver</comment>
+ <translation>Spuštěnà se nezdařilo</translation>
+ </message>
+</context>
+<context>
+ <name>QOCIResult</name>
+ <message>
+ <location line="-165"/>
+ <source>Unable to alloc statement</source>
+ <translation>PÅ™idÄ›lenà pÅ™Ãkazu se nepodaÅ™ilo</translation>
+ </message>
+ <message>
+ <location line="-59"/>
+ <source>Unable to goto next</source>
+ <translation>Nelze jÃt k dalÅ¡Ãmu prvku</translation>
+ </message>
+ <message>
+ <location line="+100"/>
+ <source>Unable to get statement type</source>
+ <translation>NepodaÅ™ilo se zÃskat typ pÅ™Ãkazu</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Unable to execute statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo provést</translation>
+ </message>
+ <message>
+ <location line="-634"/>
+ <location line="+161"/>
+ <location line="+15"/>
+ <source>Unable to bind column for batch execute</source>
+ <translation>NepodaÅ™ilo se spojit sloupec pro provedenà pÅ™Ãkazu dávkového zpracovánÃ</translation>
+ </message>
+ <message>
+ <source>Unable to execute select statement</source>
+ <translation type="obsolete">Výběrové vyhledávánà se nepodařilo provést</translation>
+ </message>
+ <message>
+ <location line="+393"/>
+ <source>Unable to prepare statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo pÅ™ipravit</translation>
+ </message>
+ <message>
+ <location line="-378"/>
+ <source>Unable to execute batch statement</source>
+ <translation>PÅ™Ãkaz pro dávkové zpracovánà se nepodaÅ™ilo provést</translation>
+ </message>
+ <message>
+ <location line="+424"/>
+ <source>Unable to bind value</source>
+ <translation>Hodnotu se nepodařilo spojit</translation>
+ </message>
+</context>
+<context>
+ <name>QODBCDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+2045"/>
+ <source>Unable to commit transaction</source>
+ <translation>Transakci se nepodaÅ™ilo provést (operace 'commit', odeslánÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Unable to enable autocommit</source>
+ <translation>'autocommit' se nepodařilo povolit</translation>
+ </message>
+ <message>
+ <source>Unable to connect - Driver doesn't support all needed functionality</source>
+ <translation type="obsolete">NepodaÅ™ilo se navázat spojenÃ, protože ovladaÄ nutnou funkcionalitu plnÄ› nepodporuje</translation>
+ </message>
+ <message>
+ <location line="-49"/>
+ <source>Unable to disable autocommit</source>
+ <translation>'autocommit', automatické odeslánÃ, se nepodaÅ™ilo zastavit</translation>
+ </message>
+ <message>
+ <location line="-238"/>
+ <source>Unable to connect</source>
+ <translation>NepodaÅ™ilo se navázat spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Unable to connect - Driver doesn't support all functionality required</source>
+ <translation>NepodaÅ™ilo se navázat spojenÃ, protože ovladaÄ nutnou funkcionalitu plnÄ› nepodporuje</translation>
+ </message>
+ <message>
+ <location line="+266"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Transakci se nepodaÅ™ilo zvrátit (operace 'rollback', zvrácenÃ, se nezdaÅ™ila)</translation>
+ </message>
+</context>
+<context>
+ <name>QODBCResult</name>
+ <message>
+ <location line="-566"/>
+ <source>Unable to bind variable</source>
+ <translation>Proměnnou se nepodařilo provést</translation>
+ </message>
+ <message>
+ <location line="-615"/>
+ <location line="+623"/>
+ <source>Unable to execute statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo provést</translation>
+ </message>
+ <message>
+ <location line="-547"/>
+ <source>Unable to fetch next</source>
+ <translation>Dalšà datový záznam se nepodařilo natáhnout</translation>
+ </message>
+ <message>
+ <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+190"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+72"/>
+ <location line="+576"/>
+ <source>Unable to fetch last</source>
+ <translation>Poslednà datový záznam se nepodařilo natáhnout</translation>
+ </message>
+ <message>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-377"/>
+ <source>Unable to prepare statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo spustit</translation>
+ </message>
+ <message>
+ <location line="-230"/>
+ <source>Unable to fetch previous</source>
+ <translation>Předchozà datový záznam se nepodařilo natáhnout</translation>
+ </message>
+ <message>
+ <location line="-63"/>
+ <source>Unable to fetch</source>
+ <translation>Nepodařilo se natáhnout žádná data</translation>
+ </message>
+ <message>
+ <location line="-71"/>
+ <location line="+346"/>
+ <source>QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration</source>
+ <translation>QODBCResult::reset: 'SQL_CURSOR_STATIC' se nepodaÅ™ilo nastavit jako pÅ™Ãkaz vlastnosti . Ověřte, prosÃm, nastavenà svého ODBC ovladaÄe</translation>
+ </message>
+ <message>
+ <location line="-231"/>
+ <source>Unable to fetch first</source>
+ <translation>Prvnà datový záznam se nepodařilo natáhnout</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="-97"/>
+ <source>Invalid hostname</source>
+ <translation>Neplatný název pro hostitelský poÄÃtaÄ</translation>
+ </message>
+ <message>
+ <source>Home</source>
+ <translation type="obsolete">Home</translation>
+ </message>
+ <message>
+ <source>Protocol error: packet of size 0 received</source>
+ <translation type="obsolete">Chyba v zápisu: Byl přijat paket o nulové velikosti</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+131"/>
+ <source>Invalid URI: %1</source>
+ <translation>Neplátná URI: %1</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+60"/>
+ <source>Socket error on %1: %2</source>
+ <translation>Chyba zásuvky (socketu) u %1: %2</translation>
+ </message>
+ <message>
+ <location filename="../src/network/kernel/qhostinfo.cpp" line="+175"/>
+ <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+0"/>
+ <source>No host name given</source>
+ <translation>Nebyl zadán název pro hostitelský poÄÃtaÄ</translation>
+ </message>
+ <message>
+ <source>Read error reading from %1: %2</source>
+ <translation type="obsolete">PÅ™i Ätenà ze souboru %1 nastala chyba: %2</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+15"/>
+ <source>Remote host closed the connection prematurely on %1</source>
+ <translation>Vzdálený poÄÃtaÄ pÅ™edÄasnÄ› ukonÄil spojenà s %1</translation>
+ </message>
+ <message>
+ <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="-57"/>
+ <source>Operation not supported on %1</source>
+ <translation>Tato operace nenà %1 podporována</translation>
+ </message>
+ <message>
+ <source>Write error writing to %1: %2</source>
+ <translation type="obsolete">Při zápisu do souboru %1: %2 nastala chyba</translation>
+ </message>
+</context>
+<context>
+ <name>QPPDOptionsModel</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1198"/>
+ <source>Name</source>
+ <translation>Název</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Value</source>
+ <translation>Hodnota</translation>
+ </message>
+</context>
+<context>
+ <name>QPSQLDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+1251"/>
+ <source>Unable to subscribe</source>
+ <translation>Registrace se nezdařila</translation>
+ </message>
+ <message>
+ <location line="-420"/>
+ <source>Could not begin transaction</source>
+ <translation>Transakci se nepodařilo spustit</translation>
+ </message>
+ <message>
+ <location line="+46"/>
+ <source>Could not rollback transaction</source>
+ <translation>Transakci se nepodaÅ™ilo zvrátit (operace 'rollback', zvrácenÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <location line="-16"/>
+ <source>Could not commit transaction</source>
+ <translation>Transakci se nepodaÅ™ilo provést (operace 'commit', odeslánÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <location line="-79"/>
+ <source>Unable to connect</source>
+ <translation>NepodaÅ™ilo se navázat spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+501"/>
+ <source>Unable to unsubscribe</source>
+ <translation>Registraci se nepodařilo zrušit</translation>
+ </message>
+</context>
+<context>
+ <name>QPSQLResult</name>
+ <message>
+ <location line="-713"/>
+ <source>Unable to prepare statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo pÅ™ipravit</translation>
+ </message>
+ <message>
+ <location line="-372"/>
+ <source>Unable to create query</source>
+ <translation>Nepodařilo se vytvořit žádný dotaz</translation>
+ </message>
+</context>
+<context>
+ <name>QPageSetupWidget</name>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupwidget.ui"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location/>
+ <source>bottom margin</source>
+ <translation>Dolnà okraj</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Paper</source>
+ <translation>PapÃr</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Paper source:</source>
+ <translation>Zdroj papÃru:</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
+ <source>Centimeters (cm)</source>
+ <translation>Centimetry (cm)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupwidget.ui"/>
+ <source>right margin</source>
+ <translation>Pravý okraj</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Margins</source>
+ <translation>Okraje</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Landscape</source>
+ <translation>Formát na Å¡ÃÅ™ku</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Width:</source>
+ <translation>Å ÃÅ™ka:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Orientation</source>
+ <translation>ZaměřenÃ</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Portrait</source>
+ <translation>Formát na výšku</translation>
+ </message>
+ <message>
+ <location/>
+ <source>top margin</source>
+ <translation>Hornà okraj</translation>
+ </message>
+ <message>
+ <location/>
+ <source>left margin</source>
+ <translation>Levý okraj</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Page size:</source>
+ <translation>Velikost stran:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Reverse portrait</source>
+ <translation>Obrácený formát na výšku</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+0"/>
+ <source>Millimeters (mm)</source>
+ <translation>Milimetry (mm)</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Points (pt)</source>
+ <translation>Body (pt)</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Inches (in)</source>
+ <translation>Palce (in)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupwidget.ui"/>
+ <source>Reverse landscape</source>
+ <translation>Obrácený formát na Å¡ÃÅ™ku</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Height:</source>
+ <translation>Výška:</translation>
+ </message>
+</context>
+<context>
+ <name>QPluginLoader</name>
+ <message>
+ <location filename="../src/corelib/plugin/qpluginloader.cpp" line="-89"/>
+ <source>The plugin was not loaded.</source>
+ <translation>PÅ™Ãdavný modul nebyl nahrán.</translation>
+ </message>
+ <message>
+ <location line="+113"/>
+ <source>Unknown error</source>
+ <translation>Neznámá chyba</translation>
+ </message>
+</context>
+<context>
+ <name>QPrintDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="-232"/>
+ <source>A0</source>
+ <translation>A0</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A1</source>
+ <translation>A1</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A2</source>
+ <translation>A2</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A3</source>
+ <translation>A3</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A4</source>
+ <translation>A4</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A5</source>
+ <translation>A5</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A6</source>
+ <translation>A6</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A7</source>
+ <translation>A7</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A8</source>
+ <translation>A8</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>A9</source>
+ <translation>A9</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B0</source>
+ <translation>B0</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B1</source>
+ <translation>B1</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B2</source>
+ <translation>B2</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B3</source>
+ <translation>B3</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B4</source>
+ <translation>B4</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B5</source>
+ <translation>B5</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B6</source>
+ <translation>B6</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B7</source>
+ <translation>B7</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B8</source>
+ <translation>B8</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B9</source>
+ <translation>B9</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+266"/>
+ <source>OK</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+1"/>
+ <source>B10</source>
+ <translation>B10</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>C5E</source>
+ <translation>C5E</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>DLE</source>
+ <translation>DLE</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+335"/>
+ <source>A6 (105 x 148 mm)</source>
+ <translation>A6 (105 x 148 mm)</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Legal (8.5 x 14 inches, 216 x 356 mm)</source>
+ <translation>Právnà (8,5 x 14 palců, 216 x 356 mm)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+2"/>
+ <source>Folio</source>
+ <translation>Folio</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Legal</source>
+ <translation>PrávnÃ</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+20"/>
+ <source>Print all</source>
+ <translation>Tisknout vše</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+112"/>
+ <location line="+13"/>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
+ <source>Print</source>
+ <translation>Tisk</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-733"/>
+ <source>&Options <<</source>
+ <translation>&Nastavenà << </translation>
+ </message>
+ <message>
+ <location line="-72"/>
+ <location line="+68"/>
+ <source>&Options >></source>
+ <translation>&Nastavenà >></translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-30"/>
+ <source>B6 (125 x 176 mm)</source>
+ <translation>B6 (125 x 176 mm)</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>B8 (62 x 88 mm)</source>
+ <translation>B8 (62 x 88 mm)</translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <source>A8 (52 x 74 mm)</source>
+ <translation>A8 (52 x 74 mm)</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>B9 (44 x 62 mm)</source>
+ <translation>B9 (44 x 62 mm)</translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <source>A9 (37 x 52 mm)</source>
+ <translation>A9 (37 x 52 mm)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>B0 (1000 x 1414 mm)</source>
+ <translation>B0 (1000 x 1414 mm)</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>A5 (148 x 210 mm)</source>
+ <translation>A5 (148 x 210 mm)</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Tabloid (279 x 432 mm)</source>
+ <translation>Bulvárnà noviny/tisk (279 x 432 mm)</translation>
+ </message>
+ <message>
+ <location line="-8"/>
+ <source>B10 (31 x 44 mm)</source>
+ <translation>B10 (31 x 44 mm)</translation>
+ </message>
+ <message>
+ <location line="-8"/>
+ <source>B2 (500 x 707 mm)</source>
+ <translation>B2 (500 x 707 mm)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-63"/>
+ <source>&Print</source>
+ <translation>&Tisk</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-9"/>
+ <source>A3 (297 x 420 mm)</source>
+ <translation>A3 (297 x 420 mm)</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Print selection</source>
+ <translation>Tisk výběru</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+321"/>
+ <source>Print to File (Postscript)</source>
+ <translation>Tisk do souboru (Postscript)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-33"/>
+ <source>B4 (250 x 353 mm)</source>
+ <translation>B4 (250 x 353 mm)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+206"/>
+ <source>%1 already exists.
+Do you want to overwrite it?</source>
+ <translation>Soubor %1 již existuje.
+Má se přepsat?</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-13"/>
+ <source>A1 (594 x 841 mm)</source>
+ <translation>A1 (594 x 841 mm)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+4"/>
+ <source>Custom</source>
+ <translation>Stanovený uživatelem</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+10"/>
+ <source>B1 (707 x 1000 mm)</source>
+ <translation>B1 (707 x 1000 mm)</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Folio (210 x 330 mm)</source>
+ <translation>Folio (210 x 330 mm)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="-5"/>
+ <source>Ledger</source>
+ <translation>Hlavnà (úÄetnÃ) kniha</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Letter</source>
+ <translation>Dopis</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-2"/>
+ <source>DLE (110 x 220 mm)</source>
+ <translation>DLE (110 x 220 mm)</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>C5E (163 x 229 mm)</source>
+ <translation>C5E (163 x 229 mm)</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>B5 (176 x 250 mm, 6.93 x 9.84 inches)</source>
+ <translation>B5 (176 x 250 mm, 6.93 x 9.84 palců</translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>Print range</source>
+ <translation>Tisková oblast</translation>
+ </message>
+ <message>
+ <location line="-229"/>
+ <source>File exists</source>
+ <translation>Soubor již existuje</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-158"/>
+ <source>Write %1 file</source>
+ <translation>Zapsat %1 soubor</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+181"/>
+ <source>A0 (841 x 1189 mm)</source>
+ <translation>A0 (841 x 1189 mm)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-1"/>
+ <source>Local file</source>
+ <translation>MÃstnà soubor</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+108"/>
+ <source>locally connected</source>
+ <translation>pÅ™Ãmo spojeno</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+25"/>
+ <source>Ledger (432 x 279 mm)</source>
+ <translation>Hlavnà (úÄetnÃ) kniha (432 x 279 mm)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+23"/>
+ <location line="+225"/>
+ <source>Aliases: %1</source>
+ <translation>PÅ™ezdÃvka: %1</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-48"/>
+ <source>Print to File (PDF)</source>
+ <translation>Tisk do souboru (PDF)</translation>
+ </message>
+ <message>
+ <location line="+123"/>
+ <source>Print To File ...</source>
+ <translation>Tisk do souboru...</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+4"/>
+ <source>US Common #10 Envelope (105 x 241 mm)</source>
+ <translation>US běžná #10 obálka (105 x 241 mm)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+1"/>
+ <source>Tabloid</source>
+ <translation>Bulvárnà noviny</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-25"/>
+ <source>A4 (210 x 297 mm, 8.26 x 11.7 inches)</source>
+ <translation>A4 (210 x 297 mm, 8.26 x 11.7 palců)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="-5"/>
+ <source>Executive</source>
+ <translation>ProvádÄ›cÃ</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+223"/>
+ <location line="+199"/>
+ <source>unknown</source>
+ <translation>Neznámý</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-184"/>
+ <source><qt>Do you want to overwrite it?</qt></source>
+ <translation><qt>Chcete jej přepsat?</qt></translation>
+ </message>
+ <message>
+ <location line="+203"/>
+ <source>Executive (7.5 x 10 inches, 191 x 254 mm)</source>
+ <translation>Prováděcà (7,5 x 10 palců, 191 x 254 mm)</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Letter (8.5 x 11 inches, 216 x 279 mm)</source>
+ <translation>Dopis (8,5 x 11 palců, 216 x 279 mm)</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+1"/>
+ <source>The 'From' value cannot be greater than the 'To' value.</source>
+ <translation>Údaj pro prvnà stranu nesmà být většà než údaj pro poslednà stranu.</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+6"/>
+ <source>US Common #10 Envelope</source>
+ <translation>US běžná #10 obálka</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+76"/>
+ <source>%1 is a directory.
+Please choose a different file name.</source>
+ <translation>%1 je adresář.
+Zvolte, prosÃm, pro soubor jiný název.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>File %1 is not writable.
+Please choose a different file name.</source>
+ <translation>Soubor %1 je chráněn proti zápisu.
+Zvolte, prosÃm, pro soubor jiný název.</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-14"/>
+ <source>B3 (353 x 500 mm)</source>
+ <translation>B3 (353 x 500 mm)</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>A7 (74 x 105 mm)</source>
+ <translation>A7 (74 x 105 mm)</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>A2 (420 x 594 mm)</source>
+ <translation>A2 (420 x 594 mm)</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>B7 (88 x 125 mm)</source>
+ <translation>B7 (88 x 125 mm)</translation>
+ </message>
+</context>
+<context>
+ <name>QPrintPreviewDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+246"/>
+ <source>%1%</source>
+ <translation>%1%</translation>
+ </message>
+ <message>
+ <location line="+68"/>
+ <source>Print Preview</source>
+ <translation>Náhled tisku</translation>
+ </message>
+ <message>
+ <source>Close</source>
+ <translation type="obsolete">ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="+89"/>
+ <source>Print</source>
+ <translation>Tisk</translation>
+ </message>
+ <message>
+ <location line="-46"/>
+ <source>Fit page</source>
+ <translation>Přizpůsobit stranu</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Zoom in</source>
+ <translation>Zvětšit</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Landscape</source>
+ <translation>Formát na Å¡ÃÅ™ku</translation>
+ </message>
+ <message>
+ <location line="-7"/>
+ <source>Zoom out</source>
+ <translation>Zmenšit</translation>
+ </message>
+ <message>
+ <location line="-13"/>
+ <source>Fit width</source>
+ <translation>PÅ™izpůsobit Å¡ÃÅ™ku</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Portrait</source>
+ <translation>Formát na výšku</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
+ <location line="+12"/>
+ <source>Page Setup</source>
+ <translation>Nastavenà strany</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+29"/>
+ <source>Page setup</source>
+ <translation>Nastavenà strany</translation>
+ </message>
+ <message>
+ <location line="-16"/>
+ <source>Show overview of all pages</source>
+ <translation>Ukázat přehled všech stran</translation>
+ </message>
+ <message>
+ <location line="-42"/>
+ <source>First page</source>
+ <translation>Prvnà strana</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Last page</source>
+ <translation>Poslednà strana</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Show single page</source>
+ <translation>Ukázat jednotlivé strany</translation>
+ </message>
+ <message>
+ <location line="+168"/>
+ <source>Export to PDF</source>
+ <translation>Vyvést do PDF</translation>
+ </message>
+ <message>
+ <location line="-209"/>
+ <source>Previous page</source>
+ <translation>Předchozà strana</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>Next page</source>
+ <translation>Dalšà strana</translation>
+ </message>
+ <message>
+ <location line="+43"/>
+ <source>Show facing pages</source>
+ <translation>Ukázat strany ležÃcà naproti</translation>
+ </message>
+ <message>
+ <location line="+170"/>
+ <source>Export to PostScript</source>
+ <translation>Vyvést do PostScriptu</translation>
+ </message>
+</context>
+<context>
+ <name>QPrintPropertiesWidget</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintpropertieswidget.ui"/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Page</source>
+ <translation>Strana</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Advanced</source>
+ <translation>RozÅ¡ÃÅ™ené</translation>
+ </message>
+</context>
+<context>
+ <name>QPrintSettingsOutput</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintsettingsoutput.ui"/>
+ <source>to</source>
+ <translation>do</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location/>
+ <source>None</source>
+ <translation>Žádný</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Color</source>
+ <translation>Barva</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Print all</source>
+ <translation>Tisknout vše</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Selection</source>
+ <translation>Výběr</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Long side</source>
+ <translation>Dlouhá strana</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Copies</source>
+ <translation>PoÄet exemplářů</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Print range</source>
+ <translation>Tisk oblasti</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Color Mode</source>
+ <translation>Barevný režim</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Options</source>
+ <translation>Volby</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Output Settings</source>
+ <translation>Nastavenà výstupu</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Reverse</source>
+ <translation>Obrácený</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Grayscale</source>
+ <translation>OdstÃny Å¡edi</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Short side</source>
+ <translation>Krátká strana</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Collate</source>
+ <translation>Srovnat</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Copies:</source>
+ <translation>PoÄet exemplářů:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Pages from</source>
+ <translation>Strany od</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Duplex Printing</source>
+ <translation>Zdvojený tisk</translation>
+ </message>
+</context>
+<context>
+ <name>QPrintWidget</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprintwidget.ui"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Form</source>
+ <translation>Formulář</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Type:</source>
+ <translation>Typ:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>&Name:</source>
+ <translation>&Název:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Output &file:</source>
+ <translation>Výstupnà &soubor:</translation>
+ </message>
+ <message>
+ <location/>
+ <source>P&roperties</source>
+ <translation>&Vlastnosti</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Preview</source>
+ <translation>Náhled</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Printer</source>
+ <translation>Tiskárna</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Location:</source>
+ <translation>UmÃstÄ›nÃ:</translation>
+ </message>
+</context>
+<context>
+ <name>QProcess</name>
+ <message>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+954"/>
+ <location line="+826"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+763"/>
+ <source>Error writing to process</source>
+ <translation>Zápis do procesu se nezdařil</translation>
+ </message>
+ <message>
+ <location line="+203"/>
+ <source>No program defined</source>
+ <translation>Nestanoven žádný program</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="+653"/>
+ <source>Resource error (fork failure): %1</source>
+ <translation>PotÞe se zdroji (selhánà rozcestà - "fork failure"): %1</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/io/qprocess.cpp" line="-1128"/>
+ <location line="+52"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="-190"/>
+ <location line="+50"/>
+ <source>Error reading from process</source>
+ <translation>Čtenà z procesu se nezdařilo</translation>
+ </message>
+ <message>
+ <source>Process failed to start</source>
+ <translation type="obsolete">Spuštěnà procesu se nezdařilo</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/io/qprocess_unix.cpp" line="-251"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="-486"/>
+ <source>Could not open input redirection for reading</source>
+ <translation>Vstupnà pÅ™esmÄ›rovánà se nepodaÅ™ilo otevÅ™Ãt pro ÄtenÃ</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+20"/>
+ <source>Could not open output redirection for writing</source>
+ <translation>Výstupnà pÅ™esmÄ›rovánà se nepodaÅ™ilo otevÅ™Ãt pro zápis</translation>
+ </message>
+ <message>
+ <location line="+491"/>
+ <location line="+52"/>
+ <location line="+74"/>
+ <location line="+66"/>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="+406"/>
+ <location line="+50"/>
+ <location line="+75"/>
+ <location line="+42"/>
+ <location line="+54"/>
+ <source>Process operation timed out</source>
+ <translation>PÅ™ekroÄenà Äasu u procesu</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+117"/>
+ <source>Process crashed</source>
+ <translation>Proces spadl</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/io/qprocess_win.cpp" line="-381"/>
+ <source>Process failed to start: %1</source>
+ <translation>Proces se nepodařilo spustit: %1</translation>
+ </message>
+</context>
+<context>
+ <name>QProgressDialog</name>
+ <message>
+ <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+196"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+</context>
+<context>
+ <name>QPushButton</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="-4"/>
+ <source>Open</source>
+ <translation>OtevÅ™Ãt</translation>
+ </message>
+</context>
+<context>
+ <name>QRadioButton</name>
+ <message>
+ <location line="+12"/>
+ <source>Check</source>
+ <translation>OznaÄit křÞkem</translation>
+ </message>
+</context>
+<context>
+ <name>QRegExp</name>
+ <message>
+ <location filename="../src/corelib/tools/qregexp.cpp" line="+68"/>
+ <source>bad lookahead syntax</source>
+ <translation>nesprávná syntax pro plánovánà dopředu</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>no error occurred</source>
+ <translation>žádná chyba</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>missing left delim</source>
+ <translation>chybÄ›jÃcà levé vymezenÃ</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>bad char class syntax</source>
+ <translation>nesprávná syntax pro tÅ™Ãdu znaku</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>disabled feature used</source>
+ <translation>byla použita zakázaná vlastnost</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>invalid octal value</source>
+ <translation>neplatná osmiÄková hodnota</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>invalid interval</source>
+ <translation>neplatný interval</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>invalid category</source>
+ <translation>neplatná skupina</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>bad repetition syntax</source>
+ <translation>nesprávná syntax pro opakovánÃ</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>met internal limit</source>
+ <translation>dosažena vnitřnà mez</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>unexpected end</source>
+ <translation>neoÄekávaný konec</translation>
+ </message>
+</context>
+<context>
+ <name>QSQLite2Driver</name>
+ <message>
+ <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+449"/>
+ <source>Unable to commit transaction</source>
+ <translation>Transakci se nepodaÅ™ilo provést (operace 'commit', odeslánÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <source>Error to open database</source>
+ <translation type="obsolete">NepodaÅ™ilo se otevÅ™Ãt spojenà s datatabázÃ</translation>
+ </message>
+ <message>
+ <source>Unable to rollback Transaction</source>
+ <translation type="obsolete">Transakci se nepodaÅ™ilo zvrátit (operace 'rollback', zvrácenÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <location line="-17"/>
+ <source>Unable to begin transaction</source>
+ <translation>Transakci se nepodařilo spustit</translation>
+ </message>
+ <message>
+ <location line="-41"/>
+ <source>Error opening database</source>
+ <translation>NepodaÅ™ilo se otevÅ™Ãt spojenà s databázÃ</translation>
+ </message>
+ <message>
+ <location line="+75"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Transakci se nepodaÅ™ilo zvrátit (operace 'rollback', zvrácenÃ, se nezdaÅ™ila)</translation>
+ </message>
+</context>
+<context>
+ <name>QSQLite2Result</name>
+ <message>
+ <location line="-176"/>
+ <source>Unable to execute statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo provést</translation>
+ </message>
+ <message>
+ <location line="-143"/>
+ <source>Unable to fetch results</source>
+ <translation>Výsledek se nepodařilo natáhnout</translation>
+ </message>
+</context>
+<context>
+ <name>QSQLiteDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+590"/>
+ <source>Unable to commit transaction</source>
+ <translation>Transakci se nepodaÅ™ilo provést (operace 'commit', odeslánÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <location line="-35"/>
+ <source>Error closing database</source>
+ <translation>NepodaÅ™ilo se uzavÅ™Ãt spojenà s datatabázÃ</translation>
+ </message>
+ <message>
+ <location line="-11"/>
+ <source>Error opening database</source>
+ <translation>NepodaÅ™ilo se otevÅ™Ãt spojenà s databázÃ</translation>
+ </message>
+ <message>
+ <location line="+61"/>
+ <source>Unable to rollback transaction</source>
+ <translation>Transakci se nepodaÅ™ilo zvrátit (operace 'rollback', zvrácenÃ, se nezdaÅ™ila)</translation>
+ </message>
+ <message>
+ <location line="-30"/>
+ <source>Unable to begin transaction</source>
+ <translation>Transakci se nepodařilo spustit</translation>
+ </message>
+</context>
+<context>
+ <name>QSQLiteResult</name>
+ <message>
+ <location line="-378"/>
+ <location line="+66"/>
+ <location line="+8"/>
+ <source>Unable to fetch row</source>
+ <translation>Řádek se nepodařilo natáhnout</translation>
+ </message>
+ <message>
+ <location line="-73"/>
+ <source>No query</source>
+ <translation>Žádný požadavek</translation>
+ </message>
+ <message>
+ <location line="+132"/>
+ <source>Unable to execute statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo provést</translation>
+ </message>
+ <message>
+ <location line="+65"/>
+ <source>Unable to bind parameters</source>
+ <translation>Parametry se nepodařilo spojit</translation>
+ </message>
+ <message>
+ <location line="-45"/>
+ <source>Unable to reset statement</source>
+ <translation>PÅ™Ãkaz se nepodaÅ™ilo znovu nastavit</translation>
+ </message>
+ <message>
+ <location line="+52"/>
+ <source>Parameter count mismatch</source>
+ <translation>PoÄet parametrů nenà správný</translation>
+ </message>
+</context>
+<context>
+ <name>QScriptBreakpointsModel</name>
+ <message>
+ <location filename="../src/scripttools/debugging/qscriptbreakpointsmodel.cpp" line="+455"/>
+ <source>ID</source>
+ <translation>ID</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Location</source>
+ <translation>UmÃstÄ›nÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Condition</source>
+ <translation>PodmÃnka</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Ignore-count</source>
+ <translation>Spustit po</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Single-shot</source>
+ <translation>Spustit jednou</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Hit-count</source>
+ <translation>Spuštěný</translation>
+ </message>
+</context>
+<context>
+ <name>QScriptBreakpointsWidget</name>
+ <message>
+ <location filename="../src/scripttools/debugging/qscriptbreakpointswidget.cpp" line="+298"/>
+ <source>New</source>
+ <translation>Nový</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Delete</source>
+ <translation>Smazat</translation>
+ </message>
+</context>
+<context>
+ <name>QScriptDebugger</name>
+ <message>
+ <location filename="../src/scripttools/debugging/qscriptdebugger.cpp" line="+885"/>
+ <location line="+1013"/>
+ <source>Go to Line</source>
+ <translation>JÃt na řádek</translation>
+ </message>
+ <message>
+ <location line="-1012"/>
+ <source>Line:</source>
+ <translation>Řádek:</translation>
+ </message>
+ <message>
+ <location line="+791"/>
+ <source>Interrupt</source>
+ <translation>Přerušit</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Shift+F5</source>
+ <translation>Shift+F5</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Continue</source>
+ <translation>PokraÄovat</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Step Into</source>
+ <translation>Krok do</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>F11</source>
+ <translation>F11</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Step Over</source>
+ <translation>Krok přes</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>F10</source>
+ <translation>F10</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Step Out</source>
+ <translation>Krok ven</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Shift+F11</source>
+ <translation>Shift+F11</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Run to Cursor</source>
+ <translation>Provést po kurzor</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Ctrl+F10</source>
+ <translation>Ctrl+F10</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Run to New Script</source>
+ <translation>Provést po nový skript</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Toggle Breakpoint</source>
+ <translation>PÅ™epnout bod pÅ™eruÅ¡enà (zastavenÃ)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>F9</source>
+ <translation>F9</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Clear Debug Output</source>
+ <translation>Smazat výstup ladÄ›nÃ</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Clear Error Log</source>
+ <translation>Smazat výstupnà zápis s chybami</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Clear Console</source>
+ <translation>Smazat konzoli</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>&Find in Script...</source>
+ <translation>&Hledat ve skriptu...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Ctrl+F</source>
+ <translation>Ctrl+F</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Find &Next</source>
+ <translation>NajÃt &dalÅ¡Ã</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>F3</source>
+ <translation>F3</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Find &Previous</source>
+ <translation>NajÃt &pÅ™edchozÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Shift+F3</source>
+ <translation>Shift+F3</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Ctrl+G</source>
+ <translation>Ctrl+G</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Debug</source>
+ <translation>Ladit</translation>
+ </message>
+</context>
+<context>
+ <name>QScriptDebuggerCodeFinderWidget</name>
+ <message>
+ <location filename="../src/scripttools/debugging/qscriptdebuggercodefinderwidget.cpp" line="+141"/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Previous</source>
+ <translation>PÅ™edchozÃ</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Next</source>
+ <translation>DalÅ¡Ã</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Case Sensitive</source>
+ <translation>RozliÅ¡ujÃcà velká a malá pÃsmena</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Whole words</source>
+ <translation>Celá slova</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source><img src=":/qt/scripttools/debugging/images/wrap.png">&nbsp;Search wrapped</source>
+ <translation><img src=":/qt/scripttools/debugging/images/wrap.png">&nbsp;Hledánà dosáhlo konce</translation>
+ </message>
+</context>
+<context>
+ <name>QScriptDebuggerLocalsModel</name>
+ <message>
+ <location filename="../src/scripttools/debugging/qscriptdebuggerlocalsmodel.cpp" line="+872"/>
+ <source>Name</source>
+ <translation>Název</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Value</source>
+ <translation>Hodnota</translation>
+ </message>
+</context>
+<context>
+ <name>QScriptDebuggerStackModel</name>
+ <message>
+ <location filename="../src/scripttools/debugging/qscriptdebuggerstackmodel.cpp" line="+161"/>
+ <source>Level</source>
+ <translation>Úroveň</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Name</source>
+ <translation>Název</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Location</source>
+ <translation>UmÃstÄ›nÃ</translation>
+ </message>
+</context>
+<context>
+ <name>QScriptEdit</name>
+ <message>
+ <location filename="../src/scripttools/debugging/qscriptedit.cpp" line="+411"/>
+ <source>Toggle Breakpoint</source>
+ <translation>PÅ™epnout bod zastavenÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Disable Breakpoint</source>
+ <translation>Vypnout bod zastavenÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Enable Breakpoint</source>
+ <translation>Zapnout bod zastavenÃ</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Breakpoint Condition:</source>
+ <translation>PodmÃnka zastavenÃ:</translation>
+ </message>
+</context>
+<context>
+ <name>QScriptEngineDebugger</name>
+ <message>
+ <location filename="../src/scripttools/debugging/qscriptenginedebugger.cpp" line="+523"/>
+ <source>Loaded Scripts</source>
+ <translation>Nahrané skripty</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Breakpoints</source>
+ <translation>Body zastavenÃ</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Stack</source>
+ <translation>ZásobnÃk</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Locals</source>
+ <translation>MÃstnà promÄ›nné</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Console</source>
+ <translation>Konzole</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Debug Output</source>
+ <translation>Výstup ladÄ›nÃ</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Error Log</source>
+ <translation>Výstupnà zápis s chybami</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Search</source>
+ <translation>Hledat</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>View</source>
+ <translation>Pohled</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Qt Script Debugger</source>
+ <translation>Qt laděnà skriptů</translation>
+ </message>
+</context>
+<context>
+ <name>QScriptNewBreakpointWidget</name>
+ <message>
+ <location filename="../src/scripttools/debugging/qscriptbreakpointswidget.cpp" line="-223"/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+</context>
+<context>
+ <name>QScrollBar</name>
+ <message>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+456"/>
+ <source>Top</source>
+ <translation>ZaÄátek</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Scroll down</source>
+ <translation>ProjÞdÄ›t dolů</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <source>Scroll here</source>
+ <translation>ProjÞdÄ›t až sem</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Scroll left</source>
+ <translation>ProjÞdět doleva</translation>
+ </message>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+143"/>
+ <source>Line up</source>
+ <translation>O jeden řádek nahoru</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Line down</source>
+ <translation>O jeden řádek dolů</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="-5"/>
+ <source>Bottom</source>
+ <translation>Konec</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-6"/>
+ <source>Page up</source>
+ <translation>O stranu nahoru</translation>
+ </message>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+2"/>
+ <source>Position</source>
+ <translation>Poloha</translation>
+ </message>
+ <message>
+ <location filename="../src/gui/widgets/qscrollbar.cpp" line="+1"/>
+ <source>Page right</source>
+ <translation>O stranu doprava</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Scroll up</source>
+ <translation>ProjÞdět nahoru</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Scroll right</source>
+ <translation>ProjÞdět doprava</translation>
+ </message>
+ <message>
+ <location line="-7"/>
+ <source>Left edge</source>
+ <translation>Levý okraj</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+2"/>
+ <source>Page down</source>
+ <translation>O stranu dolů</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>Page left</source>
+ <translation>O stranu doleva</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>Right edge</source>
+ <translation>Pravý okraj</translation>
+ </message>
+</context>
+<context>
+ <name>QSharedMemory</name>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+88"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+74"/>
+ <source>%1: doesn't exist</source>
+ <translation>%1: Neexistuje</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>%1: UNIX key file doesn't exist</source>
+ <translation>%1: Soubor s unixovým klÃÄem neexistuje</translation>
+ </message>
+ <message>
+ <location line="+78"/>
+ <source>%1: system-imposed size restrictions</source>
+ <translation>%1: Bylo dosaženo systémem podmÃnÄ›né meze velikosti</translation>
+ </message>
+ <message>
+ <source>%1: unix key file doesn't exists</source>
+ <translation type="obsolete">%1: Soubor s unixovým klÃÄem neexistuje</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="+71"/>
+ <source>%1: doesn't exists</source>
+ <translation>%1: Neexistuje</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="-86"/>
+ <source>%1: key is empty</source>
+ <translation>%1: Neplatný údaj u klÃÄe (prázdný)</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="+44"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+67"/>
+ <source>%1: key error</source>
+ <translation>%1: Chybný klÃÄ</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+304"/>
+ <source>%1: create size is less then 0</source>
+ <translation>%1: Údaj o velikosti vytvořenà je menšà než nula</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="-48"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="-35"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-76"/>
+ <source>%1: already exists</source>
+ <translation>%1: Již existuje</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+14"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+25"/>
+ <source>%1: unknown error %2</source>
+ <translation>%1: Neznámá chyba %2</translation>
+ </message>
+ <message>
+ <location line="-11"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-12"/>
+ <source>%1: invalid size</source>
+ <translation>%1: Neplatná velikost</translation>
+ </message>
+ <message>
+ <location line="+67"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+87"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+27"/>
+ <source>%1: unable to make key</source>
+ <translation>%1: NepodaÅ™ilo se vytvoÅ™it klÃÄ</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="-81"/>
+ <source>%1: unable to set key on lock</source>
+ <translation>%1: NepodaÅ™ilo se nastavit klÃÄ pro uzavÅ™enÃ</translation>
+ </message>
+ <message>
+ <location line="+271"/>
+ <source>%1: unable to unlock</source>
+ <translation>%1: Uzavřenà se nepodařilo zrušit</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="-59"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="-105"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-18"/>
+ <source>%1: permission denied</source>
+ <translation>%1: PÅ™Ãstup odepÅ™en</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+54"/>
+ <source>%1: ftok failed</source>
+ <translation>%1: Vyvolánà ftok se nezdařilo</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="-4"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="-40"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-4"/>
+ <source>%1: out of resources</source>
+ <translation>%1: Nejsou již použitelné zdroje</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+164"/>
+ <source>%1: not attached</source>
+ <translation>%1: Nepřipojen</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+90"/>
+ <source>%1: size query failed</source>
+ <translation>%1: Vyhledánà velikosti se nezdařilo</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="-22"/>
+ <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+155"/>
+ <source>%1: unable to lock</source>
+ <translation>%1: Uzavřenà se nezdařilo</translation>
+ </message>
+</context>
+<context>
+ <name>QShortcut</name>
+ <message>
+ <location filename="../src/gui/kernel/qkeysequence.cpp" line="+1143"/>
+ <source>+</source>
+ <translation>+</translation>
+ </message>
+ <message>
+ <location line="-664"/>
+ <source>No</source>
+ <translation>Ne</translation>
+ </message>
+ <message>
+ <location line="-71"/>
+ <source>Up</source>
+ <translation>Nahoru</translation>
+ </message>
+ <message>
+ <location line="+644"/>
+ <location line="+135"/>
+ <source>Alt</source>
+ <translation>Alt</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>F%1</source>
+ <translation>F%1</translation>
+ </message>
+ <message>
+ <location line="-803"/>
+ <source>Del</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>End</source>
+ <translation>End</translation>
+ </message>
+ <message>
+ <location line="-12"/>
+ <source>Esc</source>
+ <translation>Esc</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Ins</source>
+ <translation>Insert</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>Tab</source>
+ <translation>Tab</translation>
+ </message>
+ <message>
+ <location line="+83"/>
+ <source>Yes</source>
+ <translation>Ano</translation>
+ </message>
+ <message>
+ <location line="-58"/>
+ <source>Back</source>
+ <translation>Zpět</translation>
+ </message>
+ <message>
+ <location line="+67"/>
+ <source>Call</source>
+ <translation>VolánÃ</translation>
+ </message>
+ <message>
+ <location line="+563"/>
+ <location line="+135"/>
+ <source>Ctrl</source>
+ <translation>Ctrl</translation>
+ </message>
+ <message>
+ <location line="-775"/>
+ <source>Down</source>
+ <translation>Dolů</translation>
+ </message>
+ <message>
+ <location line="+79"/>
+ <source>Flip</source>
+ <translation>Obrátit</translation>
+ </message>
+ <message>
+ <location line="-72"/>
+ <source>Help</source>
+ <translation>Nápověda</translation>
+ </message>
+ <message>
+ <location line="-12"/>
+ <source>Home</source>
+ <translation>Home</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Left</source>
+ <translation>Vlevo</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Menu</source>
+ <translation>Menu</translation>
+ </message>
+ <message>
+ <location line="+637"/>
+ <location line="+130"/>
+ <source>Meta</source>
+ <translation>Meta</translation>
+ </message>
+ <message>
+ <location line="-772"/>
+ <source>PgUp</source>
+ <translation>PgUp</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Stop</source>
+ <translation>Stop</translation>
+ </message>
+ <message>
+ <location line="-23"/>
+ <source>Enter</source>
+ <translation>Enter</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Pause</source>
+ <translation>Pause</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Print</source>
+ <translation>Print</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Right</source>
+ <translation>Vpravo</translation>
+ </message>
+ <message>
+ <location line="+642"/>
+ <location line="+138"/>
+ <source>Shift</source>
+ <translation>Shift</translation>
+ </message>
+ <message>
+ <location line="-796"/>
+ <source>Space</source>
+ <translation>MezernÃk</translation>
+ </message>
+ <message>
+ <location line="+43"/>
+ <source>Media Record</source>
+ <translation>Nahrát</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Print Screen</source>
+ <translation>Print Screen</translation>
+ </message>
+ <message>
+ <location line="-32"/>
+ <source>Treble Down</source>
+ <translation>Výšky -</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Scroll Lock</source>
+ <translation>Scroll Lock</translation>
+ </message>
+ <message>
+ <location line="-45"/>
+ <source>Volume Down</source>
+ <translation>Hlasitost -</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Volume Mute</source>
+ <translation>Ztlumit hlasitost</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Media Previous</source>
+ <translation>PÅ™edchozÃ</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Home Page</source>
+ <translation>Domovská stránka</translation>
+ </message>
+ <message>
+ <location line="-11"/>
+ <source>Volume Up</source>
+ <translation>Hlasitost +</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Launch (6)</source>
+ <translation>Spustit (6)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (7)</source>
+ <translation>Spustit (7)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (8)</source>
+ <translation>Spustit (8)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (9)</source>
+ <translation>Spustit (9)</translation>
+ </message>
+ <message>
+ <location line="-7"/>
+ <source>Launch (2)</source>
+ <translation>Spustit (2)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (3)</source>
+ <translation>Spustit (3)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (4)</source>
+ <translation>Spustit (4)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (5)</source>
+ <translation>Spustit (5)</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>Launch (0)</source>
+ <translation>Spustit (0)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (1)</source>
+ <translation>Spustit (1)</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Launch (F)</source>
+ <translation>Spustit (F)</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>Launch (B)</source>
+ <translation>Spustit (B)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (C)</source>
+ <translation>Spustit (C)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (D)</source>
+ <translation>Spustit (D)</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Launch (E)</source>
+ <translation>Spustit (E)</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>Launch (A)</source>
+ <translation>Spustit (A)</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Escape</source>
+ <translation>Escape</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Hangup</source>
+ <translation>Pověsit</translation>
+ </message>
+ <message>
+ <location line="-18"/>
+ <source>Insert</source>
+ <translation>Insert</translation>
+ </message>
+ <message>
+ <location line="-43"/>
+ <source>Bass Boost</source>
+ <translation>ZesÃlenà basů</translation>
+ </message>
+ <message>
+ <location line="-15"/>
+ <source>PgDown</source>
+ <translation>PgDown</translation>
+ </message>
+ <message>
+ <location line="-14"/>
+ <source>Return</source>
+ <translation>Return</translation>
+ </message>
+ <message>
+ <location line="+41"/>
+ <source>Search</source>
+ <translation>Hledat</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Select</source>
+ <translation>Vybrat</translation>
+ </message>
+ <message>
+ <location line="-73"/>
+ <source>SysReq</source>
+ <translation>SysReq</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>NumLock</source>
+ <translation>NumLock</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>ScrollLock</source>
+ <translation>ScrollLock</translation>
+ </message>
+ <message>
+ <location line="+68"/>
+ <source>Context1</source>
+ <translation>Kontext1</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Context2</source>
+ <translation>Kontext2</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Context3</source>
+ <translation>Kontext3</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Context4</source>
+ <translation>Kontext4</translation>
+ </message>
+ <message>
+ <location line="-22"/>
+ <source>Page Up</source>
+ <translation>Page Up</translation>
+ </message>
+ <message>
+ <location line="-23"/>
+ <source>Open URL</source>
+ <translation>OtevÅ™Ãt URL</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Caps Lock</source>
+ <translation>Caps Lock</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>System Request</source>
+ <translation>Žádost systému</translation>
+ </message>
+ <message>
+ <location line="-60"/>
+ <source>CapsLock</source>
+ <translation>CapsLock</translation>
+ </message>
+ <message>
+ <location line="-17"/>
+ <source>Backtab</source>
+ <translation>Zpět-Tab</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Bass Up</source>
+ <translation>Basy +</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>Refresh</source>
+ <translation>Obnovit</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Launch Mail</source>
+ <translation>Spustit e-mail</translation>
+ </message>
+ <message>
+ <location line="-45"/>
+ <source>Backspace</source>
+ <translation>Backspace</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Bass Down</source>
+ <translation>Basy -</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Standby</source>
+ <translation>V pohotovosti</translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <source>Treble Up</source>
+ <translation>Výšky +</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>Num Lock</source>
+ <translation>Num Lock</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Number Lock</source>
+ <translation>Zahlen-Feststelltaste</translation>
+ </message>
+ <message>
+ <location line="-30"/>
+ <source>Favorites</source>
+ <translation>OblÃbené</translation>
+ </message>
+ <message>
+ <location line="-17"/>
+ <source>Forward</source>
+ <translation>Dopředu</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Page Down</source>
+ <translation>Obraz dolů</translation>
+ </message>
+ <message>
+ <location line="-33"/>
+ <source>Media Play</source>
+ <translation>PÅ™ehrávánÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Media Stop</source>
+ <translation>Zastavit pÅ™ehrávánÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Media Next</source>
+ <translation>DalÅ¡Ã</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Launch Media</source>
+ <translation>Spustit pÅ™ehrávaÄ</translation>
+ </message>
+</context>
+<context>
+ <name>QSlider</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+153"/>
+ <source>Page up</source>
+ <translation>O stranu nahoru</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Position</source>
+ <translation>Poloha</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Page right</source>
+ <translation>O stranu doprava</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Page down</source>
+ <translation>O stranu dolů</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>Page left</source>
+ <translation>O stranu doleva</translation>
+ </message>
+</context>
+<context>
+ <name>QSocks5SocketEngine</name>
+ <message>
+ <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+710"/>
+ <source>Network operation timed out</source>
+ <translation>ÄŒasový limit pro sÃÅ¥ovou operaci byl pÅ™ekroÄen</translation>
+ </message>
+ <message>
+ <location line="-773"/>
+ <source>Connection to proxy closed prematurely</source>
+ <translation>Proxy server pÅ™edÄasnÄ› ukonÄil spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Proxy authentication failed: %1</source>
+ <translation>Autentizace u proxy serveru se nezdařila: %1</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>Proxy authentication failed</source>
+ <translation>Autentizace u proxy serveru se nezdařila</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>General SOCKSv5 server failure</source>
+ <translation>Všeobecná chyba při spojenàs SOCKSv5 serverem</translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <source>Unknown SOCKSv5 proxy error code 0x%1</source>
+ <translation>Byl obdržen neznámý chybový kód od SOCKSv5 proxy serveru: 0x%1</translation>
+ </message>
+ <message>
+ <location line="-29"/>
+ <source>Connection not allowed by SOCKSv5 server</source>
+ <translation>SOCKSv5 server odmÃtl spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>SOCKSv5 command not supported</source>
+ <translation>Tento SOCKSv5 pÅ™Ãkaz nenà podporován</translation>
+ </message>
+ <message>
+ <location line="-70"/>
+ <source>Connection to proxy timed out</source>
+ <translation>PÅ™i spojenà s proxy serverem byl pÅ™ekroÄen Äasový limit</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>Proxy host not found</source>
+ <translation>Proxy server se nepodařilo najit</translation>
+ </message>
+ <message>
+ <location line="+71"/>
+ <source>TTL expired</source>
+ <translation>TTL uplynul</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Address type not supported</source>
+ <translation>Tento typ adresy nenà podporován</translation>
+ </message>
+ <message>
+ <location line="-87"/>
+ <source>Connection to proxy refused</source>
+ <translation>Proxy server odmÃtl navázánà spojenÃ</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>SOCKS version 5 protocol error</source>
+ <translation>Chyba protokolu (SOCKS verze 5)</translation>
+ </message>
+</context>
+<context>
+ <name>QSoftKeyManager</name>
+ <message>
+ <location filename="../src/gui/kernel/qsoftkeymanager.cpp" line="+78"/>
+ <source>Ok</source>
+ <translation>OK</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Select</source>
+ <translation>Vybrat</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Done</source>
+ <translation>Hotovo</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Options</source>
+ <translation>Volby</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location line="+151"/>
+ <source>Exit</source>
+ <translation>UkonÄit</translation>
+ </message>
+</context>
+<context>
+ <name>QSpinBox</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-567"/>
+ <source>Less</source>
+ <translation>Méně</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>More</source>
+ <translation>VÃce</translation>
+ </message>
+</context>
+<context>
+ <name>QSql</name>
+ <message>
+ <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+893"/>
+ <location line="+16"/>
+ <location line="+36"/>
+ <source>No</source>
+ <translation>Ne</translation>
+ </message>
+ <message>
+ <location line="-53"/>
+ <location line="+16"/>
+ <location line="+36"/>
+ <source>Yes</source>
+ <translation>Ano</translation>
+ </message>
+ <message>
+ <location line="-34"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location line="-20"/>
+ <source>Delete</source>
+ <translation>Delete</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Insert</source>
+ <translation>Vložit</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Update</source>
+ <translation>Obnovit</translation>
+ </message>
+ <message>
+ <location line="-12"/>
+ <source>Delete this record?</source>
+ <translation>Smazat tento zápis?</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Save edits?</source>
+ <translation>Uložit změny?</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>Confirm</source>
+ <translation>Potvrdit</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Cancel your edits?</source>
+ <translation>Zrušit změny?</translation>
+ </message>
+</context>
+<context>
+ <name>QSslSocket</name>
+ <message>
+ <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+362"/>
+ <source>Error creating SSL session: %1</source>
+ <translation>Nepodařilo se vytvořit sezenà SSL: %1</translation>
+ </message>
+ <message>
+ <location line="-15"/>
+ <source>Error creating SSL session, %1</source>
+ <translation>Nepodařilo se vytvořit sezenà SSL, %1</translation>
+ </message>
+ <message>
+ <location line="-46"/>
+ <source>Cannot provide a certificate with no key, %1</source>
+ <translation>Bez klÃÄe nelze poskytnout žádné osvÄ›dÄenà k volnému použitÃ, %1</translation>
+ </message>
+ <message>
+ <location line="+245"/>
+ <source>Unable to write data: %1</source>
+ <translation>Data se nepodařilo zapsat: %1</translation>
+ </message>
+ <message>
+ <location line="+215"/>
+ <source>Error during SSL handshake: %1</source>
+ <translation>Během startu SSL protokolu se vyskytla chyba: %1</translation>
+ </message>
+ <message>
+ <location line="-453"/>
+ <source>Error loading local certificate, %1</source>
+ <translation>NepodaÅ™ilo se nahrát mÃstnà osvÄ›dÄenÃ, %1</translation>
+ </message>
+ <message>
+ <location line="-23"/>
+ <source>Invalid or empty cipher list (%1)</source>
+ <translation>Neplatný Äi prázdný seznam se Å¡ifrovacÃmi klÃÄi (%1)</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>Private key does not certificate public key, %1</source>
+ <translation>Vystavenà osvÄ›dÄenà k veÅ™ejnému klÃÄi pÅ™es soukromý klÃÄ se nezdaÅ™ilo, %1</translation>
+ </message>
+ <message>
+ <location line="-67"/>
+ <source>Error creating SSL context (%1)</source>
+ <translation>Nepodařilo se vytvořit žádný kontext SSL (%1)</translation>
+ </message>
+ <message>
+ <location line="+405"/>
+ <source>Error while reading: %1</source>
+ <translation>PÅ™i Ätenà se vyskytla chyba: %1</translation>
+ </message>
+ <message>
+ <location line="-345"/>
+ <source>Error loading private key, %1</source>
+ <translation>Soukromý klÃÄ se nepodaÅ™ilo nahrát, %1</translation>
+ </message>
+</context>
+<context>
+ <name>QStateMachine</name>
+ <message>
+ <location filename="../src/corelib/statemachine/qstatemachine.cpp" line="+998"/>
+ <source>Missing initial state in compound state '%1'</source>
+ <translation>Chybà poÄáteÄnà stav složeného stavu '%1'</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Missing default state in history state '%1'</source>
+ <translation>Chybà výchozà stav ve vývoji stavu '%1'</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>No common ancestor for targets and source of transition from state '%1'</source>
+ <translation>CÃl a zdroj pÅ™echodu ze stavu '%1' nemajà žádný spoleÄný původ</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Unknown error</source>
+ <translation>Neznámá chyba</translation>
+ </message>
+</context>
+<context>
+ <name>QSystemSemaphore</name>
+ <message>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-46"/>
+ <source>%1: does not exist</source>
+ <translation>%1: Neexistuje</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>%1: already exists</source>
+ <translation>%1: Již existuje</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+73"/>
+ <source>%1: unknown error %2</source>
+ <translation>%1: Neznámá chyba %2</translation>
+ </message>
+ <message>
+ <location line="-17"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="-3"/>
+ <source>%1: permission denied</source>
+ <translation>%1: PÅ™Ãstup odepÅ™en</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="-4"/>
+ <source>%1: out of resources</source>
+ <translation>%1: Nejsou již použitelné zdroje</translation>
+ </message>
+</context>
+<context>
+ <name>QTDSDriver</name>
+ <message>
+ <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
+ <source>Unable to open connection</source>
+ <translation>NepodaÅ™ilo se otevÅ™Ãt spojenà s databázÃ</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Unable to use database</source>
+ <translation>Datatbázi se nepodaÅ™ilo použÃt</translation>
+ </message>
+</context>
+<context>
+ <name>QTabBar</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="-326"/>
+ <source>Scroll Left</source>
+ <translation>ProjÞdět doleva</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>Scroll Right</source>
+ <translation>ProjÞdět doprava</translation>
+ </message>
+</context>
+<context>
+ <name>QTcpServer</name>
+ <message>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
+ <source>Operation on socket is not supported</source>
+ <translation>Tato zásuvková (socket) operace nenà podporována</translation>
+ </message>
+</context>
+<context>
+ <name>QTextControl</name>
+ <message>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+2013"/>
+ <source>Cu&t</source>
+ <translation>Vyj&mout</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>&Copy</source>
+ <translation>&KopÃrovat</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <source>&Redo</source>
+ <translation>&Znovu</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>&Undo</source>
+ <translation>&Zpět</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>&Paste</source>
+ <translation>&Vložit</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Delete</source>
+ <translation>Smazat</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Select All</source>
+ <translation>Vybrat vše</translation>
+ </message>
+ <message>
+ <location line="-16"/>
+ <source>Copy &Link Location</source>
+ <translation>&KopÃrovat adresu odkazu</translation>
+ </message>
+</context>
+<context>
+ <name>QToolButton</name>
+ <message>
+ <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+312"/>
+ <location line="+8"/>
+ <source>Open</source>
+ <translation>OtevÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <location line="+6"/>
+ <source>Press</source>
+ <translation>Stisknout</translation>
+ </message>
+</context>
+<context>
+ <name>QUdpSocket</name>
+ <message>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+179"/>
+ <source>This platform does not support IPv6</source>
+ <translation>Tato patforma nepodpotuje IPv6</translation>
+ </message>
+</context>
+<context>
+ <name>QUndoGroup</name>
+ <message>
+ <location filename="../src/gui/util/qundogroup.cpp" line="+413"/>
+ <source>Redo</source>
+ <translation>Znovu</translation>
+ </message>
+ <message>
+ <location line="-28"/>
+ <source>Undo</source>
+ <translation>Zpět</translation>
+ </message>
+</context>
+<context>
+ <name>QUndoModel</name>
+ <message>
+ <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
+ <source><empty></source>
+ <translation><prázdný></translation>
+ </message>
+</context>
+<context>
+ <name>QUndoStack</name>
+ <message>
+ <location filename="../src/gui/util/qundostack.cpp" line="+859"/>
+ <source>Redo</source>
+ <translation>Znovu</translation>
+ </message>
+ <message>
+ <location line="-27"/>
+ <source>Undo</source>
+ <translation>Zpět</translation>
+ </message>
+</context>
+<context>
+ <name>QUnicodeControlCharacterMenu</name>
+ <message>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+906"/>
+ <source>RLE Start of right-to-left embedding</source>
+ <translation>RLE ZaÄátek zapuÅ¡tÄ›nà zprava doleva (right-to-left embedding)</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>ZWSP Zero width space</source>
+ <translation>ZWSP Prostor s nulovou Å¡ÃÅ™kou (Zero width space)</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Insert Unicode control character</source>
+ <translation>Vložit kontrolnà znak Unicode</translation>
+ </message>
+ <message>
+ <location line="-8"/>
+ <source>LRO Start of left-to-right override</source>
+ <translation>LRO ZaÄátek zruÅ¡enà zleva doprava (left-to-right override)</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>LRE Start of left-to-right embedding</source>
+ <translation>LRE ZaÄátek zapuÅ¡tÄ›nà zleva doprava (right-to-left embedding)</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>RLM Right-to-left mark</source>
+ <translation>RLM ZnaÄka zprava doleva (Right-to-left mark)</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>PDF Pop directional formatting</source>
+ <translation>PDF Vsunout směrové formátovánà (Pop directional formatting)</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>ZWNJ Zero width non-joiner</source>
+ <translation>ZWNJ NespojovaÄ s nulovou Å¡ÃÅ™kou (Zero width non-joiner)</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>RLO Start of right-to-left override</source>
+ <translation>RLO ZaÄátek zruÅ¡enà zprava doleva (right-to-left override)</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>ZWJ Zero width joiner</source>
+ <translation>ZWJ SpojovaÄ s nulovou Å¡ÃÅ™kou (Zero width joiner)</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>LRM Left-to-right mark</source>
+ <translation>LRM ZnaÄka zleva doprava (Left-to-right mark)</translation>
+ </message>
+</context>
+<context>
+ <name>QWebFrame</name>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+730"/>
+ <source>Request blocked</source>
+ <translation>Požadavek byl odmÃtnut</translation>
+ </message>
+ <message>
+ <location line="-19"/>
+ <source>Request cancelled</source>
+ <translation>Požadavek byl zrušen</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Cannot show URL</source>
+ <translation>Adresu (URL) nelze ukázat</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Frame load interrupted by policy change</source>
+ <translation>Nahránà rámce bylo přerušeno změnou směrnice</translation>
+ </message>
+ <message>
+ <source>Frame load interruped by policy change</source>
+ <translation type="obsolete">Nahránà rámce bylo přerušeno změnou směrnice</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>File does not exist</source>
+ <translation>Soubor neexistuje</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>Cannot show mimetype</source>
+ <translation>Tento mime typ nelze ukázat</translation>
+ </message>
+</context>
+<context>
+ <name>QWebPage</name>
+ <message>
+ <source>Cut</source>
+ <translation type="obsolete">Vyjmout</translation>
+ </message>
+ <message>
+ <source>LTR</source>
+ <translation type="obsolete">Zleva doprava</translation>
+ </message>
+ <message>
+ <source>RTL</source>
+ <translation type="obsolete">Zprava doleva</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+61"/>
+ <source>Top</source>
+ <translation>ZaÄátek</translation>
+ </message>
+ <message>
+ <source>Bold</source>
+ <translation type="obsolete">TuÄné</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation type="obsolete">KopÃrovat</translation>
+ </message>
+ <message>
+ <source>Stop</source>
+ <translation type="obsolete">UkonÄit</translation>
+ </message>
+ <message>
+ <source>Open Frame</source>
+ <translation type="obsolete">OtevÅ™Ãt rámec</translation>
+ </message>
+ <message>
+ <source>Open Image</source>
+ <translation type="obsolete">Vyobrazenà otevÅ™Ãt v novém oknÄ›</translation>
+ </message>
+ <message>
+ <source>Fonts</source>
+ <translation type="obsolete">PÃsma</translation>
+ </message>
+ <message>
+ <source>Paste</source>
+ <translation type="obsolete">Vložit</translation>
+ </message>
+ <message>
+ <source>Reset</source>
+ <translation type="obsolete">Vrátit</translation>
+ </message>
+ <message>
+ <source>Inspect</source>
+ <translation type="obsolete">Provést prohlÃdku</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+2213"/>
+ <source>Select to the start of the block</source>
+ <translation>Vybrat až po zaÄátek bloku</translation>
+ </message>
+ <message>
+ <location line="-36"/>
+ <source>Move the cursor to the end of the block</source>
+ <translation>Ukazatel polohy posunout až na konec bloku</translation>
+ </message>
+ <message>
+ <location line="-469"/>
+ <source>JavaScript Alert - %1</source>
+ <translation>Upozorněnà od JavaScriptu - %1</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>JavaScript Confirm - %1</source>
+ <translation>Potvrzenà od JavaScriptu - %1</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>JavaScript Prompt - %1</source>
+ <translation>Výzva od JavaScriptu - %1</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>JavaScript Problem - %1</source>
+ <translation>PotÞe s JavaScriptem - %1</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>The script on this page appears to have a problem. Do you want to stop the script?</source>
+ <translation>Vypadá to na to, že skript na této stranÄ› má potÞe. Chcete tento skript zastavit?</translation>
+ </message>
+ <message>
+ <location line="+419"/>
+ <source>Select all</source>
+ <translation>Vybrat vše</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>Select to the start of the line</source>
+ <translation>Vybrat až po zaÄátek řádku</translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>Insert a new paragraph</source>
+ <translation>Vložit nový odstavec</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Insert a new line</source>
+ <translation>Vložit nový řádek</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Paste and Match Style</source>
+ <translation>Vložit a odpovÃdat stylu</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Remove formatting</source>
+ <translation>Odstranit formátovánÃ</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Strikethrough</source>
+ <translation>Přeškrtnuto</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Subscript</source>
+ <translation>Dolnà index</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Superscript</source>
+ <translation>Hornà index</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Insert Bulleted List</source>
+ <translation>Vložit seznam s odrážkami</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Insert Numbered List</source>
+ <translation>Vložit ÄÃslovaný seznam</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Indent</source>
+ <translation>Odsadit</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Outdent</source>
+ <translation>ZruÅ¡it odsazenÃ</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Center</source>
+ <translation>Na střed</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Justify</source>
+ <translation>Do bloku</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Align Left</source>
+ <translation>Zarovnat vlevo</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>Align Right</source>
+ <translation>Zarovnat vpravo</translation>
+ </message>
+ <message>
+ <source>Look Up In Dictionary</source>
+ <translation type="obsolete">PodÃvat se do slovnÃku</translation>
+ </message>
+ <message>
+ <source>Search The Web</source>
+ <translation type="obsolete">Hledat na sÃti</translation>
+ </message>
+ <message>
+ <source>Check Spelling While Typing</source>
+ <translation type="obsolete">Kontrolovat pravopis bÄ›hem psanÃ</translation>
+ </message>
+ <message>
+ <source>Add To Dictionary</source>
+ <translation type="obsolete">PÅ™idat do slovnÃku</translation>
+ </message>
+ <message>
+ <location line="-85"/>
+ <source>Delete to the start of the word</source>
+ <translation>Smazat až po zaÄátek slova</translation>
+ </message>
+ <message>
+ <source>Recent searches</source>
+ <translation type="obsolete">Dosavadnà hledané výrazy</translation>
+ </message>
+ <message>
+ <location line="-69"/>
+ <source>Move the cursor to the next word</source>
+ <translation>Ukazatel polohy posunout k následujÃcÃmu slovu</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Move the cursor to the next line</source>
+ <translation>Ukazatel polohy posunout k následujÃcÃmu řádku</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+9"/>
+ <source>Scroll down</source>
+ <translation>ProjÞdÄ›t dolů</translation>
+ </message>
+ <message>
+ <location line="-12"/>
+ <source>Scroll here</source>
+ <translation>ProjÞdÄ›t až sem</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Scroll left</source>
+ <translation>ProjÞdět doleva</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+12"/>
+ <source>Move the cursor to the start of the block</source>
+ <translation>Ukazatel polohy posunout na zaÄátek bloku</translation>
+ </message>
+ <message>
+ <source>Text Direction</source>
+ <translation type="obsolete">SmÄ›r psanÃ</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="-7"/>
+ <source>Bottom</source>
+ <translation>Konec</translation>
+ </message>
+ <message>
+ <source>Ignore</source>
+ <translation type="obsolete">NevÅ¡Ãmat si</translation>
+ </message>
+ <message>
+ <source>Italic</source>
+ <translation type="obsolete">KurzÃvnÃ</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="-3"/>
+ <source>Move the cursor to the end of the line</source>
+ <translation>Ukazatel polohy posunout na konec řádku</translation>
+ </message>
+ <message>
+ <location line="-3"/>
+ <source>Move the cursor to the start of the line</source>
+ <translation>Ukazatel polohy posunout na zaÄátek řádku</translation>
+ </message>
+ <message>
+ <source>Reload</source>
+ <translation type="obsolete">Nahrát znovu</translation>
+ </message>
+ <message>
+ <source>Submit</source>
+ <translation type="obsolete">Poslat</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+167"/>
+ <source>Web Inspector - %2</source>
+ <translation>Web Inspektor - %2</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+3"/>
+ <source>Page up</source>
+ <translation>O stranu nahoru</translation>
+ </message>
+ <message>
+ <source>Spelling</source>
+ <translation type="obsolete">Pravopis</translation>
+ </message>
+ <message>
+ <source>Outline</source>
+ <translation type="obsolete">Obrys</translation>
+ </message>
+ <message>
+ <source>Check Grammar With Spelling</source>
+ <translation type="obsolete">Kontrolovat mluvnici spoleÄnÄ› s pravopisem</translation>
+ </message>
+ <message>
+ <source>No file selected</source>
+ <translation type="obsolete">Nebyl vybrán žádný soubor</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+42"/>
+ <source>Submit</source>
+ <comment>default label for Submit buttons in forms on web pages</comment>
+ <translation>Poslat</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Reset</source>
+ <comment>default label for Reset buttons in forms on web pages</comment>
+ <translation>Vrátit</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>This is a searchable index. Enter search keywords: </source>
+ <comment>text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index'</comment>
+ <translation>Tento rejstÅ™Ãk má funkci hledánÃ. Zadejte nÄ›jaký hledaný výraz:</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Choose File</source>
+ <comment>title for file button used in HTML forms</comment>
+ <translation>Vybrat soubor</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>No file selected</source>
+ <comment>text to display in file button used in HTML forms when no file is selected</comment>
+ <translation>Nebyl vybrán žádný soubor</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Open in New Window</source>
+ <comment>Open in New Window context menu item</comment>
+ <translation>OtevÅ™Ãt v novém oknÄ›</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Save Link...</source>
+ <comment>Download Linked File context menu item</comment>
+ <translation>Uložit odkaz...</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Copy Link</source>
+ <comment>Copy Link context menu item</comment>
+ <translation>KopÃrovat adresu odkazu</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Open Image</source>
+ <comment>Open Image in New Window context menu item</comment>
+ <translation>Vyobrazenà otevÅ™Ãt v novém oknÄ›</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Save Image</source>
+ <comment>Download Image context menu item</comment>
+ <translation>Uložit vyobrazenÃ</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Copy Image</source>
+ <comment>Copy Link context menu item</comment>
+ <translation>KopÃrovat vyobrazenÃ</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Open Frame</source>
+ <comment>Open Frame in New Window context menu item</comment>
+ <translation>OtevÅ™Ãt rámec</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Copy</source>
+ <comment>Copy context menu item</comment>
+ <translation>KopÃrovat</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Go Back</source>
+ <comment>Back context menu item</comment>
+ <translation>JÃt zpÄ›t</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Go Forward</source>
+ <comment>Forward context menu item</comment>
+ <translation>JÃt dopÅ™edu</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Stop</source>
+ <comment>Stop context menu item</comment>
+ <translation>Zastavit</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Reload</source>
+ <comment>Reload context menu item</comment>
+ <translation>Nahrát znovu</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Cut</source>
+ <comment>Cut context menu item</comment>
+ <translation>Vyjmout</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Paste</source>
+ <comment>Paste context menu item</comment>
+ <translation>Vložit</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>No Guesses Found</source>
+ <comment>No Guesses Found context menu item</comment>
+ <translation>Nebyly nalezeny žádné návrhy</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Ignore</source>
+ <comment>Ignore Spelling context menu item</comment>
+ <translation>PřehlÞet</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Add To Dictionary</source>
+ <comment>Learn Spelling context menu item</comment>
+ <translation>PÅ™idat do slovnÃku</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Search The Web</source>
+ <comment>Search The Web context menu item</comment>
+ <translation>Hledat na sÃti</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Look Up In Dictionary</source>
+ <comment>Look Up in Dictionary context menu item</comment>
+ <translation>PodÃvat se do slovnÃku</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Open Link</source>
+ <comment>Open Link context menu item</comment>
+ <translation>OtevÅ™Ãt adresu odkazu</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Ignore</source>
+ <comment>Ignore Grammar context menu item</comment>
+ <translation>PřehlÞet</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Spelling</source>
+ <comment>Spelling and Grammar context sub-menu item</comment>
+ <translation>Pravopis</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Show Spelling and Grammar</source>
+ <comment>menu item title</comment>
+ <translation>Ukázat pravopis a mluvnici</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hide Spelling and Grammar</source>
+ <comment>menu item title</comment>
+ <translation>Skrýt pravopis a mluvnici</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Check Spelling</source>
+ <comment>Check spelling context menu item</comment>
+ <translation>Ověřenà pravopisu</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Check Spelling While Typing</source>
+ <comment>Check spelling while typing context menu item</comment>
+ <translation>Ověřovat pravopis bÄ›hem psanÃ</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Check Grammar With Spelling</source>
+ <comment>Check grammar with spelling context menu item</comment>
+ <translation>Ověřovat mluvnici spoleÄnÄ› s pravopisem</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Fonts</source>
+ <comment>Font context sub-menu item</comment>
+ <translation>PÃsma</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Bold</source>
+ <comment>Bold context menu item</comment>
+ <translation>TuÄné</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Italic</source>
+ <comment>Italic context menu item</comment>
+ <translation>KurzÃva</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Underline</source>
+ <comment>Underline context menu item</comment>
+ <translation>PodtrženÃ</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Outline</source>
+ <comment>Outline context menu item</comment>
+ <translation>Obrys</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Direction</source>
+ <comment>Writing direction context sub-menu item</comment>
+ <translation>Směr</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Text Direction</source>
+ <comment>Text direction context sub-menu item</comment>
+ <translation>SmÄ›r psanÃ</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Default</source>
+ <comment>Default writing direction context menu item</comment>
+ <translation>VýchozÃ</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Left to Right</source>
+ <comment>Left to Right context menu item</comment>
+ <translation>Zleva doprava</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Right to Left</source>
+ <comment>Right to Left context menu item</comment>
+ <translation>Zprava doleva</translation>
+ </message>
+ <message>
+ <location line="+105"/>
+ <source>Loading...</source>
+ <comment>Media controller status message when the media is loading</comment>
+ <translation>Nahrává se...</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Live Broadcast</source>
+ <comment>Media controller status message when watching a live broadcast</comment>
+ <translation>Živý přenos</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Audio Element</source>
+ <comment>Media controller element</comment>
+ <translation>Zvukový prvek</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Video Element</source>
+ <comment>Media controller element</comment>
+ <translation>Videoprvek</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Mute Button</source>
+ <comment>Media controller element</comment>
+ <translation>TlaÄÃtko pro ztlumenÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Unmute Button</source>
+ <comment>Media controller element</comment>
+ <translation>TlaÄÃtko pro zruÅ¡enà ztlumenÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Play Button</source>
+ <comment>Media controller element</comment>
+ <translation>TlaÄÃtko pro pÅ™ehrávánÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Pause Button</source>
+ <comment>Media controller element</comment>
+ <translation>TlaÄÃtko pro pozastavenÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Slider</source>
+ <comment>Media controller element</comment>
+ <translation>PosuvnÃk</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Slider Thumb</source>
+ <comment>Media controller element</comment>
+ <translation>Palec posuvnÃku</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Rewind Button</source>
+ <comment>Media controller element</comment>
+ <translation>TlaÄÃtko pro pÅ™etoÄenÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Return to Real-time Button</source>
+ <comment>Media controller element</comment>
+ <translation>TlaÄÃtko pro návrat ke skuteÄnému Äasu</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Elapsed Time</source>
+ <comment>Media controller element</comment>
+ <translation>Uplynulý Äas</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Remaining Time</source>
+ <comment>Media controller element</comment>
+ <translation>ZbývajÃcà Äas</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Status Display</source>
+ <comment>Media controller element</comment>
+ <translation>Údaj o stavu</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Fullscreen Button</source>
+ <comment>Media controller element</comment>
+ <translation>TlaÄÃtko pro zobrazenà na celou obrazovku</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Seek Forward Button</source>
+ <comment>Media controller element</comment>
+ <translation>TlaÄÃtko pro hledánà dopÅ™edu</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Seek Back Button</source>
+ <comment>Media controller element</comment>
+ <translation>TlaÄÃtko pro hledánà dozadu</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Audio element playback controls and status display</source>
+ <comment>Media controller element</comment>
+ <translation>ŘÃzenà pÅ™ehrávánà zvuku a zobrazenà stavu</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Video element playback controls and status display</source>
+ <comment>Media controller element</comment>
+ <translation>ŘÃzenà pÅ™ehrávánà videa a zobrazenà stavu</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Mute audio tracks</source>
+ <comment>Media controller element</comment>
+ <translation>Ztlumit zvukové stopy</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Unmute audio tracks</source>
+ <comment>Media controller element</comment>
+ <translation>Zrušit ztlumenà zvukových stop</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Begin playback</source>
+ <comment>Media controller element</comment>
+ <translation>ZaÄÃt pÅ™ehrávánÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Pause playback</source>
+ <comment>Media controller element</comment>
+ <translation>Pozastavit pÅ™ehrávánÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Movie time scrubber</source>
+ <comment>Media controller element</comment>
+ <translation>ÄŒas pÅ™ehrávánÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Movie time scrubber thumb</source>
+ <comment>Media controller element</comment>
+ <translation>Palec pro nastavenà Äasu pÅ™ehrávánÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Rewind movie</source>
+ <comment>Media controller element</comment>
+ <translation>PÅ™etoÄit film zpÄ›t</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Return streaming movie to real-time</source>
+ <comment>Media controller element</comment>
+ <translation>Vrátit film na skuteÄný Äas</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Current movie time</source>
+ <comment>Media controller element</comment>
+ <translation>Čas přehrávánà filmu</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Remaining movie time</source>
+ <comment>Media controller element</comment>
+ <translation>ZbývajÃcà Äas z pÅ™ehrávánà filmu</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Current movie status</source>
+ <comment>Media controller element</comment>
+ <translation>Stav filmu</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Play movie in full-screen mode</source>
+ <comment>Media controller element</comment>
+ <translation>Přehrávat film v režimu zobrazenà na celou obrazovku</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Seek quickly back</source>
+ <comment>Media controller element</comment>
+ <translation>Rychlé zpÄ›tné hledánÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Seek quickly forward</source>
+ <comment>Media controller element</comment>
+ <translation>Rychlé dopÅ™edné hledánÃ</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Indefinite time</source>
+ <comment>Media time description</comment>
+ <translation>Neomezený Äas</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>%1 days %2 hours %3 minutes %4 seconds</source>
+ <comment>Media time description</comment>
+ <translation>%1 dny %2 hodiny %3 minuty %4 sekundy</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1 hours %2 minutes %3 seconds</source>
+ <comment>Media time description</comment>
+ <translation>%1 hodiny %2 minuty %3 sekundy</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>%1 minutes %2 seconds</source>
+ <comment>Media time description</comment>
+ <translation>%1 minuty %2 sekundy</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>%1 seconds</source>
+ <comment>Media time description</comment>
+ <translation>%1 sekundy</translation>
+ </message>
+ <message>
+ <source>LTR</source>
+ <comment>Left to Right context menu item</comment>
+ <translation type="obsolete">Zleva doprava</translation>
+ </message>
+ <message>
+ <source>RTL</source>
+ <comment>Right to Left context menu item</comment>
+ <translation type="obsolete">Zprava doleva</translation>
+ </message>
+ <message>
+ <location line="-210"/>
+ <source>Inspect</source>
+ <comment>Inspect Element context menu item</comment>
+ <translation>Provést prohlÃdku</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>No recent searches</source>
+ <comment>Label for only item in menu that appears when clicking on the search field image, when no searches have been performed</comment>
+ <translation>Neexistujà žádné naposledy hledané výrazy</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Recent searches</source>
+ <comment>label for first item in the menu that appears when clicking on the search field image, used as embedded menu title</comment>
+ <translation>Dosavadnà hledané výrazy</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Clear recent searches</source>
+ <comment>menu item in Recent Searches menu that empties menu's contents</comment>
+ <translation>Smazat naposledy hledané výrazy</translation>
+ </message>
+ <message>
+ <location line="+75"/>
+ <source>Unknown</source>
+ <comment>Unknown filesize FTP directory listing item</comment>
+ <translation>Neznámý</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>%1 (%2x%3 pixels)</source>
+ <comment>Title string for images</comment>
+ <translation>%1 (%2x%3 pixelů)</translation>
+ </message>
+ <message>
+ <source>Save Image</source>
+ <translation type="obsolete">Uložit vyobrazenÃ</translation>
+ </message>
+ <message>
+ <source>Save Link...</source>
+ <translation type="obsolete">Uložit odkaz...</translation>
+ </message>
+ <message>
+ <source>No recent searches</source>
+ <translation type="obsolete">Neexistujà žádné naposledy hledané výrazy</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+1"/>
+ <source>Page right</source>
+ <translation>O stranu doprava</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+12"/>
+ <source>Move the cursor to the start of the document</source>
+ <translation>Ukazatel polohy posunout na zaÄátek dokumentu</translation>
+ </message>
+ <message>
+ <location line="-30"/>
+ <source>Move the cursor to the next character</source>
+ <translation>Ukazatel polohy posunout k následujÃcÃmu znaku</translation>
+ </message>
+ <message>
+ <source>Copy Link</source>
+ <translation type="obsolete">KopÃrovat adresu odkazu</translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>Select to the previous line</source>
+ <translation>Vybrat až po předchozà řádek</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>Select to the previous word</source>
+ <translation>Vybrat až po předchozà slovo</translation>
+ </message>
+ <message>
+ <source>Check Spelling</source>
+ <translation type="obsolete">Kontrola pravopisu</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <source>Select to the next character</source>
+ <translation>Vybrat až po následujÃcà znak</translation>
+ </message>
+ <message>
+ <source>Show Spelling and Grammar</source>
+ <translation type="obsolete">Ukázat pravopis a mluvnici</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Delete to the end of the word</source>
+ <translation>Smazat až po konec slova</translation>
+ </message>
+ <message>
+ <source>Direction</source>
+ <translation type="obsolete">Směr</translation>
+ </message>
+ <message>
+ <location line="-18"/>
+ <source>Select to the end of the line</source>
+ <translation>Vybrat až po zaÄátek řádku</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="-307"/>
+ <source>Submit</source>
+ <comment>Submit (input element) alt text for <input> elements with no alt, title, or value</comment>
+ <translation>Poslat</translation>
+ </message>
+ <message>
+ <source>Choose File</source>
+ <translation type="obsolete">Vybrat soubor</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+3"/>
+ <source>Scroll up</source>
+ <translation>ProjÞdět nahoru</translation>
+ </message>
+ <message>
+ <source>Clear recent searches</source>
+ <translation type="obsolete">Smazat naposledy hledané výrazy</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+9"/>
+ <source>Select to the start of the document</source>
+ <translation>Vybrat až po zaÄátek dokumentu</translation>
+ </message>
+ <message>
+ <source>Default</source>
+ <translation type="obsolete">VýchozÃ</translation>
+ </message>
+ <message>
+ <source>Underline</source>
+ <translation type="obsolete">Podtrhnout</translation>
+ </message>
+ <message>
+ <location line="-66"/>
+ <source>Move the cursor to the previous character</source>
+ <translation>Ukazatel polohy posunout k pÅ™edchozÃmu znaku</translation>
+ </message>
+ <message>
+ <source>Copy Image</source>
+ <translation type="obsolete">KopÃrovat vyobrazenÃ</translation>
+ </message>
+ <message>
+ <location line="+69"/>
+ <source>Select to the end of the document</source>
+ <translation>Vybrat až po konec dokumentu</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>Select to the end of the block</source>
+ <translation>Vybrat až po konec bloku</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+1"/>
+ <source>Scroll right</source>
+ <translation>ProjÞdět doprava</translation>
+ </message>
+ <message>
+ <source>No Guesses Found</source>
+ <translation type="obsolete">Nebyly nalezeny žádné návrhy</translation>
+ </message>
+ <message>
+ <source>Open Link</source>
+ <translation type="obsolete">OtevÅ™Ãt adresu odkazu</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+406"/>
+ <source>Bad HTTP request</source>
+ <translation>Neplatný požadavek HTTP</translation>
+ </message>
+ <message>
+ <source>Unknown</source>
+ <translation type="obsolete">Neznámý</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="-57"/>
+ <source>Move the cursor to the previous word</source>
+ <translation>Ukazatel polohy posunout k pÅ™edchozÃmu slovu</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Move the cursor to the previous line</source>
+ <translation>Ukazatel polohy posunout na předchozà řádku</translation>
+ </message>
+ <message>
+ <source>%n file(s)</source>
+ <translation type="obsolete">%n soubor(ů)</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="-9"/>
+ <source>Left edge</source>
+ <translation>Levý okraj</translation>
+ </message>
+ <message>
+ <source>Go Forward</source>
+ <translation type="obsolete">JÃt dopÅ™edu</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Page down</source>
+ <translation>O stranu dolů</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>Page left</source>
+ <translation>O stranu doleva</translation>
+ </message>
+ <message>
+ <source>This is a searchable index. Enter search keywords: </source>
+ <translation type="obsolete">Tento index má funkci hledánÃ. Zadejte nÄ›jaký hledaný výraz:</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+27"/>
+ <source>Select to the previous character</source>
+ <translation>Vybrat až po předchozà znak</translation>
+ </message>
+ <message>
+ <source>Go Back</source>
+ <translation type="obsolete">JÃt zpÄ›t</translation>
+ </message>
+ <message>
+ <source>Open in New Window</source>
+ <translation type="obsolete">OtevÅ™Ãt v novém oknÄ›</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="-3"/>
+ <source>Right edge</source>
+ <translation>Pravý okraj</translation>
+ </message>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="-9"/>
+ <source>Move the cursor to the end of the document</source>
+ <translation>Ukazatel polohy posunout na konec dokumentu</translation>
+ </message>
+ <message>
+ <source>Hide Spelling and Grammar</source>
+ <translation type="obsolete">Skrýt pravopis a mluvnici</translation>
+ </message>
+ <message>
+ <source>%1 (%2x%3 pixels)</source>
+ <translation type="obsolete">%1 (%2x%3 pixelů)</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Select to the next word</source>
+ <translation>Vybrat až po následujÃcà slovo</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Select to the next line</source>
+ <translation>Vybrat až po následujÃcà řádek</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/FileChooserQt.cpp" line="+45"/>
+ <source>%n file(s)</source>
+ <comment>number of chosen file</comment>
+ <translation>
+ <numerusform>%n soubor(ů)</numerusform>
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+</context>
+<context>
+ <name>QWhatsThisAction</name>
+ <message>
+ <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+527"/>
+ <source>What's This?</source>
+ <translation>Co je toto?</translation>
+ </message>
+</context>
+<context>
+ <name>QWidget</name>
+ <message>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5672"/>
+ <source>*</source>
+ <translation>*</translation>
+ </message>
+</context>
+<context>
+ <name>QWizard</name>
+ <message>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+659"/>
+ <source>Done</source>
+ <translation>Hotovo</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Help</source>
+ <translation>Nápověda</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>&Help</source>
+ <translation>&Nápověda</translation>
+ </message>
+ <message>
+ <location line="-8"/>
+ <source>&Next</source>
+ <translation>&DalÅ¡Ã</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Cancel</source>
+ <translation>Zrušit</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>Commit</source>
+ <translation>PoužÃt</translation>
+ </message>
+ <message>
+ <location line="-5"/>
+ <source>Continue</source>
+ <translation>PokraÄovat</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>&Finish</source>
+ <translation>Do&konÄit</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>&Next ></source>
+ <translation>&Dalšà ></translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>Go Back</source>
+ <translation>JÃt zpÄ›t</translation>
+ </message>
+ <message>
+ <location line="+0"/>
+ <source>< &Back</source>
+ <translation>< &Zpět</translation>
+ </message>
+</context>
+<context>
+ <name>QWorkspace</name>
+ <message>
+ <location filename="../src/gui/widgets/qworkspace.cpp" line="+1090"/>
+ <source>&Move</source>
+ <translation>Po&sunout</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>&Size</source>
+ <translation>Změnit &velikost</translation>
+ </message>
+ <message>
+ <location line="-978"/>
+ <source>Close</source>
+ <translation>ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Minimize</source>
+ <translation>Zmenšit</translation>
+ </message>
+ <message>
+ <location line="+988"/>
+ <source>Stay on &Top</source>
+ <translation>Zůstat v &popÅ™edÃ</translation>
+ </message>
+ <message>
+ <location line="-6"/>
+ <source>&Close</source>
+ <translation>&ZavÅ™Ãt</translation>
+ </message>
+ <message>
+ <location line="+790"/>
+ <location line="+60"/>
+ <source>%1 - [%2]</source>
+ <translation>%1 - [%2]</translation>
+ </message>
+ <message>
+ <location line="-841"/>
+ <location line="+1059"/>
+ <source>Sh&ade</source>
+ <translation>&Navinout</translation>
+ </message>
+ <message>
+ <location line="-1076"/>
+ <source>&Restore</source>
+ <translation>&Obnovit</translation>
+ </message>
+ <message>
+ <location line="+1072"/>
+ <source>&Unshade</source>
+ <translation>&Odvinout</translation>
+ </message>
+ <message>
+ <location line="-1068"/>
+ <source>Mi&nimize</source>
+ <translation>&Zmenšit</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Ma&ximize</source>
+ <translation>Zvě&tšit</translation>
+ </message>
+ <message>
+ <location line="-978"/>
+ <source>Restore Down</source>
+ <translation>Obnovit</translation>
+ </message>
+</context>
+<context>
+ <name>QXml</name>
+ <message>
+ <location filename="../src/xml/sax/qxml.cpp" line="+78"/>
+ <source>unparsed entity reference in wrong context</source>
+ <translation>použÃván nevyhodnocený odkaz na entitu v nesprávné souvislosti</translation>
+ </message>
+ <message>
+ <location line="-1"/>
+ <source>external parsed general entity reference not allowed in DTD</source>
+ <translation>v DTD nejsou dovoleny žádné odkazy na vnějšà obecnou entitu</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <source>wrong value for standalone declaration</source>
+ <translation>nesprávná hodnota pro samostatné prohlášenÃ</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>encoding declaration or standalone declaration expected while reading the XML declaration</source>
+ <translation>chybÄ›jÃcà prohlášenà kódovánà nebo prohlášenà samostatnosti pÅ™i Ätenà prohlášenà XML</translation>
+ </message>
+ <message>
+ <location line="-11"/>
+ <source>no error occurred</source>
+ <translation>žádná chyba</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>error occurred while parsing reference</source>
+ <translation>při vyhodnocenà odkazu se vyskytla chyba</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>standalone declaration expected while reading the XML declaration</source>
+ <translation>chybÄ›jÃcà prohlášenà samostatnosti pÅ™i Ätenà prohlášenà XML</translation>
+ </message>
+ <message>
+ <location line="-4"/>
+ <source>invalid name for processing instruction</source>
+ <translation>neplatný název pro pokyn pro zpracovánÃ</translation>
+ </message>
+ <message>
+ <location line="-7"/>
+ <source>error triggered by consumer</source>
+ <translation>chyba spuštěná spotřebitelem</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>error occurred while parsing element</source>
+ <translation>při vyhodnocenà prvku se vyskytla chyba</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>unexpected character</source>
+ <translation>neoÄekávaný znak</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>tag mismatch</source>
+ <translation>ZnaÄky prvků nejsou vkládány správnÄ›</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>error occurred while parsing content</source>
+ <translation>při vyhodnocenà obsahu se vyskytla chyba</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>error occurred while parsing comment</source>
+ <translation>při vyhodnocenà poznámky se vyskytla chyba</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>internal general entity reference not allowed in DTD</source>
+ <translation>v DTD nejsou dovoleny žádné odkazy na vnitřnà obecnou entitu</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>recursive entities</source>
+ <translation>rekurzivnà entity</translation>
+ </message>
+ <message>
+ <location line="-18"/>
+ <source>more than one document type definition</source>
+ <translation>vÃce definicà typu dokumentu</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>version expected while reading the XML declaration</source>
+ <translation>chybÄ›jÃcà verze pÅ™i Ätenà prohlášenà XML</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>letter is expected</source>
+ <translation>na tomto mÃstÄ› je potÅ™eba pÃsmeno</translation>
+ </message>
+ <message>
+ <location line="-12"/>
+ <source>unexpected end of file</source>
+ <translation>neoÄekávaný konec souboru</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>external parsed general entity reference not allowed in attribute value</source>
+ <translation>v hodnotě vlastnosti nejsou dovoleny žádné odkazy na vnějšà obecnou entitu</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>error in the text declaration of an external entity</source>
+ <translation>Chyba v prohlášenà textu vnějšà entity</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <source>error occurred while parsing document type definition</source>
+ <translation>při vyhodnocenà definice typu dokumentu se vyskytla chyba</translation>
+ </message>
+</context>
+<context>
+ <name>QXmlStream</name>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1800"/>
+ <source>Reference to unparsed entity '%1'.</source>
+ <translation>Odkaz na nevyhodnocenou entitu '%1'.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+1752"/>
+ <source>Unexpected character '%1' in public id literal.</source>
+ <translation>'%1' nenà platným znakem v údaji veÅ™ejného id, který je tvoÅ™en pÃsmeny.</translation>
+ </message>
+ <message>
+ <location line="-160"/>
+ <location line="+12"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-109"/>
+ <location line="+53"/>
+ <source>Illegal namespace declaration.</source>
+ <translation>Neplatné prohlášenà jmenného prostoru.</translation>
+ </message>
+ <message>
+ <location line="-613"/>
+ <source>Invalid XML character.</source>
+ <translation>Neplatný znak XML.</translation>
+ </message>
+ <message>
+ <location line="+1137"/>
+ <source>Expected character data.</source>
+ <translation>Byly oÄekávány údaje o znacÃch.</translation>
+ </message>
+ <message>
+ <location line="-300"/>
+ <source>Standalone accepts only yes or no.</source>
+ <translation>Hodnota pro samostatnou vlastnost může být pouze "ano" nebo "ne".</translation>
+ </message>
+ <message>
+ <location line="-48"/>
+ <source>Invalid XML version string.</source>
+ <translation>Neplatný údaj o verzi XML.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-217"/>
+ <source>Invalid processing instruction name.</source>
+ <translation>Název pokynu pro zpracovánà je neplatný.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="-221"/>
+ <source>Namespace prefix '%1' not declared</source>
+ <translation>Předpona jmenného prostoru '%1' nebyla prohlášena</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+260"/>
+ <location line="+61"/>
+ <location line="+40"/>
+ <source>Entity '%1' not declared.</source>
+ <translation>Entita '%1' nenà prohlášena.</translation>
+ </message>
+ <message>
+ <location line="-372"/>
+ <source>%1 is an invalid processing instruction name.</source>
+ <translation>%1 nenà platným názvem pokynu pro zpracovánÃ.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+244"/>
+ <source>The standalone pseudo attribute must appear after the encoding.</source>
+ <translation>Samostatná pseudovlastnost musà následovat bezprostÅ™ednÄ› po kódovánÃ.</translation>
+ </message>
+ <message>
+ <location line="-553"/>
+ <source>Sequence ']]>' not allowed in content.</source>
+ <translation>Sled znaků ']]>' nenà v obsahu povolen.</translation>
+ </message>
+ <message>
+ <location line="+555"/>
+ <source>%1 is an invalid encoding name.</source>
+ <translation>%1 nenà platným názvem pro kódovánÃ.</translation>
+ </message>
+ <message>
+ <location line="+94"/>
+ <source>, but got '</source>
+ <translation>oÄekáváno, namÃsto toho obdrženo '</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-225"/>
+ <source>Start tag expected.</source>
+ <translation>OÄekáván otevÃrajÃcà prvek.</translation>
+ </message>
+ <message>
+ <location line="+611"/>
+ <source>Invalid character reference.</source>
+ <translation>Odkaz na neplatný znak.</translation>
+ </message>
+ <message>
+ <location line="-40"/>
+ <source>Reference to external entity '%1' in attribute value.</source>
+ <translation>V hodnotě vlastnosti byla odkazována entita '%1'.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="-11"/>
+ <source>Expected </source>
+ <translation>Bylo </translation>
+ </message>
+ <message>
+ <location line="-40"/>
+ <source>Invalid document.</source>
+ <translation>Neplatný dokument.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-80"/>
+ <source>Opening and ending tag mismatch.</source>
+ <translation>PoÄet otevÃrajÃcÃch prvků neodpovÃdá neodpovÃdá poÄtu zavÃrajÃcÃch prvků.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="-319"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-703"/>
+ <source>Encountered incorrectly encoded content.</source>
+ <translation>Byl nalezen obsah s neplatným kódovánÃm.</translation>
+ </message>
+ <message>
+ <location line="+301"/>
+ <source>Invalid attribute in XML declaration.</source>
+ <translation>Prohlášenà XML obsahuje neplatnou vlastnost.</translation>
+ </message>
+ <message>
+ <location line="-193"/>
+ <source>Attribute redefined.</source>
+ <translation>Vlastnost byla novÄ› vymezena.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+562"/>
+ <source>%1 is an invalid PUBLIC identifier.</source>
+ <translation>%1 nenà platným údajem VEŘEJNÉHO identifikátoru (id).</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="-1026"/>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+129"/>
+ <source>Extra content at end of document.</source>
+ <translation>PÅ™ebyteÄný obsah za koncem dokumentu.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-11"/>
+ <source>Invalid XML name.</source>
+ <translation>Neplatný název XML.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="+1235"/>
+ <source>Premature end of document.</source>
+ <translation>PÅ™edÄasný konec dokumentu.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="-246"/>
+ <source>XML declaration not at start of document.</source>
+ <translation>Prohlášenà XML se nenacházà na zaÄátku dokumentu.</translation>
+ </message>
+ <message>
+ <location line="-738"/>
+ <source>Recursive entity detected.</source>
+ <translation>Byla zjištěna rekurzivnà entita.</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream.cpp" line="-64"/>
+ <source>Unsupported XML version.</source>
+ <translation>Tato verze XML nenà podporována.</translation>
+ </message>
+ <message>
+ <location line="+121"/>
+ <source>Unexpected '</source>
+ <translation>Na tomto mÃstÄ› neplatný ' </translation>
+ </message>
+ <message>
+ <location line="-1021"/>
+ <source>Invalid entity value.</source>
+ <translation>neplatná hodnota entity.</translation>
+ </message>
+ <message>
+ <location line="+930"/>
+ <source>Encoding %1 is unsupported</source>
+ <translation>Kódovánà %1 nenà podporováno</translation>
+ </message>
+ <message>
+ <location filename="../src/corelib/xml/qxmlstream_p.h" line="+707"/>
+ <source>NDATA in parameter entity declaration.</source>
+ <translation>Parametrické prohlášenà entitynesmà obsahovat žádné NDATA.</translation>
+ </message>
+</context>
+<context>
+ <name>QtXmlPatterns</name>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
+ <source>A comment cannot contain %1</source>
+ <translation>Poznámka nesmà obsahovat %1</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+3726"/>
+ <source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
+ <translation>Verze %1 nenà podporována. Podporovanou verzà XQuery je 1.0.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+54"/>
+ <source>The root node of the second argument to function %1 must be a document node. %2 is not a document node.</source>
+ <translation>NadÅ™Ãzený uzel druhého agumentu funkce %1 musà být uzlem dokumentu, což nenà pÅ™Ãpad %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
+ <source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
+ <translation>Nebyl zadán žádný odpovÃdajÃcà %2 pro potÅ™ebný parametr %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+163"/>
+ <source>Namespace declarations must occur before function, variable, and option declarations.</source>
+ <translation>Prohlášenà jmenných prostorů musà stát pÅ™ed prohlášenÃmi funkcÃ-, promÄ›nných- nebo prohlášenÃmi voleb.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
+ <source>empty</source>
+ <translation>prázdný</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2895"/>
+ <source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
+ <translation>Jmenný prostor-URI nesmà být prázdný, když je spojen s prefixem %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+6"/>
+ <source>A comment cannot end with a %1.</source>
+ <translation>Poznámka nesmà konÄit na %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+2437"/>
+ <source>Top level stylesheet elements must be in a non-null namespace, which %1 isn't.</source>
+ <translation>ÚplnÄ› nahoÅ™e stojÃcà prvky provádÄ›cÃho listu se nesmà nacházet v nulovém jmenném prostoru, což je pÅ™Ãpad %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
+ <source>Integer division (%1) by zero (%2) is undefined.</source>
+ <translation>CeloÄÃselné dÄ›lenà (%1) nulou (%2) nenà stanoveno.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+162"/>
+ <source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
+ <translation>Knihovnà modul nemůže být posouzen pÅ™Ãmo, musà být zaveden z hlavnÃho modulu.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+187"/>
+ <source>Time %1:%2:%3.%4 is invalid.</source>
+ <translation>Časový údaj %1:%2:%3.%4 je neplatný.</translation>
+ </message>
+ <message>
+ <source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
+ <translation type="obsolete">Prvek %2 může mÃt pouze obvyklé vlastnosti, ne vÅ¡ak %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+91"/>
+ <source>A value of type %1 must contain an even number of digits. The value %2 does not.</source>
+ <translation>PoÄet mÃst hodnoty typu %1 musà být stejný. To nenà pÅ™Ãpad %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+14"/>
+ <source>Modulus division (%1) by zero (%2) is undefined.</source>
+ <translation>Dělenà absolutnà hodnoty (%1) nulou(%2) nenà stanoveno.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2987"/>
+ <source>No function with signature %1 is available</source>
+ <translation>Neexistuje žádná funkce oznaÄená jako %1</translation>
+ </message>
+ <message>
+ <location line="+2154"/>
+ <source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source>
+ <translation>Musà být pÅ™Ãtomen záložnà výraz, neboÅ¥ nejsou podporovány žádné vÄ›cné výrazy</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+159"/>
+ <source>In the replacement string, %1 can only be used to escape itself or %2, not %3</source>
+ <translation>V nahrazenà může být použit pouze %1, aby se chránil sám, nebo %2, ne však pro %3</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+378"/>
+ <source>The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character.</source>
+ <translation>Kódovacà bod %1 z %2 s kódovánÃm %3 nenà platným znakem XML.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
+ <source>Network timeout.</source>
+ <translation>ÄŒasový limit sÃÅ¥ové operace byl pÅ™ekroÄen.</translation>
+ </message>
+ <message>
+ <source>No casting is possible with %1 as the target type.</source>
+ <translation type="obsolete">Nelze provádět žádné výběrové ("cast") operace s typem %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-1567"/>
+ <source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source>
+ <translation>Prohlášenà %1 je nepÅ™Ãpustné, protože nenà podporováno zavedenà schémat.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-1676"/>
+ <source>Attribute %1 and %2 are mutually exclusive.</source>
+ <translation>Vlastnosti %1 a %2 se vzájemnÄ› vyluÄujÃcÃ.</translation>
+ </message>
+ <message>
+ <location line="-213"/>
+ <source>Parse error: %1</source>
+ <translation>Chyba vyhodnocenÃ: %1</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+86"/>
+ <source>If the first argument is the empty sequence or a zero-length string (no namespace), a prefix cannot be specified. Prefix %1 was specified.</source>
+ <translation>Nelze zadat žádnou předponu, jestliže je prvnà argument prázdný nebo je prázdný řetězec znaků (žádný jmenný prostor). Byla zadána předpona %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+497"/>
+ <source>In an XSL-T pattern, the first argument to function %1 must be a literal or a variable reference, when used for matching.</source>
+ <translation>V XSL-T vyhledávacÃm vzoru musà být prvnà argument k funkci %1 pÅ™i použità k hledánà odkaz tvoÅ™ený pÃsmeny nebo promÄ›nný.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
+ <location line="+15"/>
+ <source>At least one component must be present.</source>
+ <translation>Alespoň jedna souÄást musà být pÅ™Ãtomna.</translation>
+ </message>
+ <message>
+ <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+ <translation type="obsolete">Ve staviteli jmenného prostoru nesmà mýt hodnota jmenného prostoru prázdným řetězcem.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+93"/>
+ <source>An attribute by name %1 has already been created.</source>
+ <translation>Již byla vytvořena jedna vlastnost s názvem %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-204"/>
+ <source>An argument by name %1 has already been declared. Every argument name must be unique.</source>
+ <translation>Již existuje jeden argument s názvem %1. Názvy argumentů musà být jednoznaÄné.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+236"/>
+ <source>%1 is an invalid flag for regular expressions. Valid flags are:</source>
+ <translation>%1 nenà pro regulérnà výrazy platným pÅ™Ãznakem. Platnými pÅ™Ãznaky jsou:</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+673"/>
+ <source>At least one %1-element must occur inside %2.</source>
+ <translation>V %2 se musà vyskytovat alespoň jeden %1-prvek.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
+ <source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
+ <translation>Je podporován pouze Unicode Codepoint Collation (%1). %2 nenà podporován.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="-134"/>
+ <source>Matches are case insensitive</source>
+ <translation>Na psanà velkých/malých pÃsmen nenà brán zÅ™etel</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+3057"/>
+ <source>The name of an extension expression must be in a namespace.</source>
+ <translation>Název výrazu rozÅ¡ÃÅ™enà se musà nacházet ve jmenném prostoru.</translation>
+ </message>
+ <message>
+ <location line="-1514"/>
+ <source>Each name of a template parameter must be unique; %1 is duplicated.</source>
+ <translation>Názvy parametrů pÅ™edloh musà být jednoznaÄné, %1 již existuje.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-185"/>
+ <source>At least one mode must be specified in the %1-attribute on element %2.</source>
+ <translation>Ve %1-vlastnosti prvku %2 musà být zadán alespoň jeden způsob.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="-10"/>
+ <source>%1 matches newline characters</source>
+ <translation>Výraz '%1' odpovÃdá znakům pro nový řádek</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="-107"/>
+ <source>Year %1 is invalid because it begins with %2.</source>
+ <translation>%1 nenà platným údajem pro rok, protože zaÄÃná %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+285"/>
+ <source>The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
+ <translation>Druhý argument %1 nemůže být typ %2. Musà to být typ %3, %4 nebo %5.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+651"/>
+ <source>Element %1 cannot have children.</source>
+ <translation>Prvek %1 nemůže mÃt podprvky.</translation>
+ </message>
+ <message>
+ <source>Attribute %1 cannot appear on the element %2. Only %3 is allowed, and the standard attributes.</source>
+ <translation type="obsolete">Prvek %2 může mÃt jen vlastnost %3 nebo vlastnosti, které jsou obvyklé, ne vÅ¡ak %1.</translation>
+ </message>
+ <message>
+ <location line="-497"/>
+ <source>Only one %1-element can appear.</source>
+ <translation>Může být jen jeden jediný %1-prvek.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+75"/>
+ <source>The name for a computed attribute cannot have the namespace URI %1 with the local name %2.</source>
+ <translation>Název poÄÃtané vlastnosti nesmà mÃt jmenný prostor-URI %1 s mÃstnÃm názvem %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+138"/>
+ <source>A positional predicate must evaluate to a single numeric value.</source>
+ <translation>PoziÄnà pÅ™Ãsudek se musà vyhodnotit jako jednoduchá, ÄÃselná hodnota.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+320"/>
+ <source>Element %1 can't be serialized because it appears outside the document element.</source>
+ <translation>Prvek %1 nemůže být vydáván na pokraÄovánÃ, protože se objevuje mimo prvky dokumentu.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+4"/>
+ <source>%1 and %2 match the start and end of a line.</source>
+ <translation>Výrazy %1 a %2 vždy odpovÃdajà zaÄátku nebo konci libovolného řádku.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-560"/>
+ <source>Running an XSL-T 1.0 stylesheet with a 2.0 processor.</source>
+ <translation>Je zpracováván jeden XSL-T 1.0 stylový list jednÃm procesorem verze 2.0.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-1667"/>
+ <source>A stylesheet function must have a prefixed name.</source>
+ <translation>Název funkce stylového listu musà mÃt pÅ™edponu.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
+ <source>%1 cannot be retrieved</source>
+ <translation>%1 nelze urÄit</translation>
+ </message>
+ <message>
+ <source>It's not possible to cast the value %1 of type %2 to %3</source>
+ <translation type="obsolete">Nelze provést operaci předvedenà hodnoty %1 typu %2 k %3</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-20"/>
+ <source>The value of the XSL-T version attribute must be a value of type %1, which %2 isn't.</source>
+ <translation>Hodnota XSL-T vlastnosti verze musà být hodnotou typu %1, což nenà pÅ™Ãpad %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+69"/>
+ <source>In a namespace constructor, the value for a namespace cannot be an empty string.</source>
+ <translation>Ve staviteli jmenného prostoru nesmà mýt hodnota jmenného prostoru prázdným řetězcem.</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>The prefix %1 cannot be bound.</source>
+ <translation>Předponu %1 nelze spojit.</translation>
+ </message>
+ <message>
+ <location line="-14"/>
+ <source>The prefix must be a valid %1, which %2 is not.</source>
+ <translation>PÅ™edpona musà být platný %1, což nenà pÅ™Ãpad %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-551"/>
+ <source>The keyword %1 cannot occur with any other mode name.</source>
+ <translation>KlÃÄové slovo %1 se nemůže použÃvat dohromady s jiným názvem způsobu.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
+ <source>Type error in cast, expected %1, received %2.</source>
+ <translation>Chyba psanà u operace pÅ™edvedenÃ, bylo oÄekáváno %1, ale pÅ™ijato %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-3555"/>
+ <source>%1 is not a valid numeric literal.</source>
+ <translation>%1 nenà platný ÄÃselný údaj tvoÅ™ený pÃsmeny.</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
+ <source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
+ <translation>
+ <numerusform>%1 má jen %n argument; údaj %2 z tohoto důvodu neplatný.</numerusform>
+ <numerusform>%1 má jen %n argumenty; údaj %2 z tohoto důvodu neplatný.</numerusform>
+ <numerusform>%1 má jen %n argumenty; údaj %2 z tohoto důvodu neplatný.</numerusform>
+ </translation>
+ </message>
+ <message>
+ <source>Circularity detected</source>
+ <translation type="obsolete">byla zjištěna cirkulárnà závislost</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+3971"/>
+ <source>A variable by name %1 has already been declared.</source>
+ <translation>Proměnná s názvem %1 již byla prohlášena.</translation>
+ </message>
+ <message>
+ <location line="-312"/>
+ <source>The prefix %1 can not be bound. By default, it is already bound to the namespace %2.</source>
+ <translation>PÅ™edpona %1 nemůže být spojena. Ve výchozÃm nastavenà je již spojena se jmenným prostorem %2.</translation>
+ </message>
+ <message>
+ <source>An %1-attribute must have a valid %2 as value, which %3 isn't.</source>
+ <translation type="obsolete">Vlastnost s názvem %1 musà mÃt platnou %2-hodnotu. %3 nenà platnou hodnotou.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+389"/>
+ <source>If element %1 has no attribute %2, it cannot have attribute %3 or %4.</source>
+ <translation>Prvek %1 nesmà mÃt vlastnost %3 nebo %4, pokud nemá vlastnost %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+511"/>
+ <source>A function already exists with the signature %1.</source>
+ <translation>Již existuje funkce s podpisem %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+223"/>
+ <source>When casting to %1 from %2, the source value cannot be %3.</source>
+ <translation>U operace předvedenà z %1 do %2 nesmà být zdrojová hodnota %3.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+60"/>
+ <source>Attribute %1 can't be serialized because it appears at the top level.</source>
+ <translation>Vlastnost %1 nemůže být vydáván na pokraÄovánÃ, protože se objevuje na nejvyššà rovinÄ›.</translation>
+ </message>
+ <message>
+ <source>No comparisons can be done involving the type %1.</source>
+ <translation type="obsolete">S typem %1 nemohou být prováděny žádné srovnávacà operace.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-160"/>
+ <source>No value is available for the external variable by name %1.</source>
+ <translation>Pro vnějšà proměnnou s názvem %1 nenà dostupná žádná hodnota.</translation>
+ </message>
+ <message>
+ <location line="-426"/>
+ <source>The value of attribute %1 must of type %2, which %3 isn't.</source>
+ <translation>Hodnota vlastnosti %1 musà být typu %2. %3 nenà platnou hodnotou.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
+ <source>The item %1 did not match the required type %2.</source>
+ <translation>Prvek %1 neodpovÃdá požadovanému typu %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+1122"/>
+ <source>Element %1 cannot have a sequence constructor.</source>
+ <translation>Prvek %1 nemůže mÃt stavitele posloupnosti.</translation>
+ </message>
+ <message>
+ <location line="-842"/>
+ <source>When attribute %1 is present on %2, a sequence constructor cannot be used.</source>
+ <translation>Nelze použÃvat žádného stavitele posloupnosti, když %2 má vlastnost %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+6"/>
+ <source>one or more</source>
+ <translation>jeden nebo vÃce</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-289"/>
+ <source>The encoding %1 is invalid. It must contain Latin characters only, must not contain whitespace, and must match the regular expression %2.</source>
+ <translation>Kódovánà %1 je neplatné; smà sestávat pouze z latinských pÃsmen a musà odpovÃdat pravidelnéu výrazu %2.</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+11"/>
+ <source>%1 requires at least %n argument(s). %2 is therefore invalid.</source>
+ <translation>
+ <numerusform>%1 vyžaduje alespoň %n argument; údaj %2 je z toho důvodu neplatný.</numerusform>
+ <numerusform>%1 vyžaduje alespoň %n argumenty; údaj %2 je z toho důvodu neplatný.</numerusform>
+ <numerusform>%1 vyžaduje alespoň %n argumenty; údaj %2 je z toho důvodu neplatný.</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+113"/>
+ <source>The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid.</source>
+ <translation>%2 nenà platným cÃlovým názvem pokynu pro zpracovánÃ, protože tento nesmà být %1 (nehledÄ› na psanà velkých/malých pÃsmen).</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+156"/>
+ <source>The focus is undefined.</source>
+ <translation>Nenà stanoveno ohnisko.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-3390"/>
+ <location line="+7323"/>
+ <source>%1 is an unknown schema type.</source>
+ <translation>%1 je neznámým typem schematu.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+1206"/>
+ <source>The value for attribute %1 on element %2 must either be %3 or %4, not %5.</source>
+ <translation>Hodnota vlastnosti %1 prvku %2 může být jen %3 nebo %4, ne však %5.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="-26"/>
+ <source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
+ <translation>V nahrazovacÃm Å™etÄ›zci musà po %1 následovat alespoň jedna ÄÃslice, když nenà chránÄ›n znakem Escape.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2712"/>
+ <source>In an XSL-T pattern, axis %1 cannot be used, only axis %2 or %3 can.</source>
+ <translation>V XSL-T vyhledávacÃm vzoru se smÄ›jà použÃvat jen osy %2 nebo %3, ne vÅ¡ak %1.</translation>
+ </message>
+ <message>
+ <location line="-401"/>
+ <source>The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this)</source>
+ <translation>Jmenný prostor uživatelem stanovené funkce nesmà být prázdný (pro tento úÄel je pÅ™edstanovená pÅ™edpona %1)</translation>
+ </message>
+ <message>
+ <source>The first operand in an integer division, %1, cannot be infinity (%2).</source>
+ <translation type="obsolete">Prvnà veliÄina, operand, celoÄÃselného dÄ›lenà %1 nesmà být nekoneÄno (%2).</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
+ <source>%1 is not a valid value of type %2.</source>
+ <translation>%1 nenà platnou hodnotou typu %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+166"/>
+ <source>Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed.</source>
+ <translation>Násobenà hodnoty typu %1 s %2 nebo %3 (kladné nebo záporné nekoneÄno) nenà pÅ™Ãpustné.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
+ <source>The variable %1 is unused</source>
+ <translation>PromÄ›nná %1 se nepoužÃvá</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+1787"/>
+ <source>The %1-axis is unsupported in XQuery</source>
+ <translation>Osa %1 nenà v XQuery podporována</translation>
+ </message>
+ <message>
+ <location line="+644"/>
+ <source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
+ <translation>Byl nalezen chybný stavitel pÅ™Ãmého prvku. %1 konÄà %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="-32"/>
+ <source>Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed.</source>
+ <translation>DÄ›lenà hodnoty typu %1 prostÅ™ednictvÃm %2 nebo %3 (kladná nebo záporná nula) nenà pÅ™Ãpustné.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+20"/>
+ <source>Attribute %1 cannot have the value %2.</source>
+ <translation>Vlastnost %1 nesmà mÃt hodnotu %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+346"/>
+ <source>It will not be possible to retrieve %1.</source>
+ <translation>%1 nelze urÄit.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2103"/>
+ <source>In an XSL-T pattern, function %1 cannot have a third argument.</source>
+ <translation>V XSL-T vyhledávacÃm vzoru nesmà mÃt funkce %1 tÅ™età argument.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="-9"/>
+ <source>The namespace URI in the name for a computed attribute cannot be %1.</source>
+ <translation>URI jmenného prostoru v názvu vypoÄÃtané vlastnosti nesmà být %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+24"/>
+ <source>%1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3.</source>
+ <translation>%1 nenà platným cÃlovým názvem pokynu pro zpracovánÃ. Musà to být hodnota %2 jakou je napÅ™Ãklad %3.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2571"/>
+ <source>%1 is an complex type. Casting to complex types is not possible. However, casting to atomic types such as %2 works.</source>
+ <translation>%1 je složeným typem. Operace pÅ™edvedenà u složených typů nenà možná. Mohou se ovÅ¡em provádÄ›t operace obsazenà u atomárnÃch typů jako %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="-4"/>
+ <source>zero or one</source>
+ <translation>žádný nebo jeden</translation>
+ </message>
+ <message>
+ <source>No operand in an integer division, %1, can be %2.</source>
+ <translation type="obsolete">U celoÄÃselného dÄ›lenà %1 nesmà být veliÄina, operand, %2.</translation>
+ </message>
+ <message>
+ <source>The element with local name %1 does not exist in XSL-T.</source>
+ <translation type="obsolete">V XSL-T neexistuje žádný prvek s mÃstnÃm názvem %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-634"/>
+ <source>Two namespace declaration attributes have the same name: %1.</source>
+ <translation>Byly nalezeny dvě vlastnosti prohlášenà jmenného prostoru se stejným názvem (%1).</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+78"/>
+ <source>Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values.</source>
+ <translation>SkuteÄná Booleanská hodnota nemůže být vypoÄÃtána pro posloupnost ze dvou nebo vÃce atomárnÃch hodnot.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+168"/>
+ <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="-17"/>
+ <source>%1 is an invalid %2</source>
+ <translation>%1 je neplatný %2</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="-165"/>
+ <source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
+ <translation>Prvnà argument k %1 nesmà být typu %2; musà to být ÄÃselný typ, xs:yearMonthDuration nebo xs:dayTimeDuration.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="-141"/>
+ <source>Division (%1) by zero (%2) is undefined.</source>
+ <translation>Dělenà (%1) nulou (%2) nenà stanoveno.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+40"/>
+ <source>No template by name %1 exists.</source>
+ <translation>Neexistuje žádná předloha s názvem %1.</translation>
+ </message>
+ <message>
+ <source>The attribute %1 must appear on element %2.</source>
+ <translation type="obsolete">Prvek %2 musà mÃt vlastnost %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+105"/>
+ <source>An attribute by name %1 has already appeared on this element.</source>
+ <translation>Prvek má již vlastnost s názvem %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="-13"/>
+ <source>The default collection is undefined</source>
+ <translation>Pro sbÃrku nenà stanovena žádná pÅ™edloha</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+24"/>
+ <source>Only the prefix %1 can be bound to %2 and vice versa.</source>
+ <translation>S %2 může být spojena pouze předpona %1 (a obráceně).</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
+ <source>Value %1 of type %2 exceeds maximum (%3).</source>
+ <translation>Hodnota %1 typu %2 pÅ™ekraÄuje maximum (%3).</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+10"/>
+ <source>Whitespace characters are removed, except when they appear in character classes</source>
+ <translation>Prázdné znaky jsou odstranÄ›ny v pÅ™ÃpadÄ›, že se neobjevà ve znakových tÅ™Ãdách</translation>
+ </message>
+ <message>
+ <source>Casting to %1 is not possible because it is an abstract type, and can therefore never be instantiated.</source>
+ <translation type="obsolete">Nemohou se provádÄ›t žádné operace pÅ™edvedenà k typu %1, protože je to abstraktnà typ ist a nelze je doložit pÅ™Ãkladem.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
+ <source>Operator %1 cannot be used on type %2.</source>
+ <translation>Operátor %1 nelze použÃt na typ %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2361"/>
+ <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>Jmenný prostor %1 je vyhrazen a z toho důvodu jej nemohou použÃvat uživatelem stanovené funkce (pro tento úÄel je tu pÅ™edstanovená pÅ™edpona %2).</translation>
+ </message>
+ <message>
+ <location line="-174"/>
+ <source>The target namespace of a %1 cannot be empty.</source>
+ <translation>CÃlový jmenný prostor %1 nesmà být prázdný.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="-39"/>
+ <source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
+ <translation>Po %1 musà následovat %2 nebo %3; nesmà se objevit na konci nahrazovacÃho Å™etÄ›zce.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2394"/>
+ <source>%1 is an invalid namespace URI.</source>
+ <translation>%1 nenà platným jmenným prostorem-URI.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-298"/>
+ <location line="+9"/>
+ <source>The attribute %1 cannot appear on %2, when it is a child of %3.</source>
+ <translation>%2 nesmà mÃt vlastnost %1 v pÅ™ÃpadÄ›, že je potomkem %3.</translation>
+ </message>
+ <message>
+ <location line="+347"/>
+ <source>The attribute %1 can only appear on the first %2 element.</source>
+ <translation>Pouze prvnà %2-prvek smà mÃt vlastnost %1.</translation>
+ </message>
+ <message>
+ <location line="-1271"/>
+ <source>Element %1 must have either a %2-attribute or a sequence constructor.</source>
+ <translation>Prvek %1 musà mÃt buÄ jednu %2-vlastnost nebo se musà použÃvat stavitel posloupnosti.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2891"/>
+ <source>Module imports must occur before function, variable, and option declarations.</source>
+ <translation>Zavedenà modulů musà nastat pÅ™ed prohlášenÃmi funkcÃ, promÄ›nných a voleb.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+19"/>
+ <source>Day %1 is outside the range %2..%3.</source>
+ <translation>Údaj dne %1 je mimo rozsah %2..%3.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="-18"/>
+ <source>%1 contains octets which are disallowed in the requested encoding %2.</source>
+ <translation>%1 obsahuje oktety, které v kódovánà %2 nejsou pÅ™Ãpustné.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+125"/>
+ <source>When a parameter is required, a default value cannot be supplied through a %1-attribute or a sequence constructor.</source>
+ <translation>Výchozà hodnota požadovaného parametru nemůže být zadána ani prostÅ™ednictvÃm %1-vlastnosti ani pÅ™es stavitele posloupnosti.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+967"/>
+ <source>In an XSL-T pattern, the first argument to function %1 must be a string literal, when used for matching.</source>
+ <translation>V XSL-T vyhledávacÃm vzoru musà být prvnà argument k funkci %1 pÅ™i použità k hledánà řetÄ›zec tvoÅ™ený pÃsmeny.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-889"/>
+ <source>Text nodes are not allowed at this location.</source>
+ <translation>Na tomto mÃstÄ› nesmà stát žádné textové uzly.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="-32"/>
+ <source>A value of type %1 cannot be a predicate. A predicate must have either a numeric type or an Effective Boolean Value type.</source>
+ <translation>Hodnoty typu %1 nesmà ýt pÅ™Ãsudkem. Pro pÅ™Ãsudky jsou pÅ™Ãpustné pouze typ ÄÃselný nebo úÄinný booleánský.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2679"/>
+ <source>%1 is not a valid name for a processing-instruction.</source>
+ <translation>%1 nenà platným názvem pokynu pro zpracovánÃ.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
+ <source>%1 was called.</source>
+ <translation>%1 byl volán.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="-7"/>
+ <source>It's not possible to add attributes after any other kind of node.</source>
+ <translation>Vlastnosti nesmà následovat za jinými druhy uzlů.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+655"/>
+ <source>At least one %1-element must occur before %2.</source>
+ <translation>Před %2 musà stát alespoň jeden %1-prvek.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+252"/>
+ <source>The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization).</source>
+ <translation>Tato forma normalizovánà %1 nenà podporována. Podporovanými formami normalizovánà jsou %2, %3, %4 a %5, a "žádný" (prázdný znakový Å™etÄ›zec zastupuje "žádné normalizovánÃ").</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+29"/>
+ <source>When casting to %1 or types derived from it, the source value must be of the same type, or it must be a string literal. Type %2 is not allowed.</source>
+ <translation>U operace pÅ™edstavenà k typu %1 nebo odvozených typů musà být zdrojovou hodnotou Å™etÄ›zec znaků tvoÅ™ený pÃsmeny nebo hodnota stejného typu. Typ %2 je neplatný.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+1048"/>
+ <source>A parameter in a function cannot be declared to be a tunnel.</source>
+ <translation>Parameter funkce nelze prohlásit za tunel.</translation>
+ </message>
+ <message>
+ <source>XSL-T attributes on XSL-T elements must be in the null namespace, not in the XSL-T namespace which %1 is.</source>
+ <translation type="obsolete">XSL-T vlastnosti XSL-T prvku musà být v nulovém jmenném prostoru, nikoli v XSL-T jmenném prostoru, jako %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2963"/>
+ <source>The namespace of a user defined function in a library module must be equivalent to the module namespace. In other words, it should be %1 instead of %2</source>
+ <translation>Jmenný prostor uživatelem stanovené funkce v modulu knihovny musà odpovÃdat jmennému prostoru modulu (Jinými slovy by mÄ›l být %1 namÃsto %2) </translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+26"/>
+ <source>Day %1 is invalid for month %2.</source>
+ <translation>Ç“daj o dni %1 je neplatným pro mÄ›sÃc %2.</translation>
+ </message>
+ <message>
+ <location line="-9"/>
+ <source>Overflow: Can't represent date %1.</source>
+ <translation>Nelze pÅ™edstavit datum %1 (PÅ™eteÄenÃ).</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-1304"/>
+ <source>In a simplified stylesheet module, attribute %1 must be present.</source>
+ <translation>Ve zjednoduÅ¡eném modulu stylového listu musà být pÅ™Ãtomna vlastnost %1.</translation>
+ </message>
+ <message>
+ <location line="-189"/>
+ <source>Unknown XSL-T attribute %1.</source>
+ <translation>Neznámá XSL-T vlastnost: %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-483"/>
+ <source>It is not possible to redeclare prefix %1.</source>
+ <translation>Předponu %1 nelze prohlásit.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+2"/>
+ <source>exactly one</source>
+ <translation>přesně jeden</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+100"/>
+ <source>%1 is an invalid regular expression pattern: %2</source>
+ <translation>%1 nenà platným pravidelným výrazem: %2</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-219"/>
+ <source>Element %1 is not allowed at this location.</source>
+ <translation>Prvek %1 nesmà stát na tomto mÃstÄ›.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+1811"/>
+ <source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source>
+ <translation>%1-výrazy se nemohou použÃvat, protože funkce prohlášenà schématu platným nenà podporována.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+2143"/>
+ <source>At least one %1 element must appear as child of %2.</source>
+ <translation>Alespoň jeden %1-prvek musà být potomkem %2.</translation>
+ </message>
+ <message>
+ <location line="-282"/>
+ <source>This processor is not Schema-aware and therefore %1 cannot be used.</source>
+ <translation>%1 se nemůže použÃvat, protože tento procesor nepodporuje žádné schéma.</translation>
+ </message>
+ <message>
+ <source>Attribute %1 cannot appear on the element %2. Allowed is %3, and the standard attributes.</source>
+ <translation type="obsolete">Prvek %2 může mÃt jen %3 nebo obvyklé vlastnosti, ne vÅ¡ak %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+129"/>
+ <location line="+32"/>
+ <source>Dividing a value of type %1 by %2 (not-a-number) is not allowed.</source>
+ <translation>DÄ›lenà hodnoty typu %1 prostÅ™ednictvÃm %2 (nenà ÄÃselnou hodnotou) nenà pÅ™Ãpustné.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
+ <source>Required cardinality is %1; got cardinality %2.</source>
+ <translation>Požadované kardinálnà ÄÃslo (mohutnost množiny) je %1 (v souÄasnosti %2).</translation>
+ </message>
+ <message>
+ <source>A construct was encountered which only is allowed in XQuery.</source>
+ <translation type="obsolete">Tento výtvor je pÅ™Ãpustný pouze v XQuery.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+771"/>
+ <source>No function by name %1 is available.</source>
+ <translation>Neexistuje žádná funkce s názvem %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
+ <source>The URI cannot have a fragment</source>
+ <translation>URI nesmà obsahovat kousek</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+788"/>
+ <source>%1 is not an atomic type. Casting is only possible to atomic types.</source>
+ <translation>%1 nenà atomárnÃm typem. Operace pÅ™edstavenà se dajà provádÄ›t pouze s atomárnÃmi typy.</translation>
+ </message>
+ <message>
+ <source>The first argument to %1 cannot be of type %2.</source>
+ <translation type="obsolete">Prvnà argument %1 nemůže být typu %2.</translation>
+ </message>
+ <message>
+ <location line="-554"/>
+ <source>The namespace URI must be a constant and cannot use enclosed expressions.</source>
+ <translation>Jmenný prostor-URI musà být konstantou a nesmà použÃvat vložené výrazy.</translation>
+ </message>
+ <message>
+ <location line="-2798"/>
+ <source>Prefix %1 is already declared in the prolog.</source>
+ <translation>Předpona %1 byla prohlášena již v předmluvě (prologu).</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
+ <source>Ambiguous rule match.</source>
+ <translation>VÃceznaÄné pravidlo.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="-49"/>
+ <source>Promoting %1 to %2 may cause loss of precision.</source>
+ <translation>Postoupenà od %1 k %2 může vést ke ztrátě přesnosti.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+782"/>
+ <source>In an XSL-T pattern, only function %1 and %2, not %3, can be used for matching.</source>
+ <translation>V XSL-T vyhledávacÃm vzoru se smÄ›jà pro srovnávánà použÃvat jen funkce %1 a %2, ne vÅ¡ak %3.</translation>
+ </message>
+ <message>
+ <location line="-1031"/>
+ <location line="+10"/>
+ <source>A default namespace declaration must occur before function, variable, and option declarations.</source>
+ <translation>Prohlášenà výchozÃch jmenných prostorů musà stát pÅ™ed prohlášenÃmi funkcÃ-, promÄ›nných- nebo prohlášenÃmi voleb.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+17"/>
+ <source>Operator %1 cannot be used on atomic values of type %2 and %3.</source>
+ <translation>Operátor %1 se nemůže použÃvat u atomárnÃch hodnot typů %2 a %3.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+526"/>
+ <source>The module import feature is not supported</source>
+ <translation>Funkce zavedenà modulu nenà podporována</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="-71"/>
+ <source>The parameter %1 is passed, but no corresponding %2 exists.</source>
+ <translation>Neexistuje žádný odpovÃdajÃcà %2 pro pÅ™edaný parameter %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
+ <source>A value of type %1 cannot have an Effective Boolean Value.</source>
+ <translation>Hodnota typu %1 nemůže mÃt žádnou úÄinnou booleánskou hodnotu.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
+ <source>The data of a processing instruction cannot contain the string %1</source>
+ <translation>Data pokynu pro zpracovánà nesmà obsahovat řetězec znaků %1</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+58"/>
+ <source>Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; </source>
+ <translation>Časový údaj 24:%1:%2.%3 je neplatný. U hodinového údaje je 24, ale minuty, sekundy a milisekundy musà být všechny 0; </translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-3984"/>
+ <source>A template by name %1 has already been declared.</source>
+ <translation>Předloha s názvem %1 už byla prohlášena.</translation>
+ </message>
+ <message>
+ <location line="+6376"/>
+ <source>It is not possible to bind to the prefix %1</source>
+ <translation>Předponu %1 nelze spojit</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+9"/>
+ <source>Value %1 of type %2 is below minimum (%3).</source>
+ <translation>Hodnota %1 typu %2 zůstává pod minimem (%3).</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="-44"/>
+ <source>Required type is %1, but %2 was found.</source>
+ <translation>Požadovaný typ je %1, byl ale zadán %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="-16"/>
+ <source>%1 is an unsupported encoding.</source>
+ <translation>Kódovánà %1 nenà podporováno.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2584"/>
+ <source>The name of an option must have a prefix. There is no default namespace for options.</source>
+ <translation>Název volby musà mÃt pÅ™edponu. Pro volby nenà žádná pÅ™edloha pro jmenný prostor.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-1221"/>
+ <source>Element %1 must come last.</source>
+ <translation>Prvek %1 musà stát jako poslednÃ.</translation>
+ </message>
+ <message>
+ <source>Attribute %1 cannot appear on the element %2. Allowed is %3, %4, and the standard attributes.</source>
+ <translation type="obsolete">Prvek %2 může mÃt jen vlastnost %3, %4 nebo vlastnosti, které jsou obvyklé, ne vÅ¡ak %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="-12"/>
+ <source>No namespace binding exists for the prefix %1 in %2</source>
+ <translation>Neexistuje žádné svázánà jmenného prostoru pro předponu %1 v %2</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+3238"/>
+ <source>The name %1 does not refer to any schema type.</source>
+ <translation>Název %1 nemá žádnou spojitost s jakýmkoli typem schématu.</translation>
+ </message>
+ <message>
+ <location line="-639"/>
+ <source>Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
+ <translation>Předponu %1 lze spojit pouze s %2. Toto je prohlášeno již dopředu..</translation>
+ </message>
+ <message>
+ <location line="-6517"/>
+ <source>W3C XML Schema identity constraint selector</source>
+ <translation>PÅ™epÃnaÄ omezenà totožnosti W3C XML schéma</translation>
+ </message>
+ <message>
+ <location line="+3"/>
+ <source>W3C XML Schema identity constraint field</source>
+ <translation>Pole omezenà totožnosti W3C XML schéma</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>A construct was encountered which is disallowed in the current language(%1).</source>
+ <translation>Narazilo se na výtvor, který v nynÄ›jÅ¡Ãm jazyce nenà povolen (%1).</translation>
+ </message>
+ <message>
+ <location line="+520"/>
+ <source>The initialization of variable %1 depends on itself</source>
+ <translation>Inicializace proměnné %1 je závislá na jejà vlastnà hodnotě</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+86"/>
+ <source>An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place.</source>
+ <translation>Uzel vlastnosti se nesmà objevit jako potomek uzlu dokumentu. Objevil se uzel vlastnosti s názvem %1, který je proto nevhodný.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="-68"/>
+ <source>Month %1 is outside the range %2..%3.</source>
+ <translation>Údaj o mÄ›sÃci %1 je mimo rozsah %2..%3.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+4311"/>
+ <source>The name of a variable bound in a for-expression must be different from the positional variable. Hence, the two variables named %1 collide.</source>
+ <translation>Název promÄ›nné úzce spojené s pro-výrazem se musà liÅ¡it od poziÄnà promÄ›nné. DvÄ› promÄ›nné s názvem %1 se z tohoto důvodu stÅ™etávajÃ.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
+ <source>No namespace binding exists for the prefix %1</source>
+ <translation>Neexistuje žádné svázánà jmenného prostoru pro předponu %1</translation>
+ </message>
+ <message>
+ <source>An %1-attribute with value %2 has already been declared.</source>
+ <translation type="obsolete">Prvek má již jednu vlastnost s názvem %1 s hodnotou %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+19"/>
+ <source>%1 is not valid as a value of type %2.</source>
+ <translation>%1 nenà platný jako hodnota typu %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+4"/>
+ <source>zero or more</source>
+ <translation>žádný nebo vÃce</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2482"/>
+ <location line="+71"/>
+ <source>%1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported.</source>
+ <translation>%1 se nenacházà v oblasti pod prohlášenÃm vlastnostÃ. VÅ¡imnÄ›te si, že funkce zavedenà schématu nenà podporována.</translation>
+ </message>
+ <message>
+ <location line="-2830"/>
+ <source>When function %1 is used for matching inside a pattern, the argument must be a variable reference or a string literal.</source>
+ <translation>PÅ™i použità funkce %1 k vyhodnocovánà uvnitÅ™ vyhledávacÃho vzoru musà být argumentem odkaz na promÄ›nnou nebo Å™etÄ›zec tvoÅ™ený pÃsmeny.</translation>
+ </message>
+ <message>
+ <location line="+233"/>
+ <source>%1 is an invalid template mode name.</source>
+ <translation>%1 nenà platným názvem pro řežim předlohy.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="-7"/>
+ <source>At least one time component must appear after the %1-delimiter.</source>
+ <translation>Po %1-oddÄ›lovaÄi se musà objevit alespoň jedna složka Äasu.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+196"/>
+ <source>Overflow: Date can't be represented.</source>
+ <translation>Nelze pÅ™edstavit datum (PÅ™eteÄenÃ).</translation>
+ </message>
+ <message>
+ <source>Operator %1 is not available between atomic values of type %2 and %3.</source>
+ <translation type="obsolete">Operátor %1 se nemůže použÃvat u atomárnÃch hodnot typů %2 a %3.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+87"/>
+ <source>A zone offset must be in the range %1..%2 inclusive. %3 is out of range.</source>
+ <translation>RozdÃl v Äasové zónÄ› musà ležet v oblasti %1..%2 (vÄetnÄ›). %3 ležà mimo oblast.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
+ <source>%1 is not a valid XML 1.0 character.</source>
+ <translation>%1 nenà platný znak XML 1.0.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+74"/>
+ <source>The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
+ <translation>Prvnà argument %1 nemůže být typu %2. Musà to být typ %3, %4 nebo %5.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+12"/>
+ <source>%1 is not a whole number of minutes.</source>
+ <translation>%1 nenà celoÄÃselným údajem o minutách.</translation>
+ </message>
+ <message>
+ <source>Failure when casting from %1 to %2: %3</source>
+ <translation type="obsolete">Operace předvedenà od %1 do %2 se nepodařila: %3</translation>
+ </message>
+ <message>
+ <source>It is not possible to cast from %1 to %2.</source>
+ <translation type="obsolete">Nelze provádět žádnou operaci předvedenà od %1 do %2.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-4204"/>
+ <source>No variable by name %1 exists</source>
+ <translation>Neexistuje žádná proměnná s názvem %1</translation>
+ </message>
+ <message>
+ <location line="+5919"/>
+ <source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
+ <translation>Jmenný prostor %1 lze spojit pouze s %2. Toto je stanoveno již dopředu.</translation>
+ </message>
+ <message>
+ <source>The second operand in a division, %1, cannot be zero (%2).</source>
+ <translation type="obsolete">Druhá veliÄina, operand, dÄ›lenà %1 nesmà být nula (%2).</translation>
+ </message>
+ <message>
+ <location line="-6170"/>
+ <source>Only one %1 declaration can occur in the query prolog.</source>
+ <translation>PÅ™edmluva k dotazu (prolog) smà obsahovat pouze jedno %1-prohlášenÃ.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-151"/>
+ <source>Element %1 must have at least one of the attributes %2 or %3.</source>
+ <translation>Prvek %1 musà mÃt alespoň jednu z vlastnostà %2 nebo %3.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+86"/>
+ <source>If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same.</source>
+ <translation>Když jsou zadány obÄ› hodnoty s Äasovými zónami, musà mÃt ten samý rozdÃl v Äasové zónÄ›. %1 a %2 nejsou to samé a jsou tÃm pádem nepÅ™Ãpustné.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+4006"/>
+ <source>No external functions are supported. All supported functions can be used directly, without first declaring them as external</source>
+ <translation>Nejsou podporovány vnÄ›jšà funkce. VÅ¡echny podporované funkce se dajà použÃvat pÅ™Ãmo, bez toho, že by byly nejprve prohlášeny za vnÄ›jÅ¡Ã</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+109"/>
+ <source>The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two.</source>
+ <translation>Poslednà krok cesty musà obsahovat buÄ jen uzly nebo jen atomárnà hodnoty. Nesmà se vyskytovat spoleÄnÄ›.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/schema/qxsdparticlechecker.cpp" line="+165"/>
+ <source>Empty particle cannot be derived from non-empty particle.</source>
+ <translation>Prázdnou Äástici nelze odvodit z Äástice, která nenà prázdná.</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Derived particle is missing element %1.</source>
+ <translation>V odvozené Äástici chybà prvek %1.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Derived element %1 is missing value constraint as defined in base particle.</source>
+ <translation>V odvozeném prvku %1 chybà omezenà hodnoty, jak je to stanoveno v základnà Äástici.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Derived element %1 has weaker value constraint than base particle.</source>
+ <translation>Odvozený prvek %1 má slabšà omezenà hodnoty než má základnà Äástice.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Fixed value constraint of element %1 differs from value constraint in base particle.</source>
+ <translation>Pevné omezenà hodnoty prvku %1 se lišà od omezenà hodnoty základnà Äástici.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Derived element %1 cannot be nillable as base element is not nillable.</source>
+ <translation>Odvozený prvek %1 nemůže mÃt žádnou vlastnost 'nillable', neboÅ¥ základnà prvek žádnou nestanovuje.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Block constraints of derived element %1 must not be more weaker than in the base element.</source>
+ <translation>Omezenà bloku odvozeného prvku %1 nesmà být slabšà než v základnÃm prvku.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Simple type of derived element %1 cannot be validly derived from base element.</source>
+ <translation>Jednoduchý typ odvozeného prvku %1 nemůže být platnÄ› odvozen ze základnÃho prvku.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Complex type of derived element %1 cannot be validly derived from base element.</source>
+ <translation>Složitý typ odvozeného prvku %1 nemůže být platnÄ› odvozen ze základnÃho prvku.</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Element %1 is missing in derived particle.</source>
+ <translation>Prvek %1 chybà v odvozené Äástici.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Element %1 does not match namespace constraint of wildcard in base particle.</source>
+ <translation>Prvek %1 neodpovÃdá omezenà jmenného prostoru zástupného symbolu (vzor hledánÃ) v základnà Äástici.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Wildcard in derived particle is not a valid subset of wildcard in base particle.</source>
+ <translation>Zástupný symbol (vzor hledánÃ) v odvozené Äástici nenà platnou dÃlÄà množinou zástupného symbolu v základnà Äástici.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>processContent of wildcard in derived particle is weaker than wildcard in base particle.</source>
+ <translation>Vlastnost processContent zástupného symbolu (vzor hledánÃ) odvozené Äástice je slabšà než zástupný symbol (vzor hledánÃ) v základnà Äástici.</translation>
+ </message>
+ <message>
+ <location line="+240"/>
+ <source>Derived particle allows content that is not allowed in the base particle.</source>
+ <translation>Odvozená Äástice dovoluje obsah, který nenà pÅ™Ãpustný pro základnà Äástici.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/schema/qxsdschemachecker.cpp" line="+227"/>
+ <source>%1 has inheritance loop in its base type %2.</source>
+ <translation>%1 má ve svém základnÃm typu %2 v kruzÃch provádÄ›nou dÄ›diÄnost.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <location line="+24"/>
+ <source>Circular inheritance of base type %1.</source>
+ <translation>V kruzÃch provádÄ›ná dÄ›diÄnost v základnÃm typu %1.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Circular inheritance of union %1.</source>
+ <translation>V kruzÃch provádÄ›ná dÄ›diÄnost pÅ™i sjednocenà %1.</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>%1 is not allowed to derive from %2 by restriction as the latter defines it as final.</source>
+ <translation>%1 nenà dovoleno odvodit z %2 pomocà omezenÃ, neboÅ¥ poslednÄ› uvedený ji urÄuje jako koneÄnou.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>%1 is not allowed to derive from %2 by extension as the latter defines it as final.</source>
+ <translation>%1 nenà dovoleno odvodit z %2 pomocà rozÅ¡ÃÅ™enÃ, neboÅ¥ poslednÄ› uvedený ji urÄuje jako koneÄnou.</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>Base type of simple type %1 cannot be complex type %2.</source>
+ <translation>Složitý typ %2 nemůže být základnÃm typem jednoduchého typu %1.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Simple type %1 cannot have direct base type %2.</source>
+ <translation>Jednoduchý typ %1 nemůže mÃt pÅ™Ãmý základnà typ %2.</translation>
+ </message>
+ <message>
+ <location line="+33"/>
+ <location line="+9"/>
+ <source>Simple type %1 is not allowed to have base type %2.</source>
+ <translation>Jednoduchý typ %1 nesmà mÃt základnà typ %2.</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Simple type %1 can only have simple atomic type as base type.</source>
+ <translation>Jednoduchý typ %1 může mÃt jen jednoduchý malinký základnà typ.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Simple type %1 cannot derive from %2 as the latter defines restriction as final.</source>
+ <translation>Jednoduchý typ %1 nesmà být odvozen z %2 , neboÅ¥ poslednà urÄuje omezenà jako koneÄné.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <location line="+484"/>
+ <source>Variety of item type of %1 must be either atomic or union.</source>
+ <translation>Rozmanitost složkových typů %1 musà být buÄ malinká nebo sjednocenÃ.</translation>
+ </message>
+ <message>
+ <location line="-474"/>
+ <location line="+483"/>
+ <source>Variety of member types of %1 must be atomic.</source>
+ <translation>Rozmanitost Älenských typů %1 musà být malinká.</translation>
+ </message>
+ <message>
+ <location line="-470"/>
+ <location line="+451"/>
+ <source>%1 is not allowed to derive from %2 by list as the latter defines it as final.</source>
+ <translation>%1 nenà dovoleno odvodit z %2 pomocà seznamu, neboÅ¥ poslednÄ› uvedený ji urÄuje jako koneÄnou.</translation>
+ </message>
+ <message>
+ <location line="-431"/>
+ <source>Simple type %1 is only allowed to have %2 facet.</source>
+ <translation>Jednoduchý typ %1 může mÃt jen stránky %2.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Base type of simple type %1 must have variety of type list.</source>
+ <translation>Základnà typ jednoduchého typu %1 musà mÃt rozmanitost seznamu typů.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Base type of simple type %1 has defined derivation by restriction as final.</source>
+ <translation>Základnà typ jednoduchého typu %1 urÄuje sjednocenà pomocà omezenà jako koneÄné.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Item type of base type does not match item type of %1.</source>
+ <translation>Složkový typ základnÃho typu neodpovÃdá složkovému typu %1.</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <location line="+93"/>
+ <source>Simple type %1 contains not allowed facet type %2.</source>
+ <translation>Jednoduchý typ %1 obsahuje nedovolený typ stránky %2.</translation>
+ </message>
+ <message>
+ <location line="-72"/>
+ <location line="+413"/>
+ <source>%1 is not allowed to derive from %2 by union as the latter defines it as final.</source>
+ <translation>%1 nenà dovoleno odvodit z %2 pomocà sjednocenÃ, neboÅ¥ poslednÄ› uvedený ji urÄuje jako koneÄnou.</translation>
+ </message>
+ <message>
+ <location line="-404"/>
+ <source>%1 is not allowed to have any facets.</source>
+ <translation>%1 nesmà mÃt žádné stránky.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Base type %1 of simple type %2 must have variety of union.</source>
+ <translation>Základnà typ %1 jednoduchého typu %2 musà mÃt rozmanitost sjednocenà typů.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Base type %1 of simple type %2 is not allowed to have restriction in %3 attribute.</source>
+ <translation>Základnà typ %1 jednoduchého typu %2 nesmà mÃt žádné omezenà vlastnosti %3.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Member type %1 cannot be derived from member type %2 of %3's base type %4.</source>
+ <translation>ÄŒlenský typ %1 nemůže být odvozen z Älenského typu %2 ze základnÃho typu %4 %3.</translation>
+ </message>
+ <message>
+ <location line="+65"/>
+ <source>Derivation method of %1 must be extension because the base type %2 is a simple type.</source>
+ <translation>RozÅ¡ÃÅ™enà s musà použÃvat jako způsob dÄ›diÄnosti (odvozenÃ) pro %1, neboÅ¥ základnà typ %2 je jednoduchým typem.</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Complex type %1 has duplicated element %2 in its content model.</source>
+ <translation>Složitý typ %1 má zdvojený prvek %2 ve svém modelu obsahu.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Complex type %1 has non-deterministic content.</source>
+ <translation>Složitý typ %1 má ne-neměnný obsah.</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>Attributes of complex type %1 are not a valid extension of the attributes of base type %2: %3.</source>
+ <translation>Vlastnosti složitého typu %1 nejsou žádným platným rozÅ¡ÃÅ™enÃm vlastnostà základnÃho typu %2: %3.</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>Content model of complex type %1 is not a valid extension of content model of %2.</source>
+ <translation>Model obsahu složitého typu %1 nenà žádným platným rozÅ¡ÃÅ™enÃm modelu obsahu %2.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Complex type %1 must have simple content.</source>
+ <translation>Složitý typ %1 musà mÃt jednoduchý obsah.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Complex type %1 must have the same simple type as its base class %2.</source>
+ <translation>Složitý typ %1 musà mÃt jednoduchý obsah.</translation>
+ </message>
+ <message>
+ <location line="+67"/>
+ <source>Complex type %1 cannot be derived from base type %2%3.</source>
+ <translation>Složitý typ %2 nemůže být odvozen ze základnÃho typu %2%3.</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Attributes of complex type %1 are not a valid restriction from the attributes of base type %2: %3.</source>
+ <translation>Vlastnosti složitého typu %1 nejsou žádným platným omezenÃm vlastnostà základnÃho typu %2: %3.</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Complex type %1 with simple content cannot be derived from complex base type %2.</source>
+ <translation>Složitý typ %1 s jednoduchým obsahem nemůže být odvozen ze složitého základnÃho typu %2.</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <source>Item type of simple type %1 cannot be a complex type.</source>
+ <translation>Složkový typ jednoduchého typu %1 nemůže být složitým typem.</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Member type of simple type %1 cannot be a complex type.</source>
+ <translation>Členský typ jednoduchého typu %1 nemůže být složitým typem.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>%1 is not allowed to have a member type with the same name as itself.</source>
+ <translation>%1 nesmà mÃt Älenský typ se stejným názvem, jaký má sám.</translation>
+ </message>
+ <message>
+ <location line="+83"/>
+ <location line="+29"/>
+ <location line="+34"/>
+ <source>%1 facet collides with %2 facet.</source>
+ <translation>Stránka %1 se střetává se stránkou %2.</translation>
+ </message>
+ <message>
+ <location line="-20"/>
+ <source>%1 facet must have the same value as %2 facet of base type.</source>
+ <translation>Stránka %1 musà mÃt tutéž hodnotu, jakou má stránka %2 základnÃho typu.</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>%1 facet must be equal or greater than %2 facet of base type.</source>
+ <translation>Stránka %1 musà být stejná nebo vÄ›tšà než stránka %2 základnÃho typu.</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <location line="+125"/>
+ <location line="+55"/>
+ <location line="+12"/>
+ <location line="+91"/>
+ <location line="+58"/>
+ <location line="+34"/>
+ <location line="+35"/>
+ <source>%1 facet must be less than or equal to %2 facet of base type.</source>
+ <translation>Stránka %1 musà být menšà nebo stejná jako stránka %2 základnÃho typu.</translation>
+ </message>
+ <message>
+ <location line="-389"/>
+ <source>%1 facet contains invalid regular expression</source>
+ <translation>Stránka %1 obsahuje neplatný pravidelný výraz</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Unknown notation %1 used in %2 facet.</source>
+ <translation>Stránka %2 obsahuje neplatné zaznamenánà %1.</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>%1 facet contains invalid value %2: %3.</source>
+ <translation>Stránka %1 obsahuje neplatnou hodnotu %2: %3.</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>%1 facet cannot be %2 or %3 if %4 facet of base type is %5.</source>
+ <translation>Stránka %1 nesmà být %2 nebo %3, pokud je stránka %4 základnÃho typu %5.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>%1 facet cannot be %2 if %3 facet of base type is %4.</source>
+ <translation>Stránka %1 nesmà být %2, pokud je stránka %3 základnÃho typu %4.</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <location line="+55"/>
+ <location line="+230"/>
+ <source>%1 facet must be less than or equal to %2 facet.</source>
+ <translation>Stránka %1 musà být menšà nebo stejná jako stránka %2.</translation>
+ </message>
+ <message>
+ <location line="-257"/>
+ <location line="+134"/>
+ <location line="+82"/>
+ <source>%1 facet must be less than %2 facet of base type.</source>
+ <translation>Stránka %1 musà být menšà než stránka %2 základnÃho typu.</translation>
+ </message>
+ <message>
+ <location line="-201"/>
+ <location line="+79"/>
+ <source>%1 facet and %2 facet cannot appear together.</source>
+ <translation>Stránky %1 a %2 se nemohou objevit spolu.</translation>
+ </message>
+ <message>
+ <location line="-27"/>
+ <location line="+12"/>
+ <location line="+113"/>
+ <source>%1 facet must be greater than %2 facet of base type.</source>
+ <translation>Stránka %1 musà být vÄ›tšà než stránka %2 základnÃho typu.</translation>
+ </message>
+ <message>
+ <location line="-86"/>
+ <location line="+58"/>
+ <source>%1 facet must be less than %2 facet.</source>
+ <translation>Stránka %1 musà být menšà než stránka %2.</translation>
+ </message>
+ <message>
+ <location line="-42"/>
+ <location line="+58"/>
+ <source>%1 facet must be greater than or equal to %2 facet of base type.</source>
+ <translation>Stránka %1 musà být vÄ›tšà nebo stejná jako stránka %2 základnÃho typu.</translation>
+ </message>
+ <message>
+ <location line="+113"/>
+ <source>Simple type contains not allowed facet %1.</source>
+ <translation>Jednoduchý typ obsahuje nedovolenou stránku %1.</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>%1, %2, %3, %4, %5 and %6 facets are not allowed when derived by list.</source>
+ <translation>Stránky %1, %2, %3, %4, %5 a %6 nejsou pÅ™i odvozenà (dÄ›diÄnosti) pomocà seznamu dovoleny.</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Only %1 and %2 facets are allowed when derived by union.</source>
+ <translation>PÅ™i odvozenà (dÄ›diÄnosti) pomocà sjednocenà jsou dovoleny pouze stránky %1 a %2.</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <location line="+16"/>
+ <source>%1 contains %2 facet with invalid data: %3.</source>
+ <translation>%1 obsahuje stránku %2 s neplatnými daty: %3.</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Attribute group %1 contains attribute %2 twice.</source>
+ <translation>Skupina vlastnostà %1 obsahuje vlastnost %2 dvakrát.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Attribute group %1 contains two different attributes that both have types derived from %2.</source>
+ <translation>Skupina vlastnostà %1 obsahuje dvÄ› rozdÃlné vlastnosti, obÄ› s typy, které jsou odvozeny z %2.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Attribute group %1 contains attribute %2 that has value constraint but type that inherits from %3.</source>
+ <translation>Skupina vlastnostà %1 obsahuje vlastnost %2 s omezenÃm hodnoty, typ je ale odvozen z %3.</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Complex type %1 contains attribute %2 twice.</source>
+ <translation>Složitý typ %1 obsahuje vlastnost %2 dvakrát.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Complex type %1 contains two different attributes that both have types derived from %2.</source>
+ <translation>Složitý typ %1 obsahuje dvÄ› rozdÃlné vlastnosti, obÄ› s typy, které jsou odvozeny z %2.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Complex type %1 contains attribute %2 that has value constraint but type that inherits from %3.</source>
+ <translation>Složitý typ %1 obsahuje vlastnost %2 s omezenÃm hodnoty, typ je ale odvozen z %3.</translation>
+ </message>
+ <message>
+ <location line="+43"/>
+ <source>Element %1 is not allowed to have a value constraint if its base type is complex.</source>
+ <translation>Prvek %1 nesmà mÃt omezenà hodnoty, když je základnà typ složitý.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Element %1 is not allowed to have a value constraint if its type is derived from %2.</source>
+ <translation>Prvek %1 nesmà mÃt omezenà hodnoty, když je jeho typ odvozen z %2.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <location line="+11"/>
+ <source>Value constraint of element %1 is not of elements type: %2.</source>
+ <translation>Omezenà hodnoty prvku %1 nenà z typu prvku: %2.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Element %1 is not allowed to have substitution group affiliation as it is no global element.</source>
+ <translation>Prvek %1 nesmà patÅ™it k skupinÄ› nahrazenÃ, neboÅ¥ nenà celkovým prvkem.</translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <source>Type of element %1 cannot be derived from type of substitution group affiliation.</source>
+ <translation>Typ prvku %1 nemůže být odvozen z typu pÅ™ÃsluÅ¡né skupiny nahrazenÃ.</translation>
+ </message>
+ <message>
+ <location line="+41"/>
+ <source>Value constraint of attribute %1 is not of attributes type: %2.</source>
+ <translation>Omezenà hodnoty vlastnosti %1 nenà z typu vlastnosti: %2.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Attribute %1 has value constraint but has type derived from %2.</source>
+ <translation>Vlastnost %1 má mezenà hodnoty, ale jejà typ je odvozen z %2.</translation>
+ </message>
+ <message>
+ <location line="+56"/>
+ <source>%1 attribute in derived complex type must be %2 like in base type.</source>
+ <translation>Vlastnost %1 v odvozeném složitém typu musà být jako v základnÃm typu %2.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Attribute %1 in derived complex type must have %2 value constraint like in base type.</source>
+ <translation>Vlastnost %1 v odvozeném složitém typu musà mÃt omezenà hodnoty jako v základnÃm typu %2.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Attribute %1 in derived complex type must have the same %2 value constraint like in base type.</source>
+ <translation>Vlastnost %1 v odvozeném složitém typu musà mÃt stejné omezenà hodnoty %2 jako v základnÃm typu.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Attribute %1 in derived complex type must have %2 value constraint.</source>
+ <translation>Vlastnost %1 v odvozeném složitém typu musà omezenà hodnoty %2.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>processContent of base wildcard must be weaker than derived wildcard.</source>
+ <translation>Vlastnost 'processContent' základnÃho zástupného symbolu (vzor hledánÃ) musà být slabšà než odvozený zástupný symbol (vzor hledánÃ).</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <location line="+15"/>
+ <source>Element %1 exists twice with different types.</source>
+ <translation>Prvek %1 existuje dvakrát s rozdÃlnými typy.</translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <source>Particle contains non-deterministic wildcards.</source>
+ <translation>Částice obsahuje ne-nemÄ›nné zástupné symboly (vzory hledánÃ).</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/schema/qxsdschemahelper.cpp" line="+691"/>
+ <location line="+63"/>
+ <source>Base attribute %1 is required but derived attribute is not.</source>
+ <translation>Základnà vlastnost %1 je vyžadována, ale odvozená vlastnost nenÃ.</translation>
+ </message>
+ <message>
+ <location line="-57"/>
+ <source>Type of derived attribute %1 cannot be validly derived from type of base attribute.</source>
+ <translation>Typ odvozené vlastnosti %1 nemůže být platně odvozen z typu základnà vlastnosti.</translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <source>Value constraint of derived attribute %1 does not match value constraint of base attribute.</source>
+ <translation>Omezenà hodnoty odvozené vlastnosti %1 neodpovÃdá omezenà hodnoty základnà vlastnosti.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Derived attribute %1 does not exists in the base definition.</source>
+ <translation>Odvozená vlastnost %1 neexistuje v základnÃm vymezenÃ.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Derived attribute %1 does not match the wildcard in the base definition.</source>
+ <translation>Odvozená vlastnost %1 neodpovÃdá zástupnému symbolu (vzoru hledánÃ) v základnÃm vymezenÃ.</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Base attribute %1 is required but missing in derived definition.</source>
+ <translation>Základnà vlastnost %1 je vyžadována, ale chybà v odvozeném vymezenÃ.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Derived definition contains an %1 element that does not exists in the base definition</source>
+ <translation>Odvozené vymezenà obsahuje prvek %1, který v základnÃm vymezenà neexistuje</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Derived wildcard is not a subset of the base wildcard.</source>
+ <translation>Odvozený zástupný symbol (vzor hledánÃ) nenà žádnou dÃlÄà množinou základnÃho zástupného symbolu (vzoru hledánÃ).</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>%1 of derived wildcard is not a valid restriction of %2 of base wildcard</source>
+ <translation>Vlastnost %1 odvozeného zástupného symbolu (vzoru hledánÃ) nenà platným omezenÃm %2 základnÃho zástupného symbolu (vzoru hledánÃ)</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Attribute %1 from base type is missing in derived type.</source>
+ <translation>Vlastnost %1 základnÃho typu chybà v odvozeném typu.</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Type of derived attribute %1 differs from type of base attribute.</source>
+ <translation>Typ odvozené vlastnosti %1 se lišà od typu základnà vlastnosti.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Base definition contains an %1 element that is missing in the derived definition</source>
+ <translation>Základnà vymezenà obsahuje prvek %1, který v odvozeném vymezenà chybÃ</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/schema/qxsdschemaparser.cpp" line="+170"/>
+ <source>Can not process unknown element %1, expected elements are: %2.</source>
+ <translation>Nelze zpracovat neznámý prvek %1, oÄekávanými prvky jsou: %2.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Element %1 is not allowed in this scope, possible elements are: %2.</source>
+ <translation>Prvek %1 nenà v této oblasti dovolen; možnými prvky jsou: %2.</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Child element is missing in that scope, possible child elements are: %1.</source>
+ <translation>Podprvek v oblasti chybÃ; možnými podprvky jsou: %1.</translation>
+ </message>
+ <message>
+ <location line="+127"/>
+ <source>Document is not a XML schema.</source>
+ <translation>Dokument nenà schématem XML.</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>%1 attribute of %2 element contains invalid content: {%3} is not a value of type %4.</source>
+ <translation>Vlastnost %1 prvku %2 obsahuje neplatný obsah: {%3} nenà hodnotou typu %4.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>%1 attribute of %2 element contains invalid content: {%3}.</source>
+ <translation>Vlastnost %1 prvku %2 obsahuje neplatný obsah: {%3}.</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Target namespace %1 of included schema is different from the target namespace %2 as defined by the including schema.</source>
+ <translation>CÃlový jmenný prostor %1 zahrnutého schématu se lišà od jÃm vymezeného cÃlového jmenného prostoru %2.</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <location line="+11"/>
+ <source>Target namespace %1 of imported schema is different from the target namespace %2 as defined by the importing schema.</source>
+ <translation>CÃlový jmenný prostor %1 zavedeného schématu se lišà od jÃm vymezeného cÃlového jmenného prostoru %2.</translation>
+ </message>
+ <message>
+ <location line="+237"/>
+ <source>%1 element is not allowed to have the same %2 attribute value as the target namespace %3.</source>
+ <translation>Prvek %1 nemůže stanovit cÃlový jmenný prostor %3 jako hodnotu vlastnosti %2.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>%1 element without %2 attribute is not allowed inside schema without target namespace.</source>
+ <translation>Ve schématu bez jmenného prostoru musà mÃt prvek %1 vlastnost %2.</translation>
+ </message>
+ <message>
+ <location line="+833"/>
+ <location line="+158"/>
+ <source>%1 element is not allowed inside %2 element if %3 attribute is present.</source>
+ <translation>Když je pÅ™Ãtomna vlastnost %3, nesmà se vyskytovat prvek %1 v prvku %2.</translation>
+ </message>
+ <message>
+ <location line="-97"/>
+ <location line="+119"/>
+ <location line="+92"/>
+ <source>%1 element has neither %2 attribute nor %3 child element.</source>
+ <translation>Prvek %1 nemá ani vlastnost %2 ani podprvek %3.</translation>
+ </message>
+ <message>
+ <location line="+835"/>
+ <location line="+1474"/>
+ <location line="+232"/>
+ <location line="+7"/>
+ <location line="+260"/>
+ <location line="+17"/>
+ <location line="+258"/>
+ <location line="+6"/>
+ <location line="+17"/>
+ <location line="+6"/>
+ <location line="+17"/>
+ <location line="+11"/>
+ <location line="+11"/>
+ <location line="+11"/>
+ <source>%1 element with %2 child element must not have a %3 attribute.</source>
+ <translation>Prvek %1 nesmà mÃt vlastnost %3, když existuje podprvek %2.</translation>
+ </message>
+ <message>
+ <location line="-1325"/>
+ <source>%1 attribute of %2 element must be %3 or %4.</source>
+ <translation>Vlastnost %1 prvku %2 může být jen %3 nebo %4.</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>%1 attribute of %2 element must have a value of %3.</source>
+ <translation>Vlastnost %1 prvku %2 musà mÃt hodnotu %3.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <location line="+34"/>
+ <source>%1 attribute of %2 element must have a value of %3 or %4.</source>
+ <translation>Vlastnost %1 prvku %2 může mÃt jen jednu z hodnot %3 nebo %4.</translation>
+ </message>
+ <message>
+ <location line="+319"/>
+ <location line="+129"/>
+ <location line="+9"/>
+ <location line="+7"/>
+ <location line="+7"/>
+ <location line="+327"/>
+ <location line="+203"/>
+ <location line="+6"/>
+ <location line="+6"/>
+ <location line="+6"/>
+ <location line="+6"/>
+ <location line="+6"/>
+ <location line="+6"/>
+ <location line="+77"/>
+ <source>%1 element must not have %2 and %3 attribute together.</source>
+ <translation>Vlastnosti %2 a %3 se v prvku %1 nemohou objevit spoleÄnÄ›.</translation>
+ </message>
+ <message>
+ <location line="-768"/>
+ <location line="+222"/>
+ <source>Content of %1 attribute of %2 element must not be from namespace %3.</source>
+ <translation>Obsah vlastnosti %1 prvku %2 nemůže pocházet ze jmenného prostoru %3.</translation>
+ </message>
+ <message>
+ <location line="-215"/>
+ <location line="+222"/>
+ <source>%1 attribute of %2 element must not be %3.</source>
+ <translation>Vlastnost %1 prvku %2 nemůže být %3.</translation>
+ </message>
+ <message>
+ <location line="-64"/>
+ <source>%1 attribute of %2 element must have the value %3 because the %4 attribute is set.</source>
+ <translation>Vlastnost %1 prvku %2 musà mÃt hodnotu %3, protože je nastavena vlastnost %4.</translation>
+ </message>
+ <message>
+ <location line="+187"/>
+ <source>Specifying use='prohibited' inside an attribute group has no effect.</source>
+ <translation>Zadánà use='prohibited' ve skupinÄ› vlastnostà nemá naprosto žádný úÄinek.</translation>
+ </message>
+ <message>
+ <location line="+353"/>
+ <source>%1 element must have either %2 or %3 attribute.</source>
+ <translation>Prvek %1 musà mÃt buÄ vlastnost %2 nebo %3.</translation>
+ </message>
+ <message>
+ <location line="+554"/>
+ <source>%1 element must have either %2 attribute or %3 or %4 as child element.</source>
+ <translation>Prvek %1 musà mÃt buÄ vlastnost %2, nebo mÃt %3 nebo %4 jako podprvek.</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>%1 element requires either %2 or %3 attribute.</source>
+ <translation>Prvek %1 vyžaduje buÄ vlastnost %2 nebo %3.</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>Text or entity references not allowed inside %1 element</source>
+ <translation>Text nebo odkazy na entitu nejsou v prvku %1 dovoleny</translation>
+ </message>
+ <message>
+ <location line="+41"/>
+ <location line="+112"/>
+ <source>%1 attribute of %2 element must contain %3, %4 or a list of URIs.</source>
+ <translation>Vlastnost %1 prvku %2 musà obsahovat %3, %4 nebo seznam adres (URL).</translation>
+ </message>
+ <message>
+ <location line="+126"/>
+ <source>%1 element is not allowed in this context.</source>
+ <translation>Prvek %1 nenà v této souvislosti dovolen.</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>%1 attribute of %2 element has larger value than %3 attribute.</source>
+ <translation>Hodnota vlastnosti %1 prvku %2 je většà než hodnota vlastnosti %3.</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Prefix of qualified name %1 is not defined.</source>
+ <translation>Předpona způsobilého názvu %1 nenà stanovena.</translation>
+ </message>
+ <message>
+ <location line="+65"/>
+ <location line="+61"/>
+ <source>%1 attribute of %2 element must either contain %3 or the other values.</source>
+ <translation>Hodnota vlastnosti %1 prvku %2 musà obsahovat buÄ %3 nebo jiné hodnoty.</translation>
+ </message>
+ <message>
+ <location line="+131"/>
+ <source>Component with id %1 has been defined previously.</source>
+ <translation>SouÄást s ID %1 je již stanovena.</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Element %1 already defined.</source>
+ <translation>Prvek %1 je již stanoven.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Attribute %1 already defined.</source>
+ <translation>Vlastnost %1 je již stanovena.</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Type %1 already defined.</source>
+ <translation>Typ %1 je již stanoven.</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Attribute group %1 already defined.</source>
+ <translation>Skupina vlastnostà %1 je již stanovena.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Element group %1 already defined.</source>
+ <translation>Skupina prvků %1 je již stanovena.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Notation %1 already defined.</source>
+ <translation>Zápis %1 je již stanoven.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Identity constraint %1 already defined.</source>
+ <translation>Omezenà totožnosti %1 je již stanoveno.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Duplicated facets in simple type %1.</source>
+ <translation>Zdvojené stránky v jednoduchém typu %1.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/schema/qxsdschemaresolver.cpp" line="+354"/>
+ <source>%1 references unknown %2 or %3 element %4.</source>
+ <translation>%1 odkazuje na neznámý prvek %4 (%2 nebo %3).</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>%1 references identity constraint %2 that is no %3 or %4 element.</source>
+ <translation>%1 odkazuje na omezenà totožnosti %2, které nenà ani prvek '%3' ani '%4'.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>%1 has a different number of fields from the identity constraint %2 that it references.</source>
+ <translation>U %1 se lišà poÄet polà od omezenà totožnosti %2, na kterou odkazuje.</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Base type %1 of %2 element cannot be resolved.</source>
+ <translation>Základnà typ %1 prvku %2 nemůže být vyřešen.</translation>
+ </message>
+ <message>
+ <location line="+84"/>
+ <source>Item type %1 of %2 element cannot be resolved.</source>
+ <translation>Složkový typ %1 prvku %2 nemůže být vyřešen.</translation>
+ </message>
+ <message>
+ <location line="+31"/>
+ <source>Member type %1 of %2 element cannot be resolved.</source>
+ <translation>Členský typ %1 prvku %2 nemůže být vyřešen.</translation>
+ </message>
+ <message>
+ <location line="+28"/>
+ <location line="+408"/>
+ <location line="+30"/>
+ <source>Type %1 of %2 element cannot be resolved.</source>
+ <translation>Typ %1 prvku %2 nemůže být vyřešen.</translation>
+ </message>
+ <message>
+ <location line="-416"/>
+ <source>Base type %1 of complex type cannot be resolved.</source>
+ <translation>Základnà typ %1 složitého typu nemůže být vyřešen.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>%1 cannot have complex base type that has a %2.</source>
+ <translation>%1 nelze mÃt žádný složitý základnà typ, který má %2.</translation>
+ </message>
+ <message>
+ <location line="+279"/>
+ <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 obsahu složitého typu %1 obsahuje prvek %2; nelze jej proto odvodit pomocà rozÅ¡ÃÅ™enà z ne-prázdného typu.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Complex type %1 cannot be derived by extension from %2 as the latter contains %3 element in its content model.</source>
+ <translation>Složitý typ %1 nemůže být odvozen pomocà rozÅ¡ÃÅ™enà z %2, neboÅ¥ poslednà obsahuje prvek '%3' ve svém modelu obsahu.</translation>
+ </message>
+ <message>
+ <location line="+101"/>
+ <source>Type of %1 element must be a simple type, %2 is not.</source>
+ <translation>Typ prvku %1 musà být jednoduchým prvkem, což %2 nenÃ.</translation>
+ </message>
+ <message>
+ <location line="+62"/>
+ <source>Substitution group %1 of %2 element cannot be resolved.</source>
+ <translation>Skupina nahrazenà %1 prvku %2 nemůže být vyřešena.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Substitution group %1 has circular definition.</source>
+ <translation>Skupina nahrazenà %1 má v kruzÃch provádÄ›né vymezenÃ.</translation>
+ </message>
+ <message>
+ <location line="+120"/>
+ <location line="+7"/>
+ <source>Duplicated element names %1 in %2 element.</source>
+ <translation>Název prvku %1 se vyskytuje v prvku %2 vÃcekrát.</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <location line="+52"/>
+ <location line="+71"/>
+ <location line="+28"/>
+ <source>Reference %1 of %2 element cannot be resolved.</source>
+ <translation>Odkaz %1 prvku %2 nemůže být vyřešen.</translation>
+ </message>
+ <message>
+ <location line="-138"/>
+ <source>Circular group reference for %1.</source>
+ <translation>V kruzÃch provádÄ›ný skupinový odkaz pro %1.</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>%1 element is not allowed in this scope</source>
+ <translation>Prvek %1 nenà v této oblasti dovolen</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>%1 element cannot have %2 attribute with value other than %3.</source>
+ <translation>Hodnota vlastnosti %2 prvku %1 může být pouze %3.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>%1 element cannot have %2 attribute with value other than %3 or %4.</source>
+ <translation>Hodnota vlastnosti %2 prvku %1 může být pouze %3 nebo %4.</translation>
+ </message>
+ <message>
+ <location line="+91"/>
+ <source>%1 or %2 attribute of reference %3 does not match with the attribute declaration %4.</source>
+ <translation>Vlastnost %1 nebo %2 odkazu %3 neodpovÃdá prohlášenà vlastnosti %4.</translation>
+ </message>
+ <message>
+ <location line="+25"/>
+ <source>Attribute group %1 has circular reference.</source>
+ <translation>Skupina vlastnosti %1 má kruzÃch provádÄ›ný odkaz.</translation>
+ </message>
+ <message>
+ <location line="+131"/>
+ <source>%1 attribute in %2 must have %3 use like in base type %4.</source>
+ <translation>Vlastnost %1 v %2 musà mÃt použità '%3' jako v základnÃm typu %4.</translation>
+ </message>
+ <message>
+ <location line="+52"/>
+ <source>Attribute wildcard of %1 is not a valid restriction of attribute wildcard of base type %2.</source>
+ <translation>Zástupný symbol vlastnosti (vzor hledánÃ) %1nenà platným omezenÃm zástupného symbolu vlastnosti (vzoru hledánÃ) základnÃho typu %2.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>%1 has attribute wildcard but its base type %2 has not.</source>
+ <translation>%1 má zástupný symbol vlastnosti (vzor hledánÃ), ale jeho základnà typ %2 nemá.</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Union of attribute wildcard of type %1 and attribute wildcard of its base type %2 is not expressible.</source>
+ <translation>Sjednocenà zástupného symbolu vlastnosti (vzoru hledánÃ) typu %1 a zástupného symbolu vlastnosti (vzoru hledánÃ) jeho základnÃho typu %2 nenà vyjádÅ™itelné.</translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>Enumeration facet contains invalid content: {%1} is not a value of type %2.</source>
+ <translation>VýÄtová stránka obsahuje neplatný obsah: {%1} nenà hodnotou typu %2.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Namespace prefix of qualified name %1 is not defined.</source>
+ <translation>Předpona jmenného prostoru způsobilého názvu %1 nenà stanovena.</translation>
+ </message>
+ <message>
+ <location line="+51"/>
+ <location line="+18"/>
+ <source>%1 element %2 is not a valid restriction of the %3 element it redefines: %4.</source>
+ <translation>Prvek %2 (%1) nenà platným omezenÃm pÅ™episovaného prvku (%3): %4.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/schema/qxsdtypechecker.cpp" line="+233"/>
+ <location line="+7"/>
+ <location line="+21"/>
+ <source>%1 is not valid according to %2.</source>
+ <translation>%1 je podle %2 neplatné.</translation>
+ </message>
+ <message>
+ <location line="+167"/>
+ <source>String content does not match the length facet.</source>
+ <translation>Obsah Å™etÄ›zce znaků neodpovÃdá stránce délky.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>String content does not match the minLength facet.</source>
+ <translation>Obsah Å™etÄ›zce znaků neodpovÃdá stránce délky (nejmenšà údaj, 'minLength').</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>String content does not match the maxLength facet.</source>
+ <translation>Obsah Å™etÄ›zce znaků neodpovÃdá stránce délky (nejvÄ›tšà údaj; 'maxLength').</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>String content does not match pattern facet.</source>
+ <translation>Obsah Å™etÄ›zce znaků neodpovÃdá stránce vzoru pro hledánÃ.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>String content is not listed in the enumeration facet.</source>
+ <translation>Obsah Å™etÄ›zce znaků nenà obsažen ve výÄtové stránce.</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Signed integer content does not match the maxInclusive facet.</source>
+ <translation>CeloÄÃselná hodnota oznaÄená znaménkem neodpovÃdá stránce 'maxInclusive'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Signed integer content does not match the maxExclusive facet.</source>
+ <translation>CeloÄÃselná hodnota oznaÄená znaménkem neodpovÃdá stránce 'maxExclusive'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Signed integer content does not match the minInclusive facet.</source>
+ <translation>CeloÄÃselná hodnota oznaÄená znaménkem neodpovÃdá stránce 'minInclusive'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Signed integer content does not match the minExclusive facet.</source>
+ <translation>CeloÄÃselná hodnota oznaÄená znaménkem neodpovÃdá stránce 'minExclusive'.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Signed integer content is not listed in the enumeration facet.</source>
+ <translation>CeloÄÃselná hodnota oznaÄená znaménkem nenà obsažena ve výÄtové stránce.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Signed integer content does not match pattern facet.</source>
+ <translation>CeloÄÃselná hodnota oznaÄená znaménkem neodpovÃdá stránce vzoru pro hledánÃ.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Signed integer content does not match in the totalDigits facet.</source>
+ <translation>CeloÄÃselná hodnota oznaÄená znaménkem neodpovÃdá stránce 'totalDigits'.</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Unsigned integer content does not match the maxInclusive facet.</source>
+ <translation>CeloÄÃselná hodnota jsoucà bez znaménka neodpovÃdá stránce 'maxInclusive'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Unsigned integer content does not match the maxExclusive facet.</source>
+ <translation>CeloÄÃselná hodnota jsoucà bez znaménka neodpovÃdá stránce 'maxExclusive'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Unsigned integer content does not match the minInclusive facet.</source>
+ <translation>CeloÄÃselná hodnota jsoucà bez znaménka neodpovÃdá stránce 'minInclusive'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Unsigned integer content does not match the minExclusive facet.</source>
+ <translation>CeloÄÃselná hodnota jsoucà bez znaménka neodpovÃdá stránce 'minExclusive'.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Unsigned integer content is not listed in the enumeration facet.</source>
+ <translation>CeloÄÃselná hodnota jsoucà bez znaménka nenà obsažena ve výÄtové stránce.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Unsigned integer content does not match pattern facet.</source>
+ <translation>CeloÄÃselná hodnota jsoucà bez znaménka neodpovÃdá stránce vzoru pro hledánÃ.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Unsigned integer content does not match in the totalDigits facet.</source>
+ <translation>CeloÄÃselná hodnota jsoucà bez znaménka neodpovÃdá stránce 'totalDigits'.</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Double content does not match the maxInclusive facet.</source>
+ <translation>ÄŒÃslo s pohyblivou Äárkou neodpovÃdá stránce 'maxInclusive'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Double content does not match the maxExclusive facet.</source>
+ <translation>ÄŒÃslo s pohyblivou Äárkou neodpovÃdá stránce 'maxExclusive'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Double content does not match the minInclusive facet.</source>
+ <translation>ÄŒÃslo s pohyblivou Äárkou neodpovÃdá stránce 'minInclusive'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Double content does not match the minExclusive facet.</source>
+ <translation>ÄŒÃslo s pohyblivou Äárkou neodpovÃdá stránce 'minExclusive'.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Double content is not listed in the enumeration facet.</source>
+ <translation>ÄŒÃslo s pohyblivou Äárkou nenà obsaženo ve výÄtové stránce.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Double content does not match pattern facet.</source>
+ <translation>ÄŒÃslo s pohyblivou Äárkou neodpovÃdá stránce vzoru pro hledánÃ.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Decimal content does not match in the fractionDigits facet.</source>
+ <translation>Desetinné ÄÃslo neodpovÃdá stránce 'fractionDigits'.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Decimal content does not match in the totalDigits facet.</source>
+ <translation>Desetinné ÄÃslo neodpovÃdá stránce 'totalDigits'.</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Date time content does not match the maxInclusive facet.</source>
+ <translation>Údaj o datu neodpovÃdá stránce 'maxInclusive'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Date time content does not match the maxExclusive facet.</source>
+ <translation>Údaj o datu neodpovÃdá stránce 'maxExclusive'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Date time content does not match the minInclusive facet.</source>
+ <translation>Údaj o datu neodpovÃdá stránce 'minInclusive'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Date time content does not match the minExclusive facet.</source>
+ <translation>Údaj o datu neodpovÃdá stránce 'minExclusive'.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Date time content is not listed in the enumeration facet.</source>
+ <translation>Údaj o datu nenà obsažen ve výÄtové stránce.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Date time content does not match pattern facet.</source>
+ <translation>Údaj o datu neodpovÃdá stránce vzoru pro hledánÃ.</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Duration content does not match the maxInclusive facet.</source>
+ <translation>Údaj o dobÄ› trvánà neodpovÃdá stránce 'maxInclusive'.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Duration content does not match the maxExclusive facet.</source>
+ <translation>Údaj o dobÄ› trvánà neodpovÃdá stránce 'maxExclusive'.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Duration content does not match the minInclusive facet.</source>
+ <translation>Údaj o dobÄ› trvánà neodpovÃdá stránce 'minInclusive'.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Duration content does not match the minExclusive facet.</source>
+ <translation>Údaj o dobÄ› trvánà neodpovÃdá stránce 'minExclusive'.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Duration content is not listed in the enumeration facet.</source>
+ <translation>Údaj o dobÄ› trvánà nenà obsažen ve výÄtové stránce.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Duration content does not match pattern facet.</source>
+ <translation>Údaj o dobÄ› trvánà neodpovÃdá stránce vzoru pro hledánÃ.</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Boolean content does not match pattern facet.</source>
+ <translation>Booleánská hodnota neodpovÃdá stránce vzoru pro hledánÃ.</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Binary content does not match the length facet.</source>
+ <translation>Binárnà obsah neodpovÃdá stránce délky.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Binary content does not match the minLength facet.</source>
+ <translation>Binárnà obsah neodpovÃdá stránce 'minLength'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Binary content does not match the maxLength facet.</source>
+ <translation>Binárnà obsah neodpovÃdá stránce 'maxLength'.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Binary content is not listed in the enumeration facet.</source>
+ <translation>Binárnà obsah nenà obsažen ve výÄtové stránce.</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Invalid QName content: %1.</source>
+ <translation>Obsah způsobilého názvu ('QName') je neplatný: %1.</translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>QName content is not listed in the enumeration facet.</source>
+ <translation>Obsah způsobilého názvu ('QName') nenà obsažen ve výÄtové stránce.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>QName content does not match pattern facet.</source>
+ <translation>Obsah způsobilého názvu ('QName') neodpovÃdá stránce vzoru pro hledánÃ.</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Notation content is not listed in the enumeration facet.</source>
+ <translation>Obsah zápisu nenà obsažen ve výÄtové stránce.</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <source>List content does not match length facet.</source>
+ <translation>Obsah seznamu neodpovÃdá stránce délky.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>List content does not match minLength facet.</source>
+ <translation>Obsah seznamu neodpovÃdá stránce 'minLength'.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>List content does not match maxLength facet.</source>
+ <translation>Obsah seznamu neodpovÃdá stránce 'maxLength'.</translation>
+ </message>
+ <message>
+ <location line="+90"/>
+ <source>List content is not listed in the enumeration facet.</source>
+ <translation>Obsah seznamu nenà obsažen ve výÄtové stránce.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>List content does not match pattern facet.</source>
+ <translation>Obsah seznamu neodpovÃdá stránce vzoru pro hledánÃ.</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Union content is not listed in the enumeration facet.</source>
+ <translation>Obsah sjednocenà nenà obsažen ve výÄtové stránce.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Union content does not match pattern facet.</source>
+ <translation>Obsah sjednocenà neodpovÃdá stránce vzoru pro hledánÃ.</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <source>Data of type %1 are not allowed to be empty.</source>
+ <translation>Data typu %1 nemohou být prázdná.</translation>
+ </message>
+ <message>
+ <location filename="../src/xmlpatterns/schema/qxsdvalidatinginstancereader.cpp" line="+160"/>
+ <source>Element %1 is missing child element.</source>
+ <translation>U prvku %1 chybà podprvek.</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>There is one IDREF value with no corresponding ID: %1.</source>
+ <translation>Existuje hodnota IDREF, pro kterou neexistuje pÅ™ÃsluÅ¡né ID: %1.</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Loaded schema file is invalid.</source>
+ <translation>Nahraný soubor se schématem je neplatný.</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>%1 contains invalid data.</source>
+ <translation>%1 obsahuje neplatná data.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>xsi:schemaLocation namespace %1 has already appeared earlier in the instance document.</source>
+ <translation>Jmenný prostor xsi:schemaLocation %1 byl již dÅ™Ãve v pÅ™Ãpadovém dokumentu stanoven.</translation>
+ </message>
+ <message>
+ <location line="+22"/>
+ <source>xsi:noNamespaceSchemaLocation cannot appear after the first no-namespace element or attribute.</source>
+ <translation>xsi:noNamespaceSchemaLocation se nemůže objevit po prvnÃm prvku nebo vlastnosti bez jmenného prostoru.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>No schema defined for validation.</source>
+ <translation>Pro schválenà nenà stanoveno žádné schéma.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>No definition for element %1 available.</source>
+ <translation>Pro prvek %1 nenà dostupné žádné vymezenÃ.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <location line="+49"/>
+ <location line="+142"/>
+ <source>Specified type %1 is not known to the schema.</source>
+ <translation>Zadaný typ %1 nenà ve schématu stanoven.</translation>
+ </message>
+ <message>
+ <location line="-176"/>
+ <source>Element %1 is not defined in this scope.</source>
+ <translation>Prvek %1 nenà v této oblasti stanoven.</translation>
+ </message>
+ <message>
+ <location line="+43"/>
+ <source>Declaration for element %1 does not exist.</source>
+ <translation>Pro prvek %1 nenà dostupné žádné prohlášenÃ.</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Element %1 contains invalid content.</source>
+ <translation>Prvek %1 obsahuje neplatný obsah.</translation>
+ </message>
+ <message>
+ <location line="+73"/>
+ <source>Element %1 is declared as abstract.</source>
+ <translation>Prvek %1 je prohlášen jako abstraktnÃ.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Element %1 is not nillable.</source>
+ <translation>Prvek %1 nemá zadánu vlastnost 'nillable'.</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Attribute %1 contains invalid data: %2</source>
+ <translation>Vlastnost %1 obsahuje neplatná data: %2</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Element contains content although it is nillable.</source>
+ <translation>Prvek má obsah, aÄkoli je 'nillable'.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Fixed value constrained not allowed if element is nillable.</source>
+ <translation>Pevné omezenà hodnoty nenà dovoleno, pokud je prvek 'nillable'.</translation>
+ </message>
+ <message>
+ <location line="+32"/>
+ <source>Specified type %1 is not validly substitutable with element type %2.</source>
+ <translation>Zadaný typ %1 nenà platně nahraditelný typem prvku %2.</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Complex type %1 is not allowed to be abstract.</source>
+ <translation>Složitý typ %1 nemůže být abstraktnÃ.</translation>
+ </message>
+ <message>
+ <location line="+21"/>
+ <source>Element %1 contains not allowed attributes.</source>
+ <translation>Prvek %1 obsahuje nepÅ™Ãpustné vlastnosti.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <location line="+97"/>
+ <source>Element %1 contains not allowed child element.</source>
+ <translation>Prvek %1 obsahuje nepÅ™Ãpustný podprvek.</translation>
+ </message>
+ <message>
+ <location line="-76"/>
+ <location line="+93"/>
+ <source>Content of element %1 does not match its type definition: %2.</source>
+ <translation>Obsah prvku %1 neodpovÃdá vymezenà svého typu: %2.</translation>
+ </message>
+ <message>
+ <location line="-85"/>
+ <location line="+92"/>
+ <location line="+41"/>
+ <source>Content of element %1 does not match defined value constraint.</source>
+ <translation>Obsah prvku %1 neodpovÃdá stanovenému omezenà hodnoty.</translation>
+ </message>
+ <message>
+ <location line="-73"/>
+ <source>Element %1 contains not allowed child content.</source>
+ <translation>Prvek %1 obsahuje nepÅ™Ãpustný podobsah.</translation>
+ </message>
+ <message>
+ <location line="+41"/>
+ <source>Element %1 contains not allowed text content.</source>
+ <translation>Prvek %1 obsahuje nepÅ™Ãpustný textový obsah.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Element %1 can not contain other elements, as it has a fixed content.</source>
+ <translation>Prvek %1 nesmà obsahovat žádné podprvky, protože má pevný obsah.</translation>
+ </message>
+ <message>
+ <location line="+43"/>
+ <source>Element %1 is missing required attribute %2.</source>
+ <translation>U prvkuk %1 chybà vyžadovaná vlastnost %2.</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Attribute %1 does not match the attribute wildcard.</source>
+ <translation>Vlastnost %1 neodpovÃdá zástupnému symbolu (vzoru hledánÃ) vlastnosti.</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Declaration for attribute %1 does not exist.</source>
+ <translation>Pro vlastnost %1 nenà dostupné žádné prohlášenÃ.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Element %1 contains two attributes of type %2.</source>
+ <translation>Prvek %1 obsahuje dvÄ› vlastnosti typu %2.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Attribute %1 contains invalid content.</source>
+ <translation>Vlastnost %1 obsahuje neplatný obsah.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Element %1 contains unknown attribute %2.</source>
+ <translation>Prvek %1 obsahuje neznámou vlastnost %2.</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <location line="+46"/>
+ <source>Content of attribute %1 does not match its type definition: %2.</source>
+ <translation>Obsah vlastnosti %1 neodpovÃdá vymezenà svého typu: %2.</translation>
+ </message>
+ <message>
+ <location line="-38"/>
+ <location line="+46"/>
+ <source>Content of attribute %1 does not match defined value constraint.</source>
+ <translation>Obsah vlastnosti %1 neodpovÃdá stanovenému omezenà hodnoty.</translation>
+ </message>
+ <message>
+ <location line="+88"/>
+ <source>Non-unique value found for constraint %1.</source>
+ <translation>Pro omezenà %1 byla nalezena ne jednoznaÄnÄ› stanovená hodnota.</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Key constraint %1 contains absent fields.</source>
+ <translation>Omezenà klÃÄe %1 obsahuje nepÅ™Ãtomná pole.</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Key constraint %1 contains references nillable element %2.</source>
+ <translation>Omezenà klÃÄe %1 obsahuje odkazy na prvek %2, který je 'nillable'.</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>No referenced value found for key reference %1.</source>
+ <translation>Odkazovanou hodnotu odkazu na klÃÄ %1 se nepodaÅ™ilo najÃt.</translation>
+ </message>
+ <message>
+ <location line="+64"/>
+ <source>More than one value found for field %1.</source>
+ <translation>Pro pole %1 bylo nalezeno vÃce hodnot.</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Field %1 has no simple type.</source>
+ <translation>Pole %1 nemá žádný jednoduchý typ.</translation>
+ </message>
+ <message>
+ <location line="+73"/>
+ <source>ID value '%1' is not unique.</source>
+ <translation>Hodnota ID %1 nenà jednoznaÄná.</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>'%1' attribute contains invalid QName content: %2.</source>
+ <translation>Vlastnost %1 obsahuje neplatný způsobilý název: %2.</translation>
+ </message>
+</context>
+<context>
+ <name>VolumeSlider</name>
+ <message>
+ <source>Muted</source>
+ <translation type="obsolete">ZtlumenÃ</translation>
+ </message>
+ <message>
+ <source>Volume: %1%</source>
+ <translation type="obsolete">Hlasitost: %1%</translation>
+ </message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/qt_help_cs.ts Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,395 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs_CZ">
+<context>
+ <name>QCLuceneResultWidget</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+110"/>
+ <source>Search Results</source>
+ <translation>Výsledky hledánÃ</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Note:</source>
+ <translation>Poznámka:</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>The search results may not be complete since the documentation is still being indexed!</source>
+ <translation>Nemusà být ukázány vÅ¡echny výsledky, protože dokumentace je stále jeÅ¡tÄ› rejstÅ™Ãkována!</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Your search did not match any documents.</source>
+ <translation>Nebyly nalezeny žádné dokumenty, které by odpovÃdaly vaÅ¡emu hledánÃ.</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>(The reason for this might be that the documentation is still being indexed.)</source>
+ <translation>(Důvodem pro to by mohlo být, že dokumentace je stále jeÅ¡tÄ› rejstÅ™Ãkována.)</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpCollectionHandler</name>
+ <message>
+ <source>The collection file is not set up yet!</source>
+ <translation type="obsolete">Soubor se sbÃrkou jeÅ¡tÄ› nenà zÅ™Ãzen!</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/>
+ <source>The collection file '%1' is not set up yet!</source>
+ <translation>Soubor se sbÃrkou '%1' jeÅ¡tÄ› nenà zÅ™Ãzen!</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Cannot load sqlite database driver!</source>
+ <translation>Databázový ovladaÄ pro SQLite nelze nahrát!</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <location line="+49"/>
+ <source>Cannot open collection file: %1</source>
+ <translation>Nelze otevÅ™Ãt soubor se sbÃrkou: %1</translation>
+ </message>
+ <message>
+ <location line="-40"/>
+ <source>Cannot create tables in file %1!</source>
+ <translation>V souboru %1 nelze vytvořit žádné tabulky!</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>The collection file '%1' already exists!</source>
+ <translation>Soubor se sbÃrkou '%1' již existuje!</translation>
+ </message>
+ <message>
+ <location line="+148"/>
+ <source>Unknown filter '%1'!</source>
+ <translation>Neznámý filtr '%1'!</translation>
+ </message>
+ <message>
+ <location line="+105"/>
+ <source>Invalid documentation file '%1'!</source>
+ <translation>Neplatný soubor s dokumentacà '%1'!</translation>
+ </message>
+ <message>
+ <location line="+167"/>
+ <source>Cannot register namespace '%1'!</source>
+ <translation>Nelze zapsat jmenný prostor %1!</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Cannot open database '%1' to optimize!</source>
+ <translation>Databázi '%1' nelze otevÅ™Ãt pro vyladÄ›nÃ!</translation>
+ </message>
+ <message>
+ <source>The specified collection file already exists!</source>
+ <translation type="obsolete">Zadaný soubor se sbÃrkou již existuje!</translation>
+ </message>
+ <message>
+ <location line="-438"/>
+ <source>Cannot create directory: %1</source>
+ <translation>Nelze vytvořit adresář: %1</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Cannot copy collection file: %1</source>
+ <translation>Nelze kopÃrovat soubor se sbÃrkou: %1</translation>
+ </message>
+ <message>
+ <source>Unknown filter!</source>
+ <translation type="obsolete">Neznámý filtr!</translation>
+ </message>
+ <message>
+ <location line="+174"/>
+ <source>Cannot register filter %1!</source>
+ <translation>Nelze zapsat filtr %1!</translation>
+ </message>
+ <message>
+ <location line="+44"/>
+ <source>Cannot open documentation file %1!</source>
+ <translation>Nelze otevÅ™Ãt soubor s dokumentacÃ: %1!</translation>
+ </message>
+ <message>
+ <source>Invalid documentation file!</source>
+ <translation type="obsolete">Neplatný soubor s dokumentacÃ!</translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>The namespace %1 was not registered!</source>
+ <translation>Jmenný prostor %1 nebyl zapsán!</translation>
+ </message>
+ <message>
+ <location line="+120"/>
+ <source>Namespace %1 already exists!</source>
+ <translation>Jmenný prostor %1 již existuje!</translation>
+ </message>
+ <message>
+ <source>Cannot register namespace!</source>
+ <translation type="obsolete">Jmenný prostor nelze zapsat!</translation>
+ </message>
+ <message>
+ <source>Cannot open database to optimize!</source>
+ <translation type="obsolete">Databázi nelze otevÅ™Ãt pro vyladÄ›nÃ!</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpDBReader</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+98"/>
+ <source>Cannot open database '%1' '%2': %3</source>
+ <extracomment>The placeholders are: %1 - The name of the database which cannot be opened %2 - The unique id for the connection %3 - The actual error string</extracomment>
+ <translation>Databázi nelze otevÅ™Ãt: '%1' '%2': %3</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpEngineCore</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+524"/>
+ <source>The specified namespace does not exist!</source>
+ <translation>Zadaný jmenný prostor neexistuje!</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpEngineCorePrivate</name>
+ <message>
+ <location line="-402"/>
+ <source>Cannot open documentation file %1: %2!</source>
+ <translation>Nelze otevÅ™Ãt soubor s dokumentacà %1: %2!</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpGenerator</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/>
+ <source>Invalid help data!</source>
+ <translation>Neplatná data s nápovědou!</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>No output file name specified!</source>
+ <translation>Pro výstupnà soubor nebyl zadán žádný název!</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Building up file structure...</source>
+ <translation>Vytvářà se uspořádánà souboru...</translation>
+ </message>
+ <message>
+ <location line="-7"/>
+ <source>The file %1 cannot be overwritten!</source>
+ <translation>Soubor %1 nelze přepsat!</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Cannot open data base file %1!</source>
+ <translation>Nelze otevÅ™Ãt soubor s databázÃ: %1!</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>Cannot register namespace %1!</source>
+ <translation>Nelze zapsat jmenný prostor %1!</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Insert custom filters...</source>
+ <translation>Vložit uživatelsky stanovené filtry...</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Insert help data for filter section (%1 of %2)...</source>
+ <translation>Vložit data s nápovědou pro oddělenàs filtrem (%1 von %2) einfügen...</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>Documentation successfully generated.</source>
+ <translation>Dokumentace byla úspěšně vytvořena.</translation>
+ </message>
+ <message>
+ <location line="+76"/>
+ <source>Some tables already exist!</source>
+ <translation>NÄ›které tabulky již existujÃ!</translation>
+ </message>
+ <message>
+ <location line="+61"/>
+ <source>Cannot create tables!</source>
+ <translation>Tabulky nelze vytvořit!</translation>
+ </message>
+ <message>
+ <location line="+86"/>
+ <source>Cannot register virtual folder!</source>
+ <translation>Virtuálnà adresář nelze zapsat!</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Insert files...</source>
+ <translation>Vložit soubory...</translation>
+ </message>
+ <message>
+ <location line="+42"/>
+ <source>The referenced file %1 must be inside or within a subdirectory of (%2). Skipping it.</source>
+ <translation>Odkazovaný soubor %1 se musà nacházet v adresáři %2 nebo v jeho podadresáři. Přeskakuje se.</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>The file %1 does not exist! Skipping it.</source>
+ <translation>Soubor %1 neexistuje! Přeskakuje se.</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Cannot open file %1! Skipping it.</source>
+ <translation>Soubor %1 nelze otevÅ™Ãt! PÅ™eskakuje se.</translation>
+ </message>
+ <message>
+ <location line="+131"/>
+ <source>The filter %1 is already registered!</source>
+ <translation>Filtr %1 je již zapsán!</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Cannot register filter %1!</source>
+ <translation>Nelze zapsat filtr %1!</translation>
+ </message>
+ <message>
+ <location line="+24"/>
+ <source>Insert indices...</source>
+ <translation>Vložit rejstÅ™Ãky...</translation>
+ </message>
+ <message>
+ <location line="+80"/>
+ <source>Insert contents...</source>
+ <translation>Vložit obsah...</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Cannot insert contents!</source>
+ <translation>Obsah nelze vložit!</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Cannot register contents!</source>
+ <translation>Obsah nelze zapsat!</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpSearchQueryWidget</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+411"/>
+ <source>Search for:</source>
+ <translation>Hledat:</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Previous search</source>
+ <translation>PÅ™edchozà hledánÃ</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Next search</source>
+ <translation>Dalšà hledánÃ</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Search</source>
+ <translation>Hledat</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Advanced search</source>
+ <translation>RozÅ¡ÃÅ™ené hledánÃ</translation>
+ </message>
+ <message>
+ <location line="+18"/>
+ <source>words <B>similar</B> to:</source>
+ <translation>Slova <B>podobná</B>:</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source><B>without</B> the words:</source>
+ <translation><B>beze</B> slov:</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>with <B>exact phrase</B>:</source>
+ <translation>s <B>přesnou skupinou slov</B>:</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>with <B>all</B> of the words:</source>
+ <translation>se <B>všemi</B> slovy:</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>with <B>at least one</B> of the words:</source>
+ <translation>s <B>jakýmkoli</B> ze slov:</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpSearchResultWidget</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/>
+ <source>0 - 0 of 0 Hits</source>
+ <translation>0 - 0 z 0 zásahů</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpSearchResultWidgetPrivate</name>
+ <message>
+ <location line="-61"/>
+ <source>%1 - %2 of %3 Hits</source>
+ <translation>%1 - %2 z %3 zásahů</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../tools/assistant/lib/qhelp_global.h" line="+83"/>
+ <source>Untitled</source>
+ <translation>Bez názvu</translation>
+ </message>
+ <message>
+ <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+85"/>
+ <source>Unknown token.</source>
+ <translation>Neznámý symbol.</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>Unknown token. Expected "QtHelpProject"!</source>
+ <translation>Neznámý symbol. Byl oÄekáván "QtHelpProject"!</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Error in line %1: %2</source>
+ <translation>Chyba na řádku %1: %2</translation>
+ </message>
+ <message>
+ <location line="+13"/>
+ <source>A virtual folder must not contain a '/' character!</source>
+ <translation>Virtuálnà složka nesmà obsahovat znak '/'!</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>A namespace must not contain a '/' character!</source>
+ <translation>Jmenný prostor nesmà obsahovat znak '/'!</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Missing namespace in QtHelpProject.</source>
+ <translation>ChybÄ›jÃcà jmenný prostor QtHelpProject.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Missing virtual folder in QtHelpProject</source>
+ <translation>ChybÄ›jÃcà virtuálnà složka v QtHelpProject.</translation>
+ </message>
+ <message>
+ <location line="+88"/>
+ <source>Missing attribute in keyword at line %1.</source>
+ <translation>ChybÄ›jÃcà vlastnost v klÃÄovém slovÄ› na řádku %1.</translation>
+ </message>
+ <message>
+ <location line="+123"/>
+ <source>The input file %1 could not be opened!</source>
+ <translation>Vstupnà soubor %1 se nepodaÅ™ilo otevÅ™Ãt!</translation>
+ </message>
+</context>
+</TS>
--- a/translations/translations.pri Fri Feb 19 23:40:16 2010 +0200
+++ b/translations/translations.pri Fri Mar 12 15:46:37 2010 +0200
@@ -17,7 +17,7 @@
###### Qt Libraries
-QT_TS = ar da de es fr iw ja_JP pl pt ru sk sl sv uk zh_CN zh_TW
+QT_TS = ar cs da de es fr iw ja_JP pl pt ru sk sl sv uk zh_CN zh_TW
ts-qt.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
-I../include -I../include/Qt \
--- a/util/s60pixelmetrics/pixel_metrics.cpp Fri Feb 19 23:40:16 2010 +0200
+++ b/util/s60pixelmetrics/pixel_metrics.cpp Fri Mar 12 15:46:37 2010 +0200
@@ -50,7 +50,7 @@
// so that we can keep dynamic and static values inline.
// Please adjust version data if correcting dynamic PM calculations.
const TInt KPMMajorVersion = 1;
-const TInt KPMMinorVersion = 15;
+const TInt KPMMinorVersion = 16;
TPixelMetricsVersion PixelMetrics::Version()
{
@@ -855,19 +855,26 @@
case QStyle::PM_FocusFrameHMargin:
case QStyle::PM_FocusFrameVMargin:
{
- TAknLayoutRect gridRect;
- gridRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::grid_highlight_pane(0));
- TAknLayoutRect gridRectCenter;
- gridRectCenter.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::cell_highlight_pane_g1());
+ TAknLayoutRect listScrollPane;
+ listScrollPane.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::listscroll_gen_pane(0));
+ TAknLayoutRect listGenPane;
+ listGenPane.LayoutRect(listScrollPane.Rect(), AknLayoutScalable_Avkon::list_gen_pane(0));
+ TAknLayoutRect listSinglePane;
+ listSinglePane.LayoutRect(listGenPane.Rect(), AknLayoutScalable_Avkon::list_single_pane(0));
+ TAknLayoutText listSinglePaneText;
+ listSinglePaneText.LayoutText(listSinglePane.Rect(), AknLayoutScalable_Avkon::list_single_pane_t1(0));
+ TAknLayoutRect highlightRect;
+ highlightRect.LayoutRect(listSinglePane.Rect(), AknLayoutScalable_Avkon::list_highlight_pane_cp1().LayoutLine());
// The difference of center piece from border tell the frame width.
if ( value == QStyle::PM_FocusFrameHMargin)
{
- value = gridRect.Rect().iBr.iX - gridRectCenter.Rect().iBr.iX;
+ //use topleft for horizontal as S60 uses different values for right and left borders
+ value = listSinglePaneText.TextRect().iTl.iX - highlightRect.Rect().iTl.iX;
}
else
{
- value = gridRect.Rect().iBr.iY - gridRectCenter.Rect().iBr.iY;
+ value = highlightRect.Rect().iBr.iY - listSinglePaneText.TextRect().iBr.iY;
}
}
break;