From c027f0ae1967ec1d64cb2c9679c8b57f18faf7f5 Mon Sep 17 00:00:00 2001 From: Prasanth Ullattil Date: Fri, 26 Feb 2010 10:54:41 +0100 Subject: ActiveQt Internet Explorer component causes Desktop Icons to flicker. This happens only if IE is embedded in an frameless window. The repaint caused by calling EnableModeless() is making the desktop icons flicker. This repaint generated via ActiveQt will be ignored by QtGui. This is done by checking if the window style is already in the required state or not. Task-number: QTBUG-8355 Reviewed-by: Denis --- src/gui/kernel/qwidget.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 850e961..91a11ec 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -7925,13 +7925,16 @@ inline void setDisabledStyle(QWidget *w, bool setStyle) // set/reset WS_DISABLED style. if(w && w->isWindow() && w->isVisible() && w->isEnabled()) { LONG dwStyle = GetWindowLong(w->winId(), GWL_STYLE); + LONG newStyle = dwStyle; if (setStyle) - dwStyle |= WS_DISABLED; + newStyle |= WS_DISABLED; else - dwStyle &= ~WS_DISABLED; - SetWindowLong(w->winId(), GWL_STYLE, dwStyle); - // we might need to repaint in some situations (eg. menu) - w->repaint(); + newStyle &= ~WS_DISABLED; + if (newStyle != dwStyle) { + SetWindowLong(w->winId(), GWL_STYLE, newStyle); + // we might need to repaint in some situations (eg. menu) + w->repaint(); + } } } #endif -- cgit v0.12 From 3604c59a93eae6f27407316e5be3840f87d01711 Mon Sep 17 00:00:00 2001 From: Prasanth Ullattil Date: Fri, 26 Feb 2010 12:12:13 +0100 Subject: Remove unwanted code after c027f0ae1967ec1d64cb2c9679c8b57f18faf7f5 The LockWindowUpdate() was used to reduce the flicker caused when calling EnableModeless(). After the above commit, no repaints will be generated by this code path, so we can remove this call. Task-number: QTBUG-8355 Reviewed-by: Bradley T. Hughes --- src/activeqt/container/qaxwidget.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/activeqt/container/qaxwidget.cpp b/src/activeqt/container/qaxwidget.cpp index 9149320..865c26c 100644 --- a/src/activeqt/container/qaxwidget.cpp +++ b/src/activeqt/container/qaxwidget.cpp @@ -1438,9 +1438,6 @@ extern Q_GUI_EXPORT bool qt_win_ignoreNextMouseReleaseEvent; HRESULT WINAPI QAxClientSite::EnableModeless(BOOL fEnable) { -#if !defined(Q_OS_WINCE) - LockWindowUpdate(host->window()->winId()); -#endif EnableWindow(host->window()->winId(), fEnable); if (!fEnable) { @@ -1451,9 +1448,6 @@ HRESULT WINAPI QAxClientSite::EnableModeless(BOOL fEnable) QApplicationPrivate::leaveModal(host); } qt_win_ignoreNextMouseReleaseEvent = false; -#if !defined(Q_OS_WINCE) - LockWindowUpdate(0); -#endif return S_OK; } -- cgit v0.12 From 7ff5a5bc4b67a807200cae3ac83884d721bad373 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Tue, 23 Feb 2010 17:12:30 +0100 Subject: Skip complex FBO tests if combined depth-stencil isn't supported MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-By: Trond Kjernåsen --- tests/auto/qgl/tst_qgl.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp index 2983af3..a0656d0 100644 --- a/tests/auto/qgl/tst_qgl.cpp +++ b/tests/auto/qgl/tst_qgl.cpp @@ -1036,6 +1036,11 @@ void tst_QGL::glFBORendering() // Don't complicate things by using NPOT: QGLFramebufferObject *fbo = new QGLFramebufferObject(256, 128, fboFormat); + if (fbo->attachment() != QGLFramebufferObject::CombinedDepthStencil) { + delete fbo; + QSKIP("FBOs missing combined depth~stencil support", SkipSingle); + } + QPainter fboPainter; bool painterBegun = fboPainter.begin(fbo); QVERIFY(painterBegun); @@ -1098,6 +1103,16 @@ void tst_QGL::multipleFBOInterleavedRendering() QGLFramebufferObject *fbo2 = new QGLFramebufferObject(256, 128, fboFormat); QGLFramebufferObject *fbo3 = new QGLFramebufferObject(256, 128, fboFormat); + if ( (fbo1->attachment() != QGLFramebufferObject::CombinedDepthStencil) || + (fbo2->attachment() != QGLFramebufferObject::CombinedDepthStencil) || + (fbo3->attachment() != QGLFramebufferObject::CombinedDepthStencil) ) + { + delete fbo1; + delete fbo2; + delete fbo3; + QSKIP("FBOs missing combined depth~stencil support", SkipSingle); + } + QPainter fbo1Painter; QPainter fbo2Painter; QPainter fbo3Painter; @@ -1203,7 +1218,7 @@ protected: QPainter widgetPainter; widgetPainterBeginOk = widgetPainter.begin(this); QGLFramebufferObjectFormat fboFormat; - fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil); + fboFormat.setAttachment(QGLFramebufferObject::NoAttachment); QGLFramebufferObject *fbo = new QGLFramebufferObject(128, 128, fboFormat); QPainter fboPainter; -- cgit v0.12 From c815fd0a6426e43aa9efd861888888aa4d5b233b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Fri, 26 Feb 2010 10:44:51 +0100 Subject: Fixed qgl autotest failures on Maemo. Changed glFBOSimpleRendering and glFBOUseInGLWidget auto tests to use NPOT sizes. NPOT FBOs are not twiddled, and thus not exposed to the twiddled glReadPixels() bug in the current drivers. Skipped glWidgetRenderPixmap as renderPixmap() is not supported under EGL currently. Reviewed-by: Tom Cooksey --- tests/auto/qgl/qgl.pro | 2 ++ tests/auto/qgl/tst_qgl.cpp | 11 +++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/tests/auto/qgl/qgl.pro b/tests/auto/qgl/qgl.pro index 9116f39..5f058f9 100644 --- a/tests/auto/qgl/qgl.pro +++ b/tests/auto/qgl/qgl.pro @@ -6,6 +6,8 @@ load(qttest_p4) requires(contains(QT_CONFIG,opengl)) QT += opengl +contains(QT_CONFIG,egl):DEFINES += QGL_EGL + SOURCES += tst_qgl.cpp RESOURCES = qgl.qrc diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp index a0656d0..101e361 100644 --- a/tests/auto/qgl/tst_qgl.cpp +++ b/tests/auto/qgl/tst_qgl.cpp @@ -998,8 +998,7 @@ void tst_QGL::glFBOSimpleRendering() QGLFramebufferObjectFormat fboFormat; fboFormat.setAttachment(QGLFramebufferObject::NoAttachment); - // Don't complicate things by using NPOT: - QGLFramebufferObject *fbo = new QGLFramebufferObject(256, 128, fboFormat); + QGLFramebufferObject *fbo = new QGLFramebufferObject(200, 100, fboFormat); fbo->bind(); @@ -1219,7 +1218,7 @@ protected: widgetPainterBeginOk = widgetPainter.begin(this); QGLFramebufferObjectFormat fboFormat; fboFormat.setAttachment(QGLFramebufferObject::NoAttachment); - QGLFramebufferObject *fbo = new QGLFramebufferObject(128, 128, fboFormat); + QGLFramebufferObject *fbo = new QGLFramebufferObject(100, 100, fboFormat); QPainter fboPainter; fboPainterBeginOk = fboPainter.begin(fbo); @@ -1243,7 +1242,7 @@ void tst_QGL::glFBOUseInGLWidget() #ifdef Q_WS_QWS w.setWindowFlags(Qt::FramelessWindowHint); #endif - w.resize(128, 128); + w.resize(100, 100); w.show(); #ifdef Q_WS_X11 @@ -1355,6 +1354,10 @@ void tst_QGL::glWidgetRenderPixmap() QImage reference(fb.size(), QImage::Format_RGB32); reference.fill(0xffff0000); +#ifdef QGL_EGL + QSKIP("renderPixmap() not yet supported under EGL", SkipAll); +#endif + QFUZZY_COMPARE_IMAGES(fb, reference); } -- cgit v0.12 From 9229489304894e35e137606ea263f007e5605d22 Mon Sep 17 00:00:00 2001 From: Prasanth Ullattil Date: Fri, 26 Feb 2010 14:37:59 +0100 Subject: Fixed autotest tst_QWidget::translucentWidget() on Windows Vista & above Grabbing layered windows doesn't work on Vista and above, so instead we need to grab the corresponding area of the desktop widget. Reviewed-by: Samuel --- src/gui/image/qpixmap.cpp | 6 +++++- tests/auto/qwidget/tst_qwidget.cpp | 10 +++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp index 1df7946..08003e5 100644 --- a/src/gui/image/qpixmap.cpp +++ b/src/gui/image/qpixmap.cpp @@ -2026,12 +2026,16 @@ QPixmap QPixmap::fromImage(const QImage &image, Qt::ImageConversionFlags flags) over the one you grab, you get pixels from the overlying window, too. The mouse cursor is generally not grabbed. - Note on X11that if the given \a window doesn't have the same depth + Note on X11 that if the given \a window doesn't have the same depth as the root window, and another window partially or entirely obscures the one you grab, you will \e not get pixels from the overlying window. The contents of the obscured areas in the pixmap will be undefined and uninitialized. + On Windows Vista and above grabbing a layered window, which is + created by setting the Qt::WA_TranslucentBackground attribute, will + not work. Instead grabbing the desktop widget should work. + \warning In general, grabbing an area outside the screen is not safe. This depends on the underlying window system. diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index b59017b..abd9604 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -8829,7 +8829,15 @@ void tst_QWidget::translucentWidget() #endif QTest::qWait(200); - QPixmap widgetSnapshot = QPixmap::grabWindow(label.winId()); + QPixmap widgetSnapshot; + +#ifdef Q_WS_WIN + QWidget *desktopWidget = QApplication::desktop()->screen(0); + if (QSysInfo::windowsVersion() >= QSysInfo::WV_VISTA) + widgetSnapshot = QPixmap::grabWindow(desktopWidget->winId(), 0,0, label.width(), label.height()); + else +#endif + widgetSnapshot = QPixmap::grabWindow(label.winId()); QImage actual = widgetSnapshot.toImage().convertToFormat(QImage::Format_RGB32); QImage expected = pm.toImage().convertToFormat(QImage::Format_RGB32); QCOMPARE(actual.size(),expected.size()); -- cgit v0.12 From 8733baf8b770a5fca12aecf4c38a8c8f94c4b0fa Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Fri, 26 Feb 2010 14:45:55 +0100 Subject: fix "configure -fast" on Windows for other maketools than nmake Task-number: QTBUG-8562 Reviewed-by: ossi --- configure.exe | Bin 1008128 -> 1212416 bytes tools/configure/configureapp.cpp | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.exe b/configure.exe index 9974236..3e51833 100755 Binary files a/configure.exe and b/configure.exe differ diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index d521276..153df10 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -3700,7 +3700,7 @@ void Configure::generateMakefiles() QTextStream txt(&file); txt << "all:\n"; txt << "\t" << args.join(" ") << "\n"; - txt << "\t" << dictionary[ "MAKE" ] << " -f " << it->target << "\n"; + txt << "\t\"$(MAKE)\" -$(MAKEFLAGS) -f " << it->target << "\n"; txt << "first: all\n"; txt << "qmake:\n"; txt << "\t" << args.join(" ") << "\n"; -- cgit v0.12 From 573fee867d129654ca2eb629d8f0ffb7f515a324 Mon Sep 17 00:00:00 2001 From: Prasanth Ullattil Date: Fri, 26 Feb 2010 13:28:45 +0100 Subject: Crash when dragging an empty URL-list. While converting the mime to native CF_ formats, we need to check the vaildity of the list. Task-number: QTBUG-8446 Reviewed-by: Thierry --- src/gui/kernel/qmime_win.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qmime_win.cpp b/src/gui/kernel/qmime_win.cpp index e191d7b..39633bf 100644 --- a/src/gui/kernel/qmime_win.cpp +++ b/src/gui/kernel/qmime_win.cpp @@ -640,14 +640,18 @@ bool QWindowsMimeURI::convertFromMime(const FORMATETC &formatetc, const QMimeDat } else if (getCf(formatetc) == CF_INETURL_W) { QList urls = mimeData->urls(); QByteArray result; - QString url = urls.at(0).toString(); - result = QByteArray((const char *)url.utf16(), url.length() * sizeof(ushort)); + if (!urls.isEmpty()) { + QString url = urls.at(0).toString(); + result = QByteArray((const char *)url.utf16(), url.length() * sizeof(ushort)); + } result.append('\0'); result.append('\0'); return setData(result, pmedium); } else if (getCf(formatetc) == CF_INETURL) { QList urls = mimeData->urls(); - QByteArray result = urls.at(0).toString().toLocal8Bit(); + QByteArray result; + if (!urls.isEmpty()) + result = urls.at(0).toString().toLocal8Bit(); return setData(result, pmedium); } } -- cgit v0.12 From 13df3749820f3fd1847e4359b302da052eef5137 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Fri, 26 Feb 2010 15:08:28 +0100 Subject: QAbstractItemView::setIndexWidget: remove the old widget from the QSet of persistent editors Task-number: QTBUG-8422 Reviewed-by: Thierry --- src/gui/itemviews/qabstractitemview.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp index adf3ce3..2c4d9b7 100644 --- a/src/gui/itemviews/qabstractitemview.cpp +++ b/src/gui/itemviews/qabstractitemview.cpp @@ -3014,6 +3014,7 @@ void QAbstractItemView::setIndexWidget(const QModelIndex &index, QWidget *widget if (!d->isIndexValid(index)) return; if (QWidget *oldWidget = indexWidget(index)) { + d->persistent.remove(oldWidget); d->removeEditor(oldWidget); oldWidget->deleteLater(); } -- cgit v0.12 From 4302c8fa7a234f6f4cfc35f572b93a000d199fe3 Mon Sep 17 00:00:00 2001 From: mread Date: Fri, 26 Feb 2010 14:34:16 +0000 Subject: Symbian file system use optimisation for stat and symlinks Symbian implementation of fileFlags calls both doStat and isSymlink resulting in calls to both stat and lstat. However most of the time, ie when accessing a normal file rather than a symlink, lstat gives all the information we require. So this change uses lstat where possible, and caches its result for both doStat and isSymlink. During start of DesktopServices app, this cuts calls to stat/lstat by 45%. Reviewed-by: Shane Kearns --- src/corelib/io/qfsfileengine_unix.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp index d2fa744..1331f54 100644 --- a/src/corelib/io/qfsfileengine_unix.cpp +++ b/src/corelib/io/qfsfileengine_unix.cpp @@ -668,6 +668,16 @@ bool QFSFileEnginePrivate::doStat() const could_stat = (QT_FSTAT(QT_FILENO(fh), &st) == 0); } else if (fd == -1) { // ### actually covers two cases: d->fh and when the file is not open +#if defined(Q_OS_SYMBIAN) + // Optimisation for Symbian where fileFlags() calls both doStat() and isSymlink(), but rarely on real links. + // When the filename is not a link, lstat will return the same info as stat, but this also removes + // any need for a further call to lstat to check if the file is a link. + need_lstat = false; + could_stat = (QT_LSTAT(nativeFilePath.constData(), &st) == 0); + is_link = could_stat ? S_ISLNK(st.st_mode) : false; + // if it turns out this was a link, we can call stat too. + if (is_link) +#endif could_stat = (QT_STAT(nativeFilePath.constData(), &st) == 0); } else { could_stat = (QT_FSTAT(fd, &st) == 0); -- cgit v0.12 From 30abadd0d0a190889dab6d1c154053a25e060042 Mon Sep 17 00:00:00 2001 From: ninerider Date: Sat, 27 Feb 2010 12:09:28 +0100 Subject: Test modifications for the Windows Mobile platform. Test were changed to run in reasonable time on Windows Mobile. Also some test were skipped for instance those using OpenGL. OpenGL support for Windows Mobile is a forthcoming feature. --- .../corelib/io/qdir/10000/bench_qdir_10000.cpp | 2 +- tests/benchmarks/corelib/io/qfile/main.cpp | 17 +++++++++++++---- .../corelib/tools/containers-sequential/main.cpp | 2 +- tests/benchmarks/corelib/tools/qstringlist/main.cpp | 4 ++++ .../graphicsview/qgraphicsview/tst_qgraphicsview.cpp | 3 +++ .../network/access/qnetworkreply/tst_qnetworkreply.cpp | 4 ++-- .../network/socket/qtcpserver/tst_qtcpserver.cpp | 3 +++ tools/qtestlib/wince/cetest/cetest.pro | 7 ++++++- 8 files changed, 33 insertions(+), 9 deletions(-) diff --git a/tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp b/tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp index 1238804..4fe4723 100644 --- a/tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp +++ b/tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp @@ -165,7 +165,7 @@ private slots: WIN32_FIND_DATA fd; HANDLE hSearch = FindFirstFileW(appendedPath, &fd); - QVERIFY(hSearch == INVALID_HANDLE_VALUE); + QVERIFY(hSearch != INVALID_HANDLE_VALUE); QBENCHMARK { do { diff --git a/tests/benchmarks/corelib/io/qfile/main.cpp b/tests/benchmarks/corelib/io/qfile/main.cpp index 103b77c..2dc0e86 100644 --- a/tests/benchmarks/corelib/io/qfile/main.cpp +++ b/tests/benchmarks/corelib/io/qfile/main.cpp @@ -175,7 +175,10 @@ void tst_qfile::cleanupTestCase() void tst_qfile::readBigFile_QFile() { readBigFile(); } void tst_qfile::readBigFile_QFSFileEngine() { readBigFile(); } -void tst_qfile::readBigFile_posix() { readBigFile(); } +void tst_qfile::readBigFile_posix() +{ + readBigFile(); +} void tst_qfile::readBigFile_Win32() { readBigFile(); } void tst_qfile::readBigFile_QFile_data() @@ -476,8 +479,14 @@ void tst_qfile::open() void tst_qfile::readSmallFiles_QFile() { readSmallFiles(); } void tst_qfile::readSmallFiles_QFSFileEngine() { readSmallFiles(); } -void tst_qfile::readSmallFiles_posix() { readSmallFiles(); } -void tst_qfile::readSmallFiles_Win32() { readSmallFiles(); } +void tst_qfile::readSmallFiles_posix() +{ + readSmallFiles(); +} +void tst_qfile::readSmallFiles_Win32() +{ + readSmallFiles(); +} void tst_qfile::readSmallFiles_QFile_data() { @@ -534,7 +543,7 @@ void tst_qfile::createSmallFiles() dir.cd("tst"); tmpDirName = dir.absolutePath(); -#ifdef Q_OS_SYMBIAN +#if defined(Q_OS_SYMBIAN) || defined(Q_WS_WINCE) for (int i = 0; i < 100; ++i) #else for (int i = 0; i < 1000; ++i) diff --git a/tests/benchmarks/corelib/tools/containers-sequential/main.cpp b/tests/benchmarks/corelib/tools/containers-sequential/main.cpp index a6e405c..edf0eff 100644 --- a/tests/benchmarks/corelib/tools/containers-sequential/main.cpp +++ b/tests/benchmarks/corelib/tools/containers-sequential/main.cpp @@ -133,7 +133,7 @@ struct Large { // A "large" item type }; // Symbian devices typically have limited memory -#ifdef Q_OS_SYMBIAN +#if defined(Q_OS_SYMBIAN) || defined(Q_WS_WINCE) # define LARGE_MAX_SIZE 2000 #else # define LARGE_MAX_SIZE 20000 diff --git a/tests/benchmarks/corelib/tools/qstringlist/main.cpp b/tests/benchmarks/corelib/tools/qstringlist/main.cpp index 3fac598..81ecd11 100644 --- a/tests/benchmarks/corelib/tools/qstringlist/main.cpp +++ b/tests/benchmarks/corelib/tools/qstringlist/main.cpp @@ -147,6 +147,7 @@ void tst_QStringList::split_data() const void tst_QStringList::split_std() const { +#ifndef QT_NO_STL QFETCH(QString, input); const char split_char = ':'; std::string stdinput = input.toStdString(); @@ -159,10 +160,12 @@ void tst_QStringList::split_std() const token.push_back(each)) ; } +#endif } void tst_QStringList::split_stdw() const { +#ifndef QT_NO_STL QFETCH(QString, input); const wchar_t split_char = ':'; std::wstring stdinput = input.toStdWString(); @@ -175,6 +178,7 @@ void tst_QStringList::split_stdw() const token.push_back(each)) ; } +#endif } void tst_QStringList::split_ba() const diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp index 3c0ae71..ba56d58 100644 --- a/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp @@ -414,6 +414,9 @@ void tst_QGraphicsView::chipTester_data() void tst_QGraphicsView::chipTester() { +#ifdef Q_WS_WINCE_WM +QSKIP("WinCE WM: Fails on Windows Mobile w/o OpenGL", SkipAll); +#endif QFETCH(bool, antialias); QFETCH(bool, opengl); QFETCH(int, operation); diff --git a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp index f173ed1..90ae153 100644 --- a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -555,7 +555,7 @@ void tst_qnetworkreply::uploadPerformance() void tst_qnetworkreply::httpUploadPerformance() { -#ifdef Q_OS_SYMBIAN +#if defined(Q_OS_SYMBIAN) || defined(Q_WS_WINCE_WM) // SHow some mercy for non-desktop platform/s enum {UploadSize = 4*1024*1024}; // 4 MB #else @@ -626,7 +626,7 @@ void tst_qnetworkreply::httpDownloadPerformance() { QFETCH(bool, serverSendsContentLength); QFETCH(bool, chunkedEncoding); -#ifdef Q_OS_SYMBIAN +#if defined(Q_OS_SYMBIAN) || defined(Q_WS_WINCE_WM) // Show some mercy to non-desktop platform/s enum {UploadSize = 4*1024*1024}; // 4 MB #else diff --git a/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp index 022bf3d..c77c619 100644 --- a/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp +++ b/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp @@ -175,6 +175,9 @@ void tst_QTcpServer::ipv6LoopbackPerformanceTest() QFETCH_GLOBAL(bool, setProxy); if (setProxy) return; +#if defined(Q_WS_WINCE_WM) + QSKIP("WinCE WM: Not yet supported", SkipAll); +#endif #if defined(Q_OS_SYMBIAN) QSKIP("Symbian: IPv6 is not yet supported", SkipAll); diff --git a/tools/qtestlib/wince/cetest/cetest.pro b/tools/qtestlib/wince/cetest/cetest.pro index 6b6b02a..2773fe4 100644 --- a/tools/qtestlib/wince/cetest/cetest.pro +++ b/tools/qtestlib/wince/cetest/cetest.pro @@ -18,10 +18,13 @@ DEFINES += QT_BUILD_QMAKE QT_BOOTSTRAPPED QT_NO_CODECS QT_LITE_UNICODE QT INCLUDEPATH = \ $$QT_SOURCE_TREE/tools/qtestlib/ce/cetest \ $$QT_SOURCE_TREE/qmake \ - $$QT_SOURCE_TREE/tools/shared \ + $$QT_SOURCE_TREE/qmake/generators/symbian \ + $$QT_SOURCE_TREE/tools/shared \ $$QT_BUILD_TREE/include \ $$QT_BUILD_TREE/include/QtCore \ $$QT_BUILD_TREE/src/corelib/global + +VPATH += $$QT_SOURCE_TREE/tools/shared DEPENDPATH += $$QT_BUILD_TREE/src/corelib/tools $$QT_BUILD_TREE/src/corelib/io @@ -33,6 +36,8 @@ HEADERS += \ SOURCES += \ remoteconnection.cpp \ deployment.cpp \ + symbian/epocroot.cpp \ + windows/registry.cpp \ main.cpp LIBS += ole32.lib advapi32.lib -- cgit v0.12 From 6a7b7947e36a2d9440c4eba40dc6d4177fbc0c29 Mon Sep 17 00:00:00 2001 From: ninerider Date: Sat, 27 Feb 2010 12:13:01 +0100 Subject: Preparation to enable OpenGLES 2.0 for Windows Mobile. As there are no SDKs available for our test device (HTC HD2) that support OpenGL, we had to construct the libraries by extracting them from the ROM image. This is still work in progress at this time. --- src/gui/egl/qegl_wince.cpp | 6 ++++-- src/gui/egl/qeglproperties_p.h | 9 +++++++-- src/opengl/qgl_p.h | 12 +++++++++--- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/gui/egl/qegl_wince.cpp b/src/gui/egl/qegl_wince.cpp index c9c9773..dfef39f 100644 --- a/src/gui/egl/qegl_wince.cpp +++ b/src/gui/egl/qegl_wince.cpp @@ -89,8 +89,10 @@ EGLSurface QEglContext::createSurface(QPaintDevice *device, const QEglProperties EGLNativeDisplayType QEglContext::nativeDisplay() { - HWND win = (static_cast(device))->winId(); - HDC myDc = GetDC(win); + //HWND win = (static_cast(device))->winId(); + //HDC myDc = GetDC(win); + HDC myDc = GetWindowDC(0); + if (!myDc) { qWarning("QEglContext::nativeDisplay(): WinCE display is not open"); return EGL_DEFAULT_DISPLAY; diff --git a/src/gui/egl/qeglproperties_p.h b/src/gui/egl/qeglproperties_p.h index feed1d2..43c3393 100644 --- a/src/gui/egl/qeglproperties_p.h +++ b/src/gui/egl/qeglproperties_p.h @@ -58,12 +58,17 @@ QT_BEGIN_INCLUDE_NAMESPACE +#if defined(QT_OPENGL_ES_2) +# include +#endif + #if defined(QT_GLES_EGL) -#include +# include #else -#include +# include #endif + #if defined(Q_WS_X11) // If included , then the global namespace // may have been polluted with X #define's. The following makes sure diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index 0d5a54a..80217c0 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -80,13 +80,19 @@ #define q_vertexTypeEnum GL_FIXED #endif //QT_OPENGL_ES_1_CL -#ifdef QT_OPENGL_ES +#if defined(QT_OPENGL_ES) || defined(QT_OPENGL_ES_2) QT_BEGIN_INCLUDE_NAMESPACE + #if defined(QT_OPENGL_ES_2) -#include +# include +#endif + +#if defined(QT_GLES_EGL) +# include #else -#include +# include #endif + QT_END_INCLUDE_NAMESPACE #endif -- cgit v0.12 From 0d8a94c74a8799b278d32d9cf0c32dee7cd35d11 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Mon, 1 Mar 2010 16:45:59 +1000 Subject: Export QDeclarativeWorkerScript and QDeclarativeWorkerListModel and call other usual macros. --- src/declarative/qml/qdeclarativeworkerscript_p.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/declarative/qml/qdeclarativeworkerscript_p.h b/src/declarative/qml/qdeclarativeworkerscript_p.h index 8ebd2c1..a810801 100644 --- a/src/declarative/qml/qdeclarativeworkerscript_p.h +++ b/src/declarative/qml/qdeclarativeworkerscript_p.h @@ -61,8 +61,12 @@ #include #include +QT_BEGIN_HEADER + QT_BEGIN_NAMESPACE +QT_MODULE(Declarative) + class QDeclarativeWorkerScript; class QDeclarativeWorkerScriptEnginePrivate; class QDeclarativeWorkerScriptEngine : public QThread @@ -84,7 +88,7 @@ private: QDeclarativeWorkerScriptEnginePrivate *d; }; -class QDeclarativeWorkerScript : public QObject, public QDeclarativeParserStatus +class Q_DECLARATIVE_EXPORT QDeclarativeWorkerScript : public QObject, public QDeclarativeParserStatus { Q_OBJECT Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) @@ -115,7 +119,7 @@ private: }; class QDeclarativeWorkerListModelAgent; -class QDeclarativeWorkerListModel : public QListModelInterface +class Q_DECLARATIVE_EXPORT QDeclarativeWorkerListModel : public QListModelInterface { Q_OBJECT Q_PROPERTY(int count READ count NOTIFY countChanged) @@ -157,4 +161,6 @@ QT_END_NAMESPACE QML_DECLARE_TYPE(QDeclarativeWorkerScript); QML_DECLARE_TYPE(QDeclarativeWorkerListModel); +QT_END_HEADER + #endif // QDECLARATIVEWORKERSCRIPT_P_H -- cgit v0.12 From 1d8b860694c121527b1f964e1090aa2d1987075e Mon Sep 17 00:00:00 2001 From: Janne Anttila Date: Mon, 1 Mar 2010 09:41:55 +0200 Subject: Added fullscreen support to softkeys in Symbian. This commit enables the following two features: 1. Developer can make softkeys visible in fullscreen widget by setting the Qt::WindowSoftkeysVisibleHint window flag. This flag implememts intermediate mode for maximized and fullscreen modes. In maximized mode both statuspane and softkeys are visible, in fullscreen mode with WindowSoftkeysVisibleHint flag, only the softkeys are visible and in normal fullscreen mode both statuspane and softkeys are invisible. This feature was requested by QTBUG-5171. 2. Developer can make softkeys to respond to the key events even the softkeys are invisible. This means that when widget with Qt::WindowSoftkeysRespondHint window flag is shown in fullsreen, the softkey HW key events are routed to invisible softkeys and softkeys trigger the action associated to pressed softkey button. If the flag is not set, the key event will be passed to application/focused widget normally and softkey actions are not triggered. This feature was requested in QTBUG-4564. Both new flags are by default off. In addition, the softkey example is updated to demonstrate the new window flags. The commit also contains some code style fixes applied by my editor automatically to changed files. Task-number: QTBUG-5171 Task-number: QTBUG-4564 Reviewed-by: Jason Barron --- examples/widgets/softkeys/softkeys.cpp | 38 +++++++++++++++++++++++ examples/widgets/softkeys/softkeys.h | 19 +++++++----- examples/widgets/windowflags/controllerwindow.cpp | 4 +-- src/corelib/global/qnamespace.h | 4 ++- src/corelib/global/qnamespace.qdoc | 8 +++++ src/gui/kernel/qapplication_s60.cpp | 29 ++++++++++++----- src/gui/kernel/qsoftkeymanager_s60.cpp | 12 ++++++- src/gui/kernel/qwidget_s60.cpp | 35 +++++++++++++++------ 8 files changed, 120 insertions(+), 29 deletions(-) diff --git a/examples/widgets/softkeys/softkeys.cpp b/examples/widgets/softkeys/softkeys.cpp index cbd227c9..e5c2e73 100644 --- a/examples/widgets/softkeys/softkeys.cpp +++ b/examples/widgets/softkeys/softkeys.cpp @@ -70,6 +70,12 @@ MainWindow::MainWindow(QWidget *parent) toggleButton->setContextMenuPolicy(Qt::NoContextMenu); toggleButton->setCheckable(true); + modeButton = new QPushButton(tr("Loop SK window type"), this); + modeButton->setContextMenuPolicy(Qt::NoContextMenu); + + modeLabel = new QLabel(tr("Normal maximized"), this); + modeLabel->setContextMenuPolicy(Qt::NoContextMenu); + pushButton = new QPushButton(tr("File Dialog"), this); pushButton->setContextMenuPolicy(Qt::NoContextMenu); @@ -87,6 +93,8 @@ MainWindow::MainWindow(QWidget *parent) layout->addWidget(toggleButton, 2, 0); layout->addWidget(pushButton, 2, 1); layout->addWidget(comboBox, 3, 0, 1, 2); + layout->addWidget(modeButton, 4, 0, 1, 2); + layout->addWidget(modeLabel, 5, 0, 1, 2); central->setLayout(layout); fileMenu = menuBar()->addMenu(tr("&File")); @@ -97,6 +105,7 @@ MainWindow::MainWindow(QWidget *parent) connect(pushButton, SIGNAL(clicked()), this, SLOT(openDialog())); connect(exit, SIGNAL(triggered()), this, SLOT(exitApplication())); connect(toggleButton, SIGNAL(clicked()), this, SLOT(setCustomSoftKeys())); + connect(modeButton, SIGNAL(clicked()), this, SLOT(setMode())); pushButton->setFocus(); } @@ -133,6 +142,35 @@ void MainWindow::setCustomSoftKeys() } } +void MainWindow::setMode() +{ + if(isMaximized()) { + showFullScreen(); + modeLabel->setText(tr("Normal Fullscreen")); + } else { + Qt::WindowFlags flags = windowFlags(); + if(flags & Qt::WindowSoftkeysRespondHint) { + flags |= Qt::WindowSoftkeysVisibleHint; + flags &= ~Qt::WindowSoftkeysRespondHint; + setWindowFlags(flags); // Hides visible window + showFullScreen(); + modeLabel->setText(tr("Fullscreen with softkeys")); + } else if(flags & Qt::WindowSoftkeysVisibleHint) { + flags &= ~Qt::WindowSoftkeysVisibleHint; + flags &= ~Qt::WindowSoftkeysRespondHint; + setWindowFlags(flags); // Hides visible window + showMaximized(); + modeLabel->setText(tr("Normal Maximized")); + } else { + flags &= ~Qt::WindowSoftkeysVisibleHint; + flags |= Qt::WindowSoftkeysRespondHint; + setWindowFlags(flags); // Hides visible window + showFullScreen(); + modeLabel->setText(tr("Fullscreen with SK respond")); + } + } +} + void MainWindow::exitApplication() { qApp->exit(); diff --git a/examples/widgets/softkeys/softkeys.h b/examples/widgets/softkeys/softkeys.h index bae31e7..d533484 100644 --- a/examples/widgets/softkeys/softkeys.h +++ b/examples/widgets/softkeys/softkeys.h @@ -57,21 +57,24 @@ private slots: void okPressed(); void cancelPressed(); void setCustomSoftKeys(); + void setMode(); public: MainWindow(QWidget *parent = 0); ~MainWindow(); private: QGridLayout *layout; QWidget *central; - QTextEdit* textEditor; + QTextEdit *textEditor; QLabel *infoLabel; - QPushButton* toggleButton; - QPushButton* pushButton; - QMenu* fileMenu; - QAction* addSoftKeysAct; - QAction* exit; - QAction* ok; - QAction* cancel; + QPushButton *toggleButton; + QPushButton *pushButton; + QPushButton *modeButton; + QLabel *modeLabel; + QMenu *fileMenu; + QAction *addSoftKeysAct; + QAction *exit; + QAction *ok; + QAction *cancel; }; //! [0] diff --git a/examples/widgets/windowflags/controllerwindow.cpp b/examples/widgets/windowflags/controllerwindow.cpp index 0277794..a1e5455 100644 --- a/examples/widgets/windowflags/controllerwindow.cpp +++ b/examples/widgets/windowflags/controllerwindow.cpp @@ -58,7 +58,7 @@ ControllerWindow::ControllerWindow() bottomLayout->addStretch(); bottomLayout->addWidget(quitButton); - QVBoxLayout *mainLayout = new QVBoxLayout; + QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addWidget(typeGroupBox); mainLayout->addWidget(hintsGroupBox); mainLayout->addLayout(bottomLayout); @@ -149,7 +149,7 @@ void ControllerWindow::createTypeGroupBox() splashScreenRadioButton = createRadioButton(tr("Splash screen")); windowRadioButton->setChecked(true); - QGridLayout *layout = new QGridLayout; + QVBoxLayout *layout = new QGridLayout; layout->addWidget(windowRadioButton, 0, 0); layout->addWidget(dialogRadioButton, 1, 0); layout->addWidget(sheetRadioButton, 2, 0); diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index 177bee4..bc8d452 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -299,7 +299,9 @@ public: MacWindowToolBarButtonHint = 0x10000000, BypassGraphicsProxyWidget = 0x20000000, WindowOkButtonHint = 0x00080000, - WindowCancelButtonHint = 0x00100000 + WindowCancelButtonHint = 0x00100000, + WindowSoftkeysVisibleHint = 0x40000000, + WindowSoftkeysRespondHint = 0x80000000 #ifdef QT3_SUPPORT , diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index 392ece3..6968773 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -2146,6 +2146,14 @@ \value WindowCancelButtonHint Adds a Cancel button to the window decoration of a dialog. Only supported for Windows CE. + \value WindowSoftkeysVisibleHint Makes softkeys visible when widget is fullscreen. + Only supported for Symbian. + + \value WindowSoftkeysRespondHint Makes softkeys to receive key events even + when invisible. With this hint the softkey actions are triggered + even the softkeys are invisible i.e. the window is displayed with + \c showFullscreen(). Only supported for Symbian. + \value WindowType_Mask A mask for extracting the window type part of the window flags. diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index 2eecd56..cf8ce62 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -597,9 +597,9 @@ TKeyResponse QSymbianControl::OfferKeyEvent(const TKeyEvent& keyEvent, TEventCod TUint s60Keysym = QApplicationPrivate::resolveS60ScanCode(keyEvent.iScanCode, keyEvent.iCode); int keyCode; - if (s60Keysym == EKeyNull){ //some key events have 0 in iCode, for them iScanCode should be used - keyCode = qt_keymapper_private()->mapS60ScanCodesToQt(keyEvent.iScanCode); - } else if (s60Keysym >= 0x20 && s60Keysym < ENonCharacterKeyBase) { + if (s60Keysym == EKeyNull){ //some key events have 0 in iCode, for them iScanCode should be used + keyCode = qt_keymapper_private()->mapS60ScanCodesToQt(keyEvent.iScanCode); + } else if (s60Keysym >= 0x20 && s60Keysym < ENonCharacterKeyBase) { // Normal characters keys. keyCode = s60Keysym; } else { @@ -966,13 +966,26 @@ void QSymbianControl::FocusChanged(TDrawNow /* aDrawNow */) qwidget->d_func()->setWindowTitle_sys(qwidget->windowTitle()); #ifdef Q_WS_S60 // If widget is fullscreen/minimized, hide status pane and button container otherwise show them. - CEikStatusPane* statusPane = S60->statusPane(); - CEikButtonGroupContainer* buttonGroup = S60->buttonGroupContainer(); + CEikStatusPane *statusPane = S60->statusPane(); + CEikButtonGroupContainer *buttonGroup = S60->buttonGroupContainer(); TBool visible = !(qwidget->windowState() & (Qt::WindowFullScreen | Qt::WindowMinimized)); if (statusPane) statusPane->MakeVisible(visible); - if (buttonGroup) - buttonGroup->MakeVisible(visible); + if (buttonGroup) { + // Visibility + const TBool isFullscreen = qwidget->windowState() & Qt::WindowFullScreen; + const TBool cbaVisibilityHint = qwidget->windowFlags() & Qt::WindowSoftkeysVisibleHint; + buttonGroup->MakeVisible(visible || (isFullscreen && cbaVisibilityHint)); + + // Responsiviness + CEikCba *cba = static_cast( buttonGroup->ButtonGroup() ); // downcast from MEikButtonGroup + TUint cbaFlags = cba->ButtonGroupFlags(); + if(qwidget->windowFlags() & Qt::WindowSoftkeysRespondHint) + cbaFlags |= EAknCBAFlagRespondWhenInvisible; + else + cbaFlags &= ~EAknCBAFlagRespondWhenInvisible; + cba->SetButtonGroupFlags(cbaFlags); + } #endif } else if (QApplication::activeWindow() == qwidget->window()) { if (CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog()) { @@ -1229,7 +1242,7 @@ void qt_init(QApplicationPrivate * /* priv */, int) S60->avkonComponentsSupportTransparency = (value==1) ? true : false; } } -#endif +#endif if (touch) { QApplicationPrivate::navigationMode = Qt::NavigationModeNone; diff --git a/src/gui/kernel/qsoftkeymanager_s60.cpp b/src/gui/kernel/qsoftkeymanager_s60.cpp index 8ac1e31..2a1ecc5 100644 --- a/src/gui/kernel/qsoftkeymanager_s60.cpp +++ b/src/gui/kernel/qsoftkeymanager_s60.cpp @@ -73,11 +73,21 @@ bool QSoftKeyManagerPrivateS60::skipCbaUpdate() // Lets not update softkeys if // 1. We don't have application panes, i.e. cba // 2. Our CBA is not active, i.e. S60 native dialog or menu with custom CBA is shown + // 2.1. Except if thre is no current CBA at all and WindowSoftkeysRespondHint is set + // Note: Cannot use IsDisplayingMenuOrDialog since CBA update can be triggered before // menu/dialog CBA is actually displayed i.e. it is being costructed. CEikButtonGroupContainer *appUiCba = S60->buttonGroupContainer(); + // CEikButtonGroupContainer::Current returns 0 if CBA is not visible at all CEikButtonGroupContainer *currentCba = CEikButtonGroupContainer::Current(); - if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes) || appUiCba != currentCba) { + // Check if softkey need to be update even they are not visible + bool cbaRespondsWhenInvisible = false; + QWidget *window = QApplication::activeWindow(); + if (window && (window->windowFlags() & Qt::WindowSoftkeysRespondHint)) + cbaRespondsWhenInvisible = true; + + if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes) + || (appUiCba != currentCba && !cbaRespondsWhenInvisible)) { return true; } return false; diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index ebd289c..7bbc142 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -1042,7 +1042,13 @@ void QWidget::setWindowState(Qt::WindowStates newstate) Q_D(QWidget); Qt::WindowStates oldstate = windowState(); - if (oldstate == newstate) + + const TBool isFullscreen = newstate & Qt::WindowFullScreen; + const TBool cbaRequested = windowFlags() & Qt::WindowSoftkeysVisibleHint; + const TBool cbaVisible = CEikButtonGroupContainer::Current() ? true : false; + const TBool softkeyVisibilityChange = isFullscreen && (cbaRequested != cbaVisible); + + if (oldstate == newstate && !softkeyVisibilityChange) return; if (isWindow()) { @@ -1058,16 +1064,27 @@ void QWidget::setWindowState(Qt::WindowStates newstate) #ifdef Q_WS_S60 // Hide window decoration when switching to fullsccreen / minimized otherwise show decoration. - // The window decoration visibility has to be changed before doing actual window state - // change since in that order the availableGeometry will return directly the right size and + // The window decoration visibility has to be changed before doing actual window state + // change since in that order the availableGeometry will return directly the right size and // we will avoid unnecessarty redraws - CEikStatusPane* statusPane = S60->statusPane(); - CEikButtonGroupContainer* buttonGroup = S60->buttonGroupContainer(); - TBool visible = !(newstate & (Qt::WindowFullScreen | Qt::WindowMinimized)); + CEikStatusPane *statusPane = S60->statusPane(); + CEikButtonGroupContainer *buttonGroup = S60->buttonGroupContainer(); + TBool visible = !(newstate & (Qt::WindowFullScreen | Qt::WindowMinimized)); if (statusPane) statusPane->MakeVisible(visible); - if (buttonGroup) - buttonGroup->MakeVisible(visible); + if (buttonGroup) { + // Visibility + buttonGroup->MakeVisible(visible || (isFullscreen && cbaRequested)); + + // Responsiviness + CEikCba *cba = static_cast( buttonGroup->ButtonGroup() ); // downcast from MEikButtonGroup + TUint cbaFlags = cba->ButtonGroupFlags(); + if(windowFlags() & Qt::WindowSoftkeysRespondHint) + cbaFlags |= EAknCBAFlagRespondWhenInvisible; + else + cbaFlags &= ~EAknCBAFlagRespondWhenInvisible; + cba->SetButtonGroupFlags(cbaFlags); + } #endif // Q_WS_S60 createWinId(); @@ -1080,7 +1097,7 @@ void QWidget::setWindowState(Qt::WindowStates newstate) const QRect normalGeometry = (top->normalGeometry.width() < 0) ? geometry() : top->normalGeometry; if (newstate & Qt::WindowFullScreen) - setGeometry(qApp->desktop()->screenGeometry(this)); + setGeometry(qApp->desktop()->availableGeometry(this)); else if (newstate & Qt::WindowMaximized) setGeometry(qApp->desktop()->availableGeometry(this)); else -- cgit v0.12 From 8113f2d94afd4e25caf12edf9716b7e0a82de1a8 Mon Sep 17 00:00:00 2001 From: Janne Anttila Date: Mon, 1 Mar 2010 10:21:25 +0200 Subject: Added orientation change support for show/showNormal widgets in S60. Earlier the widget normalGeometry was calculated once when widget was made visible first time. Because geometry was not recalculated the widget displayed with show/showNormal did not change its location or size as a result of orientation change. This lead to unefficient screen usage. This commit makes widget to recalculate its normalGeometry as a result of orientation change, if developer has not set the widget position or size explicitly. Task-number: QTBUG-8551 Reviewed-by: Jason Barron --- src/gui/kernel/qapplication_s60.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index cf8ce62..2a90ba6 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -1029,6 +1029,16 @@ void QSymbianControl::HandleResourceChange(int resourceType) } else if (qwidget->isMaximized()) { TRect r = static_cast(S60->appUi())->ClientRect(); SetExtent(r.iTl, r.Size()); + } else if (!qwidget->isMinimized()){ // Normal geometry + if (!qwidget->testAttribute(Qt::WA_Resized)) { + qwidget->adjustSize(); + qwidget->setAttribute(Qt::WA_Resized, false); //not a user resize + } + if (!qwidget->testAttribute(Qt::WA_Moved)) { + TRect r = static_cast(S60->appUi())->ClientRect(); + SetPosition(r.iTl); + qwidget->setAttribute(Qt::WA_Moved, false); // not really an explicit position + } } break; } -- cgit v0.12 From 3d50a8049b20e01b8a2cb9b954b14302dc6144c6 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 26 Feb 2010 17:13:54 +0200 Subject: Added .condition modifier to SUBDIRS. In Symbian, it is now possible to set certain subdirs to be built only when specified define is true when bld.inf is parsed. For example, compile a subdir only when building for emulator: SUBDIRS += winscw_lib winscw_lib.condition = WINSCW Also improved SUBDIRS variable documentation; the modifiers were completely undocumented. Task-number: QT-3017 Reviewed-by: axis --- doc/src/development/qmake-manual.qdoc | 28 +++++++++++++++++++++++++ doc/src/snippets/code/doc_src_qmake-manual.qdoc | 14 +++++++++++++ qmake/generators/symbian/symmake.cpp | 13 +++++++++++- 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc index b3d6f72..3157536 100644 --- a/doc/src/development/qmake-manual.qdoc +++ b/doc/src/development/qmake-manual.qdoc @@ -2968,6 +2968,34 @@ For example: \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 51 + It is possible to modify this default behavior of \c SUBDIRS by giving + additional modifiers to \c SUBDIRS elements. Supported modifiers are: + + \table + \header \o Modifier \o Effect + \row \o .subdir \o Use the specified subdirectory instead of \c SUBDIRS value. + \row \o .file \o Specify the subproject \c pro file explicitly. Cannot be + used in conjunction with \c .subdir modifier. + \row \o .condition \o Specifies a \c bld.inf define that must be true for + subproject to be built. Available only on Symbian platform. + \row \o .depends \o This subproject depends on specified subproject. + Available only on platforms that use makefiles. + \row \o .makefile \o The makefile of subproject. + Available only on platforms that use makefiles. + \row \o .target \o Base string used for makefile targets related to this + subproject. + Available only on platforms that use makefiles. + \endtable + + For example, define two subdirectories, both of which reside in a different directory + than the \c SUBDIRS value, and one of the subdirectories must be built before the other: + + \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 149 + + For example, define a subdirectory that is only build for emulator builds in Qt for Symbian: + + \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 150 + \target TARGET \section1 TARGET diff --git a/doc/src/snippets/code/doc_src_qmake-manual.qdoc b/doc/src/snippets/code/doc_src_qmake-manual.qdoc index 5a04420..e8c00d3 100644 --- a/doc/src/snippets/code/doc_src_qmake-manual.qdoc +++ b/doc/src/snippets/code/doc_src_qmake-manual.qdoc @@ -982,3 +982,17 @@ MYVARIABLES = LIB addMMPRules(MYCONDITIONS, MYVARIABLES) //! [148] + +//! [149] +SUBDIRS += my_executable my_library +my_executable.subdir = app +my_executable.depends = my_library +my_library.subdir = lib +//! [149] + +//! [150] +symbian { + SUBDIRS += emulator_dll + emulator_dll.condition = WINSCW +} +//! [150] diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp index b5a0696..9ade699 100644 --- a/qmake/generators/symbian/symmake.cpp +++ b/qmake/generators/symbian/symmake.cpp @@ -1317,6 +1317,10 @@ void SymbianMakefileGenerator::writeBldInfContent(QTextStream &t, bool addDeploy fixedItem = item; } + QString condition; + if (!project->isEmpty(item + ".condition")) + condition = project->first(item + ".condition"); + QFileInfo subdir(fileInfo(fixedItem)); QString relativePath = directory.relativeFilePath(fixedItem); QString subdirFileName = subdir.completeBaseName(); @@ -1345,9 +1349,16 @@ void SymbianMakefileGenerator::writeBldInfContent(QTextStream &t, bool addDeploy bldinfDefine = bldinfDefine.toUpper(); removeSpecialCharacters(bldinfDefine); + if (!condition.isEmpty()) + t << "#if defined(" << condition << ")" << endl; + t << "#ifndef " << bldinfDefine << endl; t << "\t#include \"" << bldinfFilename << "\"" << endl; - t << "#endif // " << bldinfDefine << endl; + t << "#endif" << endl; + + if (!condition.isEmpty()) + t << "#endif" << endl; + } // Add supported project platforms -- cgit v0.12 From 32cdbb6de84eab0c3619d36f3091e68e93caf3e9 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Mon, 1 Mar 2010 19:11:41 +1000 Subject: use ParentAnimation --- examples/declarative/package/Delegate.qml | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/examples/declarative/package/Delegate.qml b/examples/declarative/package/Delegate.qml index 4109633..62198d0 100644 --- a/examples/declarative/package/Delegate.qml +++ b/examples/declarative/package/Delegate.qml @@ -2,24 +2,26 @@ import Qt 4.6 //![0] Package { - Text { id: listDelegate; width: 200; height: 25; text: "Empty"; Package.name: "list" } - Text { id: gridDelegate; width: 100; height: 50; text: "Empty"; Package.name: "grid" } + Text { id: listDelegate; width: 200; height: 25; text: 'Empty'; Package.name: 'list' } + Text { id: gridDelegate; width: 100; height: 50; text: 'Empty'; Package.name: 'grid' } Rectangle { id: wrapper width: 200; height: 25 - color: "lightsteelblue" + color: 'lightsteelblue' + Text { text: display; anchors.centerIn: parent } MouseRegion { anchors.fill: parent onClicked: { - if (wrapper.state == "inList") - wrapper.state = "inGrid"; + if (wrapper.state == 'inList') + wrapper.state = 'inGrid'; else - wrapper.state = "inList"; + wrapper.state = 'inList'; } } - state: "inList" + + state: 'inList' states: [ State { name: 'inList' @@ -27,15 +29,17 @@ Package { }, State { name: 'inGrid' - ParentChange { target: wrapper; parent: gridDelegate } - PropertyChanges { target: wrapper; x: 0; y: 0; width: gridDelegate.width; height: gridDelegate.height } + ParentChange { + target: wrapper; parent: gridDelegate + x: 0; y: 0; width: gridDelegate.width; height: gridDelegate.height + } } ] + transitions: [ Transition { - SequentialAnimation { - ParentAction { target: wrapper } - NumberAnimation { targets: wrapper; properties: 'x,y,width,height'; duration: 300 } + ParentAnimation { + NumberAnimation { properties: 'x,y,width,height'; duration: 300 } } } ] -- cgit v0.12 From 57686d28fed85c9f8fbb340cd05f3fb6322332f7 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Mon, 1 Mar 2010 10:18:09 +0100 Subject: compile fix for WinCE need to add the win32 file to get copy and friends included Reviewed-by: Simon Hausmann --- src/plugins/imageformats/tiff/tiff.pro | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/imageformats/tiff/tiff.pro b/src/plugins/imageformats/tiff/tiff.pro index 514fd69..85f618f 100644 --- a/src/plugins/imageformats/tiff/tiff.pro +++ b/src/plugins/imageformats/tiff/tiff.pro @@ -55,7 +55,8 @@ contains(QT_CONFIG, system-tiff) { } wince*: { SOURCES += ../../../corelib/kernel/qfunctions_wince.cpp \ - ../../../3rdparty/libtiff/libtiff/tif_wince.c + ../../../3rdparty/libtiff/libtiff/tif_wince.c \ + ../../../3rdparty/libtiff/libtiff/tif_win32.c } symbian*: { SOURCES += ../../../3rdparty/libtiff/port/lfind.c -- cgit v0.12 From ae6be1c945030051ed069a4418e0453d7836daad Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 1 Mar 2010 10:42:04 +0100 Subject: Fix building with Sun CC 5.10: missing :: for the QWeakPointer declaration --- src/corelib/tools/qsharedpointer_impl.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h index bfc65bc..550ff58 100644 --- a/src/corelib/tools/qsharedpointer_impl.h +++ b/src/corelib/tools/qsharedpointer_impl.h @@ -158,7 +158,7 @@ namespace QtSharedPointer { #if defined(Q_NO_TEMPLATE_FRIENDS) public: #else - template friend class QWeakPointer; + template friend class QT_PREPEND_NAMESPACE(QWeakPointer); #endif Type *value; @@ -402,7 +402,7 @@ namespace QtSharedPointer { public: #else template friend class ExternalRefCount; - template friend class QWeakPointer; + template friend class QT_PREPEND_NAMESPACE(QWeakPointer); template friend QSharedPointer copyAndSetPointer(X * ptr, const QSharedPointer &src); #endif -- cgit v0.12 From 3e03276736d89e1ab214b50d57bf2ba6f6d560f7 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Mon, 1 Mar 2010 11:43:09 +0100 Subject: Introduce optional qdoc_bootstrapped qmake flag This allows building documentation even when cross-compiling. Note that for official documentation, you should always use your host's qdoc3 binary. This qmake option is for testing whether you introduced new qdoc warnings even if you don't have a native build around. --- tools/qdoc3/codeparser.cpp | 1 - tools/qdoc3/command.cpp | 9 +++++++++ tools/qdoc3/config.cpp | 6 +++++- tools/qdoc3/cppcodeparser.cpp | 1 - tools/qdoc3/doc.h | 1 + tools/qdoc3/generator.cpp | 1 - tools/qdoc3/helpprojectwriter.cpp | 1 - tools/qdoc3/jambiapiparser.cpp | 2 -- tools/qdoc3/main.cpp | 17 ++++++++++++++--- tools/qdoc3/node.cpp | 4 ++-- tools/qdoc3/pagegenerator.cpp | 3 +-- tools/qdoc3/qdoc3.pro | 16 ++++++++++++---- tools/qdoc3/tree.cpp | 3 ++- tools/qdoc3/webxmlgenerator.cpp | 4 ++-- tools/qdoc3/webxmlgenerator.h | 5 +++++ 15 files changed, 53 insertions(+), 21 deletions(-) diff --git a/tools/qdoc3/codeparser.cpp b/tools/qdoc3/codeparser.cpp index 5ae63ac..042378e 100644 --- a/tools/qdoc3/codeparser.cpp +++ b/tools/qdoc3/codeparser.cpp @@ -43,7 +43,6 @@ codeparser.cpp */ -#include #include "codeparser.h" #include "node.h" #include "tree.h" diff --git a/tools/qdoc3/command.cpp b/tools/qdoc3/command.cpp index 76b483c..b78ad07 100644 --- a/tools/qdoc3/command.cpp +++ b/tools/qdoc3/command.cpp @@ -47,6 +47,8 @@ #include "command.h" +#include + QT_BEGIN_NAMESPACE void executeCommand(const Location& location, @@ -69,6 +71,12 @@ void executeCommand(const Location& location, if (space != -1) toolName.truncate(space); +#ifdef QT_BOOTSTRAPPED + int status = system(qPrintable(actualCommand)); + int exitCode = WEXITSTATUS(status); + if (status == -1 || exitCode != EXIT_SUCCESS) + location.fatal(QString("Error executing '$1': $2").arg(toolName).arg(exitCode)); +#else QProcess process; process.start(QLatin1String("sh"), QStringList() << QLatin1String("-c") << actualCommand); @@ -89,6 +97,7 @@ void executeCommand(const Location& location, tr("The tool was invoked like this:\n%1\n" "It emitted these errors:\n%2") .arg(actualCommand).arg(errors)); +#endif } QT_END_NAMESPACE diff --git a/tools/qdoc3/config.cpp b/tools/qdoc3/config.cpp index acb1576..3150f28 100644 --- a/tools/qdoc3/config.cpp +++ b/tools/qdoc3/config.cpp @@ -43,7 +43,11 @@ config.cpp */ -#include +#include +#include +#include +#include +#include #include "archiveextractor.h" #include "config.h" diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp index 021d64a..e144a74 100644 --- a/tools/qdoc3/cppcodeparser.cpp +++ b/tools/qdoc3/cppcodeparser.cpp @@ -43,7 +43,6 @@ cppcodeparser.cpp */ -#include #include #include diff --git a/tools/qdoc3/doc.h b/tools/qdoc3/doc.h index e98bb26..3e76456 100644 --- a/tools/qdoc3/doc.h +++ b/tools/qdoc3/doc.h @@ -48,6 +48,7 @@ #include #include +#include #include "location.h" diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp index 6a8899a..200a0e7 100644 --- a/tools/qdoc3/generator.cpp +++ b/tools/qdoc3/generator.cpp @@ -42,7 +42,6 @@ /* generator.cpp */ -#include #include #include #include "codemarker.h" diff --git a/tools/qdoc3/helpprojectwriter.cpp b/tools/qdoc3/helpprojectwriter.cpp index 2189e02..71810e4 100644 --- a/tools/qdoc3/helpprojectwriter.cpp +++ b/tools/qdoc3/helpprojectwriter.cpp @@ -39,7 +39,6 @@ ** ****************************************************************************/ -#include #include #include diff --git a/tools/qdoc3/jambiapiparser.cpp b/tools/qdoc3/jambiapiparser.cpp index 3aba1b0..23f2716 100644 --- a/tools/qdoc3/jambiapiparser.cpp +++ b/tools/qdoc3/jambiapiparser.cpp @@ -43,8 +43,6 @@ jambiapiparser.cpp */ -#include - #include "cppcodeparser.h" #include "jambiapiparser.h" #include "node.h" diff --git a/tools/qdoc3/main.cpp b/tools/qdoc3/main.cpp index 57823fb..ea843ba 100644 --- a/tools/qdoc3/main.cpp +++ b/tools/qdoc3/main.cpp @@ -44,7 +44,6 @@ */ #include -#include #include #include "apigenerator.h" #include "codemarker.h" @@ -72,6 +71,11 @@ #include "tokenizer.h" #include "tree.h" +#include "qtranslator.h" +#ifndef QT_BOOTSTRAPPED +# include "qcoreapplication.h" +#endif + QT_BEGIN_NAMESPACE /* @@ -151,7 +155,9 @@ static void printVersion() */ static void processQdocconfFile(const QString &fileName) { +#ifndef QT_NO_TRANSLATION QList translators; +#endif /* The Config instance represents the configuration data for qdoc. @@ -207,6 +213,7 @@ static void processQdocconfFile(const QString &fileName) CodeParser::initialize(config); Generator::initialize(config); +#ifndef QT_NO_TRANSLATION /* Load the language translators, if the configuration specifies any. */ @@ -221,6 +228,7 @@ static void processQdocconfFile(const QString &fileName) translators.append(translator); ++fn; } +#endif //QSet outputLanguages = config.getStringSet(CONFIG_OUTPUTLANGUAGES); @@ -351,8 +359,9 @@ static void processQdocconfFile(const QString &fileName) Location::terminate(); QDir::setCurrent(prevCurrentDir); - foreach (QTranslator *translator, translators) - delete translator; +#ifndef QT_NO_TRANSLATION + qDeleteAll(translators); +#endif delete tree; } @@ -362,7 +371,9 @@ int main(int argc, char **argv) { QT_USE_NAMESPACE +#ifndef QT_BOOTSTRAPPED QCoreApplication app(argc, argv); +#endif QString cf = "qsauncompress \1 \2"; PolyArchiveExtractor qsaExtractor(QStringList() << "qsa",cf); cf = "tar -C \2 -xf \1"; diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp index 4ddcfb1..694f499 100644 --- a/tools/qdoc3/node.cpp +++ b/tools/qdoc3/node.cpp @@ -43,7 +43,6 @@ node.cpp */ -#include #include "node.h" QT_BEGIN_NAMESPACE @@ -1161,7 +1160,8 @@ QString FunctionNode::signature(bool values) const */ void FunctionNode::debug() const { - qDebug() << "QML METHOD" << name() << "rt" << rt << "pp" << pp; + qDebug("QML METHOD %s rt %s pp %s", + qPrintable(name()), qPrintable(rt), qPrintable(pp.join(" "))); } /*! diff --git a/tools/qdoc3/pagegenerator.cpp b/tools/qdoc3/pagegenerator.cpp index 2cad9ed..f0f14fe 100644 --- a/tools/qdoc3/pagegenerator.cpp +++ b/tools/qdoc3/pagegenerator.cpp @@ -43,7 +43,6 @@ pagegenerator.cpp */ -#include #include #include @@ -212,7 +211,7 @@ void PageGenerator::generateInnerNode(const InnerNode *node, #endif if (fakeNode->subType() == Node::Page) { if (node->count() > 0) - qDebug() << "PAGE" << fakeNode->title() << "HAS CHILDREN"; + qDebug("PAGE %s HAS CHILDREN", qPrintable(fakeNode->title())); } } diff --git a/tools/qdoc3/qdoc3.pro b/tools/qdoc3/qdoc3.pro index 7705692..e394799 100644 --- a/tools/qdoc3/qdoc3.pro +++ b/tools/qdoc3/qdoc3.pro @@ -4,9 +4,16 @@ DEFINES += QT_NO_CAST_TO_ASCII #DEFINES += QT_USE_FAST_OPERATOR_PLUS #DEFINES += QT_USE_FAST_CONCATENATION -QT = core xml -CONFIG += console -CONFIG -= debug_and_release_target +qdoc_bootstrapped { + include(../../src/tools/bootstrap/bootstrap.pri) + DEFINES -= QT_NO_CAST_FROM_ASCII + DEFINES += QT_NO_TRANSLATION +} else { + QT = core xml + CONFIG += console + CONFIG -= debug_and_release_target +} + !isEmpty(QT_BUILD_TREE):DESTDIR = $$QT_BUILD_TREE/bin #CONFIG += debug build_all:!build_pass { @@ -14,7 +21,8 @@ build_all:!build_pass { CONFIG += release # CONFIG += debug } -mac:CONFIG -= app_bundle + +CONFIG -= app_bundle HEADERS += apigenerator.h \ archiveextractor.h \ atom.h \ diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp index 6c2502d..922c23e 100644 --- a/tools/qdoc3/tree.cpp +++ b/tools/qdoc3/tree.cpp @@ -43,7 +43,6 @@ tree.cpp */ -#include #include #include "atom.h" @@ -54,6 +53,8 @@ #include "text.h" #include "tree.h" +#include + QT_BEGIN_NAMESPACE struct InheritanceBound diff --git a/tools/qdoc3/webxmlgenerator.cpp b/tools/qdoc3/webxmlgenerator.cpp index 205bc8c..6020b1b 100644 --- a/tools/qdoc3/webxmlgenerator.cpp +++ b/tools/qdoc3/webxmlgenerator.cpp @@ -43,8 +43,6 @@ webxmlgenerator.cpp */ -#include - #include "codemarker.h" #include "pagegenerator.h" #include "webxmlgenerator.h" @@ -52,6 +50,8 @@ #include "separator.h" #include "tree.h" +#include + QT_BEGIN_NAMESPACE #define COMMAND_VERSION Doc::alias("version") diff --git a/tools/qdoc3/webxmlgenerator.h b/tools/qdoc3/webxmlgenerator.h index cadf176..071896a 100644 --- a/tools/qdoc3/webxmlgenerator.h +++ b/tools/qdoc3/webxmlgenerator.h @@ -46,12 +46,17 @@ #ifndef WEBXMLGENERATOR_H #define WEBXMLGENERATOR_H +#include + #include "codemarker.h" #include "config.h" #include "pagegenerator.h" QT_BEGIN_NAMESPACE +class QXmlStreamReader; +class QXmlStreamWriter; + class WebXMLGenerator : public PageGenerator { public: -- cgit v0.12 From 3a4dc08d08ce0388dd183a24923871e3e03ba531 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Mon, 1 Mar 2010 12:23:15 +0100 Subject: Make Minehunt demo compile. It still isn't working though. Investigations continue. Task-number: QTBUG-8549 --- demos/declarative/minehunt/main.cpp | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/demos/declarative/minehunt/main.cpp b/demos/declarative/minehunt/main.cpp index 0e99731..37dc8a5 100644 --- a/demos/declarative/minehunt/main.cpp +++ b/demos/declarative/minehunt/main.cpp @@ -100,8 +100,8 @@ public: MyWidget(int = 370, int = 480, QWidget *parent=0, Qt::WindowFlags flags=0); ~MyWidget(); - Q_PROPERTY(QList *tiles READ tiles CONSTANT); - QList *tiles() { return &_tiles; } + Q_PROPERTY(QDeclarativeListProperty tiles READ tiles CONSTANT); + QDeclarativeListProperty tiles() { return _tilesProperty; } Q_PROPERTY(bool isPlaying READ isPlaying NOTIFY isPlayingChanged); bool isPlaying() {return playing;} @@ -116,8 +116,8 @@ public: int numFlags() const{return nFlags;} public slots: - Q_INVOKABLE void flip(int row, int col); - Q_INVOKABLE void flag(int row, int col); + Q_INVOKABLE bool flip(int row, int col); + Q_INVOKABLE bool flag(int row, int col); void setBoard(); void reset(); @@ -136,6 +136,7 @@ private: QDeclarativeView *canvas; QList _tiles; + QDeclarativeListProperty _tilesProperty; int numCols; int numRows; bool playing; @@ -145,6 +146,7 @@ private: int nFlags; }; +Q_DECLARE_METATYPE(QList) MyWidget::MyWidget(int width, int height, QWidget *parent, Qt::WindowFlags flags) : QWidget(parent, flags), canvas(0), numCols(9), numRows(9), playing(true), won(false) { @@ -155,7 +157,6 @@ MyWidget::MyWidget(int width, int height, QWidget *parent, Qt::WindowFlags flags for(int ii = 0; ii < numRows * numCols; ++ii) { _tiles << new Tile; } - reset(); QVBoxLayout *vbox = new QVBoxLayout; @@ -166,9 +167,10 @@ MyWidget::MyWidget(int width, int height, QWidget *parent, Qt::WindowFlags flags canvas->setFixedSize(width, height); vbox->addWidget(canvas); + _tilesProperty = QDeclarativeListProperty(this, _tiles); + QDeclarativeContext *ctxt = canvas->rootContext(); ctxt->addDefaultObject(this); - ctxt->setContextProperty("tiles", QVariant::fromValue*>(&_tiles));//QTBUG-5675 canvas->setSource(QUrl::fromLocalFile(fileName)); } @@ -235,14 +237,14 @@ int MyWidget::getHint(int row, int col) return hint; } -void MyWidget::flip(int row, int col) +bool MyWidget::flip(int row, int col) { if(!playing) - return; + return false; Tile *t = tile(row, col); if (!t || t->hasFlag()) - return; + return false; if(t->flipped()){ int flags = 0; @@ -255,7 +257,7 @@ void MyWidget::flip(int row, int col) flags++; } if(!t->hint() || t->hint() != flags) - return; + return false; for (int c = col-1; c <= col+1; c++) for (int r = row-1; r <= row+1; r++) { Tile *nearT = tile(r, c); @@ -263,7 +265,7 @@ void MyWidget::flip(int row, int col) flip( r, c ); } } - return; + return true; } t->flip(); @@ -297,17 +299,19 @@ void MyWidget::flip(int row, int col) hasWonChanged(); setPlaying(false); } + return true; } -void MyWidget::flag(int row, int col) +bool MyWidget::flag(int row, int col) { Tile *t = tile(row, col); if(!t) - return; + return false; t->setHasFlag(!t->hasFlag()); nFlags += (t->hasFlag()?1:-1); emit numFlagsChanged(); + return true; } ///////////////////////////////////////////////////////// -- cgit v0.12 From fc2fab3e08ea577d12166d318863c453e093c2f1 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 1 Mar 2010 12:30:25 +0100 Subject: fix qt_wince_is_windows_mobile_65() This function checked the wrong OS build number. The first Windows mobile 6.5 build is supposed to have build number 21139. Task-number: QTBUG-8418 Reviewed-by: thartman --- src/gui/kernel/qguifunctions_wince.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qguifunctions_wince.cpp b/src/gui/kernel/qguifunctions_wince.cpp index ac4cdc8..f5004b0 100644 --- a/src/gui/kernel/qguifunctions_wince.cpp +++ b/src/gui/kernel/qguifunctions_wince.cpp @@ -278,7 +278,14 @@ int qt_wince_get_version() bool qt_wince_is_windows_mobile_65() { - return ((qt_wince_get_version() == 52) && (qt_wince_get_build() > 2000)); + const DWORD dwFirstWM65BuildNumber = 21139; + OSVERSIONINFO osvi; + osvi.dwOSVersionInfoSize = sizeof(osvi); + if (!GetVersionEx(&osvi)) + return false; + return osvi.dwMajorVersion > 5 + || (osvi.dwMajorVersion == 5 && (osvi.dwMinorVersion > 2 || + (osvi.dwMinorVersion == 2 && osvi.dwBuildNumber >= dwFirstWM65BuildNumber))); } bool qt_wince_is_pocket_pc() { -- cgit v0.12 From bcb2ed5667bd957476e3b62ef3a479a26f1252f3 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Mon, 1 Mar 2010 13:02:13 +0100 Subject: Fix minehunt demo Game works again, and the issue with X11 native rendering being abysmally slow has been 'fixed'. --- demos/declarative/minehunt/main.cpp | 4 ++++ demos/declarative/minehunt/minehunt.qml | 14 +++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/demos/declarative/minehunt/main.cpp b/demos/declarative/minehunt/main.cpp index 37dc8a5..e7a1d7c 100644 --- a/demos/declarative/minehunt/main.cpp +++ b/demos/declarative/minehunt/main.cpp @@ -317,6 +317,10 @@ bool MyWidget::flag(int row, int col) int main(int argc, char ** argv) { +#ifdef Q_WS_X11 + // native on X11 is terrible for this demo. + QApplication::setGraphicsSystem("raster"); +#endif QApplication app(argc, argv); bool frameless = false; diff --git a/demos/declarative/minehunt/minehunt.qml b/demos/declarative/minehunt/minehunt.qml index 617a6ed..8a3cab1 100644 --- a/demos/declarative/minehunt/minehunt.qml +++ b/demos/declarative/minehunt/minehunt.qml @@ -31,7 +31,7 @@ Item { anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter source: "pics/flag.png" - opacity: model.hasFlag + opacity: modelData.hasFlag opacity: Behavior { NumberAnimation { property: "opacity" @@ -47,16 +47,16 @@ Item { Text { anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter - text: model.hint + text: modelData.hint color: "white" font.bold: true - opacity: !model.hasMine && model.hint > 0 + opacity: !modelData.hasMine && modelData.hint > 0 } Image { anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter source: "pics/bomb.png" - opacity: model.hasMine + opacity: modelData.hasMine } Explosion { id: expl @@ -65,7 +65,7 @@ Item { states: [ State { name: "back" - when: model.flipped + when: modelData.flipped PropertyChanges { target: flipable; angle: 180 } } ] @@ -81,7 +81,7 @@ Item { else ret = 0; if (ret > 0) { - if (model.hasMine && model.flipped) { + if (modelData.hasMine && modelData.flipped) { ret*3; } else { ret; @@ -96,7 +96,7 @@ Item { properties: "angle" } ScriptAction{ - script: if(model.hasMine && model.flipped){expl.explode = true;} + script: if(modelData.hasMine && modelData.flipped){expl.explode = true;} } } } -- cgit v0.12 From 334ed757857d14e075630644495540fb70a3aaae Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 1 Mar 2010 13:04:48 +0100 Subject: fix bad performance penalty for tab widgets for Windows mobile 6.5 Task-number: QTBUG-8419 Reviewed-by: thartman --- src/gui/styles/qwindowsmobilestyle.cpp | 37 +++++++++++++++++----------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/gui/styles/qwindowsmobilestyle.cpp b/src/gui/styles/qwindowsmobilestyle.cpp index a264b1b..6e77409 100644 --- a/src/gui/styles/qwindowsmobilestyle.cpp +++ b/src/gui/styles/qwindowsmobilestyle.cpp @@ -4040,25 +4040,26 @@ enum QSliderDirection { SliderUp, SliderDown, SliderLeft, SliderRight }; void QWindowsMobileStylePrivate::tintImagesButton(QColor color) { - if (currentTintButton == color) + if (currentTintButton == color) return; - - imageTabEnd = QImage(tabend_xpm); - imageTabSelectedEnd = QImage(tabselectedend_xpm); - imageTabSelectedBegin = QImage(tabselectedbeginn_xpm); - imageTabMiddle = QImage(tabmiddle_xpm); - tintImage(&imageTabEnd, color, 0.0); - tintImage(&imageTabSelectedEnd, color, 0.0); - tintImage(&imageTabSelectedBegin, color, 0.0); - tintImage(&imageTabMiddle, color, 0.0); - - if (!doubleControls) { - int height = imageTabMiddle.height() / 2 + 1; - imageTabEnd = imageTabEnd.scaledToHeight(height); - imageTabMiddle = imageTabMiddle.scaledToHeight(height); - imageTabSelectedEnd = imageTabSelectedEnd.scaledToHeight(height); - imageTabSelectedBegin = imageTabSelectedBegin.scaledToHeight(height); - } + currentTintButton = color; + + imageTabEnd = QImage(tabend_xpm); + imageTabSelectedEnd = QImage(tabselectedend_xpm); + imageTabSelectedBegin = QImage(tabselectedbeginn_xpm); + imageTabMiddle = QImage(tabmiddle_xpm); + tintImage(&imageTabEnd, color, 0.0); + tintImage(&imageTabSelectedEnd, color, 0.0); + tintImage(&imageTabSelectedBegin, color, 0.0); + tintImage(&imageTabMiddle, color, 0.0); + + if (!doubleControls) { + int height = imageTabMiddle.height() / 2 + 1; + imageTabEnd = imageTabEnd.scaledToHeight(height); + imageTabMiddle = imageTabMiddle.scaledToHeight(height); + imageTabSelectedEnd = imageTabSelectedEnd.scaledToHeight(height); + imageTabSelectedBegin = imageTabSelectedBegin.scaledToHeight(height); + } } void QWindowsMobileStylePrivate::tintImagesHigh(QColor color) -- cgit v0.12 From 6f69f40b7bf8b638444b72aea4565611c0db4dc9 Mon Sep 17 00:00:00 2001 From: Zeno Albisser Date: Mon, 1 Mar 2010 12:58:30 +0100 Subject: Updated syncqt to use relative include paths on cygwin as well. Reviewed-by: TrustMe --- bin/syncqt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/syncqt b/bin/syncqt index 6fb21dd..be4af2a 100755 --- a/bin/syncqt +++ b/bin/syncqt @@ -356,12 +356,13 @@ sub fixPaths { #setup my $ret = $file; + $ret =~ s,/cygdrive/([a-zA-Z])/,$1:/,g; my $file_dir = dirname($file); if($file_dir eq ".") { $file_dir = getcwd(); $file_dir =~ s=\\=/=g; } - $file_dir =~ s,/cygdrive/([a-zA-Z])/,$1:,g; + $file_dir =~ s,/cygdrive/([a-zA-Z])/,$1:/,g; if($dir eq ".") { $dir = getcwd(); $dir =~ s=\\=/=g; -- cgit v0.12 From 9fe43ff4e313220a1ecb02a990324cb6b768e585 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Thu, 25 Feb 2010 16:48:33 +0100 Subject: Fixed coordinate system conversion for gestures. When converting hotspot position (which is in global coordinates) to graphics scene coordinates we should use the viewport because the mapToScene() takes a position in a viewport. Task-number: related to QTBUG-6876 Reviewed-by: Thomas Zander --- src/gui/graphicsview/qgraphicsscene.cpp | 8 +++--- tests/auto/gestures/tst_gestures.cpp | 45 ++++++++++++++++++++++++++++++--- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index 365afdd..a72761a 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -5972,12 +5972,12 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event) QList allGestures = event->gestures(); DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:" - << "Delivering gestures:" << allGestures; + << "Gestures:" << allGestures; QSet startedGestures; - QPoint delta = graphicsView->mapFromGlobal(QPoint()); - QTransform toScene = QTransform::fromTranslate(delta.x(), delta.y()) - * graphicsView->viewportTransform().inverted(); + QPoint delta = viewport->mapFromGlobal(QPoint()); + QTransform toScene = QTransform::fromTranslate(delta.x(), delta.y()) + * graphicsView->viewportTransform().inverted(); foreach (QGesture *gesture, allGestures) { // cache scene coordinates of the hot spot if (gesture->hasHotSpot()) { diff --git a/tests/auto/gestures/tst_gestures.cpp b/tests/auto/gestures/tst_gestures.cpp index a2058cd..a1afa0a 100644 --- a/tests/auto/gestures/tst_gestures.cpp +++ b/tests/auto/gestures/tst_gestures.cpp @@ -58,7 +58,7 @@ static QPointF mapToGlobal(const QPointF &pt, QGraphicsItem *item, QGraphicsView *view) { - return view->mapToGlobal(view->mapFromScene(item->mapToScene(pt))); + return view->viewport()->mapToGlobal(view->mapFromScene(item->mapToScene(pt))); } class CustomGesture : public QGesture @@ -353,6 +353,7 @@ private slots: void deleteGestureTargetWidget(); void deleteGestureTargetItem_data(); void deleteGestureTargetItem(); + void viewportCoordinates(); }; tst_Gestures::tst_Gestures() @@ -742,7 +743,6 @@ public: ignoredFinishedGestures.clear(); } -protected: QRectF boundingRect() const { return size; @@ -1771,7 +1771,6 @@ void tst_Gestures::panelStacksBehindParent() void tst_Gestures::deleteGestureTargetWidget() { - } void tst_Gestures::deleteGestureTargetItem_data() @@ -1857,5 +1856,45 @@ void tst_Gestures::deleteGestureTargetItem() sendCustomGesture(&event, item1, &scene); } +class GraphicsView : public QGraphicsView +{ +public: + GraphicsView(QGraphicsScene *scene, QWidget *parent = 0) + : QGraphicsView(scene, parent) + { + } + + using QGraphicsView::setViewportMargins; +}; + +// just making sure that even if the graphicsview has margins hotspot still +// works properly. It should use viewport for converting global coordinates to +// scene coordinates. +void tst_Gestures::viewportCoordinates() +{ + QGraphicsScene scene; + GraphicsView view(&scene); + view.setViewportMargins(10,20,15,25); + view.setWindowFlags(Qt::X11BypassWindowManagerHint); + + GestureItem *item1 = new GestureItem("item1"); + item1->grabGesture(CustomGesture::GestureType); + item1->size = QRectF(0, 0, 3, 3); + item1->setZValue(2); + scene.addItem(item1); + + view.show(); + QTest::qWaitForWindowShown(&view); + view.ensureVisible(scene.sceneRect()); + + view.viewport()->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); + + CustomEvent event; + event.hotSpot = mapToGlobal(item1->boundingRect().center(), item1, &view); + event.hasHotSpot = true; + sendCustomGesture(&event, item1, &scene); + QVERIFY(item1->gestureEventsReceived != 0); +} + QTEST_MAIN(tst_Gestures) #include "tst_gestures.moc" -- cgit v0.12 From c14e9bb7d8bb86129983df96dc5f8926190f5b06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Mon, 1 Mar 2010 13:35:50 +0100 Subject: doc: Fixed building documentation qml.qdocconf wasn't renamed yet. --- tools/qdoc3/test/qdeclarative.qdocconf | 80 ++++++++++++++++++++++++++++++++++ tools/qdoc3/test/qml.qdocconf | 80 ---------------------------------- 2 files changed, 80 insertions(+), 80 deletions(-) create mode 100644 tools/qdoc3/test/qdeclarative.qdocconf delete mode 100644 tools/qdoc3/test/qml.qdocconf diff --git a/tools/qdoc3/test/qdeclarative.qdocconf b/tools/qdoc3/test/qdeclarative.qdocconf new file mode 100644 index 0000000..3b5d8dc --- /dev/null +++ b/tools/qdoc3/test/qdeclarative.qdocconf @@ -0,0 +1,80 @@ +include(compat.qdocconf) +include(macros.qdocconf) +include(qt-cpp-ignore.qdocconf) +include(qt-html-templates.qdocconf) +include(qt-defines.qdocconf) + +project = Qml +description = Qml Reference Documentation +url = http://doc.qtsoftware.com/4.6 +qmlonly = true + +edition.Console.modules = QtCore QtDBus QtNetwork QtScript QtSql QtXml \ + QtXmlPatterns QtTest +edition.Desktop.modules = QtCore QtDBus QtGui QtNetwork QtOpenGL QtScript QtSql QtSvg \ + QtWebKit QtXml QtXmlPatterns Qt3Support QtHelp \ + QtDesigner QtAssistant QAxContainer Phonon \ + QAxServer QtUiTools QtTest QtDBus +edition.DesktopLight.modules = QtCore QtDBus QtGui Qt3SupportLight QtTest +edition.DesktopLight.groups = -graphicsview-api + +qhp.projects = Qml + +qhp.Qml.file = qml.qhp +qhp.Qml.namespace = com.trolltech.qml.460 +qhp.Qml.virtualFolder = qdoc +qhp.Qml.indexTitle = Qml Reference + +# Files not referenced in any qdoc file +# See also extraimages.HTML +qhp.Qml.extraFiles = classic.css \ + images/qt-logo.png + +qhp.Qml.filterAttributes = qt 4.6.0 qtrefdoc +qhp.Qml.customFilters.Qt.name = Qt 4.6.0 +qhp.Qml.customFilters.Qt.filterAttributes = qt 4.6.0 +qhp.Qml.subprojects = classes +qhp.Qml.subprojects.classes.title = Elements +qhp.Qml.subprojects.classes.indexTitle = Qml Elements +qhp.Qml.subprojects.classes.selectors = fake:qmlclass +qhp.Qml.subprojects.classes.sortPages = true + +language = Cpp + +headerdirs = $QT_SOURCE_TREE/src/declarative +sourcedirs = $QT_SOURCE_TREE/src/declarative \ + $QT_SOURCE_TREE/doc/src/declarative + +sources += $QT_SOURCE_TREE/doc/src/tutorials/declarative.qdoc + +sources.fileextensions = "*.cpp *.qdoc" +examples.fileextensions = "*.cpp *.h *.js *.qml" + +exampledirs = $QT_SOURCE_TREE/doc/src \ + $QT_SOURCE_TREE/examples \ + $QT_SOURCE_TREE/examples/tutorials \ + $QT_SOURCE_TREE \ + $QT_SOURCE_TREE/qmake/examples \ + $QT_SOURCE_TREE/src/3rdparty/webkit/WebKit/qt/docs +imagedirs = $QT_SOURCE_TREE/doc/src/images \ + $QT_SOURCE_TREE/examples \ + $QT_SOURCE_TREE/doc/src/declarative/pics +outputdir = $QT_BUILD_TREE/doc-build/html-qml +tagfile = $QT_BUILD_TREE/doc-build/html-qml/qt.tags +base = file:$QT_BUILD_TREE/doc/html-qml + +HTML.stylesheets = classic.css + +HTML.postheader = "\n" \ + "\n" \ + "\n" \ + "" \ + "\n" \ + "
" \ + "" \ + "  " \ + "" \ + "Home ·" \ + " " \ + "Elements" \ + "
" diff --git a/tools/qdoc3/test/qml.qdocconf b/tools/qdoc3/test/qml.qdocconf deleted file mode 100644 index 3b5d8dc..0000000 --- a/tools/qdoc3/test/qml.qdocconf +++ /dev/null @@ -1,80 +0,0 @@ -include(compat.qdocconf) -include(macros.qdocconf) -include(qt-cpp-ignore.qdocconf) -include(qt-html-templates.qdocconf) -include(qt-defines.qdocconf) - -project = Qml -description = Qml Reference Documentation -url = http://doc.qtsoftware.com/4.6 -qmlonly = true - -edition.Console.modules = QtCore QtDBus QtNetwork QtScript QtSql QtXml \ - QtXmlPatterns QtTest -edition.Desktop.modules = QtCore QtDBus QtGui QtNetwork QtOpenGL QtScript QtSql QtSvg \ - QtWebKit QtXml QtXmlPatterns Qt3Support QtHelp \ - QtDesigner QtAssistant QAxContainer Phonon \ - QAxServer QtUiTools QtTest QtDBus -edition.DesktopLight.modules = QtCore QtDBus QtGui Qt3SupportLight QtTest -edition.DesktopLight.groups = -graphicsview-api - -qhp.projects = Qml - -qhp.Qml.file = qml.qhp -qhp.Qml.namespace = com.trolltech.qml.460 -qhp.Qml.virtualFolder = qdoc -qhp.Qml.indexTitle = Qml Reference - -# Files not referenced in any qdoc file -# See also extraimages.HTML -qhp.Qml.extraFiles = classic.css \ - images/qt-logo.png - -qhp.Qml.filterAttributes = qt 4.6.0 qtrefdoc -qhp.Qml.customFilters.Qt.name = Qt 4.6.0 -qhp.Qml.customFilters.Qt.filterAttributes = qt 4.6.0 -qhp.Qml.subprojects = classes -qhp.Qml.subprojects.classes.title = Elements -qhp.Qml.subprojects.classes.indexTitle = Qml Elements -qhp.Qml.subprojects.classes.selectors = fake:qmlclass -qhp.Qml.subprojects.classes.sortPages = true - -language = Cpp - -headerdirs = $QT_SOURCE_TREE/src/declarative -sourcedirs = $QT_SOURCE_TREE/src/declarative \ - $QT_SOURCE_TREE/doc/src/declarative - -sources += $QT_SOURCE_TREE/doc/src/tutorials/declarative.qdoc - -sources.fileextensions = "*.cpp *.qdoc" -examples.fileextensions = "*.cpp *.h *.js *.qml" - -exampledirs = $QT_SOURCE_TREE/doc/src \ - $QT_SOURCE_TREE/examples \ - $QT_SOURCE_TREE/examples/tutorials \ - $QT_SOURCE_TREE \ - $QT_SOURCE_TREE/qmake/examples \ - $QT_SOURCE_TREE/src/3rdparty/webkit/WebKit/qt/docs -imagedirs = $QT_SOURCE_TREE/doc/src/images \ - $QT_SOURCE_TREE/examples \ - $QT_SOURCE_TREE/doc/src/declarative/pics -outputdir = $QT_BUILD_TREE/doc-build/html-qml -tagfile = $QT_BUILD_TREE/doc-build/html-qml/qt.tags -base = file:$QT_BUILD_TREE/doc/html-qml - -HTML.stylesheets = classic.css - -HTML.postheader = "\n" \ - "\n" \ - "\n" \ - "" \ - "\n" \ - "
" \ - "" \ - "  " \ - "" \ - "Home ·" \ - " " \ - "Elements" \ - "
" -- cgit v0.12 From 1ab5feb6260589f254ed209816cb67dbe9d3e4a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Mon, 1 Mar 2010 13:44:22 +0100 Subject: Fixed QPixmap::load() to not modify referenced copies (again!) Change 8721d060a67a01ac891cab9d3d17aacf7373bcf0 broke the previous fix. Task-number: QTBUG-8606 Reviewed-by: Gunnar --- src/gui/image/qpixmap.cpp | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp index 08003e5..7b225eb 100644 --- a/src/gui/image/qpixmap.cpp +++ b/src/gui/image/qpixmap.cpp @@ -831,21 +831,14 @@ bool QPixmap::load(const QString &fileName, const char *format, Qt::ImageConvers if (QPixmapCache::find(key, *this)) return true; - bool ok; - - if (data) { - ok = data->fromFile(fileName, format, flags); - } else { - QScopedPointer tmp(QPixmapData::create(0, 0, QPixmapData::PixmapType)); - ok = tmp->fromFile(fileName, format, flags); - if (ok) - data = tmp.take(); - } - - if (ok) + QScopedPointer tmp(QPixmapData::create(0, 0, data ? data->type : QPixmapData::PixmapType)); + if (tmp->fromFile(fileName, format, flags)) { + data = tmp.take(); QPixmapCache::insert(key, *this); + return true; + } - return ok; + return false; } /*! -- cgit v0.12 From 4f77d4f1bebba1627700037bdfce4e74ad84cce8 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Mon, 1 Mar 2010 22:51:24 +1000 Subject: Make SameGame tutorials share images It's a bit of a waste to have four copies of all of the images. And as an advanced tutorial throwing in a minor complication like this is probably beneficial. Additionally, the background has been replaced by a smaller JPEG version. --- doc/src/declarative/advtutorial.qdoc | 5 +++++ .../declarative/tutorials/samegame/samegame1/Block.qml | 2 +- .../tutorials/samegame/samegame1/pics/background.png | Bin 313930 -> 0 bytes .../tutorials/samegame/samegame1/pics/redStone.png | Bin 2902 -> 0 bytes .../tutorials/samegame/samegame1/samegame.qml | 2 +- .../declarative/tutorials/samegame/samegame2/Block.qml | 2 +- .../tutorials/samegame/samegame2/pics/background.png | Bin 313930 -> 0 bytes .../tutorials/samegame/samegame2/pics/redStone.png | Bin 2902 -> 0 bytes .../tutorials/samegame/samegame2/samegame.qml | 2 +- .../declarative/tutorials/samegame/samegame3/Block.qml | 6 +++--- .../tutorials/samegame/samegame3/pics/background.png | Bin 313930 -> 0 bytes .../tutorials/samegame/samegame3/pics/blueStone.png | Bin 3054 -> 0 bytes .../tutorials/samegame/samegame3/pics/greenStone.png | Bin 2932 -> 0 bytes .../tutorials/samegame/samegame3/pics/redStone.png | Bin 2902 -> 0 bytes .../tutorials/samegame/samegame3/samegame.qml | 2 +- .../tutorials/samegame/samegame4/content/BoomBlock.qml | 12 ++++++------ .../samegame/samegame4/content/pics/background.png | Bin 313930 -> 0 bytes .../samegame/samegame4/content/pics/blueStar.png | Bin 278 -> 0 bytes .../samegame/samegame4/content/pics/blueStone.png | Bin 3054 -> 0 bytes .../samegame/samegame4/content/pics/greenStar.png | Bin 273 -> 0 bytes .../samegame/samegame4/content/pics/greenStone.png | Bin 2932 -> 0 bytes .../samegame/samegame4/content/pics/redStar.png | Bin 274 -> 0 bytes .../samegame/samegame4/content/pics/redStone.png | Bin 2902 -> 0 bytes .../tutorials/samegame/samegame4/content/pics/star.png | Bin 262 -> 0 bytes .../samegame/samegame4/content/pics/yellowStone.png | Bin 3056 -> 0 bytes .../tutorials/samegame/samegame4/samegame.qml | 2 +- .../tutorials/samegame/shared/pics/background.jpg | Bin 0 -> 36473 bytes .../tutorials/samegame/shared/pics/blueStar.png | Bin 0 -> 278 bytes .../tutorials/samegame/shared/pics/blueStone.png | Bin 0 -> 3054 bytes .../tutorials/samegame/shared/pics/greenStar.png | Bin 0 -> 273 bytes .../tutorials/samegame/shared/pics/greenStone.png | Bin 0 -> 2932 bytes .../tutorials/samegame/shared/pics/redStar.png | Bin 0 -> 274 bytes .../tutorials/samegame/shared/pics/redStone.png | Bin 0 -> 2902 bytes .../tutorials/samegame/shared/pics/star.png | Bin 0 -> 262 bytes .../tutorials/samegame/shared/pics/yellowStone.png | Bin 0 -> 3056 bytes 35 files changed, 20 insertions(+), 15 deletions(-) delete mode 100644 examples/declarative/tutorials/samegame/samegame1/pics/background.png delete mode 100644 examples/declarative/tutorials/samegame/samegame1/pics/redStone.png delete mode 100644 examples/declarative/tutorials/samegame/samegame2/pics/background.png delete mode 100644 examples/declarative/tutorials/samegame/samegame2/pics/redStone.png delete mode 100644 examples/declarative/tutorials/samegame/samegame3/pics/background.png delete mode 100644 examples/declarative/tutorials/samegame/samegame3/pics/blueStone.png delete mode 100644 examples/declarative/tutorials/samegame/samegame3/pics/greenStone.png delete mode 100644 examples/declarative/tutorials/samegame/samegame3/pics/redStone.png delete mode 100644 examples/declarative/tutorials/samegame/samegame4/content/pics/background.png delete mode 100644 examples/declarative/tutorials/samegame/samegame4/content/pics/blueStar.png delete mode 100644 examples/declarative/tutorials/samegame/samegame4/content/pics/blueStone.png delete mode 100644 examples/declarative/tutorials/samegame/samegame4/content/pics/greenStar.png delete mode 100644 examples/declarative/tutorials/samegame/samegame4/content/pics/greenStone.png delete mode 100644 examples/declarative/tutorials/samegame/samegame4/content/pics/redStar.png delete mode 100644 examples/declarative/tutorials/samegame/samegame4/content/pics/redStone.png delete mode 100644 examples/declarative/tutorials/samegame/samegame4/content/pics/star.png delete mode 100644 examples/declarative/tutorials/samegame/samegame4/content/pics/yellowStone.png create mode 100644 examples/declarative/tutorials/samegame/shared/pics/background.jpg create mode 100644 examples/declarative/tutorials/samegame/shared/pics/blueStar.png create mode 100644 examples/declarative/tutorials/samegame/shared/pics/blueStone.png create mode 100644 examples/declarative/tutorials/samegame/shared/pics/greenStar.png create mode 100644 examples/declarative/tutorials/samegame/shared/pics/greenStone.png create mode 100644 examples/declarative/tutorials/samegame/shared/pics/redStar.png create mode 100644 examples/declarative/tutorials/samegame/shared/pics/redStone.png create mode 100644 examples/declarative/tutorials/samegame/shared/pics/star.png create mode 100644 examples/declarative/tutorials/samegame/shared/pics/yellowStone.png diff --git a/doc/src/declarative/advtutorial.qdoc b/doc/src/declarative/advtutorial.qdoc index b7d964c..e420e6d 100644 --- a/doc/src/declarative/advtutorial.qdoc +++ b/doc/src/declarative/advtutorial.qdoc @@ -106,6 +106,11 @@ more than just an image. Note that we've set the image to be the size of the ite This will be used later, when we dynamically create and size the block items the image will be scaled automatically to the correct size. +Note that because there are several stages to this tutorial they share images. This is done by having a shared resources +folder containing the images, and all stages of the tutorial refer to the same shared folder. This is the reason for the +'../shared/pics' part of the image source. The image source can be any relative or absolute path, and it is relative to the +location of the file the Image element is in, with ../ meaning to go up one level. + You should be familiar with all that goes on in these files so far. This is a very basic start and doesn't move at all - next we will populate the game canvas with some blocks. diff --git a/examples/declarative/tutorials/samegame/samegame1/Block.qml b/examples/declarative/tutorials/samegame/samegame1/Block.qml index b76e61a..f133b17 100644 --- a/examples/declarative/tutorials/samegame/samegame1/Block.qml +++ b/examples/declarative/tutorials/samegame/samegame1/Block.qml @@ -5,7 +5,7 @@ Item { id:block Image { id: img - source: "pics/redStone.png"; + source: "../shared/pics/redStone.png"; anchors.fill: parent } } diff --git a/examples/declarative/tutorials/samegame/samegame1/pics/background.png b/examples/declarative/tutorials/samegame/samegame1/pics/background.png deleted file mode 100644 index 3734a27..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame1/pics/background.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame1/pics/redStone.png b/examples/declarative/tutorials/samegame/samegame1/pics/redStone.png deleted file mode 100644 index 36b09a2..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame1/pics/redStone.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame1/samegame.qml b/examples/declarative/tutorials/samegame/samegame1/samegame.qml index c2d3939..5ed30c9 100644 --- a/examples/declarative/tutorials/samegame/samegame1/samegame.qml +++ b/examples/declarative/tutorials/samegame/samegame1/samegame.qml @@ -12,7 +12,7 @@ Rectangle { Image { id: background - anchors.fill: parent; source: "pics/background.png" + anchors.fill: parent; source: "../shared/pics/background.jpg" fillMode: Image.PreserveAspectCrop } } diff --git a/examples/declarative/tutorials/samegame/samegame2/Block.qml b/examples/declarative/tutorials/samegame/samegame2/Block.qml index 228ac4e..e4b3354 100644 --- a/examples/declarative/tutorials/samegame/samegame2/Block.qml +++ b/examples/declarative/tutorials/samegame/samegame2/Block.qml @@ -4,7 +4,7 @@ Item { id:block Image { id: img - source: "pics/redStone.png"; + source: "../shared/pics/redStone.png"; anchors.fill: parent } } diff --git a/examples/declarative/tutorials/samegame/samegame2/pics/background.png b/examples/declarative/tutorials/samegame/samegame2/pics/background.png deleted file mode 100644 index 3734a27..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame2/pics/background.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame2/pics/redStone.png b/examples/declarative/tutorials/samegame/samegame2/pics/redStone.png deleted file mode 100644 index 36b09a2..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame2/pics/redStone.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame2/samegame.qml b/examples/declarative/tutorials/samegame/samegame2/samegame.qml index 8d837da..7e0bc0c 100644 --- a/examples/declarative/tutorials/samegame/samegame2/samegame.qml +++ b/examples/declarative/tutorials/samegame/samegame2/samegame.qml @@ -14,7 +14,7 @@ Rectangle { Image { id: background - anchors.fill: parent; source: "pics/background.png" + anchors.fill: parent; source: "../shared/pics/background.jpg" fillMode: Image.PreserveAspectCrop } } diff --git a/examples/declarative/tutorials/samegame/samegame3/Block.qml b/examples/declarative/tutorials/samegame/samegame3/Block.qml index 30a8d3a..7620104 100644 --- a/examples/declarative/tutorials/samegame/samegame3/Block.qml +++ b/examples/declarative/tutorials/samegame/samegame3/Block.qml @@ -8,11 +8,11 @@ Item { Image { id: img source: { if(type == 0){ - "pics/redStone.png"; + "../shared/pics/redStone.png"; } else if(type == 1) { - "pics/blueStone.png"; + "../shared/pics/blueStone.png"; } else { - "pics/greenStone.png"; + "../shared/pics/greenStone.png"; } } anchors.fill: parent diff --git a/examples/declarative/tutorials/samegame/samegame3/pics/background.png b/examples/declarative/tutorials/samegame/samegame3/pics/background.png deleted file mode 100644 index 3734a27..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame3/pics/background.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame3/pics/blueStone.png b/examples/declarative/tutorials/samegame/samegame3/pics/blueStone.png deleted file mode 100644 index 20e43c7..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame3/pics/blueStone.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame3/pics/greenStone.png b/examples/declarative/tutorials/samegame/samegame3/pics/greenStone.png deleted file mode 100644 index b568a19..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame3/pics/greenStone.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame3/pics/redStone.png b/examples/declarative/tutorials/samegame/samegame3/pics/redStone.png deleted file mode 100644 index 36b09a2..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame3/pics/redStone.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame3/samegame.qml b/examples/declarative/tutorials/samegame/samegame3/samegame.qml index c616397..168bf9b 100644 --- a/examples/declarative/tutorials/samegame/samegame3/samegame.qml +++ b/examples/declarative/tutorials/samegame/samegame3/samegame.qml @@ -13,7 +13,7 @@ Rectangle { Image { id: background - anchors.fill: parent; source: "pics/background.png" + anchors.fill: parent; source: "../shared/pics/background.jpg" fillMode: Image.PreserveAspectCrop } diff --git a/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml b/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml index 4c2ba43..85c2c93 100644 --- a/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml +++ b/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml @@ -16,11 +16,11 @@ Item { id:block Image { id: img source: { if(type == 0){ - "pics/redStone.png"; + "../../shared/pics/redStone.png"; } else if(type == 1) { - "pics/blueStone.png"; + "../../shared/pics/blueStone.png"; } else { - "pics/greenStone.png"; + "../../shared/pics/greenStone.png"; } } opacity: 0 @@ -38,11 +38,11 @@ Item { id:block velocity: 100; velocityDeviation:30; source: { if(type == 0){ - "pics/redStar.png"; + "../../shared/pics/redStar.png"; } else if (type == 1) { - "pics/blueStar.png"; + "../../shared/pics/blueStar.png"; } else { - "pics/greenStar.png"; + "../../shared/pics/greenStar.png"; } } } diff --git a/examples/declarative/tutorials/samegame/samegame4/content/pics/background.png b/examples/declarative/tutorials/samegame/samegame4/content/pics/background.png deleted file mode 100644 index 3734a27..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame4/content/pics/background.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame4/content/pics/blueStar.png b/examples/declarative/tutorials/samegame/samegame4/content/pics/blueStar.png deleted file mode 100644 index ff9588f..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame4/content/pics/blueStar.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame4/content/pics/blueStone.png b/examples/declarative/tutorials/samegame/samegame4/content/pics/blueStone.png deleted file mode 100644 index 20e43c7..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame4/content/pics/blueStone.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame4/content/pics/greenStar.png b/examples/declarative/tutorials/samegame/samegame4/content/pics/greenStar.png deleted file mode 100644 index cd06854..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame4/content/pics/greenStar.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame4/content/pics/greenStone.png b/examples/declarative/tutorials/samegame/samegame4/content/pics/greenStone.png deleted file mode 100644 index b568a19..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame4/content/pics/greenStone.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame4/content/pics/redStar.png b/examples/declarative/tutorials/samegame/samegame4/content/pics/redStar.png deleted file mode 100644 index 0a4dffe..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame4/content/pics/redStar.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame4/content/pics/redStone.png b/examples/declarative/tutorials/samegame/samegame4/content/pics/redStone.png deleted file mode 100644 index 36b09a2..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame4/content/pics/redStone.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame4/content/pics/star.png b/examples/declarative/tutorials/samegame/samegame4/content/pics/star.png deleted file mode 100644 index defbde5..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame4/content/pics/star.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame4/content/pics/yellowStone.png b/examples/declarative/tutorials/samegame/samegame4/content/pics/yellowStone.png deleted file mode 100644 index b1ce762..0000000 Binary files a/examples/declarative/tutorials/samegame/samegame4/content/pics/yellowStone.png and /dev/null differ diff --git a/examples/declarative/tutorials/samegame/samegame4/samegame.qml b/examples/declarative/tutorials/samegame/samegame4/samegame.qml index a228e60..c2e8018 100644 --- a/examples/declarative/tutorials/samegame/samegame4/samegame.qml +++ b/examples/declarative/tutorials/samegame/samegame4/samegame.qml @@ -12,7 +12,7 @@ Rectangle { Image { id: background - anchors.fill: parent; source: "content/pics/background.png" + anchors.fill: parent; source: "../shared/pics/background.jpg" fillMode: Image.PreserveAspectCrop } diff --git a/examples/declarative/tutorials/samegame/shared/pics/background.jpg b/examples/declarative/tutorials/samegame/shared/pics/background.jpg new file mode 100644 index 0000000..903d395 Binary files /dev/null and b/examples/declarative/tutorials/samegame/shared/pics/background.jpg differ diff --git a/examples/declarative/tutorials/samegame/shared/pics/blueStar.png b/examples/declarative/tutorials/samegame/shared/pics/blueStar.png new file mode 100644 index 0000000..ff9588f Binary files /dev/null and b/examples/declarative/tutorials/samegame/shared/pics/blueStar.png differ diff --git a/examples/declarative/tutorials/samegame/shared/pics/blueStone.png b/examples/declarative/tutorials/samegame/shared/pics/blueStone.png new file mode 100644 index 0000000..20e43c7 Binary files /dev/null and b/examples/declarative/tutorials/samegame/shared/pics/blueStone.png differ diff --git a/examples/declarative/tutorials/samegame/shared/pics/greenStar.png b/examples/declarative/tutorials/samegame/shared/pics/greenStar.png new file mode 100644 index 0000000..cd06854 Binary files /dev/null and b/examples/declarative/tutorials/samegame/shared/pics/greenStar.png differ diff --git a/examples/declarative/tutorials/samegame/shared/pics/greenStone.png b/examples/declarative/tutorials/samegame/shared/pics/greenStone.png new file mode 100644 index 0000000..b568a19 Binary files /dev/null and b/examples/declarative/tutorials/samegame/shared/pics/greenStone.png differ diff --git a/examples/declarative/tutorials/samegame/shared/pics/redStar.png b/examples/declarative/tutorials/samegame/shared/pics/redStar.png new file mode 100644 index 0000000..0a4dffe Binary files /dev/null and b/examples/declarative/tutorials/samegame/shared/pics/redStar.png differ diff --git a/examples/declarative/tutorials/samegame/shared/pics/redStone.png b/examples/declarative/tutorials/samegame/shared/pics/redStone.png new file mode 100644 index 0000000..36b09a2 Binary files /dev/null and b/examples/declarative/tutorials/samegame/shared/pics/redStone.png differ diff --git a/examples/declarative/tutorials/samegame/shared/pics/star.png b/examples/declarative/tutorials/samegame/shared/pics/star.png new file mode 100644 index 0000000..defbde5 Binary files /dev/null and b/examples/declarative/tutorials/samegame/shared/pics/star.png differ diff --git a/examples/declarative/tutorials/samegame/shared/pics/yellowStone.png b/examples/declarative/tutorials/samegame/shared/pics/yellowStone.png new file mode 100644 index 0000000..b1ce762 Binary files /dev/null and b/examples/declarative/tutorials/samegame/shared/pics/yellowStone.png differ -- cgit v0.12 From dd4079c6c465c80104ff0ea1cda681ed7cc18310 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 1 Mar 2010 13:09:11 +0100 Subject: Mac: using Qt to write plugins disables quit for 3rd party application The reason is that qt_init always installs/overwrites apple event handlers. So if the 3rd party app had already installed an event handler for kAEQuit, then it will be removed when the Qt plugin is loaded. This patch checks (in the carbon case) if event handlers already exists before installing new ones, or, in the cocoa case, avoids installing apple event handlers if the AA_MacPluginApplication is set. In other words, handling quit etc is seen as the responsibility of the app, and not the plugin. Task-number: QTBUG-8087 Reviewed-by: prasanth --- src/gui/kernel/qapplication_mac.mm | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qapplication_mac.mm b/src/gui/kernel/qapplication_mac.mm index e511c3a..babfc72 100644 --- a/src/gui/kernel/qapplication_mac.mm +++ b/src/gui/kernel/qapplication_mac.mm @@ -1222,9 +1222,16 @@ void qt_init(QApplicationPrivate *priv, int) #endif if (!app_proc_ae_handlerUPP) { app_proc_ae_handlerUPP = AEEventHandlerUPP(QApplicationPrivate::globalAppleEventProcessor); - for(uint i = 0; i < sizeof(app_apple_events) / sizeof(QMacAppleEventTypeSpec); ++i) - AEInstallEventHandler(app_apple_events[i].mac_class, app_apple_events[i].mac_id, - app_proc_ae_handlerUPP, SRefCon(qApp), false); + for(uint i = 0; i < sizeof(app_apple_events) / sizeof(QMacAppleEventTypeSpec); ++i) { + // Install apple event handler, but avoid overwriting an already + // existing handler (it means a 3rd party application has installed one): + SRefCon refCon = 0; + AEEventHandlerUPP current_handler = NULL; + AEGetEventHandler(app_apple_events[i].mac_class, app_apple_events[i].mac_id, ¤t_handler, &refCon, false); + if (!current_handler) + AEInstallEventHandler(app_apple_events[i].mac_class, app_apple_events[i].mac_id, + app_proc_ae_handlerUPP, SRefCon(qApp), false); + } } if (QApplicationPrivate::app_style) { @@ -2495,6 +2502,13 @@ void QApplicationPrivate::setupAppleEvents() // finished initialization, which appears to be just after [NSApplication run] has // started to execute. By setting up our apple events handlers this late, we override // the ones set up by NSApplication. + + // If Qt is used as a plugin, we let the 3rd party application handle events + // like quit and open file events. Otherwise, if we install our own handlers, we + // easily end up breaking functionallity the 3rd party application depend on: + if (QApplication::testAttribute(Qt::AA_MacPluginApplication)) + return; + QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate) *newDelegate = [QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate) sharedDelegate]; NSAppleEventManager *eventManager = [NSAppleEventManager sharedAppleEventManager]; [eventManager setEventHandler:newDelegate andSelector:@selector(appleEventQuit:withReplyEvent:) -- cgit v0.12 From 4795583b42577259499b34da07077f501e45ce42 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Mon, 1 Mar 2010 13:53:29 +0100 Subject: compile fix for WinCE do not include headers of disabled modules Reviewed-by: Paul Olav Tvete --- src/declarative/util/qdeclarativeutilmodule.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/declarative/util/qdeclarativeutilmodule.cpp b/src/declarative/util/qdeclarativeutilmodule.cpp index 2b8c7de..1f85b89 100644 --- a/src/declarative/util/qdeclarativeutilmodule.cpp +++ b/src/declarative/util/qdeclarativeutilmodule.cpp @@ -70,7 +70,9 @@ #include "qdeclarativetransitionmanager_p_p.h" #include "qdeclarativetransition_p.h" #include "qdeclarativeview.h" +#ifndef QT_NO_XMLPATTERNS #include "qdeclarativexmllistmodel_p.h" +#endif #include "qnumberformat_p.h" #include "qperformancelog_p_p.h" -- cgit v0.12 From af134d9860d9e5af5b7e9a938191451922cea857 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 1 Mar 2010 10:16:02 +0100 Subject: qDetectCPUFeatures: compile fix with namespaces --- src/corelib/tools/qsimd_p.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 44c1798..724f3e0 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -116,11 +116,10 @@ enum CPUFeatures { NEON = 0x100 }; +Q_CORE_EXPORT uint qDetectCPUFeatures(); QT_END_NAMESPACE QT_END_HEADER -Q_CORE_EXPORT uint qDetectCPUFeatures(); - #endif // QSIMD_P_H -- cgit v0.12 From 454d4fa2fbefabb54f7f567aaf01f2c1faa165f4 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Mon, 1 Mar 2010 14:01:51 +0100 Subject: build fix for WinCE only use xmlpatterns if Qt is configured to build it Reviewed-by: Paul Olav Tvete --- tools/qml/qml.pro | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/qml/qml.pro b/tools/qml/qml.pro index 9c9c398..9b68dbc 100644 --- a/tools/qml/qml.pro +++ b/tools/qml/qml.pro @@ -41,9 +41,11 @@ INSTALLS += target wince* { QT += scripttools \ xml \ - xmlpatterns \ phonon + contains(QT_CONFIG, xmlpatterns) { + QT += xmlpatterns + } contains(QT_CONFIG, webkit) { QT += webkit } -- cgit v0.12 From 82e224ee5e5388e8b5be186db6a60339e7b8fba3 Mon Sep 17 00:00:00 2001 From: ck Date: Mon, 1 Mar 2010 14:13:45 +0100 Subject: Fix compilation with namespace. --- src/corelib/tools/qsimd_p.h | 4 ++-- src/declarative/qml/qdeclarativebinding_p.h | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 44c1798..53593aa 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -117,10 +117,10 @@ enum CPUFeatures { }; +Q_CORE_EXPORT uint qDetectCPUFeatures(); + QT_END_NAMESPACE QT_END_HEADER -Q_CORE_EXPORT uint qDetectCPUFeatures(); - #endif // QSIMD_P_H diff --git a/src/declarative/qml/qdeclarativebinding_p.h b/src/declarative/qml/qdeclarativebinding_p.h index f66b9c7..ec5809d 100644 --- a/src/declarative/qml/qdeclarativebinding_p.h +++ b/src/declarative/qml/qdeclarativebinding_p.h @@ -130,8 +130,9 @@ protected: private: Q_DECLARE_PRIVATE(QDeclarativeBinding) }; -Q_DECLARE_METATYPE(QDeclarativeBinding*); QT_END_NAMESPACE +Q_DECLARE_METATYPE(QDeclarativeBinding*); + #endif // QDECLARATIVEBINDING_P_H -- cgit v0.12 From 244d4d5610ce288503a73d0aa86f257dce4e74e6 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 1 Mar 2010 14:15:17 +0100 Subject: compile fix with namespaces --- src/declarative/qml/qdeclarativebinding_p.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/declarative/qml/qdeclarativebinding_p.h b/src/declarative/qml/qdeclarativebinding_p.h index f66b9c7..ec5809d 100644 --- a/src/declarative/qml/qdeclarativebinding_p.h +++ b/src/declarative/qml/qdeclarativebinding_p.h @@ -130,8 +130,9 @@ protected: private: Q_DECLARE_PRIVATE(QDeclarativeBinding) }; -Q_DECLARE_METATYPE(QDeclarativeBinding*); QT_END_NAMESPACE +Q_DECLARE_METATYPE(QDeclarativeBinding*); + #endif // QDECLARATIVEBINDING_P_H -- cgit v0.12 From f3af7b746221cb44899f3e433659791f75255f21 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Mon, 1 Mar 2010 14:16:41 +0100 Subject: Ensure that a library path with a space in it gets quoted on Windows This was not happening when -L and -l was used and the path specified with -L was quoted. It would lose the quotes when combining it to get the full path for the library it found. Task-number: QTBUG-2433 Reviewed-by: Marius Storm-Olsen --- qmake/generators/win32/winmakefile.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index 9d3b4c6..0d03fa3 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -150,7 +150,10 @@ Win32MakefileGenerator::findLibraries(const QString &where) if(QMakeMetaInfo::libExists((*it).local() + Option::dir_sep + lib) || exists((*it).local() + Option::dir_sep + lib + extension)) { out = (*it).real() + Option::dir_sep + lib + extension; - break; + if (out.contains(QLatin1Char(' '))) { + out.prepend(QLatin1Char('\"')); + out.append(QLatin1Char('\"')); + } } } } -- cgit v0.12 From 283b77b4e956540ac9370cd0e05f817b14a134d1 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Mon, 1 Mar 2010 14:26:10 +0100 Subject: Readd a line that got removed by accident in previous change A line got removed by accident in the change f3af7b746221cb44899f3e433659791f75255f21, this patch readds it back. Reviewed-by: TrustMe --- qmake/generators/win32/winmakefile.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index 0d03fa3..c36cc9c 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -154,6 +154,7 @@ Win32MakefileGenerator::findLibraries(const QString &where) out.prepend(QLatin1Char('\"')); out.append(QLatin1Char('\"')); } + break; } } } -- cgit v0.12 From a5e5f9925e7f945e6b95452662be6981b41adecb Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Mon, 1 Mar 2010 14:27:20 +0100 Subject: QHostInfo: Forgot to free some stuff on application exit. Reviewed-by: TrustMe --- src/network/kernel/qhostinfo.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index 9de499e..b23f6db 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -451,6 +451,11 @@ QHostInfoLookupManager::QHostInfoLookupManager() : mutex(QMutex::Recursive), was QHostInfoLookupManager::~QHostInfoLookupManager() { wasDeleted = true; + + // don't qDeleteAll currentLookups, the QThreadPool has ownership + qDeleteAll(postponedLookups); + qDeleteAll(scheduledLookups); + qDeleteAll(finishedLookups); } void QHostInfoLookupManager::work() -- cgit v0.12 From 5255c09fceddf5a1b79c6016f51c0d721c599c9b Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 1 Mar 2010 14:55:25 +0100 Subject: handle WM_GESTURE events on WinCE, only if QT_WINCE_GESTURES is defined Otherwise, we get annoying qWarning messages. Reviewed-by: thartman --- src/gui/kernel/qapplication_win.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp index aac834d..da6869d 100644 --- a/src/gui/kernel/qapplication_win.cpp +++ b/src/gui/kernel/qapplication_win.cpp @@ -2524,6 +2524,7 @@ LRESULT CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam } result = false; break; +#if !defined(Q_WS_WINCE) || defined(QT_WINCE_GESTURES) case WM_GESTURE: { GESTUREINFO gi; memset(&gi, 0, sizeof(GESTUREINFO)); @@ -2556,6 +2557,7 @@ LRESULT CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam result = true; break; } +#endif // !defined(Q_WS_WINCE) || defined(QT_WINCE_GESTURES) default: result = false; // event was not processed break; -- cgit v0.12 From 4be79721e6db9e460d00eb13a0736be8eca36721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Abecasis?= Date: Mon, 1 Mar 2010 15:07:02 +0100 Subject: Fix windowflags example --- examples/widgets/windowflags/controllerwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/widgets/windowflags/controllerwindow.cpp b/examples/widgets/windowflags/controllerwindow.cpp index a1e5455..fb82b8f 100644 --- a/examples/widgets/windowflags/controllerwindow.cpp +++ b/examples/widgets/windowflags/controllerwindow.cpp @@ -149,7 +149,7 @@ void ControllerWindow::createTypeGroupBox() splashScreenRadioButton = createRadioButton(tr("Splash screen")); windowRadioButton->setChecked(true); - QVBoxLayout *layout = new QGridLayout; + QGridLayout *layout = new QGridLayout; layout->addWidget(windowRadioButton, 0, 0); layout->addWidget(dialogRadioButton, 1, 0); layout->addWidget(sheetRadioButton, 2, 0); -- cgit v0.12 From d04f5336f769d9e5d2f9105e1da4a7d23ea91795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Mon, 1 Mar 2010 15:08:26 +0100 Subject: Fixed qDrawPixmaps() to draw on integer coordinates on Mac OS X. For some reason, doing a QPainter::translate(-0.5, 0) and then QPainter::drawPixmap(0.5, 0, ...) doesn't result in a zero transformation on Mac OS X. This is a workaround where we calculate the device coords ourselves if it's only a simple translate operation. Task-number: QTBUG-8455 Reviewed-by: Kim --- src/gui/painting/qdrawutil.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/gui/painting/qdrawutil.cpp b/src/gui/painting/qdrawutil.cpp index 5619a2e..35bf2bf 100644 --- a/src/gui/painting/qdrawutil.cpp +++ b/src/gui/painting/qdrawutil.cpp @@ -1361,14 +1361,21 @@ void qDrawPixmaps(QPainter *painter, const QDrawPixmaps::Data *drawingData, int for (int i = 0; i < dataCount; ++i) { QTransform transform = oldTransform; - transform.translate(drawingData[i].point.x(), drawingData[i].point.y()); - transform.rotate(drawingData[i].rotation); - painter->setOpacity(oldOpacity * drawingData[i].opacity); + qreal xOffset = 0; + qreal yOffset = 0; + if (drawingData[i].rotation == 0) { + xOffset = drawingData[i].point.x(); + yOffset = drawingData[i].point.y(); + } else { + transform.translate(drawingData[i].point.x(), drawingData[i].point.y()); + transform.rotate(drawingData[i].rotation); + } painter->setTransform(transform); + painter->setOpacity(oldOpacity * drawingData[i].opacity); qreal w = drawingData[i].scaleX * drawingData[i].source.width(); qreal h = drawingData[i].scaleY * drawingData[i].source.height(); - painter->drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, drawingData[i].source); + painter->drawPixmap(QRectF(-0.5 * w + xOffset, -0.5 * h + yOffset, w, h), pixmap, drawingData[i].source); } painter->setOpacity(oldOpacity); -- cgit v0.12 From 72da039e54a62bf3a481fefc753e0e50ba75df57 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Mon, 1 Mar 2010 15:17:42 +0100 Subject: Added static method isValidColor to QColor. Reviewed-by: Gunnar Sletta --- src/gui/painting/qcolor.cpp | 28 +++++++++++++++++++++++++--- src/gui/painting/qcolor.h | 3 +++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/gui/painting/qcolor.cpp b/src/gui/painting/qcolor.cpp index d6d288e..1b43161 100644 --- a/src/gui/painting/qcolor.cpp +++ b/src/gui/painting/qcolor.cpp @@ -532,25 +532,46 @@ QString QColor::name() const void QColor::setNamedColor(const QString &name) { + if (!setColorFromString(name)) + qWarning("QColor::setNamedColor: Unknown color name '%s'", name.toLatin1().constData()); +} + +/*! + Checks if the \a name is a valid color name. The algorithm used is the same as with + \a setNamedColor(). + + \return true if the color name is valid, false otherwise. + + \sa setNamedColor() +*/ +bool QColor::isValidColor(const QString &name) +{ + return QColor().setColorFromString(name); +} + +bool QColor::setColorFromString(const QString &name) +{ if (name.isEmpty()) { invalidate(); - return; + return false; } if (name.startsWith(QLatin1Char('#'))) { QRgb rgb; if (qt_get_hex_rgb(name.constData(), name.length(), &rgb)) { setRgb(rgb); + return true; } else { invalidate(); + return false; } - return; } #ifndef QT_NO_COLORNAMES QRgb rgb; if (qt_get_named_rgb(name.constData(), name.length(), &rgb)) { setRgba(rgb); + return true; } else #endif { @@ -561,11 +582,12 @@ void QColor::setNamedColor(const QString &name) && QX11Info::display() && XParseColor(QX11Info::display(), QX11Info::appColormap(), name.toLatin1().constData(), &result)) { setRgb(result.red >> 8, result.green >> 8, result.blue >> 8); + return true; } else #endif { - qWarning("QColor::setNamedColor: Unknown color name '%s'", name.toLatin1().constData()); invalidate(); + return false; } } } diff --git a/src/gui/painting/qcolor.h b/src/gui/painting/qcolor.h index 332dc25..0ac828d 100644 --- a/src/gui/painting/qcolor.h +++ b/src/gui/painting/qcolor.h @@ -225,6 +225,8 @@ public: QT3_SUPPORT uint pixel(int screen = -1) const; #endif + static bool isValidColor(const QString &name); + private: #ifndef QT3_SUPPORT // do not allow a spec to be used as an alpha value @@ -232,6 +234,7 @@ private: #endif void invalidate(); + bool setColorFromString(const QString &name); Spec cspec; union { -- cgit v0.12 From 51bfbc326be268f552650dc30408479150a36744 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Mon, 1 Mar 2010 15:21:32 +0100 Subject: Extended gesture autotest. Make sure partial gestures do not propagate further if an item that expects partial gestures received it. Task-number: resulted from QTBUG-6876 Reviewed-by: trustme --- src/gui/graphicsview/qgraphicsscene.cpp | 7 ++++- tests/auto/gestures/tst_gestures.cpp | 53 +++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index a72761a..6bc02cc 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -6003,7 +6003,8 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event) cachedTargetItems = cachedItemGestures.keys(); qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst); DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:" - << "Conflicting gestures:" << conflictedGestures; + << "Normal gestures:" << normalGestures + << "Conflicting gestures:" << conflictedGestures; // deliver conflicted gestures as override events AND remember // initial gesture targets @@ -6080,6 +6081,10 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event) const Qt::GestureFlags flags = d->gestureContext.value(gesture->gestureType()); if (flags & Qt::IgnoredGesturesPropagateToParent) parentPropagatedGestures.insert(gesture); + } else { + DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:" + << "no target for" << gesture << "at" + << gesture->hotSpot() << gesture->d_func()->sceneHotSpot; } } qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst); diff --git a/tests/auto/gestures/tst_gestures.cpp b/tests/auto/gestures/tst_gestures.cpp index a1afa0a..f8ecca3 100644 --- a/tests/auto/gestures/tst_gestures.cpp +++ b/tests/auto/gestures/tst_gestures.cpp @@ -354,6 +354,7 @@ private slots: void deleteGestureTargetItem_data(); void deleteGestureTargetItem(); void viewportCoordinates(); + void partialGesturePropagation(); }; tst_Gestures::tst_Gestures() @@ -1896,5 +1897,57 @@ void tst_Gestures::viewportCoordinates() QVERIFY(item1->gestureEventsReceived != 0); } +void tst_Gestures::partialGesturePropagation() +{ + QGraphicsScene scene; + QGraphicsView view(&scene); + view.setWindowFlags(Qt::X11BypassWindowManagerHint); + + GestureItem *item1 = new GestureItem("item1"); + item1->grabGesture(CustomGesture::GestureType); + item1->setZValue(8); + scene.addItem(item1); + + GestureItem *item2 = new GestureItem("item2[partial]"); + item2->grabGesture(CustomGesture::GestureType, Qt::ReceivePartialGestures); + item2->setZValue(6); + scene.addItem(item2); + + GestureItem *item3 = new GestureItem("item3"); + item3->grabGesture(CustomGesture::GestureType); + item3->setZValue(4); + scene.addItem(item3); + + GestureItem *item4 = new GestureItem("item4[partial]"); + item4->grabGesture(CustomGesture::GestureType, Qt::ReceivePartialGestures); + item4->setZValue(2); + scene.addItem(item4); + + view.show(); + QTest::qWaitForWindowShown(&view); + view.ensureVisible(scene.sceneRect()); + + view.viewport()->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren); + + item1->ignoredUpdatedGestures << CustomGesture::GestureType; + + CustomEvent event; + event.hotSpot = mapToGlobal(QPointF(5, 5), item1, &view); + event.hasHotSpot = true; + sendCustomGesture(&event, item1, &scene); + + static const int TotalGestureEventsCount = CustomGesture::SerialFinishedThreshold - CustomGesture::SerialStartedThreshold + 1; + + QCOMPARE(item1->gestureOverrideEventsReceived, 1); + QCOMPARE(item2->gestureOverrideEventsReceived, 1); + QCOMPARE(item3->gestureOverrideEventsReceived, 1); + QCOMPARE(item4->gestureOverrideEventsReceived, 1); + + QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount); + QCOMPARE(item2->gestureEventsReceived, TotalGestureEventsCount-2); // except for started and finished + QCOMPARE(item3->gestureEventsReceived, 0); + QCOMPARE(item4->gestureEventsReceived, 0); +} + QTEST_MAIN(tst_Gestures) #include "tst_gestures.moc" -- cgit v0.12 From 52c486156287bdfb67ed3765952f5c5a2cd0c318 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 1 Mar 2010 15:20:24 +0100 Subject: Use QList::reserve() in QDataStream>>QList Reviewed-by: Denis Dzyubenko --- src/corelib/io/qdatastream.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/corelib/io/qdatastream.h b/src/corelib/io/qdatastream.h index ec4ba2f..222ba8f 100644 --- a/src/corelib/io/qdatastream.h +++ b/src/corelib/io/qdatastream.h @@ -243,6 +243,7 @@ QDataStream& operator>>(QDataStream& s, QList& l) l.clear(); quint32 c; s >> c; + l.reserve(c); for(quint32 i = 0; i < c; ++i) { T t; -- cgit v0.12 From a76c8424dab298c2fa36226f47bf7ac6f7e4014a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Mon, 1 Mar 2010 15:28:36 +0100 Subject: Fixed qDrawPixmaps() to draw on integer coordinates on Mac OS X. This is the 4.7 port of d04f5336f769d9e5d2f9105e1da4a7d23ea91795. Task-number: related to QTBUG-8455 Reviewed-by: Kim --- src/gui/painting/qpainter.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index dc96c17..9d83718 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -8933,8 +8933,15 @@ void QPainter::drawPixmapFragments(const Fragment *fragments, int fragmentCount, for (int i = 0; i < fragmentCount; ++i) { QTransform transform = oldTransform; - transform.translate(fragments[i].x, fragments[i].y); - transform.rotate(fragments[i].rotation); + qreal xOffset = 0; + qreal yOffset = 0; + if (fragments[i].rotation == 0) { + xOffset = fragments[i].x; + yOffset = fragments[i].y; + } else { + transform.translate(fragments[i].x, fragments[i].y); + transform.rotate(fragments[i].rotation); + } setOpacity(oldOpacity * fragments[i].opacity); setTransform(transform); @@ -8942,7 +8949,7 @@ void QPainter::drawPixmapFragments(const Fragment *fragments, int fragmentCount, qreal h = fragments[i].scaleY * fragments[i].height; QRectF sourceRect(fragments[i].sourceLeft, fragments[i].sourceTop, fragments[i].width, fragments[i].height); - drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, sourceRect); + drawPixmap(QRectF(-0.5 * w + xOffset, -0.5 * h + yOffset, w, h), pixmap, sourceRect); } setOpacity(oldOpacity); -- cgit v0.12 From 2fa8c8d4ddc162297a05f2908e0d86eb2c738153 Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Mon, 1 Mar 2010 15:36:00 +0100 Subject: Doc: Rephrase documentation for QColor::isValidColor and add \since 4.7. --- src/gui/painting/qcolor.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gui/painting/qcolor.cpp b/src/gui/painting/qcolor.cpp index 1b43161..0b735a2 100644 --- a/src/gui/painting/qcolor.cpp +++ b/src/gui/painting/qcolor.cpp @@ -537,11 +537,13 @@ void QColor::setNamedColor(const QString &name) } /*! - Checks if the \a name is a valid color name. The algorithm used is the same as with - \a setNamedColor(). + \since 4.7 - \return true if the color name is valid, false otherwise. + Returns true if the \a name is a valid color name and can + be used to construct a valid QColor object, otherwise returns + false. + The algorithm used is the same as with \a setNamedColor(). \sa setNamedColor() */ bool QColor::isValidColor(const QString &name) -- cgit v0.12 From 65f993d679140fb2dc29b48c9d9d8d2fc5af893d Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 1 Mar 2010 15:21:14 +0100 Subject: QObject: fix crash when deleteing the receiver object withing a DirectConncetion involving two threads. We did not set the sender(), but we tried to reset it anyway. Task-number: QTBUG-7935 Reviewed-by: Brad --- src/corelib/kernel/qobject.cpp | 17 ++++++++++------- tests/auto/qobject/tst_qobject.cpp | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 5298fff..689e44c 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -3264,12 +3264,14 @@ void QMetaObject::activate(QObject *sender, const QMetaObject *m, int local_sign const int method = c->method; QObjectPrivate::Sender currentSender; - currentSender.sender = sender; - currentSender.signal = signal_absolute_index; - currentSender.ref = 1; + const bool receiverInSameThread = currentThreadData == receiver->d_func()->threadData; QObjectPrivate::Sender *previousSender = 0; - if (currentThreadData == receiver->d_func()->threadData) + if (receiverInSameThread) { + currentSender.sender = sender; + currentSender.signal = signal_absolute_index; + currentSender.ref = 1; previousSender = QObjectPrivate::setCurrentSender(receiver, ¤tSender); + } locker.unlock(); if (qt_signal_spy_callback_set.slot_begin_callback != 0) { @@ -3285,8 +3287,8 @@ void QMetaObject::activate(QObject *sender, const QMetaObject *m, int local_sign metacall(receiver, QMetaObject::InvokeMetaMethod, method, argv ? argv : empty_argv); } QT_CATCH(...) { locker.relock(); - - QObjectPrivate::resetCurrentSender(receiver, ¤tSender, previousSender); + if (receiverInSameThread) + QObjectPrivate::resetCurrentSender(receiver, ¤tSender, previousSender); --connectionLists->inUse; Q_ASSERT(connectionLists->inUse >= 0); @@ -3301,7 +3303,8 @@ void QMetaObject::activate(QObject *sender, const QMetaObject *m, int local_sign locker.relock(); - QObjectPrivate::resetCurrentSender(receiver, ¤tSender, previousSender); + if (receiverInSameThread) + QObjectPrivate::resetCurrentSender(receiver, ¤tSender, previousSender); if (connectionLists->orphaned) break; diff --git a/tests/auto/qobject/tst_qobject.cpp b/tests/auto/qobject/tst_qobject.cpp index 4fa6aaa..985dfa4 100644 --- a/tests/auto/qobject/tst_qobject.cpp +++ b/tests/auto/qobject/tst_qobject.cpp @@ -2647,6 +2647,16 @@ void tst_QObject::installEventFilter() QVERIFY(spy.eventList().isEmpty()); } +class EmitThread : public QThread +{ Q_OBJECT +public: + void run(void) { + emit work(); + } +signals: + void work(); +}; + class DeleteObject : public QObject { Q_OBJECT @@ -2712,6 +2722,16 @@ void tst_QObject::deleteSelfInSlot() QVERIFY(thread.wait(10000)); } + + { + EmitThread sender; + DeleteObject *receiver = new DeleteObject(); + connect(&sender, SIGNAL(work()), receiver, SLOT(deleteSelf()), Qt::DirectConnection); + QPointer p = receiver; + sender.start(); + QVERIFY(sender.wait(10000)); + QVERIFY(p.isNull()); + } } class DisconnectObject : public QObject -- cgit v0.12 From 31f2d97e28dff1a72511ab1ef7737e5f78d4cf66 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 1 Mar 2010 12:40:33 +0100 Subject: QMetaObject::invokeMethod: print a warning if the method is not found. Also adapt QTestLib not to call invokeMethod on unexisting method to avoid warnings Task-number: QTBUG-7331 Reviewed-by: Brad --- src/corelib/kernel/qmetaobject.cpp | 5 ++++- src/testlib/qtestcase.cpp | 28 +++++++++++++++++++++------- tests/auto/qmetaobject/tst_qmetaobject.cpp | 13 +++++++++++++ 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index be1b2ae..ecffe99 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -1137,8 +1137,11 @@ bool QMetaObject::invokeMethod(QObject *obj, idx = obj->metaObject()->indexOfMethod(norm.constData()); } - if (idx < 0 || idx >= obj->metaObject()->methodCount()) + if (idx < 0 || idx >= obj->metaObject()->methodCount()) { + qWarning("QMetaObject::invokeMethod: No such method %s::%s", + obj->metaObject()->className(), sig.constData()); return false; + } QMetaMethod method = obj->metaObject()->method(idx); return method.invoke(obj, type, ret, val0, val1, val2, val3, val4, val5, val6, val7, val8, val9); diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index 5c9dd55..4590f17 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -877,6 +877,19 @@ int qt_snprintf(char *str, int size, const char *format, ...) return res; } +/*! \internal + Invoke a method of the object without generating warning if the method does not exist + */ +static void invokeMethod(QObject *obj, const char *methodName) +{ + const QMetaObject *metaObject = obj->metaObject(); + int funcIndex = metaObject->indexOfMethod(methodName); + if (funcIndex >= 0) { + QMetaMethod method = metaObject->method(funcIndex); + method.invoke(obj, Qt::DirectConnection); + } +} + bool Q_TESTLIB_EXPORT defaultKeyVerbose() { if (keyVerbose == -1) { @@ -1213,7 +1226,7 @@ static void qInvokeTestMethodDataEntry(char *slot) bool invokeOk; do { QTestResult::setCurrentTestLocation(QTestResult::InitFunc); - QMetaObject::invokeMethod(QTest::currentTestObject, "init"); + invokeMethod(QTest::currentTestObject, "init()"); if (QTestResult::skipCurrentTest()) break; @@ -1233,7 +1246,7 @@ static void qInvokeTestMethodDataEntry(char *slot) QTestResult::addFailure("Unable to execute slot", __FILE__, __LINE__); QTestResult::setCurrentTestLocation(QTestResult::CleanupFunc); - QMetaObject::invokeMethod(QTest::currentTestObject, "cleanup"); + invokeMethod(QTest::currentTestObject, "cleanup()"); QTestResult::setCurrentTestLocation(QTestResult::NoWhere); // If this test method has a benchmark, repeat until all measurements are @@ -1300,8 +1313,9 @@ static bool qInvokeTestMethod(const char *slotName, const char *data=0) if (curGlobalDataIndex == 0) { QTestResult::setCurrentTestLocation(QTestResult::DataFunc); - QTest::qt_snprintf(member, 512, "%s_data", slot); - QMetaObject::invokeMethod(QTest::currentTestObject, member, Qt::DirectConnection); + QTest::qt_snprintf(member, 512, "%s_data()", slot); + invokeMethod(QTest::currentTestObject, member); + // if we encounter a SkipAll in the _data slot, we skip the whole // testfunction, no matter how much global data exists if (QTestResult::skipCurrentTest()) { @@ -1466,11 +1480,11 @@ static void qInvokeTestMethods(QObject *testObject) QTestResult::setCurrentTestFunction("initTestCase"); QTestResult::setCurrentTestLocation(QTestResult::DataFunc); QTestTable::globalTestTable(); - QMetaObject::invokeMethod(testObject, "initTestCase_data", Qt::DirectConnection); + invokeMethod(testObject, "initTestCase_data()"); if (!QTestResult::skipCurrentTest() && !QTest::currentTestFailed()) { QTestResult::setCurrentTestLocation(QTestResult::InitFunc); - QMetaObject::invokeMethod(testObject, "initTestCase"); + invokeMethod(testObject, "initTestCase()"); // finishedCurrentTestFunction() resets QTestResult::testFailed(), so use a local copy. const bool previousFailed = QTestResult::testFailed(); @@ -1498,7 +1512,7 @@ static void qInvokeTestMethods(QObject *testObject) QTestResult::setSkipCurrentTest(false); QTestResult::setCurrentTestFunction("cleanupTestCase"); - QMetaObject::invokeMethod(testObject, "cleanupTestCase"); + invokeMethod(testObject, "cleanupTestCase()"); } QTestResult::finishedCurrentTestFunction(); QTestResult::setCurrentTestFunction(0); diff --git a/tests/auto/qmetaobject/tst_qmetaobject.cpp b/tests/auto/qmetaobject/tst_qmetaobject.cpp index 15b6204..bd54975 100644 --- a/tests/auto/qmetaobject/tst_qmetaobject.cpp +++ b/tests/auto/qmetaobject/tst_qmetaobject.cpp @@ -513,6 +513,19 @@ void tst_QMetaObject::invokeMetaMember() QVERIFY(QMetaObject::invokeMethod(&obj, "sig1", Q_RETURN_ARG(QString, exp), Q_ARG(QString, "hehe"))); QCOMPARE(exp, QString("yessir")); QCOMPARE(obj.slotResult, QString("sl1:hehe")); + + QTest::ignoreMessage(QtWarningMsg, "QMetaObject::invokeMethod: No such method QtTestObject::doesNotExist()"); + QVERIFY(!QMetaObject::invokeMethod(&obj, "doesNotExist")); + QTest::ignoreMessage(QtWarningMsg, "QMetaObject::invokeMethod: No such method QtTestObject::sl1(QString)(QString)"); + QVERIFY(!QMetaObject::invokeMethod(&obj, "sl1(QString)", Q_ARG(QString, "arg"))); + QTest::ignoreMessage(QtWarningMsg, "QMetaObject::invokeMethod: No such method QtTestObject::sl3(QString)"); + QVERIFY(!QMetaObject::invokeMethod(&obj, "sl3", Q_ARG(QString, "arg"))); + QTest::ignoreMessage(QtWarningMsg, "QMetaObject::invokeMethod: No such method QtTestObject::sl1(QString,QString,QString)"); + QVERIFY(!QMetaObject::invokeMethod(&obj, "sl1", Q_ARG(QString, "arg"), Q_ARG(QString, "arg"), Q_ARG(QString, "arg"))); + + //should not have changed since last test. + QCOMPARE(exp, QString("yessir")); + QCOMPARE(obj.slotResult, QString("sl1:hehe")); } void tst_QMetaObject::invokeQueuedMetaMember() -- cgit v0.12 From 9d38d8005876d808f499591d1427b227f4b9764f Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Mon, 1 Mar 2010 11:11:30 +0100 Subject: Avoid conversion between JavaScriptCore String type and QString Use JSC::UString internally. Only when the public API demands it should a JSC::UString be converted to a QString. Reviewed-by: Jedrzej Nowacki --- src/script/api/qscriptengine.cpp | 10 +++++----- src/script/api/qscriptengine_p.h | 20 ++++++++++---------- src/script/api/qscriptvalue.cpp | 2 +- src/script/api/qscriptvalue_p.h | 4 ++-- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index d2e96d1..a9d6fb1 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -563,7 +563,7 @@ JSC::JSValue JSC_HOST_CALL functionDisconnect(JSC::ExecState *exec, JSC::JSObjec slot = arg1; else { QScript::SaveFrameHelper saveFrame(engine, exec); - QString propertyName(QScriptEnginePrivate::toString(exec, arg1)); + JSC::UString propertyName = QScriptEnginePrivate::toString(exec, arg1); slot = QScriptEnginePrivate::property(exec, arg0, propertyName, QScriptValue::ResolvePrototype); } } @@ -645,7 +645,7 @@ JSC::JSValue JSC_HOST_CALL functionConnect(JSC::ExecState *exec, JSC::JSObject * slot = arg1; else { QScript::SaveFrameHelper saveFrame(engine, exec); - QString propertyName = QScriptEnginePrivate::toString(exec, arg1); + JSC::UString propertyName = QScriptEnginePrivate::toString(exec, arg1); slot = QScriptEnginePrivate::property(exec, arg0, propertyName, QScriptValue::ResolvePrototype); } } @@ -1580,9 +1580,9 @@ QRegExp QScriptEnginePrivate::toRegExp(JSC::ExecState *exec, JSC::JSValue value) { if (!isRegExp(value)) return QRegExp(); - QString pattern = toString(exec, property(exec, value, QLatin1String("source"), QScriptValue::ResolvePrototype)); + QString pattern = toString(exec, property(exec, value, "source", QScriptValue::ResolvePrototype)); Qt::CaseSensitivity kase = Qt::CaseSensitive; - if (toBool(exec, property(exec, value, QLatin1String("ignoreCase"), QScriptValue::ResolvePrototype))) + if (toBool(exec, property(exec, value, "ignoreCase", QScriptValue::ResolvePrototype))) kase = Qt::CaseInsensitive; return QRegExp(pattern, kase, QRegExp::RegExp2); } @@ -1637,7 +1637,7 @@ JSC::JSValue QScriptEnginePrivate::propertyHelper(JSC::ExecState *exec, JSC::JSV } if (!result && (resolveMode & QScriptValue::ResolveScope)) { // ### check if it's a function object and look in the scope chain - JSC::JSValue scope = property(exec, value, QString::fromLatin1("__qt_scope__"), QScriptValue::ResolveLocal); + JSC::JSValue scope = property(exec, value, "__qt_scope__", QScriptValue::ResolveLocal); if (isObject(scope)) result = property(exec, scope, id, resolveMode); } diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h index d0d020a..a05e12c 100644 --- a/src/script/api/qscriptengine_p.h +++ b/src/script/api/qscriptengine_p.h @@ -165,7 +165,7 @@ public: static inline qint32 toInt32(JSC::ExecState *, JSC::JSValue); static inline quint32 toUInt32(JSC::ExecState *, JSC::JSValue); static inline quint16 toUInt16(JSC::ExecState *, JSC::JSValue); - static inline QString toString(JSC::ExecState *, JSC::JSValue); + static inline JSC::UString toString(JSC::ExecState *, JSC::JSValue); static inline QDateTime toDateTime(JSC::ExecState *, JSC::JSValue); #ifndef QT_NO_REGEXP @@ -181,8 +181,8 @@ public: static inline JSC::JSValue property(JSC::ExecState*, JSC::JSValue, quint32 index, int resolveMode = QScriptValue::ResolvePrototype); static JSC::JSValue propertyHelper(JSC::ExecState*, JSC::JSValue, quint32, int resolveMode); - static inline JSC::JSValue property(JSC::ExecState*, JSC::JSValue, const QString &, int resolveMode); - static inline void setProperty(JSC::ExecState*, JSC::JSValue object, const QString &name, JSC::JSValue, + static inline JSC::JSValue property(JSC::ExecState*, JSC::JSValue, const JSC::UString &, int resolveMode); + static inline void setProperty(JSC::ExecState*, JSC::JSValue object, const JSC::UString &name, JSC::JSValue, const QScriptValue::PropertyFlags &flags = QScriptValue::KeepExistingFlags); static void setProperty(JSC::ExecState*, JSC::JSValue object, const JSC::Identifier &id, JSC::JSValue, const QScriptValue::PropertyFlags &flags = QScriptValue::KeepExistingFlags); @@ -191,7 +191,7 @@ public: static QScriptValue::PropertyFlags propertyFlags(JSC::ExecState*, JSC::JSValue value, const JSC::Identifier &id, const QScriptValue::ResolveFlags &mode); static inline QScriptValue::PropertyFlags propertyFlags(JSC::ExecState*, JSC::JSValue value, - const QString &name, const QScriptValue::ResolveFlags &mode); + const JSC::UString &name, const QScriptValue::ResolveFlags &mode); static bool convertValue(JSC::ExecState*, JSC::JSValue value, int type, void *ptr); @@ -629,7 +629,7 @@ inline void QScriptValuePrivate::initFrom(const QString &value) engine->registerScriptValue(this); } -inline JSC::JSValue QScriptEnginePrivate::property(JSC::ExecState *exec, JSC::JSValue value, const QString &name, int resolveMode) +inline JSC::JSValue QScriptEnginePrivate::property(JSC::ExecState *exec, JSC::JSValue value, const JSC::UString &name, int resolveMode) { return property(exec, value, JSC::Identifier(exec, name), resolveMode); } @@ -655,13 +655,13 @@ inline JSC::JSValue QScriptEnginePrivate::property(JSC::ExecState *exec, JSC::JS } inline QScriptValue::PropertyFlags QScriptEnginePrivate::propertyFlags(JSC::ExecState *exec, JSC::JSValue value, - const QString &name, + const JSC::UString &name, const QScriptValue::ResolveFlags &mode) { return propertyFlags(exec, value, JSC::Identifier(exec, name), mode); } -inline void QScriptEnginePrivate::setProperty(JSC::ExecState *exec, JSC::JSValue objectValue, const QString &name, +inline void QScriptEnginePrivate::setProperty(JSC::ExecState *exec, JSC::JSValue objectValue, const JSC::UString &name, JSC::JSValue value, const QScriptValue::PropertyFlags &flags) { setProperty(exec, objectValue, JSC::Identifier(exec, name), value, flags); @@ -677,7 +677,7 @@ inline JSC::JSValue QScriptValuePrivate::property(quint32 index, int resolveMode return QScriptEnginePrivate::property(engine->currentFrame, jscValue, index, resolveMode); } -inline JSC::JSValue QScriptValuePrivate::property(const QString &name, int resolveMode) const +inline JSC::JSValue QScriptValuePrivate::property(const JSC::UString &name, int resolveMode) const { JSC::ExecState *exec = engine->currentFrame; return QScriptEnginePrivate::property(exec, jscValue, JSC::Identifier(exec, name), resolveMode); @@ -701,7 +701,7 @@ inline void QScriptValuePrivate::setProperty(quint32 index, const JSC::JSValue & QScriptEnginePrivate::setProperty(engine->currentFrame, jscValue, index, value, flags); } -inline void QScriptValuePrivate::setProperty(const QString &name, const JSC::JSValue &value, +inline void QScriptValuePrivate::setProperty(const JSC::UString &name, const JSC::JSValue &value, const QScriptValue::PropertyFlags &flags) { JSC::ExecState *exec = engine->currentFrame; @@ -919,7 +919,7 @@ inline quint16 QScriptEnginePrivate::toUInt16(JSC::ExecState *exec, JSC::JSValue return QScript::ToUInt16(toNumber(exec, value)); } -inline QString QScriptEnginePrivate::toString(JSC::ExecState *exec, JSC::JSValue value) +inline JSC::UString QScriptEnginePrivate::toString(JSC::ExecState *exec, JSC::JSValue value) { JSC::JSValue savedException; saveException(exec, &savedException); diff --git a/src/script/api/qscriptvalue.cpp b/src/script/api/qscriptvalue.cpp index 7f1fdaa..414a45c 100644 --- a/src/script/api/qscriptvalue.cpp +++ b/src/script/api/qscriptvalue.cpp @@ -562,7 +562,7 @@ QScriptValue QScriptValue::scope() const if (!d || !d->isObject()) return QScriptValue(); // ### make hidden property - JSC::JSValue result = d->property(QLatin1String("__qt_scope__"), QScriptValue::ResolveLocal); + JSC::JSValue result = d->property("__qt_scope__", QScriptValue::ResolveLocal); return d->engine->scriptValueFromJSCValue(result); } diff --git a/src/script/api/qscriptvalue_p.h b/src/script/api/qscriptvalue_p.h index 77b7330..089b923 100644 --- a/src/script/api/qscriptvalue_p.h +++ b/src/script/api/qscriptvalue_p.h @@ -88,8 +88,8 @@ public: inline JSC::JSValue property(const JSC::Identifier &id, int resolveMode) const; inline JSC::JSValue property(quint32 index, int resolveMode) const; - inline JSC::JSValue property(const QString &, int resolveMode) const; - inline void setProperty(const QString &name, const JSC::JSValue &value, + inline JSC::JSValue property(const JSC::UString &, int resolveMode) const; + inline void setProperty(const JSC::UString &name, const JSC::JSValue &value, const QScriptValue::PropertyFlags &flags); inline void setProperty(const JSC::Identifier &id, const JSC::JSValue &value, const QScriptValue::PropertyFlags &flags); -- cgit v0.12 From d628a467159b79c85885acb21510cb1e646a968b Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Mon, 1 Mar 2010 11:14:01 +0100 Subject: Perform latin1 conversion directly on JSC::UString This conversion needs to be as fast as possible since it's performed every time you access a QObject property from QtScript. Hence, we should avoid going via QString and instead do the conversion ourselves. Reviewed-by: Jedrzej Nowacki --- src/script/api/qscriptengine.cpp | 34 +++++++++++++++++----------------- src/script/api/qscriptengine_p.h | 18 ++++++++++++++++++ src/script/bridge/qscriptqobject.cpp | 22 +++++++++++----------- 3 files changed, 46 insertions(+), 28 deletions(-) diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index a9d6fb1..9cd5c63 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -723,19 +723,19 @@ JSC::JSValue JSC_HOST_CALL functionQsTranslate(JSC::ExecState *exec, JSC::JSObje if ((args.size() > 4) && !args.at(4).isNumber()) return JSC::throwError(exec, JSC::GeneralError, "qsTranslate(): fifth argument (n) must be a number"); #ifndef QT_NO_QOBJECT - QString context(args.at(0).toString(exec)); + JSC::UString context = args.at(0).toString(exec); #endif - QString text(args.at(1).toString(exec)); + JSC::UString text = args.at(1).toString(exec); #ifndef QT_NO_QOBJECT - QString comment; + JSC::UString comment; if (args.size() > 2) comment = args.at(2).toString(exec); QCoreApplication::Encoding encoding = QCoreApplication::CodecForTr; if (args.size() > 3) { - QString encStr(args.at(3).toString(exec)); - if (encStr == QLatin1String("CodecForTr")) + JSC::UString encStr = args.at(3).toString(exec); + if (encStr == "CodecForTr") encoding = QCoreApplication::CodecForTr; - else if (encStr == QLatin1String("UnicodeUTF8")) + else if (encStr == "UnicodeUTF8") encoding = QCoreApplication::UnicodeUTF8; else return JSC::throwError(exec, JSC::GeneralError, QString::fromLatin1("qsTranslate(): invalid encoding '%s'").arg(encStr)); @@ -744,11 +744,11 @@ JSC::JSValue JSC_HOST_CALL functionQsTranslate(JSC::ExecState *exec, JSC::JSObje if (args.size() > 4) n = args.at(4).toInt32(exec); #endif - QString result; + JSC::UString result; #ifndef QT_NO_QOBJECT - result = QCoreApplication::translate(context.toLatin1().constData(), - text.toLatin1().constData(), - comment.toLatin1().constData(), + result = QCoreApplication::translate(QScript::convertToLatin1(context).constData(), + QScript::convertToLatin1(text).constData(), + QScript::convertToLatin1(comment).constData(), encoding, n); #else result = text; @@ -774,25 +774,25 @@ JSC::JSValue JSC_HOST_CALL functionQsTr(JSC::ExecState *exec, JSC::JSObject*, JS if ((args.size() > 2) && !args.at(2).isNumber()) return JSC::throwError(exec, JSC::GeneralError, "qsTranslate(): third argument (n) must be a number"); #ifndef QT_NO_QOBJECT - QString context; + JSC::UString context; QScriptContext *ctx = QScriptEnginePrivate::contextForFrame(exec); if (ctx && ctx->parentContext()) context = QFileInfo(QScriptContextInfo(ctx->parentContext()).fileName()).baseName(); #endif - QString text(args.at(0).toString(exec)); + JSC::UString text = args.at(0).toString(exec); #ifndef QT_NO_QOBJECT - QString comment; + JSC::UString comment; if (args.size() > 1) comment = args.at(1).toString(exec); int n = -1; if (args.size() > 2) n = args.at(2).toInt32(exec); #endif - QString result; + JSC::UString result; #ifndef QT_NO_QOBJECT - result = QCoreApplication::translate(context.toLatin1().constData(), - text.toLatin1().constData(), - comment.toLatin1().constData(), + result = QCoreApplication::translate(QScript::convertToLatin1(context).constData(), + QScript::convertToLatin1(text).constData(), + QScript::convertToLatin1(comment).constData(), QCoreApplication::CodecForTr, n); #else result = text; diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h index a05e12c..5166d89 100644 --- a/src/script/api/qscriptengine_p.h +++ b/src/script/api/qscriptengine_p.h @@ -123,6 +123,9 @@ namespace QScript inline QScriptEnginePrivate *scriptEngineFromExec(const JSC::ExecState *exec); bool isFunction(JSC::JSValue value); + inline void convertToLatin1_helper(const UChar *i, int length, char *s); + inline QByteArray convertToLatin1(const JSC::UString &str); + class UStringSourceProviderWithFeedback; struct GlobalClientData : public JSC::JSGlobalData::ClientData @@ -516,6 +519,21 @@ inline bool ToBool(const QString &value) return !value.isEmpty(); } +inline void convertToLatin1_helper(const UChar *i, int length, char *s) +{ + const UChar *e = i + length; + while (i != e) + *(s++) = (uchar) *(i++); + *s = '\0'; +} + +inline QByteArray convertToLatin1(const JSC::UString &str) +{ + QByteArray ba(str.size(), Qt::Uninitialized); + convertToLatin1_helper(str.data(), str.size(), ba.data()); + return ba; +} + } // namespace QScript inline QScriptValuePrivate *QScriptEnginePrivate::allocateScriptValuePrivate(size_t size) diff --git a/src/script/bridge/qscriptqobject.cpp b/src/script/bridge/qscriptqobject.cpp index 30e5a26..8d111f9 100644 --- a/src/script/bridge/qscriptqobject.cpp +++ b/src/script/bridge/qscriptqobject.cpp @@ -654,8 +654,8 @@ static JSC::JSValue callQtMethod(JSC::ExecState *exec, QMetaMethod::MethodType c matchDistance += 10; } } else { - QString sval = QScriptEnginePrivate::toString(exec, actual); - int ival = m.keyToValue(sval.toLatin1()); + JSC::UString sval = QScriptEnginePrivate::toString(exec, actual); + int ival = m.keyToValue(convertToLatin1(sval)); if (ival != -1) { qVariantSetValue(v, ival); converted = true; @@ -1168,7 +1168,7 @@ bool QObjectDelegate::getOwnPropertySlot(QScriptObject *object, JSC::ExecState * { //Note: this has to be kept in sync with getOwnPropertyDescriptor #ifndef QT_NO_PROPERTIES - QByteArray name = QString(propertyName.ustring()).toLatin1(); + QByteArray name = convertToLatin1(propertyName.ustring()); QObject *qobject = data->value; if (!qobject) { QString message = QString::fromLatin1("cannot access member `%0' of deleted QObject") @@ -1285,7 +1285,7 @@ bool QObjectDelegate::getOwnPropertyDescriptor(QScriptObject *object, JSC::ExecS { //Note: this has to be kept in sync with getOwnPropertySlot abd getPropertyAttributes #ifndef QT_NO_PROPERTIES - QByteArray name = QString(propertyName.ustring()).toLatin1(); + QByteArray name = convertToLatin1(propertyName.ustring()); QObject *qobject = data->value; if (!qobject) { QString message = QString::fromLatin1("cannot access member `%0' of deleted QObject") @@ -1419,7 +1419,7 @@ void QObjectDelegate::put(QScriptObject *object, JSC::ExecState* exec, JSC::JSValue value, JSC::PutPropertySlot &slot) { #ifndef QT_NO_PROPERTIES - QByteArray name = ((QString)propertyName.ustring()).toLatin1(); + QByteArray name = convertToLatin1(propertyName.ustring()); QObject *qobject = data->value; if (!qobject) { QString message = QString::fromLatin1("cannot access member `%0' of deleted QObject") @@ -1517,7 +1517,7 @@ bool QObjectDelegate::deleteProperty(QScriptObject *object, JSC::ExecState *exec bool checkDontDelete) { #ifndef QT_NO_PROPERTIES - QByteArray name = ((QString)propertyName.ustring()).toLatin1(); + QByteArray name = convertToLatin1(propertyName.ustring()); QObject *qobject = data->value; if (!qobject) { QString message = QString::fromLatin1("cannot access member `%0' of deleted QObject") @@ -1567,7 +1567,7 @@ bool QObjectDelegate::getPropertyAttributes(const QScriptObject *object, { #ifndef QT_NO_PROPERTIES //Note: this has to be kept in sync with getOwnPropertyDescriptor and getOwnPropertySlot - QByteArray name = ((QString)propertyName.ustring()).toLatin1(); + QByteArray name = convertToLatin1(propertyName.ustring()); QObject *qobject = data->value; if (!qobject) return false; @@ -1853,7 +1853,7 @@ bool QMetaObjectWrapperObject::getOwnPropertySlot( return true; } - QByteArray name = QString(propertyName.ustring()).toLatin1(); + QByteArray name = convertToLatin1(propertyName.ustring()); for (int i = 0; i < meta->enumeratorCount(); ++i) { QMetaEnum e = meta->enumerator(i); @@ -1881,7 +1881,7 @@ void QMetaObjectWrapperObject::put(JSC::ExecState* exec, const JSC::Identifier& } const QMetaObject *meta = data->value; if (meta) { - QByteArray name = QString(propertyName.ustring()).toLatin1(); + QByteArray name = convertToLatin1(propertyName.ustring()); for (int i = 0; i < meta->enumeratorCount(); ++i) { QMetaEnum e = meta->enumerator(i); for (int j = 0; j < e.keyCount(); ++j) { @@ -1901,7 +1901,7 @@ bool QMetaObjectWrapperObject::deleteProperty( return false; const QMetaObject *meta = data->value; if (meta) { - QByteArray name = QString(propertyName.ustring()).toLatin1(); + QByteArray name = convertToLatin1(propertyName.ustring()); for (int i = 0; i < meta->enumeratorCount(); ++i) { QMetaEnum e = meta->enumerator(i); for (int j = 0; j < e.keyCount(); ++j) { @@ -1923,7 +1923,7 @@ bool QMetaObjectWrapperObject::getPropertyAttributes(JSC::ExecState *exec, } const QMetaObject *meta = data->value; if (meta) { - QByteArray name = QString(propertyName.ustring()).toLatin1(); + QByteArray name = convertToLatin1(propertyName.ustring()); for (int i = 0; i < meta->enumeratorCount(); ++i) { QMetaEnum e = meta->enumerator(i); for (int j = 0; j < e.keyCount(); ++j) { -- cgit v0.12 From 7afc26c45ba19ba1fa077629e388be32ea1664bc Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Mon, 1 Mar 2010 15:39:17 +0100 Subject: compile --- src/multimedia/qml/qsoundeffect_pulse_p.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/multimedia/qml/qsoundeffect_pulse_p.cpp b/src/multimedia/qml/qsoundeffect_pulse_p.cpp index ec851aa..f7870c2 100644 --- a/src/multimedia/qml/qsoundeffect_pulse_p.cpp +++ b/src/multimedia/qml/qsoundeffect_pulse_p.cpp @@ -63,7 +63,7 @@ #include "qsoundeffect_pulse_p.h" -#if(Q_WS_MAEMO_5) +#if defined(Q_WS_MAEMO_5) #include #endif @@ -155,7 +155,7 @@ private: lock(); m_context = pa_context_new(m_mainLoopApi, QString(QLatin1String("QtPulseAudio:%1")).arg(::getpid()).toAscii().constData()); -#if(Q_WS_MAEMO_5) +#if defined(Q_WS_MAEMO_5) pa_context_set_state_callback(m_context, context_state_callback, this); #endif if (m_context == 0) { @@ -183,7 +183,7 @@ private: m_prepared = false; } -#if(Q_WS_MAEMO_5) +#if defined(Q_WS_MAEMO_5) static void context_state_callback(pa_context *c, void *userdata) { PulseDaemon *self = reinterpret_cast(userdata); @@ -299,7 +299,7 @@ void QSoundEffectPrivate::play() pa_volume_t m_vol = PA_VOLUME_NORM; daemon()->lock(); -#if(Q_WS_MAEMO_5) +#if defined(Q_WS_MAEMO_5) m_vol = PA_VOLUME_NORM/100*((daemon()->volume()+m_vol)/2); #endif pa_operation_unref( -- cgit v0.12 From e24247b07c6450881094200e729390b676f911aa Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 1 Mar 2010 15:52:15 +0100 Subject: =?UTF-8?q?Interview=20Demo:=20Fix=20warning=20about=20pixmap=20le?= =?UTF-8?q?ak=20on=20X11.=20Reviewed-by:=20Trond=20Kjern=C3=A5sen=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demos/interview/model.cpp | 2 +- demos/interview/model.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/demos/interview/model.cpp b/demos/interview/model.cpp index 3f9548a..840bc60 100644 --- a/demos/interview/model.cpp +++ b/demos/interview/model.cpp @@ -45,6 +45,7 @@ Model::Model(int rows, int columns, QObject *parent) : QAbstractItemModel(parent), + services(QPixmap(":/images/services.png")), rc(rows), cc(columns), tree(new QVector(rows, Node(0))) { @@ -105,7 +106,6 @@ QVariant Model::data(const QModelIndex &index, int role) const QVariant Model::headerData(int section, Qt::Orientation orientation, int role) const { - static QIcon services(QPixmap(":/images/services.png")); if (role == Qt::DisplayRole) return QString::number(section); if (role == Qt::DecorationRole) diff --git a/demos/interview/model.h b/demos/interview/model.h index bad83a8..c7c15f7 100644 --- a/demos/interview/model.h +++ b/demos/interview/model.h @@ -44,6 +44,7 @@ #include #include +#include #include class Model : public QAbstractItemModel @@ -80,6 +81,7 @@ private: Node *parent(Node *child) const; int row(Node *node) const; + QIcon services; int rc, cc; QVector *tree; QFileIconProvider iconProvider; -- cgit v0.12 From cab1428311067872b811679e72e0ad457d76a24f Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Tue, 2 Mar 2010 01:01:58 +1000 Subject: Document TextEdit::textMargin --- src/declarative/graphicsitems/qdeclarativetextedit.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp index 8e44b26..be73b39 100644 --- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp @@ -613,6 +613,11 @@ void QDeclarativeTextEdit::setPersistentSelection(bool on) emit persistentSelectionChanged(d->persistentSelection); } +/* + \qmlproperty number TextEdit::textMargin + + The margin, in pixels, around the text in the TextEdit. +*/ qreal QDeclarativeTextEdit::textMargin() const { Q_D(const QDeclarativeTextEdit); -- cgit v0.12 From 45d91603e65f78cb749bcc2c8949ef24048761df Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Mon, 1 Mar 2010 16:30:33 +0100 Subject: Doc: brief Qt Quick introduction on "What's New" page. --- doc/src/qt4-intro.qdoc | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc index cf53df0..c670c51 100644 --- a/doc/src/qt4-intro.qdoc +++ b/doc/src/qt4-intro.qdoc @@ -473,6 +473,29 @@ \section1 Declarative UI development with Qt Quick + Qt 4.7 introduces Quick, the Qt UI Creation Kit. that enables the creation + of dynamic user interfaces, easier and more effective than possible + with existing UI technologies. This UI Creation Kit consist of three + technologies: + + \list + \i QML is a declarative language oriented on JavaScript that utilizes + Qt's Meta-Object capabilities to enable designers and developers to + collaborate tightly and create animated and fluid user experiences, + using existing knowledge in script language and design. + + \i QtDeclarative is a C++ library that provides the underlying engine, + which translates the declarative description of the UI in QML into + items on a QGraphicsScene. The library also provides APIs to bind + custom C++ types and elements to QML, and to connect the QML UI with + the underlying application logic written in C++. + + \i Qt Creator has been improved to support interactive editing of + QML UIs through drag-and-drop. The text editor supports the QML + syntax and provides authoring assistance such as auto-completion, + error lookup, help lookup and easy preview of QML UI's. + \endlist + \section1 Network Bearer Management Bearer Management controls the connectivity state of the system. @@ -494,7 +517,7 @@ \section1 New Classes, Functions, Macros, etc. - Links to new classes, functions, macros, and other items + Links to new classes, elements, functions, macros, and other items introduced in Qt 4.7. \sincelist 4.7 -- cgit v0.12 From b281e39d8449ccc63020ba959404f77aba424de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Mon, 1 Mar 2010 16:56:29 +0100 Subject: Fixed the close button of the find widget in Assistant Done with Christian Kandeler. --- tools/assistant/tools/assistant/findwidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/assistant/tools/assistant/findwidget.cpp b/tools/assistant/tools/assistant/findwidget.cpp index 2e40ab0..60318d4 100644 --- a/tools/assistant/tools/assistant/findwidget.cpp +++ b/tools/assistant/tools/assistant/findwidget.cpp @@ -72,6 +72,7 @@ FindWidget::FindWidget(QWidget *parent) toolClose = setupToolButton(QLatin1String(""), resourcePath + QLatin1String("/closetab.png")); hboxLayout->addWidget(toolClose); + connect(toolClose, SIGNAL(clicked()), SLOT(hide())); editFind = new QLineEdit(this); hboxLayout->addWidget(editFind); -- cgit v0.12 From a07ac42868df345994ee2a5d27ff79f2e3599ead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Mon, 1 Mar 2010 16:56:51 +0100 Subject: Updated .gitignore with the new name of the qmlviewer --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 548e69e..7fe33b9 100644 --- a/.gitignore +++ b/.gitignore @@ -83,7 +83,7 @@ bin/kmap2qmap* bin/qlalr* bin/qmlconv* bin/qmldebugger* -bin/qmlviewer* +bin/qml* bin/qttracereplay* configure.cache config.status -- cgit v0.12 From d6910f12cdaac746b0b336cb0d8b9b4ea830e9e2 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 1 Mar 2010 16:57:30 +0100 Subject: Fix crash using openPersistentEditor and setRowHidden on a QTableView Hiding widget might result in focus changes that will modify the list of editors while iterating over it. Same fixe as in commit 386726f7184cc77f0692e2ba24d85ebc53a39569 The test comes from the Task Task-number: QTBUG-8585 Reviewed-by: Thierry --- src/gui/itemviews/qabstractitemview.cpp | 8 ++++-- tests/auto/qtableview/tst_qtableview.cpp | 46 ++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp index 4931b46..2faf755 100644 --- a/src/gui/itemviews/qabstractitemview.cpp +++ b/src/gui/itemviews/qabstractitemview.cpp @@ -2568,6 +2568,7 @@ void QAbstractItemView::updateEditorGeometries() QStyleOptionViewItemV4 option = d->viewOptionsV4(); QList::iterator it = d->editors.begin(); QWidgetList editorsToRelease; + QWidgetList editorsToHide; while (it != d->editors.end()) { QModelIndex index = it->index; QWidget *editor = it->editor; @@ -2579,7 +2580,7 @@ void QAbstractItemView::updateEditorGeometries() if (delegate) delegate->updateEditorGeometry(editor, option, index); } else { - editor->hide(); + editorsToHide << editor; } ++it; } else { @@ -2588,8 +2589,11 @@ void QAbstractItemView::updateEditorGeometries() } } - //we release the editor outside of the loop because it might change the focus and try + //we hide and release the editor outside of the loop because it might change the focus and try //to change the d->editors list. + for (int i = 0; i < editorsToHide.count(); ++i) { + editorsToHide.at(i)->hide(); + } for (int i = 0; i < editorsToRelease.count(); ++i) { d->releaseEditor(editorsToRelease.at(i)); } diff --git a/tests/auto/qtableview/tst_qtableview.cpp b/tests/auto/qtableview/tst_qtableview.cpp index 430712c..a5cbbd4 100644 --- a/tests/auto/qtableview/tst_qtableview.cpp +++ b/tests/auto/qtableview/tst_qtableview.cpp @@ -199,6 +199,7 @@ private slots: void taskQTBUG_5062_spansInconsistency(); void taskQTBUG_4516_clickOnRichTextLabel(); void taskQTBUG_5237_wheelEventOnHeader(); + void taskQTBUG_8585_crashForNoGoodReason(); void mouseWheel_data(); void mouseWheel(); @@ -3948,5 +3949,50 @@ void tst_QTableView::taskQTBUG_5237_wheelEventOnHeader() QVERIFY(sbValueBefore != sbValueAfter); } +class TestTableView : public QTableView { +Q_OBJECT +public: + TestTableView(QWidget *parent = 0) : QTableView(parent) + { + connect(this, SIGNAL(entered(const QModelIndex&)), this, SLOT(openEditor(const QModelIndex&))); + } + ~TestTableView(){} +public slots: + void onDataChanged() + { + for (int i = 0; i < model()->rowCount(); i++) { + setRowHidden(i, model()->data(model()->index(i, 0)).toBool()); + } + } + + void openEditor(const QModelIndex& index) + { openPersistentEditor(index); } +}; + + +void tst_QTableView::taskQTBUG_8585_crashForNoGoodReason() +{ + QStandardItemModel model; + model.insertColumn(0, QModelIndex()); + for(int i = 0; i < 20; i++) + { + model.insertRow(i); + } + + TestTableView w; + w.setMouseTracking(true); + w.setModel(&model); + connect(&model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), &w, SLOT(onDataChanged())); + w.show(); + QTest::qWaitForWindowShown(&w); + for (int i = 0; i < 10; i++) + { + QTest::mouseMove(w.viewport(), QPoint(50, 20)); + w.model()->setData(w.indexAt(QPoint(50, 20)), true); + QTest::mouseMove(w.viewport(), QPoint(50, 25)); + } +} + + QTEST_MAIN(tst_QTableView) #include "tst_qtableview.moc" -- cgit v0.12 From a7196feb11d701dd486e66fd06cbc50d84c9b1bb Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Mon, 1 Mar 2010 17:03:00 +0100 Subject: typo for windows ce exclusion rule Reviewed-by: Paul Olav Tvete --- src/plugins/mediaservices/mediaservices.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/mediaservices/mediaservices.pro b/src/plugins/mediaservices/mediaservices.pro index d84b276..19d678b 100644 --- a/src/plugins/mediaservices/mediaservices.pro +++ b/src/plugins/mediaservices/mediaservices.pro @@ -1,7 +1,7 @@ TEMPLATE = subdirs contains(QT_CONFIG, mediaservice) { - win32:!wince: SUBDIRS += directshow + win32:!wince*: SUBDIRS += directshow mac: SUBDIRS += qt7 -- cgit v0.12 From 83c37c2cdf7adf2604e1e6012a9e0e6e67d97d6b Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Mon, 1 Mar 2010 17:31:44 +0100 Subject: removed dead code Reviewed-by: denis --- src/gui/kernel/qcursor_mac.mm | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/src/gui/kernel/qcursor_mac.mm b/src/gui/kernel/qcursor_mac.mm index cfebf60..03e38b0 100644 --- a/src/gui/kernel/qcursor_mac.mm +++ b/src/gui/kernel/qcursor_mac.mm @@ -114,27 +114,18 @@ void qt_mac_set_cursor(const QCursor *c, const QPoint &) } c->handle(); //force the cursor to get loaded, if it's not - if(1 || currentCursor != c->d) { - if(currentCursor && currentCursor->type == QCursorData::TYPE_ThemeCursor - && currentCursor->curs.tc.anim) - currentCursor->curs.tc.anim->stop(); - QMacCocoaAutoReleasePool pool; - if(c->d->type == QCursorData::TYPE_ImageCursor) { - [static_cast(c->d->curs.cp.nscursor) set]; - } else if(c->d->type == QCursorData::TYPE_ThemeCursor) { -#ifdef QT_MAC_USE_COCOA - if (c->d->curs.cp.nscursor == 0) - [[NSCursor arrowCursor] set]; - [static_cast(c->d->curs.cp.nscursor) set]; -#else - if(SetAnimatedThemeCursor(c->d->curs.tc.curs, 0) == themeBadCursorIndexErr) { - SetThemeCursor(c->d->curs.tc.curs); - } else { - if(!c->d->curs.tc.anim) - c->d->curs.tc.anim = new QMacAnimateCursor; - c->d->curs.tc.anim->start(c->d->curs.tc.curs); - } -#endif + if(currentCursor && currentCursor->type == QCursorData::TYPE_ThemeCursor + && currentCursor->curs.tc.anim) + currentCursor->curs.tc.anim->stop(); + if(c->d->type == QCursorData::TYPE_ImageCursor) { + [static_cast(c->d->curs.cp.nscursor) set]; + } else if(c->d->type == QCursorData::TYPE_ThemeCursor) { + if(SetAnimatedThemeCursor(c->d->curs.tc.curs, 0) == themeBadCursorIndexErr) { + SetThemeCursor(c->d->curs.tc.curs); + } else { + if(!c->d->curs.tc.anim) + c->d->curs.tc.anim = new QMacAnimateCursor; + c->d->curs.tc.anim->start(c->d->curs.tc.curs); } } currentCursor = c->d; -- cgit v0.12 From 1dc72f731d3024a34fbcb1858cff6f460e4d2ddc Mon Sep 17 00:00:00 2001 From: ck Date: Mon, 1 Mar 2010 17:45:15 +0100 Subject: Help system: Build search index with low priority. Reviewed-by: kh1 --- tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp | 2 +- tools/assistant/lib/qhelpsearchindexwriter_default.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp b/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp index 59067cf..4f9fa3f 100644 --- a/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp +++ b/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp @@ -585,7 +585,7 @@ void QHelpSearchIndexWriter::updateIndex(const QString &collectionFile, this->m_indexFilesFolder = indexFilesFolder; mutex.unlock(); - start(QThread::NormalPriority); + start(QThread::LowestPriority); } void QHelpSearchIndexWriter::optimizeIndex() diff --git a/tools/assistant/lib/qhelpsearchindexwriter_default.cpp b/tools/assistant/lib/qhelpsearchindexwriter_default.cpp index cb3e49c..827d145 100644 --- a/tools/assistant/lib/qhelpsearchindexwriter_default.cpp +++ b/tools/assistant/lib/qhelpsearchindexwriter_default.cpp @@ -191,7 +191,7 @@ void QHelpSearchIndexWriter::updateIndex(const QString &collectionFile, this->m_collectionFile = collectionFile; this->m_indexFilesFolder = indexFilesFolder; - start(QThread::NormalPriority); + start(QThread::LowestPriority); } void QHelpSearchIndexWriter::run() -- cgit v0.12 From f97df3f53f133c7ea68816d9275dde5c153f3257 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 1 Mar 2010 18:17:21 +0100 Subject: Doc: QRegExp::WillcardUnix: the documentation did not show the slash Reviewed-by: David Boddie --- src/corelib/tools/qregexp.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp index 25255f9..b9e273f 100644 --- a/src/corelib/tools/qregexp.cpp +++ b/src/corelib/tools/qregexp.cpp @@ -523,7 +523,7 @@ int qFindString(const QChar *haystack, int haystackLen, int from, \endtable In the mode Wildcard, the wildcard characters cannot be - escaped. In the mode WildcardUnix, the character '\' escapes the + escaped. In the mode WildcardUnix, the character '\\' escapes the wildcard. For example if we are in wildcard mode and have strings which @@ -3774,7 +3774,7 @@ static void invalidateEngine(QRegExpPrivate *priv) \value WildcardUnix This is similar to Wildcard but with the behavior of a Unix shell. The wildcard characters can be escaped - with the character "\". + with the character "\\". \value FixedString The pattern is a fixed string. This is equivalent to using the RegExp pattern on a string in -- cgit v0.12 From 7024111f8615b84741640e8dbbb1dd9482c9e1ea Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Mon, 1 Mar 2010 19:07:41 +0100 Subject: Expand documention of status property with examples Task-number: QTBUG-8542 --- src/declarative/graphicsitems/qdeclarativeimage.cpp | 10 ++++++++++ src/declarative/graphicsitems/qdeclarativeloader.cpp | 9 +++++++++ src/declarative/util/qdeclarativefontloader.cpp | 10 ++++++++++ src/declarative/util/qdeclarativexmllistmodel.cpp | 12 +++++++++++- 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp index 99ab053..2739ab8 100644 --- a/src/declarative/graphicsitems/qdeclarativeimage.cpp +++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp @@ -232,6 +232,16 @@ qreal QDeclarativeImage::paintedHeight() const \o Error - an error occurred while loading the image \endlist + Note that a change in the status property does not cause anything to happen + (although it reflects what has happened with the image internally). If you wish + to react to the change in status you need to do it yourself, for example in one + of the following ways: + \list + \o Create a state, so that a state change occurs, e.g. State{name: 'loaded'; when: image.status = Image.Ready;} + \o Do something inside the onStatusChanged signal handler, e.g. Image{id: image; onStatusChanged: if(image.status == Image.Ready) console.log('Loaded');} + \o Bind to the status variable somewhere, e.g. Text{text: if(image.status!=Image.Ready){'Not Loaded';}else{'Loaded';}} + \endlist + \sa progress */ diff --git a/src/declarative/graphicsitems/qdeclarativeloader.cpp b/src/declarative/graphicsitems/qdeclarativeloader.cpp index bd89321..b0499d7 100644 --- a/src/declarative/graphicsitems/qdeclarativeloader.cpp +++ b/src/declarative/graphicsitems/qdeclarativeloader.cpp @@ -320,6 +320,15 @@ void QDeclarativeLoaderPrivate::_q_sourceLoaded() \o Error - an error occurred while loading the QML source \endlist + Note that a change in the status property does not cause anything to happen + (although it reflects what has happened to the loader internally). If you wish + to react to the change in status you need to do it yourself, for example in one + of the following ways: + \list + \o Create a state, so that a state change occurs, e.g. State{name: 'loaded'; when: loader.status = Loader.Ready;} + \o Do something inside the onStatusChanged signal handler, e.g. Loader{id: loader; onStatusChanged: if(loader.status == Loader.Ready) console.log('Loaded');} + \o Bind to the status variable somewhere, e.g. Text{text: if(loader.status!=Loader.Ready){'Not Loaded';}else{'Loaded';}} + \endlist \sa progress */ diff --git a/src/declarative/util/qdeclarativefontloader.cpp b/src/declarative/util/qdeclarativefontloader.cpp index 4d12ae1..8f5f537 100644 --- a/src/declarative/util/qdeclarativefontloader.cpp +++ b/src/declarative/util/qdeclarativefontloader.cpp @@ -189,6 +189,16 @@ void QDeclarativeFontLoader::setName(const QString &name) \o Loading - the font is currently being loaded \o Error - an error occurred while loading the font \endlist + + Note that a change in the status property does not cause anything to happen + (although it reflects what has happened to the font loader internally). If you wish + to react to the change in status you need to do it yourself, for example in one + of the following ways: + \list + \o Create a state, so that a state change occurs, e.g. State{name: 'loaded'; when: loader.status = FontLoader.Ready;} + \o Do something inside the onStatusChanged signal handler, e.g. FontLoader{id: loader; onStatusChanged: if(loader.status == FontLoader.Ready) console.log('Loaded');} + \o Bind to the status variable somewhere, e.g. Text{text: if(loader.status!=FontLoader.Ready){'Not Loaded';}else{'Loaded';}} + \endlist */ QDeclarativeFontLoader::Status QDeclarativeFontLoader::status() const { diff --git a/src/declarative/util/qdeclarativexmllistmodel.cpp b/src/declarative/util/qdeclarativexmllistmodel.cpp index 162a669..d260ada 100644 --- a/src/declarative/util/qdeclarativexmllistmodel.cpp +++ b/src/declarative/util/qdeclarativexmllistmodel.cpp @@ -647,11 +647,21 @@ void QDeclarativeXmlListModel::setNamespaceDeclarations(const QString &declarati This property holds the status of data source loading. It can be one of: \list \o Null - no data source has been set - \o Ready - nthe data source has been loaded + \o Ready - the data source has been loaded \o Loading - the data source is currently being loaded \o Error - an error occurred while loading the data source \endlist + Note that a change in the status property does not cause anything to happen + (although it reflects what has happened to the XmlListModel internally). If you wish + to react to the change in status you need to do it yourself, for example in one + of the following ways: + \list + \o Create a state, so that a state change occurs, e.g. State{name: 'loaded'; when: xmlListModel.status = XmlListModel.Ready;} + \o Do something inside the onStatusChanged signal handler, e.g. XmlListModel{id: xmlListModel; onStatusChanged: if(xmlListModel.status == XmlListModel.Ready) console.log('Loaded');} + \o Bind to the status variable somewhere, e.g. Text{text: if(xmlListModel.status!=XmlListModel.Ready){'Not Loaded';}else{'Loaded';}} + \endlist + \sa progress */ -- cgit v0.12 From 6ff6998ad91a3cfee233cb25c750144eae8881b3 Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Tue, 2 Mar 2010 08:53:12 +1000 Subject: Fix build breakage in windowflags example Reviewed-by: Sarah Smith --- examples/widgets/windowflags/controllerwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/widgets/windowflags/controllerwindow.cpp b/examples/widgets/windowflags/controllerwindow.cpp index a1e5455..fb82b8f 100644 --- a/examples/widgets/windowflags/controllerwindow.cpp +++ b/examples/widgets/windowflags/controllerwindow.cpp @@ -149,7 +149,7 @@ void ControllerWindow::createTypeGroupBox() splashScreenRadioButton = createRadioButton(tr("Splash screen")); windowRadioButton->setChecked(true); - QVBoxLayout *layout = new QGridLayout; + QGridLayout *layout = new QGridLayout; layout->addWidget(windowRadioButton, 0, 0); layout->addWidget(dialogRadioButton, 1, 0); layout->addWidget(sheetRadioButton, 2, 0); -- cgit v0.12 From e1aa5c3641ba3945e2e6a7b4c37c394eece53dd0 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Tue, 2 Mar 2010 09:11:13 +1000 Subject: Setting the same source again causes reload. Task-number: QTBUG-8623 --- src/declarative/util/qdeclarativeview.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/declarative/util/qdeclarativeview.cpp b/src/declarative/util/qdeclarativeview.cpp index 6fe5bf3..a3c372d 100644 --- a/src/declarative/util/qdeclarativeview.cpp +++ b/src/declarative/util/qdeclarativeview.cpp @@ -282,13 +282,14 @@ QDeclarativeView::~QDeclarativeView() /*! Sets the source to the \a url, loads the QML component and instantiates it. + + Calling this methods multiple times with the same url will result + in the QML being reloaded. */ void QDeclarativeView::setSource(const QUrl& url) { - if (url != d->source) { - d->source = url; - d->execute(); - } + d->source = url; + d->execute(); } /*! -- cgit v0.12 From 9842e823a5a3df8d786ddc1c6fe355db8f511354 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Mon, 1 Mar 2010 13:11:52 -0800 Subject: Uncomment #DIRECTFB_DRAWINGOPERATIONS in pri-file This has no effect unless QT_DIRECTFB_WARN_ON_RASTERFALLBACKS or QT_DIRECTFB_DISABLE_RASTERFALLBACKS is defined but will decrease likelyhood of customers encountering strange compile errors if they don't uncomment it when using these defines. Reviewed-by: Noam Rosenthal --- src/gui/embedded/directfb.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/embedded/directfb.pri b/src/gui/embedded/directfb.pri index bd1d947..1795bbd 100644 --- a/src/gui/embedded/directfb.pri +++ b/src/gui/embedded/directfb.pri @@ -15,7 +15,7 @@ #DEFINES += QT_DIRECTFB_TIMING #DEFINES += QT_NO_DIRECTFB_OPAQUE_DETECTION #DEFINES += QT_NO_DIRECTFB_STRETCHBLIT -#DIRECTFB_DRAWINGOPERATIONS=DRAW_RECTS|DRAW_LINES|DRAW_IMAGE|DRAW_PIXMAP|DRAW_TILED_PIXMAP|STROKE_PATH|DRAW_PATH|DRAW_POINTS|DRAW_ELLIPSE|DRAW_POLYGON|DRAW_TEXT|FILL_PATH|FILL_RECT|DRAW_COLORSPANS|DRAW_ROUNDED_RECT +DIRECTFB_DRAWINGOPERATIONS=DRAW_RECTS|DRAW_LINES|DRAW_IMAGE|DRAW_PIXMAP|DRAW_TILED_PIXMAP|STROKE_PATH|DRAW_PATH|DRAW_POINTS|DRAW_ELLIPSE|DRAW_POLYGON|DRAW_TEXT|FILL_PATH|FILL_RECT|DRAW_COLORSPANS|DRAW_ROUNDED_RECT #DEFINES += \"QT_DIRECTFB_WARN_ON_RASTERFALLBACKS=$$DIRECTFB_DRAWINGOPERATIONS\" #DEFINES += \"QT_DIRECTFB_DISABLE_RASTERFALLBACKS=$$DIRECTFB_DRAWINGOPERATIONS\" -- cgit v0.12 From 8b90fe35a737a71dbc15de48088fc100241f701c Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Mon, 1 Mar 2010 13:10:37 -0800 Subject: Add support for composition mode DSPD_DST in DFB This porter duff rule was added in DirectFB 1.2 Reviewed-by: Noam Rosenthal --- src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp index 2b11058..d6e1a03 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp @@ -944,6 +944,11 @@ void QDirectFBPaintEnginePrivate::setCompositionMode(QPainter::CompositionMode m case QPainter::CompositionMode_DestinationOut: surface->SetPorterDuff(surface, DSPD_DST_OUT); break; +#if (Q_DIRECTFB_VERSION >= 0x010200) + case QPainter::CompositionMode_Destination: + surface->SetPorterDuff(surface, DSPD_DST); + break; +#endif #if (Q_DIRECTFB_VERSION >= 0x010000) case QPainter::CompositionMode_SourceAtop: surface->SetPorterDuff(surface, DSPD_SRC_ATOP); -- cgit v0.12 From 629b3e0d03875665a75a5a1c40d53dd478fdc982 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Mon, 1 Mar 2010 14:45:40 -0800 Subject: Don't disable alpha when filling with opaque color Qt heuristics say that a QPixmap becomes an alpha pixmap when filled with a color with alpha != 255 but not that it returns to being opaque when filled with a color with alpha == 255 Reviewed-by: Noam Rosenthal --- src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp index ba50329..b5ac67d 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp @@ -425,7 +425,7 @@ void QDirectFBPixmapData::fill(const QColor &color) Q_ASSERT(dfbSurface); - alpha = (color.alpha() < 255); + alpha |= (color.alpha() < 255); if (alpha && isOpaqueFormat(imageFormat)) { QSize size; -- cgit v0.12 From 6f20bd49782045897b5cb067aa42cc2e0d955770 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Mon, 1 Mar 2010 12:57:39 -0800 Subject: Make composition modes work better for DirectFB It seems that I have to premultiply the colors I pass to IDirectFBSurface->SetColor when composition mode != Source|SourceIn. It now seems to behave the same way as the raster engine which I guess should be considered the authority on this matter. Reviewed-by: Noam Rosenthal --- .../gfxdrivers/directfb/qdirectfbpaintengine.cpp | 99 +++++++++------------- 1 file changed, 39 insertions(+), 60 deletions(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp index d6e1a03..388e369 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp @@ -1,4 +1,4 @@ -/**************************************************************************** + /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. @@ -68,11 +68,10 @@ public: }; enum CompositionModeStatus { - PorterDuff_None = 0x00, - PorterDuff_SupportedBlits = 0x01, - PorterDuff_SupportedPrimitives = 0x02, - PorterDuff_SupportedOpaquePrimitives = 0x04, - PorterDuff_Dirty = 0x10 + PorterDuff_None = 0x0, + PorterDuff_Supported = 0x1, + PorterDuff_PremultiplyColors = 0x2, + PorterDuff_AlwaysBlend = 0x4 }; enum ClipType { @@ -97,7 +96,6 @@ public: inline void unlock(); static inline void unlock(QDirectFBPaintDevice *device); - inline bool testCompositionMode(const QPen *pen, const QBrush *brush, const QColor *color = 0) const; inline bool isSimpleBrush(const QBrush &brush) const; void drawTiledPixmap(const QRectF &dest, const QPixmap &pixmap, const QPointF &pos); @@ -130,6 +128,7 @@ public: ClipType clipType; QDirectFBPaintDevice *dfbDevice; uint compositionModeStatus; + bool isPremultiplied; bool inClip; QRect currentClip; @@ -287,6 +286,7 @@ bool QDirectFBPaintEngine::begin(QPaintDevice *device) qFatal("QDirectFBPaintEngine used on an invalid device: 0x%x", device->devType()); } + d->isPremultiplied = QDirectFBScreen::isPremultiplied(d->dfbDevice->format()); d->prepare(d->dfbDevice); gccaps = AllFeatures; @@ -413,7 +413,7 @@ void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount) || !d->simplePen || d->clipType == QDirectFBPaintEnginePrivate::ComplexClip || !d->isSimpleBrush(brush) - || !d->testCompositionMode(&pen, &brush)) { + || !(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_Supported)) { RASTERFALLBACK(DRAW_RECTS, rectCount, VOID_ARG(), VOID_ARG()); d->lock(); QRasterPaintEngine::drawRects(rects, rectCount); @@ -443,7 +443,7 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount) || !d->simplePen || d->clipType == QDirectFBPaintEnginePrivate::ComplexClip || !d->isSimpleBrush(brush) - || !d->testCompositionMode(&pen, &brush)) { + || !(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_Supported)) { RASTERFALLBACK(DRAW_RECTS, rectCount, VOID_ARG(), VOID_ARG()); d->lock(); QRasterPaintEngine::drawRects(rects, rectCount); @@ -468,7 +468,7 @@ void QDirectFBPaintEngine::drawLines(const QLine *lines, int lineCount) const QPen &pen = state()->pen; if (!d->simplePen || d->clipType == QDirectFBPaintEnginePrivate::ComplexClip - || !d->testCompositionMode(&pen, 0)) { + || !(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_Supported)) { RASTERFALLBACK(DRAW_LINES, lineCount, VOID_ARG(), VOID_ARG()); d->lock(); QRasterPaintEngine::drawLines(lines, lineCount); @@ -488,7 +488,7 @@ void QDirectFBPaintEngine::drawLines(const QLineF *lines, int lineCount) const QPen &pen = state()->pen; if (!d->simplePen || d->clipType == QDirectFBPaintEnginePrivate::ComplexClip - || !d->testCompositionMode(&pen, 0)) { + || !(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_Supported)) { RASTERFALLBACK(DRAW_LINES, lineCount, VOID_ARG(), VOID_ARG()); d->lock(); QRasterPaintEngine::drawLines(lines, lineCount); @@ -526,7 +526,7 @@ void QDirectFBPaintEngine::drawImage(const QRectF &r, const QImage &image, */ #if !defined QT_NO_DIRECTFB_PREALLOCATED || defined QT_DIRECTFB_IMAGECACHE - if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedBlits) + if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_Supported) || (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_BlitsUnsupported) || (d->clipType == QDirectFBPaintEnginePrivate::ComplexClip) || (!d->supportsStretchBlit() && state()->matrix.mapRect(r).size() != sr.size()) @@ -575,7 +575,7 @@ void QDirectFBPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pixmap, QPixmapData *data = pixmap.pixmapData(); Q_ASSERT(data->classId() == QPixmapData::DirectFBClass); QDirectFBPixmapData *dfbData = static_cast(data); - if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedBlits) + if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_Supported) || (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_BlitsUnsupported) || (d->clipType == QDirectFBPaintEnginePrivate::ComplexClip) || (!d->supportsStretchBlit() && state()->matrix.mapRect(r).size() != sr.size())) { @@ -606,7 +606,7 @@ void QDirectFBPaintEngine::drawTiledPixmap(const QRectF &r, RASTERFALLBACK(DRAW_TILED_PIXMAP, r, pixmap.size(), offset); d->lock(); QRasterPaintEngine::drawTiledPixmap(r, pixmap, offset); - } else if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedBlits) + } else if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_Supported) || (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_BlitsUnsupported) || (d->clipType == QDirectFBPaintEnginePrivate::ComplexClip) || (!d->supportsStretchBlit() && state()->matrix.isScaling())) { @@ -720,7 +720,7 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush) switch (brush.style()) { case Qt::SolidPattern: { if (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_RectsUnsupported - || !d->testCompositionMode(0, &brush)) { + || !(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_Supported)) { break; } const QColor color = brush.color(); @@ -732,7 +732,7 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush) return; } case Qt::TexturePattern: { - if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedBlits) + if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_Supported) || (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_BlitsUnsupported) || (!d->supportsStretchBlit() && state()->matrix.isScaling())) { break; @@ -760,7 +760,7 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QColor &color) Q_D(QDirectFBPaintEngine); if ((d->transformationType & QDirectFBPaintEnginePrivate::Matrix_RectsUnsupported) || (d->clipType == QDirectFBPaintEnginePrivate::ComplexClip) - || !d->testCompositionMode(0, 0, &color)) { + || !(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_Supported)) { RASTERFALLBACK(FILL_RECT, rect, color, VOID_ARG()); d->lock(); QRasterPaintEngine::fillRect(rect, color); @@ -804,7 +804,7 @@ QDirectFBPaintEnginePrivate::QDirectFBPaintEnginePrivate(QDirectFBPaintEngine *p : surface(0), antialiased(false), simplePen(false), transformationType(0), opacity(255), clipType(ClipUnset), dfbDevice(0), - compositionModeStatus(0), inClip(false), q(p) + compositionModeStatus(0), isPremultiplied(false), inClip(false), q(p) { fb = QDirectFBScreen::instance()->dfb(); surfaceCache = new SurfaceCache; @@ -820,36 +820,6 @@ bool QDirectFBPaintEnginePrivate::isSimpleBrush(const QBrush &brush) const return (brush.style() == Qt::NoBrush) || (brush.style() == Qt::SolidPattern && !antialiased); } -bool QDirectFBPaintEnginePrivate::testCompositionMode(const QPen *pen, const QBrush *brush, const QColor *color) const -{ - Q_ASSERT(!pen || pen->style() == Qt::NoPen || pen->style() == Qt::SolidLine); - Q_ASSERT(!brush || brush->style() == Qt::NoBrush || brush->style() == Qt::SolidPattern); - switch (compositionModeStatus & (QDirectFBPaintEnginePrivate::PorterDuff_SupportedOpaquePrimitives - |QDirectFBPaintEnginePrivate::PorterDuff_SupportedPrimitives)) { - case QDirectFBPaintEnginePrivate::PorterDuff_SupportedPrimitives: - return true; - case QDirectFBPaintEnginePrivate::PorterDuff_SupportedOpaquePrimitives: - if (pen && pen->style() == Qt::SolidLine && pen->color().alpha() != 255) - return false; - if (brush) { - if (brush->style() == Qt::SolidPattern && brush->color().alpha() != 255) { - return false; - } - } else if (color && color->alpha() != 255) { - return false; - } - return true; - case QDirectFBPaintEnginePrivate::PorterDuff_None: - return false; - default: - // ### PorterDuff_SupportedOpaquePrimitives|PorterDuff_SupportedPrimitives can't be combined - break; - } - Q_ASSERT(0); - return false; -} - - void QDirectFBPaintEnginePrivate::lock() { // We will potentially get a new pointer to the buffer after a @@ -912,21 +882,23 @@ void QDirectFBPaintEnginePrivate::setCompositionMode(QPainter::CompositionMode m static const bool forceRasterFallBack = qgetenv("QT_DIRECTFB_FORCE_RASTER").toInt() > 0; if (forceRasterFallBack) { - compositionModeStatus = 0; + compositionModeStatus = PorterDuff_None; return; } - compositionModeStatus = PorterDuff_SupportedBlits; + compositionModeStatus = PorterDuff_Supported|PorterDuff_PremultiplyColors|PorterDuff_AlwaysBlend; switch (mode) { case QPainter::CompositionMode_Clear: surface->SetPorterDuff(surface, DSPD_CLEAR); break; case QPainter::CompositionMode_Source: surface->SetPorterDuff(surface, DSPD_SRC); - compositionModeStatus |= PorterDuff_SupportedOpaquePrimitives; + compositionModeStatus &= ~PorterDuff_AlwaysBlend; + if (!isPremultiplied) + compositionModeStatus &= ~PorterDuff_PremultiplyColors; break; case QPainter::CompositionMode_SourceOver: - compositionModeStatus |= PorterDuff_SupportedPrimitives; + compositionModeStatus &= ~PorterDuff_AlwaysBlend; surface->SetPorterDuff(surface, DSPD_SRC_OVER); break; case QPainter::CompositionMode_DestinationOver: @@ -934,6 +906,8 @@ void QDirectFBPaintEnginePrivate::setCompositionMode(QPainter::CompositionMode m break; case QPainter::CompositionMode_SourceIn: surface->SetPorterDuff(surface, DSPD_SRC_IN); + if (!isPremultiplied) + compositionModeStatus &= ~PorterDuff_PremultiplyColors; break; case QPainter::CompositionMode_DestinationIn: surface->SetPorterDuff(surface, DSPD_DST_IN); @@ -964,7 +938,7 @@ void QDirectFBPaintEnginePrivate::setCompositionMode(QPainter::CompositionMode m break; #endif default: - compositionModeStatus = 0; + compositionModeStatus = PorterDuff_None; break; } } @@ -986,9 +960,6 @@ void QDirectFBPaintEnginePrivate::prepareForBlit(bool alpha) } surface->SetColor(surface, 0xff, 0xff, 0xff, opacity); surface->SetBlittingFlags(surface, blittingFlags); - if (compositionModeStatus & PorterDuff_Dirty) { - setCompositionMode(q->state()->composition_mode); - } } static inline uint ALPHA_MUL(uint x, uint a) @@ -1001,12 +972,20 @@ static inline uint ALPHA_MUL(uint x, uint a) void QDirectFBPaintEnginePrivate::setDFBColor(const QColor &color) { Q_ASSERT(surface); + Q_ASSERT(compositionModeStatus & PorterDuff_Supported); const quint8 alpha = (opacity == 255 ? color.alpha() : ALPHA_MUL(color.alpha(), opacity)); - surface->SetColor(surface, color.red(), color.green(), color.blue(), alpha); - surface->SetPorterDuff(surface, DSPD_NONE); - surface->SetDrawingFlags(surface, alpha == 255 ? DSDRAW_NOFX : DSDRAW_BLEND); - compositionModeStatus |= PorterDuff_Dirty; + QColor col; + if (compositionModeStatus & PorterDuff_PremultiplyColors) { + col = QColor(ALPHA_MUL(color.red(), alpha), + ALPHA_MUL(color.green(), alpha), + ALPHA_MUL(color.blue(), alpha), + alpha); + } else { + col = QColor(color.red(), color.green(), color.blue(), alpha); + } + surface->SetColor(surface, col.red(), col.green(), col.blue(), col.alpha()); + surface->SetDrawingFlags(surface, alpha == 255 && !(compositionModeStatus & PorterDuff_AlwaysBlend) ? DSDRAW_NOFX : DSDRAW_BLEND); } IDirectFBSurface *QDirectFBPaintEnginePrivate::getSurface(const QImage &img, bool *release) -- cgit v0.12 From 001d1a2eac5b0fe63ae9809c4c69065b7ae14f38 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 2 Mar 2010 09:33:27 +1000 Subject: Reapply "Some animation cleanup/refactoring." This reverts commit 543c4b82e6d6cc4a396b1c105d7321643b6ef4c6. Conflicts: src/declarative/util/qdeclarativeanimation.cpp --- src/declarative/util/qdeclarativeanimation.cpp | 11 ++++++----- src/declarative/util/qdeclarativeanimation_p_p.h | 21 ++++++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index 10230d3..ebf1a20 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -1573,7 +1573,8 @@ QDeclarativeSequentialAnimation::QDeclarativeSequentialAnimation(QObject *parent QDeclarativeAnimationGroup(parent) { Q_D(QDeclarativeAnimationGroup); - d->ag = new QSequentialAnimationGroup(this); + d->ag = new QSequentialAnimationGroup; + QDeclarative_setParent_noEvent(d->ag, this); } QDeclarativeSequentialAnimation::~QDeclarativeSequentialAnimation() @@ -1638,7 +1639,8 @@ QDeclarativeParallelAnimation::QDeclarativeParallelAnimation(QObject *parent) : QDeclarativeAnimationGroup(parent) { Q_D(QDeclarativeAnimationGroup); - d->ag = new QParallelAnimationGroup(this); + d->ag = new QParallelAnimationGroup; + QDeclarative_setParent_noEvent(d->ag, this); } QDeclarativeParallelAnimation::~QDeclarativeParallelAnimation() @@ -1797,7 +1799,7 @@ QDeclarativePropertyAnimation::~QDeclarativePropertyAnimation() void QDeclarativePropertyAnimationPrivate::init() { Q_Q(QDeclarativePropertyAnimation); - va = new QDeclarativeTimeLineValueAnimator; + va = new QDeclarativeBulkValueAnimator; QDeclarative_setParent_noEvent(va, q); } @@ -2213,7 +2215,7 @@ QAbstractAnimation *QDeclarativePropertyAnimation::qtAnimation() return d->va; } -struct PropertyUpdater : public QDeclarativeTimeLineValue +struct PropertyUpdater : public QDeclarativeBulkValueUpdater { QDeclarativeStateActions actions; int interpolatorType; //for Number/ColorAnimation @@ -2231,7 +2233,6 @@ struct PropertyUpdater : public QDeclarativeTimeLineValue wasDeleted = &deleted; if (reverse) //QVariantAnimation sends us 1->0 when reversed, but we are expecting 0->1 v = 1 - v; - QDeclarativeTimeLineValue::setValue(v); for (int ii = 0; ii < actions.count(); ++ii) { QDeclarativeAction &action = actions[ii]; diff --git a/src/declarative/util/qdeclarativeanimation_p_p.h b/src/declarative/util/qdeclarativeanimation_p_p.h index e582066..ae82a90 100644 --- a/src/declarative/util/qdeclarativeanimation_p_p.h +++ b/src/declarative/util/qdeclarativeanimation_p_p.h @@ -149,14 +149,21 @@ private: bool running; }; -//animates QDeclarativeTimeLineValue (assumes start and end values will be reals or compatible) -class QDeclarativeTimeLineValueAnimator : public QVariantAnimation +class QDeclarativeBulkValueUpdater +{ +public: + virtual ~QDeclarativeBulkValueUpdater() {} + virtual void setValue(qreal value) = 0; +}; + +//animates QDeclarativeBulkValueUpdater (assumes start and end values will be reals or compatible) +class QDeclarativeBulkValueAnimator : public QVariantAnimation { Q_OBJECT public: - QDeclarativeTimeLineValueAnimator(QObject *parent = 0) : QVariantAnimation(parent), animValue(0), fromSourced(0), policy(KeepWhenStopped) {} - ~QDeclarativeTimeLineValueAnimator() { if (policy == DeleteWhenStopped) { delete animValue; animValue = 0; } } - void setAnimValue(QDeclarativeTimeLineValue *value, DeletionPolicy p) + QDeclarativeBulkValueAnimator(QObject *parent = 0) : QVariantAnimation(parent), animValue(0), fromSourced(0), policy(KeepWhenStopped) {} + ~QDeclarativeBulkValueAnimator() { if (policy == DeleteWhenStopped) { delete animValue; animValue = 0; } } + void setAnimValue(QDeclarativeBulkValueUpdater *value, DeletionPolicy p) { if (state() == Running) stop(); @@ -193,7 +200,7 @@ protected: } private: - QDeclarativeTimeLineValue *animValue; + QDeclarativeBulkValueUpdater *animValue; bool *fromSourced; DeletionPolicy policy; }; @@ -352,7 +359,7 @@ public: int interpolatorType; QVariantAnimation::Interpolator interpolator; - QDeclarativeTimeLineValueAnimator *va; + QDeclarativeBulkValueAnimator *va; static QVariant interpolateVariant(const QVariant &from, const QVariant &to, qreal progress); static void convertVariant(QVariant &variant, int type); -- cgit v0.12 From d943ce63bd962763205796cfb5bf960e1228a0b3 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 2 Mar 2010 09:49:27 +1000 Subject: Replace remaining QGuard usage with QDeclarativeGuard. --- src/declarative/graphicsitems/qdeclarativegridview.cpp | 3 ++- src/declarative/graphicsitems/qdeclarativelistview.cpp | 3 ++- src/declarative/graphicsitems/qdeclarativepathview_p_p.h | 3 ++- src/declarative/util/qdeclarativeview.cpp | 5 +++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index b43b30b..8d778f8 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -45,6 +45,7 @@ #include "qdeclarativeflickable_p_p.h" #include +#include #include #include @@ -251,7 +252,7 @@ public: } } - QGuard model; + QDeclarativeGuard model; QVariant modelVariant; QList visibleItems; QHash unrequestedItems; diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 03303a0..02a8493 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include #include @@ -429,7 +430,7 @@ public: virtual void flickX(qreal velocity); virtual void flickY(qreal velocity); - QGuard model; + QDeclarativeGuard model; QVariant modelVariant; QList visibleItems; QHash unrequestedItems; diff --git a/src/declarative/graphicsitems/qdeclarativepathview_p_p.h b/src/declarative/graphicsitems/qdeclarativepathview_p_p.h index ca50910..6344a8a 100644 --- a/src/declarative/graphicsitems/qdeclarativepathview_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativepathview_p_p.h @@ -60,6 +60,7 @@ #include #include +#include #include @@ -132,7 +133,7 @@ public: int pathOffset; int requestedIndex; QList items; - QGuard model; + QDeclarativeGuard model; QVariant modelVariant; enum MovementReason { Other, Key, Mouse }; MovementReason moveReason; diff --git a/src/declarative/util/qdeclarativeview.cpp b/src/declarative/util/qdeclarativeview.cpp index a3c372d..f08e634 100644 --- a/src/declarative/util/qdeclarativeview.cpp +++ b/src/declarative/util/qdeclarativeview.cpp @@ -51,6 +51,7 @@ #include #include #include +#include #include #include @@ -136,8 +137,8 @@ public: QDeclarativeView *q; - QGuard root; - QGuard qmlRoot; + QDeclarativeGuard root; + QDeclarativeGuard qmlRoot; QUrl source; -- cgit v0.12 From 759888f3074deace6550a8b878d8464903dcfa09 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Tue, 2 Mar 2010 09:58:50 +1000 Subject: Test GridView.onAdd & GridView.onRemove. Reduce wait()s --- .../qdeclarativegridview/data/gridview.qml | 6 +++ .../tst_qdeclarativegridview.cpp | 59 ++++++++++++---------- 2 files changed, 39 insertions(+), 26 deletions(-) diff --git a/tests/auto/declarative/qdeclarativegridview/data/gridview.qml b/tests/auto/declarative/qdeclarativegridview/data/gridview.qml index 344b4b5..ba6b807 100644 --- a/tests/auto/declarative/qdeclarativegridview/data/gridview.qml +++ b/tests/auto/declarative/qdeclarativegridview/data/gridview.qml @@ -1,6 +1,10 @@ import Qt 4.6 Rectangle { + id: root + property int added: -1 + property var removed + width: 240 height: 320 color: "#ffffff" @@ -33,6 +37,8 @@ Rectangle { text: number } color: GridView.isCurrentItem ? "lightsteelblue" : "white" + GridView.onAdd: root.added = index + GridView.onRemove: root.removed = name } } ] diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp index 2a60fee..7a6a060 100644 --- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp +++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include #include @@ -253,7 +254,7 @@ void tst_QDeclarativeGridView::inserted() model.insertItem(1, "Will", "9876"); // let transitions settle. - QTest::qWait(300); + QTest::qWait(100); QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item @@ -264,6 +265,10 @@ void tst_QDeclarativeGridView::inserted() QVERIFY(number != 0); QCOMPARE(number->text(), model.number(1)); + // Checks that onAdd is called + int added = canvas->rootObject()->property("added").toInt(); + QCOMPARE(added, 1); + // Confirm items positioned correctly for (int i = 0; i < model.count(); ++i) { QDeclarativeItem *item = findItem(viewport, "wrapper", i); @@ -274,7 +279,7 @@ void tst_QDeclarativeGridView::inserted() model.insertItem(0, "Foo", "1111"); // zero index, and current item // let transitions settle. - QTest::qWait(300); + QTest::qWait(100); QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item @@ -296,14 +301,14 @@ void tst_QDeclarativeGridView::inserted() for (int i = model.count(); i < 30; ++i) model.insertItem(i, "Hello", QString::number(i)); - QTest::qWait(300); + QTest::qWait(100); gridview->setContentY(120); - QTest::qWait(300); + QTest::qWait(100); // Insert item outside visible area model.insertItem(1, "Hello", "1324"); - QTest::qWait(300); + QTest::qWait(100); QVERIFY(gridview->contentY() == 120); @@ -334,7 +339,7 @@ void tst_QDeclarativeGridView::removed() model.removeItem(1); // let transitions settle. - QTest::qWait(300); + QTest::qWait(100); QDeclarativeText *name = findItem(viewport, "textName", 1); QVERIFY(name != 0); @@ -343,6 +348,10 @@ void tst_QDeclarativeGridView::removed() QVERIFY(number != 0); QCOMPARE(number->text(), model.number(1)); + // Checks that onRemove is called + QString removed = canvas->rootObject()->property("removed").toString(); + QCOMPARE(removed, QString("Item1")); + // Confirm items positioned correctly int itemCount = findItems(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { @@ -357,7 +366,7 @@ void tst_QDeclarativeGridView::removed() model.removeItem(0); // let transitions settle. - QTest::qWait(300); + QTest::qWait(100); name = findItem(viewport, "textName", 0); QVERIFY(name != 0); @@ -379,7 +388,7 @@ void tst_QDeclarativeGridView::removed() // Remove items not visible model.removeItem(25); // let transitions settle. - QTest::qWait(300); + QTest::qWait(100); // Confirm items positioned correctly itemCount = findItems(viewport, "wrapper").count(); @@ -393,11 +402,11 @@ void tst_QDeclarativeGridView::removed() // Remove items before visible gridview->setContentY(120); - QTest::qWait(500); + QTest::qWait(100); gridview->setCurrentIndex(10); // let transitions settle. - QTest::qWait(300); + QTest::qWait(100); // Setting currentIndex above shouldn't cause view to scroll QCOMPARE(gridview->contentY(), 120.0); @@ -405,7 +414,7 @@ void tst_QDeclarativeGridView::removed() model.removeItem(1); // let transitions settle. - QTest::qWait(300); + QTest::qWait(100); // Confirm items positioned correctly for (int i = 6; i < 18; ++i) { @@ -419,14 +428,14 @@ void tst_QDeclarativeGridView::removed() // Remove currentIndex QDeclarativeItem *oldCurrent = gridview->currentItem(); model.removeItem(9); - QTest::qWait(500); + QTest::qWait(100); QCOMPARE(gridview->currentIndex(), 9); QVERIFY(gridview->currentItem() != oldCurrent); gridview->setContentY(0); // let transitions settle. - QTest::qWait(300); + QTest::qWait(100); // Confirm items positioned correctly itemCount = findItems(viewport, "wrapper").count(); @@ -440,7 +449,7 @@ void tst_QDeclarativeGridView::removed() // remove item outside current view. gridview->setCurrentIndex(32); - QTest::qWait(500); + QTest::qWait(100); gridview->setContentY(240); model.removeItem(30); @@ -448,21 +457,21 @@ void tst_QDeclarativeGridView::removed() // remove current item beyond visible items. gridview->setCurrentIndex(20); - QTest::qWait(500); + QTest::qWait(100); gridview->setContentY(0); model.removeItem(20); - QTest::qWait(500); + QTest::qWait(100); QCOMPARE(gridview->currentIndex(), 20); QVERIFY(gridview->currentItem() != 0); // remove item before current, but visible gridview->setCurrentIndex(8); - QTest::qWait(500); + QTest::qWait(100); gridview->setContentY(240); oldCurrent = gridview->currentItem(); model.removeItem(6); - QTest::qWait(500); + QTest::qWait(100); QCOMPARE(gridview->currentIndex(), 7); QVERIFY(gridview->currentItem() == oldCurrent); @@ -494,7 +503,7 @@ void tst_QDeclarativeGridView::moved() model.moveItem(1, 8); // let transitions settle. - QTest::qWait(300); + QTest::qWait(100); QDeclarativeText *name = findItem(viewport, "textName", 1); QVERIFY(name != 0); @@ -526,7 +535,7 @@ void tst_QDeclarativeGridView::moved() model.moveItem(1, 25); // let transitions settle. - QTest::qWait(300); + QTest::qWait(100); // Confirm items positioned correctly and indexes correct itemCount = findItems(viewport, "wrapper").count()-1; @@ -548,7 +557,7 @@ void tst_QDeclarativeGridView::moved() model.moveItem(28, 8); // let transitions settle. - QTest::qWait(300); + QTest::qWait(100); // Confirm items positioned correctly and indexes correct for (int i = 6; i < model.count()-6 && i < itemCount+6; ++i) { @@ -591,7 +600,7 @@ void tst_QDeclarativeGridView::currentIndex() QDeclarativeItem *viewport = gridview->viewport(); QVERIFY(viewport != 0); - QTest::qWait(500); + QTest::qWait(300); // current item should be third item QCOMPARE(gridview->currentIndex(), 5); @@ -618,7 +627,7 @@ void tst_QDeclarativeGridView::currentIndex() QCOMPARE(gridview->currentIndex(), 0); gridview->setCurrentIndex(model.count()-1); - QTest::qWait(500); + QTest::qWait(100); QCOMPARE(gridview->currentIndex(), model.count()-1); gridview->moveCurrentIndexRight(); @@ -677,8 +686,6 @@ void tst_QDeclarativeGridView::currentIndex() // turn off auto highlight gridview->setHighlightFollowsCurrentItem(false); QVERIFY(gridview->highlightFollowsCurrentItem() == false); - - QTest::qWait(500); QVERIFY(gridview->highlightItem()); qreal hlPosX = gridview->highlightItem()->x(); qreal hlPosY = gridview->highlightItem()->y(); @@ -729,7 +736,7 @@ void tst_QDeclarativeGridView::changeFlow() } ctxt->setContextProperty("testTopToBottom", QVariant(true)); - QTest::qWait(500); + QTest::qWait(100); // Confirm items positioned correctly and indexes correct itemCount = findItems(viewport, "wrapper").count(); -- cgit v0.12 From 7ac4de570aa37d4b6a30e2e935ebab3642415f74 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 2 Mar 2010 10:36:47 +1000 Subject: Minor optimization. --- src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp index cd72ef9..47ba917 100644 --- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp +++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp @@ -53,6 +53,7 @@ #include #include #include +#include #include #include @@ -984,8 +985,8 @@ QDeclarativeItem *QDeclarativeVisualDataModel::item(int index, const QByteArray if (complete) d->m_delegate->completeCreate(); if (nobj) { - ctxt->setParent(nobj); - data->setParent(nobj); + QDeclarative_setParent_noEvent(ctxt, nobj); + QDeclarative_setParent_noEvent(data, nobj); d->m_cache.insertItem(index, nobj); if (QDeclarativePackage *package = qobject_cast(nobj)) emit createdPackage(index, package); -- cgit v0.12 From 21c15c9efb1b34df6b990c69479979a336267d1b Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 2 Mar 2010 10:37:17 +1000 Subject: Fix warning. --- src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp index 47ba917..59d6db8 100644 --- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp +++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp @@ -1269,7 +1269,6 @@ void QDeclarativeVisualDataModel::_q_dataChanged(const QModelIndex &begin, const void QDeclarativeVisualDataModel::_q_modelReset() { - Q_D(QDeclarativeVisualDataModel); emit modelReset(); } -- cgit v0.12 From 2790cb59f6877c1027c833578b72e168c912758a Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Tue, 2 Mar 2010 10:47:10 +1000 Subject: Make "on" syntax mandatory for value sources and interceptors Where you would have written x: NumberAnimation {} y: Behavior {} you now must write NumberAnimation on x {} Behavior on y {} This change also makes the parser more strict with respect to multiple assignments to a single property - they're no longer allowed. For example this x: 10 x: 11 is now an error. --- demos/declarative/flickr/common/Loading.qml | 2 +- demos/declarative/flickr/mobile/GridDelegate.qml | 2 +- demos/declarative/flickr/mobile/ImageDetails.qml | 2 +- demos/declarative/flickr/mobile/ListDelegate.qml | 4 +- demos/declarative/minehunt/main.cpp | 5 +- demos/declarative/minehunt/minehunt.qml | 2 +- demos/declarative/samegame/content/BoomBlock.qml | 6 +- demos/declarative/samegame/content/Dialog.qml | 2 +- demos/declarative/samegame/samegame.qml | 2 +- demos/declarative/snake/content/Cookie.qml | 2 +- demos/declarative/snake/content/Link.qml | 8 +- demos/declarative/snake/content/Skull.qml | 6 +- demos/declarative/snake/content/snake.js | 4 +- demos/declarative/snake/snake.qml | 6 +- demos/declarative/twitter/content/FatDelegate.qml | 2 +- demos/declarative/twitter/content/Loading.qml | 2 +- demos/declarative/twitter/twitter.qml | 2 +- .../declarative/animations/color-animation.qml | 10 +- .../declarative/animations/property-animation.qml | 2 +- .../declarative/aspectratio/face_fit_animated.qml | 2 +- examples/declarative/behaviours/behavior.qml | 6 +- examples/declarative/behaviours/test.qml | 102 ---------- .../border-image/content/MyBorderImage.qml | 4 +- examples/declarative/clocks/content/Clock.qml | 6 +- examples/declarative/connections/connections.qml | 2 +- examples/declarative/dial/content/Dial.qml | 2 +- examples/declarative/effects/effects.qml | 4 +- examples/declarative/fillmode/fillmode.qml | 2 +- examples/declarative/fonts/banner.qml | 2 +- examples/declarative/fonts/hello.qml | 4 +- examples/declarative/layouts/positioners.qml | 20 +- .../listview/content/ClickAutoRepeating.qml | 2 +- examples/declarative/listview/highlight.qml | 2 +- examples/declarative/parallax/qml/Smiley.qml | 2 +- .../progressbar/content/ProgressBar.qml | 2 +- examples/declarative/progressbar/progressbars.qml | 6 +- examples/declarative/snow/ImageBatch.qml | 72 ------- examples/declarative/snow/Loading.qml | 8 - examples/declarative/snow/create.js | 12 -- examples/declarative/snow/pics/loading.png | Bin 761 -> 0 bytes examples/declarative/snow/snow.qml | 69 ------- .../tutorials/samegame/samegame3/Dialog.qml | 2 +- .../samegame/samegame4/content/BoomBlock.qml | 6 +- .../samegame/samegame4/content/Dialog.qml | 2 +- examples/declarative/tvtennis/tvtennis.qml | 8 +- examples/declarative/velocity/Day.qml | 2 +- src/declarative/qml/qdeclarativecompiler.cpp | 209 ++++++++++++--------- src/declarative/qml/qdeclarativecompiler_p.h | 5 + src/declarative/qml/qdeclarativedom.cpp | 14 +- src/declarative/qml/qdeclarativeparser.cpp | 9 +- src/declarative/qml/qdeclarativeparser_p.h | 3 + src/declarative/qml/qdeclarativescriptparser.cpp | 66 +++++-- tests/auto/declarative/examples/tst_examples.cpp | 1 - .../qdeclarativeanimations/data/badtype1.qml | 2 +- .../qdeclarativeanimations/data/badtype2.qml | 2 +- .../qdeclarativeanimations/data/badtype3.qml | 2 +- .../qdeclarativeanimations/data/dontAutoStart.qml | 2 +- .../qdeclarativeanimations/data/dontStart.qml | 2 +- .../qdeclarativeanimations/data/properties.qml | 2 +- .../qdeclarativeanimations/data/properties2.qml | 2 +- .../qdeclarativeanimations/data/properties3.qml | 2 +- .../qdeclarativeanimations/data/properties4.qml | 2 +- .../qdeclarativeanimations/data/properties5.qml | 2 +- .../qdeclarativeanimations/data/valuesource.qml | 2 +- .../qdeclarativeanimations/data/valuesource2.qml | 2 +- .../qdeclarativebehaviors/data/binding.qml | 2 +- .../qdeclarativebehaviors/data/color.qml | 2 +- .../qdeclarativebehaviors/data/cpptrigger.qml | 2 +- .../qdeclarativebehaviors/data/disabled.qml | 2 +- .../qdeclarativebehaviors/data/dontStart.qml | 2 +- .../qdeclarativebehaviors/data/empty.qml | 2 +- .../qdeclarativebehaviors/data/explicit.qml | 2 +- .../qdeclarativebehaviors/data/groupProperty.qml | 2 +- .../qdeclarativebehaviors/data/groupProperty2.qml | 2 +- .../qdeclarativebehaviors/data/loop.qml | 2 +- .../qdeclarativebehaviors/data/nonSelecting2.qml | 2 +- .../qdeclarativebehaviors/data/parent.qml | 2 +- .../data/reassignedAnimation.qml | 2 +- .../qdeclarativebehaviors/data/scripttrigger.qml | 2 +- .../qdeclarativebehaviors/data/simple.qml | 2 +- .../tst_qdeclarativebehaviors.cpp | 2 +- .../qdeclarativedom/tst_qdeclarativedom.cpp | 72 +++---- .../qdeclarativelanguage/data/assignBasicTypes.qml | 2 - .../data/component.3.errors.txt | 2 +- .../data/doubleSignal.errors.txt | 2 +- .../data/invalidGroupedProperty.6.errors.txt | 2 +- .../data/invalidID.4.errors.txt | 2 +- .../data/listAssignment.3.errors.txt | 2 +- .../data/multiSet.1.errors.txt | 1 + .../qdeclarativelanguage/data/multiSet.1.qml | 7 + .../data/multiSet.10.errors.txt | 1 + .../qdeclarativelanguage/data/multiSet.10.qml | 6 + .../data/multiSet.2.errors.txt | 1 + .../qdeclarativelanguage/data/multiSet.2.qml | 7 + .../data/multiSet.3.errors.txt | 1 + .../qdeclarativelanguage/data/multiSet.3.qml | 7 + .../data/multiSet.4.errors.txt | 1 + .../qdeclarativelanguage/data/multiSet.4.qml | 7 + .../data/multiSet.5.errors.txt | 1 + .../qdeclarativelanguage/data/multiSet.5.qml | 6 + .../data/multiSet.6.errors.txt | 1 + .../qdeclarativelanguage/data/multiSet.6.qml | 7 + .../data/multiSet.7.errors.txt | 1 + .../qdeclarativelanguage/data/multiSet.7.qml | 7 + .../data/multiSet.8.errors.txt | 1 + .../qdeclarativelanguage/data/multiSet.8.qml | 8 + .../data/multiSet.9.errors.txt | 1 + .../qdeclarativelanguage/data/multiSet.9.qml | 6 + .../data/propertyValueSource.2.qml | 2 +- .../data/propertyValueSource.qml | 2 +- .../qdeclarativelanguage/data/script.8.errors.txt | 2 +- .../declarative/qdeclarativelanguage/testtypes.h | 5 + .../tst_qdeclarativelanguage.cpp | 11 ++ .../qdeclarativeparticles/data/particles.qml | 2 +- .../qdeclarativepathview/data/pathview2.qml | 2 +- .../qdeclarativepathview/data/pathview3.qml | 2 +- .../data/valueInterceptors.qml | 2 +- .../qdeclarativevaluetypes/data/valueSources.qml | 2 +- .../tst_qdeclarativevaluetypes.cpp | 3 +- tools/qml/qfxtester.h | 4 +- 120 files changed, 454 insertions(+), 532 deletions(-) delete mode 100644 examples/declarative/behaviours/test.qml delete mode 100644 examples/declarative/snow/ImageBatch.qml delete mode 100644 examples/declarative/snow/Loading.qml delete mode 100644 examples/declarative/snow/create.js delete mode 100644 examples/declarative/snow/pics/loading.png delete mode 100644 examples/declarative/snow/snow.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.qml diff --git a/demos/declarative/flickr/common/Loading.qml b/demos/declarative/flickr/common/Loading.qml index 174cd21..938a080 100644 --- a/demos/declarative/flickr/common/Loading.qml +++ b/demos/declarative/flickr/common/Loading.qml @@ -2,7 +2,7 @@ import Qt 4.6 Image { id: loading; source: "pics/loading.png"; transformOrigin: "Center" - rotation: NumberAnimation { + NumberAnimation on rotation { from: 0; to: 360; running: loading.visible == true; repeat: true; duration: 900 } } diff --git a/demos/declarative/flickr/mobile/GridDelegate.qml b/demos/declarative/flickr/mobile/GridDelegate.qml index 7634573..291d874 100644 --- a/demos/declarative/flickr/mobile/GridDelegate.qml +++ b/demos/declarative/flickr/mobile/GridDelegate.qml @@ -23,7 +23,7 @@ Item { anchors.centerIn: parent scale: 0.0 - scale: Behavior { NumberAnimation { easing.type: "InOutQuad"} } + Behavior on scale { NumberAnimation { easing.type: "InOutQuad"} } id: scaleMe Rectangle { height: 79; width: 79; id: blackRect; anchors.centerIn: parent; color: "black"; smooth: true } diff --git a/demos/declarative/flickr/mobile/ImageDetails.qml b/demos/declarative/flickr/mobile/ImageDetails.qml index 8749b4c..f1b3c7d 100644 --- a/demos/declarative/flickr/mobile/ImageDetails.qml +++ b/demos/declarative/flickr/mobile/ImageDetails.qml @@ -45,7 +45,7 @@ Flipable { Text { color: "white"; elide: Text.ElideRight; text: "Author: " + container.photoAuthor } Text { color: "white"; elide: Text.ElideRight; text: "Published: " + container.photoDate } Text { color: "white"; elide: Text.ElideRight; text: container.photoTags == "" ? "" : "Tags: " } - Text { color: "white"; elide: Text.ElideRight; elide: Text.ElideRight; text: container.photoTags } + Text { color: "white"; elide: Text.ElideRight; text: container.photoTags } } } diff --git a/demos/declarative/flickr/mobile/ListDelegate.qml b/demos/declarative/flickr/mobile/ListDelegate.qml index 75c4572..381664b 100644 --- a/demos/declarative/flickr/mobile/ListDelegate.qml +++ b/demos/declarative/flickr/mobile/ListDelegate.qml @@ -15,8 +15,8 @@ Component { Column { x: 92; width: wrapper.ListView.view.width - 95; y: 15; spacing: 2 Text { text: title; color: "white"; width: parent.width; font.bold: true; elide: Text.ElideRight; style: Text.Raised; styleColor: "black" } - Text { text: photoAuthor; color: "white"; width: parent.width; elide: Text.ElideLeft; color: "#cccccc"; style: Text.Raised; styleColor: "black" } - Text { text: photoDate; color: "white"; width: parent.width; elide: Text.ElideRight; color: "#cccccc"; style: Text.Raised; styleColor: "black" } + Text { text: photoAuthor; width: parent.width; elide: Text.ElideLeft; color: "#cccccc"; style: Text.Raised; styleColor: "black" } + Text { text: photoDate; width: parent.width; elide: Text.ElideRight; color: "#cccccc"; style: Text.Raised; styleColor: "black" } } } } diff --git a/demos/declarative/minehunt/main.cpp b/demos/declarative/minehunt/main.cpp index 0e99731..c8b4b54 100644 --- a/demos/declarative/minehunt/main.cpp +++ b/demos/declarative/minehunt/main.cpp @@ -100,8 +100,8 @@ public: MyWidget(int = 370, int = 480, QWidget *parent=0, Qt::WindowFlags flags=0); ~MyWidget(); - Q_PROPERTY(QList *tiles READ tiles CONSTANT); - QList *tiles() { return &_tiles; } + Q_PROPERTY(QDeclarativeListProperty tiles READ tiles CONSTANT); + QDeclarativeListProperty tiles() { return QDeclarativeListProperty(this, _tiles); } Q_PROPERTY(bool isPlaying READ isPlaying NOTIFY isPlayingChanged); bool isPlaying() {return playing;} @@ -168,7 +168,6 @@ MyWidget::MyWidget(int width, int height, QWidget *parent, Qt::WindowFlags flags QDeclarativeContext *ctxt = canvas->rootContext(); ctxt->addDefaultObject(this); - ctxt->setContextProperty("tiles", QVariant::fromValue*>(&_tiles));//QTBUG-5675 canvas->setSource(QUrl::fromLocalFile(fileName)); } diff --git a/demos/declarative/minehunt/minehunt.qml b/demos/declarative/minehunt/minehunt.qml index 617a6ed..c54e741 100644 --- a/demos/declarative/minehunt/minehunt.qml +++ b/demos/declarative/minehunt/minehunt.qml @@ -32,7 +32,7 @@ Item { anchors.verticalCenter: parent.verticalCenter source: "pics/flag.png" opacity: model.hasFlag - opacity: Behavior { + Behavior on opacity { NumberAnimation { property: "opacity" duration: 250 diff --git a/demos/declarative/samegame/content/BoomBlock.qml b/demos/declarative/samegame/content/BoomBlock.qml index 723e62a..e48194a 100644 --- a/demos/declarative/samegame/content/BoomBlock.qml +++ b/demos/declarative/samegame/content/BoomBlock.qml @@ -7,8 +7,8 @@ Item { id:block property int targetX: 0 property int targetY: 0 - x: SpringFollow { enabled: spawned; source: targetX; spring: 2; damping: 0.2 } - y: SpringFollow { source: targetY; spring: 2; damping: 0.2 } + SpringFollow on x { enabled: spawned; source: targetX; spring: 2; damping: 0.2 } + SpringFollow on y { source: targetY; spring: 2; damping: 0.2 } Image { id: img source: { @@ -21,7 +21,7 @@ Item { id:block } } opacity: 0 - opacity: Behavior { NumberAnimation { duration: 200 } } + Behavior on opacity { NumberAnimation { duration: 200 } } anchors.fill: parent } diff --git a/demos/declarative/samegame/content/Dialog.qml b/demos/declarative/samegame/content/Dialog.qml index 7769328..6d5d6b5 100644 --- a/demos/declarative/samegame/content/Dialog.qml +++ b/demos/declarative/samegame/content/Dialog.qml @@ -14,7 +14,7 @@ Rectangle { property Item text: myText color: "white"; border.width: 1; width: myText.width + 20; height: myText.height + 40; opacity: 0 - opacity: Behavior { + Behavior on opacity { NumberAnimation { duration: 1000 } } Text { id: myText; anchors.centerIn: parent; text: "Hello World!" } diff --git a/demos/declarative/samegame/samegame.qml b/demos/declarative/samegame/samegame.qml index 50f6293..c81f292 100644 --- a/demos/declarative/samegame/samegame.qml +++ b/demos/declarative/samegame/samegame.qml @@ -39,7 +39,7 @@ Rectangle { Dialog { id: scoreName; anchors.centerIn: parent; z: 22; property int initialWidth: 0 - width: Behavior{NumberAnimation{} enabled: initialWidth!=0} + Behavior on width {NumberAnimation{} enabled: initialWidth!=0} Text { id: spacer anchors.left: scoreName.left diff --git a/demos/declarative/snake/content/Cookie.qml b/demos/declarative/snake/content/Cookie.qml index 7f0aadf..0ea95cb 100644 --- a/demos/declarative/snake/content/Cookie.qml +++ b/demos/declarative/snake/content/Cookie.qml @@ -17,7 +17,7 @@ Item { anchors.fill: parent source: "pics/cookie.png" opacity: 0 - opacity: Behavior { NumberAnimation { duration: 100 } } + Behavior on opacity { NumberAnimation { duration: 100 } } Text { font.bold: true anchors.verticalCenter: parent.verticalCenter diff --git a/demos/declarative/snake/content/Link.qml b/demos/declarative/snake/content/Link.qml index 1b3f7bf..31ac4b9 100644 --- a/demos/declarative/snake/content/Link.qml +++ b/demos/declarative/snake/content/Link.qml @@ -13,8 +13,8 @@ Item { id:link x: margin - 3 + gridSize * column y: margin - 3 + gridSize * row - x: Behavior { NumberAnimation { duration: spawned ? heartbeatInterval : 0} } - y: Behavior { NumberAnimation { duration: spawned ? heartbeatInterval : 0 } } + Behavior on x { NumberAnimation { duration: spawned ? heartbeatInterval : 0} } + Behavior on y { NumberAnimation { duration: spawned ? heartbeatInterval : 0 } } Item { @@ -35,7 +35,7 @@ Item { id:link id: actualImageRotation origin.x: width/2; origin.y: height/2; angle: rotation * 90 - angle: Behavior{ NumberAnimation { duration: spawned ? 200 : 0} } + Behavior on angle { NumberAnimation { duration: spawned ? 200 : 0} } } } @@ -44,7 +44,7 @@ Item { id:link } opacity: 0 - opacity: Behavior { NumberAnimation { duration: 200 } } + Behavior on opacity { NumberAnimation { duration: 200 } } } diff --git a/demos/declarative/snake/content/Skull.qml b/demos/declarative/snake/content/Skull.qml index 585e7d3..821996a 100644 --- a/demos/declarative/snake/content/Skull.qml +++ b/demos/declarative/snake/content/Skull.qml @@ -9,11 +9,11 @@ Image { x: margin + column * gridSize + 2 y: margin + row * gridSize - 3 - x: Behavior { NumberAnimation { duration: spawned ? halfbeatInterval : 0} } - y: Behavior { NumberAnimation { duration: spawned ? halfbeatInterval : 0 } } + Behavior on x { NumberAnimation { duration: spawned ? halfbeatInterval : 0} } + Behavior on y { NumberAnimation { duration: spawned ? halfbeatInterval : 0 } } opacity: spawned ? 1 : 0 - opacity: Behavior { NumberAnimation { duration: 200 } } + Behavior on opacity { NumberAnimation { duration: 200 } } source: "pics/skull.png" width: 24 diff --git a/demos/declarative/snake/content/snake.js b/demos/declarative/snake/content/snake.js index a65aebc..12176c7 100644 --- a/demos/declarative/snake/content/snake.js +++ b/demos/declarative/snake/content/snake.js @@ -54,7 +54,7 @@ function startNewGame() } else { if(linkComponent.isReady == false){ if(linkComponent.isError == true) - print(linkComponent.errorString()); + print(linkComponent.errorsString()); else print("Still loading linkComponent"); continue;//TODO: Better error handling? @@ -295,7 +295,7 @@ function createCookie(value) { if(cookieComponent.isReady == false){ if(cookieComponent.isError == true) - print(cookieComponent.errorString()); + print(cookieComponent.errorsString()); else print("Still loading cookieComponent"); return;//TODO: Better error handling? diff --git a/demos/declarative/snake/snake.qml b/demos/declarative/snake/snake.qml index 09b6b7f..f9d02c7 100644 --- a/demos/declarative/snake/snake.qml +++ b/demos/declarative/snake/snake.qml @@ -65,7 +65,7 @@ Rectangle { anchors.fill: parent anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter - opacity: Behavior { NumberAnimation { duration: 500 } } + Behavior on opacity { NumberAnimation { duration: 500 } } Text { color: "white" @@ -121,7 +121,7 @@ Rectangle { Rectangle { id: progressBar opacity: 0 - opacity: Behavior { NumberAnimation { duration: 200 } } + Behavior on opacity { NumberAnimation { duration: 200 } } color: "transparent" border.width: 2 border.color: "#221edd" @@ -137,7 +137,7 @@ Rectangle { id: progressIndicator color: "#221edd"; width: 0; - width: Behavior { NumberAnimation { duration: startHeartbeatTimer.running ? 1000 : 0}} + Behavior on width { NumberAnimation { duration: startHeartbeatTimer.running ? 1000 : 0}} height: 30; } } diff --git a/demos/declarative/twitter/content/FatDelegate.qml b/demos/declarative/twitter/content/FatDelegate.qml index 2b9288b..0f013e6 100644 --- a/demos/declarative/twitter/content/FatDelegate.qml +++ b/demos/declarative/twitter/content/FatDelegate.qml @@ -37,7 +37,7 @@ Component { + ''+userScreenName + " from " +source + "
" + addTags(statusText) + ""; textFormat: Qt.RichText - color: "white"; color: "#cccccc"; style: Text.Raised; styleColor: "black"; wrap: true + color: "#cccccc"; style: Text.Raised; styleColor: "black"; wrap: true anchors.left: whiteRect.right; anchors.right: blackRect.right; anchors.leftMargin: 6; anchors.rightMargin: 6 onLinkActivated: handleLink(link) } diff --git a/demos/declarative/twitter/content/Loading.qml b/demos/declarative/twitter/content/Loading.qml index 3151415..76bf64b 100644 --- a/demos/declarative/twitter/content/Loading.qml +++ b/demos/declarative/twitter/content/Loading.qml @@ -2,7 +2,7 @@ import Qt 4.6 Image { id: loading; source: "images/loading.png"; transformOrigin: "Center" - rotation: NumberAnimation { + NumberAnimation on rotation { from: 0; to: 360; running: loading.visible == true; repeat: true; duration: 900 } } diff --git a/demos/declarative/twitter/twitter.qml b/demos/declarative/twitter/twitter.qml index b091b03..0ea1309 100644 --- a/demos/declarative/twitter/twitter.qml +++ b/demos/declarative/twitter/twitter.qml @@ -35,7 +35,7 @@ Item { Text { width: 180 text: "Could not access twitter using this screen name and password pair."; - color: "white"; color: "#cccccc"; style: Text.Raised; styleColor: "black"; wrap: true + color: "#cccccc"; style: Text.Raised; styleColor: "black"; wrap: true visible: rssModel.status==XmlListModel.Error; anchors.centerIn: parent } diff --git a/examples/declarative/animations/color-animation.qml b/examples/declarative/animations/color-animation.qml index 7171a69..6740522 100644 --- a/examples/declarative/animations/color-animation.qml +++ b/examples/declarative/animations/color-animation.qml @@ -10,7 +10,7 @@ Item { gradient: Gradient { GradientStop { position: 0.0 - color: SequentialAnimation { + SequentialAnimation on color { repeat: true ColorAnimation { from: "DeepSkyBlue"; to: "#0E1533"; duration: 5000 } ColorAnimation { from: "#0E1533"; to: "DeepSkyBlue"; duration: 5000 } @@ -18,7 +18,7 @@ Item { } GradientStop { position: 1.0 - color: SequentialAnimation { + SequentialAnimation on color { repeat: true ColorAnimation { from: "SkyBlue"; to: "#437284"; duration: 5000 } ColorAnimation { from: "#437284"; to: "SkyBlue"; duration: 5000 } @@ -31,7 +31,7 @@ Item { Item { width: parent.width; height: 2 * parent.height transformOrigin: Item.Center - rotation: NumberAnimation { from: 0; to: 360; duration: 10000; repeat: true } + NumberAnimation on rotation { from: 0; to: 360; duration: 10000; repeat: true } Image { source: "images/sun.png"; y: 10; anchors.horizontalCenter: parent.horizontalCenter transformOrigin: Item.Center; rotation: -3 * parent.rotation @@ -44,7 +44,7 @@ Item { x: 0; y: parent.height/2; width: parent.width; height: parent.height/2 source: "images/star.png"; angleDeviation: 360; velocity: 0 velocityDeviation: 0; count: parent.width / 10; fadeInDuration: 2800 - opacity: SequentialAnimation { + SequentialAnimation on opacity { repeat: true NumberAnimation { from: 0; to: 1; duration: 5000 } NumberAnimation { from: 1; to: 0; duration: 5000 } @@ -58,7 +58,7 @@ Item { gradient: Gradient { GradientStop { position: 0.0 - color: SequentialAnimation { + SequentialAnimation on color { repeat: true ColorAnimation { from: "ForestGreen"; to: "#001600"; duration: 5000 } ColorAnimation { from: "#001600"; to: "ForestGreen"; duration: 5000 } diff --git a/examples/declarative/animations/property-animation.qml b/examples/declarative/animations/property-animation.qml index 537ee26..4428f34 100644 --- a/examples/declarative/animations/property-animation.qml +++ b/examples/declarative/animations/property-animation.qml @@ -42,7 +42,7 @@ Item { // Animate the y property. Setting repeat to true makes the // animation repeat indefinitely, otherwise it would only run once. - y: SequentialAnimation { + SequentialAnimation on y { repeat: true // Move from minHeight to maxHeight in 300ms, using the OutExpo easing function diff --git a/examples/declarative/aspectratio/face_fit_animated.qml b/examples/declarative/aspectratio/face_fit_animated.qml index 90ea516..79e99e9 100644 --- a/examples/declarative/aspectratio/face_fit_animated.qml +++ b/examples/declarative/aspectratio/face_fit_animated.qml @@ -18,7 +18,7 @@ Rectangle { source: "pics/face.png" x: (parent.width-width*scale)/2 y: (parent.height-height*scale)/2 - scale: SpringFollow { + SpringFollow on scale { source: Math.max(Math.min(face.parent.width/face.width*1.333,face.parent.height/face.height), Math.min(face.parent.width/face.width,face.parent.height/face.height*1.333)) spring: 1 diff --git a/examples/declarative/behaviours/behavior.qml b/examples/declarative/behaviours/behavior.qml index 2732c0a..c84bf62 100644 --- a/examples/declarative/behaviours/behavior.qml +++ b/examples/declarative/behaviours/behavior.qml @@ -50,12 +50,12 @@ Rectangle { radius: 5 border.width: 10; border.color: "white"; x: 100-37; y: 100-25 - x: Behavior { NumberAnimation { duration: 300 } } - y: Behavior { NumberAnimation { duration: 300 } } + Behavior on x { NumberAnimation { duration: 300 } } + Behavior on y { NumberAnimation { duration: 300 } } Text { id: focusText text: focusRect.text; - text: Behavior { + Behavior on text { SequentialAnimation { NumberAnimation { target: focusText; property: "opacity"; to: 0; duration: 150 } PropertyAction {} diff --git a/examples/declarative/behaviours/test.qml b/examples/declarative/behaviours/test.qml deleted file mode 100644 index 8fffd59..0000000 --- a/examples/declarative/behaviours/test.qml +++ /dev/null @@ -1,102 +0,0 @@ -import Qt 4.6 - -Rectangle { - color: "lightsteelblue" - width: 800 - height: 600 - id: page - MouseArea { - anchors.fill: parent - onClicked: { bluerect.parent = page; console.log(mouseX); bluerect.x = mouseX; } - } - MyRect { - color: "green" - x: 200 - y: 200 - } - MyRect { - color: "red" - x: 400 - y: 200 - } - MyRect { - color: "yellow" - x: 400 - y: 400 - } - MyRect { - color: "orange" - x: 400 - y: 500 - } - MyRect { - color: "pink" - x: 400 - y: 0 - } - MyRect { - color: "lightsteelblue" - x: 100 - y: 500 - } - MyRect { - color: "black" - x: 0 - y: 200 - } - MyRect { - color: "white" - x: 400 - y: 0 - } - Rectangle { - color: "blue" - x: 0 - y: 0 - width: 100 - height: 100 - id: bluerect - x: Behavior { - ParallelAnimation { - SequentialAnimation { - NumberAnimation { - target: bluerect - property: "y" - from: 0 - to: 10 - easing.type: "OutBounce" - easing.amplitude: 30 - duration: 250 - } - NumberAnimation { - target: bluerect - property: "y" - from: 10 - to: 0 - easing.type: "OutBounce" - easing.amplitude: 30 - duration: 250 - } - } - NumberAnimation { duration: 500 } - } - } - parent: Behavior { - SequentialAnimation { - NumberAnimation { - target: bluerect - property: "opacity" - to: 0 - duration: 150 - } - PropertyAction {} - NumberAnimation { - target: bluerect - property: "opacity" - to: 1 - duration: 150 - } - } - } - } -} diff --git a/examples/declarative/border-image/content/MyBorderImage.qml b/examples/declarative/border-image/content/MyBorderImage.qml index ca886e9..5621e18 100644 --- a/examples/declarative/border-image/content/MyBorderImage.qml +++ b/examples/declarative/border-image/content/MyBorderImage.qml @@ -17,13 +17,13 @@ Item { BorderImage { id: image; x: container.width / 2 - width / 2; y: container.height / 2 - height / 2 - width: SequentialAnimation { + SequentialAnimation on width { repeat: true NumberAnimation { from: container.minWidth; to: container.maxWidth; duration: 2000; easing.type: "InOutQuad"} NumberAnimation { from: container.maxWidth; to: container.minWidth; duration: 2000; easing.type: "InOutQuad" } } - height: SequentialAnimation { + SequentialAnimation on height { repeat: true NumberAnimation { from: container.minHeight; to: container.maxHeight; duration: 2000; easing.type: "InOutQuad"} NumberAnimation { from: container.maxHeight; to: container.minHeight; duration: 2000; easing.type: "InOutQuad" } diff --git a/examples/declarative/clocks/content/Clock.qml b/examples/declarative/clocks/content/Clock.qml index 0c6836f..75a1cf5 100644 --- a/examples/declarative/clocks/content/Clock.qml +++ b/examples/declarative/clocks/content/Clock.qml @@ -34,7 +34,7 @@ Item { transform: Rotation { id: hourRotation origin.x: 7.5; origin.y: 73; angle: 0 - angle: SpringFollow { + SpringFollow on angle { spring: 2; damping: 0.2; modulus: 360 source: (clock.hours * 30) + (clock.minutes * 0.5) } @@ -48,7 +48,7 @@ Item { transform: Rotation { id: minuteRotation origin.x: 6.5; origin.y: 83; angle: 0 - angle: SpringFollow { + SpringFollow on angle { spring: 2; damping: 0.2; modulus: 360 source: clock.minutes * 6 } @@ -62,7 +62,7 @@ Item { transform: Rotation { id: secondRotation origin.x: 2.5; origin.y: 80; angle: 0 - angle: SpringFollow { + SpringFollow on angle { spring: 5; damping: 0.25; modulus: 360 source: clock.seconds * 6 } diff --git a/examples/declarative/connections/connections.qml b/examples/declarative/connections/connections.qml index 4692343..c35bda5 100644 --- a/examples/declarative/connections/connections.qml +++ b/examples/declarative/connections/connections.qml @@ -10,7 +10,7 @@ Rectangle { Image { id: image; source: "content/bg1.jpg"; anchors.centerIn: parent; transformOrigin: Item.Center rotation: window.angle - rotation: Behavior { NumberAnimation { easing.type: "OutCubic"; duration: 300 } } + Behavior on rotation { NumberAnimation { easing.type: "OutCubic"; duration: 300 } } } Button { diff --git a/examples/declarative/dial/content/Dial.qml b/examples/declarative/dial/content/Dial.qml index 6fd0f39..ad4717a 100644 --- a/examples/declarative/dial/content/Dial.qml +++ b/examples/declarative/dial/content/Dial.qml @@ -26,7 +26,7 @@ Item { id: needleRotation origin.x: 7; origin.y: 65 angle: -130 - angle: SpringFollow { + SpringFollow on angle { spring: 1.4 damping: .15 source: Math.min(Math.max(-130, root.value*2.6 - 130), 133) diff --git a/examples/declarative/effects/effects.qml b/examples/declarative/effects/effects.qml index 0674433..997d7de 100644 --- a/examples/declarative/effects/effects.qml +++ b/examples/declarative/effects/effects.qml @@ -11,7 +11,7 @@ Rectangle { source: "pic.png" effect: Blur { - blurRadius: NumberAnimation { + NumberAnimation on blurRadius { id: blurEffect running: false from: 0; to: 10 @@ -33,7 +33,7 @@ Rectangle { effect: DropShadow { blurRadius: 3 offset.x: 3 - offset.y: NumberAnimation { id: dropShadowEffect; from: 0; to: 10; duration: 1000; running: false; repeat: true; } + NumberAnimation on offset.y { id: dropShadowEffect; from: 0; to: 10; duration: 1000; running: false; repeat: true; } } MouseArea { anchors.fill: parent; onClicked: dropShadowEffect.running = !dropShadowEffect.running } diff --git a/examples/declarative/fillmode/fillmode.qml b/examples/declarative/fillmode/fillmode.qml index ec3717f..ab0f81c 100644 --- a/examples/declarative/fillmode/fillmode.qml +++ b/examples/declarative/fillmode/fillmode.qml @@ -4,7 +4,7 @@ Image { width: 400 height: 250 source: "face.png" - fillMode: SequentialAnimation { + SequentialAnimation on fillMode { repeat: true PropertyAction { value: Image.Stretch } PropertyAction { target: label; property: "text"; value: "Stretch" } diff --git a/examples/declarative/fonts/banner.qml b/examples/declarative/fonts/banner.qml index 00b8660..7989f80 100644 --- a/examples/declarative/fonts/banner.qml +++ b/examples/declarative/fonts/banner.qml @@ -10,7 +10,7 @@ Rectangle { Row { y: -screen.height / 4.5 - x: NumberAnimation { from: 0; to: -text.width; duration: 6000; repeat: true } + NumberAnimation on x { from: 0; to: -text.width; duration: 6000; repeat: true } Text { id: text; font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } Text { font.pixelSize: screen.pixelSize; color: screen.textColor; text: screen.text } diff --git a/examples/declarative/fonts/hello.qml b/examples/declarative/fonts/hello.qml index fcc9580..334409e 100644 --- a/examples/declarative/fonts/hello.qml +++ b/examples/declarative/fonts/hello.qml @@ -9,7 +9,7 @@ Rectangle { id: text; color: "white"; anchors.centerIn: parent text: "Hello world!"; font.pixelSize: 60 - font.letterSpacing: SequentialAnimation { + SequentialAnimation on font.letterSpacing { repeat: true; NumberAnimation { from: 100; to: 300; easing.type: "InQuad"; duration: 3000 } ScriptAction { script: { @@ -17,7 +17,7 @@ Rectangle { container.x = (screen.width / 4) + (Math.random() * screen.width / 2) } } } - opacity: SequentialAnimation { + SequentialAnimation on opacity { repeat: true; NumberAnimation { from: 1; to: 0; duration: 2600 } PauseAnimation { duration: 400 } diff --git a/examples/declarative/layouts/positioners.qml b/examples/declarative/layouts/positioners.qml index 7146702..bce53bd 100644 --- a/examples/declarative/layouts/positioners.qml +++ b/examples/declarative/layouts/positioners.qml @@ -21,11 +21,11 @@ Rectangle { } Rectangle { color: "red"; width: 100; height: 50; border.color: "black"; radius: 15 } Rectangle { id: blueV1; color: "lightsteelblue"; width: 100; height: 50; border.color: "black"; radius: 15 - opacity: Behavior{NumberAnimation{}} + Behavior on opacity {NumberAnimation{}} } Rectangle { color: "green"; width: 100; height: 50; border.color: "black"; radius: 15 } Rectangle { id: blueV2; color: "lightsteelblue"; width: 100; height: 50; border.color: "black"; radius: 15 - opacity: Behavior{NumberAnimation{}} + Behavior on opacity {NumberAnimation{}} } Rectangle { color: "orange"; width: 100; height: 50; border.color: "black"; radius: 15 } } @@ -45,11 +45,11 @@ Rectangle { } Rectangle { color: "red"; width: 50; height: 100; border.color: "black"; radius: 15 } Rectangle { id: blueH1; color: "lightsteelblue"; width: 50; height: 100; border.color: "black"; radius: 15 - opacity: Behavior{NumberAnimation{}} + Behavior on opacity {NumberAnimation{}} } Rectangle { color: "green"; width: 50; height: 100; border.color: "black"; radius: 15 } Rectangle { id: blueH2; color: "lightsteelblue"; width: 50; height: 100; border.color: "black"; radius: 15 - opacity: Behavior{NumberAnimation{}} + Behavior on opacity {NumberAnimation{}} } Rectangle { color: "orange"; width: 50; height: 100; border.color: "black"; radius: 15 } } @@ -113,15 +113,15 @@ Rectangle { Rectangle { color: "red"; width: 50; height: 50; border.color: "black"; radius: 15 } Rectangle { id: blueG1; color: "lightsteelblue"; width: 50; height: 50; border.color: "black"; radius: 15 - opacity: Behavior{NumberAnimation{}} + Behavior on opacity {NumberAnimation{}} } Rectangle { color: "green"; width: 50; height: 50; border.color: "black"; radius: 15 } Rectangle { id: blueG2; color: "lightsteelblue"; width: 50; height: 50; border.color: "black"; radius: 15 - opacity: Behavior{NumberAnimation{}} + Behavior on opacity {NumberAnimation{}} } Rectangle { color: "orange"; width: 50; height: 50; border.color: "black"; radius: 15 } Rectangle { id: blueG3; color: "lightsteelblue"; width: 50; height: 50; border.color: "black"; radius: 15 - opacity: Behavior{NumberAnimation{}} + Behavior on opacity {NumberAnimation{}} } Rectangle { color: "red"; width: 50; height: 50; border.color: "black"; radius: 15 } Rectangle { color: "green"; width: 50; height: 50; border.color: "black"; radius: 15 } @@ -147,15 +147,15 @@ Rectangle { } Rectangle { color: "red"; width: 50; height: 50; border.color: "black"; radius: 15 } Rectangle { id: blueF1; color: "lightsteelblue"; width: 60; height: 50; border.color: "black"; radius: 15 - opacity: Behavior{NumberAnimation{}} + Behavior on opacity {NumberAnimation{}} } Rectangle { color: "green"; width: 30; height: 50; border.color: "black"; radius: 15 } Rectangle { id: blueF2; color: "lightsteelblue"; width: 60; height: 50; border.color: "black"; radius: 15 - opacity: Behavior{NumberAnimation{}} + Behavior on opacity {NumberAnimation{}} } Rectangle { color: "orange"; width: 50; height: 50; border.color: "black"; radius: 15 } Rectangle { id: blueF3; color: "lightsteelblue"; width: 40; height: 50; border.color: "black"; radius: 15 - opacity: Behavior{NumberAnimation{}} + Behavior on opacity {NumberAnimation{}} } Rectangle { color: "red"; width: 80; height: 50; border.color: "black"; radius: 15 } } diff --git a/examples/declarative/listview/content/ClickAutoRepeating.qml b/examples/declarative/listview/content/ClickAutoRepeating.qml index 0850f4e..5240e65 100644 --- a/examples/declarative/listview/content/ClickAutoRepeating.qml +++ b/examples/declarative/listview/content/ClickAutoRepeating.qml @@ -10,7 +10,7 @@ Item { signal released signal clicked - isPressed: SequentialAnimation { + SequentialAnimation on isPressed { running: false id: autoRepeat PropertyAction { target: page; property: "isPressed"; value: true } diff --git a/examples/declarative/listview/highlight.qml b/examples/declarative/listview/highlight.qml index be1f62d..5e4911d 100644 --- a/examples/declarative/listview/highlight.qml +++ b/examples/declarative/listview/highlight.qml @@ -44,7 +44,7 @@ Rectangle { id: petHighlight Rectangle { width: 200; height: 50; color: "#FFFF88" - y: SpringFollow { source: list1.currentItem.y; spring: 3; damping: 0.1 } + SpringFollow on y { source: list1.currentItem.y; spring: 3; damping: 0.1 } } } ListView { diff --git a/examples/declarative/parallax/qml/Smiley.qml b/examples/declarative/parallax/qml/Smiley.qml index 81eadda..4442d5e 100644 --- a/examples/declarative/parallax/qml/Smiley.qml +++ b/examples/declarative/parallax/qml/Smiley.qml @@ -24,7 +24,7 @@ Item { // Animate the y property. Setting repeat to true makes the // animation repeat indefinitely, otherwise it would only run once. - y: SequentialAnimation { + SequentialAnimation on y { repeat: true // Move from minHeight to maxHeight in 300ms, using the OutExpo easing function diff --git a/examples/declarative/progressbar/content/ProgressBar.qml b/examples/declarative/progressbar/content/ProgressBar.qml index bfc801c..65c80b2 100644 --- a/examples/declarative/progressbar/content/ProgressBar.qml +++ b/examples/declarative/progressbar/content/ProgressBar.qml @@ -21,7 +21,7 @@ Item { id: highlight; radius: 1 anchors.left: parent.left; anchors.top: parent.top; anchors.bottom: parent.bottom anchors.leftMargin: 3; anchors.topMargin: 3; anchors.bottomMargin: 3 - width: EaseFollow { source: highlight.widthDest; velocity: 1200 } + EaseFollow on width { source: highlight.widthDest; velocity: 1200 } gradient: Gradient { GradientStop { id: g1; position: 0.0 } GradientStop { id: g2; position: 1.0 } diff --git a/examples/declarative/progressbar/progressbars.qml b/examples/declarative/progressbar/progressbars.qml index 6530c3d..a66d544 100644 --- a/examples/declarative/progressbar/progressbars.qml +++ b/examples/declarative/progressbar/progressbars.qml @@ -14,9 +14,9 @@ Rectangle { ProgressBar { property int r: Math.floor(Math.random() * 5000 + 1000) width: main.width - 20 - value: NumberAnimation { duration: r; from: 0; to: 100; repeat: true } - color: ColorAnimation { duration: r; from: "lightsteelblue"; to: "thistle"; repeat: true } - secondColor: ColorAnimation { duration: r; from: "steelblue"; to: "#CD96CD"; repeat: true } + NumberAnimation on value { duration: r; from: 0; to: 100; repeat: true } + ColorAnimation on color { duration: r; from: "lightsteelblue"; to: "thistle"; repeat: true } + ColorAnimation on secondColor { duration: r; from: "steelblue"; to: "#CD96CD"; repeat: true } } } } diff --git a/examples/declarative/snow/ImageBatch.qml b/examples/declarative/snow/ImageBatch.qml deleted file mode 100644 index c2a2674..0000000 --- a/examples/declarative/snow/ImageBatch.qml +++ /dev/null @@ -1,72 +0,0 @@ -import Qt 4.6 - -GridView { - id: grid - property int offset: 0 - property var ref - property bool isSelected: ref.selectedItemColumn >= offset && ref.selectedItemColumn < offset + 5 - - currentIndex: (ref.selectedItemColumn - offset) + ref.selectedItemRow * 5 - - property int imageWidth: ref.imageWidth - property int imageHeight: ref.imageHeight - - width: 5 * imageWidth - height: 4 * imageHeight - cellWidth: imageWidth - cellHeight: imageHeight - - states: State { - name: "selected"; when: grid.isSelected - PropertyChanges { target: grid; z: 150 } - } - transitions: Transition { - SequentialAnimation { - PauseAnimation { duration: 150 } - PropertyAction { properties: "z" } - } - } - model: XmlListModel { - property string tags : "" - source: "http://api.flickr.com/services/feeds/photos_public.gne?"+(tags ? "tags="+tags+"&" : "")+"format=rss2" - query: "/rss/channel/item" - namespaceDeclarations: "declare namespace media=\"http://search.yahoo.com/mrss/\";" - - XmlRole { name: "url"; query: "media:content/@url/string()" } - } - - delegate: Item { - id: root - property bool isSelected: GridView.isCurrentItem && grid.isSelected - transformOrigin: Item.Center - width: grid.imageWidth; height: grid.imageHeight; - - Image { id: flickrImage; source: url; fillMode: Image.PreserveAspectFit; smooth: true; anchors.fill: parent; - opacity: (status == Image.Ready)?1:0; opacity: Behavior { NumberAnimation { } } } - Loading { anchors.centerIn: parent; visible: flickrImage.status!=1 } - - states: State { - name: "selected" - when: root.isSelected - PropertyChanges { target: root; scale: 3; z: 100 } - } - transitions: [ - Transition { - to: "selected" - SequentialAnimation { - PauseAnimation { duration: 150 } - PropertyAction { properties: "z" } - NumberAnimation { properties: "scale"; duration: 150; } - } - }, - Transition { - from: "selected" - SequentialAnimation { - NumberAnimation { properties: "scale"; duration: 150 } - PropertyAction { properties: "z" } - } - } - ] - } -} - diff --git a/examples/declarative/snow/Loading.qml b/examples/declarative/snow/Loading.qml deleted file mode 100644 index 238d9c7..0000000 --- a/examples/declarative/snow/Loading.qml +++ /dev/null @@ -1,8 +0,0 @@ -import Qt 4.6 - -Image { - id: loading; source: "pics/loading.png"; transformOrigin: Item.Center - rotation: NumberAnimation { - id: rotationAnimation; from: 0; to: 360; running: loading.visible == true; repeat: true; duration: 900 - } -} diff --git a/examples/declarative/snow/create.js b/examples/declarative/snow/create.js deleted file mode 100644 index 2bdae4a..0000000 --- a/examples/declarative/snow/create.js +++ /dev/null @@ -1,12 +0,0 @@ -var myComponent = null; - -function createNewBlock() { - if (myComponent == null) - myComponent = createComponent("ImageBatch.qml"); - - var obj = myComponent.createObject(); - obj.parent = layout; - obj.offset = maximumColumn + 1; - obj.ref = imagePanel; - maximumColumn += 5; -} diff --git a/examples/declarative/snow/pics/loading.png b/examples/declarative/snow/pics/loading.png deleted file mode 100644 index 0296cfe..0000000 Binary files a/examples/declarative/snow/pics/loading.png and /dev/null differ diff --git a/examples/declarative/snow/snow.qml b/examples/declarative/snow/snow.qml deleted file mode 100644 index 39c9c43..0000000 --- a/examples/declarative/snow/snow.qml +++ /dev/null @@ -1,69 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: imagePanel - width: 1024 - height: 768 - color: "black" - - property int maximumColumn: 4 - property int selectedItemRow: 0 - property int selectedItemColumn: 0 - - Script { source: "create.js" } - - onSelectedItemColumnChanged: if (selectedItemColumn == maximumColumn) createNewBlock(); - - property int imageWidth: 200 - property int imageHeight: 200 - - property int selectedX: selectedItemColumn * imageWidth - property int selectedY: selectedItemRow * imageHeight - - Item { - anchors.centerIn: parent - Row { - id: layout - property real targetX: -(selectedX + imageWidth / 2) - - property real targetDeform: 0 - property bool slowDeform: true - - property real deform: 0 - deform: SpringFollow { - id: deformFollow; source: layout.targetDeform; velocity: layout.slowDeform?0.1:2 - onSyncChanged: if(inSync) { layout.slowDeform = true; layout.targetDeform = 0; } - } - - ImageBatch { offset: 0; ref: imagePanel } - - x: SpringFollow { source: layout.targetX; velocity: 1000 } - y: SpringFollow { source: -(selectedY + imageHeight / 2); velocity: 500 } - } - - transform: Rotation { - axis.y: 1; axis.z: 0 - angle: layout.deform * -100 - } - } - - Script { - function left() { - if (selectedItemColumn <= 0) return; - selectedItemColumn -= 1; - layout.slowDeform = false; - layout.targetDeform = Math.max(Math.min(layout.deform - 0.1, -0.1), -0.4); - } - function right() { - selectedItemColumn += 1; - layout.slowDeform = false; - layout.targetDeform = Math.min(Math.max(layout.deform + 0.1, 0.1), 0.4); - } - } - - focus: true - Keys.onLeftPressed: "left()" - Keys.onRightPressed: "right()" - Keys.onUpPressed: "if (selectedItemRow > 0) selectedItemRow = selectedItemRow - 1" - Keys.onDownPressed: "if (selectedItemRow < 3) selectedItemRow = selectedItemRow + 1" -} diff --git a/examples/declarative/tutorials/samegame/samegame3/Dialog.qml b/examples/declarative/tutorials/samegame/samegame3/Dialog.qml index 9d35832..36178ec 100644 --- a/examples/declarative/tutorials/samegame/samegame3/Dialog.qml +++ b/examples/declarative/tutorials/samegame/samegame3/Dialog.qml @@ -14,7 +14,7 @@ Rectangle { signal closed(); color: "white"; border.width: 1; width: myText.width + 20; height: 60; opacity: 0 - opacity: Behavior { + Behavior on opacity { NumberAnimation { duration: 1000 } } Text { id: myText; anchors.centerIn: parent; text: "Hello World!" } diff --git a/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml b/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml index 4c2ba43..1e3a0ed 100644 --- a/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml +++ b/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml @@ -8,8 +8,8 @@ Item { id:block property int targetX: 0 property int targetY: 0 - x: SpringFollow { enabled: spawned; source: targetX; spring: 2; damping: 0.2 } - y: SpringFollow { source: targetY; spring: 2; damping: 0.2 } + SpringFollow on x { enabled: spawned; source: targetX; spring: 2; damping: 0.2 } + SpringFollow on y { source: targetY; spring: 2; damping: 0.2 } //![1] //![2] @@ -24,7 +24,7 @@ Item { id:block } } opacity: 0 - opacity: Behavior { NumberAnimation { properties:"opacity"; duration: 200 } } + Behavior on opacity { NumberAnimation { properties:"opacity"; duration: 200 } } anchors.fill: parent } //![2] diff --git a/examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml b/examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml index ed9fd32..831c03b 100644 --- a/examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml +++ b/examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml @@ -13,7 +13,7 @@ Rectangle { signal closed(); color: "white"; border.width: 1; width: myText.width + 20; height: 60; opacity: 0 - opacity: Behavior { + Behavior on opacity { NumberAnimation { duration: 1000 } } Text { id: myText; anchors.centerIn: parent; text: "Hello World!" } diff --git a/examples/declarative/tvtennis/tvtennis.qml b/examples/declarative/tvtennis/tvtennis.qml index 4bd5319..1585c7b 100644 --- a/examples/declarative/tvtennis/tvtennis.qml +++ b/examples/declarative/tvtennis/tvtennis.qml @@ -16,7 +16,7 @@ Rectangle { x: 20; width: 20; height: 20; z: 1 // Move the ball to the right and back to the left repeatedly - x: SequentialAnimation { + SequentialAnimation on x { repeat: true NumberAnimation { to: page.width - 40; duration: 2000 } ScriptAction { script: Qt.playSound('paddle.wav') } @@ -27,7 +27,7 @@ Rectangle { } // Make y follow the target y coordinate, with a velocity of 200 - y: SpringFollow { source: ball.targetY; velocity: 200 } + SpringFollow on y { source: ball.targetY; velocity: 200 } // Detect the ball hitting the top or bottom of the view and bounce it onYChanged: { @@ -47,7 +47,7 @@ Rectangle { id: leftBat color: "Lime" x: 2; width: 20; height: 90 - y: SpringFollow { + SpringFollow on y { source: ball.y - 45; velocity: 300 enabled: ball.direction == 'left' } @@ -56,7 +56,7 @@ Rectangle { id: rightBat color: "Lime" x: page.width - 22; width: 20; height: 90 - y: SpringFollow { + SpringFollow on y { source: ball.y-45; velocity: 300 enabled: ball.direction == 'right' } diff --git a/examples/declarative/velocity/Day.qml b/examples/declarative/velocity/Day.qml index c39f99b..7424f60 100644 --- a/examples/declarative/velocity/Day.qml +++ b/examples/declarative/velocity/Day.qml @@ -24,7 +24,7 @@ Rectangle { id: stickyPage x: Math.random() * 200 + 100 y: Math.random() * 300 + 50 - rotation: SpringFollow { + SpringFollow on rotation { source: -flickable.horizontalVelocity / 100 spring: 2.0; damping: 0.1 } diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 5da207d..a9809c0 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -718,6 +718,7 @@ bool QDeclarativeCompiler::buildObject(Object *obj, const BindingContext &ctxt) BindingContext objCtxt(obj); // Create the synthesized meta object, ignoring aliases + COMPILE_CHECK(checkDynamicMeta(obj)); COMPILE_CHECK(mergeDynamicMetaProperties(obj)); COMPILE_CHECK(buildDynamicMeta(obj, IgnoreAliases)); @@ -1623,6 +1624,10 @@ void QDeclarativeCompiler::genPropertyAssignment(QDeclarativeParser::Property *p for (int ii = 0; ii < prop->values.count(); ++ii) { QDeclarativeParser::Value *v = prop->values.at(ii); + Q_ASSERT(v->type == Value::CreatedObject || + v->type == Value::PropertyBinding || + v->type == Value::Literal); + if (v->type == Value::CreatedObject) { genObject(v->object); @@ -1652,7 +1657,27 @@ void QDeclarativeCompiler::genPropertyAssignment(QDeclarativeParser::Property *p output->bytecode << store; } - } else if (v->type == Value::ValueSource) { + } else if (v->type == Value::PropertyBinding) { + + genBindingAssignment(v, prop, obj, valueTypeProperty); + + } else if (v->type == Value::Literal) { + + QMetaProperty mp = obj->metaObject()->property(prop->index); + genLiteralAssignment(mp, v); + + } + + } + + for (int ii = 0; ii < prop->onValues.count(); ++ii) { + + QDeclarativeParser::Value *v = prop->onValues.at(ii); + + Q_ASSERT(v->type == Value::ValueSource || + v->type == Value::ValueInterceptor); + + if (v->type == Value::ValueSource) { genObject(v->object); QDeclarativeInstruction store; @@ -1685,16 +1710,6 @@ void QDeclarativeCompiler::genPropertyAssignment(QDeclarativeParser::Property *p QDeclarativeType *valueType = toQmlType(v->object); store.assignValueInterceptor.castValue = valueType->propertyValueInterceptorCast(); output->bytecode << store; - - } else if (v->type == Value::PropertyBinding) { - - genBindingAssignment(v, prop, obj, valueTypeProperty); - - } else if (v->type == Value::Literal) { - - QMetaProperty mp = obj->metaObject()->property(prop->index); - genLiteralAssignment(mp, v); - } } @@ -1793,8 +1808,8 @@ bool QDeclarativeCompiler::buildAttachedProperty(QDeclarativeParser::Property *p // } // font is a nested property. pointSize and family are not. bool QDeclarativeCompiler::buildGroupedProperty(QDeclarativeParser::Property *prop, - QDeclarativeParser::Object *obj, - const BindingContext &ctxt) + QDeclarativeParser::Object *obj, + const BindingContext &ctxt) { Q_ASSERT(prop->type != 0); Q_ASSERT(prop->index != -1); @@ -1829,9 +1844,9 @@ bool QDeclarativeCompiler::buildGroupedProperty(QDeclarativeParser::Property *pr } bool QDeclarativeCompiler::buildValueTypeProperty(QObject *type, - QDeclarativeParser::Object *obj, - QDeclarativeParser::Object *baseObj, - const BindingContext &ctxt) + QDeclarativeParser::Object *obj, + QDeclarativeParser::Object *baseObj, + const BindingContext &ctxt) { if (obj->defaultProperty) COMPILE_EXCEPTION(obj, QCoreApplication::translate("QDeclarativeCompiler","Invalid property use")); @@ -1848,37 +1863,36 @@ bool QDeclarativeCompiler::buildValueTypeProperty(QObject *type, if (prop->value) COMPILE_EXCEPTION(prop, QCoreApplication::translate("QDeclarativeCompiler","Property assignment expected")); - if (prop->values.count() != 1) + if (prop->values.count() > 1) { COMPILE_EXCEPTION(prop, QCoreApplication::translate("QDeclarativeCompiler","Single property assignment expected")); + } else if (prop->values.count()) { + Value *value = prop->values.at(0); - Value *value = prop->values.at(0); - - if (value->object) { - bool isPropertyValue = output->types.at(value->object->type).type->propertyValueSourceCast() != -1; - bool isPropertyInterceptor = output->types.at(value->object->type).type->propertyValueInterceptorCast() != -1; - if (!isPropertyValue && !isPropertyInterceptor) { + if (value->object) { COMPILE_EXCEPTION(prop, QCoreApplication::translate("QDeclarativeCompiler","Unexpected object assignment")); - } else { - COMPILE_CHECK(buildObject(value->object, ctxt)); - - if (isPropertyInterceptor && baseObj->synthdata.isEmpty()) - buildDynamicMeta(baseObj, ForceCreation); - value->type = isPropertyValue ? Value::ValueSource : Value::ValueInterceptor; + } else if (value->value.isScript()) { + // ### Check for writability + BindingReference reference; + reference.expression = value->value; + reference.property = prop; + reference.value = value; + reference.bindingContext = ctxt; + reference.bindingContext.owner++; + addBindingReference(reference); + value->type = Value::PropertyBinding; + } else { + COMPILE_CHECK(testLiteralAssignment(p, value)); + value->type = Value::Literal; } - } else if (value->value.isScript()) { - // ### Check for writability - BindingReference reference; - reference.expression = value->value; - reference.property = prop; - reference.value = value; - reference.bindingContext = ctxt; - reference.bindingContext.owner++; - addBindingReference(reference); - value->type = Value::PropertyBinding; - } else { - COMPILE_CHECK(testLiteralAssignment(p, value)); - value->type = Value::Literal; } + + for (int ii = 0; ii < prop->onValues.count(); ++ii) { + Value *v = prop->onValues.at(ii); + Q_ASSERT(v->object); + + COMPILE_CHECK(buildPropertyOnAssignment(prop, obj, baseObj, v, ctxt)); + } + obj->addValueProperty(prop); } @@ -1886,13 +1900,11 @@ bool QDeclarativeCompiler::buildValueTypeProperty(QObject *type, } // Build assignments to QML lists. QML lists are properties of type -// QList * and QDeclarativeList *. -// -// QList * types can accept a list of objects, or a single binding -// QDeclarativeList * types can accept a list of objects +// QDeclarativeListProperty. List properties can accept a list of +// objects, or a single binding. bool QDeclarativeCompiler::buildListProperty(QDeclarativeParser::Property *prop, - QDeclarativeParser::Object *obj, - const BindingContext &ctxt) + QDeclarativeParser::Object *obj, + const BindingContext &ctxt) { Q_ASSERT(QDeclarativeEnginePrivate::get(engine)->isList(prop->type)); @@ -1950,20 +1962,6 @@ bool QDeclarativeCompiler::buildScriptStringProperty(QDeclarativeParser::Propert } // Compile regular property assignments of the form "property: " -// -// ### The following problems exist -// -// There is no distinction between how "lists" of values are specified. This -// Item { -// children: Item {} -// children: Item {} -// } -// is identical to -// Item { -// children: [ Item {}, Item {} ] -// } -// -// We allow assignming multiple values to single value properties bool QDeclarativeCompiler::buildPropertyAssignment(QDeclarativeParser::Property *prop, QDeclarativeParser::Object *obj, const BindingContext &ctxt) @@ -1983,14 +1981,21 @@ bool QDeclarativeCompiler::buildPropertyAssignment(QDeclarativeParser::Property } } + for (int ii = 0; ii < prop->onValues.count(); ++ii) { + Value *v = prop->onValues.at(ii); + + Q_ASSERT(v->object); + COMPILE_CHECK(buildPropertyOnAssignment(prop, obj, obj, v, ctxt)); + } + return true; } // Compile assigning a single object instance to a regular property bool QDeclarativeCompiler::buildPropertyObjectAssignment(QDeclarativeParser::Property *prop, - QDeclarativeParser::Object *obj, - QDeclarativeParser::Value *v, - const BindingContext &ctxt) + QDeclarativeParser::Object *obj, + QDeclarativeParser::Value *v, + const BindingContext &ctxt) { Q_ASSERT(prop->index != -1); Q_ASSERT(v->object->type != -1); @@ -2019,15 +2024,6 @@ bool QDeclarativeCompiler::buildPropertyObjectAssignment(QDeclarativeParser::Pro v->object->metatype = output->types.at(v->object->type).metaObject(); Q_ASSERT(v->object->metaObject()); - // Will be true if the assigned type inherits QDeclarativePropertyValueSource - bool isPropertyValue = false; - // Will be true if the assigned type inherits QDeclarativePropertyValueInterceptor - bool isPropertyInterceptor = false; - if (QDeclarativeType *valueType = toQmlType(v->object)) { - isPropertyValue = valueType->propertyValueSourceCast() != -1; - isPropertyInterceptor = valueType->propertyValueInterceptorCast() != -1; - } - // We want to raw metaObject here as the raw metaobject is the // actual property type before we applied any extensions that might // effect the properties on the type, but don't effect assignability @@ -2063,13 +2059,6 @@ bool QDeclarativeCompiler::buildPropertyObjectAssignment(QDeclarativeParser::Pro component->getDefaultProperty()->addValue(componentValue); v->object = component; COMPILE_CHECK(buildPropertyObjectAssignment(prop, obj, v, ctxt)); - } else if (isPropertyValue || isPropertyInterceptor) { - // Assign as a property value source - COMPILE_CHECK(buildObject(v->object, ctxt)); - - if (isPropertyInterceptor && prop->parent->synthdata.isEmpty()) - buildDynamicMeta(prop->parent, ForceCreation); - v->type = isPropertyValue ? Value::ValueSource : Value::ValueInterceptor; } else { COMPILE_EXCEPTION(v->object, QCoreApplication::translate("QDeclarativeCompiler","Cannot assign object to property")); } @@ -2078,6 +2067,55 @@ bool QDeclarativeCompiler::buildPropertyObjectAssignment(QDeclarativeParser::Pro return true; } +// Compile assigning a single object instance to a regular property using the "on" syntax. +// +// For example: +// Item { +// NumberAnimation on x { } +// } +bool QDeclarativeCompiler::buildPropertyOnAssignment(QDeclarativeParser::Property *prop, + QDeclarativeParser::Object *obj, + QDeclarativeParser::Object *baseObj, + QDeclarativeParser::Value *v, + const BindingContext &ctxt) +{ + Q_ASSERT(prop->index != -1); + Q_ASSERT(v->object->type != -1); + + if (!obj->metaObject()->property(prop->index).isWritable()) + COMPILE_EXCEPTION(v, QCoreApplication::translate("QDeclarativeCompiler","Invalid property assignment: \"%1\" is a read-only property").arg(QString::fromUtf8(prop->name))); + + + // Normally buildObject() will set this up, but we need the static + // meta object earlier to test for assignability. It doesn't matter + // that there may still be outstanding synthesized meta object changes + // on this type, as they are not relevant for assignability testing + v->object->metatype = output->types.at(v->object->type).metaObject(); + Q_ASSERT(v->object->metaObject()); + + // Will be true if the assigned type inherits QDeclarativePropertyValueSource + bool isPropertyValue = false; + // Will be true if the assigned type inherits QDeclarativePropertyValueInterceptor + bool isPropertyInterceptor = false; + if (QDeclarativeType *valueType = toQmlType(v->object)) { + isPropertyValue = valueType->propertyValueSourceCast() != -1; + isPropertyInterceptor = valueType->propertyValueInterceptorCast() != -1; + } + + if (isPropertyValue || isPropertyInterceptor) { + // Assign as a property value source + COMPILE_CHECK(buildObject(v->object, ctxt)); + + if (isPropertyInterceptor && prop->parent->synthdata.isEmpty()) + buildDynamicMeta(baseObj, ForceCreation); + v->type = isPropertyValue ? Value::ValueSource : Value::ValueInterceptor; + } else { + COMPILE_EXCEPTION(v, QCoreApplication::translate("QDeclarativeCompiler","\"%1\" cannot operate on \"%2\"").arg(v->object->typeName.constData()).arg(prop->name.constData())); + } + + return true; +} + // Compile assigning a literal or binding to a regular property bool QDeclarativeCompiler::buildPropertyLiteralAssignment(QDeclarativeParser::Property *prop, QDeclarativeParser::Object *obj, @@ -2203,10 +2241,13 @@ bool QDeclarativeCompiler::mergeDynamicMetaProperties(QDeclarativeParser::Object continue; Property *property = 0; - if (p.isDefaultProperty) + if (p.isDefaultProperty) { property = obj->getDefaultProperty(); - else + } else { property = obj->getProperty(p.name); + if (!property->values.isEmpty()) + COMPILE_EXCEPTION(property, QCoreApplication::translate("QDeclarativeCompiler","Property value set multiple times")); + } if (property->value) COMPILE_EXCEPTION(property, QCoreApplication::translate("QDeclarativeCompiler","Invalid property nesting")); @@ -2233,8 +2274,6 @@ bool QDeclarativeCompiler::buildDynamicMeta(QDeclarativeParser::Object *obj, Dyn obj->dynamicSlots.isEmpty()) return true; - COMPILE_CHECK(checkDynamicMeta(obj)); - QByteArray dynamicData(sizeof(QDeclarativeVMEMetaData), (char)0); QByteArray newClassName = obj->metatype->className(); diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h index 2ea3366..93a3f83 100644 --- a/src/declarative/qml/qdeclarativecompiler_p.h +++ b/src/declarative/qml/qdeclarativecompiler_p.h @@ -219,6 +219,11 @@ private: QDeclarativeParser::Object *obj, QDeclarativeParser::Value *value, const BindingContext &ctxt); + bool buildPropertyOnAssignment(QDeclarativeParser::Property *prop, + QDeclarativeParser::Object *obj, + QDeclarativeParser::Object *baseObj, + QDeclarativeParser::Value *value, + const BindingContext &ctxt); bool buildPropertyLiteralAssignment(QDeclarativeParser::Property *prop, QDeclarativeParser::Object *obj, QDeclarativeParser::Value *value, diff --git a/src/declarative/qml/qdeclarativedom.cpp b/src/declarative/qml/qdeclarativedom.cpp index 6c81f34..5b43109 100644 --- a/src/declarative/qml/qdeclarativedom.cpp +++ b/src/declarative/qml/qdeclarativedom.cpp @@ -374,7 +374,10 @@ QDeclarativeDomValue QDeclarativeDomProperty::value() const QDeclarativeDomValue rv; if (d->property) { rv.d->property = d->property; - rv.d->value = d->property->values.at(0); + if (d->property->values.count()) + rv.d->value = d->property->values.at(0); + else + rv.d->value = d->property->onValues.at(0); rv.d->property->addref(); rv.d->value->addref(); } @@ -1346,7 +1349,7 @@ QDeclarativeDomValue::Type QDeclarativeDomValue::type() const { if (d->property) if (QDeclarativeMetaType::isList(d->property->type) || - (d->property && d->property->values.count() > 1)) + (d->property && (d->property->values.count() + d->property->onValues.count()) > 1)) return List; QDeclarativeParser::Value *value = d->value; @@ -1628,6 +1631,13 @@ QList QDeclarativeDomList::values() const rv << v; } + for (int ii = 0; ii < d->property->onValues.count(); ++ii) { + QDeclarativeDomValue v; + v.d->value = d->property->onValues.at(ii); + v.d->value->addref(); + rv << v; + } + return rv; } diff --git a/src/declarative/qml/qdeclarativeparser.cpp b/src/declarative/qml/qdeclarativeparser.cpp index 5ac49d5..0e3d856 100644 --- a/src/declarative/qml/qdeclarativeparser.cpp +++ b/src/declarative/qml/qdeclarativeparser.cpp @@ -221,6 +221,8 @@ QDeclarativeParser::Property::~Property() { foreach(Value *value, values) value->release(); + foreach(Value *value, onValues) + value->release(); if (value) value->release(); } @@ -235,9 +237,14 @@ void QDeclarativeParser::Property::addValue(Value *v) values << v; } +void QDeclarativeParser::Property::addOnValue(Value *v) +{ + onValues << v; +} + bool QDeclarativeParser::Property::isEmpty() const { - return !value && values.isEmpty(); + return !value && values.isEmpty() && onValues.isEmpty(); } QDeclarativeParser::Value::Value() diff --git a/src/declarative/qml/qdeclarativeparser_p.h b/src/declarative/qml/qdeclarativeparser_p.h index aae507e..d0d7de1 100644 --- a/src/declarative/qml/qdeclarativeparser_p.h +++ b/src/declarative/qml/qdeclarativeparser_p.h @@ -320,6 +320,7 @@ namespace QDeclarativeParser Object *getValue(); void addValue(Value *v); + void addOnValue(Value *v); // The QVariant::Type of the property, or 0 (QVariant::Invalid) if // unknown. @@ -333,6 +334,8 @@ namespace QDeclarativeParser // The list of values assigned to this property. Content in values // and value are mutually exclusive QList values; + // The list of values assigned to this property using the "on" syntax + QList onValues; // The accessed property. This is used to represent dot properties. // Content in value and values are mutually exclusive. Object *value; diff --git a/src/declarative/qml/qdeclarativescriptparser.cpp b/src/declarative/qml/qdeclarativescriptparser.cpp index f4c9cdd..a4b3668 100644 --- a/src/declarative/qml/qdeclarativescriptparser.cpp +++ b/src/declarative/qml/qdeclarativescriptparser.cpp @@ -106,12 +106,12 @@ public: void operator()(const QString &code, AST::Node *node); protected: - Object *defineObjectBinding(AST::UiQualifiedId *propertyName, + Object *defineObjectBinding(AST::UiQualifiedId *propertyName, bool onAssignment, AST::UiQualifiedId *objectTypeName, LocationSpan location, AST::UiObjectInitializer *initializer = 0); - Object *defineObjectBinding_helper(AST::UiQualifiedId *propertyName, + Object *defineObjectBinding_helper(AST::UiQualifiedId *propertyName, bool onAssignment, const QString &objectType, AST::SourceLocation typeLocation, LocationSpan location, @@ -243,6 +243,7 @@ QString ProcessAST::asString(AST::UiQualifiedId *node) const Object * ProcessAST::defineObjectBinding_helper(AST::UiQualifiedId *propertyName, + bool onAssignment, const QString &objectType, AST::SourceLocation typeLocation, LocationSpan location, @@ -254,10 +255,19 @@ ProcessAST::defineObjectBinding_helper(AST::UiQualifiedId *propertyName, (lastTypeDot >= 0 && objectType.at(lastTypeDot+1).isUpper())); int propertyCount = 0; - for (; propertyName; propertyName = propertyName->next){ + for (AST::UiQualifiedId *name = propertyName; name; name = name->next){ ++propertyCount; - _stateStack.pushProperty(propertyName->name->asString(), - this->location(propertyName)); + _stateStack.pushProperty(name->name->asString(), + this->location(name)); + } + + if (!onAssignment && propertyCount && currentProperty() && currentProperty()->values.count()) { + QDeclarativeError error; + error.setDescription(QCoreApplication::translate("QDeclarativeParser","Property value set multiple times")); + error.setLine(this->location(propertyName).start.line); + error.setColumn(this->location(propertyName).start.column); + _parser->_errors << error; + return 0; } if (!isType) { @@ -327,7 +337,10 @@ ProcessAST::defineObjectBinding_helper(AST::UiQualifiedId *propertyName, Value *v = new Value; v->object = obj; v->location = obj->location; - prop->addValue(v); + if (onAssignment) + prop->addOnValue(v); + else + prop->addValue(v); while (propertyCount--) _stateStack.pop(); @@ -363,7 +376,7 @@ ProcessAST::defineObjectBinding_helper(AST::UiQualifiedId *propertyName, } } -Object *ProcessAST::defineObjectBinding(AST::UiQualifiedId *qualifiedId, +Object *ProcessAST::defineObjectBinding(AST::UiQualifiedId *qualifiedId, bool onAssignment, AST::UiQualifiedId *objectTypeName, LocationSpan location, AST::UiObjectInitializer *initializer) @@ -395,7 +408,7 @@ Object *ProcessAST::defineObjectBinding(AST::UiQualifiedId *qualifiedId, } - return defineObjectBinding_helper(qualifiedId, objectType, typeLocation, location, initializer); + return defineObjectBinding_helper(qualifiedId, onAssignment, objectType, typeLocation, location, initializer); } LocationSpan ProcessAST::location(AST::UiQualifiedId *id) @@ -623,7 +636,7 @@ bool ProcessAST::visit(AST::UiObjectDefinition *node) LocationSpan l = location(node->firstSourceLocation(), node->lastSourceLocation()); - defineObjectBinding(/*propertyName = */ 0, + defineObjectBinding(/*propertyName = */ 0, false, node->qualifiedTypeNameId, l, node->initializer); @@ -638,7 +651,7 @@ bool ProcessAST::visit(AST::UiObjectBinding *node) LocationSpan l = location(node->qualifiedTypeNameId->identifierToken, node->initializer->rbraceToken); - defineObjectBinding(node->qualifiedId, + defineObjectBinding(node->qualifiedId, node->hasOnToken, node->qualifiedTypeNameId, l, node->initializer); @@ -674,14 +687,23 @@ bool ProcessAST::visit(AST::UiScriptBinding *node) { int propertyCount = 0; AST::UiQualifiedId *propertyName = node->qualifiedId; - for (; propertyName; propertyName = propertyName->next){ + for (AST::UiQualifiedId *name = propertyName; name; name = name->next){ ++propertyCount; - _stateStack.pushProperty(propertyName->name->asString(), - location(propertyName)); + _stateStack.pushProperty(name->name->asString(), + location(name)); } Property *prop = currentProperty(); + if (prop->values.count()) { + QDeclarativeError error; + error.setDescription(QCoreApplication::translate("QDeclarativeParser","Property value set multiple times")); + error.setLine(this->location(propertyName).start.line); + error.setColumn(this->location(propertyName).start.column); + _parser->_errors << error; + return 0; + } + QDeclarativeParser::Variant primitive; if (AST::ExpressionStatement *stmt = AST::cast(node->statement)) { @@ -724,16 +746,26 @@ bool ProcessAST::visit(AST::UiArrayBinding *node) { int propertyCount = 0; AST::UiQualifiedId *propertyName = node->qualifiedId; - for (; propertyName; propertyName = propertyName->next){ + for (AST::UiQualifiedId *name = propertyName; name; name = name->next){ ++propertyCount; - _stateStack.pushProperty(propertyName->name->asString(), - location(propertyName)); + _stateStack.pushProperty(name->name->asString(), + location(name)); + } + + Property* prop = currentProperty(); + + if (prop->values.count()) { + QDeclarativeError error; + error.setDescription(QCoreApplication::translate("QDeclarativeParser","Property value set multiple times")); + error.setLine(this->location(propertyName).start.line); + error.setColumn(this->location(propertyName).start.column); + _parser->_errors << error; + return 0; } accept(node->members); // For the DOM, store the position of the T_LBRACKET upto the T_RBRACKET as the range: - Property* prop = currentProperty(); prop->listValueRange.offset = node->lbracketToken.offset; prop->listValueRange.length = node->rbracketToken.offset + node->rbracketToken.length - node->lbracketToken.offset; diff --git a/tests/auto/declarative/examples/tst_examples.cpp b/tests/auto/declarative/examples/tst_examples.cpp index 6160e7c..106a4e0 100644 --- a/tests/auto/declarative/examples/tst_examples.cpp +++ b/tests/auto/declarative/examples/tst_examples.cpp @@ -190,7 +190,6 @@ void tst_examples::examples() << "-scriptopts" << "play,testerror,exitoncomplete,exitonfailure" << file; QProcess p; -qDebug() << qmlruntime << arguments; p.start(qmlruntime, arguments); QVERIFY(p.waitForFinished()); QCOMPARE(p.exitStatus(), QProcess::NormalExit); diff --git a/tests/auto/declarative/qdeclarativeanimations/data/badtype1.qml b/tests/auto/declarative/qdeclarativeanimations/data/badtype1.qml index 6381df3..2629cf4 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/badtype1.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/badtype1.qml @@ -7,6 +7,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: PropertyAnimation { from: "blue"; to: "green"; } + PropertyAnimation on x { from: "blue"; to: "green"; } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/badtype2.qml b/tests/auto/declarative/qdeclarativeanimations/data/badtype2.qml index 8d57e41..1543a2a 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/badtype2.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/badtype2.qml @@ -7,6 +7,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { from: "blue"; to: "green"; } + NumberAnimation on x { from: "blue"; to: "green"; } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/badtype3.qml b/tests/auto/declarative/qdeclarativeanimations/data/badtype3.qml index c4867c3..aa98c33 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/badtype3.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/badtype3.qml @@ -5,7 +5,7 @@ Rectangle { height: 320 Rectangle { color: "red" - color: ColorAnimation { from: 10; to: 15; } + ColorAnimation on color { from: 10; to: 15; } width: 50; height: 50 x: 100; y: 100 } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml b/tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml index d9660b6..3f00e68 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml @@ -9,7 +9,7 @@ Rectangle { id: redRect width: 100; height: 100 color: Qt.rgba(1,0,0) - x: Behavior { + Behavior on x { NumberAnimation { objectName: "MyAnim"; target: redRect; property: "y"; to: 300; repeat: true} } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/dontStart.qml b/tests/auto/declarative/qdeclarativeanimations/data/dontStart.qml index 36417db..efed058 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/dontStart.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/dontStart.qml @@ -9,7 +9,7 @@ Rectangle { id: redRect width: 100; height: 100 color: Qt.rgba(1,0,0) - x: SequentialAnimation { + SequentialAnimation on x { running: false NumberAnimation { objectName: "MyAnim"; running: true } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/properties.qml b/tests/auto/declarative/qdeclarativeanimations/data/properties.qml index 7e73f57..4437815 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/properties.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/properties.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { to: 200 } + NumberAnimation on x { to: 200 } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/properties2.qml b/tests/auto/declarative/qdeclarativeanimations/data/properties2.qml index 6c96155..b1f2020 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/properties2.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/properties2.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { targets: theRect; properties: "x"; to: 200; } + NumberAnimation on x { targets: theRect; properties: "x"; to: 200; } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/properties3.qml b/tests/auto/declarative/qdeclarativeanimations/data/properties3.qml index ff08885..0a0ed6f 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/properties3.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/properties3.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { target: theRect; property: "x"; to: 300; } + NumberAnimation on x { target: theRect; property: "x"; to: 300; } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/properties4.qml b/tests/auto/declarative/qdeclarativeanimations/data/properties4.qml index dab7e5f..a90f004 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/properties4.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/properties4.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { target: theRect; property: "y"; to: 200; } + NumberAnimation on x { target: theRect; property: "y"; to: 200; } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/properties5.qml b/tests/auto/declarative/qdeclarativeanimations/data/properties5.qml index 38396b1..7d3cec9 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/properties5.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/properties5.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { targets: theRect; properties: "y"; to: 200; } + NumberAnimation on x { targets: theRect; properties: "y"; to: 200; } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/valuesource.qml b/tests/auto/declarative/qdeclarativeanimations/data/valuesource.qml index c35063d..2260440 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/valuesource.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/valuesource.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { id: anim; objectName: "MyAnim"; to: 200 } + NumberAnimation on x { id: anim; objectName: "MyAnim"; to: 200 } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/valuesource2.qml b/tests/auto/declarative/qdeclarativeanimations/data/valuesource2.qml index 1a60542..36d6c72 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/valuesource2.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/valuesource2.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { id: anim; objectName: "MyAnim"; running: false; to: 200 } + NumberAnimation on x { id: anim; objectName: "MyAnim"; running: false; to: 200 } } } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/binding.qml b/tests/auto/declarative/qdeclarativebehaviors/data/binding.qml index 201da37..e982f21 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/binding.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/binding.qml @@ -9,7 +9,7 @@ Rectangle { objectName: "MyRect" width: 100; height: 100; color: "green" x: basex - x: Behavior { NumberAnimation { duration: 500; } } + Behavior on x { NumberAnimation { duration: 500; } } } MouseArea { id: clicker diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/color.qml b/tests/auto/declarative/qdeclarativebehaviors/data/color.qml index 91dbbd1..f2f4742 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/color.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/color.qml @@ -7,7 +7,7 @@ Rectangle { objectName: "MyRect" width: 100; height: 100; color: "green" - color: Behavior { ColorAnimation { duration: 500; } } + Behavior on color { ColorAnimation { duration: 500; } } } MouseArea { id: clicker diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/cpptrigger.qml b/tests/auto/declarative/qdeclarativebehaviors/data/cpptrigger.qml index 8d032f0..3ea9376 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/cpptrigger.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/cpptrigger.qml @@ -6,6 +6,6 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { NumberAnimation { duration: 500; } } + Behavior on x { NumberAnimation { duration: 500; } } } } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/disabled.qml b/tests/auto/declarative/qdeclarativebehaviors/data/disabled.qml index 3c7078a..1403eb9 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/disabled.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/disabled.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { + Behavior on x { objectName: "MyBehavior"; enabled: false NumberAnimation { duration: 200; } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/dontStart.qml b/tests/auto/declarative/qdeclarativebehaviors/data/dontStart.qml index ba7cc9c..12b1b7b 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/dontStart.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/dontStart.qml @@ -9,7 +9,7 @@ Rectangle { id: redRect width: 100; height: 100 color: Qt.rgba(1,0,0) - x: Behavior { + Behavior on x { NumberAnimation { objectName: "MyAnim"; running: true } } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/empty.qml b/tests/auto/declarative/qdeclarativebehaviors/data/empty.qml index 95d934a..5e30f03 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/empty.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/empty.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior {} + Behavior on x {} } MouseArea { id: clicker diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/explicit.qml b/tests/auto/declarative/qdeclarativebehaviors/data/explicit.qml index 1b2025a..ca0ea54 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/explicit.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/explicit.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { + Behavior on x { objectName: "MyBehavior"; NumberAnimation { target: rect; property: "x"; duration: 500; } } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty.qml b/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty.qml index 14883d4..a6c4ed9 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - pos: Behavior { PropertyAnimation { duration: 500; } } + Behavior on pos { PropertyAnimation { duration: 500; } } } MouseArea { id: clicker diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty2.qml b/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty2.qml index b43ddbc..2dda220 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty2.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty2.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - pos.x: Behavior { NumberAnimation { duration: 500; } } + Behavior on pos.x { NumberAnimation { duration: 500; } } } MouseArea { id: clicker diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/loop.qml b/tests/auto/declarative/qdeclarativebehaviors/data/loop.qml index 5f2c057..6187768 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/loop.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/loop.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { NumberAnimation { duration: 200; } } + Behavior on x { NumberAnimation { duration: 200; } } onXChanged: x = 100; } states: State { diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/nonSelecting2.qml b/tests/auto/declarative/qdeclarativebehaviors/data/nonSelecting2.qml index f267a05..640a7d1 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/nonSelecting2.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/nonSelecting2.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { + Behavior on x { objectName: "MyBehavior"; NumberAnimation { targets: rect; properties: "y"; duration: 200; } } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/parent.qml b/tests/auto/declarative/qdeclarativebehaviors/data/parent.qml index 7c7fdcb..3860ec7 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/parent.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/parent.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - parent: Behavior { + Behavior on parent { SequentialAnimation { PauseAnimation { duration: 500 } PropertyAction {} diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml b/tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml index ba744b1..6419a6b 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { + Behavior on x { objectName: "MyBehavior" NumberAnimation { duration: 200 } NumberAnimation { duration: 1000 } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/scripttrigger.qml b/tests/auto/declarative/qdeclarativebehaviors/data/scripttrigger.qml index a91ca88..b22441a 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/scripttrigger.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/scripttrigger.qml @@ -11,6 +11,6 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { NumberAnimation { duration: 500; } } + Behavior on x { NumberAnimation { duration: 500; } } } } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/simple.qml b/tests/auto/declarative/qdeclarativebehaviors/data/simple.qml index ac98ed0..c28fa9a 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/simple.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/simple.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { + Behavior on x { objectName: "MyBehavior"; NumberAnimation { duration: 500; } } diff --git a/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp b/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp index f87330d..0bf0b81 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp +++ b/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp @@ -260,7 +260,7 @@ void tst_qdeclarativebehaviors::reassignedAnimation() { QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/reassignedAnimation.qml")); - QTest::ignoreMessage(QtWarningMsg, QString("QML Behavior (" + QUrl::fromLocalFile(SRCDIR "/data/reassignedAnimation.qml").toString() + ":9:12) Cannot change the animation assigned to a Behavior.").toUtf8().constData()); + QTest::ignoreMessage(QtWarningMsg, QString("QML Behavior (" + QUrl::fromLocalFile(SRCDIR "/data/reassignedAnimation.qml").toString() + ":9:9) Cannot change the animation assigned to a Behavior.").toUtf8().constData()); QDeclarativeRectangle *rect = qobject_cast(c.create()); QVERIFY(rect); QCOMPARE(qobject_cast( diff --git a/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp b/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp index 9543280..6cd0bdb 100644 --- a/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp +++ b/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp @@ -274,7 +274,7 @@ void tst_qdeclarativedom::loadComposite() void tst_qdeclarativedom::testValueSource() { QByteArray qml = "import Qt 4.6\n" - "Rectangle { height: SpringFollow { spring: 1.4; damping: .15; source: Math.min(Math.max(-130, value*2.2 - 130), 133); }}"; + "Rectangle { SpringFollow on height { spring: 1.4; damping: .15; source: Math.min(Math.max(-130, value*2.2 - 130), 133); }}"; QDeclarativeEngine freshEngine; QDeclarativeDomDocument document; @@ -306,7 +306,7 @@ void tst_qdeclarativedom::testValueSource() void tst_qdeclarativedom::testValueInterceptor() { QByteArray qml = "import Qt 4.6\n" - "Rectangle { height: Behavior { NumberAnimation { duration: 100 } } }"; + "Rectangle { Behavior on height { NumberAnimation { duration: 100 } } }"; QDeclarativeEngine freshEngine; QDeclarativeDomDocument document; @@ -823,8 +823,8 @@ void tst_qdeclarativedom::copy() " property int a: 10\n" " x: 10\n" " y: x + 10\n" - " z: NumberAnimation {}\n" - " opacity: Behavior {}\n" + " NumberAnimation on z {}\n" + " Behavior on opacity {}\n" " Component {\n" " Item{}\n" " }\n" @@ -1193,18 +1193,18 @@ void tst_qdeclarativedom::copy() void tst_qdeclarativedom::position() { QByteArray qml = "import Qt 4.6\n" - /*14*/ "Item {\n" - /*21*/ " id: myItem\n" - /*36*/ " property int a: 10\n" - /*59*/ " x: 10\n" - /*69*/ " y: x + 10\n" - /*83*/ " z: NumberAnimation {}\n" - /*109*/ " opacity: Behavior {}\n" - /*134*/ " Component {\n" - /*150*/ " Item{}\n" - /*165*/ " }\n" - /*171*/ " children: [ Item{}, Item{} ]\n" - /*204*/ "}\n"; + "Item {\n" + " id: myItem\n" + " property int a: 10\n" + " x: 10\n" + " y: x + 10\n" + " NumberAnimation on z {}\n" + " Behavior on opacity {}\n" + " Component {\n" + " Item{}\n" + " }\n" + " children: [ Item{}, Item{} ]\n" + "}\n"; QDeclarativeDomDocument document; @@ -1227,19 +1227,19 @@ void tst_qdeclarativedom::position() QCOMPARE(y.length(), 1); QDeclarativeDomProperty z = root.property("z"); - QCOMPARE(z.position(), 87); + QCOMPARE(z.position(), 106); QCOMPARE(z.length(), 1); QDeclarativeDomProperty opacity = root.property("opacity"); - QCOMPARE(opacity.position(), 113); + QCOMPARE(opacity.position(), 127); QCOMPARE(opacity.length(), 7); QDeclarativeDomProperty data = root.property("data"); - QCOMPARE(data.position(), 138); + QCOMPARE(data.position(), 142); QCOMPARE(data.length(), 0); QDeclarativeDomProperty children = root.property("children"); - QCOMPARE(children.position(), 175); + QCOMPARE(children.position(), 179); QCOMPARE(children.length(), 8); QDeclarativeDomList dataList = data.value().toList(); @@ -1249,30 +1249,30 @@ void tst_qdeclarativedom::position() // All QDeclarativeDomObject QCOMPARE(root.position(), 14); - QCOMPARE(root.length(), 191); + QCOMPARE(root.length(), 195); QDeclarativeDomObject numberAnimation = z.value().toValueSource().object(); - QCOMPARE(numberAnimation.position(), 90); - QCOMPARE(numberAnimation.length(), 18); + QCOMPARE(numberAnimation.position(), 87); + QCOMPARE(numberAnimation.length(), 23); QDeclarativeDomObject behavior = opacity.value().toValueInterceptor().object(); - QCOMPARE(behavior.position(), 122); - QCOMPARE(behavior.length(), 11); + QCOMPARE(behavior.position(), 115); + QCOMPARE(behavior.length(), 22); QDeclarativeDomObject component = dataList.values().at(0).toObject(); - QCOMPARE(component.position(), 138); + QCOMPARE(component.position(), 142); QCOMPARE(component.length(), 32); QDeclarativeDomObject componentRoot = component.toComponent().componentRoot(); - QCOMPARE(componentRoot.position(), 158); + QCOMPARE(componentRoot.position(), 162); QCOMPARE(componentRoot.length(), 6); QDeclarativeDomObject child1 = childrenList.values().at(0).toObject(); - QCOMPARE(child1.position(), 187); + QCOMPARE(child1.position(), 191); QCOMPARE(child1.length(), 6); QDeclarativeDomObject child2 = childrenList.values().at(1).toObject(); - QCOMPARE(child2.position(), 195); + QCOMPARE(child2.position(), 199); QCOMPARE(child2.length(), 6); // All QDeclarativeDomValue @@ -1285,23 +1285,23 @@ void tst_qdeclarativedom::position() QCOMPARE(yValue.length(), 6); QDeclarativeDomValue zValue = z.value(); - QCOMPARE(zValue.position(), 90); - QCOMPARE(zValue.length(), 18); + QCOMPARE(zValue.position(), 87); + QCOMPARE(zValue.length(), 23); QDeclarativeDomValue opacityValue = opacity.value(); - QCOMPARE(opacityValue.position(), 122); - QCOMPARE(opacityValue.length(), 11); + QCOMPARE(opacityValue.position(), 115); + QCOMPARE(opacityValue.length(), 22); QDeclarativeDomValue dataValue = data.value(); - QCOMPARE(dataValue.position(), 138); + QCOMPARE(dataValue.position(), 142); QCOMPARE(dataValue.length(), 32); QDeclarativeDomValue child1Value = childrenList.values().at(0); - QCOMPARE(child1Value.position(), 187); + QCOMPARE(child1Value.position(), 191); QCOMPARE(child1Value.length(), 6); QDeclarativeDomValue child2Value = childrenList.values().at(1); - QCOMPARE(child2Value.position(), 195); + QCOMPARE(child2Value.position(), 199); QCOMPARE(child2Value.length(), 6); // All QDeclarativeDomList diff --git a/tests/auto/declarative/qdeclarativelanguage/data/assignBasicTypes.qml b/tests/auto/declarative/qdeclarativelanguage/data/assignBasicTypes.qml index c86c96b..9fe0ded 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/assignBasicTypes.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/assignBasicTypes.qml @@ -10,8 +10,6 @@ MyTypeObject { floatProperty: 8.5 colorProperty: "red" dateProperty: "1982-11-25" - timeProperty: "11:11:31" - timeProperty: "11:11:32" timeProperty: "11:11:32" dateTimeProperty: "2009-05-12T13:22:01" pointProperty: "99,13" diff --git a/tests/auto/declarative/qdeclarativelanguage/data/component.3.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/component.3.errors.txt index 9a13142..450fc16 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/component.3.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/component.3.errors.txt @@ -1 +1 @@ -6:9:Invalid component id specification +6:9:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/doubleSignal.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/doubleSignal.errors.txt index 2aea251..e1f7ec5 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/doubleSignal.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/doubleSignal.errors.txt @@ -1 +1 @@ -5:5:Incorrectly specified signal +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.6.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.6.errors.txt index 8331725..e1f7ec5 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.6.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.6.errors.txt @@ -1 +1 @@ -5:18:Single property assignment expected +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.4.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.4.errors.txt index cfe8756..c721fe9 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.4.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.4.errors.txt @@ -1 +1 @@ -4:5:Invalid use of id property +4:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/listAssignment.3.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/listAssignment.3.errors.txt index 8c7b7e9..c721fe9 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/listAssignment.3.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/listAssignment.3.errors.txt @@ -1 +1 @@ -4:15:Can only assign one binding to lists +4:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.qml new file mode 100644 index 0000000..649c49e --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + intProperty: 10 + intProperty: 11 +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.qml new file mode 100644 index 0000000..bc21db9 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + property int a: 10 + a: 11 +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.qml new file mode 100644 index 0000000..abcd216 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + intProperty: 10 + intProperty: a + 10 +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.qml new file mode 100644 index 0000000..77eaba0 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + intProperty: a + 10 + intProperty: 10 +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.qml new file mode 100644 index 0000000..c16d04f --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + intProperty: 10 + intProperty: MyTypeObject {} +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.qml new file mode 100644 index 0000000..2980c5b --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyContainer { + children: MyContainer {} + children: MyContainer {} +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.qml new file mode 100644 index 0000000..492c720 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyContainer { + children: MyContainer {} + children: [ MyContainer {}, MyContainer {} ] +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.qml new file mode 100644 index 0000000..2a9c1d0 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyContainer { + children: [ MyContainer {}, MyContainer {} ] + children: MyContainer {} +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.errors.txt new file mode 100644 index 0000000..450fc16 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.errors.txt @@ -0,0 +1 @@ +6:9:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.qml new file mode 100644 index 0000000..052437e --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.qml @@ -0,0 +1,8 @@ +import Test 1.0 + +MyTypeObject { + grouped { + value: 10 + value: 11 + } +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.qml new file mode 100644 index 0000000..e2e954f --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + grouped.value: 10 + grouped.value: 11 +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.2.qml b/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.2.qml index 57a6070..e48526a 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.2.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.2.qml @@ -1,5 +1,5 @@ import Test 1.0 MyTypeObject { - intProperty : MyCompositeValueSource {} + MyCompositeValueSource on intProperty {} } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.qml b/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.qml index ad71fcf..22aa682 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.qml @@ -1,4 +1,4 @@ import Test 1.0 MyTypeObject { - intProperty : MyPropertyValueSource {} + MyPropertyValueSource on intProperty {} } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.8.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.8.errors.txt index b5bf1a8..450fc16 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.8.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/script.8.errors.txt @@ -1 +1 @@ -6:9:Invalid Script source value +6:9:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/testtypes.h b/tests/auto/declarative/qdeclarativelanguage/testtypes.h index 8ac7aa6..ec2c5f7 100644 --- a/tests/auto/declarative/qdeclarativelanguage/testtypes.h +++ b/tests/auto/declarative/qdeclarativelanguage/testtypes.h @@ -166,11 +166,16 @@ class MyGroupedObject : public QObject { Q_OBJECT Q_PROPERTY(QDeclarativeScriptString script READ script WRITE setScript); + Q_PROPERTY(int value READ value WRITE setValue); public: QDeclarativeScriptString script() const { return m_script; } void setScript(const QDeclarativeScriptString &s) { m_script = s; } + int value() const { return m_value; } + void setValue(int v) { m_value = v; } + private: + int m_value; QDeclarativeScriptString m_script; }; diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index 1ba4454..39f5223 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -288,6 +288,17 @@ void tst_qdeclarativelanguage::errors_data() QTest::newRow("Component.5") << "component.5.qml" << "component.5.errors.txt" << false; QTest::newRow("Component.6") << "component.6.qml" << "component.6.errors.txt" << false; + QTest::newRow("MultiSet.1") << "multiSet.1.qml" << "multiSet.1.errors.txt" << false; + QTest::newRow("MultiSet.2") << "multiSet.2.qml" << "multiSet.2.errors.txt" << false; + QTest::newRow("MultiSet.3") << "multiSet.3.qml" << "multiSet.3.errors.txt" << false; + QTest::newRow("MultiSet.4") << "multiSet.4.qml" << "multiSet.4.errors.txt" << false; + QTest::newRow("MultiSet.5") << "multiSet.5.qml" << "multiSet.5.errors.txt" << false; + QTest::newRow("MultiSet.6") << "multiSet.6.qml" << "multiSet.6.errors.txt" << false; + QTest::newRow("MultiSet.7") << "multiSet.7.qml" << "multiSet.7.errors.txt" << false; + QTest::newRow("MultiSet.8") << "multiSet.8.qml" << "multiSet.8.errors.txt" << false; + QTest::newRow("MultiSet.9") << "multiSet.9.qml" << "multiSet.9.errors.txt" << false; + QTest::newRow("MultiSet.10") << "multiSet.10.qml" << "multiSet.10.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.1") << "invalidAttachedProperty.1.qml" << "invalidAttachedProperty.1.errors.txt" << false; QTest::newRow("invalidAttachedProperty.2") << "invalidAttachedProperty.2.qml" << "invalidAttachedProperty.2.errors.txt" << false; QTest::newRow("invalidAttachedProperty.3") << "invalidAttachedProperty.3.qml" << "invalidAttachedProperty.3.errors.txt" << false; diff --git a/tests/auto/declarative/qdeclarativeparticles/data/particles.qml b/tests/auto/declarative/qdeclarativeparticles/data/particles.qml index c58927e..0d42645 100644 --- a/tests/auto/declarative/qdeclarativeparticles/data/particles.qml +++ b/tests/auto/declarative/qdeclarativeparticles/data/particles.qml @@ -8,7 +8,7 @@ Rectangle{ objectName: "particles" width:1; height:1; anchors.centerIn: parent; opacity: 1 lifeSpan: 100; lifeSpanDeviation: 20; count:1000; - fadeInDuration: 20; fadeOutDuration: 20; count: -1; emissionRate: 1000 + fadeInDuration: 20; fadeOutDuration: 20; emissionRate: 1000 angle: 0; angleDeviation: 360; velocity: 500; velocityDeviation:30 source: "particle.png" } diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview2.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview2.qml index 0d5c98b..c825292 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/pathview2.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/pathview2.qml @@ -1,7 +1,7 @@ import Qt 4.6 PathView { - id: photoPathView; model: rssModel; delegate: photoDelegate + id: photoPathView y: 100; width: 800; height: 330; pathItemCount: 10; z: 1 path: Path { diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml index 412cca2..af3ae13 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml @@ -1,7 +1,7 @@ import Qt 4.6 PathView { - id: photoPathView; model: rssModel; delegate: photoDelegate + id: photoPathView y: 100; width: 800; height: 330; pathItemCount: 4; offset: 10 dragMargin: 24; snapPosition: 50 diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/valueInterceptors.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/valueInterceptors.qml index 026ae83..0897847 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/valueInterceptors.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/valueInterceptors.qml @@ -3,6 +3,6 @@ import Test 1.0 MyTypeObject { property int value: 13; - rect.x: MyOffsetValueInterceptor {} + MyOffsetValueInterceptor on rect.x {} rect.x: value } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/valueSources.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/valueSources.qml index d4d4391..717f350 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/valueSources.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/valueSources.qml @@ -1,5 +1,5 @@ import Test 1.0 MyTypeObject { - rect.x: MyConstantValueSource {} + MyConstantValueSource on rect.x {} } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp index 69646b9..8732215 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp +++ b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp @@ -502,10 +502,9 @@ void tst_qdeclarativevaluetypes::valueInterceptors() QDeclarativeComponent component(&engine, TEST_FILE("valueInterceptors.qml")); MyTypeObject *object = qobject_cast(component.create()); checkNoErrors(component); - QEXPECT_FAIL("", "QT-2920", Abort); QVERIFY(object != 0); - QCOMPARE(object->rect().x(), 26); + QCOMPARE(object->rect().x(), 13); object->setProperty("value", 99); diff --git a/tools/qml/qfxtester.h b/tools/qml/qfxtester.h index 1a9f077..6521409 100644 --- a/tools/qml/qfxtester.h +++ b/tools/qml/qfxtester.h @@ -54,12 +54,12 @@ QT_BEGIN_NAMESPACE class QDeclarativeVisualTest : public QObject { Q_OBJECT - Q_PROPERTY(QList* events READ events CONSTANT) + Q_PROPERTY(QDeclarativeListProperty events READ events CONSTANT) Q_CLASSINFO("DefaultProperty", "events") public: QDeclarativeVisualTest() {} - QList *events() { return &m_events; } + QDeclarativeListProperty events() { return QDeclarativeListProperty(this, m_events); } int count() const { return m_events.count(); } QObject *event(int idx) { return m_events.at(idx); } -- cgit v0.12 From a9d327db7e77cc167172ad3199b6ffbc1c9da74f Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Tue, 2 Mar 2010 11:17:02 +1000 Subject: Add accessor operations to VisualItemModel::children --- src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp index 59d6db8..a0aed46 100644 --- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp +++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp @@ -81,6 +81,14 @@ public: static_cast(prop->data)->emitChildrenChanged(); } + static int children_count(QDeclarativeListProperty *prop) { + return static_cast(prop->data)->children.count(); + } + + static QDeclarativeItem *children_at(QDeclarativeListProperty *prop, int index) { + return static_cast(prop->data)->children.at(index); + } + void itemAppended() { Q_Q(QDeclarativeVisualItemModel); QDeclarativeVisualItemModelAttached *attached = QDeclarativeVisualItemModelAttached::properties(children.last()); @@ -136,7 +144,8 @@ QDeclarativeVisualItemModel::QDeclarativeVisualItemModel() QDeclarativeListProperty QDeclarativeVisualItemModel::children() { Q_D(QDeclarativeVisualItemModel); - return QDeclarativeListProperty(this, d, QDeclarativeVisualItemModelPrivate::children_append); + return QDeclarativeListProperty(this, d, d->children_append, + d->children_count, d->children_at); } /*! -- cgit v0.12 From ffe622b5424bd13155fea01116ed6504f06d9d83 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Mon, 1 Mar 2010 15:55:03 +1000 Subject: Example of text focus. Task-number: QT-448 --- examples/declarative/focusscope/test5.qml | 83 +++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 examples/declarative/focusscope/test5.qml diff --git a/examples/declarative/focusscope/test5.qml b/examples/declarative/focusscope/test5.qml new file mode 100644 index 0000000..da98350 --- /dev/null +++ b/examples/declarative/focusscope/test5.qml @@ -0,0 +1,83 @@ +import Qt 4.6 + +Rectangle { + color: "white" + width: 800 + height: 600 + + Keys.onReturnPressed: console.log("Error - Root") + + FocusScope { + id: myScope + focus: true + + Keys.onReturnPressed: console.log("Error - FocusScope") + + Rectangle { + height: 120 + width: 420 + + color: "transparent" + border.width: 5 + border.color: myScope.wantsFocus?"blue":"black" + + Rectangle { + x: 10; y: 10 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: item1.wantsFocus?"blue":"black" + } + + TextEdit { + id: item1 + x: 20; y: 20 + width: 90; height: 90 + color: "white" + font.pixelSize: 20 + Keys.onReturnPressed: console.log("Top Left"); + KeyNavigation.right: item2 + focus: true + wrap: true + text: "Box 1" + } + + Rectangle { + id: item2 + x: 310; y: 10 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: wantsFocus?"blue":"black" + KeyNavigation.left: item1 + Keys.onReturnPressed: console.log("Top Right"); + + Rectangle { + width: 50; height: 50; anchors.centerIn: parent + color: parent.focus?"red":"transparent" + } + } + } + KeyNavigation.down: item3 + } + + Text { x:100; y:170; text: "Blue border indicates scoped focus\nBlack border indicates NOT scoped focus\nRed box or flashing cursor indicates active focus\nUse arrow keys to navigate\nPress Ctrl-Return to print currently focused item" } + + Rectangle { + x: 10; y: 300 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: item3.wantsFocus?"blue":"black" + } + + TextEdit { + id: item3 + x: 20; y: 310 + width: 90; height: 90 + color: "white" + font.pixelSize: 20 + text: "Box 3" + + Keys.onReturnPressed: console.log("Bottom Left"); + KeyNavigation.up: myScope + wrap: true + } +} -- cgit v0.12 From 2de0a9ff40c6dcbfca5dc75aae7ac0a294618f4a Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Fri, 26 Feb 2010 16:34:28 +1000 Subject: Add NOTIFY signals to list, grid and path views Reviewed-by: akennedy --- .../graphicsitems/qdeclarativegridview.cpp | 12 +- .../graphicsitems/qdeclarativegridview_p.h | 20 ++- .../graphicsitems/qdeclarativelistview.cpp | 24 ++- .../graphicsitems/qdeclarativelistview_p.h | 38 +++-- src/declarative/graphicsitems/qdeclarativepath.cpp | 11 +- src/declarative/graphicsitems/qdeclarativepath_p.h | 11 +- .../graphicsitems/qdeclarativepathview.cpp | 26 +++- .../graphicsitems/qdeclarativepathview_p.h | 18 ++- .../qdeclarativegridview/data/propertychanges.qml | 69 +++++++++ .../tst_qdeclarativegridview.cpp | 125 +++++++++++++-- .../qdeclarativelistview/data/propertychanges.qml | 71 +++++++++ .../tst_qdeclarativelistview.cpp | 168 +++++++++++++++++++-- .../qdeclarativepathview/data/displaypath.qml | 2 +- .../qdeclarativepathview/data/pathview.qml | 2 +- .../qdeclarativepathview/data/pathview3.qml | 2 +- .../qdeclarativepathview/data/propertychanges.qml | 115 ++++++++++++++ .../tst_qdeclarativepathview.cpp | 167 +++++++++++++++++++- 17 files changed, 815 insertions(+), 66 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativegridview/data/propertychanges.qml create mode 100644 tests/auto/declarative/qdeclarativelistview/data/propertychanges.qml create mode 100644 tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index b43b30b..a7376cc 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -618,7 +618,7 @@ void QDeclarativeGridViewPrivate::createHighlight() } } if (changed) - emit q->highlightChanged(); + emit q->highlightItemChanged(); } void QDeclarativeGridViewPrivate::updateHighlight() @@ -784,6 +784,8 @@ QVariant QDeclarativeGridView::model() const void QDeclarativeGridView::setModel(const QVariant &model) { Q_D(QDeclarativeGridView); + if (d->modelVariant == model) + return; if (d->model) { disconnect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(itemsInserted(int,int))); disconnect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(itemsRemoved(int,int))); @@ -828,6 +830,7 @@ void QDeclarativeGridView::setModel(const QVariant &model) connect(d->model, SIGNAL(destroyingItem(QDeclarativeItem*)), this, SLOT(destroyingItem(QDeclarativeItem*))); emit countChanged(); } + emit modelChanged(); } /*! @@ -871,6 +874,7 @@ void QDeclarativeGridView::setDelegate(QDeclarativeComponent *delegate) d->moveReason = QDeclarativeGridViewPrivate::SetIndex; d->updateCurrent(d->currentIndex); } + emit delegateChanged(); } } @@ -966,6 +970,7 @@ void QDeclarativeGridView::setHighlight(QDeclarativeComponent *highlight) if (highlight != d->highlightComponent) { d->highlightComponent = highlight; d->updateCurrent(d->currentIndex); + emit highlightChanged(); } } @@ -1039,6 +1044,7 @@ void QDeclarativeGridView::setFlow(Flow flow) d->updateGrid(); refill(); d->updateCurrent(d->currentIndex); + emit flowChanged(); } } @@ -1058,7 +1064,10 @@ bool QDeclarativeGridView::isWrapEnabled() const void QDeclarativeGridView::setWrapEnabled(bool wrap) { Q_D(QDeclarativeGridView); + if (d->wrap == wrap) + return; d->wrap = wrap; + emit keyNavigationWrapsChanged(); } /*! @@ -1082,6 +1091,7 @@ void QDeclarativeGridView::setCacheBuffer(int buffer) d->buffer = buffer; if (isComponentComplete()) refill(); + emit cacheBufferChanged(); } } diff --git a/src/declarative/graphicsitems/qdeclarativegridview_p.h b/src/declarative/graphicsitems/qdeclarativegridview_p.h index b488475..d463a46 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview_p.h +++ b/src/declarative/graphicsitems/qdeclarativegridview_p.h @@ -57,19 +57,19 @@ class Q_DECLARATIVE_EXPORT QDeclarativeGridView : public QDeclarativeFlickable Q_OBJECT Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeGridView) - Q_PROPERTY(QVariant model READ model WRITE setModel) - Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate) + Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged) + Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged) Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) Q_PROPERTY(QDeclarativeItem *currentItem READ currentItem NOTIFY currentIndexChanged) Q_PROPERTY(int count READ count NOTIFY countChanged) - Q_PROPERTY(QDeclarativeComponent *highlight READ highlight WRITE setHighlight) - Q_PROPERTY(QDeclarativeItem *highlightItem READ highlightItem NOTIFY highlightChanged) + Q_PROPERTY(QDeclarativeComponent *highlight READ highlight WRITE setHighlight NOTIFY highlightChanged) + Q_PROPERTY(QDeclarativeItem *highlightItem READ highlightItem NOTIFY highlightItemChanged) Q_PROPERTY(bool highlightFollowsCurrentItem READ highlightFollowsCurrentItem WRITE setHighlightFollowsCurrentItem) - Q_PROPERTY(Flow flow READ flow WRITE setFlow) - Q_PROPERTY(bool keyNavigationWraps READ isWrapEnabled WRITE setWrapEnabled) - Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer) + Q_PROPERTY(Flow flow READ flow WRITE setFlow NOTIFY flowChanged) + Q_PROPERTY(bool keyNavigationWraps READ isWrapEnabled WRITE setWrapEnabled NOTIFY keyNavigationWrapsChanged) + Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer NOTIFY cacheBufferChanged) Q_PROPERTY(int cellWidth READ cellWidth WRITE setCellWidth NOTIFY cellWidthChanged) Q_PROPERTY(int cellHeight READ cellHeight WRITE setCellHeight NOTIFY cellHeightChanged) Q_CLASSINFO("DefaultProperty", "data") @@ -129,6 +129,12 @@ Q_SIGNALS: void cellWidthChanged(); void cellHeightChanged(); void highlightChanged(); + void highlightItemChanged(); + void modelChanged(); + void delegateChanged(); + void flowChanged(); + void keyNavigationWrapsChanged(); + void cacheBufferChanged(); protected: virtual void viewportMoved(); diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 03303a0..e7fff90 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -816,7 +816,7 @@ void QDeclarativeListViewPrivate::createHighlight() } } if (changed) - emit q->highlightChanged(); + emit q->highlightItemChanged(); } void QDeclarativeListViewPrivate::updateHighlight() @@ -1473,6 +1473,8 @@ QVariant QDeclarativeListView::model() const void QDeclarativeListView::setModel(const QVariant &model) { Q_D(QDeclarativeListView); + if (d->modelVariant == model) + return; if (d->model) { disconnect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(itemsInserted(int,int))); disconnect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(itemsRemoved(int,int))); @@ -1517,6 +1519,7 @@ void QDeclarativeListView::setModel(const QVariant &model) connect(d->model, SIGNAL(destroyingItem(QDeclarativeItem*)), this, SLOT(destroyingItem(QDeclarativeItem*))); emit countChanged(); } + emit modelChanged(); } /*! @@ -1563,6 +1566,7 @@ void QDeclarativeListView::setDelegate(QDeclarativeComponent *delegate) d->updateCurrent(d->currentIndex); } } + emit delegateChanged(); } /*! @@ -1663,6 +1667,7 @@ void QDeclarativeListView::setHighlight(QDeclarativeComponent *highlight) d->createHighlight(); if (d->currentItem) d->updateHighlight(); + emit highlightChanged(); } } @@ -1700,6 +1705,7 @@ void QDeclarativeListView::setHighlightFollowsCurrentItem(bool autoHighlight) d->highlightSizeAnimator->setEnabled(d->autoHighlight); } d->updateHighlight(); + emit highlightFollowsCurrentItemChanged(); } } @@ -1745,8 +1751,11 @@ qreal QDeclarativeListView::preferredHighlightBegin() const void QDeclarativeListView::setPreferredHighlightBegin(qreal start) { Q_D(QDeclarativeListView); + if (d->highlightRangeStart == start) + return; d->highlightRangeStart = start; d->haveHighlightRange = d->highlightRange != NoHighlightRange && d->highlightRangeStart <= d->highlightRangeEnd; + emit preferredHighlightBeginChanged(); } qreal QDeclarativeListView::preferredHighlightEnd() const @@ -1758,8 +1767,11 @@ qreal QDeclarativeListView::preferredHighlightEnd() const void QDeclarativeListView::setPreferredHighlightEnd(qreal end) { Q_D(QDeclarativeListView); + if (d->highlightRangeEnd == end) + return; d->highlightRangeEnd = end; d->haveHighlightRange = d->highlightRange != NoHighlightRange && d->highlightRangeStart <= d->highlightRangeEnd; + emit preferredHighlightEndChanged(); } QDeclarativeListView::HighlightRangeMode QDeclarativeListView::highlightRangeMode() const @@ -1771,8 +1783,11 @@ QDeclarativeListView::HighlightRangeMode QDeclarativeListView::highlightRangeMod void QDeclarativeListView::setHighlightRangeMode(HighlightRangeMode mode) { Q_D(QDeclarativeListView); + if (d->highlightRange == mode) + return; d->highlightRange = mode; d->haveHighlightRange = d->highlightRange != NoHighlightRange && d->highlightRangeStart <= d->highlightRangeEnd; + emit highlightRangeModeChanged(); } /*! @@ -1848,7 +1863,10 @@ bool QDeclarativeListView::isWrapEnabled() const void QDeclarativeListView::setWrapEnabled(bool wrap) { Q_D(QDeclarativeListView); + if (d->wrap == wrap) + return; d->wrap = wrap; + emit keyNavigationWrapsChanged(); } /*! @@ -1874,6 +1892,7 @@ void QDeclarativeListView::setCacheBuffer(int b) d->bufferMode = QDeclarativeListViewPrivate::BufferBefore | QDeclarativeListViewPrivate::BufferAfter; refill(); } + emit cacheBufferChanged(); } } @@ -1998,6 +2017,7 @@ void QDeclarativeListView::setSnapMode(SnapMode mode) Q_D(QDeclarativeListView); if (d->snapMode != mode) { d->snapMode = mode; + emit snapModeChanged(); } } @@ -2020,6 +2040,7 @@ void QDeclarativeListView::setFooter(QDeclarativeComponent *footer) d->maxExtentDirty = true; d->updateFooter(); d->updateViewport(); + emit footerChanged(); } } @@ -2043,6 +2064,7 @@ void QDeclarativeListView::setHeader(QDeclarativeComponent *header) d->updateHeader(); d->updateFooter(); d->updateViewport(); + emit headerChanged(); } } diff --git a/src/declarative/graphicsitems/qdeclarativelistview_p.h b/src/declarative/graphicsitems/qdeclarativelistview_p.h index 5e3edb0..f9b7b50 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview_p.h +++ b/src/declarative/graphicsitems/qdeclarativelistview_p.h @@ -91,33 +91,33 @@ class Q_DECLARATIVE_EXPORT QDeclarativeListView : public QDeclarativeFlickable Q_OBJECT Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeListView) - Q_PROPERTY(QVariant model READ model WRITE setModel) - Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate) + Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged) + Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged) Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) Q_PROPERTY(QDeclarativeItem *currentItem READ currentItem NOTIFY currentIndexChanged) Q_PROPERTY(int count READ count NOTIFY countChanged) - Q_PROPERTY(QDeclarativeComponent *highlight READ highlight WRITE setHighlight) - Q_PROPERTY(QDeclarativeItem *highlightItem READ highlightItem NOTIFY highlightChanged) - Q_PROPERTY(bool highlightFollowsCurrentItem READ highlightFollowsCurrentItem WRITE setHighlightFollowsCurrentItem) + Q_PROPERTY(QDeclarativeComponent *highlight READ highlight WRITE setHighlight NOTIFY highlightChanged) + Q_PROPERTY(QDeclarativeItem *highlightItem READ highlightItem NOTIFY highlightItemChanged) + Q_PROPERTY(bool highlightFollowsCurrentItem READ highlightFollowsCurrentItem WRITE setHighlightFollowsCurrentItem NOTIFY highlightFollowsCurrentItemChanged) Q_PROPERTY(qreal highlightMoveSpeed READ highlightMoveSpeed WRITE setHighlightMoveSpeed NOTIFY highlightMoveSpeedChanged) Q_PROPERTY(qreal highlightResizeSpeed READ highlightResizeSpeed WRITE setHighlightResizeSpeed NOTIFY highlightResizeSpeedChanged) - Q_PROPERTY(qreal preferredHighlightBegin READ preferredHighlightBegin WRITE setPreferredHighlightBegin) - Q_PROPERTY(qreal preferredHighlightEnd READ preferredHighlightEnd WRITE setPreferredHighlightEnd) - Q_PROPERTY(HighlightRangeMode highlightRangeMode READ highlightRangeMode WRITE setHighlightRangeMode) + Q_PROPERTY(qreal preferredHighlightBegin READ preferredHighlightBegin WRITE setPreferredHighlightBegin NOTIFY preferredHighlightBeginChanged) + Q_PROPERTY(qreal preferredHighlightEnd READ preferredHighlightEnd WRITE setPreferredHighlightEnd NOTIFY preferredHighlightEndChanged) + Q_PROPERTY(HighlightRangeMode highlightRangeMode READ highlightRangeMode WRITE setHighlightRangeMode NOTIFY highlightRangeModeChanged) Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing NOTIFY spacingChanged) Q_PROPERTY(Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged) - Q_PROPERTY(bool keyNavigationWraps READ isWrapEnabled WRITE setWrapEnabled) - Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer) + Q_PROPERTY(bool keyNavigationWraps READ isWrapEnabled WRITE setWrapEnabled NOTIFY keyNavigationWrapsChanged) + Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer NOTIFY cacheBufferChanged) Q_PROPERTY(QDeclarativeViewSection *section READ sectionCriteria CONSTANT) Q_PROPERTY(QString currentSection READ currentSection NOTIFY currentSectionChanged) - Q_PROPERTY(SnapMode snapMode READ snapMode WRITE setSnapMode) + Q_PROPERTY(SnapMode snapMode READ snapMode WRITE setSnapMode NOTIFY snapModeChanged) - Q_PROPERTY(QDeclarativeComponent *header READ header WRITE setHeader) - Q_PROPERTY(QDeclarativeComponent *footer READ footer WRITE setFooter) + Q_PROPERTY(QDeclarativeComponent *header READ header WRITE setHeader NOTIFY headerChanged) + Q_PROPERTY(QDeclarativeComponent *footer READ footer WRITE setFooter NOTIFY footerChanged) Q_ENUMS(HighlightRangeMode) Q_ENUMS(Orientation) @@ -205,6 +205,18 @@ Q_SIGNALS: void highlightMoveSpeedChanged(); void highlightResizeSpeedChanged(); void highlightChanged(); + void highlightItemChanged(); + void modelChanged(); + void delegateChanged(); + void highlightFollowsCurrentItemChanged(); + void preferredHighlightBeginChanged(); + void preferredHighlightEndChanged(); + void highlightRangeModeChanged(); + void keyNavigationWrapsChanged(); + void cacheBufferChanged(); + void snapModeChanged(); + void headerChanged(); + void footerChanged(); protected: virtual void viewportMoved(); diff --git a/src/declarative/graphicsitems/qdeclarativepath.cpp b/src/declarative/graphicsitems/qdeclarativepath.cpp index 48f112a..80586b8 100644 --- a/src/declarative/graphicsitems/qdeclarativepath.cpp +++ b/src/declarative/graphicsitems/qdeclarativepath.cpp @@ -114,7 +114,10 @@ qreal QDeclarativePath::startX() const void QDeclarativePath::setStartX(qreal x) { Q_D(QDeclarativePath); + if (qFuzzyCompare(x, d->startX)) + return; d->startX = x; + emit startXChanged(); } qreal QDeclarativePath::startY() const @@ -126,7 +129,10 @@ qreal QDeclarativePath::startY() const void QDeclarativePath::setStartY(qreal y) { Q_D(QDeclarativePath); + if (qFuzzyCompare(y, d->startY)) + return; d->startY = y; + emit startYChanged(); } /*! @@ -522,7 +528,10 @@ QString QDeclarativePathAttribute::name() const void QDeclarativePathAttribute::setName(const QString &name) { - _name = name; + if (_name == name) + return; + _name = name; + emit nameChanged(); } /*! diff --git a/src/declarative/graphicsitems/qdeclarativepath_p.h b/src/declarative/graphicsitems/qdeclarativepath_p.h index b3139f8..d7cfca1 100644 --- a/src/declarative/graphicsitems/qdeclarativepath_p.h +++ b/src/declarative/graphicsitems/qdeclarativepath_p.h @@ -67,7 +67,7 @@ class Q_DECLARATIVE_EXPORT QDeclarativePathAttribute : public QDeclarativePathEl { Q_OBJECT - Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY changed) public: QDeclarativePathAttribute(QObject *parent=0) : QDeclarativePathElement(parent), _value(0) {} @@ -79,6 +79,9 @@ public: qreal value() const; void setValue(qreal value); +Q_SIGNALS: + void nameChanged(); + private: QString _name; qreal _value; @@ -190,8 +193,8 @@ class Q_DECLARATIVE_EXPORT QDeclarativePath : public QObject, public QDeclarativ Q_INTERFACES(QDeclarativeParserStatus) Q_PROPERTY(QDeclarativeListProperty pathElements READ pathElements) - Q_PROPERTY(qreal startX READ startX WRITE setStartX) - Q_PROPERTY(qreal startY READ startY WRITE setStartY) + Q_PROPERTY(qreal startX READ startX WRITE setStartX NOTIFY startXChanged) + Q_PROPERTY(qreal startY READ startY WRITE setStartY NOTIFY startYChanged) Q_PROPERTY(bool closed READ isClosed NOTIFY changed) Q_CLASSINFO("DefaultProperty", "pathElements") Q_INTERFACES(QDeclarativeParserStatus) @@ -216,6 +219,8 @@ public: Q_SIGNALS: void changed(); + void startXChanged(); + void startYChanged(); protected: virtual void componentComplete(); diff --git a/src/declarative/graphicsitems/qdeclarativepathview.cpp b/src/declarative/graphicsitems/qdeclarativepathview.cpp index f1b0213..50aa9ef 100644 --- a/src/declarative/graphicsitems/qdeclarativepathview.cpp +++ b/src/declarative/graphicsitems/qdeclarativepathview.cpp @@ -203,6 +203,9 @@ QVariant QDeclarativePathView::model() const void QDeclarativePathView::setModel(const QVariant &model) { Q_D(QDeclarativePathView); + if (d->modelVariant == model) + return; + if (d->model) { disconnect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(itemsInserted(int,int))); disconnect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(itemsRemoved(int,int))); @@ -242,6 +245,7 @@ void QDeclarativePathView::setModel(const QVariant &model) d->pathOffset = 0; d->regenerate(); d->fixOffset(); + emit modelChanged(); } /*! @@ -269,9 +273,12 @@ QDeclarativePath *QDeclarativePathView::path() const void QDeclarativePathView::setPath(QDeclarativePath *path) { Q_D(QDeclarativePathView); + if (d->path == path) + return; d->path = path; connect(d->path, SIGNAL(changed()), this, SLOT(refill())); d->regenerate(); + emit pathChanged(); } /*! @@ -333,7 +340,7 @@ void QDeclarativePathViewPrivate::setOffset(qreal o) /*! \qmlproperty real PathView::snapPosition - This property determines the position (0-100) the nearest item will snap to. + This property determines the position (0.0-1.0) the nearest item will snap to. */ qreal QDeclarativePathView::snapPosition() const { @@ -344,8 +351,12 @@ qreal QDeclarativePathView::snapPosition() const void QDeclarativePathView::setSnapPosition(qreal pos) { Q_D(QDeclarativePathView); - d->snapPos = pos/100; + qreal normalizedPos = pos - int(pos); + if (qFuzzyCompare(normalizedPos, d->snapPos)) + return; + d->snapPos = normalizedPos; d->fixOffset(); + emit snapPositionChanged(); } /*! @@ -365,7 +376,10 @@ qreal QDeclarativePathView::dragMargin() const void QDeclarativePathView::setDragMargin(qreal dragMargin) { Q_D(QDeclarativePathView); + if (d->dragMargin == dragMargin) + return; d->dragMargin = dragMargin; + emit dragMarginChanged(); } /*! @@ -392,16 +406,19 @@ QDeclarativeComponent *QDeclarativePathView::delegate() const return 0; } -void QDeclarativePathView::setDelegate(QDeclarativeComponent *c) +void QDeclarativePathView::setDelegate(QDeclarativeComponent *delegate) { Q_D(QDeclarativePathView); + if (delegate == this->delegate()) + return; if (!d->ownModel) { d->model = new QDeclarativeVisualDataModel(qmlContext(this)); d->ownModel = true; } if (QDeclarativeVisualDataModel *dataModel = qobject_cast(d->model)) { - dataModel->setDelegate(c); + dataModel->setDelegate(delegate); d->regenerate(); + emit delegateChanged(); } } @@ -422,6 +439,7 @@ void QDeclarativePathView::setPathItemCount(int i) return; d->pathItems = i; d->regenerate(); + pathItemCountChanged(); } QPointF QDeclarativePathViewPrivate::pointNear(const QPointF &point, qreal *nearPercent) const diff --git a/src/declarative/graphicsitems/qdeclarativepathview_p.h b/src/declarative/graphicsitems/qdeclarativepathview_p.h index 709a4fc..df9c6ae 100644 --- a/src/declarative/graphicsitems/qdeclarativepathview_p.h +++ b/src/declarative/graphicsitems/qdeclarativepathview_p.h @@ -56,15 +56,15 @@ class Q_DECLARATIVE_EXPORT QDeclarativePathView : public QDeclarativeItem { Q_OBJECT - Q_PROPERTY(QVariant model READ model WRITE setModel) - Q_PROPERTY(QDeclarativePath *path READ path WRITE setPath) + Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged) + Q_PROPERTY(QDeclarativePath *path READ path WRITE setPath NOTIFY pathChanged) Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) Q_PROPERTY(qreal offset READ offset WRITE setOffset NOTIFY offsetChanged) - Q_PROPERTY(qreal snapPosition READ snapPosition WRITE setSnapPosition) - Q_PROPERTY(qreal dragMargin READ dragMargin WRITE setDragMargin) + Q_PROPERTY(qreal snapPosition READ snapPosition WRITE setSnapPosition NOTIFY snapPositionChanged) + Q_PROPERTY(qreal dragMargin READ dragMargin WRITE setDragMargin NOTIFY dragMarginChanged) Q_PROPERTY(int count READ count) - Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate) - Q_PROPERTY(int pathItemCount READ pathItemCount WRITE setPathItemCount) + Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged) + Q_PROPERTY(int pathItemCount READ pathItemCount WRITE setPathItemCount NOTIFY pathItemCountChanged) public: QDeclarativePathView(QDeclarativeItem *parent=0); @@ -101,6 +101,12 @@ public: Q_SIGNALS: void currentIndexChanged(); void offsetChanged(); + void modelChanged(); + void pathChanged(); + void dragMarginChanged(); + void snapPositionChanged(); + void delegateChanged(); + void pathItemCountChanged(); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); diff --git a/tests/auto/declarative/qdeclarativegridview/data/propertychanges.qml b/tests/auto/declarative/qdeclarativegridview/data/propertychanges.qml new file mode 100644 index 0000000..da2e8d0 --- /dev/null +++ b/tests/auto/declarative/qdeclarativegridview/data/propertychanges.qml @@ -0,0 +1,69 @@ +import Qt 4.6 + +Rectangle { + width: 360; height: 120; color: "white" + Component { + id: delegate + Item { + id: wrapper + width: 180; height: 40; + Column { + x: 5; y: 5 + Text { text: 'Name: ' + name } + Text { text: 'Number: ' + number } + } + } + } + Component { + id: highlightRed + Rectangle { + color: "red" + radius: 10 + opacity: 0.5 + } + } + GridView { + cellWidth:180 + cellHeight:40 + objectName: "gridView" + anchors.fill: parent + model: listModel + delegate: delegate + highlight: highlightRed + focus: true + keyNavigationWraps: true + cacheBuffer: 10 + flow: GridView.LeftToRight + } + + data:[ + ListModel { + id: listModel + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + }, + ListModel { + objectName: "alternateModel" + ListElement { + name: "Jack" + number: "555 8426" + } + ListElement { + name: "Mary" + number: "555 3264" + } + } + ] +} + + \ No newline at end of file diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp index 2a60fee..cc65d32 100644 --- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp +++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp @@ -39,16 +39,17 @@ ** ****************************************************************************/ -#include -#include -#include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include class tst_QDeclarativeGridView : public QObject { @@ -66,6 +67,9 @@ private slots: void currentIndex(); void defaultValues(); void properties(); + void propertyChanges(); + void componentChanges(); + void modelChanges(); void positionViewAtIndex(); void resetModel(); void QTBUG_8456(); @@ -91,7 +95,7 @@ public: setRoleNames(roles); } - int rowCount(const QModelIndex &parent=QModelIndex()) const { return list.count(); } + int rowCount(const QModelIndex &parent=QModelIndex()) const { Q_UNUSED(parent); return list.count(); } QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const { QVariant rv; if (role == Name) @@ -796,6 +800,107 @@ void tst_QDeclarativeGridView::properties() delete obj; } +void tst_QDeclarativeGridView::propertyChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativeGridView *gridView = canvas->rootObject()->findChild("gridView"); + QVERIFY(gridView); + + QSignalSpy keyNavigationWrapsSpy(gridView, SIGNAL(keyNavigationWrapsChanged())); + QSignalSpy cacheBufferSpy(gridView, SIGNAL(cacheBufferChanged())); + QSignalSpy flowSpy(gridView, SIGNAL(flowChanged())); + + QCOMPARE(gridView->isWrapEnabled(), true); + QCOMPARE(gridView->cacheBuffer(), 10); + QCOMPARE(gridView->flow(), QDeclarativeGridView::LeftToRight); + + gridView->setWrapEnabled(false); + gridView->setCacheBuffer(3); + gridView->setFlow(QDeclarativeGridView::TopToBottom); + + QCOMPARE(gridView->isWrapEnabled(), false); + QCOMPARE(gridView->cacheBuffer(), 3); + QCOMPARE(gridView->flow(), QDeclarativeGridView::TopToBottom); + + QCOMPARE(keyNavigationWrapsSpy.count(),1); + QCOMPARE(cacheBufferSpy.count(),1); + QCOMPARE(flowSpy.count(),1); + + gridView->setWrapEnabled(false); + gridView->setCacheBuffer(3); + gridView->setFlow(QDeclarativeGridView::TopToBottom); + + QCOMPARE(keyNavigationWrapsSpy.count(),1); + QCOMPARE(cacheBufferSpy.count(),1); + QCOMPARE(flowSpy.count(),1); + + delete canvas; +} + +void tst_QDeclarativeGridView::componentChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativeGridView *gridView = canvas->rootObject()->findChild("gridView"); + QVERIFY(gridView); + + QDeclarativeComponent component(canvas->engine()); + component.setData("import Qt 4.6; Rectangle { color: \"blue\"; }", QUrl::fromLocalFile("")); + + QDeclarativeComponent delegateComponent(canvas->engine()); + delegateComponent.setData("import Qt 4.6; Text { text: 'Name: ' + name }", QUrl::fromLocalFile("")); + + QSignalSpy highlightSpy(gridView, SIGNAL(highlightChanged())); + QSignalSpy delegateSpy(gridView, SIGNAL(delegateChanged())); + + gridView->setHighlight(&component); + gridView->setDelegate(&delegateComponent); + + QCOMPARE(gridView->highlight(), &component); + QCOMPARE(gridView->delegate(), &delegateComponent); + + QCOMPARE(highlightSpy.count(),1); + QCOMPARE(delegateSpy.count(),1); + + gridView->setHighlight(&component); + gridView->setDelegate(&delegateComponent); + + QCOMPARE(highlightSpy.count(),1); + QCOMPARE(delegateSpy.count(),1); + delete canvas; +} + +void tst_QDeclarativeGridView::modelChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativeGridView *gridView = canvas->rootObject()->findChild("gridView"); + QVERIFY(gridView); + + QDeclarativeListModel *alternateModel = canvas->rootObject()->findChild("alternateModel"); + QVERIFY(alternateModel); + QVariant modelVariant = QVariant::fromValue(alternateModel); + QSignalSpy modelSpy(gridView, SIGNAL(modelChanged())); + + gridView->setModel(modelVariant); + QCOMPARE(gridView->model(), modelVariant); + QCOMPARE(modelSpy.count(),1); + + gridView->setModel(modelVariant); + QCOMPARE(modelSpy.count(),1); + + gridView->setModel(QVariant()); + QCOMPARE(modelSpy.count(),2); + delete canvas; +} + void tst_QDeclarativeGridView::positionViewAtIndex() { QDeclarativeView *canvas = createView(); diff --git a/tests/auto/declarative/qdeclarativelistview/data/propertychanges.qml b/tests/auto/declarative/qdeclarativelistview/data/propertychanges.qml new file mode 100644 index 0000000..a41f003 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistview/data/propertychanges.qml @@ -0,0 +1,71 @@ +import Qt 4.6 + +Rectangle { + width: 180; height: 120; color: "white" + Component { + id: delegate + Item { + id: wrapper + width: 180; height: 40; + Column { + x: 5; y: 5 + Text { text: 'Name: ' + name } + Text { text: 'Number: ' + number } + } + } + } + Component { + id: highlightRed + Rectangle { + color: "red" + radius: 10 + opacity: 0.5 + } + } + ListView { + objectName: "listView" + anchors.fill: parent + model: listModel + delegate: delegate + highlight: highlightRed + focus: true + highlightFollowsCurrentItem: true + preferredHighlightBegin: 0.0 + preferredHighlightEnd: 0.0 + highlightRangeMode: ListView.ApplyRange + keyNavigationWraps: true + cacheBuffer: 10 + snapMode: ListView.SnapToItem + } + + data:[ + ListModel { + id: listModel + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + }, + ListModel { + objectName: "alternateModel" + ListElement { + name: "Jack" + number: "555 8426" + } + ListElement { + name: "Mary" + number: "555 3264" + } + } + ] +} + + \ No newline at end of file diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp index f15f26b..a36224f 100644 --- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp +++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp @@ -38,15 +38,18 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ + #include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include class tst_QDeclarativeListView : public QObject { @@ -82,6 +85,9 @@ private slots: void cacheBuffer(); void positionViewAtIndex(); void resetModel(); + void propertyChanges(); + void componentChanges(); + void modelChanges(); private: template void items(); @@ -240,7 +246,7 @@ public: setRoleNames(roles); } - int rowCount(const QModelIndex &parent=QModelIndex()) const { return list.count(); } + int rowCount(const QModelIndex &parent=QModelIndex()) const { Q_UNUSED(parent); return list.count(); } QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const { QVariant rv; if (role == Name) @@ -379,6 +385,7 @@ void tst_QDeclarativeListView::items() delete canvas; } + template void tst_QDeclarativeListView::changed() { @@ -1275,6 +1282,149 @@ void tst_QDeclarativeListView::resetModel() } } +void tst_QDeclarativeListView::propertyChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativeListView *listView = canvas->rootObject()->findChild("listView"); + QVERIFY(listView); + + QSignalSpy highlightFollowsCurrentItemSpy(listView, SIGNAL(highlightFollowsCurrentItemChanged())); + QSignalSpy preferredHighlightBeginSpy(listView, SIGNAL(preferredHighlightBeginChanged())); + QSignalSpy preferredHighlightEndSpy(listView, SIGNAL(preferredHighlightEndChanged())); + QSignalSpy highlightRangeModeSpy(listView, SIGNAL(highlightRangeModeChanged())); + QSignalSpy keyNavigationWrapsSpy(listView, SIGNAL(keyNavigationWrapsChanged())); + QSignalSpy cacheBufferSpy(listView, SIGNAL(cacheBufferChanged())); + QSignalSpy snapModeSpy(listView, SIGNAL(snapModeChanged())); + + QCOMPARE(listView->highlightFollowsCurrentItem(), true); + QCOMPARE(listView->preferredHighlightBegin(), 0.0); + QCOMPARE(listView->preferredHighlightEnd(), 0.0); + QCOMPARE(listView->highlightRangeMode(), QDeclarativeListView::ApplyRange); + QCOMPARE(listView->isWrapEnabled(), true); + QCOMPARE(listView->cacheBuffer(), 10); + QCOMPARE(listView->snapMode(), QDeclarativeListView::SnapToItem); + + listView->setHighlightFollowsCurrentItem(false); + listView->setPreferredHighlightBegin(1.0); + listView->setPreferredHighlightEnd(1.0); + listView->setHighlightRangeMode(QDeclarativeListView::StrictlyEnforceRange); + listView->setWrapEnabled(false); + listView->setCacheBuffer(3); + listView->setSnapMode(QDeclarativeListView::SnapOneItem); + + QCOMPARE(listView->highlightFollowsCurrentItem(), false); + QCOMPARE(listView->preferredHighlightBegin(), 1.0); + QCOMPARE(listView->preferredHighlightEnd(), 1.0); + QCOMPARE(listView->highlightRangeMode(), QDeclarativeListView::StrictlyEnforceRange); + QCOMPARE(listView->isWrapEnabled(), false); + QCOMPARE(listView->cacheBuffer(), 3); + QCOMPARE(listView->snapMode(), QDeclarativeListView::SnapOneItem); + + QCOMPARE(highlightFollowsCurrentItemSpy.count(),1); + QCOMPARE(preferredHighlightBeginSpy.count(),1); + QCOMPARE(preferredHighlightEndSpy.count(),1); + QCOMPARE(highlightRangeModeSpy.count(),1); + QCOMPARE(keyNavigationWrapsSpy.count(),1); + QCOMPARE(cacheBufferSpy.count(),1); + QCOMPARE(snapModeSpy.count(),1); + + listView->setHighlightFollowsCurrentItem(false); + listView->setPreferredHighlightBegin(1.0); + listView->setPreferredHighlightEnd(1.0); + listView->setHighlightRangeMode(QDeclarativeListView::StrictlyEnforceRange); + listView->setWrapEnabled(false); + listView->setCacheBuffer(3); + listView->setSnapMode(QDeclarativeListView::SnapOneItem); + + QCOMPARE(highlightFollowsCurrentItemSpy.count(),1); + QCOMPARE(preferredHighlightBeginSpy.count(),1); + QCOMPARE(preferredHighlightEndSpy.count(),1); + QCOMPARE(highlightRangeModeSpy.count(),1); + QCOMPARE(keyNavigationWrapsSpy.count(),1); + QCOMPARE(cacheBufferSpy.count(),1); + QCOMPARE(snapModeSpy.count(),1); + + delete canvas; +} + +void tst_QDeclarativeListView::componentChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativeListView *listView = canvas->rootObject()->findChild("listView"); + QVERIFY(listView); + + QDeclarativeComponent component(canvas->engine()); + component.setData("import Qt 4.6; Rectangle { color: \"blue\"; }", QUrl::fromLocalFile("")); + + QDeclarativeComponent delegateComponent(canvas->engine()); + delegateComponent.setData("import Qt 4.6; Text { text: 'Name: ' + name }", QUrl::fromLocalFile("")); + + QSignalSpy highlightSpy(listView, SIGNAL(highlightChanged())); + QSignalSpy delegateSpy(listView, SIGNAL(delegateChanged())); + QSignalSpy headerSpy(listView, SIGNAL(headerChanged())); + QSignalSpy footerSpy(listView, SIGNAL(footerChanged())); + + listView->setHighlight(&component); + listView->setHeader(&component); + listView->setFooter(&component); + listView->setDelegate(&delegateComponent); + + QCOMPARE(listView->highlight(), &component); + QCOMPARE(listView->header(), &component); + QCOMPARE(listView->footer(), &component); + QCOMPARE(listView->delegate(), &delegateComponent); + + QCOMPARE(highlightSpy.count(),1); + QCOMPARE(delegateSpy.count(),1); + QCOMPARE(headerSpy.count(),1); + QCOMPARE(footerSpy.count(),1); + + listView->setHighlight(&component); + listView->setHeader(&component); + listView->setFooter(&component); + listView->setDelegate(&delegateComponent); + + QCOMPARE(highlightSpy.count(),1); + QCOMPARE(delegateSpy.count(),1); + QCOMPARE(headerSpy.count(),1); + QCOMPARE(footerSpy.count(),1); + + delete canvas; +} + +void tst_QDeclarativeListView::modelChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativeListView *listView = canvas->rootObject()->findChild("listView"); + QVERIFY(listView); + + QDeclarativeListModel *alternateModel = canvas->rootObject()->findChild("alternateModel"); + QVERIFY(alternateModel); + QVariant modelVariant = QVariant::fromValue(alternateModel); + QSignalSpy modelSpy(listView, SIGNAL(modelChanged())); + + listView->setModel(modelVariant); + QCOMPARE(listView->model(), modelVariant); + QCOMPARE(modelSpy.count(),1); + + listView->setModel(modelVariant); + QCOMPARE(modelSpy.count(),1); + + listView->setModel(QVariant()); + QCOMPARE(modelSpy.count(),2); + + delete canvas; +} + void tst_QDeclarativeListView::qListModelInterface_items() { items(); diff --git a/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml b/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml index 627f38a..ab1538b 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml @@ -33,7 +33,7 @@ Rectangle { height: 320 model: testModel delegate: delegate - snapPosition: 0.01 + snapPosition: 0.0001 path: Path { startY: 120 startX: 160 diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview.qml index 8fa8d59..c5d88cd 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/pathview.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/pathview.qml @@ -39,7 +39,7 @@ Rectangle { height: 320 model: testModel delegate: delegate - snapPosition: 0.01 + snapPosition: 0.0001 path: Path { startY: 120 startX: 160 diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml index af3ae13..f8ed29f 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml @@ -3,7 +3,7 @@ import Qt 4.6 PathView { id: photoPathView y: 100; width: 800; height: 330; pathItemCount: 4; offset: 10 - dragMargin: 24; snapPosition: 50 + dragMargin: 24; snapPosition: 0.50 path: Path { startX: -50; startY: 40; diff --git a/tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml b/tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml new file mode 100644 index 0000000..db70b7b --- /dev/null +++ b/tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml @@ -0,0 +1,115 @@ +import Qt 4.6 + +Rectangle { + width: 350; height: 220; color: "white" + Component { + id: myDelegate + Item { + id: wrapper + width: 180; height: 40; + opacity: PathView.opacity + Column { + x: 5; y: 5 + Text { text: 'Name: ' + name } + Text { text: 'Number: ' + number } + } + } + } + + PathView { + snapPosition: 0.1 + dragMargin: 5.0 + id: pathView + objectName: "pathView" + anchors.fill: parent + model: listModel + delegate: myDelegate + focus: true + path: Path { + id: myPath + objectName: "path" + startX: 220; startY: 200 + PathAttribute { name: "opacity"; value: 1.0; objectName: "pathAttribute"; } + PathQuad { x: 220; y: 25; controlX: 260; controlY: 75 } + PathAttribute { name: "opacity"; value: 0.3 } + PathQuad { x: 220; y: 200; controlX: -20; controlY: 75 } + } + Timer { + interval: 2000; running: true; repeat: true + onTriggered: { + if (pathView.path == alternatePath) + pathView.path = myPath; + else + pathView.path = alternatePath; + } + } + } + + data:[ + ListModel { + id: listModel + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + }, + ListModel { + objectName: "alternateModel" + ListElement { + name: "Jack" + number: "555 8426" + } + ListElement { + name: "Mary" + number: "555 3264" + } + }, + Path { + id: alternatePath + objectName: "alternatePath" + startX: 100; startY: 40 + PathAttribute { name: "opacity"; value: 0.0 } + PathLine { x: 100; y: 160 } + PathAttribute { name: "opacity"; value: 0.2 } + PathLine { x: 300; y: 160 } + PathAttribute { name: "opacity"; value: 0.0 } + PathLine { x: 300; y: 40 } + PathAttribute { name: "opacity"; value: 0.2 } + PathLine { x: 100; y: 40 } + } + ] +} + + diff --git a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp index 79bc607..fa4e9d3 100644 --- a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp +++ b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp @@ -38,20 +38,23 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#include -#include -#include -#include -#include + +#include +#include #include #include -#include +#include +#include +#include +#include #include #include +#include +#include #include #include #include -#include + #include "../../../shared/util.h" class tst_QDeclarativePathView : public QObject @@ -69,6 +72,11 @@ private slots: void path(); void pathMoved(); void resetModel(); + void propertyChanges(); + void pathChanges(); + void componentChanges(); + void modelChanges(); + private: QDeclarativeView *createView(); @@ -120,7 +128,7 @@ public: setRoleNames(roles); } - int rowCount(const QModelIndex &parent=QModelIndex()) const { return list.count(); } + int rowCount(const QModelIndex &parent=QModelIndex()) const { Q_UNUSED(parent); return list.count(); } QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const { QVariant rv; if (role == Name) @@ -465,6 +473,149 @@ void tst_QDeclarativePathView::resetModel() } } +void tst_QDeclarativePathView::propertyChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativePathView *pathView = canvas->rootObject()->findChild("pathView"); + QVERIFY(pathView); + + QSignalSpy snapPositionSpy(pathView, SIGNAL(snapPositionChanged())); + QSignalSpy dragMarginSpy(pathView, SIGNAL(dragMarginChanged())); + + QCOMPARE(pathView->snapPosition(), 0.1); + QCOMPARE(pathView->dragMargin(), 5.0); + + pathView->setSnapPosition(0.4); + pathView->setDragMargin(20.0); + + QCOMPARE(pathView->snapPosition(), 0.4); + QCOMPARE(pathView->dragMargin(), 20.0); + + QCOMPARE(snapPositionSpy.count(), 1); + QCOMPARE(dragMarginSpy.count(), 1); + + pathView->setSnapPosition(0.4); + pathView->setDragMargin(20.0); + + QCOMPARE(snapPositionSpy.count(), 1); + QCOMPARE(dragMarginSpy.count(), 1); + delete canvas; +} + +void tst_QDeclarativePathView::pathChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativePathView *pathView = canvas->rootObject()->findChild("pathView"); + QVERIFY(pathView); + + QDeclarativePath *path = canvas->rootObject()->findChild("path"); + QVERIFY(path); + + QSignalSpy startXSpy(path, SIGNAL(startXChanged())); + QSignalSpy startYSpy(path, SIGNAL(startYChanged())); + + QCOMPARE(path->startX(), 220.0); + QCOMPARE(path->startY(), 200.0); + + path->setStartX(240.0); + path->setStartY(220.0); + + QCOMPARE(path->startX(), 240.0); + QCOMPARE(path->startY(), 220.0); + + QCOMPARE(startXSpy.count(),1); + QCOMPARE(startYSpy.count(),1); + + path->setStartX(240); + path->setStartY(220); + + QCOMPARE(startXSpy.count(),1); + QCOMPARE(startYSpy.count(),1); + + QDeclarativePath *alternatePath = canvas->rootObject()->findChild("alternatePath"); + QVERIFY(alternatePath); + + QSignalSpy pathSpy(pathView, SIGNAL(pathChanged())); + + QCOMPARE(pathView->path(), path); + + pathView->setPath(alternatePath); + QCOMPARE(pathView->path(), alternatePath); + QCOMPARE(pathSpy.count(),1); + + pathView->setPath(alternatePath); + QCOMPARE(pathSpy.count(),1); + + QDeclarativePathAttribute *pathAttribute = canvas->rootObject()->findChild("pathAttribute"); + QVERIFY(pathAttribute); + + QSignalSpy nameSpy(pathAttribute, SIGNAL(nameChanged())); + QCOMPARE(pathAttribute->name(), QString("opacity")); + + pathAttribute->setName("scale"); + QCOMPARE(pathAttribute->name(), QString("scale")); + QCOMPARE(nameSpy.count(),1); + + pathAttribute->setName("scale"); + QCOMPARE(nameSpy.count(),1); + delete canvas; +} + +void tst_QDeclarativePathView::componentChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativePathView *pathView = canvas->rootObject()->findChild("pathView"); + QVERIFY(pathView); + + QDeclarativeComponent delegateComponent(canvas->engine()); + delegateComponent.setData("import Qt 4.6; Text { text: 'Name: ' + name }", QUrl::fromLocalFile("")); + + QSignalSpy delegateSpy(pathView, SIGNAL(delegateChanged())); + + pathView->setDelegate(&delegateComponent); + QCOMPARE(pathView->delegate(), &delegateComponent); + QCOMPARE(delegateSpy.count(),1); + + pathView->setDelegate(&delegateComponent); + QCOMPARE(delegateSpy.count(),1); + delete canvas; +} + +void tst_QDeclarativePathView::modelChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativePathView *pathView = canvas->rootObject()->findChild("pathView"); + QVERIFY(pathView); + + QDeclarativeListModel *alternateModel = canvas->rootObject()->findChild("alternateModel"); + QVERIFY(alternateModel); + QVariant modelVariant = QVariant::fromValue(alternateModel); + QSignalSpy modelSpy(pathView, SIGNAL(modelChanged())); + + pathView->setModel(modelVariant); + QCOMPARE(pathView->model(), modelVariant); + QCOMPARE(modelSpy.count(),1); + + pathView->setModel(modelVariant); + QCOMPARE(modelSpy.count(),1); + + pathView->setModel(QVariant()); + QCOMPARE(modelSpy.count(),2); + + delete canvas; +} QDeclarativeView *tst_QDeclarativePathView::createView() { -- cgit v0.12 From 0fede209124a20ea8a8c75c6b83e5377a56dda4a Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Tue, 2 Mar 2010 10:05:49 +1000 Subject: Fix warnings in AudioInput example. Reviewed-by: Kurt Korbatits --- examples/multimedia/audioinput/audioinput.cpp | 2 ++ examples/multimedia/audioinput/audioinput.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/multimedia/audioinput/audioinput.cpp b/examples/multimedia/audioinput/audioinput.cpp index b01a396..7c2cc30 100644 --- a/examples/multimedia/audioinput/audioinput.cpp +++ b/examples/multimedia/audioinput/audioinput.cpp @@ -76,6 +76,7 @@ AudioInfo::AudioInfo(const QAudioFormat &format, QObject *parent) case QAudioFormat::SignedInt: m_maxAmplitude = 127; break; + default: ; } break; case 16: @@ -86,6 +87,7 @@ AudioInfo::AudioInfo(const QAudioFormat &format, QObject *parent) case QAudioFormat::SignedInt: m_maxAmplitude = 32767; break; + default: ; } break; } diff --git a/examples/multimedia/audioinput/audioinput.h b/examples/multimedia/audioinput/audioinput.h index f87c682..be721de 100644 --- a/examples/multimedia/audioinput/audioinput.h +++ b/examples/multimedia/audioinput/audioinput.h @@ -119,8 +119,8 @@ private: QPushButton *m_suspendResumeButton; QComboBox *m_deviceBox; - AudioInfo *m_audioInfo; QAudioDeviceInfo m_device; + AudioInfo *m_audioInfo; QAudioFormat m_format; QAudioInput *m_audioInput; QIODevice *m_input; -- cgit v0.12 From 48a518bd4a761e2027729096f9a1bb552cb83f9e Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Tue, 2 Mar 2010 10:11:54 +1000 Subject: Fix Audio input on OSX 10.6. Task-number: QTBUG-5741 Reviewed-by: Kurt Korbatits --- src/multimedia/audio/qaudioinput_mac_p.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/multimedia/audio/qaudioinput_mac_p.cpp b/src/multimedia/audio/qaudioinput_mac_p.cpp index 7251513..c52c6c4 100644 --- a/src/multimedia/audio/qaudioinput_mac_p.cpp +++ b/src/multimedia/audio/qaudioinput_mac_p.cpp @@ -169,8 +169,10 @@ public: void reset() { - for (UInt32 i = 0; i < bfs->mNumberBuffers; ++i) + for (UInt32 i = 0; i < bfs->mNumberBuffers; ++i) { bfs->mBuffers[i].mDataByteSize = dataSize; + bfs->mBuffers[i].mData = 0; + } } private: -- cgit v0.12 From b580c13afb26592b755956d809b02fd8fd5e99cd Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Tue, 2 Mar 2010 10:25:47 +1000 Subject: Fix namespace issues. Reviewed-by: Kurt Korbatits --- src/multimedia/audio/qaudioinput_mac_p.cpp | 8 ++++---- src/multimedia/audio/qaudioinput_mac_p.h | 4 ++-- src/multimedia/audio/qaudiooutput_mac_p.cpp | 10 +++++----- src/multimedia/audio/qaudiooutput_mac_p.h | 4 ++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/multimedia/audio/qaudioinput_mac_p.cpp b/src/multimedia/audio/qaudioinput_mac_p.cpp index c52c6c4..bd2de52 100644 --- a/src/multimedia/audio/qaudioinput_mac_p.cpp +++ b/src/multimedia/audio/qaudioinput_mac_p.cpp @@ -64,7 +64,7 @@ QT_BEGIN_NAMESPACE -namespace +namespace QtMultimediaInternal { static const int default_buffer_size = 4 * 1024; @@ -525,7 +525,7 @@ QAudioInputPrivate::QAudioInputPrivate(const QByteArray& device, QAudioFormat co startTime = 0; totalFrames = 0; audioBuffer = 0; - internalBufferSize = default_buffer_size; + internalBufferSize = QtMultimediaInternal::default_buffer_size; clockFrequency = AudioGetHostClockFrequency() / 1000; errorCode = QAudio::NoError; stateCode = QAudio::StoppedState; @@ -670,13 +670,13 @@ bool QAudioInputPrivate::open() else internalBufferSize -= internalBufferSize % streamFormat.mBytesPerFrame; - audioBuffer = new QAudioInputBuffer(internalBufferSize, + audioBuffer = new QtMultimediaInternal::QAudioInputBuffer(internalBufferSize, periodSizeBytes, deviceFormat, streamFormat, this); - audioIO = new MacInputDevice(audioBuffer, this); + audioIO = new QtMultimediaInternal::MacInputDevice(audioBuffer, this); // Init if (AudioUnitInitialize(audioUnit) != noErr) { diff --git a/src/multimedia/audio/qaudioinput_mac_p.h b/src/multimedia/audio/qaudioinput_mac_p.h index e1b8e4a..42f90e2 100644 --- a/src/multimedia/audio/qaudioinput_mac_p.h +++ b/src/multimedia/audio/qaudioinput_mac_p.h @@ -75,7 +75,7 @@ QT_BEGIN_NAMESPACE class QTimer; class QIODevice; -namespace +namespace QtMultimediaInternal { class QAudioInputBuffer; } @@ -97,7 +97,7 @@ public: UInt64 startTime; QAudio::Error errorCode; QAudio::State stateCode; - QAudioInputBuffer* audioBuffer; + QtMultimediaInternal::QAudioInputBuffer* audioBuffer; QMutex mutex; QWaitCondition threadFinished; QAtomicInt audioThreadState; diff --git a/src/multimedia/audio/qaudiooutput_mac_p.cpp b/src/multimedia/audio/qaudiooutput_mac_p.cpp index 518f78f..6f32257 100644 --- a/src/multimedia/audio/qaudiooutput_mac_p.cpp +++ b/src/multimedia/audio/qaudiooutput_mac_p.cpp @@ -70,7 +70,7 @@ QT_BEGIN_NAMESPACE -namespace +namespace QtMultimediaInternal { static const int default_buffer_size = 8 * 1024; @@ -237,7 +237,7 @@ class MacOutputDevice : public QIODevice Q_OBJECT public: - MacOutputDevice(QAudioOutputBuffer* audioBuffer, QObject* parent): + MacOutputDevice(QtMultimediaInternal::QAudioOutputBuffer* audioBuffer, QObject* parent): QIODevice(parent), m_audioBuffer(audioBuffer) { @@ -263,7 +263,7 @@ public: } private: - QAudioOutputBuffer* m_audioBuffer; + QtMultimediaInternal::QAudioOutputBuffer* m_audioBuffer; }; @@ -285,7 +285,7 @@ QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray& device, const QAudioF startTime = 0; totalFrames = 0; audioBuffer = 0; - internalBufferSize = default_buffer_size; + internalBufferSize = QtMultimediaInternal::default_buffer_size; clockFrequency = AudioGetHostClockFrequency() / 1000; errorCode = QAudio::NoError; stateCode = QAudio::StoppedState; @@ -399,7 +399,7 @@ bool QAudioOutputPrivate::open() else internalBufferSize -= internalBufferSize % streamFormat.mBytesPerFrame; - audioBuffer = new QAudioOutputBuffer(internalBufferSize, periodSizeBytes, audioFormat); + audioBuffer = new QtMultimediaInternal::QAudioOutputBuffer(internalBufferSize, periodSizeBytes, audioFormat); connect(audioBuffer, SIGNAL(readyRead()), SLOT(inputReady())); // Pull audioIO = new MacOutputDevice(audioBuffer, this); diff --git a/src/multimedia/audio/qaudiooutput_mac_p.h b/src/multimedia/audio/qaudiooutput_mac_p.h index 1aacc67..752905c 100644 --- a/src/multimedia/audio/qaudiooutput_mac_p.h +++ b/src/multimedia/audio/qaudiooutput_mac_p.h @@ -74,7 +74,7 @@ QT_BEGIN_NAMESPACE class QIODevice; -namespace +namespace QtMultimediaInternal { class QAudioOutputBuffer; } @@ -96,7 +96,7 @@ public: UInt64 startTime; AudioStreamBasicDescription deviceFormat; AudioStreamBasicDescription streamFormat; - QAudioOutputBuffer* audioBuffer; + QtMultimediaInternal::QAudioOutputBuffer* audioBuffer; QAtomicInt audioThreadState; QWaitCondition threadFinished; QMutex mutex; -- cgit v0.12 From 8da93faace82eb2bc86e76c0ad0a0c5c95e3b8bf Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Tue, 2 Mar 2010 12:07:40 +1000 Subject: Add docs and tests for WorkerListModel. Task-number: QT-2807 --- doc/src/declarative/elements.qdoc | 2 + examples/declarative/workerlistmodel/dataloader.js | 14 ++ .../declarative/workerlistmodel/timedisplay.qml | 33 ++++ src/declarative/qml/qdeclarativeworkerscript.cpp | 137 ++++++++++++++- src/declarative/qml/qdeclarativeworkerscript_p.h | 9 +- .../qdeclarativeworkerlistmodel/data/model.qml | 14 ++ .../qdeclarativeworkerlistmodel/data/script.js | 6 + .../qdeclarativeworkerlistmodel.pro | 9 + .../tst_qdeclarativeworkerlistmodel.cpp | 193 +++++++++++++++++++++ 9 files changed, 414 insertions(+), 3 deletions(-) create mode 100644 examples/declarative/workerlistmodel/dataloader.js create mode 100644 examples/declarative/workerlistmodel/timedisplay.qml create mode 100644 tests/auto/declarative/qdeclarativeworkerlistmodel/data/model.qml create mode 100644 tests/auto/declarative/qdeclarativeworkerlistmodel/data/script.js create mode 100644 tests/auto/declarative/qdeclarativeworkerlistmodel/qdeclarativeworkerlistmodel.pro create mode 100644 tests/auto/declarative/qdeclarativeworkerlistmodel/tst_qdeclarativeworkerlistmodel.cpp diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index 1fd4dad..6cca39b 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -91,6 +91,7 @@ The following table lists the QML elements provided by the Qt Declarative module \o \l VisualDataModel \o \l Package \o \l XmlListModel and XmlRole +\o \l WorkerListModel \o \l DateTimeFormatter \o \l NumberFormatter \endlist @@ -102,6 +103,7 @@ The following table lists the QML elements provided by the Qt Declarative module \o \l Component \o \l Timer \o \l QtObject +\o \l WorkerScript \endlist \endtable diff --git a/examples/declarative/workerlistmodel/dataloader.js b/examples/declarative/workerlistmodel/dataloader.js new file mode 100644 index 0000000..eac7478 --- /dev/null +++ b/examples/declarative/workerlistmodel/dataloader.js @@ -0,0 +1,14 @@ +// ![0] +WorkerScript.onMessage = function(msg) { + console.log("Worker told to", msg.action); + + if (msg.action == 'appendCurrentTime') { + var data = {'time': new Date().toTimeString()}; + msg.model.append(data); + msg.model.sync(); // updates the changes to the list + + var msgToSend = {'msg': 'Model updated!'}; + WorkerScript.sendMessage(msgToSend); + } +} +// ![0] diff --git a/examples/declarative/workerlistmodel/timedisplay.qml b/examples/declarative/workerlistmodel/timedisplay.qml new file mode 100644 index 0000000..3bf2630 --- /dev/null +++ b/examples/declarative/workerlistmodel/timedisplay.qml @@ -0,0 +1,33 @@ +// ![0] +import Qt 4.6 + +ListView { + width: 200 + height: 300 + + model: listModel + delegate: Component { + Text { text: time } + } + + WorkerListModel { id: listModel } + + WorkerScript { + id: worker + source: "dataloader.js" + onMessage: { + console.log("Worker said", messageObject.msg); + } + } + + Timer { + id: timer + interval: 2000; repeat: true; running: true; triggeredOnStart: true + + onTriggered: { + var msg = {'action': 'appendCurrentTime', 'model': listModel}; + worker.sendMessage(msg); + } + } +} +// ![0] diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp index 03151e4..c1d090e 100644 --- a/src/declarative/qml/qdeclarativeworkerscript.cpp +++ b/src/declarative/qml/qdeclarativeworkerscript.cpp @@ -841,6 +841,41 @@ bool QDeclarativeWorkerListModelAgent::event(QEvent *e) return QObject::event(e); } +/*! + \qmlclass WorkerListModel QDeclarativeWorkerListModel + \brief The WorkerListModel element provides a threaded list model. + + Use WorkerListModel together with WorkerScript to define a list model + that is controlled by a separate thread. This is useful if list modification + operations are synchronous and take some time: using WorkerListModel + moves these operations to a different thread and avoids blocking of the + main GUI thread. + + The thread that creates the WorkerListModel can modify the model for any + initial set-up requirements. However, once the model has been modified by + the associated WorkerScript, the model can only be modified by that worker + script and becomes read-only to all other threads. + + Here is an example application that uses WorkerScript to append the + current time to a WorkerListModel: + + \snippet examples/declarative/workerlistmodel/timedisplay.qml 0 + + The included file, \tt dataloader.js, looks like this: + + \snippet examples/declarative/workerlistmodel/dataloader.js 0 + + The application's \tt Timer object periodically sends a message to the + worker script by calling \tt WorkerScript::sendMessage(). When this message + is received, \tt WorkerScript.onMessage() is invoked in + \tt dataloader.js, which appends the current time to the worker list + model. + + Note that unlike ListModel, WorkerListModel does not have \tt move() and + \tt setProperty() methods. + + \sa WorkerScript, ListModel +*/ QDeclarativeWorkerListModel::QDeclarativeWorkerListModel(QObject *parent) : QListModelInterface(parent), m_agent(0) { @@ -854,6 +889,14 @@ QDeclarativeWorkerListModel::~QDeclarativeWorkerListModel() } } +/*! + \qmlmethod WorkerListModel::clear() + + Deletes all content from the model. The properties are cleared such that + different properties may be set on subsequent additions. + + \sa append() remove() +*/ void QDeclarativeWorkerListModel::clear() { if (m_agent) { @@ -869,6 +912,13 @@ void QDeclarativeWorkerListModel::clear() } } +/*! + \qmlmethod WorkerListModel::remove(int index) + + Deletes the content at \a index from the model. + + \sa clear() +*/ void QDeclarativeWorkerListModel::remove(int index) { if (m_agent) { @@ -884,6 +934,18 @@ void QDeclarativeWorkerListModel::remove(int index) emit countChanged(); } +/*! + \qmlmethod WorkerListModel::append(jsobject dict) + + Adds a new item to the end of the list model, with the + values in \a dict. + + \code + FruitModel.append({"cost": 5.95, "name":"Pizza"}) + \endcode + + \sa set() remove() +*/ void QDeclarativeWorkerListModel::append(const QScriptValue &value) { if (m_agent) { @@ -914,6 +976,21 @@ void QDeclarativeWorkerListModel::append(const QScriptValue &value) emit countChanged(); } +/*! + \qmlmethod WorkerListModel::insert(int index, jsobject dict) + + Adds a new item to the list model at position \a index, with the + values in \a dict. + + \code + FruitModel.insert(2, {"cost": 5.95, "name":"Pizza"}) + \endcode + + The \a index must be to an existing item in the list, or one past + the end of the list (equivalent to append). + + \sa set() append() +*/ void QDeclarativeWorkerListModel::insert(int index, const QScriptValue &value) { if (m_agent) { @@ -946,6 +1023,30 @@ void QDeclarativeWorkerListModel::insert(int index, const QScriptValue &value) emit countChanged(); } +/*! + \qmlmethod object ListModel::get(int index) + + Returns the item at \a index in the list model. + + \code + FruitModel.append({"cost": 5.95, "name":"Jackfruit"}) + FruitModel.get(0).cost + \endcode + + The \a index must be an element in the list. + + Note that properties of the returned object that are themselves objects + will also be models, and this get() method is used to access elements: + + \code + FruitModel.append(..., "attributes": + [{"name":"spikes","value":"7mm"}, + {"name":"color","value":"green"}]); + FruitModel.get(0).attributes.get(1).value; // == "green" + \endcode + + \sa append() +*/ QScriptValue QDeclarativeWorkerListModel::get(int index) const { QDeclarativeEngine *engine = qmlEngine(this); @@ -962,6 +1063,21 @@ QScriptValue QDeclarativeWorkerListModel::get(int index) const return rv; } +/*! + \qmlmethod WorkerListModel::set(int index, jsobject dict) + + Changes the item at \a index in the list model with the + values in \a dict. Properties not appearing in \a valuemap + are left unchanged. + + \code + FruitModel.set(3, {"cost": 5.95, "name":"Pizza"}) + \endcode + + The \a index must be an element in the list. + + \sa append() +*/ void QDeclarativeWorkerListModel::set(int index, const QScriptValue &value) { if (m_agent) { @@ -995,6 +1111,22 @@ void QDeclarativeWorkerListModel::set(int index, const QScriptValue &value) } } +/*! + \qmlmethod WorkerListModel::sync() + + Writes any unsaved changes to the list model. This must be called after + changes have been made to the list model in the worker script. + + Note that this method can only be called from the associated worker script. +*/ +void QDeclarativeWorkerListModel::sync() +{ + // This is really a dummy method to make it look like sync() exists in + // WorkerListModel (and not QDeclarativeWorkerListModelAgent) and to let + // us document sync(). + qmlInfo(this) << "sync() can only be called from a WorkerScript"; +} + QDeclarativeWorkerListModelAgent *QDeclarativeWorkerListModel::agent() { if (!m_agent) @@ -1013,6 +1145,10 @@ QString QDeclarativeWorkerListModel::toString(int role) const return m_roles.value(role); } +/*! + \qmlproperty int ListModel::count + The number of data entries in the model. +*/ int QDeclarativeWorkerListModel::count() const { return m_values.count(); @@ -1038,4 +1174,3 @@ QT_END_NAMESPACE #include "qdeclarativeworkerscript.moc" - diff --git a/src/declarative/qml/qdeclarativeworkerscript_p.h b/src/declarative/qml/qdeclarativeworkerscript_p.h index 8ebd2c1..01cc72a 100644 --- a/src/declarative/qml/qdeclarativeworkerscript_p.h +++ b/src/declarative/qml/qdeclarativeworkerscript_p.h @@ -61,6 +61,8 @@ #include #include +QT_BEGIN_HEADER + QT_BEGIN_NAMESPACE class QDeclarativeWorkerScript; @@ -84,7 +86,7 @@ private: QDeclarativeWorkerScriptEnginePrivate *d; }; -class QDeclarativeWorkerScript : public QObject, public QDeclarativeParserStatus +class Q_DECLARATIVE_EXPORT QDeclarativeWorkerScript : public QObject, public QDeclarativeParserStatus { Q_OBJECT Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) @@ -115,7 +117,7 @@ private: }; class QDeclarativeWorkerListModelAgent; -class QDeclarativeWorkerListModel : public QListModelInterface +class Q_DECLARATIVE_EXPORT QDeclarativeWorkerListModel : public QListModelInterface { Q_OBJECT Q_PROPERTY(int count READ count NOTIFY countChanged) @@ -130,6 +132,7 @@ public: Q_INVOKABLE void insert(int index, const QScriptValue&); Q_INVOKABLE QScriptValue get(int index) const; Q_INVOKABLE void set(int index, const QScriptValue &); + Q_INVOKABLE void sync(); QDeclarativeWorkerListModelAgent *agent(); @@ -157,4 +160,6 @@ QT_END_NAMESPACE QML_DECLARE_TYPE(QDeclarativeWorkerScript); QML_DECLARE_TYPE(QDeclarativeWorkerListModel); +QT_END_HEADER + #endif // QDECLARATIVEWORKERSCRIPT_P_H diff --git a/tests/auto/declarative/qdeclarativeworkerlistmodel/data/model.qml b/tests/auto/declarative/qdeclarativeworkerlistmodel/data/model.qml new file mode 100644 index 0000000..be94e00 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeworkerlistmodel/data/model.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +Item { + property alias model: model + + WorkerListModel { id: model } + + function workerModifyModel(cmd) { worker.sendMessage({'command': cmd, 'model': model}) } + + WorkerScript { + id: worker + source: "script.js" + } +} diff --git a/tests/auto/declarative/qdeclarativeworkerlistmodel/data/script.js b/tests/auto/declarative/qdeclarativeworkerlistmodel/data/script.js new file mode 100644 index 0000000..8ee62b4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeworkerlistmodel/data/script.js @@ -0,0 +1,6 @@ +WorkerScript.onMessage = function(msg) { + eval("msg.model." + msg.command) + msg.model.sync() +} + + diff --git a/tests/auto/declarative/qdeclarativeworkerlistmodel/qdeclarativeworkerlistmodel.pro b/tests/auto/declarative/qdeclarativeworkerlistmodel/qdeclarativeworkerlistmodel.pro new file mode 100644 index 0000000..960dbe1 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeworkerlistmodel/qdeclarativeworkerlistmodel.pro @@ -0,0 +1,9 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative +QT += script +macx:CONFIG -= app_bundle + +SOURCES += tst_qdeclarativeworkerlistmodel.cpp + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qdeclarativeworkerlistmodel/tst_qdeclarativeworkerlistmodel.cpp b/tests/auto/declarative/qdeclarativeworkerlistmodel/tst_qdeclarativeworkerlistmodel.cpp new file mode 100644 index 0000000..11a7447 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeworkerlistmodel/tst_qdeclarativeworkerlistmodel.cpp @@ -0,0 +1,193 @@ +/**************************************************************************** +** +** 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 +#include + +#include +#include +#include + +#include +#include +#include "../../../shared/util.h" + + + +class tst_QDeclarativeWorkerListModel : public QObject +{ + Q_OBJECT +public: + tst_QDeclarativeWorkerListModel() {} +private slots: + void clear(); + void remove(); + void append(); + void insert(); + void get(); + void set(); + +private: + QByteArray modificationWarning() const { + QString file = QUrl::fromLocalFile(SRCDIR "/data/model.qml").toString(); + return QString("QML WorkerListModel (" + file + ":6:5) List can only be modified from a WorkerScript").toUtf8(); + } + + QDeclarativeEngine m_engine; +}; + +void tst_QDeclarativeWorkerListModel::clear() +{ + QDeclarativeComponent component(&m_engine, SRCDIR "/data/model.qml"); + QDeclarativeItem *item = qobject_cast(component.create()); + QVERIFY(item != 0); + QDeclarativeWorkerListModel *model = item->property("model").value(); + QVERIFY(model != 0); + + QCOMPARE(model->count(), 0); + QVERIFY(QMetaObject::invokeMethod(item, "workerModifyModel", Q_ARG(QVariant, "append({'name': 'A'})"))); + QTRY_COMPARE(model->count(), 1); + + QTest::ignoreMessage(QtWarningMsg, modificationWarning().constData()); + model->clear(); + QCOMPARE(model->count(), 1); + + QVERIFY(QMetaObject::invokeMethod(item, "workerModifyModel", Q_ARG(QVariant, "clear()"))); + QTRY_COMPARE(model->count(), 0); + + qApp->processEvents(); +} + +void tst_QDeclarativeWorkerListModel::remove() +{ + QDeclarativeComponent component(&m_engine, SRCDIR "/data/model.qml"); + QDeclarativeItem *item = qobject_cast(component.create()); + QVERIFY(item != 0); + QDeclarativeWorkerListModel *model = item->property("model").value(); + QVERIFY(model != 0); + + QVERIFY(QMetaObject::invokeMethod(item, "workerModifyModel", Q_ARG(QVariant, "append({'name': 'A'})"))); + QTRY_COMPARE(model->count(), 1); + + QTest::ignoreMessage(QtWarningMsg, modificationWarning().constData()); + model->remove(0); + QCOMPARE(model->count(), 1); + + QVERIFY(QMetaObject::invokeMethod(item, "workerModifyModel", Q_ARG(QVariant, "remove(0)"))); + QTRY_COMPARE(model->count(), 0); + + qApp->processEvents(); +} + +void tst_QDeclarativeWorkerListModel::append() +{ + QDeclarativeComponent component(&m_engine, SRCDIR "/data/model.qml"); + QDeclarativeItem *item = qobject_cast(component.create()); + QVERIFY(item != 0); + QDeclarativeWorkerListModel *model = item->property("model").value(); + QVERIFY(model != 0); + + QVERIFY(QMetaObject::invokeMethod(item, "workerModifyModel", Q_ARG(QVariant, "append({'name': 'A'})"))); + QTRY_COMPARE(model->count(), 1); + + QTest::ignoreMessage(QtWarningMsg, modificationWarning().constData()); + model->append(QScriptValue(1)); + QCOMPARE(model->count(), 1); + + qApp->processEvents(); +} + +void tst_QDeclarativeWorkerListModel::insert() +{ + QDeclarativeComponent component(&m_engine, SRCDIR "/data/model.qml"); + QDeclarativeItem *item = qobject_cast(component.create()); + QVERIFY(item != 0); + QDeclarativeWorkerListModel *model = item->property("model").value(); + QVERIFY(model != 0); + + QVERIFY(QMetaObject::invokeMethod(item, "workerModifyModel", Q_ARG(QVariant, "insert(0, {'name': 'A'})"))); + QTRY_COMPARE(model->count(), 1); + + QTest::ignoreMessage(QtWarningMsg, modificationWarning().constData()); + model->insert(0, QScriptValue(1)); + QCOMPARE(model->count(), 1); + + qApp->processEvents(); +} + +void tst_QDeclarativeWorkerListModel::get() +{ + QDeclarativeComponent component(&m_engine, SRCDIR "/data/model.qml"); + QDeclarativeItem *item = qobject_cast(component.create()); + QVERIFY(item != 0); + QDeclarativeWorkerListModel *model = item->property("model").value(); + QVERIFY(model != 0); + + QVERIFY(QMetaObject::invokeMethod(item, "workerModifyModel", Q_ARG(QVariant, "append({'name': 'A'})"))); + QTRY_COMPARE(model->count(), 1); + QCOMPARE(model->get(0).property("name").toString(), QString("A")); + + qApp->processEvents(); +} + +void tst_QDeclarativeWorkerListModel::set() +{ + QDeclarativeComponent component(&m_engine, SRCDIR "/data/model.qml"); + QDeclarativeItem *item = qobject_cast(component.create()); + QVERIFY(item != 0); + QDeclarativeWorkerListModel *model = item->property("model").value(); + QVERIFY(model != 0); + + QVERIFY(QMetaObject::invokeMethod(item, "workerModifyModel", Q_ARG(QVariant, "append({'name': 'A'})"))); + QTRY_COMPARE(model->count(), 1); + + QTest::ignoreMessage(QtWarningMsg, modificationWarning().constData()); + model->set(0, QScriptValue(1)); + + QVERIFY(QMetaObject::invokeMethod(item, "workerModifyModel", Q_ARG(QVariant, "set(0, {'name': 'Z'})"))); + QTRY_COMPARE(model->get(0).property("name").toString(), QString("Z")); + + qApp->processEvents(); +} + +QTEST_MAIN(tst_QDeclarativeWorkerListModel) + +#include "tst_qdeclarativeworkerlistmodel.moc" + -- cgit v0.12 From e71f8823d22c99a4da7de4f49463a05427186c0f Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Mon, 1 Mar 2010 15:55:03 +1000 Subject: Example of text focus. Task-number: QT-448 --- examples/declarative/focusscope/test5.qml | 83 +++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 examples/declarative/focusscope/test5.qml diff --git a/examples/declarative/focusscope/test5.qml b/examples/declarative/focusscope/test5.qml new file mode 100644 index 0000000..da98350 --- /dev/null +++ b/examples/declarative/focusscope/test5.qml @@ -0,0 +1,83 @@ +import Qt 4.6 + +Rectangle { + color: "white" + width: 800 + height: 600 + + Keys.onReturnPressed: console.log("Error - Root") + + FocusScope { + id: myScope + focus: true + + Keys.onReturnPressed: console.log("Error - FocusScope") + + Rectangle { + height: 120 + width: 420 + + color: "transparent" + border.width: 5 + border.color: myScope.wantsFocus?"blue":"black" + + Rectangle { + x: 10; y: 10 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: item1.wantsFocus?"blue":"black" + } + + TextEdit { + id: item1 + x: 20; y: 20 + width: 90; height: 90 + color: "white" + font.pixelSize: 20 + Keys.onReturnPressed: console.log("Top Left"); + KeyNavigation.right: item2 + focus: true + wrap: true + text: "Box 1" + } + + Rectangle { + id: item2 + x: 310; y: 10 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: wantsFocus?"blue":"black" + KeyNavigation.left: item1 + Keys.onReturnPressed: console.log("Top Right"); + + Rectangle { + width: 50; height: 50; anchors.centerIn: parent + color: parent.focus?"red":"transparent" + } + } + } + KeyNavigation.down: item3 + } + + Text { x:100; y:170; text: "Blue border indicates scoped focus\nBlack border indicates NOT scoped focus\nRed box or flashing cursor indicates active focus\nUse arrow keys to navigate\nPress Ctrl-Return to print currently focused item" } + + Rectangle { + x: 10; y: 300 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: item3.wantsFocus?"blue":"black" + } + + TextEdit { + id: item3 + x: 20; y: 310 + width: 90; height: 90 + color: "white" + font.pixelSize: 20 + text: "Box 3" + + Keys.onReturnPressed: console.log("Bottom Left"); + KeyNavigation.up: myScope + wrap: true + } +} -- cgit v0.12 From 05f9a6aa5d6e4f20eb4dacff3acea9d186867ab1 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Fri, 26 Feb 2010 16:34:28 +1000 Subject: Add NOTIFY signals to list, grid and path views Reviewed-by: akennedy --- .../graphicsitems/qdeclarativegridview.cpp | 12 +- .../graphicsitems/qdeclarativegridview_p.h | 20 ++- .../graphicsitems/qdeclarativelistview.cpp | 24 ++- .../graphicsitems/qdeclarativelistview_p.h | 38 +++-- src/declarative/graphicsitems/qdeclarativepath.cpp | 11 +- src/declarative/graphicsitems/qdeclarativepath_p.h | 11 +- .../graphicsitems/qdeclarativepathview.cpp | 26 +++- .../graphicsitems/qdeclarativepathview_p.h | 18 ++- .../qdeclarativegridview/data/propertychanges.qml | 69 +++++++++ .../tst_qdeclarativegridview.cpp | 122 ++++++++++++++- .../qdeclarativelistview/data/propertychanges.qml | 71 +++++++++ .../tst_qdeclarativelistview.cpp | 168 +++++++++++++++++++-- .../qdeclarativepathview/data/displaypath.qml | 2 +- .../qdeclarativepathview/data/pathview.qml | 2 +- .../qdeclarativepathview/data/pathview3.qml | 2 +- .../qdeclarativepathview/data/propertychanges.qml | 115 ++++++++++++++ .../tst_qdeclarativepathview.cpp | 167 +++++++++++++++++++- 17 files changed, 818 insertions(+), 60 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativegridview/data/propertychanges.qml create mode 100644 tests/auto/declarative/qdeclarativelistview/data/propertychanges.qml create mode 100644 tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 8d778f8..090c46d 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -619,7 +619,7 @@ void QDeclarativeGridViewPrivate::createHighlight() } } if (changed) - emit q->highlightChanged(); + emit q->highlightItemChanged(); } void QDeclarativeGridViewPrivate::updateHighlight() @@ -785,6 +785,8 @@ QVariant QDeclarativeGridView::model() const void QDeclarativeGridView::setModel(const QVariant &model) { Q_D(QDeclarativeGridView); + if (d->modelVariant == model) + return; if (d->model) { disconnect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(itemsInserted(int,int))); disconnect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(itemsRemoved(int,int))); @@ -829,6 +831,7 @@ void QDeclarativeGridView::setModel(const QVariant &model) connect(d->model, SIGNAL(destroyingItem(QDeclarativeItem*)), this, SLOT(destroyingItem(QDeclarativeItem*))); emit countChanged(); } + emit modelChanged(); } /*! @@ -872,6 +875,7 @@ void QDeclarativeGridView::setDelegate(QDeclarativeComponent *delegate) d->moveReason = QDeclarativeGridViewPrivate::SetIndex; d->updateCurrent(d->currentIndex); } + emit delegateChanged(); } } @@ -967,6 +971,7 @@ void QDeclarativeGridView::setHighlight(QDeclarativeComponent *highlight) if (highlight != d->highlightComponent) { d->highlightComponent = highlight; d->updateCurrent(d->currentIndex); + emit highlightChanged(); } } @@ -1040,6 +1045,7 @@ void QDeclarativeGridView::setFlow(Flow flow) d->updateGrid(); refill(); d->updateCurrent(d->currentIndex); + emit flowChanged(); } } @@ -1059,7 +1065,10 @@ bool QDeclarativeGridView::isWrapEnabled() const void QDeclarativeGridView::setWrapEnabled(bool wrap) { Q_D(QDeclarativeGridView); + if (d->wrap == wrap) + return; d->wrap = wrap; + emit keyNavigationWrapsChanged(); } /*! @@ -1083,6 +1092,7 @@ void QDeclarativeGridView::setCacheBuffer(int buffer) d->buffer = buffer; if (isComponentComplete()) refill(); + emit cacheBufferChanged(); } } diff --git a/src/declarative/graphicsitems/qdeclarativegridview_p.h b/src/declarative/graphicsitems/qdeclarativegridview_p.h index b488475..d463a46 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview_p.h +++ b/src/declarative/graphicsitems/qdeclarativegridview_p.h @@ -57,19 +57,19 @@ class Q_DECLARATIVE_EXPORT QDeclarativeGridView : public QDeclarativeFlickable Q_OBJECT Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeGridView) - Q_PROPERTY(QVariant model READ model WRITE setModel) - Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate) + Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged) + Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged) Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) Q_PROPERTY(QDeclarativeItem *currentItem READ currentItem NOTIFY currentIndexChanged) Q_PROPERTY(int count READ count NOTIFY countChanged) - Q_PROPERTY(QDeclarativeComponent *highlight READ highlight WRITE setHighlight) - Q_PROPERTY(QDeclarativeItem *highlightItem READ highlightItem NOTIFY highlightChanged) + Q_PROPERTY(QDeclarativeComponent *highlight READ highlight WRITE setHighlight NOTIFY highlightChanged) + Q_PROPERTY(QDeclarativeItem *highlightItem READ highlightItem NOTIFY highlightItemChanged) Q_PROPERTY(bool highlightFollowsCurrentItem READ highlightFollowsCurrentItem WRITE setHighlightFollowsCurrentItem) - Q_PROPERTY(Flow flow READ flow WRITE setFlow) - Q_PROPERTY(bool keyNavigationWraps READ isWrapEnabled WRITE setWrapEnabled) - Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer) + Q_PROPERTY(Flow flow READ flow WRITE setFlow NOTIFY flowChanged) + Q_PROPERTY(bool keyNavigationWraps READ isWrapEnabled WRITE setWrapEnabled NOTIFY keyNavigationWrapsChanged) + Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer NOTIFY cacheBufferChanged) Q_PROPERTY(int cellWidth READ cellWidth WRITE setCellWidth NOTIFY cellWidthChanged) Q_PROPERTY(int cellHeight READ cellHeight WRITE setCellHeight NOTIFY cellHeightChanged) Q_CLASSINFO("DefaultProperty", "data") @@ -129,6 +129,12 @@ Q_SIGNALS: void cellWidthChanged(); void cellHeightChanged(); void highlightChanged(); + void highlightItemChanged(); + void modelChanged(); + void delegateChanged(); + void flowChanged(); + void keyNavigationWrapsChanged(); + void cacheBufferChanged(); protected: virtual void viewportMoved(); diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 02a8493..a05e638 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -817,7 +817,7 @@ void QDeclarativeListViewPrivate::createHighlight() } } if (changed) - emit q->highlightChanged(); + emit q->highlightItemChanged(); } void QDeclarativeListViewPrivate::updateHighlight() @@ -1474,6 +1474,8 @@ QVariant QDeclarativeListView::model() const void QDeclarativeListView::setModel(const QVariant &model) { Q_D(QDeclarativeListView); + if (d->modelVariant == model) + return; if (d->model) { disconnect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(itemsInserted(int,int))); disconnect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(itemsRemoved(int,int))); @@ -1518,6 +1520,7 @@ void QDeclarativeListView::setModel(const QVariant &model) connect(d->model, SIGNAL(destroyingItem(QDeclarativeItem*)), this, SLOT(destroyingItem(QDeclarativeItem*))); emit countChanged(); } + emit modelChanged(); } /*! @@ -1564,6 +1567,7 @@ void QDeclarativeListView::setDelegate(QDeclarativeComponent *delegate) d->updateCurrent(d->currentIndex); } } + emit delegateChanged(); } /*! @@ -1664,6 +1668,7 @@ void QDeclarativeListView::setHighlight(QDeclarativeComponent *highlight) d->createHighlight(); if (d->currentItem) d->updateHighlight(); + emit highlightChanged(); } } @@ -1701,6 +1706,7 @@ void QDeclarativeListView::setHighlightFollowsCurrentItem(bool autoHighlight) d->highlightSizeAnimator->setEnabled(d->autoHighlight); } d->updateHighlight(); + emit highlightFollowsCurrentItemChanged(); } } @@ -1746,8 +1752,11 @@ qreal QDeclarativeListView::preferredHighlightBegin() const void QDeclarativeListView::setPreferredHighlightBegin(qreal start) { Q_D(QDeclarativeListView); + if (d->highlightRangeStart == start) + return; d->highlightRangeStart = start; d->haveHighlightRange = d->highlightRange != NoHighlightRange && d->highlightRangeStart <= d->highlightRangeEnd; + emit preferredHighlightBeginChanged(); } qreal QDeclarativeListView::preferredHighlightEnd() const @@ -1759,8 +1768,11 @@ qreal QDeclarativeListView::preferredHighlightEnd() const void QDeclarativeListView::setPreferredHighlightEnd(qreal end) { Q_D(QDeclarativeListView); + if (d->highlightRangeEnd == end) + return; d->highlightRangeEnd = end; d->haveHighlightRange = d->highlightRange != NoHighlightRange && d->highlightRangeStart <= d->highlightRangeEnd; + emit preferredHighlightEndChanged(); } QDeclarativeListView::HighlightRangeMode QDeclarativeListView::highlightRangeMode() const @@ -1772,8 +1784,11 @@ QDeclarativeListView::HighlightRangeMode QDeclarativeListView::highlightRangeMod void QDeclarativeListView::setHighlightRangeMode(HighlightRangeMode mode) { Q_D(QDeclarativeListView); + if (d->highlightRange == mode) + return; d->highlightRange = mode; d->haveHighlightRange = d->highlightRange != NoHighlightRange && d->highlightRangeStart <= d->highlightRangeEnd; + emit highlightRangeModeChanged(); } /*! @@ -1849,7 +1864,10 @@ bool QDeclarativeListView::isWrapEnabled() const void QDeclarativeListView::setWrapEnabled(bool wrap) { Q_D(QDeclarativeListView); + if (d->wrap == wrap) + return; d->wrap = wrap; + emit keyNavigationWrapsChanged(); } /*! @@ -1875,6 +1893,7 @@ void QDeclarativeListView::setCacheBuffer(int b) d->bufferMode = QDeclarativeListViewPrivate::BufferBefore | QDeclarativeListViewPrivate::BufferAfter; refill(); } + emit cacheBufferChanged(); } } @@ -1999,6 +2018,7 @@ void QDeclarativeListView::setSnapMode(SnapMode mode) Q_D(QDeclarativeListView); if (d->snapMode != mode) { d->snapMode = mode; + emit snapModeChanged(); } } @@ -2021,6 +2041,7 @@ void QDeclarativeListView::setFooter(QDeclarativeComponent *footer) d->maxExtentDirty = true; d->updateFooter(); d->updateViewport(); + emit footerChanged(); } } @@ -2044,6 +2065,7 @@ void QDeclarativeListView::setHeader(QDeclarativeComponent *header) d->updateHeader(); d->updateFooter(); d->updateViewport(); + emit headerChanged(); } } diff --git a/src/declarative/graphicsitems/qdeclarativelistview_p.h b/src/declarative/graphicsitems/qdeclarativelistview_p.h index 5e3edb0..f9b7b50 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview_p.h +++ b/src/declarative/graphicsitems/qdeclarativelistview_p.h @@ -91,33 +91,33 @@ class Q_DECLARATIVE_EXPORT QDeclarativeListView : public QDeclarativeFlickable Q_OBJECT Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeListView) - Q_PROPERTY(QVariant model READ model WRITE setModel) - Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate) + Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged) + Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged) Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) Q_PROPERTY(QDeclarativeItem *currentItem READ currentItem NOTIFY currentIndexChanged) Q_PROPERTY(int count READ count NOTIFY countChanged) - Q_PROPERTY(QDeclarativeComponent *highlight READ highlight WRITE setHighlight) - Q_PROPERTY(QDeclarativeItem *highlightItem READ highlightItem NOTIFY highlightChanged) - Q_PROPERTY(bool highlightFollowsCurrentItem READ highlightFollowsCurrentItem WRITE setHighlightFollowsCurrentItem) + Q_PROPERTY(QDeclarativeComponent *highlight READ highlight WRITE setHighlight NOTIFY highlightChanged) + Q_PROPERTY(QDeclarativeItem *highlightItem READ highlightItem NOTIFY highlightItemChanged) + Q_PROPERTY(bool highlightFollowsCurrentItem READ highlightFollowsCurrentItem WRITE setHighlightFollowsCurrentItem NOTIFY highlightFollowsCurrentItemChanged) Q_PROPERTY(qreal highlightMoveSpeed READ highlightMoveSpeed WRITE setHighlightMoveSpeed NOTIFY highlightMoveSpeedChanged) Q_PROPERTY(qreal highlightResizeSpeed READ highlightResizeSpeed WRITE setHighlightResizeSpeed NOTIFY highlightResizeSpeedChanged) - Q_PROPERTY(qreal preferredHighlightBegin READ preferredHighlightBegin WRITE setPreferredHighlightBegin) - Q_PROPERTY(qreal preferredHighlightEnd READ preferredHighlightEnd WRITE setPreferredHighlightEnd) - Q_PROPERTY(HighlightRangeMode highlightRangeMode READ highlightRangeMode WRITE setHighlightRangeMode) + Q_PROPERTY(qreal preferredHighlightBegin READ preferredHighlightBegin WRITE setPreferredHighlightBegin NOTIFY preferredHighlightBeginChanged) + Q_PROPERTY(qreal preferredHighlightEnd READ preferredHighlightEnd WRITE setPreferredHighlightEnd NOTIFY preferredHighlightEndChanged) + Q_PROPERTY(HighlightRangeMode highlightRangeMode READ highlightRangeMode WRITE setHighlightRangeMode NOTIFY highlightRangeModeChanged) Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing NOTIFY spacingChanged) Q_PROPERTY(Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged) - Q_PROPERTY(bool keyNavigationWraps READ isWrapEnabled WRITE setWrapEnabled) - Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer) + Q_PROPERTY(bool keyNavigationWraps READ isWrapEnabled WRITE setWrapEnabled NOTIFY keyNavigationWrapsChanged) + Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer NOTIFY cacheBufferChanged) Q_PROPERTY(QDeclarativeViewSection *section READ sectionCriteria CONSTANT) Q_PROPERTY(QString currentSection READ currentSection NOTIFY currentSectionChanged) - Q_PROPERTY(SnapMode snapMode READ snapMode WRITE setSnapMode) + Q_PROPERTY(SnapMode snapMode READ snapMode WRITE setSnapMode NOTIFY snapModeChanged) - Q_PROPERTY(QDeclarativeComponent *header READ header WRITE setHeader) - Q_PROPERTY(QDeclarativeComponent *footer READ footer WRITE setFooter) + Q_PROPERTY(QDeclarativeComponent *header READ header WRITE setHeader NOTIFY headerChanged) + Q_PROPERTY(QDeclarativeComponent *footer READ footer WRITE setFooter NOTIFY footerChanged) Q_ENUMS(HighlightRangeMode) Q_ENUMS(Orientation) @@ -205,6 +205,18 @@ Q_SIGNALS: void highlightMoveSpeedChanged(); void highlightResizeSpeedChanged(); void highlightChanged(); + void highlightItemChanged(); + void modelChanged(); + void delegateChanged(); + void highlightFollowsCurrentItemChanged(); + void preferredHighlightBeginChanged(); + void preferredHighlightEndChanged(); + void highlightRangeModeChanged(); + void keyNavigationWrapsChanged(); + void cacheBufferChanged(); + void snapModeChanged(); + void headerChanged(); + void footerChanged(); protected: virtual void viewportMoved(); diff --git a/src/declarative/graphicsitems/qdeclarativepath.cpp b/src/declarative/graphicsitems/qdeclarativepath.cpp index 48f112a..80586b8 100644 --- a/src/declarative/graphicsitems/qdeclarativepath.cpp +++ b/src/declarative/graphicsitems/qdeclarativepath.cpp @@ -114,7 +114,10 @@ qreal QDeclarativePath::startX() const void QDeclarativePath::setStartX(qreal x) { Q_D(QDeclarativePath); + if (qFuzzyCompare(x, d->startX)) + return; d->startX = x; + emit startXChanged(); } qreal QDeclarativePath::startY() const @@ -126,7 +129,10 @@ qreal QDeclarativePath::startY() const void QDeclarativePath::setStartY(qreal y) { Q_D(QDeclarativePath); + if (qFuzzyCompare(y, d->startY)) + return; d->startY = y; + emit startYChanged(); } /*! @@ -522,7 +528,10 @@ QString QDeclarativePathAttribute::name() const void QDeclarativePathAttribute::setName(const QString &name) { - _name = name; + if (_name == name) + return; + _name = name; + emit nameChanged(); } /*! diff --git a/src/declarative/graphicsitems/qdeclarativepath_p.h b/src/declarative/graphicsitems/qdeclarativepath_p.h index b3139f8..d7cfca1 100644 --- a/src/declarative/graphicsitems/qdeclarativepath_p.h +++ b/src/declarative/graphicsitems/qdeclarativepath_p.h @@ -67,7 +67,7 @@ class Q_DECLARATIVE_EXPORT QDeclarativePathAttribute : public QDeclarativePathEl { Q_OBJECT - Q_PROPERTY(QString name READ name WRITE setName) + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY changed) public: QDeclarativePathAttribute(QObject *parent=0) : QDeclarativePathElement(parent), _value(0) {} @@ -79,6 +79,9 @@ public: qreal value() const; void setValue(qreal value); +Q_SIGNALS: + void nameChanged(); + private: QString _name; qreal _value; @@ -190,8 +193,8 @@ class Q_DECLARATIVE_EXPORT QDeclarativePath : public QObject, public QDeclarativ Q_INTERFACES(QDeclarativeParserStatus) Q_PROPERTY(QDeclarativeListProperty pathElements READ pathElements) - Q_PROPERTY(qreal startX READ startX WRITE setStartX) - Q_PROPERTY(qreal startY READ startY WRITE setStartY) + Q_PROPERTY(qreal startX READ startX WRITE setStartX NOTIFY startXChanged) + Q_PROPERTY(qreal startY READ startY WRITE setStartY NOTIFY startYChanged) Q_PROPERTY(bool closed READ isClosed NOTIFY changed) Q_CLASSINFO("DefaultProperty", "pathElements") Q_INTERFACES(QDeclarativeParserStatus) @@ -216,6 +219,8 @@ public: Q_SIGNALS: void changed(); + void startXChanged(); + void startYChanged(); protected: virtual void componentComplete(); diff --git a/src/declarative/graphicsitems/qdeclarativepathview.cpp b/src/declarative/graphicsitems/qdeclarativepathview.cpp index f1b0213..50aa9ef 100644 --- a/src/declarative/graphicsitems/qdeclarativepathview.cpp +++ b/src/declarative/graphicsitems/qdeclarativepathview.cpp @@ -203,6 +203,9 @@ QVariant QDeclarativePathView::model() const void QDeclarativePathView::setModel(const QVariant &model) { Q_D(QDeclarativePathView); + if (d->modelVariant == model) + return; + if (d->model) { disconnect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(itemsInserted(int,int))); disconnect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(itemsRemoved(int,int))); @@ -242,6 +245,7 @@ void QDeclarativePathView::setModel(const QVariant &model) d->pathOffset = 0; d->regenerate(); d->fixOffset(); + emit modelChanged(); } /*! @@ -269,9 +273,12 @@ QDeclarativePath *QDeclarativePathView::path() const void QDeclarativePathView::setPath(QDeclarativePath *path) { Q_D(QDeclarativePathView); + if (d->path == path) + return; d->path = path; connect(d->path, SIGNAL(changed()), this, SLOT(refill())); d->regenerate(); + emit pathChanged(); } /*! @@ -333,7 +340,7 @@ void QDeclarativePathViewPrivate::setOffset(qreal o) /*! \qmlproperty real PathView::snapPosition - This property determines the position (0-100) the nearest item will snap to. + This property determines the position (0.0-1.0) the nearest item will snap to. */ qreal QDeclarativePathView::snapPosition() const { @@ -344,8 +351,12 @@ qreal QDeclarativePathView::snapPosition() const void QDeclarativePathView::setSnapPosition(qreal pos) { Q_D(QDeclarativePathView); - d->snapPos = pos/100; + qreal normalizedPos = pos - int(pos); + if (qFuzzyCompare(normalizedPos, d->snapPos)) + return; + d->snapPos = normalizedPos; d->fixOffset(); + emit snapPositionChanged(); } /*! @@ -365,7 +376,10 @@ qreal QDeclarativePathView::dragMargin() const void QDeclarativePathView::setDragMargin(qreal dragMargin) { Q_D(QDeclarativePathView); + if (d->dragMargin == dragMargin) + return; d->dragMargin = dragMargin; + emit dragMarginChanged(); } /*! @@ -392,16 +406,19 @@ QDeclarativeComponent *QDeclarativePathView::delegate() const return 0; } -void QDeclarativePathView::setDelegate(QDeclarativeComponent *c) +void QDeclarativePathView::setDelegate(QDeclarativeComponent *delegate) { Q_D(QDeclarativePathView); + if (delegate == this->delegate()) + return; if (!d->ownModel) { d->model = new QDeclarativeVisualDataModel(qmlContext(this)); d->ownModel = true; } if (QDeclarativeVisualDataModel *dataModel = qobject_cast(d->model)) { - dataModel->setDelegate(c); + dataModel->setDelegate(delegate); d->regenerate(); + emit delegateChanged(); } } @@ -422,6 +439,7 @@ void QDeclarativePathView::setPathItemCount(int i) return; d->pathItems = i; d->regenerate(); + pathItemCountChanged(); } QPointF QDeclarativePathViewPrivate::pointNear(const QPointF &point, qreal *nearPercent) const diff --git a/src/declarative/graphicsitems/qdeclarativepathview_p.h b/src/declarative/graphicsitems/qdeclarativepathview_p.h index 709a4fc..df9c6ae 100644 --- a/src/declarative/graphicsitems/qdeclarativepathview_p.h +++ b/src/declarative/graphicsitems/qdeclarativepathview_p.h @@ -56,15 +56,15 @@ class Q_DECLARATIVE_EXPORT QDeclarativePathView : public QDeclarativeItem { Q_OBJECT - Q_PROPERTY(QVariant model READ model WRITE setModel) - Q_PROPERTY(QDeclarativePath *path READ path WRITE setPath) + Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged) + Q_PROPERTY(QDeclarativePath *path READ path WRITE setPath NOTIFY pathChanged) Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) Q_PROPERTY(qreal offset READ offset WRITE setOffset NOTIFY offsetChanged) - Q_PROPERTY(qreal snapPosition READ snapPosition WRITE setSnapPosition) - Q_PROPERTY(qreal dragMargin READ dragMargin WRITE setDragMargin) + Q_PROPERTY(qreal snapPosition READ snapPosition WRITE setSnapPosition NOTIFY snapPositionChanged) + Q_PROPERTY(qreal dragMargin READ dragMargin WRITE setDragMargin NOTIFY dragMarginChanged) Q_PROPERTY(int count READ count) - Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate) - Q_PROPERTY(int pathItemCount READ pathItemCount WRITE setPathItemCount) + Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged) + Q_PROPERTY(int pathItemCount READ pathItemCount WRITE setPathItemCount NOTIFY pathItemCountChanged) public: QDeclarativePathView(QDeclarativeItem *parent=0); @@ -101,6 +101,12 @@ public: Q_SIGNALS: void currentIndexChanged(); void offsetChanged(); + void modelChanged(); + void pathChanged(); + void dragMarginChanged(); + void snapPositionChanged(); + void delegateChanged(); + void pathItemCountChanged(); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); diff --git a/tests/auto/declarative/qdeclarativegridview/data/propertychanges.qml b/tests/auto/declarative/qdeclarativegridview/data/propertychanges.qml new file mode 100644 index 0000000..da2e8d0 --- /dev/null +++ b/tests/auto/declarative/qdeclarativegridview/data/propertychanges.qml @@ -0,0 +1,69 @@ +import Qt 4.6 + +Rectangle { + width: 360; height: 120; color: "white" + Component { + id: delegate + Item { + id: wrapper + width: 180; height: 40; + Column { + x: 5; y: 5 + Text { text: 'Name: ' + name } + Text { text: 'Number: ' + number } + } + } + } + Component { + id: highlightRed + Rectangle { + color: "red" + radius: 10 + opacity: 0.5 + } + } + GridView { + cellWidth:180 + cellHeight:40 + objectName: "gridView" + anchors.fill: parent + model: listModel + delegate: delegate + highlight: highlightRed + focus: true + keyNavigationWraps: true + cacheBuffer: 10 + flow: GridView.LeftToRight + } + + data:[ + ListModel { + id: listModel + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + }, + ListModel { + objectName: "alternateModel" + ListElement { + name: "Jack" + number: "555 8426" + } + ListElement { + name: "Mary" + number: "555 3264" + } + } + ] +} + + \ No newline at end of file diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp index 7a6a060..5d57bb4 100644 --- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp +++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp @@ -39,10 +39,8 @@ ** ****************************************************************************/ -#include -#include -#include #include +<<<<<<< HEAD #include #include #include @@ -50,6 +48,18 @@ #include #include #include +======= +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +>>>>>>> Add NOTIFY signals to list, grid and path views class tst_QDeclarativeGridView : public QObject { @@ -67,6 +77,9 @@ private slots: void currentIndex(); void defaultValues(); void properties(); + void propertyChanges(); + void componentChanges(); + void modelChanges(); void positionViewAtIndex(); void resetModel(); void QTBUG_8456(); @@ -92,7 +105,7 @@ public: setRoleNames(roles); } - int rowCount(const QModelIndex &parent=QModelIndex()) const { return list.count(); } + int rowCount(const QModelIndex &parent=QModelIndex()) const { Q_UNUSED(parent); return list.count(); } QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const { QVariant rv; if (role == Name) @@ -803,6 +816,107 @@ void tst_QDeclarativeGridView::properties() delete obj; } +void tst_QDeclarativeGridView::propertyChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativeGridView *gridView = canvas->rootObject()->findChild("gridView"); + QVERIFY(gridView); + + QSignalSpy keyNavigationWrapsSpy(gridView, SIGNAL(keyNavigationWrapsChanged())); + QSignalSpy cacheBufferSpy(gridView, SIGNAL(cacheBufferChanged())); + QSignalSpy flowSpy(gridView, SIGNAL(flowChanged())); + + QCOMPARE(gridView->isWrapEnabled(), true); + QCOMPARE(gridView->cacheBuffer(), 10); + QCOMPARE(gridView->flow(), QDeclarativeGridView::LeftToRight); + + gridView->setWrapEnabled(false); + gridView->setCacheBuffer(3); + gridView->setFlow(QDeclarativeGridView::TopToBottom); + + QCOMPARE(gridView->isWrapEnabled(), false); + QCOMPARE(gridView->cacheBuffer(), 3); + QCOMPARE(gridView->flow(), QDeclarativeGridView::TopToBottom); + + QCOMPARE(keyNavigationWrapsSpy.count(),1); + QCOMPARE(cacheBufferSpy.count(),1); + QCOMPARE(flowSpy.count(),1); + + gridView->setWrapEnabled(false); + gridView->setCacheBuffer(3); + gridView->setFlow(QDeclarativeGridView::TopToBottom); + + QCOMPARE(keyNavigationWrapsSpy.count(),1); + QCOMPARE(cacheBufferSpy.count(),1); + QCOMPARE(flowSpy.count(),1); + + delete canvas; +} + +void tst_QDeclarativeGridView::componentChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativeGridView *gridView = canvas->rootObject()->findChild("gridView"); + QVERIFY(gridView); + + QDeclarativeComponent component(canvas->engine()); + component.setData("import Qt 4.6; Rectangle { color: \"blue\"; }", QUrl::fromLocalFile("")); + + QDeclarativeComponent delegateComponent(canvas->engine()); + delegateComponent.setData("import Qt 4.6; Text { text: 'Name: ' + name }", QUrl::fromLocalFile("")); + + QSignalSpy highlightSpy(gridView, SIGNAL(highlightChanged())); + QSignalSpy delegateSpy(gridView, SIGNAL(delegateChanged())); + + gridView->setHighlight(&component); + gridView->setDelegate(&delegateComponent); + + QCOMPARE(gridView->highlight(), &component); + QCOMPARE(gridView->delegate(), &delegateComponent); + + QCOMPARE(highlightSpy.count(),1); + QCOMPARE(delegateSpy.count(),1); + + gridView->setHighlight(&component); + gridView->setDelegate(&delegateComponent); + + QCOMPARE(highlightSpy.count(),1); + QCOMPARE(delegateSpy.count(),1); + delete canvas; +} + +void tst_QDeclarativeGridView::modelChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativeGridView *gridView = canvas->rootObject()->findChild("gridView"); + QVERIFY(gridView); + + QDeclarativeListModel *alternateModel = canvas->rootObject()->findChild("alternateModel"); + QVERIFY(alternateModel); + QVariant modelVariant = QVariant::fromValue(alternateModel); + QSignalSpy modelSpy(gridView, SIGNAL(modelChanged())); + + gridView->setModel(modelVariant); + QCOMPARE(gridView->model(), modelVariant); + QCOMPARE(modelSpy.count(),1); + + gridView->setModel(modelVariant); + QCOMPARE(modelSpy.count(),1); + + gridView->setModel(QVariant()); + QCOMPARE(modelSpy.count(),2); + delete canvas; +} + void tst_QDeclarativeGridView::positionViewAtIndex() { QDeclarativeView *canvas = createView(); diff --git a/tests/auto/declarative/qdeclarativelistview/data/propertychanges.qml b/tests/auto/declarative/qdeclarativelistview/data/propertychanges.qml new file mode 100644 index 0000000..a41f003 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistview/data/propertychanges.qml @@ -0,0 +1,71 @@ +import Qt 4.6 + +Rectangle { + width: 180; height: 120; color: "white" + Component { + id: delegate + Item { + id: wrapper + width: 180; height: 40; + Column { + x: 5; y: 5 + Text { text: 'Name: ' + name } + Text { text: 'Number: ' + number } + } + } + } + Component { + id: highlightRed + Rectangle { + color: "red" + radius: 10 + opacity: 0.5 + } + } + ListView { + objectName: "listView" + anchors.fill: parent + model: listModel + delegate: delegate + highlight: highlightRed + focus: true + highlightFollowsCurrentItem: true + preferredHighlightBegin: 0.0 + preferredHighlightEnd: 0.0 + highlightRangeMode: ListView.ApplyRange + keyNavigationWraps: true + cacheBuffer: 10 + snapMode: ListView.SnapToItem + } + + data:[ + ListModel { + id: listModel + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + }, + ListModel { + objectName: "alternateModel" + ListElement { + name: "Jack" + number: "555 8426" + } + ListElement { + name: "Mary" + number: "555 3264" + } + } + ] +} + + \ No newline at end of file diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp index f15f26b..a36224f 100644 --- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp +++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp @@ -38,15 +38,18 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ + #include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include class tst_QDeclarativeListView : public QObject { @@ -82,6 +85,9 @@ private slots: void cacheBuffer(); void positionViewAtIndex(); void resetModel(); + void propertyChanges(); + void componentChanges(); + void modelChanges(); private: template void items(); @@ -240,7 +246,7 @@ public: setRoleNames(roles); } - int rowCount(const QModelIndex &parent=QModelIndex()) const { return list.count(); } + int rowCount(const QModelIndex &parent=QModelIndex()) const { Q_UNUSED(parent); return list.count(); } QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const { QVariant rv; if (role == Name) @@ -379,6 +385,7 @@ void tst_QDeclarativeListView::items() delete canvas; } + template void tst_QDeclarativeListView::changed() { @@ -1275,6 +1282,149 @@ void tst_QDeclarativeListView::resetModel() } } +void tst_QDeclarativeListView::propertyChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativeListView *listView = canvas->rootObject()->findChild("listView"); + QVERIFY(listView); + + QSignalSpy highlightFollowsCurrentItemSpy(listView, SIGNAL(highlightFollowsCurrentItemChanged())); + QSignalSpy preferredHighlightBeginSpy(listView, SIGNAL(preferredHighlightBeginChanged())); + QSignalSpy preferredHighlightEndSpy(listView, SIGNAL(preferredHighlightEndChanged())); + QSignalSpy highlightRangeModeSpy(listView, SIGNAL(highlightRangeModeChanged())); + QSignalSpy keyNavigationWrapsSpy(listView, SIGNAL(keyNavigationWrapsChanged())); + QSignalSpy cacheBufferSpy(listView, SIGNAL(cacheBufferChanged())); + QSignalSpy snapModeSpy(listView, SIGNAL(snapModeChanged())); + + QCOMPARE(listView->highlightFollowsCurrentItem(), true); + QCOMPARE(listView->preferredHighlightBegin(), 0.0); + QCOMPARE(listView->preferredHighlightEnd(), 0.0); + QCOMPARE(listView->highlightRangeMode(), QDeclarativeListView::ApplyRange); + QCOMPARE(listView->isWrapEnabled(), true); + QCOMPARE(listView->cacheBuffer(), 10); + QCOMPARE(listView->snapMode(), QDeclarativeListView::SnapToItem); + + listView->setHighlightFollowsCurrentItem(false); + listView->setPreferredHighlightBegin(1.0); + listView->setPreferredHighlightEnd(1.0); + listView->setHighlightRangeMode(QDeclarativeListView::StrictlyEnforceRange); + listView->setWrapEnabled(false); + listView->setCacheBuffer(3); + listView->setSnapMode(QDeclarativeListView::SnapOneItem); + + QCOMPARE(listView->highlightFollowsCurrentItem(), false); + QCOMPARE(listView->preferredHighlightBegin(), 1.0); + QCOMPARE(listView->preferredHighlightEnd(), 1.0); + QCOMPARE(listView->highlightRangeMode(), QDeclarativeListView::StrictlyEnforceRange); + QCOMPARE(listView->isWrapEnabled(), false); + QCOMPARE(listView->cacheBuffer(), 3); + QCOMPARE(listView->snapMode(), QDeclarativeListView::SnapOneItem); + + QCOMPARE(highlightFollowsCurrentItemSpy.count(),1); + QCOMPARE(preferredHighlightBeginSpy.count(),1); + QCOMPARE(preferredHighlightEndSpy.count(),1); + QCOMPARE(highlightRangeModeSpy.count(),1); + QCOMPARE(keyNavigationWrapsSpy.count(),1); + QCOMPARE(cacheBufferSpy.count(),1); + QCOMPARE(snapModeSpy.count(),1); + + listView->setHighlightFollowsCurrentItem(false); + listView->setPreferredHighlightBegin(1.0); + listView->setPreferredHighlightEnd(1.0); + listView->setHighlightRangeMode(QDeclarativeListView::StrictlyEnforceRange); + listView->setWrapEnabled(false); + listView->setCacheBuffer(3); + listView->setSnapMode(QDeclarativeListView::SnapOneItem); + + QCOMPARE(highlightFollowsCurrentItemSpy.count(),1); + QCOMPARE(preferredHighlightBeginSpy.count(),1); + QCOMPARE(preferredHighlightEndSpy.count(),1); + QCOMPARE(highlightRangeModeSpy.count(),1); + QCOMPARE(keyNavigationWrapsSpy.count(),1); + QCOMPARE(cacheBufferSpy.count(),1); + QCOMPARE(snapModeSpy.count(),1); + + delete canvas; +} + +void tst_QDeclarativeListView::componentChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativeListView *listView = canvas->rootObject()->findChild("listView"); + QVERIFY(listView); + + QDeclarativeComponent component(canvas->engine()); + component.setData("import Qt 4.6; Rectangle { color: \"blue\"; }", QUrl::fromLocalFile("")); + + QDeclarativeComponent delegateComponent(canvas->engine()); + delegateComponent.setData("import Qt 4.6; Text { text: 'Name: ' + name }", QUrl::fromLocalFile("")); + + QSignalSpy highlightSpy(listView, SIGNAL(highlightChanged())); + QSignalSpy delegateSpy(listView, SIGNAL(delegateChanged())); + QSignalSpy headerSpy(listView, SIGNAL(headerChanged())); + QSignalSpy footerSpy(listView, SIGNAL(footerChanged())); + + listView->setHighlight(&component); + listView->setHeader(&component); + listView->setFooter(&component); + listView->setDelegate(&delegateComponent); + + QCOMPARE(listView->highlight(), &component); + QCOMPARE(listView->header(), &component); + QCOMPARE(listView->footer(), &component); + QCOMPARE(listView->delegate(), &delegateComponent); + + QCOMPARE(highlightSpy.count(),1); + QCOMPARE(delegateSpy.count(),1); + QCOMPARE(headerSpy.count(),1); + QCOMPARE(footerSpy.count(),1); + + listView->setHighlight(&component); + listView->setHeader(&component); + listView->setFooter(&component); + listView->setDelegate(&delegateComponent); + + QCOMPARE(highlightSpy.count(),1); + QCOMPARE(delegateSpy.count(),1); + QCOMPARE(headerSpy.count(),1); + QCOMPARE(footerSpy.count(),1); + + delete canvas; +} + +void tst_QDeclarativeListView::modelChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativeListView *listView = canvas->rootObject()->findChild("listView"); + QVERIFY(listView); + + QDeclarativeListModel *alternateModel = canvas->rootObject()->findChild("alternateModel"); + QVERIFY(alternateModel); + QVariant modelVariant = QVariant::fromValue(alternateModel); + QSignalSpy modelSpy(listView, SIGNAL(modelChanged())); + + listView->setModel(modelVariant); + QCOMPARE(listView->model(), modelVariant); + QCOMPARE(modelSpy.count(),1); + + listView->setModel(modelVariant); + QCOMPARE(modelSpy.count(),1); + + listView->setModel(QVariant()); + QCOMPARE(modelSpy.count(),2); + + delete canvas; +} + void tst_QDeclarativeListView::qListModelInterface_items() { items(); diff --git a/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml b/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml index 627f38a..ab1538b 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml @@ -33,7 +33,7 @@ Rectangle { height: 320 model: testModel delegate: delegate - snapPosition: 0.01 + snapPosition: 0.0001 path: Path { startY: 120 startX: 160 diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview.qml index 8fa8d59..c5d88cd 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/pathview.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/pathview.qml @@ -39,7 +39,7 @@ Rectangle { height: 320 model: testModel delegate: delegate - snapPosition: 0.01 + snapPosition: 0.0001 path: Path { startY: 120 startX: 160 diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml index af3ae13..f8ed29f 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml @@ -3,7 +3,7 @@ import Qt 4.6 PathView { id: photoPathView y: 100; width: 800; height: 330; pathItemCount: 4; offset: 10 - dragMargin: 24; snapPosition: 50 + dragMargin: 24; snapPosition: 0.50 path: Path { startX: -50; startY: 40; diff --git a/tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml b/tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml new file mode 100644 index 0000000..db70b7b --- /dev/null +++ b/tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml @@ -0,0 +1,115 @@ +import Qt 4.6 + +Rectangle { + width: 350; height: 220; color: "white" + Component { + id: myDelegate + Item { + id: wrapper + width: 180; height: 40; + opacity: PathView.opacity + Column { + x: 5; y: 5 + Text { text: 'Name: ' + name } + Text { text: 'Number: ' + number } + } + } + } + + PathView { + snapPosition: 0.1 + dragMargin: 5.0 + id: pathView + objectName: "pathView" + anchors.fill: parent + model: listModel + delegate: myDelegate + focus: true + path: Path { + id: myPath + objectName: "path" + startX: 220; startY: 200 + PathAttribute { name: "opacity"; value: 1.0; objectName: "pathAttribute"; } + PathQuad { x: 220; y: 25; controlX: 260; controlY: 75 } + PathAttribute { name: "opacity"; value: 0.3 } + PathQuad { x: 220; y: 200; controlX: -20; controlY: 75 } + } + Timer { + interval: 2000; running: true; repeat: true + onTriggered: { + if (pathView.path == alternatePath) + pathView.path = myPath; + else + pathView.path = alternatePath; + } + } + } + + data:[ + ListModel { + id: listModel + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + }, + ListModel { + objectName: "alternateModel" + ListElement { + name: "Jack" + number: "555 8426" + } + ListElement { + name: "Mary" + number: "555 3264" + } + }, + Path { + id: alternatePath + objectName: "alternatePath" + startX: 100; startY: 40 + PathAttribute { name: "opacity"; value: 0.0 } + PathLine { x: 100; y: 160 } + PathAttribute { name: "opacity"; value: 0.2 } + PathLine { x: 300; y: 160 } + PathAttribute { name: "opacity"; value: 0.0 } + PathLine { x: 300; y: 40 } + PathAttribute { name: "opacity"; value: 0.2 } + PathLine { x: 100; y: 40 } + } + ] +} + + diff --git a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp index 79bc607..fa4e9d3 100644 --- a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp +++ b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp @@ -38,20 +38,23 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#include -#include -#include -#include -#include + +#include +#include #include #include -#include +#include +#include +#include +#include #include #include +#include +#include #include #include #include -#include + #include "../../../shared/util.h" class tst_QDeclarativePathView : public QObject @@ -69,6 +72,11 @@ private slots: void path(); void pathMoved(); void resetModel(); + void propertyChanges(); + void pathChanges(); + void componentChanges(); + void modelChanges(); + private: QDeclarativeView *createView(); @@ -120,7 +128,7 @@ public: setRoleNames(roles); } - int rowCount(const QModelIndex &parent=QModelIndex()) const { return list.count(); } + int rowCount(const QModelIndex &parent=QModelIndex()) const { Q_UNUSED(parent); return list.count(); } QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const { QVariant rv; if (role == Name) @@ -465,6 +473,149 @@ void tst_QDeclarativePathView::resetModel() } } +void tst_QDeclarativePathView::propertyChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativePathView *pathView = canvas->rootObject()->findChild("pathView"); + QVERIFY(pathView); + + QSignalSpy snapPositionSpy(pathView, SIGNAL(snapPositionChanged())); + QSignalSpy dragMarginSpy(pathView, SIGNAL(dragMarginChanged())); + + QCOMPARE(pathView->snapPosition(), 0.1); + QCOMPARE(pathView->dragMargin(), 5.0); + + pathView->setSnapPosition(0.4); + pathView->setDragMargin(20.0); + + QCOMPARE(pathView->snapPosition(), 0.4); + QCOMPARE(pathView->dragMargin(), 20.0); + + QCOMPARE(snapPositionSpy.count(), 1); + QCOMPARE(dragMarginSpy.count(), 1); + + pathView->setSnapPosition(0.4); + pathView->setDragMargin(20.0); + + QCOMPARE(snapPositionSpy.count(), 1); + QCOMPARE(dragMarginSpy.count(), 1); + delete canvas; +} + +void tst_QDeclarativePathView::pathChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativePathView *pathView = canvas->rootObject()->findChild("pathView"); + QVERIFY(pathView); + + QDeclarativePath *path = canvas->rootObject()->findChild("path"); + QVERIFY(path); + + QSignalSpy startXSpy(path, SIGNAL(startXChanged())); + QSignalSpy startYSpy(path, SIGNAL(startYChanged())); + + QCOMPARE(path->startX(), 220.0); + QCOMPARE(path->startY(), 200.0); + + path->setStartX(240.0); + path->setStartY(220.0); + + QCOMPARE(path->startX(), 240.0); + QCOMPARE(path->startY(), 220.0); + + QCOMPARE(startXSpy.count(),1); + QCOMPARE(startYSpy.count(),1); + + path->setStartX(240); + path->setStartY(220); + + QCOMPARE(startXSpy.count(),1); + QCOMPARE(startYSpy.count(),1); + + QDeclarativePath *alternatePath = canvas->rootObject()->findChild("alternatePath"); + QVERIFY(alternatePath); + + QSignalSpy pathSpy(pathView, SIGNAL(pathChanged())); + + QCOMPARE(pathView->path(), path); + + pathView->setPath(alternatePath); + QCOMPARE(pathView->path(), alternatePath); + QCOMPARE(pathSpy.count(),1); + + pathView->setPath(alternatePath); + QCOMPARE(pathSpy.count(),1); + + QDeclarativePathAttribute *pathAttribute = canvas->rootObject()->findChild("pathAttribute"); + QVERIFY(pathAttribute); + + QSignalSpy nameSpy(pathAttribute, SIGNAL(nameChanged())); + QCOMPARE(pathAttribute->name(), QString("opacity")); + + pathAttribute->setName("scale"); + QCOMPARE(pathAttribute->name(), QString("scale")); + QCOMPARE(nameSpy.count(),1); + + pathAttribute->setName("scale"); + QCOMPARE(nameSpy.count(),1); + delete canvas; +} + +void tst_QDeclarativePathView::componentChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativePathView *pathView = canvas->rootObject()->findChild("pathView"); + QVERIFY(pathView); + + QDeclarativeComponent delegateComponent(canvas->engine()); + delegateComponent.setData("import Qt 4.6; Text { text: 'Name: ' + name }", QUrl::fromLocalFile("")); + + QSignalSpy delegateSpy(pathView, SIGNAL(delegateChanged())); + + pathView->setDelegate(&delegateComponent); + QCOMPARE(pathView->delegate(), &delegateComponent); + QCOMPARE(delegateSpy.count(),1); + + pathView->setDelegate(&delegateComponent); + QCOMPARE(delegateSpy.count(),1); + delete canvas; +} + +void tst_QDeclarativePathView::modelChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativePathView *pathView = canvas->rootObject()->findChild("pathView"); + QVERIFY(pathView); + + QDeclarativeListModel *alternateModel = canvas->rootObject()->findChild("alternateModel"); + QVERIFY(alternateModel); + QVariant modelVariant = QVariant::fromValue(alternateModel); + QSignalSpy modelSpy(pathView, SIGNAL(modelChanged())); + + pathView->setModel(modelVariant); + QCOMPARE(pathView->model(), modelVariant); + QCOMPARE(modelSpy.count(),1); + + pathView->setModel(modelVariant); + QCOMPARE(modelSpy.count(),1); + + pathView->setModel(QVariant()); + QCOMPARE(modelSpy.count(),2); + + delete canvas; +} QDeclarativeView *tst_QDeclarativePathView::createView() { -- cgit v0.12 From 657e7881c11f2f7b313ebd303e7be8f7a28e309e Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Tue, 2 Mar 2010 13:52:55 +1000 Subject: Forgot to add qworkerlistmodel test dir to declarative.pro --- tests/auto/declarative/declarative.pro | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index 42ff523..38c75a8 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -55,6 +55,7 @@ SUBDIRS += \ qdeclarativexmllistmodel \ # Cover qpacketprotocol \ # Cover qdeclarativerepeater \ # Cover + qdeclarativeworkerlistmodel \ # Cover qdeclarativevaluetypes \ # Cover qdeclarativexmlhttprequest \ # Cover qdeclarativeimageprovider \ # Cover -- cgit v0.12 From 3507c6fbbb585ea3b7f6a13b16fa216aea4574ab Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 2 Mar 2010 14:35:02 +1000 Subject: Make test more reliable. --- .../qdeclarativeanimations/tst_qdeclarativeanimations.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp index 53c63b5..0c166df 100644 --- a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp +++ b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp @@ -221,17 +221,17 @@ void tst_qdeclarativeanimations::resume() QVERIFY(animation.from() == 10); animation.start(); - QTest::qWait(100); + QTest::qWait(200); animation.pause(); qreal x = rect.x(); - QVERIFY(x != qreal(200)); + QVERIFY(x != qreal(200) && x != qreal(10)); QVERIFY(animation.isRunning()); QVERIFY(animation.isPaused()); animation.resume(); QVERIFY(animation.isRunning()); QVERIFY(!animation.isPaused()); - QTest::qWait(100); + QTest::qWait(200); animation.stop(); QVERIFY(rect.x() > x); } -- cgit v0.12 From 861a9f127e04aa135649ed64f268d72da6a35fd9 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 2 Mar 2010 14:48:07 +1000 Subject: Add autotests for script block scoping. --- .../qdeclarativeecmascript/data/scriptScope.1.qml | 13 ++++++++++ .../qdeclarativeecmascript/data/scriptScope.2.qml | 11 +++++++++ .../qdeclarativeecmascript/data/scriptScope.js | 5 ++++ .../tst_qdeclarativeecmascript.cpp | 28 ++++++++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.1.qml create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.2.qml create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.js diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.1.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.1.qml new file mode 100644 index 0000000..9b11fa9 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.1.qml @@ -0,0 +1,13 @@ +import Qt.test 1.0 + +MyQmlObject { + property string result + + Script{ + function f() { + result = b + } + + } + onArgumentSignal: f() +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.2.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.2.qml new file mode 100644 index 0000000..ec727e2 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.2.qml @@ -0,0 +1,11 @@ +import Qt.test 1.0 + +MyQmlObject { + property string result + property string aProp: "hello" + + Script{ + source: "scriptScope.js" + } + onBasicSignal: f() +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.js b/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.js new file mode 100644 index 0000000..5689930 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.js @@ -0,0 +1,5 @@ +var aProp = "world"; + +function f() { + result = aProp; +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 60c380c..8e7944d 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -122,6 +122,7 @@ private slots: void listToVariant(); void multiEngineObject(); void deletedObject(); + void scriptScope(); void bug1(); @@ -1657,6 +1658,33 @@ void tst_qdeclarativeecmascript::deletedObject() delete object; } +void tst_qdeclarativeecmascript::scriptScope() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptScope.1.qml")); + + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + emit object->argumentSignal(19, "Hello world!", 10.3); + QEXPECT_FAIL("", "QTBUG-8641", Continue); + QCOMPARE(object->property("result").toString(), QLatin1String("undefined")); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptScope.2.qml")); + + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + emit object->basicSignal(); + QEXPECT_FAIL("", "QTBUG-8641", Continue); + QCOMPARE(object->property("result").toString(), QLatin1String("world")); + + delete object; + } +} + QTEST_MAIN(tst_qdeclarativeecmascript) #include "tst_qdeclarativeecmascript.moc" -- cgit v0.12 From 685c0b930a1d1ecfdcc78aa688a333564cc9ca5b Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 2 Mar 2010 15:08:11 +1000 Subject: Optimization. --- src/declarative/qml/qdeclarativepropertycache.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/declarative/qml/qdeclarativepropertycache.cpp b/src/declarative/qml/qdeclarativepropertycache.cpp index 08b47b7..fea59e5 100644 --- a/src/declarative/qml/qdeclarativepropertycache.cpp +++ b/src/declarative/qml/qdeclarativepropertycache.cpp @@ -155,9 +155,9 @@ QDeclarativePropertyCache::Data QDeclarativePropertyCache::create(const QMetaObj int parenIdx = methodName.indexOf(QLatin1Char('(')); Q_ASSERT(parenIdx != -1); - methodName = methodName.left(parenIdx); + QStringRef methodNameRef = methodName.leftRef(parenIdx); - if (methodName == property) { + if (methodNameRef == property) { rv.load(m); return rv; } -- cgit v0.12 From c55a99965d8c08d5f924d49db4fe4aa49df80961 Mon Sep 17 00:00:00 2001 From: Bill King Date: Tue, 2 Mar 2010 15:20:10 +1000 Subject: Fixes: ODBC Driver expects 16bit when system is 32bit Fixed ODBC to use SQLTCHAR type and not assume that wchar's are 2 bytes wide. Task-number: QTBUG-6928 Reviewed-by: Justin McPherson --- src/plugins/sqldrivers/odbc/odbc.pro | 1 + src/sql/drivers/drivers.pri | 1 + src/sql/drivers/odbc/qsql_odbc.cpp | 273 +++++++++++++++++++++-------------- src/sql/drivers/odbc/qsql_odbc.h | 4 - 4 files changed, 170 insertions(+), 109 deletions(-) diff --git a/src/plugins/sqldrivers/odbc/odbc.pro b/src/plugins/sqldrivers/odbc/odbc.pro index 3de8ab2..2bf85f1 100644 --- a/src/plugins/sqldrivers/odbc/odbc.pro +++ b/src/plugins/sqldrivers/odbc/odbc.pro @@ -8,6 +8,7 @@ unix { !contains( LIBS, .*odbc.* ) { LIBS *= $$QT_LFLAGS_ODBC } + DEFINES += UNICODE } win32 { diff --git a/src/sql/drivers/drivers.pri b/src/sql/drivers/drivers.pri index 184eca9..7250c6e 100644 --- a/src/sql/drivers/drivers.pri +++ b/src/sql/drivers/drivers.pri @@ -49,6 +49,7 @@ contains(sql-drivers, odbc) { mac:!contains( LIBS, .*odbc.* ):LIBS *= -liodbc unix:!contains( LIBS, .*odbc.* ):LIBS *= -lodbc + unix:DEFINES += UNICODE win32 { !win32-borland:LIBS *= -lodbc32 diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp index 2049a76..f34aea5 100644 --- a/src/sql/drivers/odbc/qsql_odbc.cpp +++ b/src/sql/drivers/odbc/qsql_odbc.cpp @@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE //crude hack to get non-unicode capable driver managers to work # undef UNICODE # define SQLTCHAR SQLCHAR -# define SQL_C_WCHAR SQL_C_CHAR +# define SQL_C_TCHAR SQL_C_CHAR #endif // newer platform SDKs use SQLLEN instead of SQLINTEGER @@ -78,11 +78,54 @@ QT_BEGIN_NAMESPACE # define QSQLULEN SQLULEN #endif - static const int COLNAMESIZE = 256; //Map Qt parameter types to ODBC types static const SQLSMALLINT qParamType[4] = { SQL_PARAM_INPUT, SQL_PARAM_INPUT, SQL_PARAM_OUTPUT, SQL_PARAM_INPUT_OUTPUT }; +inline static QString fromSQLTCHAR(const QVarLengthArray& input, int size=-1) +{ + QString result; + + int realsize = qMin(size, input.size()); + if(realsize > 0 && input[realsize-1] == 0) + realsize--; + switch(sizeof(SQLTCHAR)) { + case 1: + result=QString::fromUtf8((const char *)input.constData(), realsize); + break; + case 2: + result=QString::fromUtf16((const ushort *)input.constData(), realsize); + break; + case 4: + result=QString::fromUcs4((const uint *)input.constData(), realsize); + break; + default: + qCritical() << "sizeof(SQLTCHAR) is " << sizeof(SQLTCHAR) << "Don't know how to handle this"; + } + return result; +} + +inline static QVarLengthArray toSQLTCHAR(const QString &input) +{ + QVarLengthArray result; + result.resize(input.size()); + switch(sizeof(SQLTCHAR)) { + case 1: + memcpy(result.data(), input.toUtf8().data(), input.size()); + break; + case 2: + memcpy(result.data(), input.unicode(), input.size() * 2); + break; + case 4: + memcpy(result.data(), input.toUcs4().data(), input.size() * 4); + break; + default: + qCritical() << "sizeof(SQLTCHAR) is " << sizeof(SQLTCHAR) << "Don't know how to handle this"; + } + result.append(0); // make sure it's null terminated, doesn't matter if it already is, it does if it isn't. + return result; +} + class QODBCDriverPrivate { public: @@ -98,8 +141,8 @@ public: SQLHANDLE hEnv; SQLHANDLE hDbc; - uint unicode :1; - uint useSchema :1; + bool unicode; + bool useSchema; int disconnectCount; bool isMySqlServer; bool isMSSqlServer; @@ -139,8 +182,8 @@ public: SQLHANDLE dpDbc() const { return driverPrivate ? driverPrivate->hDbc : 0;} SQLHANDLE hStmt; - uint unicode :1; - uint useSchema :1; + bool unicode; + bool useSchema; QSqlRecord rInf; QVector fieldCache; @@ -177,19 +220,18 @@ static QString qWarnODBCHandle(int handleType, SQLHANDLE handle, int *nativeCode int i = 1; description_[0] = 0; - r = SQLGetDiagRec(handleType, - handle, - i, - state_, - &nativeCode_, - 0, - NULL, - &msgLen); - if(r == SQL_NO_DATA) - return QString(); - description_.resize(msgLen+1); do { r = SQLGetDiagRec(handleType, + handle, + i, + state_, + &nativeCode_, + 0, + NULL, + &msgLen); + if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && msgLen > 0) + description_.resize(msgLen+1); + r = SQLGetDiagRec(handleType, handle, i, state_, @@ -202,9 +244,9 @@ static QString qWarnODBCHandle(int handleType, SQLHANDLE handle, int *nativeCode *nativeCode = nativeCode_; QString tmpstore; #ifdef UNICODE - tmpstore = QString((const QChar*)description_.data(), msgLen); + tmpstore = fromSQLTCHAR(description_, msgLen); #else - tmpstore = QString::fromLocal8Bit((const char*)description_.data(), msgLen); + tmpstore = QString::fromUtf8((const char*)description_.constData(), msgLen); #endif if(result != tmpstore) { if(!result.isEmpty()) @@ -223,13 +265,13 @@ static QString qODBCWarn(const QODBCPrivate* odbc, int *nativeCode = 0) { return (qWarnODBCHandle(SQL_HANDLE_ENV, odbc->dpEnv()) + QLatin1Char(' ') + qWarnODBCHandle(SQL_HANDLE_DBC, odbc->dpDbc()) + QLatin1Char(' ') - + qWarnODBCHandle(SQL_HANDLE_STMT, odbc->hStmt, nativeCode)); + + qWarnODBCHandle(SQL_HANDLE_STMT, odbc->hStmt, nativeCode)).simplified(); } static QString qODBCWarn(const QODBCDriverPrivate* odbc, int *nativeCode = 0) { return (qWarnODBCHandle(SQL_HANDLE_ENV, odbc->hEnv) + QLatin1Char(' ') - + qWarnODBCHandle(SQL_HANDLE_DBC, odbc->hDbc, nativeCode)); + + qWarnODBCHandle(SQL_HANDLE_DBC, odbc->hDbc, nativeCode)).simplified(); } static void qSqlWarning(const QString& message, const QODBCPrivate* odbc) @@ -331,17 +373,22 @@ static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool uni colSize = 65536; } else { colSize++; // make sure there is room for more than the 0 termination - if (unicode) { - colSize *= 2; // a tiny bit faster, since it saves a SQLGetData() call - } } - QVarLengthArray buf(colSize); + r = SQLGetData(hStmt, + column+1, + SQL_C_TCHAR, + NULL, + 0, + &lengthIndicator); + if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && lengthIndicator > 0) + colSize = lengthIndicator/sizeof(SQLTCHAR) + 1; + QVarLengthArray buf(colSize); while (true) { r = SQLGetData(hStmt, column+1, - unicode ? SQL_C_WCHAR : SQL_C_CHAR, + SQL_C_TCHAR, (SQLPOINTER)buf.data(), - colSize, + colSize*sizeof(SQLTCHAR), &lengthIndicator); if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) { if (lengthIndicator == SQL_NULL_DATA || lengthIndicator == SQL_NO_TOTAL) { @@ -353,14 +400,9 @@ static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool uni // contain the number of bytes returned - it contains the // total number of bytes that CAN be fetched // colSize-1: remove 0 termination when there is more data to fetch - int rSize = (r == SQL_SUCCESS_WITH_INFO) ? (unicode ? colSize-2 : colSize-1) : lengthIndicator; - if (unicode) { - fieldVal += QString((const QChar*) buf.constData(), rSize / 2); - } else { - fieldVal += QString::fromAscii(buf.constData(), rSize); - } - memset(buf.data(), 0, colSize); - if (lengthIndicator < colSize) { + int rSize = (r == SQL_SUCCESS_WITH_INFO) ? colSize : lengthIndicator/sizeof(SQLTCHAR); + fieldVal += fromSQLTCHAR(buf, rSize); + if (lengthIndicator < (unsigned int)colSize*sizeof(SQLTCHAR)) { // workaround for Drivermanagers that don't return SQL_NO_DATA break; } @@ -386,10 +428,11 @@ static QVariant qGetBinaryData(SQLHANDLE hStmt, int column) QSQLLEN lengthIndicator = 0; SQLRETURN r = SQL_ERROR; - SQLTCHAR colName[COLNAMESIZE]; + QVarLengthArray colName(COLNAMESIZE); + r = SQLDescribeCol(hStmt, column + 1, - colName, + colName.data(), COLNAMESIZE, &colNameLen, &colType, @@ -522,10 +565,10 @@ static QSqlField qMakeFieldInfo(const QODBCPrivate* p, int i ) SQLSMALLINT colScale; SQLSMALLINT nullable; SQLRETURN r = SQL_ERROR; - SQLTCHAR colName[COLNAMESIZE]; + QVarLengthArray colName(COLNAMESIZE); r = SQLDescribeCol(p->hStmt, i+1, - colName, + colName.data(), (SQLSMALLINT)COLNAMESIZE, &colNameLen, &colType, @@ -551,9 +594,9 @@ static QSqlField qMakeFieldInfo(const QODBCPrivate* p, int i ) } #ifdef UNICODE - QString qColName((const QChar*)colName, colNameLen); + QString qColName(fromSQLTCHAR(colName, colNameLen)); #else - QString qColName = QString::fromLocal8Bit((const char*)colName); + QString qColName = QString::fromUtf8((const char *)colName.constData()); #endif // nullable can be SQL_NO_NULLS, SQL_NULLABLE or SQL_NULLABLE_UNKNOWN int required = -1; @@ -581,24 +624,33 @@ static int qGetODBCVersion(const QString &connOpts) if (connOpts.contains(QLatin1String("SQL_ATTR_ODBC_VERSION=SQL_OV_ODBC3"), Qt::CaseInsensitive)) return SQL_OV_ODBC3; #endif + if (connOpts.contains(QLatin1String("SQL_ATTR_ODBC_VERSION=SQL_OV_ODBC2"), Qt::CaseInsensitive)) + return SQL_OV_ODBC2; +#ifdef _IODBCUNIX_H + return SQL_OV_ODBC3; +#else return SQL_OV_ODBC2; +#endif } QChar QODBCDriverPrivate::quoteChar() { if (!isQuoteInitialized) { - char driverResponse[4]; + SQLTCHAR driverResponse[4]; SQLSMALLINT length; int r = SQLGetInfo(hDbc, SQL_IDENTIFIER_QUOTE_CHAR, &driverResponse, sizeof(driverResponse), &length); - if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) { + if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) +#ifdef UNICODE + quote = QChar(driverResponse[0]); +#else quote = QLatin1Char(driverResponse[0]); - } else { +#endif + else quote = QLatin1Char('"'); - } isQuoteInitialized = true; } return quote; @@ -642,11 +694,11 @@ bool QODBCDriverPrivate::setConnectionOptions(const QString& connOpts) val.utf16(); // 0 terminate r = SQLSetConnectAttr(hDbc, SQL_ATTR_CURRENT_CATALOG, #ifdef UNICODE - (SQLWCHAR*) val.unicode(), + toSQLTCHAR(val).constData(), #else - (SQLCHAR*) val.toLatin1().constData(), + (SQLCHAR*) val.toUtf8().constData(), #endif - SQL_NTS); + val.length()*sizeof(SQLTCHAR)); } else if (opt.toUpper() == QLatin1String("SQL_ATTR_METADATA_ID")) { if (val.toUpper() == QLatin1String("SQL_TRUE")) { v = SQL_TRUE; @@ -664,11 +716,11 @@ bool QODBCDriverPrivate::setConnectionOptions(const QString& connOpts) val.utf16(); // 0 terminate r = SQLSetConnectAttr(hDbc, SQL_ATTR_TRACEFILE, #ifdef UNICODE - (SQLWCHAR*) val.unicode(), + toSQLTCHAR(val).constData(), #else - (SQLCHAR*) val.toLatin1().constData(), + (SQLCHAR*) val.toUtf8().constData(), #endif - SQL_NTS); + val.length()*sizeof(SQLTCHAR)); } else if (opt.toUpper() == QLatin1String("SQL_ATTR_TRACE")) { if (val.toUpper() == QLatin1String("SQL_OPT_TRACE_OFF")) { v = SQL_OPT_TRACE_OFF; @@ -880,10 +932,10 @@ bool QODBCResult::reset (const QString& query) #ifdef UNICODE r = SQLExecDirect(d->hStmt, - (SQLWCHAR*) query.unicode(), + toSQLTCHAR(query).constData(), (SQLINTEGER) query.length()); #else - QByteArray query8 = query.toLocal8Bit(); + QByteArray query8 = query.toUtf8(); r = SQLExecDirect(d->hStmt, (SQLCHAR*) query8.constData(), (SQLINTEGER) query8.length()); @@ -1231,10 +1283,10 @@ bool QODBCResult::prepare(const QString& query) #ifdef UNICODE r = SQLPrepare(d->hStmt, - (SQLWCHAR*) query.unicode(), + toSQLTCHAR(query).constData(), (SQLINTEGER) query.length()); #else - QByteArray query8 = query.toLocal8Bit(); + QByteArray query8 = query.toUtf8(); r = SQLPrepare(d->hStmt, (SQLCHAR*) query8.constData(), (SQLINTEGER) query8.length()); @@ -1435,43 +1487,44 @@ bool QODBCResult::exec() #ifndef Q_ODBC_VERSION_2 if (d->unicode) { QString str = val.toString(); - str.utf16(); if (*ind != SQL_NULL_DATA) - *ind = str.length() * sizeof(QChar); - int strSize = str.length() * sizeof(QChar); + *ind = str.length() * sizeof(SQLTCHAR); + int strSize = str.length() * sizeof(SQLTCHAR); if (bindValueType(i) & QSql::Out) { - QByteArray ba((char*)str.constData(), str.capacity() * sizeof(QChar)); + QVarLengthArray ba(toSQLTCHAR(str)); + ba.reserve(str.capacity()); r = SQLBindParameter(d->hStmt, i + 1, qParamType[(QFlag)(bindValueType(i)) & QSql::InOut], - SQL_C_WCHAR, + SQL_C_TCHAR, strSize > 254 ? SQL_WLONGVARCHAR : SQL_WVARCHAR, 0, // god knows... don't change this! 0, (void *)ba.constData(), ba.size(), ind); - tmpStorage.append(ba); + tmpStorage.append(QByteArray((const char *)ba.constData(), ba.size()*sizeof(SQLTCHAR))); break; } - + QByteArray strba((const char *)toSQLTCHAR(str).constData(), str.size()*sizeof(SQLTCHAR)); r = SQLBindParameter(d->hStmt, i + 1, qParamType[(QFlag)(bindValueType(i)) & QSql::InOut], - SQL_C_WCHAR, + SQL_C_TCHAR, strSize > 254 ? SQL_WLONGVARCHAR : SQL_WVARCHAR, strSize, 0, - (void *)str.constData(), - strSize, + (SQLPOINTER)strba.constData(), + strba.size(), ind); + tmpStorage.append(strba); break; } else #endif { - QByteArray str = val.toString().toAscii(); + QByteArray str = val.toString().toUtf8(); if (*ind != SQL_NULL_DATA) *ind = str.length(); int strSize = str.length(); @@ -1572,15 +1625,18 @@ bool QODBCResult::exec() break; case QVariant::String: if (d->unicode) { - if (bindValueType(i) & QSql::Out) - values[i] = QString::fromUtf16((ushort*)tmpStorage.takeFirst().constData()); + if (bindValueType(i) & QSql::Out) { + QByteArray first = tmpStorage.takeFirst(); + QVarLengthArray array; + array.append((SQLTCHAR *)first.constData(), first.size()); + values[i] = fromSQLTCHAR(array, first.size()/sizeof(SQLTCHAR*)); + } break; } // fall through default: { - QByteArray ba = tmpStorage.takeFirst(); if (bindValueType(i) & QSql::Out) - values[i] = QString::fromAscii(ba.constData()); + values[i] = tmpStorage.takeFirst(); break; } } if (indicators[i] == SQL_NULL_DATA) @@ -1789,19 +1845,20 @@ bool QODBCDriver::open(const QString & db, connQStr += QLatin1String(";PWD=") + password; SQLSMALLINT cb; - SQLTCHAR connOut[1024]; + QVarLengthArray connOut(1024); r = SQLDriverConnect(d->hDbc, NULL, #ifdef UNICODE - (SQLWCHAR*)connQStr.unicode(), + toSQLTCHAR(connQStr).constData(), #else - (SQLCHAR*)connQStr.toLatin1().constData(), + (SQLCHAR*)connQStr.toUtf8().constData(), #endif (SQLSMALLINT)connQStr.length(), - connOut, + connOut.data(), 1024, &cb, - SQL_DRIVER_NOPROMPT); + /*SQL_DRIVER_NOPROMPT*/0); + if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) { setLastError(qMakeError(tr("Unable to connect"), QSqlError::ConnectionError, d)); setOpenError(true); @@ -1977,20 +2034,21 @@ void QODBCDriverPrivate::checkSchemaUsage() void QODBCDriverPrivate::checkSqlServer() { SQLRETURN r; - char serverString[200]; + QVarLengthArray serverString(200); SQLSMALLINT t; + memset(serverString.data(), 0, serverString.size() * sizeof(SQLTCHAR)); r = SQLGetInfo(hDbc, SQL_DBMS_NAME, - serverString, - sizeof(serverString), + serverString.data(), + serverString.size() * sizeof(SQLTCHAR), &t); if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) { QString serverType; #ifdef UNICODE - serverType = QString(reinterpret_cast(serverString), t/sizeof(QChar)); + serverType = fromSQLTCHAR(serverString, t/sizeof(SQLTCHAR)); #else - serverType = QString::fromLocal8Bit(serverString, t); + serverType = QString::fromUtf8((const char *)serverString.constData(), t); #endif isMySqlServer = serverType.contains(QLatin1String("mysql"), Qt::CaseInsensitive); isMSSqlServer = serverType.contains(QLatin1String("Microsoft SQL Server"), Qt::CaseInsensitive); @@ -2009,18 +2067,18 @@ void QODBCDriverPrivate::checkHasSQLFetchScroll() void QODBCDriverPrivate::checkHasMultiResults() { - char driverResponse[4]; + QVarLengthArray driverResponse(2); SQLSMALLINT length; SQLRETURN r = SQLGetInfo(hDbc, SQL_MULT_RESULT_SETS, - driverResponse, - sizeof(driverResponse), + driverResponse.data(), + driverResponse.size() * sizeof(SQLTCHAR), &length); if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) #ifdef UNICODE - hasMultiResultSets = QString(reinterpret_cast(driverResponse), length/sizeof(QChar)).startsWith(QLatin1Char('Y')); + hasMultiResultSets = fromSQLTCHAR(driverResponse, length/sizeof(SQLTCHAR)).startsWith(QLatin1Char('Y')); #else - hasMultiResultSets = QString::fromLocal8Bit(driverResponse, length).startsWith(QLatin1Char('Y')); + hasMultiResultSets = QString::fromUtf8((const char *)driverResponse.constData(), length).startsWith(QLatin1Char('Y')); #endif } @@ -2134,9 +2192,9 @@ QStringList QODBCDriver::tables(QSql::TableType type) const NULL, 0, #ifdef UNICODE - (SQLWCHAR*)joinedTableTypeString.unicode(), + toSQLTCHAR(joinedTableTypeString).constData(), #else - (SQLCHAR*)joinedTableTypeString.toLatin1().constData(), + (SQLCHAR*)joinedTableTypeString.toUtf8().constData(), #endif joinedTableTypeString.length() /* characters, not bytes */); @@ -2150,6 +2208,11 @@ QStringList QODBCDriver::tables(QSql::TableType type) const else r = SQLFetch(hStmt); + if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO && r != SQL_NO_DATA) { + qWarning() << "QODBCDriver::tables failed to retrieve table/view list: (" << r << "," << qWarnODBCHandle(SQL_HANDLE_STMT, hStmt) << ")"; + return QStringList(); + } + while (r == SQL_SUCCESS) { QString fieldVal = qGetStringData(hStmt, 2, -1, false); tl.append(fieldVal); @@ -2208,21 +2271,21 @@ QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const SQL_IS_UINTEGER); r = SQLPrimaryKeys(hStmt, #ifdef UNICODE - catalog.length() == 0 ? NULL : (SQLWCHAR*)catalog.unicode(), + catalog.length() == 0 ? NULL : toSQLTCHAR(catalog).constData(), #else - catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toLatin1().constData(), + catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toUtf8().constData(), #endif catalog.length(), #ifdef UNICODE - schema.length() == 0 ? NULL : (SQLWCHAR*)schema.unicode(), + schema.length() == 0 ? NULL : toSQLTCHAR(schema).constData(), #else - schema.length() == 0 ? NULL : (SQLCHAR*)schema.toLatin1().constData(), + schema.length() == 0 ? NULL : (SQLCHAR*)schema.toUtf8().constData(), #endif schema.length(), #ifdef UNICODE - (SQLWCHAR*)table.unicode(), + toSQLTCHAR(table).constData(), #else - (SQLCHAR*)table.toLatin1().constData(), + (SQLCHAR*)table.toUtf8().constData(), #endif table.length() /* in characters, not in bytes */); @@ -2233,21 +2296,21 @@ QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const r = SQLSpecialColumns(hStmt, SQL_BEST_ROWID, #ifdef UNICODE - catalog.length() == 0 ? NULL : (SQLWCHAR*)catalog.unicode(), + catalog.length() == 0 ? NULL : toSQLTCHAR(catalog).constData(), #else - catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toLatin1().constData(), + catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toUtf8().constData(), #endif catalog.length(), #ifdef UNICODE - schema.length() == 0 ? NULL : (SQLWCHAR*)schema.unicode(), + schema.length() == 0 ? NULL : toSQLTCHAR(schema).constData(), #else - schema.length() == 0 ? NULL : (SQLCHAR*)schema.toLatin1().constData(), + schema.length() == 0 ? NULL : (SQLCHAR*)schema.toUtf8().constData(), #endif schema.length(), #ifdef UNICODE - (SQLWCHAR*)table.unicode(), + toSQLTCHAR(table).constData(), #else - (SQLCHAR*)table.toLatin1().constData(), + (SQLCHAR*)table.toUtf8().constData(), #endif table.length(), SQL_SCOPE_CURROW, @@ -2333,21 +2396,21 @@ QSqlRecord QODBCDriver::record(const QString& tablename) const SQL_IS_UINTEGER); r = SQLColumns(hStmt, #ifdef UNICODE - catalog.length() == 0 ? NULL : (SQLWCHAR*)catalog.unicode(), + catalog.length() == 0 ? NULL : toSQLTCHAR(catalog).constData(), #else - catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toLatin1().constData(), + catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toUtf8().constData(), #endif catalog.length(), #ifdef UNICODE - schema.length() == 0 ? NULL : (SQLWCHAR*)schema.unicode(), + schema.length() == 0 ? NULL : toSQLTCHAR(schema).constData(), #else - schema.length() == 0 ? NULL : (SQLCHAR*)schema.toLatin1().constData(), + schema.length() == 0 ? NULL : (SQLCHAR*)schema.toUtf8().constData(), #endif schema.length(), #ifdef UNICODE - (SQLWCHAR*)table.unicode(), + toSQLTCHAR(table).constData(), #else - (SQLCHAR*)table.toLatin1().constData(), + (SQLCHAR*)table.toUtf8().constData(), #endif table.length(), NULL, diff --git a/src/sql/drivers/odbc/qsql_odbc.h b/src/sql/drivers/odbc/qsql_odbc.h index 145a902..13b2cc3 100644 --- a/src/sql/drivers/odbc/qsql_odbc.h +++ b/src/sql/drivers/odbc/qsql_odbc.h @@ -75,10 +75,6 @@ # undef _MSC_VER #endif -#ifndef Q_ODBC_VERSION_2 -#include -#endif - #include QT_BEGIN_HEADER -- cgit v0.12 From d042a00b5828961e1e1fa82017717b5f72dde9ef Mon Sep 17 00:00:00 2001 From: Aaron McCarthy Date: Mon, 1 Mar 2010 17:45:35 +1000 Subject: Bearer management changes from Qt Mobility (fca9891). fca98911b75ce12e70d93cfc2932a9759758a605 --- src/network/bearer/qnetworkconfigmanager.cpp | 5 + src/network/bearer/qnetworkconfiguration.cpp | 1 - src/network/bearer/qnetworksession.cpp | 4 + src/plugins/bearer/corewlan/qcorewlanengine.h | 6 + src/plugins/bearer/corewlan/qcorewlanengine.mm | 196 +++++++++----- src/plugins/bearer/generic/qgenericengine.cpp | 11 +- src/plugins/bearer/icd/monitor.cpp | 56 +--- src/plugins/bearer/icd/monitor.h | 22 +- src/plugins/bearer/icd/qicdengine.cpp | 24 +- src/plugins/bearer/icd/qnetworksession_impl.cpp | 32 ++- src/plugins/bearer/icd/qnetworksession_impl.h | 7 +- .../networkmanager/qnetworkmanagerengine.cpp | 3 +- .../networkmanager/qnetworkmanagerservice.cpp | 293 +++++++++------------ .../bearer/networkmanager/qnetworkmanagerservice.h | 112 +++++--- .../bearer/networkmanager/qnmdbushelper.cpp | 11 +- src/plugins/bearer/networkmanager/qnmdbushelper.h | 2 + src/plugins/bearer/qnetworksession_impl.cpp | 3 +- .../bearer/symbian/qnetworksession_impl.cpp | 17 +- src/plugins/bearer/symbian/symbianengine.cpp | 38 ++- src/plugins/bearer/symbian/symbianengine.h | 1 + tests/auto/qbearertestcommon.h | 13 + tests/auto/qnetworksession/lackey/main.cpp | 13 +- .../qnetworksession/test/tst_qnetworksession.cpp | 293 ++++++++++++++++++++- 23 files changed, 794 insertions(+), 369 deletions(-) diff --git a/src/network/bearer/qnetworkconfigmanager.cpp b/src/network/bearer/qnetworkconfigmanager.cpp index e960323..9ff197b 100644 --- a/src/network/bearer/qnetworkconfigmanager.cpp +++ b/src/network/bearer/qnetworkconfigmanager.cpp @@ -302,6 +302,11 @@ QNetworkConfiguration QNetworkConfigurationManager::defaultConfiguration() const be used to update each configuration's state. Note that such an update may require some time. It's completion is signalled by updateCompleted(). In the absence of a configuration update this function returns the best estimate at the time of the call. + Therefore, if WLAN configurations are of interest, it is recommended that + updateConfigurations() is called once after QNetworkConfigurationManager + instantiation (WLAN scans are too time consuming to perform in constructor). + After this the data is kept automatically up-to-date as the system reports + any changes. */ QList QNetworkConfigurationManager::allConfigurations(QNetworkConfiguration::StateFlags filter) const { diff --git a/src/network/bearer/qnetworkconfiguration.cpp b/src/network/bearer/qnetworkconfiguration.cpp index c551dc5..c4ba406 100644 --- a/src/network/bearer/qnetworkconfiguration.cpp +++ b/src/network/bearer/qnetworkconfiguration.cpp @@ -40,7 +40,6 @@ ****************************************************************************/ #include "qnetworkconfiguration.h" - #include "qnetworkconfiguration_p.h" QT_BEGIN_NAMESPACE diff --git a/src/network/bearer/qnetworksession.cpp b/src/network/bearer/qnetworksession.cpp index 6a82791..f0d7ede 100644 --- a/src/network/bearer/qnetworksession.cpp +++ b/src/network/bearer/qnetworksession.cpp @@ -275,6 +275,8 @@ void QNetworkSession::open() { if (d) d->open(); + else + emit error(InvalidConfigurationError); } /*! @@ -308,6 +310,8 @@ bool QNetworkSession::waitForOpened(int msecs) QEventLoop* loop = new QEventLoop(this); QObject::connect(d, SIGNAL(quitPendingWaitsForOpened()), loop, SLOT(quit())); + QObject::connect(this, SIGNAL(error(QNetworkSession::SessionError)), + loop, SLOT(quit())); //final call if (msecs>=0) diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.h b/src/plugins/bearer/corewlan/qcorewlanengine.h index 044b433..cfd89e4 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.h +++ b/src/plugins/bearer/corewlan/qcorewlanengine.h @@ -46,6 +46,7 @@ #include #include +#include QT_BEGIN_NAMESPACE @@ -91,6 +92,11 @@ private: bool isKnownSsid(const QString &interfaceName, const QString &ssid); QList foundConfigurations; + SCDynamicStoreRef storeSession; + CFRunLoopSourceRef runloopSource; + + void startNetworkChangeLoop(); + }; QT_END_NAMESPACE diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm index a5384d1..4ab4d88 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.mm +++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm @@ -105,12 +105,23 @@ static QString qGetInterfaceType(const QString &interfaceString) return networkInterfaces.value(interfaceString, QLatin1String("Unknown")); } +void networkChangeCallback(SCDynamicStoreRef/* store*/, CFArrayRef changedKeys, void *info) +{ + for ( long i = 0; i < CFArrayGetCount(changedKeys); i++) { + + CFStringRef changed = (CFStringRef)CFArrayGetValueAtIndex(changedKeys, i); + if( cfstringRefToQstring(changed).contains("/Network/Global/IPv4")) { + QCoreWlanEngine* wlanEngine = static_cast(info); + wlanEngine->requestUpdate(); + } + } + return; +} + QCoreWlanEngine::QCoreWlanEngine(QObject *parent) : QBearerEngineImpl(parent) { - connect(&pollTimer, SIGNAL(timeout()), this, SLOT(doRequestUpdate())); - pollTimer.setInterval(10000); - doRequestUpdate(); + startNetworkChangeLoop(); } QCoreWlanEngine::~QCoreWlanEngine() @@ -150,7 +161,6 @@ void QCoreWlanEngine::connectToId(const QString &id) NSEnumerator *enumerator = [remNets objectEnumerator]; CWWirelessProfile *wProfile; NSUInteger index=0; - CWNetwork *apNetwork; NSDictionary *parametersDict; NSArray* apArray; @@ -179,26 +189,24 @@ void QCoreWlanEngine::connectToId(const QString &id) if(!err) { for(uint row=0; row < [apArray count]; row++ ) { - apNetwork = [apArray objectAtIndex:row]; + CWNetwork *apNetwork = [apArray objectAtIndex:row]; if([[apNetwork ssid] compare:[wProfile ssid]] == NSOrderedSame) { bool result = [wifiInterface associateToNetwork: apNetwork parameters:[NSDictionary dictionaryWithDictionary:params] error:&err]; if(!result) { - qWarning() <<"ERROR"<< nsstringToQString([err localizedDescription ]); emit connectionError(id, ConnectError); } else { - [apNetwork release]; [autoreleasepool release]; return; } } + [apNetwork release]; } } } index++; } - [apNetwork release]; emit connectionError(id, InterfaceLookupError); #endif @@ -350,81 +358,83 @@ QStringList QCoreWlanEngine::scanForSsids(const QString &interfaceName) NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init]; CWInterface *currentInterface = [CWInterface interfaceWithName:qstringToNSString(interfaceName)]; - NSError *err = nil; - NSDictionary *parametersDict = nil; - NSArray* apArray = [currentInterface scanForNetworksWithParameters:parametersDict error:&err]; + if([currentInterface power]) { + NSError *err = nil; + NSDictionary *parametersDict = nil; + NSArray* apArray = [currentInterface scanForNetworksWithParameters:parametersDict error:&err]; - CWNetwork *apNetwork; - if (!err) { - for(uint row=0; row < [apArray count]; row++ ) { - NSAutoreleasePool *looppool = [[NSAutoreleasePool alloc] init]; + CWNetwork *apNetwork; + if (!err) { + for(uint row=0; row < [apArray count]; row++ ) { + NSAutoreleasePool *looppool = [[NSAutoreleasePool alloc] init]; - apNetwork = [apArray objectAtIndex:row]; + apNetwork = [apArray objectAtIndex:row]; - const QString networkSsid = nsstringToQString([apNetwork ssid]); + const QString networkSsid = nsstringToQString([apNetwork ssid]); - const QString id = QString::number(qHash(QLatin1String("corewlan:") + networkSsid)); - found.append(id); + const QString id = QString::number(qHash(QLatin1String("corewlan:") + networkSsid)); + found.append(id); - QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Undefined; + QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Undefined; - if ([currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) { - if (networkSsid == nsstringToQString([currentInterface ssid])) - state = QNetworkConfiguration::Active; - } else { - if (isKnownSsid(interfaceName, networkSsid)) - state = QNetworkConfiguration::Discovered; - else - state = QNetworkConfiguration::Defined; - } + if ([currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) { + if (networkSsid == nsstringToQString([currentInterface ssid])) + state = QNetworkConfiguration::Active; + } else { + if (isKnownSsid(interfaceName, networkSsid)) + state = QNetworkConfiguration::Discovered; + else + state = QNetworkConfiguration::Defined; + } - if (accessPointConfigurations.contains(id)) { - QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id); + if (accessPointConfigurations.contains(id)) { + QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id); - bool changed = false; + bool changed = false; - if (!ptr->isValid) { - ptr->isValid = true; - changed = true; - } + if (!ptr->isValid) { + ptr->isValid = true; + changed = true; + } - if (ptr->name != networkSsid) { - ptr->name = networkSsid; - changed = true; - } + if (ptr->name != networkSsid) { + ptr->name = networkSsid; + changed = true; + } - if (ptr->id != id) { - ptr->id = id; - changed = true; - } + if (ptr->id != id) { + ptr->id = id; + changed = true; + } - if (ptr->state != state) { - ptr->state = state; - changed = true; - } + if (ptr->state != state) { + ptr->state = state; + changed = true; + } - if (changed) - emit configurationChanged(ptr); - } else { - QNetworkConfigurationPrivatePointer ptr(new QNetworkConfigurationPrivate); + if (changed) + emit configurationChanged(ptr); + } else { + QNetworkConfigurationPrivatePointer ptr(new QNetworkConfigurationPrivate); - ptr->name = networkSsid; - ptr->isValid = true; - ptr->id = id; - ptr->state = state; - ptr->type = QNetworkConfiguration::InternetAccessPoint; - ptr->bearer = QLatin1String("WLAN"); + ptr->name = networkSsid; + ptr->isValid = true; + ptr->id = id; + ptr->state = state; + ptr->type = QNetworkConfiguration::InternetAccessPoint; + ptr->bearer = QLatin1String("WLAN"); - accessPointConfigurations.insert(id, ptr); - configurationInterface.insert(id, interfaceName); + accessPointConfigurations.insert(id, ptr); + configurationInterface.insert(id, interfaceName); - emit configurationAdded(ptr); + emit configurationAdded(ptr); + } + [looppool release]; } - [looppool release]; - } - } else { - qWarning() << "ERROR scanning for ssids" << nsstringToQString([err localizedDescription]) - <= 0) { - switch (request.ifr_hwaddr.sa_family) { - case ARPHRD_ETHER: - return QLatin1String("Ethernet"); - } - } - + int result = ioctl(sock, SIOCGIFHWADDR, &request); close(sock); + + if (result >= 0 && request.ifr_hwaddr.sa_family == ARPHRD_ETHER) + return QLatin1String("Ethernet"); #else Q_UNUSED(interface); #endif diff --git a/src/plugins/bearer/icd/monitor.cpp b/src/plugins/bearer/icd/monitor.cpp index 0ff45d2..5b0af7e 100644 --- a/src/plugins/bearer/icd/monitor.cpp +++ b/src/plugins/bearer/icd/monitor.cpp @@ -47,32 +47,12 @@ #include #include -#define IAP "/system/osso/connectivity/IAP" - -static int iap_prefix_len; - -/* Notify func that is called when IAP is added or deleted */ -void notify_iap(GConfClient *, guint, GConfEntry *entry, gpointer user_data) -{ - const char *key = gconf_entry_get_key(entry); - if (key && g_str_has_prefix(key, IAP)) { - IapMonitor *ptr = (IapMonitor *)user_data; - if (gconf_entry_get_value(entry)) { - ptr->iapAdded(key, entry); - } else { - ptr->iapDeleted(key, entry); - } - } -} - void IapMonitor::setup(QIcdEngine *d_ptr) { if (first_call) { - d = d_ptr; - iap_prefix_len = strlen(IAP); - iap = new Maemo::IAPMonitor(notify_iap, (gpointer)this); - first_call = false; + d = d_ptr; + first_call = false; } } @@ -80,37 +60,25 @@ void IapMonitor::setup(QIcdEngine *d_ptr) void IapMonitor::cleanup() { if (!first_call) { - delete iap; - timers.removeAll(); - first_call = true; + timers.removeAll(); + first_call = true; } } -void IapMonitor::iapAdded(const char *key, GConfEntry * /*entry*/) +void IapMonitor::iapAdded(const QString &iap_id) { - //qDebug("Notify called for added element: %s=%s", - // gconf_entry_get_key(entry), gconf_value_to_string(gconf_entry_get_value(entry))); - - /* We cannot know when the IAP is fully added to gconf, so a timer is + /* We cannot know when the IAP is fully added to db, so a timer is * installed instead. When the timer expires we hope that IAP is added ok. */ - QString iap_id = QString(key + iap_prefix_len + 1).section('/',0,0); - timers.add(iap_id, d); + QString id = iap_id; + timers.add(id, d); } -void IapMonitor::iapDeleted(const char *key, GConfEntry * /*entry*/) +void IapMonitor::iapRemoved(const QString &iap_id) { - //qDebug("Notify called for deleted element: %s", gconf_entry_get_key(entry)); - - /* We are only interested in IAP deletions so we skip the config entries - */ - if (strstr(key + iap_prefix_len + 1, "/")) { - //qDebug("Deleting IAP config %s", key+iap_prefix_len); - return; - } - - QString iap_id = key + iap_prefix_len + 1; - d->deleteConfiguration(iap_id); + QString id = iap_id; + d->deleteConfiguration(id); } + diff --git a/src/plugins/bearer/icd/monitor.h b/src/plugins/bearer/icd/monitor.h index 82b0f36..10ffb30 100644 --- a/src/plugins/bearer/icd/monitor.h +++ b/src/plugins/bearer/icd/monitor.h @@ -53,7 +53,7 @@ class QIcdEngine; /* The IapAddTimer is a helper class that makes sure we update - * the configuration only after all gconf additions to certain + * the configuration only after all db additions to certain * iap are finished (after a certain timeout) */ class _IapAddTimer : public QObject @@ -64,10 +64,10 @@ public: _IapAddTimer() {} ~_IapAddTimer() { - if (timer.isActive()) { - QObject::disconnect(&timer, SIGNAL(timeout()), this, SLOT(timeout())); - timer.stop(); - } + if (timer.isActive()) { + QObject::disconnect(&timer, SIGNAL(timeout()), this, SLOT(timeout())); + timer.stop(); + } } void add(QString& iap_id, QIcdEngine *d); @@ -92,23 +92,21 @@ public: void removeAll(); }; -class IapMonitor +class IapMonitor : public Maemo::IAPMonitor { public: IapMonitor() : first_call(true) { } - friend void notify_iap(GConfClient *, guint, - GConfEntry *entry, gpointer user_data); void setup(QIcdEngine *d); void cleanup(); +protected: + void iapAdded(const QString &iapId); + void iapRemoved(const QString &iapId); + private: bool first_call; - void iapAdded(const char *key, GConfEntry *entry); - void iapDeleted(const char *key, GConfEntry *entry); - - Maemo::IAPMonitor *iap; QIcdEngine *d; IapAddTimer timers; }; diff --git a/src/plugins/bearer/icd/qicdengine.cpp b/src/plugins/bearer/icd/qicdengine.cpp index f10042a..206a6fd 100644 --- a/src/plugins/bearer/icd/qicdengine.cpp +++ b/src/plugins/bearer/icd/qicdengine.cpp @@ -189,14 +189,9 @@ void QIcdEngine::doRequestUpdate() QList all_iaps; Maemo::IAPConf::getAll(all_iaps); - foreach (QString escaped_iap_id, all_iaps) { + foreach (QString iap_id, all_iaps) { QByteArray ssid; - /* The key that is returned by getAll() needs to be unescaped */ - gchar *unescaped_id = gconf_unescape_key(escaped_iap_id.toUtf8().data(), -1); - QString iap_id = QString((char *)unescaped_id); - g_free(unescaped_id); - previous.removeAll(iap_id); Maemo::IAPConf saved_ap(iap_id); @@ -231,11 +226,12 @@ void QIcdEngine::doRequestUpdate() IcdNetworkConfigurationPrivate *cpPriv = new IcdNetworkConfigurationPrivate; cpPriv->name = saved_ap.value("name").toString(); - if (cpPriv->name.isEmpty()) - if (!ssid.isEmpty() && ssid.size() > 0) - cpPriv->name = ssid.data(); - else - cpPriv->name = iap_id; + if (cpPriv->name.isEmpty()) { + if (!ssid.isEmpty() && ssid.size() > 0) + cpPriv->name = ssid.data(); + else + cpPriv->name = iap_id; + } cpPriv->isValid = true; cpPriv->id = iap_id; cpPriv->network_id = ssid; @@ -379,9 +375,9 @@ void QIcdEngine::deleteConfiguration(const QString &iap_id) { QMutexLocker locker(&mutex); - /* Called when IAPs are deleted in gconf, in this case we do not scan - * or read all the IAPs from gconf because it might take too much power - * (multiple applications would need to scan and read all IAPs from gconf) + /* Called when IAPs are deleted in db, in this case we do not scan + * or read all the IAPs from db because it might take too much power + * (multiple applications would need to scan and read all IAPs from db) */ if (accessPointConfigurations.contains(iap_id)) { QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.take(iap_id); diff --git a/src/plugins/bearer/icd/qnetworksession_impl.cpp b/src/plugins/bearer/icd/qnetworksession_impl.cpp index a9e93e0..2acaa47 100644 --- a/src/plugins/bearer/icd/qnetworksession_impl.cpp +++ b/src/plugins/bearer/icd/qnetworksession_impl.cpp @@ -49,6 +49,7 @@ #include #include +#include #include #include @@ -299,6 +300,8 @@ void IcdListener::cleanupSession(QNetworkSessionPrivateImpl *ptr) void QNetworkSessionPrivateImpl::cleanupSession(void) { icdListener()->cleanupSession(this); + + QObject::disconnect(q, SIGNAL(stateChanged(QNetworkSession::State)), this, SLOT(updateProxies(QNetworkSession::State))); } @@ -451,6 +454,8 @@ void QNetworkSessionPrivateImpl::syncStateWithInterface() connect(&manager, SIGNAL(configurationChanged(QNetworkConfiguration)), this, SLOT(configurationChanged(QNetworkConfiguration))); + QObject::connect(q, SIGNAL(stateChanged(QNetworkSession::State)), this, SLOT(updateProxies(QNetworkSession::State))); + state = QNetworkSession::Invalid; lastError = QNetworkSession::UnknownSessionError; @@ -867,7 +872,6 @@ void QNetworkSessionPrivateImpl::do_open() qDebug() << "connect to"<< iap << "failed, result is empty"; #endif updateState(QNetworkSession::Disconnected); - emit quitPendingWaitsForOpened(); emit QNetworkSessionPrivate::error(QNetworkSession::InvalidConfigurationError); if (publicConfig.type() == QNetworkConfiguration::UserChoice) cleanupAnyConfiguration(); @@ -882,7 +886,6 @@ void QNetworkSessionPrivateImpl::do_open() if ((publicConfig.type() != QNetworkConfiguration::UserChoice) && (connected_iap != config.identifier())) { updateState(QNetworkSession::Disconnected); - emit quitPendingWaitsForOpened(); emit QNetworkSessionPrivate::error(QNetworkSession::InvalidConfigurationError); return; } @@ -946,7 +949,6 @@ void QNetworkSessionPrivateImpl::do_open() updateState(QNetworkSession::Disconnected); if (publicConfig.type() == QNetworkConfiguration::UserChoice) cleanupAnyConfiguration(); - emit quitPendingWaitsForOpened(); emit QNetworkSessionPrivate::error(QNetworkSession::UnknownSessionError); } } @@ -1099,6 +1101,30 @@ QNetworkSession::SessionError QNetworkSessionPrivateImpl::error() const return QNetworkSession::UnknownSessionError; } +void QNetworkSessionPrivateImpl::updateProxies(QNetworkSession::State newState) +{ + if ((newState == QNetworkSession::Connected) && + (newState != currentState)) + updateProxyInformation(); + else if ((newState == QNetworkSession::Disconnected) && + (currentState == QNetworkSession::Closing)) + clearProxyInformation(); + + currentState = newState; +} + + +void QNetworkSessionPrivateImpl::updateProxyInformation() +{ + Maemo::ProxyConf::update(); +} + + +void QNetworkSessionPrivateImpl::clearProxyInformation() +{ + Maemo::ProxyConf::clear(); +} + #include "qnetworksession_impl.moc" QT_END_NAMESPACE diff --git a/src/plugins/bearer/icd/qnetworksession_impl.h b/src/plugins/bearer/icd/qnetworksession_impl.h index b7461dc..587e6dc 100644 --- a/src/plugins/bearer/icd/qnetworksession_impl.h +++ b/src/plugins/bearer/icd/qnetworksession_impl.h @@ -75,7 +75,7 @@ class QNetworkSessionPrivateImpl : public QNetworkSessionPrivate public: QNetworkSessionPrivateImpl(QIcdEngine *engine) - : engine(engine), connectFlags(ICD_CONNECTION_FLAG_USER_EVENT) + : engine(engine), connectFlags(ICD_CONNECTION_FLAG_USER_EVENT), currentState(QNetworkSession::Invalid) { } @@ -118,6 +118,7 @@ private Q_SLOTS: void do_open(); void networkConfigurationsChanged(); void configurationChanged(const QNetworkConfiguration &config); + void updateProxies(QNetworkSession::State newState); private: QNetworkConfigurationManager manager; @@ -139,6 +140,10 @@ private: void updateIdentifier(QString &newId); quint64 getStatistics(bool sent) const; void cleanupSession(void); + + void updateProxyInformation(); + void clearProxyInformation(); + QNetworkSession::State currentState; }; QT_END_NAMESPACE diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp index 5c6efe3..0fa8f3c 100644 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp +++ b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp @@ -49,7 +49,6 @@ #include -#include #include #include #include @@ -147,7 +146,7 @@ QString QNetworkManagerEngine::getInterfaceFromId(const QString &id) continue; QNetworkManagerInterfaceDevice device(devices.at(0).path()); - return device.interface().name(); + return device.networkInterface().name(); } } diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp index 5dc0ea4..c780fbc 100644 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp +++ b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp @@ -41,26 +41,22 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -#include "qnmdbushelper.h" #include "qnetworkmanagerservice.h" +#include "qnmdbushelper.h" -//Q_DECLARE_METATYPE(QList) QT_BEGIN_NAMESPACE static QDBusConnection dbusConnection = QDBusConnection::systemBus(); -//static QDBusInterface iface(NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE, dbusConnection); class QNetworkManagerInterfacePrivate { @@ -70,19 +66,19 @@ public: }; QNetworkManagerInterface::QNetworkManagerInterface(QObject *parent) - : QObject(parent), nmDBusHelper(0) + : QObject(parent) { d = new QNetworkManagerInterfacePrivate(); - d->connectionInterface = new QDBusInterface(NM_DBUS_SERVICE, - NM_DBUS_PATH, - NM_DBUS_INTERFACE, + d->connectionInterface = new QDBusInterface(QLatin1String(NM_DBUS_SERVICE), + QLatin1String(NM_DBUS_PATH), + QLatin1String(NM_DBUS_INTERFACE), dbusConnection); if (!d->connectionInterface->isValid()) { d->valid = false; return; } d->valid = true; - nmDBusHelper = new QNmDBusHelper; + nmDBusHelper = new QNmDBusHelper(this); connect(nmDBusHelper, SIGNAL(pathForPropertiesChanged(const QString &,QMap)), this,SIGNAL(propertiesChanged( const QString &, QMap))); connect(nmDBusHelper,SIGNAL(pathForStateChanged(const QString &, quint32)), @@ -92,8 +88,6 @@ QNetworkManagerInterface::QNetworkManagerInterface(QObject *parent) QNetworkManagerInterface::~QNetworkManagerInterface() { - if (nmDBusHelper) - delete nmDBusHelper; delete d->connectionInterface; delete d; } @@ -108,24 +102,24 @@ bool QNetworkManagerInterface::setConnections() if(!isValid() ) return false; bool allOk = false; - if (!dbusConnection.connect(NM_DBUS_SERVICE, - NM_DBUS_PATH, - NM_DBUS_INTERFACE, - "PropertiesChanged", + if (!dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE), + QLatin1String(NM_DBUS_PATH), + QLatin1String(NM_DBUS_INTERFACE), + QLatin1String("PropertiesChanged"), nmDBusHelper,SLOT(slotPropertiesChanged( QMap)))) { allOk = true; } - if (!dbusConnection.connect(NM_DBUS_SERVICE, - NM_DBUS_PATH, - NM_DBUS_INTERFACE, - "DeviceAdded", + if (!dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE), + QLatin1String(NM_DBUS_PATH), + QLatin1String(NM_DBUS_INTERFACE), + QLatin1String("DeviceAdded"), this,SIGNAL(deviceAdded(QDBusObjectPath)))) { allOk = true; } - if (!dbusConnection.connect(NM_DBUS_SERVICE, - NM_DBUS_PATH, - NM_DBUS_INTERFACE, - "DeviceRemoved", + if (!dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE), + QLatin1String(NM_DBUS_PATH), + QLatin1String(NM_DBUS_INTERFACE), + QLatin1String("DeviceRemoved"), this,SIGNAL(deviceRemoved(QDBusObjectPath)))) { allOk = true; } @@ -140,7 +134,7 @@ QDBusInterface *QNetworkManagerInterface::connectionInterface() const QList QNetworkManagerInterface::getDevices() const { - QDBusReply > reply = d->connectionInterface->call("GetDevices"); + QDBusReply > reply = d->connectionInterface->call(QLatin1String("GetDevices")); return reply.value(); } @@ -149,7 +143,7 @@ void QNetworkManagerInterface::activateConnection( const QString &serviceName, QDBusObjectPath devicePath, QDBusObjectPath specificObject) { - QDBusPendingCall pendingCall = d->connectionInterface->asyncCall("ActivateConnection", + QDBusPendingCall pendingCall = d->connectionInterface->asyncCall(QLatin1String("ActivateConnection"), QVariant(serviceName), QVariant::fromValue(connectionPath), QVariant::fromValue(devicePath), @@ -162,7 +156,7 @@ void QNetworkManagerInterface::activateConnection( const QString &serviceName, void QNetworkManagerInterface::deactivateConnection(QDBusObjectPath connectionPath) const { - d->connectionInterface->call("DeactivateConnection", QVariant::fromValue(connectionPath)); + d->connectionInterface->call(QLatin1String("DeactivateConnection"), QVariant::fromValue(connectionPath)); } bool QNetworkManagerInterface::wirelessEnabled() const @@ -186,7 +180,6 @@ quint32 QNetworkManagerInterface::state() return d->connectionInterface->property("State").toUInt(); } -///////////// class QNetworkManagerInterfaceAccessPointPrivate { public: @@ -200,9 +193,9 @@ QNetworkManagerInterfaceAccessPoint::QNetworkManagerInterfaceAccessPoint(const Q { d = new QNetworkManagerInterfaceAccessPointPrivate(); d->path = dbusPathName; - d->connectionInterface = new QDBusInterface(NM_DBUS_SERVICE, + d->connectionInterface = new QDBusInterface(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_ACCESS_POINT, + QLatin1String(NM_DBUS_INTERFACE_ACCESS_POINT), dbusConnection); if (!d->connectionInterface->isValid()) { d->valid = false; @@ -215,8 +208,6 @@ QNetworkManagerInterfaceAccessPoint::QNetworkManagerInterfaceAccessPoint(const Q QNetworkManagerInterfaceAccessPoint::~QNetworkManagerInterfaceAccessPoint() { - if (nmDBusHelper) - delete nmDBusHelper; delete d->connectionInterface; delete d; } @@ -232,17 +223,15 @@ bool QNetworkManagerInterfaceAccessPoint::setConnections() return false; bool allOk = false; - if (nmDBusHelper) - delete nmDBusHelper; - nmDBusHelper = 0; - nmDBusHelper = new QNmDBusHelper; + delete nmDBusHelper; + nmDBusHelper = new QNmDBusHelper(this); connect(nmDBusHelper, SIGNAL(pathForPropertiesChanged(const QString &,QMap)), this,SIGNAL(propertiesChanged( const QString &, QMap))); - if(dbusConnection.connect(NM_DBUS_SERVICE, + if(dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_ACCESS_POINT, - "PropertiesChanged", + QLatin1String(NM_DBUS_INTERFACE_ACCESS_POINT), + QLatin1String("PropertiesChanged"), nmDBusHelper,SLOT(slotPropertiesChanged( QMap))) ) { allOk = true; @@ -300,7 +289,6 @@ quint32 QNetworkManagerInterfaceAccessPoint::strength() const return d->connectionInterface->property("Strength").toUInt(); } -///////////// class QNetworkManagerInterfaceDevicePrivate { public: @@ -314,9 +302,9 @@ QNetworkManagerInterfaceDevice::QNetworkManagerInterfaceDevice(const QString &de { d = new QNetworkManagerInterfaceDevicePrivate(); d->path = deviceObjectPath; - d->connectionInterface = new QDBusInterface(NM_DBUS_SERVICE, + d->connectionInterface = new QDBusInterface(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_DEVICE, + QLatin1String(NM_DBUS_INTERFACE_DEVICE), dbusConnection); if (!d->connectionInterface->isValid()) { d->valid = false; @@ -328,8 +316,6 @@ QNetworkManagerInterfaceDevice::QNetworkManagerInterfaceDevice(const QString &de QNetworkManagerInterfaceDevice::~QNetworkManagerInterfaceDevice() { - if (nmDBusHelper) - delete nmDBusHelper; delete d->connectionInterface; delete d; } @@ -345,16 +331,14 @@ bool QNetworkManagerInterfaceDevice::setConnections() return false; bool allOk = false; - if (nmDBusHelper) - delete nmDBusHelper; - nmDBusHelper = 0; - nmDBusHelper = new QNmDBusHelper; + delete nmDBusHelper; + nmDBusHelper = new QNmDBusHelper(this); connect(nmDBusHelper,SIGNAL(pathForStateChanged(const QString &, quint32)), this, SIGNAL(stateChanged(const QString&, quint32))); - if(dbusConnection.connect(NM_DBUS_SERVICE, + if(dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_DEVICE, - "StateChanged", + QLatin1String(NM_DBUS_INTERFACE_DEVICE), + QLatin1String("StateChanged"), nmDBusHelper,SLOT(deviceStateChanged(quint32)))) { allOk = true; } @@ -371,7 +355,7 @@ QString QNetworkManagerInterfaceDevice::udi() const return d->connectionInterface->property("Udi").toString(); } -QNetworkInterface QNetworkManagerInterfaceDevice::interface() const +QNetworkInterface QNetworkManagerInterfaceDevice::networkInterface() const { return QNetworkInterface::interfaceFromName(d->connectionInterface->property("Interface").toString()); } @@ -397,7 +381,6 @@ QDBusObjectPath QNetworkManagerInterfaceDevice::ip4config() const return prop.value(); } -///////////// class QNetworkManagerInterfaceDeviceWiredPrivate { public: @@ -411,9 +394,9 @@ QNetworkManagerInterfaceDeviceWired::QNetworkManagerInterfaceDeviceWired(const Q { d = new QNetworkManagerInterfaceDeviceWiredPrivate(); d->path = ifaceDevicePath; - d->connectionInterface = new QDBusInterface(NM_DBUS_SERVICE, + d->connectionInterface = new QDBusInterface(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_DEVICE_WIRED, + QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRED), dbusConnection, parent); if (!d->connectionInterface->isValid()) { d->valid = false; @@ -425,8 +408,6 @@ QNetworkManagerInterfaceDeviceWired::QNetworkManagerInterfaceDeviceWired(const Q QNetworkManagerInterfaceDeviceWired::~QNetworkManagerInterfaceDeviceWired() { - if (nmDBusHelper) - delete nmDBusHelper; delete d->connectionInterface; delete d; } @@ -444,16 +425,14 @@ bool QNetworkManagerInterfaceDeviceWired::setConnections() bool allOk = false; - if (nmDBusHelper) - delete nmDBusHelper; - nmDBusHelper = 0; - nmDBusHelper = new QNmDBusHelper; + delete nmDBusHelper; + nmDBusHelper = new QNmDBusHelper(this); connect(nmDBusHelper, SIGNAL(pathForPropertiesChanged(const QString &,QMap)), this,SIGNAL(propertiesChanged( const QString &, QMap))); - if(dbusConnection.connect(NM_DBUS_SERVICE, + if(dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_DEVICE_WIRED, - "PropertiesChanged", + QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRED), + QLatin1String("PropertiesChanged"), nmDBusHelper,SLOT(slotPropertiesChanged( QMap))) ) { allOk = true; } @@ -480,7 +459,6 @@ bool QNetworkManagerInterfaceDeviceWired::carrier() const return d->connectionInterface->property("Carrier").toBool(); } -///////////// class QNetworkManagerInterfaceDeviceWirelessPrivate { public: @@ -494,9 +472,9 @@ QNetworkManagerInterfaceDeviceWireless::QNetworkManagerInterfaceDeviceWireless(c { d = new QNetworkManagerInterfaceDeviceWirelessPrivate(); d->path = ifaceDevicePath; - d->connectionInterface = new QDBusInterface(NM_DBUS_SERVICE, + d->connectionInterface = new QDBusInterface(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_DEVICE_WIRELESS, + QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS), dbusConnection, parent); if (!d->connectionInterface->isValid()) { d->valid = false; @@ -508,8 +486,6 @@ QNetworkManagerInterfaceDeviceWireless::QNetworkManagerInterfaceDeviceWireless(c QNetworkManagerInterfaceDeviceWireless::~QNetworkManagerInterfaceDeviceWireless() { - if (nmDBusHelper) - delete nmDBusHelper; delete d->connectionInterface; delete d; } @@ -525,10 +501,8 @@ bool QNetworkManagerInterfaceDeviceWireless::setConnections() return false; bool allOk = false; - if (nmDBusHelper) - delete nmDBusHelper; - nmDBusHelper = 0; - nmDBusHelper = new QNmDBusHelper; + delete nmDBusHelper; + nmDBusHelper = new QNmDBusHelper(this); connect(nmDBusHelper, SIGNAL(pathForPropertiesChanged(const QString &,QMap)), this,SIGNAL(propertiesChanged( const QString &, QMap))); @@ -538,28 +512,28 @@ bool QNetworkManagerInterfaceDeviceWireless::setConnections() connect(nmDBusHelper, SIGNAL(pathForAccessPointRemoved(const QString &,QDBusObjectPath)), this,SIGNAL(accessPointRemoved(const QString &,QDBusObjectPath))); - if(!dbusConnection.connect(NM_DBUS_SERVICE, + if(!dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_DEVICE_WIRELESS, - "AccessPointAdded", + QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS), + QLatin1String("AccessPointAdded"), nmDBusHelper, SLOT(slotAccessPointAdded( QDBusObjectPath )))) { allOk = true; } - if(!dbusConnection.connect(NM_DBUS_SERVICE, + if(!dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_DEVICE_WIRELESS, - "AccessPointRemoved", + QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS), + QLatin1String("AccessPointRemoved"), nmDBusHelper, SLOT(slotAccessPointRemoved( QDBusObjectPath )))) { allOk = true; } - if(!dbusConnection.connect(NM_DBUS_SERVICE, + if(!dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_DEVICE_WIRELESS, - "PropertiesChanged", + QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS), + QLatin1String("PropertiesChanged"), nmDBusHelper,SLOT(slotPropertiesChanged( QMap)))) { allOk = true; } @@ -574,7 +548,7 @@ QDBusInterface *QNetworkManagerInterfaceDeviceWireless::connectionInterface() co QList QNetworkManagerInterfaceDeviceWireless::getAccessPoints() { - QDBusReply > reply = d->connectionInterface->call("GetAccessPoints"); + QDBusReply > reply = d->connectionInterface->call(QLatin1String("GetAccessPoints")); return reply.value(); } @@ -603,7 +577,6 @@ quint32 QNetworkManagerInterfaceDeviceWireless::wirelessCapabilities() const return d->connectionInterface->property("WirelelessCapabilities").toUInt(); } -///////////// class QNetworkManagerSettingsPrivate { public: @@ -618,8 +591,8 @@ QNetworkManagerSettings::QNetworkManagerSettings(const QString &settingsService, d = new QNetworkManagerSettingsPrivate(); d->path = settingsService; d->connectionInterface = new QDBusInterface(settingsService, - NM_DBUS_PATH_SETTINGS, - NM_DBUS_IFACE_SETTINGS, + QLatin1String(NM_DBUS_PATH_SETTINGS), + QLatin1String(NM_DBUS_IFACE_SETTINGS), dbusConnection); if (!d->connectionInterface->isValid()) { d->valid = false; @@ -644,8 +617,8 @@ bool QNetworkManagerSettings::setConnections() { bool allOk = false; - if (!dbusConnection.connect(d->path, NM_DBUS_PATH_SETTINGS, - NM_DBUS_IFACE_SETTINGS, "NewConnection", + if (!dbusConnection.connect(d->path, QLatin1String(NM_DBUS_PATH_SETTINGS), + QLatin1String(NM_DBUS_IFACE_SETTINGS), QLatin1String("NewConnection"), this, SIGNAL(newConnection(QDBusObjectPath)))) { allOk = true; } @@ -655,7 +628,7 @@ bool QNetworkManagerSettings::setConnections() QList QNetworkManagerSettings::listConnections() { - QDBusReply > reply = d->connectionInterface->call("ListConnections"); + QDBusReply > reply = d->connectionInterface->call(QLatin1String("ListConnections")); return reply.value(); } @@ -665,7 +638,6 @@ QDBusInterface *QNetworkManagerSettings::connectionInterface() const } -///////////// class QNetworkManagerSettingsConnectionPrivate { public: @@ -685,7 +657,7 @@ QNetworkManagerSettingsConnection::QNetworkManagerSettingsConnection(const QStri d->service = settingsService; d->connectionInterface = new QDBusInterface(settingsService, d->path, - NM_DBUS_IFACE_SETTINGS_CONNECTION, + QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), dbusConnection, parent); if (!d->connectionInterface->isValid()) { //qWarning() << "Could not find NetworkManagerSettingsConnection"; @@ -693,14 +665,12 @@ QNetworkManagerSettingsConnection::QNetworkManagerSettingsConnection(const QStri return; } d->valid = true; - QDBusReply< QNmSettingsMap > rep = d->connectionInterface->call("GetSettings"); + QDBusReply< QNmSettingsMap > rep = d->connectionInterface->call(QLatin1String("GetSettings")); d->settingsMap = rep.value(); } QNetworkManagerSettingsConnection::~QNetworkManagerSettingsConnection() { - if (nmDBusHelper) - delete nmDBusHelper; delete d->connectionInterface; delete d; } @@ -717,32 +687,26 @@ bool QNetworkManagerSettingsConnection::setConnections() bool allOk = false; if(!dbusConnection.connect(d->service, d->path, - NM_DBUS_IFACE_SETTINGS_CONNECTION, "Updated", + QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), QLatin1String("Updated"), this, SIGNAL(updated(QNmSettingsMap)))) { allOk = true; } else { QDBusError error = dbusConnection.lastError(); } - if (nmDBusHelper) - delete nmDBusHelper; - nmDBusHelper = 0; - nmDBusHelper = new QNmDBusHelper; + delete nmDBusHelper; + nmDBusHelper = new QNmDBusHelper(this); connect(nmDBusHelper, SIGNAL(pathForSettingsRemoved(const QString &)), this,SIGNAL(removed( const QString &))); if (!dbusConnection.connect(d->service, d->path, - NM_DBUS_IFACE_SETTINGS_CONNECTION, "Removed", + QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), QLatin1String("Removed"), nmDBusHelper, SIGNAL(slotSettingsRemoved()))) { allOk = true; } return allOk; } -//QNetworkManagerSettingsConnection::update(QNmSettingsMap map) -//{ -// d->connectionInterface->call("Update", QVariant::fromValue(map)); -//} QDBusInterface *QNetworkManagerSettingsConnection::connectionInterface() const { @@ -751,23 +715,23 @@ QDBusInterface *QNetworkManagerSettingsConnection::connectionInterface() const QNmSettingsMap QNetworkManagerSettingsConnection::getSettings() { - QDBusReply< QNmSettingsMap > rep = d->connectionInterface->call("GetSettings"); + QDBusReply< QNmSettingsMap > rep = d->connectionInterface->call(QLatin1String("GetSettings")); d->settingsMap = rep.value(); return d->settingsMap; } NMDeviceType QNetworkManagerSettingsConnection::getType() { - QNmSettingsMap::const_iterator i = d->settingsMap.find("connection"); - while (i != d->settingsMap.end() && i.key() == "connection") { + QNmSettingsMap::const_iterator i = d->settingsMap.find(QLatin1String("connection")); + while (i != d->settingsMap.end() && i.key() == QLatin1String("connection")) { QMap innerMap = i.value(); - QMap::const_iterator ii = innerMap.find("type"); - while (ii != innerMap.end() && ii.key() == "type") { + QMap::const_iterator ii = innerMap.find(QLatin1String("type")); + while (ii != innerMap.end() && ii.key() == QLatin1String("type")) { QString devType = ii.value().toString(); - if (devType == "802-3-ethernet") { + if (devType == QLatin1String("802-3-ethernet")) { return DEVICE_TYPE_802_3_ETHERNET; } - if (devType == "802-11-wireless") { + if (devType == QLatin1String("802-11-wireless")) { return DEVICE_TYPE_802_11_WIRELESS; } ii++; @@ -779,11 +743,11 @@ NMDeviceType QNetworkManagerSettingsConnection::getType() bool QNetworkManagerSettingsConnection::isAutoConnect() { - QNmSettingsMap::const_iterator i = d->settingsMap.find("connection"); - while (i != d->settingsMap.end() && i.key() == "connection") { + QNmSettingsMap::const_iterator i = d->settingsMap.find(QLatin1String("connection")); + while (i != d->settingsMap.end() && i.key() == QLatin1String("connection")) { QMap innerMap = i.value(); - QMap::const_iterator ii = innerMap.find("autoconnect"); - while (ii != innerMap.end() && ii.key() == "autoconnect") { + QMap::const_iterator ii = innerMap.find(QLatin1String("autoconnect")); + while (ii != innerMap.end() && ii.key() == QLatin1String("autoconnect")) { return ii.value().toBool(); ii++; } @@ -794,11 +758,11 @@ bool QNetworkManagerSettingsConnection::isAutoConnect() quint64 QNetworkManagerSettingsConnection::getTimestamp() { - QNmSettingsMap::const_iterator i = d->settingsMap.find("connection"); - while (i != d->settingsMap.end() && i.key() == "connection") { + QNmSettingsMap::const_iterator i = d->settingsMap.find(QLatin1String("connection")); + while (i != d->settingsMap.end() && i.key() == QLatin1String("connection")) { QMap innerMap = i.value(); - QMap::const_iterator ii = innerMap.find("timestamp"); - while (ii != innerMap.end() && ii.key() == "timestamp") { + QMap::const_iterator ii = innerMap.find(QLatin1String("timestamp")); + while (ii != innerMap.end() && ii.key() == QLatin1String("timestamp")) { return ii.value().toUInt(); ii++; } @@ -809,11 +773,11 @@ quint64 QNetworkManagerSettingsConnection::getTimestamp() QString QNetworkManagerSettingsConnection::getId() { - QNmSettingsMap::const_iterator i = d->settingsMap.find("connection"); - while (i != d->settingsMap.end() && i.key() == "connection") { + QNmSettingsMap::const_iterator i = d->settingsMap.find(QLatin1String("connection")); + while (i != d->settingsMap.end() && i.key() == QLatin1String("connection")) { QMap innerMap = i.value(); - QMap::const_iterator ii = innerMap.find("id"); - while (ii != innerMap.end() && ii.key() == "id") { + QMap::const_iterator ii = innerMap.find(QLatin1String("id")); + while (ii != innerMap.end() && ii.key() == QLatin1String("id")) { return ii.value().toString(); ii++; } @@ -824,11 +788,11 @@ QString QNetworkManagerSettingsConnection::getId() QString QNetworkManagerSettingsConnection::getUuid() { - QNmSettingsMap::const_iterator i = d->settingsMap.find("connection"); - while (i != d->settingsMap.end() && i.key() == "connection") { + QNmSettingsMap::const_iterator i = d->settingsMap.find(QLatin1String("connection")); + while (i != d->settingsMap.end() && i.key() == QLatin1String("connection")) { QMap innerMap = i.value(); - QMap::const_iterator ii = innerMap.find("uuid"); - while (ii != innerMap.end() && ii.key() == "uuid") { + QMap::const_iterator ii = innerMap.find(QLatin1String("uuid")); + while (ii != innerMap.end() && ii.key() == QLatin1String("uuid")) { return ii.value().toString(); ii++; } @@ -840,11 +804,11 @@ QString QNetworkManagerSettingsConnection::getUuid() QString QNetworkManagerSettingsConnection::getSsid() { - QNmSettingsMap::const_iterator i = d->settingsMap.find("802-11-wireless"); - while (i != d->settingsMap.end() && i.key() == "802-11-wireless") { + QNmSettingsMap::const_iterator i = d->settingsMap.find(QLatin1String("802-11-wireless")); + while (i != d->settingsMap.end() && i.key() == QLatin1String("802-11-wireless")) { QMap innerMap = i.value(); - QMap::const_iterator ii = innerMap.find("ssid"); - while (ii != innerMap.end() && ii.key() == "ssid") { + QMap::const_iterator ii = innerMap.find(QLatin1String("ssid")); + while (ii != innerMap.end() && ii.key() == QLatin1String("ssid")) { return ii.value().toString(); ii++; } @@ -856,11 +820,11 @@ QString QNetworkManagerSettingsConnection::getSsid() QString QNetworkManagerSettingsConnection::getMacAddress() { if(getType() == DEVICE_TYPE_802_3_ETHERNET) { - QNmSettingsMap::const_iterator i = d->settingsMap.find("802-3-ethernet"); - while (i != d->settingsMap.end() && i.key() == "802-3-ethernet") { + QNmSettingsMap::const_iterator i = d->settingsMap.find(QLatin1String("802-3-ethernet")); + while (i != d->settingsMap.end() && i.key() == QLatin1String("802-3-ethernet")) { QMap innerMap = i.value(); - QMap::const_iterator ii = innerMap.find("mac-address"); - while (ii != innerMap.end() && ii.key() == "mac-address") { + QMap::const_iterator ii = innerMap.find(QLatin1String("mac-address")); + while (ii != innerMap.end() && ii.key() == QLatin1String("mac-address")) { return ii.value().toString(); ii++; } @@ -869,11 +833,11 @@ QString QNetworkManagerSettingsConnection::getMacAddress() } else if(getType() == DEVICE_TYPE_802_11_WIRELESS) { - QNmSettingsMap::const_iterator i = d->settingsMap.find("802-11-wireless"); - while (i != d->settingsMap.end() && i.key() == "802-11-wireless") { + QNmSettingsMap::const_iterator i = d->settingsMap.find(QLatin1String("802-11-wireless")); + while (i != d->settingsMap.end() && i.key() == QLatin1String("802-11-wireless")) { QMap innerMap = i.value(); - QMap::const_iterator ii = innerMap.find("mac-address"); - while (ii != innerMap.end() && ii.key() == "mac-address") { + QMap::const_iterator ii = innerMap.find(QLatin1String("mac-address")); + while (ii != innerMap.end() && ii.key() == QLatin1String("mac-address")) { return ii.value().toString(); ii++; } @@ -886,11 +850,11 @@ QString QNetworkManagerSettingsConnection::getMacAddress() QStringList QNetworkManagerSettingsConnection::getSeenBssids() { if(getType() == DEVICE_TYPE_802_11_WIRELESS) { - QNmSettingsMap::const_iterator i = d->settingsMap.find("802-11-wireless"); - while (i != d->settingsMap.end() && i.key() == "802-11-wireless") { + QNmSettingsMap::const_iterator i = d->settingsMap.find(QLatin1String("802-11-wireless")); + while (i != d->settingsMap.end() && i.key() == QLatin1String("802-11-wireless")) { QMap innerMap = i.value(); - QMap::const_iterator ii = innerMap.find("seen-bssids"); - while (ii != innerMap.end() && ii.key() == "seen-bssids") { + QMap::const_iterator ii = innerMap.find(QLatin1String("seen-bssids")); + while (ii != innerMap.end() && ii.key() == QLatin1String("seen-bssids")) { return ii.value().toStringList(); ii++; } @@ -900,7 +864,6 @@ QStringList QNetworkManagerSettingsConnection::getSeenBssids() return QStringList(); } -///////////// class QNetworkManagerConnectionActivePrivate { public: @@ -914,9 +877,9 @@ QNetworkManagerConnectionActive::QNetworkManagerConnectionActive( const QString { d = new QNetworkManagerConnectionActivePrivate(); d->path = activeConnectionObjectPath; - d->connectionInterface = new QDBusInterface(NM_DBUS_SERVICE, + d->connectionInterface = new QDBusInterface(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_ACTIVE_CONNECTION, + QLatin1String(NM_DBUS_INTERFACE_ACTIVE_CONNECTION), dbusConnection, parent); if (!d->connectionInterface->isValid()) { d->valid = false; @@ -928,8 +891,6 @@ QNetworkManagerConnectionActive::QNetworkManagerConnectionActive( const QString QNetworkManagerConnectionActive::~QNetworkManagerConnectionActive() { - if (nmDBusHelper) - delete nmDBusHelper; delete d->connectionInterface; delete d; } @@ -945,16 +906,14 @@ bool QNetworkManagerConnectionActive::setConnections() return false; bool allOk = false; - if (nmDBusHelper) - delete nmDBusHelper; - nmDBusHelper = 0; - nmDBusHelper = new QNmDBusHelper; + delete nmDBusHelper; + nmDBusHelper = new QNmDBusHelper(this); connect(nmDBusHelper, SIGNAL(pathForPropertiesChanged(const QString &,QMap)), this,SIGNAL(propertiesChanged( const QString &, QMap))); - if(dbusConnection.connect(NM_DBUS_SERVICE, + if(dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_ACTIVE_CONNECTION, - "PropertiesChanged", + QLatin1String(NM_DBUS_INTERFACE_ACTIVE_CONNECTION), + QLatin1String("PropertiesChanged"), nmDBusHelper,SLOT(slotPropertiesChanged( QMap))) ) { allOk = true; } @@ -1000,8 +959,6 @@ bool QNetworkManagerConnectionActive::defaultRoute() const return d->connectionInterface->property("Default").toBool(); } - -//// class QNetworkManagerIp4ConfigPrivate { public: @@ -1015,9 +972,9 @@ QNetworkManagerIp4Config::QNetworkManagerIp4Config( const QString &deviceObjectP { d = new QNetworkManagerIp4ConfigPrivate(); d->path = deviceObjectPath; - d->connectionInterface = new QDBusInterface(NM_DBUS_SERVICE, + d->connectionInterface = new QDBusInterface(QLatin1String(NM_DBUS_SERVICE), d->path, - NM_DBUS_INTERFACE_IP4_CONFIG, + QLatin1String(NM_DBUS_INTERFACE_IP4_CONFIG), dbusConnection, parent); if (!d->connectionInterface->isValid()) { d->valid = false; diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h index 81903ec..048f628 100644 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h +++ b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h @@ -53,26 +53,87 @@ // We mean it. // -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include -#include +#include +#include +#include +#include #include "qnmdbushelper.h" +#ifndef NETWORK_MANAGER_H +typedef enum NMDeviceType +{ + DEVICE_TYPE_UNKNOWN = 0, + DEVICE_TYPE_802_3_ETHERNET, + DEVICE_TYPE_802_11_WIRELESS, + DEVICE_TYPE_GSM, + DEVICE_TYPE_CDMA +} NMDeviceType; + +typedef enum +{ + NM_DEVICE_STATE_UNKNOWN = 0, + NM_DEVICE_STATE_UNMANAGED, + NM_DEVICE_STATE_UNAVAILABLE, + NM_DEVICE_STATE_DISCONNECTED, + NM_DEVICE_STATE_PREPARE, + NM_DEVICE_STATE_CONFIG, + NM_DEVICE_STATE_NEED_AUTH, + NM_DEVICE_STATE_IP_CONFIG, + NM_DEVICE_STATE_ACTIVATED, + NM_DEVICE_STATE_FAILED +} NMDeviceState; + +typedef enum +{ + NM_ACTIVE_CONNECTION_STATE_UNKNOWN = 0, + NM_ACTIVE_CONNECTION_STATE_ACTIVATING, + NM_ACTIVE_CONNECTION_STATE_ACTIVATED +} NMActiveConnectionState; + +#define NM_DBUS_SERVICE "org.freedesktop.NetworkManager" + +#define NM_DBUS_PATH "/org/freedesktop/NetworkManager" +#define NM_DBUS_INTERFACE "org.freedesktop.NetworkManager" +#define NM_DBUS_INTERFACE_DEVICE NM_DBUS_INTERFACE ".Device" +#define NM_DBUS_INTERFACE_DEVICE_WIRED NM_DBUS_INTERFACE_DEVICE ".Wired" +#define NM_DBUS_INTERFACE_DEVICE_WIRELESS NM_DBUS_INTERFACE_DEVICE ".Wireless" +#define NM_DBUS_PATH_ACCESS_POINT NM_DBUS_PATH "/AccessPoint" +#define NM_DBUS_INTERFACE_ACCESS_POINT NM_DBUS_INTERFACE ".AccessPoint" + +#define NM_DBUS_PATH_SETTINGS "/org/freedesktop/NetworkManagerSettings" + +#define NM_DBUS_IFACE_SETTINGS_CONNECTION "org.freedesktop.NetworkManagerSettings.Connection" +#define NM_DBUS_IFACE_SETTINGS "org.freedesktop.NetworkManagerSettings" +#define NM_DBUS_INTERFACE_ACTIVE_CONNECTION NM_DBUS_INTERFACE ".Connection.Active" +#define NM_DBUS_INTERFACE_IP4_CONFIG NM_DBUS_INTERFACE ".IP4Config" + +#define NM_DBUS_SERVICE_USER_SETTINGS "org.freedesktop.NetworkManagerUserSettings" +#define NM_DBUS_SERVICE_SYSTEM_SETTINGS "org.freedesktop.NetworkManagerSystemSettings" + +#define NM_802_11_AP_FLAGS_NONE 0x00000000 +#define NM_802_11_AP_FLAGS_PRIVACY 0x00000001 +#endif + QT_BEGIN_NAMESPACE typedef QMap< QString, QMap > QNmSettingsMap; typedef QList ServerThing; -Q_DECLARE_METATYPE(QNmSettingsMap) -Q_DECLARE_METATYPE(ServerThing) +QT_END_NAMESPACE + +Q_DECLARE_METATYPE(QT_PREPEND_NAMESPACE(QNmSettingsMap)) +Q_DECLARE_METATYPE(QT_PREPEND_NAMESPACE(ServerThing)) + +QT_BEGIN_NAMESPACE class QNetworkManagerInterfacePrivate; class QNetworkManagerInterface : public QObject @@ -107,12 +168,10 @@ Q_SIGNALS: private Q_SLOTS: private: -// Q_DISABLE_COPY(QNetworkManagerInterface); ?? QNetworkManagerInterfacePrivate *d; QNmDBusHelper *nmDBusHelper; -}; //end QNetworkManagerInterface +}; -//////// class QNetworkManagerInterfaceAccessPointPrivate; class QNetworkManagerInterfaceAccessPoint : public QObject { @@ -120,7 +179,6 @@ class QNetworkManagerInterfaceAccessPoint : public QObject public: - // NM_DEVICE_STATE enum DeviceState { Unknown = 0, Unmanaged, @@ -181,9 +239,8 @@ private: QNetworkManagerInterfaceAccessPointPrivate *d; QNmDBusHelper *nmDBusHelper; -}; //end QNetworkManagerInterfaceAccessPoint +}; -//////// class QNetworkManagerInterfaceDevicePrivate; class QNetworkManagerInterfaceDevice : public QObject { @@ -195,7 +252,7 @@ public: ~QNetworkManagerInterfaceDevice(); QString udi() const; - QNetworkInterface interface() const; + QNetworkInterface networkInterface() const; QDBusInterface *connectionInterface() const; quint32 ip4Address() const; quint32 state() const; @@ -211,9 +268,8 @@ Q_SIGNALS: private: QNetworkManagerInterfaceDevicePrivate *d; QNmDBusHelper *nmDBusHelper; -}; //end QNetworkManagerInterfaceDevice +}; -//////// class QNetworkManagerInterfaceDeviceWiredPrivate; class QNetworkManagerInterfaceDeviceWired : public QObject { @@ -236,9 +292,8 @@ Q_SIGNALS: private: QNetworkManagerInterfaceDeviceWiredPrivate *d; QNmDBusHelper *nmDBusHelper; -}; // end QNetworkManagerInterfaceDeviceWired +}; -//// class QNetworkManagerInterfaceDeviceWirelessPrivate; class QNetworkManagerInterfaceDeviceWireless : public QObject { @@ -278,9 +333,8 @@ Q_SIGNALS: private: QNetworkManagerInterfaceDeviceWirelessPrivate *d; QNmDBusHelper *nmDBusHelper; -}; // end QNetworkManagerInterfaceDeviceWireless +}; -//// class QNetworkManagerSettingsPrivate; class QNetworkManagerSettings : public QObject { @@ -300,9 +354,8 @@ Q_SIGNALS: void newConnection(QDBusObjectPath); private: QNetworkManagerSettingsPrivate *d; -}; //end QNetworkManagerSettings +}; -//// class QNetworkManagerSettingsConnectionPrivate; class QNetworkManagerSettingsConnection : public QObject { @@ -315,7 +368,6 @@ public: QDBusInterface *connectionInterface() const; QNmSettingsMap getSettings(); - // void update(QNmSettingsMap map); bool setConnections(); NMDeviceType getType(); bool isAutoConnect(); @@ -335,9 +387,8 @@ Q_SIGNALS: private: QNmDBusHelper *nmDBusHelper; QNetworkManagerSettingsConnectionPrivate *d; -}; //end QNetworkManagerSettingsConnection +}; -//// class QNetworkManagerConnectionActivePrivate; class QNetworkManagerConnectionActive : public QObject { @@ -371,9 +422,8 @@ Q_SIGNALS: private: QNetworkManagerConnectionActivePrivate *d; QNmDBusHelper *nmDBusHelper; -}; //QNetworkManagerConnectionActive +}; -//// class QNetworkManagerIp4ConfigPrivate; class QNetworkManagerIp4Config : public QObject { @@ -383,14 +433,12 @@ public: QNetworkManagerIp4Config(const QString &dbusPathName, QObject *parent = 0); ~QNetworkManagerIp4Config(); - // QList nameservers(); QStringList domains() const; bool isValid(); private: QNetworkManagerIp4ConfigPrivate *d; }; -//// QT_END_NAMESPACE diff --git a/src/plugins/bearer/networkmanager/qnmdbushelper.cpp b/src/plugins/bearer/networkmanager/qnmdbushelper.cpp index d5e20f3..e195eeb 100644 --- a/src/plugins/bearer/networkmanager/qnmdbushelper.cpp +++ b/src/plugins/bearer/networkmanager/qnmdbushelper.cpp @@ -43,7 +43,7 @@ #include "qnmdbushelper.h" -#include +#include "qnetworkmanagerservice.h" #include #include @@ -54,6 +54,15 @@ QT_BEGIN_NAMESPACE +QNmDBusHelper::QNmDBusHelper(QObject * parent) + : QObject(parent) +{ +} + +QNmDBusHelper::~QNmDBusHelper() +{ +} + void QNmDBusHelper::deviceStateChanged(quint32 state) { QDBusMessage msg = this->message(); diff --git a/src/plugins/bearer/networkmanager/qnmdbushelper.h b/src/plugins/bearer/networkmanager/qnmdbushelper.h index 862290c..933d55a 100644 --- a/src/plugins/bearer/networkmanager/qnmdbushelper.h +++ b/src/plugins/bearer/networkmanager/qnmdbushelper.h @@ -52,6 +52,8 @@ class QNmDBusHelper: public QObject, protected QDBusContext { Q_OBJECT public: + QNmDBusHelper(QObject *parent = 0); + ~QNmDBusHelper(); public slots: void deviceStateChanged(quint32); diff --git a/src/plugins/bearer/qnetworksession_impl.cpp b/src/plugins/bearer/qnetworksession_impl.cpp index f41fdba..5f03893 100644 --- a/src/plugins/bearer/qnetworksession_impl.cpp +++ b/src/plugins/bearer/qnetworksession_impl.cpp @@ -147,6 +147,8 @@ void QNetworkSessionPrivateImpl::open() if ((activeConfig.state() & QNetworkConfiguration::Discovered) != QNetworkConfiguration::Discovered) { lastError =QNetworkSession::InvalidConfigurationError; + state = QNetworkSession::Invalid; + emit stateChanged(state); emit QNetworkSessionPrivate::error(lastError); return; } @@ -400,7 +402,6 @@ void QNetworkSessionPrivateImpl::connectionError(const QString &id, lastError = QNetworkSession::UnknownSessionError; } - emit quitPendingWaitsForOpened(); emit QNetworkSessionPrivate::error(lastError); } } diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.cpp b/src/plugins/bearer/symbian/qnetworksession_impl.cpp index 9af1fe9..bec562d 100644 --- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp +++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp @@ -141,7 +141,10 @@ void QNetworkSessionPrivateImpl::syncStateWithInterface() if (state != QNetworkSession::Connected) { // There were no open connections to used IAP or SNAP - if ((privateConfiguration(publicConfig)->state & QNetworkConfiguration::Discovered) == + if (iError == QNetworkSession::InvalidConfigurationError) { + newState(QNetworkSession::Invalid); + } + else if ((privateConfiguration(publicConfig)->state & QNetworkConfiguration::Discovered) == QNetworkConfiguration::Discovered) { newState(QNetworkSession::Disconnected); } else { @@ -231,13 +234,23 @@ QNetworkSession::SessionError QNetworkSessionPrivateImpl::error() const void QNetworkSessionPrivateImpl::open() { - if (isOpen || !privateConfiguration(publicConfig) || (state == QNetworkSession::Connecting)) { + if (isOpen || (state == QNetworkSession::Connecting)) { return; } // Cancel notifications from RConnectionMonitor // => RConnection::ProgressNotification will be used for IAP/SNAP monitoring iConnectionMonitor.CancelNotifications(); + + // Configuration must be at least in Discovered - state for connecting purposes. + if ((publicConfig.state() & QNetworkConfiguration::Discovered) != + QNetworkConfiguration::Discovered) { + newState(QNetworkSession::Invalid); + iError = QNetworkSession::InvalidConfigurationError; + emit QNetworkSessionPrivate::error(iError); + syncStateWithInterface(); + return; + } TInt error = iSocketServ.Connect(); if (error != KErrNone) { diff --git a/src/plugins/bearer/symbian/symbianengine.cpp b/src/plugins/bearer/symbian/symbianengine.cpp index b3c9cb3..88a563c 100644 --- a/src/plugins/bearer/symbian/symbianengine.cpp +++ b/src/plugins/bearer/symbian/symbianengine.cpp @@ -98,7 +98,7 @@ QString SymbianNetworkConfigurationPrivate::bearerName() const } SymbianEngine::SymbianEngine(QObject *parent) -: QBearerEngine(parent), CActive(CActive::EPriorityIdle), iInitOk(true) +: QBearerEngine(parent), CActive(CActive::EPriorityIdle), iFirstUpdate(true), iInitOk(true) { CActiveScheduler::Add(this); @@ -136,9 +136,12 @@ SymbianEngine::SymbianEngine(QObject *parent) updateConfigurations(); updateStatesToSnaps(); + + updateAvailableAccessPoints(); // On first time updates synchronously (without WLAN scans) // Start monitoring IAP and/or SNAP changes in Symbian CommsDB startCommsDatabaseNotifications(); + iFirstUpdate = false; } SymbianEngine::~SymbianEngine() @@ -153,7 +156,14 @@ SymbianEngine::~SymbianEngine() #endif delete ipAccessPointsAvailabilityScanner; + + // CCommsDatabase destructor uses cleanup stack. Since QNetworkConfigurationManager + // is a global static, but the time we are here, E32Main() has been exited already and + // the thread's default cleanup stack has been deleted. Without this line, a + // 'E32USER-CBase 69' -panic will occur. + CTrapCleanup* cleanup = CTrapCleanup::New(); delete ipCommsDB; + delete cleanup; } bool SymbianEngine::hasIdentifier(const QString &id) @@ -692,9 +702,10 @@ void SymbianEngine::accessPointScanningReady(TBool scanSuccessful, TConnMonIapIn updateStatesToSnaps(); - startCommsDatabaseNotifications(); - - emit updateCompleted(); + if (!iFirstUpdate) { + startCommsDatabaseNotifications(); + emit updateCompleted(); + } } void SymbianEngine::updateStatesToSnaps() @@ -987,11 +998,22 @@ void AccessPointsAvailabilityScanner::DoCancel() void AccessPointsAvailabilityScanner::StartScanning() { - iConnectionMonitor.GetPckgAttribute(EBearerIdAll, 0, KIapAvailability, iIapBuf, iStatus); - if (!IsActive()) { - SetActive(); + if (iOwner.iFirstUpdate) { + // On first update (the mgr is being instantiated) update only those bearers who + // don't need time-consuming scans (WLAN). + // Note: EBearerIdWCDMA covers also GPRS bearer + iConnectionMonitor.GetPckgAttribute(EBearerIdWCDMA, 0, KIapAvailability, iIapBuf, iStatus); + User::WaitForRequest(iStatus); + if (iStatus.Int() == KErrNone) { + iOwner.accessPointScanningReady(true,iIapBuf()); + } + } else { + iConnectionMonitor.GetPckgAttribute(EBearerIdAll, 0, KIapAvailability, iIapBuf, iStatus); + if (!IsActive()) { + SetActive(); + } } -} +} void AccessPointsAvailabilityScanner::RunL() { diff --git a/src/plugins/bearer/symbian/symbianengine.h b/src/plugins/bearer/symbian/symbianengine.h index 5448813..ee6d070 100644 --- a/src/plugins/bearer/symbian/symbianengine.h +++ b/src/plugins/bearer/symbian/symbianengine.h @@ -162,6 +162,7 @@ private: // MConnectionMonitorObserver void EventL(const CConnMonEventBase& aEvent); private: // Data + bool iFirstUpdate; CCommsDatabase* ipCommsDB; RConnectionMonitor iConnectionMonitor; diff --git a/tests/auto/qbearertestcommon.h b/tests/auto/qbearertestcommon.h index 0bfe622..c9df249 100644 --- a/tests/auto/qbearertestcommon.h +++ b/tests/auto/qbearertestcommon.h @@ -42,6 +42,19 @@ #ifndef QBEARERTESTCOMMON_H #define QBEARERTESTCOMMON_H +// Wait for __expr to happen, while still allowing events to be processed. +#define QTRY_NOOP(__expr) \ + do { \ + const int __step = 50; \ + const int __timeout = 15000; \ + if (!(__expr)) { \ + QTest::qWait(0); \ + } \ + for (int __i = 0; __i < __timeout && !(__expr); __i+=__step) { \ + QTest::qWait(__step); \ + } \ + } while(0) + // Will try to wait for the condition while allowing event processing #define QTRY_VERIFY(__expr) \ do { \ diff --git a/tests/auto/qnetworksession/lackey/main.cpp b/tests/auto/qnetworksession/lackey/main.cpp index 41e935a..66d6dd4 100644 --- a/tests/auto/qnetworksession/lackey/main.cpp +++ b/tests/auto/qnetworksession/lackey/main.cpp @@ -69,14 +69,15 @@ int main(int argc, char** argv) QNetworkConfigurationManager manager; QList discovered = -#if defined (Q_OS_SYMBIAN) - // On Symbian, on the first query (before updateConfigurations() call - // the discovered-states are not correct, so defined-state will do. - manager.allConfigurations(QNetworkConfiguration::Defined); -#else manager.allConfigurations(QNetworkConfiguration::Discovered); -#endif + + foreach(QNetworkConfiguration config, discovered) { + qDebug() << "Lackey: Name of the config enumerated: " << config.name(); + qDebug() << "Lackey: State of the config enumerated: " << config.state(); + } + if (discovered.isEmpty()) { + qDebug("Lackey: no discovered configurations, returning empty error."); return NO_DISCOVERED_CONFIGURATIONS_ERROR; } diff --git a/tests/auto/qnetworksession/test/tst_qnetworksession.cpp b/tests/auto/qnetworksession/test/tst_qnetworksession.cpp index 4ef3a4f..58b1a48 100644 --- a/tests/auto/qnetworksession/test/tst_qnetworksession.cpp +++ b/tests/auto/qnetworksession/test/tst_qnetworksession.cpp @@ -54,6 +54,7 @@ QT_USE_NAMESPACE Q_DECLARE_METATYPE(QNetworkConfiguration) +Q_DECLARE_METATYPE(QNetworkConfiguration::Type); Q_DECLARE_METATYPE(QNetworkSession::State); Q_DECLARE_METATYPE(QNetworkSession::SessionError); @@ -70,6 +71,11 @@ private slots: void outOfProcessSession(); void invalidSession(); + void repeatedOpenClose_data(); + void repeatedOpenClose(); + + void roamingErrorCodes(); + void sessionProperties_data(); void sessionProperties(); @@ -94,11 +100,17 @@ private: #endif }; +// Helper functions +bool openSession(QNetworkSession *session); +bool closeSession(QNetworkSession *session, bool lastSessionOnConfiguration = true); +QNetworkConfiguration suitableConfiguration(QString bearerType, QNetworkConfiguration::Type configType); + void tst_QNetworkSession::initTestCase() { qRegisterMetaType("QNetworkSession::State"); qRegisterMetaType("QNetworkSession::SessionError"); qRegisterMetaType("QNetworkConfiguration"); + qRegisterMetaType("QNetworkConfiguration::Type"); #ifdef Q_WS_MAEMO_6 iapconf = new Maemo::IAPConf("007"); @@ -211,9 +223,42 @@ void tst_QNetworkSession::cleanupTestCase() void tst_QNetworkSession::invalidSession() { + // Verify that session created with invalid configuration remains in invalid state QNetworkSession session(QNetworkConfiguration(), 0); QVERIFY(!session.isOpen()); QVERIFY(session.state() == QNetworkSession::Invalid); + QVERIFY(session.error() == QNetworkSession::InvalidConfigurationError); + + // Verify that opening session with invalid configuration both 1) emits invalidconfigurationerror + // and 2) sets session's state as invalid. + QSignalSpy errorSpy(&session, SIGNAL(error(QNetworkSession::SessionError))); + session.open(); + session.waitForOpened(1000); // Should bail out right away + QVERIFY(errorSpy.count() == 1); + QNetworkSession::SessionError error = + qvariant_cast (errorSpy.first().at(0)); + QVERIFY(error == QNetworkSession::InvalidConfigurationError); + QVERIFY(session.error() == QNetworkSession::InvalidConfigurationError); + QVERIFY(session.state() == QNetworkSession::Invalid); + + // Check same thing with a config from platform (there are subtle differences + // because emtpy configuration does not have private pointer). Test with config + // in '(un)defined' state + QList allConfigs = manager.allConfigurations(); + foreach(QNetworkConfiguration config, allConfigs) { + if ((config.state() & QNetworkConfiguration::Discovered) != QNetworkConfiguration::Discovered) { + QNetworkSession session2(config); + QSignalSpy errorSpy2(&session2, SIGNAL(error(QNetworkSession::SessionError))); + session2.open(); + session2.waitForOpened(1000); // Should bail out right away + QVERIFY(errorSpy2.count() == 1); + QNetworkSession::SessionError error2 = + qvariant_cast (errorSpy2.first().at(0)); + QVERIFY(error2 == QNetworkSession::InvalidConfigurationError); + QVERIFY(session2.state() == QNetworkSession::Invalid); + break; // Once is enough + } + } } void tst_QNetworkSession::sessionProperties_data() @@ -300,6 +345,100 @@ void tst_QNetworkSession::sessionProperties() } } +void tst_QNetworkSession::repeatedOpenClose_data() { + QTest::addColumn("bearerType"); + QTest::addColumn("configurationType"); + QTest::addColumn("repeatTimes"); + + QTest::newRow("WLAN_IAP") << "WLAN" << QNetworkConfiguration::InternetAccessPoint << 3; + // QTest::newRow("Cellular_IAP") << "cellular" << QNetworkConfiguration::InternetAccessPoint << 3; + // QTest::newRow("SNAP") << "bearer_type_not_relevant_with_SNAPs" << QNetworkConfiguration::ServiceNetwork << 3; +} + +// Tests repeated-open close. +void tst_QNetworkSession::repeatedOpenClose() { + QFETCH(QString, bearerType); + QFETCH(QNetworkConfiguration::Type, configurationType); + QFETCH(int, repeatTimes); + + // First check that opening once succeeds and determine if repeatable testing is doable + QNetworkConfiguration config = suitableConfiguration(bearerType, configurationType); + if (!config.isValid()) { + QSKIP("No suitable configurations, skipping this round of repeated open-close test.", SkipSingle); + } + qDebug() << "Using following configuratio to repeatedly open and close: " << config.name(); + QNetworkSession permanentSession(config); + if (!openSession(&permanentSession) || + !closeSession(&permanentSession)) { + QSKIP("Unable to open/close session, skipping this round of repeated open-close test.", SkipSingle); + } + for (int i = repeatTimes; i > 0; i--) { + QVERIFY(openSession(&permanentSession)); + QVERIFY(closeSession(&permanentSession)); + } +} + +void tst_QNetworkSession::roamingErrorCodes() { + +#ifndef Q_OS_SYMBIAN + QSKIP("Roaming supported on Symbian.", SkipAll); +#else + QNetworkConfiguration wlanIapConfig = suitableConfiguration("WLAN", QNetworkConfiguration::InternetAccessPoint); + if (!wlanIapConfig.isValid()) { + QSKIP("No WLAN IAP accessible, skipping test.", SkipAll); + } + // Check that opening and closing two sessions on same config work gracefully: + QNetworkSession iapSession(wlanIapConfig); + QVERIFY(openSession(&iapSession)); + QNetworkSession adminIapSession(wlanIapConfig); + QVERIFY(openSession(&adminIapSession)); + QVERIFY(closeSession(&iapSession, false)); // false == not a last session based on the configuration + QVERIFY(closeSession(&adminIapSession)); + + // Open configurations again, force close bearer and check that errors are emitted correctly + // on the other session + QVERIFY(openSession(&iapSession)); + QVERIFY(openSession(&adminIapSession)); + QSignalSpy errorSpy(&iapSession, SIGNAL(error(QNetworkSession::SessionError))); + adminIapSession.stop(); // requires NetworkControl capabilities + QTRY_VERIFY(!errorSpy.isEmpty()); // wait for error signals + QNetworkSession::SessionError error = qvariant_cast(errorSpy.first().at(0)); + QVERIFY(error == QNetworkSession::SessionAbortedError); + QVERIFY(iapSession.state() == QNetworkSession::Disconnected); + QVERIFY(adminIapSession.state() == QNetworkSession::Disconnected); +#endif // Q_OS_SYMBIAN + /* + // Check for roaming error. Challenging to automate, therefore commented out. + // Case requires that you have controllable WLAN in Internet SNAP (only). + QNetworkConfiguration snapConfig = suitableConfiguration("bearer_not_relevant_with_snaps", QNetworkConfiguration::ServiceNetwork); + if (!snapConfig.isValid()) { + QSKIP("No SNAP accessible, skipping test.", SkipAll); + } + QNetworkSession snapSession(snapConfig); + QVERIFY(openSession(&snapSession)); + QSignalSpy errorSpySnap(&snapSession, SIGNAL(error(QNetworkSession::SessionError))); + qDebug("Disconnect the WLAN now"); + QTRY_VERIFY(!errorSpySnap.isEmpty()); // wait for error signals + QVERIFY(errorSpySnap.count() == 1); + error = qvariant_cast(errorSpySnap.first().at(0)); + qDebug() << "Error received when turning off wlan on SNAP: " << error; + QVERIFY(error == QNetworkSession::RoamingError); + + qDebug("Connect the WLAN now"); + QTest::qWait(60000); // Wait for WLAN to get up + QNetworkConfiguration wlanIapConfig2 = suitableConfiguration("WLAN", QNetworkConfiguration::InternetAccessPoint); + QNetworkSession iapSession2(wlanIapConfig2); + QVERIFY(openSession(&iapSession2)); + QSignalSpy errorSpy2(&iapSession2, SIGNAL(error(QNetworkSession::SessionError))); + qDebug("Disconnect the WLAN now"); + QTRY_VERIFY(!errorSpy2.isEmpty()); // wait for error signals + QVERIFY(errorSpy2.count() == 1); + error = qvariant_cast(errorSpy2.first().at(0)); + QVERIFY(error == QNetworkSession::SessionAbortedError); + QVERIFY(iapSession2.state() == QNetworkSession::Disconnected); + */ +} + void tst_QNetworkSession::userChoiceSession_data() { QTest::addColumn("configuration"); @@ -810,7 +949,7 @@ QDebug operator<<(QDebug debug, const QList &list) } // Note: outOfProcessSession requires that at least one configuration is -// at Discovered -state (Defined is ok for symbian as well, as long as it is possible to open). +// at Discovered -state. void tst_QNetworkSession::outOfProcessSession() { qDebug() << "START"; @@ -913,6 +1052,158 @@ void tst_QNetworkSession::outOfProcessSession() qDebug("STOP"); } +// A convinience / helper function for testcases. Return the first matching configuration. +// Ignores configurations in other than 'discovered' -state. Returns invalid (QNetworkConfiguration()) +// if none found. +QNetworkConfiguration suitableConfiguration(QString bearerType, QNetworkConfiguration::Type configType) { + // Refresh configurations and derive configurations matching given parameters. + QNetworkConfigurationManager mgr; + QSignalSpy updateSpy(&mgr, SIGNAL(updateCompleted())); + mgr.updateConfigurations(); + QTRY_NOOP(updateSpy.count() == 1); + if (updateSpy.count() != 1) { + qDebug("tst_QNetworkSession::suitableConfiguration() failure: unable to update configurations"); + return QNetworkConfiguration(); + } + QList discoveredConfigs = mgr.allConfigurations(QNetworkConfiguration::Discovered); + foreach(QNetworkConfiguration config, discoveredConfigs) { + if ((config.state() & QNetworkConfiguration::Active) == QNetworkConfiguration::Active) { + // qDebug() << "Dumping config because is active: " << config.name(); + discoveredConfigs.removeOne(config); + } else if (config.type() != configType) { + // qDebug() << "Dumping config because type (IAP/SNAP) mismatches: " << config.name(); + discoveredConfigs.removeOne(config); + } else if ((config.type() == QNetworkConfiguration::InternetAccessPoint) && + bearerType == "cellular") { // 'cellular' bearertype is for convinience + if (config.bearerName() != "2G" && + config.bearerName() != "CDMA2000" && + config.bearerName() != "WCDMA" && + config.bearerName() != "HSPA") { + // qDebug() << "Dumping config because bearer mismatches (cellular): " << config.name(); + discoveredConfigs.removeOne(config); + } + } else if ((config.type() == QNetworkConfiguration::InternetAccessPoint) && + bearerType != config.bearerName()) { + // qDebug() << "Dumping config because bearer mismatches (WLAN): " << config.name(); + discoveredConfigs.removeOne(config); + } + } + if (discoveredConfigs.isEmpty()) { + qDebug("tst_QNetworkSession::suitableConfiguration() failure: no suitable configurations present."); + return QNetworkConfiguration(); + } else { + return discoveredConfigs.first(); + } +} + +// A convinience function for test-cases: opens the given configuration and return +// true if it was done gracefully. +bool openSession(QNetworkSession *session) { + QNetworkConfigurationManager mgr; + QSignalSpy openedSpy(session, SIGNAL(opened())); + QSignalSpy stateChangeSpy(session, SIGNAL(stateChanged(QNetworkSession::State))); + QSignalSpy errorSpy(session, SIGNAL(error(QNetworkSession::SessionError))); + QSignalSpy configChangeSpy(&mgr, SIGNAL(configurationChanged(QNetworkConfiguration))); + // Store some initial statuses, because expected signals differ if the config is already + // active by some other session + QNetworkConfiguration::StateFlags configInitState = session->configuration().state(); + QNetworkSession::State sessionInitState = session->state(); + + if (session->isOpen() || + !session->sessionProperty("ActiveConfiguration").toString().isEmpty()) { + qDebug("tst_QNetworkSession::openSession() failure: session was already open / active."); + return false; + } else { + session->open(); + session->waitForOpened(120000); // Bringing interfaces up and down may take time at platform + } + // Check that connection opening went by the book. Add checks here if more strictness needed. + if (!session->isOpen()) { + qDebug("tst_QNetworkSession::openSession() failure: QNetworkSession::open() failed."); + return false; + } + if (openedSpy.count() != 1) { + qDebug("tst_QNetworkSession::openSession() failure: QNetworkSession::opened() - signal not received."); + return false; + } + if (!errorSpy.isEmpty()) { + qDebug("tst_QNetworkSession::openSession() failure: QNetworkSession::error() - signal was detected."); + return false; + } + if (sessionInitState != QNetworkSession::Connected && + stateChangeSpy.isEmpty()) { + qDebug("tst_QNetworkSession::openSession() failure: QNetworkSession::stateChanged() - signals not detected."); + return false; + } + if (configInitState != QNetworkConfiguration::Active && + configChangeSpy.isEmpty()) { + qDebug("tst_QNetworkSession::openSession() failure: QNetworkConfigurationManager::configurationChanged() - signals not detected."); + return false; + } + if (session->configuration().state() != QNetworkConfiguration::Active) { + qDebug("tst_QNetworkSession::openSession() failure: session's configuration is not in 'Active' -state."); + return false; + } + return true; +} + +// Helper function for closing opened session. Performs checks that +// session is closed gradefully (e.g. signals). Function does not delete +// the session. The lastSessionOnConfiguration (true by default) is used to +// tell if there are more sessions open, basing on same configration. This +// impacts the checks made. +bool closeSession(QNetworkSession *session, bool lastSessionOnConfiguration) { + if (!session) { + qDebug("tst_QNetworkSession::closeSession() failure: NULL session given"); + return false; + } + if (session->state() != QNetworkSession::Connected || + !session->isOpen()) { + qDebug("tst_QNetworkSession::closeSession() failure: session is not opened."); + return false; + } + QNetworkConfigurationManager mgr; + QSignalSpy sessionClosedSpy(session, SIGNAL(closed())); + QSignalSpy sessionStateChangedSpy(session, SIGNAL(stateChanged(QNetworkSession::State))); + QSignalSpy sessionErrorSpy(session, SIGNAL(error(QNetworkSession::SessionError))); + QSignalSpy configChangeSpy(&mgr, SIGNAL(configurationChanged(QNetworkConfiguration))); + + session->close(); + + if (!sessionErrorSpy.isEmpty()) { + qDebug("tst_QNetworkSession::closeSession() failure: QNetworkSession::error() received."); + return false; + } + if (sessionClosedSpy.count() != 1) { + qDebug("tst_QNetworkSession::closeSession() failure: QNetworkSession::closed() signal not received."); + return false; + } + if (lastSessionOnConfiguration && + sessionStateChangedSpy.isEmpty()) { + qDebug("tst_QNetworkSession::closeSession() failure: QNetworkSession::stateChanged() signals not received."); + return false; + } + if (lastSessionOnConfiguration && + session->state() != QNetworkSession::Disconnected) { + qDebug("tst_QNetworkSession::closeSession() failure: QNetworkSession is not in Disconnected -state"); + return false; + } + QTRY_NOOP(!configChangeSpy.isEmpty()); + if (lastSessionOnConfiguration && + configChangeSpy.isEmpty()) { + qDebug("tst_QNetworkSession::closeSession() failure: QNetworkConfigurationManager::configurationChanged() - signal not detected."); + return false; + } + if (lastSessionOnConfiguration && + session->configuration().state() != QNetworkConfiguration::Discovered) { + qDebug("tst_QNetworkSession::closeSession() failure: session's configuration is not back in 'Discovered' -state."); + return false; + } + return true; +} + + + QTEST_MAIN(tst_QNetworkSession) #include "tst_qnetworksession.moc" -- cgit v0.12 From c139d16df004721894c08e2c86ab2b3078c1d170 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Tue, 2 Mar 2010 15:47:19 +1000 Subject: missed file --- .../declarative/qdeclarativewebview/data/forward.png | Bin 0 -> 2377 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativewebview/data/forward.png diff --git a/tests/auto/declarative/qdeclarativewebview/data/forward.png b/tests/auto/declarative/qdeclarativewebview/data/forward.png new file mode 100644 index 0000000..a82533e Binary files /dev/null and b/tests/auto/declarative/qdeclarativewebview/data/forward.png differ -- cgit v0.12 From 26e6b837ceb90ed3d0df63b39a1cd0ec4dc7aeae Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Tue, 2 Mar 2010 15:54:14 +1000 Subject: follow syntax change --- demos/declarative/webbrowser/content/fieldtext/FieldText.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demos/declarative/webbrowser/content/fieldtext/FieldText.qml b/demos/declarative/webbrowser/content/fieldtext/FieldText.qml index 19b6acc..d282209 100644 --- a/demos/declarative/webbrowser/content/fieldtext/FieldText.qml +++ b/demos/declarative/webbrowser/content/fieldtext/FieldText.qml @@ -85,7 +85,7 @@ Item { font.bold: true text: label opacity: textEdit.text == '' ? 1 : 0 - opacity: Behavior { + Behavior on opacity { NumberAnimation { property: "opacity" duration: 250 -- cgit v0.12 From feb79bba984520fa30bad83eb4a6f34cfb86a697 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Tue, 2 Mar 2010 15:55:06 +1000 Subject: Move WebView to an extension plugin. Using WebView now requires: import org.webkit 1.0 Task-number: QT-2995 --- demos/declarative/flickr/common/ImageDetails.qml | 1 + .../webbrowser/content/FlickableWebView.qml | 1 + demos/declarative/webbrowser/webbrowser.qml | 1 + examples/declarative/webview/autosize.qml | 1 + examples/declarative/webview/content/FieldText.qml | 2 +- .../declarative/webview/content/Mapping/Map.qml | 1 + examples/declarative/webview/evalandattach.qml | 1 + examples/declarative/webview/googleMaps.qml | 1 + examples/declarative/webview/inline-html.qml | 1 + examples/declarative/webview/newwindows.qml | 1 + .../declarative/webview/qdeclarative-in-html.qml | 1 + examples/declarative/webview/transparent.qml | 1 + imports/org/webkit/qmldir | 1 + src/declarative/graphicsitems/graphicsitems.pri | 7 - .../graphicsitems/qdeclarativeitemsmodule.cpp | 3 - .../graphicsitems/qdeclarativewebview.cpp | 1338 ------------------- .../graphicsitems/qdeclarativewebview_p.h | 286 ----- .../graphicsitems/qdeclarativewebview_p_p.h | 151 --- .../qdeclarativemodules/qdeclarativemodules.pro | 1 + .../qdeclarativemodules/webkitqmlplugin/plugin.cpp | 66 + .../webkitqmlplugin/qdeclarativewebview.cpp | 1340 ++++++++++++++++++++ .../webkitqmlplugin/qdeclarativewebview_p.h | 285 +++++ .../webkitqmlplugin/qdeclarativewebview_p_p.h | 151 +++ .../webkitqmlplugin/webkitqmlplugin.pro | 18 + .../declarative/qdeclarativewebview/data/basic.qml | 1 + .../qdeclarativewebview/data/elements.qml | 1 + .../qdeclarativewebview/data/javaScript.qml | 1 + .../qdeclarativewebview/data/loadError.qml | 1 + .../qdeclarativewebview/data/newwindows.qml | 1 + .../qdeclarativewebview/data/propertychanges.qml | 3 +- .../qdeclarativewebview/data/sethtml.qml | 1 + .../qdeclarativewebview/qdeclarativewebview.pro | 3 +- .../declarative/qdeclarativewebview/testtypes.cpp | 52 - .../declarative/qdeclarativewebview/testtypes.h | 66 - .../tst_qdeclarativewebview.cpp | 346 ++--- .../visual/qfxwebview/autosize/autosize.qml | 1 + .../visual/webview/embedding/nesting.qml | 1 + .../webview/javascript/evaluateJavaScript.qml | 1 + .../visual/webview/javascript/windowObjects.qml | 1 + .../visual/webview/settings/fontFamily.qml | 1 + .../visual/webview/settings/fontSize.qml | 1 + .../visual/webview/settings/noAutoLoadImages.qml | 1 + .../visual/webview/settings/setFontFamily.qml | 1 + .../visual/webview/zooming/pageWidth.qml | 1 + .../visual/webview/zooming/renderControl.qml | 1 + .../visual/webview/zooming/resolution.qml | 1 + .../visual/webview/zooming/zoomTextOnly.qml | 1 + .../declarative/visual/webview/zooming/zooming.qml | 1 + 48 files changed, 2072 insertions(+), 2077 deletions(-) create mode 100644 imports/org/webkit/qmldir delete mode 100644 src/declarative/graphicsitems/qdeclarativewebview.cpp delete mode 100644 src/declarative/graphicsitems/qdeclarativewebview_p.h delete mode 100644 src/declarative/graphicsitems/qdeclarativewebview_p_p.h create mode 100644 src/plugins/qdeclarativemodules/webkitqmlplugin/plugin.cpp create mode 100644 src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview.cpp create mode 100644 src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p.h create mode 100644 src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p_p.h create mode 100644 src/plugins/qdeclarativemodules/webkitqmlplugin/webkitqmlplugin.pro delete mode 100644 tests/auto/declarative/qdeclarativewebview/testtypes.cpp delete mode 100644 tests/auto/declarative/qdeclarativewebview/testtypes.h diff --git a/demos/declarative/flickr/common/ImageDetails.qml b/demos/declarative/flickr/common/ImageDetails.qml index 9604f10..862eeb1 100644 --- a/demos/declarative/flickr/common/ImageDetails.qml +++ b/demos/declarative/flickr/common/ImageDetails.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 Flipable { id: container diff --git a/demos/declarative/webbrowser/content/FlickableWebView.qml b/demos/declarative/webbrowser/content/FlickableWebView.qml index 76a5813..cf4c825 100644 --- a/demos/declarative/webbrowser/content/FlickableWebView.qml +++ b/demos/declarative/webbrowser/content/FlickableWebView.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 Flickable { property alias title: webView.title diff --git a/demos/declarative/webbrowser/webbrowser.qml b/demos/declarative/webbrowser/webbrowser.qml index 6a427f4..b6cccb0 100644 --- a/demos/declarative/webbrowser/webbrowser.qml +++ b/demos/declarative/webbrowser/webbrowser.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 import "content" diff --git a/examples/declarative/webview/autosize.qml b/examples/declarative/webview/autosize.qml index 74c6844..3c00ee6 100644 --- a/examples/declarative/webview/autosize.qml +++ b/examples/declarative/webview/autosize.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 // The WebView size is determined by the width, height, // preferredWidth, and preferredHeight properties. diff --git a/examples/declarative/webview/content/FieldText.qml b/examples/declarative/webview/content/FieldText.qml index 19b6acc..d282209 100644 --- a/examples/declarative/webview/content/FieldText.qml +++ b/examples/declarative/webview/content/FieldText.qml @@ -85,7 +85,7 @@ Item { font.bold: true text: label opacity: textEdit.text == '' ? 1 : 0 - opacity: Behavior { + Behavior on opacity { NumberAnimation { property: "opacity" duration: 250 diff --git a/examples/declarative/webview/content/Mapping/Map.qml b/examples/declarative/webview/content/Mapping/Map.qml index 2e98940..6c3b021 100644 --- a/examples/declarative/webview/content/Mapping/Map.qml +++ b/examples/declarative/webview/content/Mapping/Map.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 Item { id: page diff --git a/examples/declarative/webview/evalandattach.qml b/examples/declarative/webview/evalandattach.qml index 94301cd..d219d84 100644 --- a/examples/declarative/webview/evalandattach.qml +++ b/examples/declarative/webview/evalandattach.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 Item { height: 640 diff --git a/examples/declarative/webview/googleMaps.qml b/examples/declarative/webview/googleMaps.qml index 1886961..a04fecb 100644 --- a/examples/declarative/webview/googleMaps.qml +++ b/examples/declarative/webview/googleMaps.qml @@ -6,6 +6,7 @@ // order to create a Map. import Qt 4.6 +import org.webkit 1.0 import "content/Mapping" Map { diff --git a/examples/declarative/webview/inline-html.qml b/examples/declarative/webview/inline-html.qml index 23b4555..41dfec3 100644 --- a/examples/declarative/webview/inline-html.qml +++ b/examples/declarative/webview/inline-html.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 // Inline HTML with loose formatting can be // set on the html property. diff --git a/examples/declarative/webview/newwindows.qml b/examples/declarative/webview/newwindows.qml index 5dd4cd5..c62aba6 100644 --- a/examples/declarative/webview/newwindows.qml +++ b/examples/declarative/webview/newwindows.qml @@ -4,6 +4,7 @@ // allow it on WebView with settings.javascriptCanOpenWindows: true import Qt 4.6 +import org.webkit 1.0 Grid { columns: 3 diff --git a/examples/declarative/webview/qdeclarative-in-html.qml b/examples/declarative/webview/qdeclarative-in-html.qml index 77180ec..172ea4b 100644 --- a/examples/declarative/webview/qdeclarative-in-html.qml +++ b/examples/declarative/webview/qdeclarative-in-html.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 // The WebView supports QML data through the HTML OBJECT tag Rectangle { diff --git a/examples/declarative/webview/transparent.qml b/examples/declarative/webview/transparent.qml index 9332f3e..5530819 100644 --- a/examples/declarative/webview/transparent.qml +++ b/examples/declarative/webview/transparent.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 // The WebView background is transparent // if the HTML does not specify a background diff --git a/imports/org/webkit/qmldir b/imports/org/webkit/qmldir new file mode 100644 index 0000000..258aa2c --- /dev/null +++ b/imports/org/webkit/qmldir @@ -0,0 +1 @@ +plugin webkitqmlplugin diff --git a/src/declarative/graphicsitems/graphicsitems.pri b/src/declarative/graphicsitems/graphicsitems.pri index 7a85f00..3ff92b1 100644 --- a/src/declarative/graphicsitems/graphicsitems.pri +++ b/src/declarative/graphicsitems/graphicsitems.pri @@ -84,10 +84,3 @@ SOURCES += \ $$PWD/qdeclarativegraphicsobjectcontainer.cpp \ $$PWD/qdeclarativeparticles.cpp \ $$PWD/qdeclarativelayoutitem.cpp \ - -contains(QT_CONFIG, webkit) { - QT+=webkit - SOURCES += $$PWD/qdeclarativewebview.cpp - HEADERS += $$PWD/qdeclarativewebview_p.h - HEADERS += $$PWD/qdeclarativewebview_p_p.h -} diff --git a/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp b/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp index f3b9385..e0ae2eb 100644 --- a/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp @@ -139,9 +139,6 @@ void QDeclarativeItemModule::defineModule() QML_REGISTER_TYPE(Qt,4,6,VisibleArea,QDeclarativeFlickableVisibleArea); QML_REGISTER_TYPE(Qt,4,6,VisualDataModel,QDeclarativeVisualDataModel); QML_REGISTER_TYPE(Qt,4,6,VisualItemModel,QDeclarativeVisualItemModel); -#ifdef QT_WEBKIT_LIB - QML_REGISTER_TYPE(Qt,4,6,WebView,QDeclarativeWebView); -#endif QML_REGISTER_NOCREATE_TYPE(QDeclarativeAnchors); QML_REGISTER_NOCREATE_TYPE(QGraphicsEffect); diff --git a/src/declarative/graphicsitems/qdeclarativewebview.cpp b/src/declarative/graphicsitems/qdeclarativewebview.cpp deleted file mode 100644 index a2b16ba..0000000 --- a/src/declarative/graphicsitems/qdeclarativewebview.cpp +++ /dev/null @@ -1,1338 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 "qdeclarativewebview_p.h" -#include "qdeclarativewebview_p_p.h" - -#include "qdeclarativepainteditem_p_p.h" - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -QT_BEGIN_NAMESPACE - -static const int MAX_DOUBLECLICK_TIME=500; // XXX need better gesture system - -class QDeclarativeWebViewPrivate : public QDeclarativePaintedItemPrivate -{ - Q_DECLARE_PUBLIC(QDeclarativeWebView) - -public: - QDeclarativeWebViewPrivate() - : QDeclarativePaintedItemPrivate(), page(0), preferredwidth(0), preferredheight(0), - progress(1.0), status(QDeclarativeWebView::Null), pending(PendingNone), - newWindowComponent(0), newWindowParent(0), - pressTime(400), - rendering(true) - { - } - - QUrl url; // page url might be different if it has not loaded yet - QWebPage *page; - - int preferredwidth, preferredheight; - qreal progress; - QDeclarativeWebView::Status status; - QString statusText; - enum { PendingNone, PendingUrl, PendingHtml, PendingContent } pending; - QUrl pending_url; - QString pending_string; - QByteArray pending_data; - mutable QDeclarativeWebSettings settings; - QDeclarativeComponent *newWindowComponent; - QDeclarativeItem *newWindowParent; - - QBasicTimer pressTimer; - QPoint pressPoint; - int pressTime; // milliseconds before it's a "hold" - - - static void windowObjects_append(QDeclarativeListProperty *prop, QObject *o) { - static_cast(prop->data)->windowObjects.append(o); - static_cast(prop->data)->updateWindowObjects(); - } - - void updateWindowObjects(); - QObjectList windowObjects; - - bool rendering; -}; - -/*! - \qmlclass WebView QDeclarativeWebView - \since 4.7 - \brief The WebView item allows you to add web content to a canvas. - \inherits Item - - A WebView renders web content based on a URL. - - If the width and height of the item is not set, they will - dynamically adjust to a size appropriate for the content. - This width may be large for typical online web pages. - - If the preferredWidth is set, the width will be this amount or larger, - usually laying out the web content to fit the preferredWidth. - - \qml - WebView { - url: "http://www.nokia.com" - width: 490 - height: 400 - scale: 0.5 - smooth: false - smoothCache: true - } - \endqml - - \image webview.png - - The item includes no scrolling, scaling, - toolbars, etc., those must be implemented around WebView. See the WebBrowser example - for a demonstration of this. -*/ - -/*! - \internal - \class QDeclarativeWebView - \brief The QDeclarativeWebView class allows you to add web content to a QDeclarativeView. - - A WebView renders web content base on a URL. - - \image webview.png - - The item includes no scrolling, scaling, - toolbars, etc., those must be implemented around WebView. See the WebBrowser example - for a demonstration of this. - - A QDeclarativeWebView object can be instantiated in Qml using the tag \l WebView. -*/ - -QDeclarativeWebView::QDeclarativeWebView(QDeclarativeItem *parent) - : QDeclarativePaintedItem(*(new QDeclarativeWebViewPrivate), parent) -{ - init(); -} - -QDeclarativeWebView::~QDeclarativeWebView() -{ - Q_D(QDeclarativeWebView); - delete d->page; -} - -void QDeclarativeWebView::init() -{ - Q_D(QDeclarativeWebView); - - QWebSettings::enablePersistentStorage(); - - setAcceptHoverEvents(true); - setAcceptedMouseButtons(Qt::LeftButton); - setFlag(QGraphicsItem::ItemHasNoContents, false); - - d->page = 0; -} - -void QDeclarativeWebView::componentComplete() -{ - QDeclarativePaintedItem::componentComplete(); - Q_D(QDeclarativeWebView); - switch (d->pending) { - case QDeclarativeWebViewPrivate::PendingUrl: - setUrl(d->pending_url); - break; - case QDeclarativeWebViewPrivate::PendingHtml: - setHtml(d->pending_string, d->pending_url); - break; - case QDeclarativeWebViewPrivate::PendingContent: - setContent(d->pending_data, d->pending_string, d->pending_url); - break; - default: - break; - } - d->pending = QDeclarativeWebViewPrivate::PendingNone; - d->updateWindowObjects(); -} - -QDeclarativeWebView::Status QDeclarativeWebView::status() const -{ - Q_D(const QDeclarativeWebView); - return d->status; -} - - -/*! - \qmlproperty real WebView::progress - This property holds the progress of loading the current URL, from 0 to 1. - - If you just want to know when progress gets to 1, use - WebView::onLoadFinished() or WebView::onLoadFailed() instead. -*/ -qreal QDeclarativeWebView::progress() const -{ - Q_D(const QDeclarativeWebView); - return d->progress; -} - -void QDeclarativeWebView::doLoadStarted() -{ - Q_D(QDeclarativeWebView); - - if (!d->url.isEmpty()) { - d->status = Loading; - emit statusChanged(d->status); - } - emit loadStarted(); -} - -void QDeclarativeWebView::doLoadProgress(int p) -{ - Q_D(QDeclarativeWebView); - if (d->progress == p/100.0) - return; - d->progress = p/100.0; - emit progressChanged(); -} - -void QDeclarativeWebView::pageUrlChanged() -{ - Q_D(QDeclarativeWebView); - - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - expandToWebPage(); - - if ((d->url.isEmpty() && page()->mainFrame()->url() != QUrl(QLatin1String("about:blank"))) - || (d->url != page()->mainFrame()->url() && !page()->mainFrame()->url().isEmpty())) - { - d->url = page()->mainFrame()->url(); - if (d->url == QUrl(QLatin1String("about:blank"))) - d->url = QUrl(); - emit urlChanged(); - } -} - -void QDeclarativeWebView::doLoadFinished(bool ok) -{ - Q_D(QDeclarativeWebView); - - if (title().isEmpty()) - pageUrlChanged(); // XXX bug 232556 - pages with no title never get urlChanged() - - if (ok) { - d->status = d->url.isEmpty() ? Null : Ready; - emit loadFinished(); - } else { - d->status = Error; - emit loadFailed(); - } - emit statusChanged(d->status); -} - -/*! - \qmlproperty url WebView::url - This property holds the URL to the page displayed in this item. It can be set, - but also can change spontaneously (eg. because of network redirection). - - If the url is empty, the page is blank. - - The url is always absolute (QML will resolve relative URL strings in the context - of the containing QML document). -*/ -QUrl QDeclarativeWebView::url() const -{ - Q_D(const QDeclarativeWebView); - return d->url; -} - -void QDeclarativeWebView::setUrl(const QUrl &url) -{ - Q_D(QDeclarativeWebView); - if (url == d->url) - return; - - if (isComponentComplete()) { - d->url = url; - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - QUrl seturl = url; - if (seturl.isEmpty()) - seturl = QUrl(QLatin1String("about:blank")); - - Q_ASSERT(!seturl.isRelative()); - - page()->mainFrame()->load(seturl); - - emit urlChanged(); - } else { - d->pending = d->PendingUrl; - d->pending_url = url; - } -} - -/*! - \qmlproperty int WebView::preferredWidth - This property holds the ideal width for displaying the current URL. -*/ -int QDeclarativeWebView::preferredWidth() const -{ - Q_D(const QDeclarativeWebView); - return d->preferredwidth; -} - -void QDeclarativeWebView::setPreferredWidth(int iw) -{ - Q_D(QDeclarativeWebView); - if (d->preferredwidth == iw) return; - d->preferredwidth = iw; - //expandToWebPage(); - emit preferredWidthChanged(); -} - -/*! - \qmlproperty int WebView::preferredHeight - This property holds the ideal height for displaying the current URL. - This only affects the area zoomed by heuristicZoom(). -*/ -int QDeclarativeWebView::preferredHeight() const -{ - Q_D(const QDeclarativeWebView); - return d->preferredheight; -} -void QDeclarativeWebView::setPreferredHeight(int ih) -{ - Q_D(QDeclarativeWebView); - if (d->preferredheight == ih) return; - d->preferredheight = ih; - emit preferredHeightChanged(); -} - -/*! - \qmlmethod bool WebView::evaluateJavaScript(string) - - Evaluates the \a scriptSource JavaScript inside the context of the - main web frame, and returns the result of the last executed statement. - - Note that this JavaScript does \e not have any access to QML objects - except as made available as windowObjects. -*/ -QVariant QDeclarativeWebView::evaluateJavaScript(const QString &scriptSource) -{ - return this->page()->mainFrame()->evaluateJavaScript(scriptSource); -} - -void QDeclarativeWebView::focusChanged(bool hasFocus) -{ - QFocusEvent e(hasFocus ? QEvent::FocusIn : QEvent::FocusOut); - page()->event(&e); - QDeclarativeItem::focusChanged(hasFocus); -} - -void QDeclarativeWebView::initialLayout() -{ - // nothing useful to do at this point -} - -void QDeclarativeWebView::noteContentsSizeChanged(const QSize&) -{ - expandToWebPage(); -} - -void QDeclarativeWebView::expandToWebPage() -{ - Q_D(QDeclarativeWebView); - QSize cs = page()->mainFrame()->contentsSize(); - if (cs.width() < d->preferredwidth) - cs.setWidth(d->preferredwidth); - if (cs.height() < d->preferredheight) - cs.setHeight(d->preferredheight); - if (widthValid()) - cs.setWidth(width()); - if (heightValid()) - cs.setHeight(height()); - if (cs != page()->viewportSize()) { - page()->setViewportSize(cs); - } - if (cs != contentsSize()) - setContentsSize(cs); -} - -void QDeclarativeWebView::geometryChanged(const QRectF &newGeometry, - const QRectF &oldGeometry) -{ - if (newGeometry.size() != oldGeometry.size()) - expandToWebPage(); - QDeclarativePaintedItem::geometryChanged(newGeometry, oldGeometry); -} - -void QDeclarativeWebView::paintPage(const QRect& r) -{ - dirtyCache(r); - update(); -} - -/*! - \qmlproperty list WebView::javaScriptWindowObjects - - This property is a list of object that are available from within - the webview's JavaScript context. - - The \a object will be inserted as a child of the frame's window - object, under the name given by the attached property \c WebView.windowObjectName. - - \qml - WebView { - javaScriptWindowObjects: Object { - WebView.windowObjectName: "coordinates" - } - } - \endqml - - Properties of the object will be exposed as JavaScript properties and slots as - JavaScript methods. - - If Javascript is not enabled for this page, then this property does nothing. -*/ -QDeclarativeListProperty QDeclarativeWebView::javaScriptWindowObjects() -{ - Q_D(QDeclarativeWebView); - return QDeclarativeListProperty(this, d, &QDeclarativeWebViewPrivate::windowObjects_append); -} - -QDeclarativeWebViewAttached *QDeclarativeWebView::qmlAttachedProperties(QObject *o) -{ - return new QDeclarativeWebViewAttached(o); -} - -void QDeclarativeWebViewPrivate::updateWindowObjects() -{ - Q_Q(QDeclarativeWebView); - if (!q->isComponentComplete() || !page) - return; - - for (int ii = 0; ii < windowObjects.count(); ++ii) { - QObject *object = windowObjects.at(ii); - QDeclarativeWebViewAttached *attached = static_cast(qmlAttachedPropertiesObject(object)); - if (attached && !attached->windowObjectName().isEmpty()) { - page->mainFrame()->addToJavaScriptWindowObject(attached->windowObjectName(), object); - } - } -} - -bool QDeclarativeWebView::renderingEnabled() const -{ - Q_D(const QDeclarativeWebView); - return d->rendering; -} - -void QDeclarativeWebView::setRenderingEnabled(bool enabled) -{ - Q_D(QDeclarativeWebView); - if (d->rendering == enabled) - return; - d->rendering = enabled; - emit renderingEnabledChanged(); - - setCacheFrozen(!enabled); - if (enabled) - clearCache(); -} - - -void QDeclarativeWebView::drawContents(QPainter *p, const QRect &r) -{ - Q_D(QDeclarativeWebView); - if (d->rendering) - page()->mainFrame()->render(p,r); -} - -QMouseEvent *QDeclarativeWebView::sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *e) -{ - QEvent::Type t; - switch(e->type()) { - default: - case QEvent::GraphicsSceneMousePress: - t = QEvent::MouseButtonPress; - break; - case QEvent::GraphicsSceneMouseRelease: - t = QEvent::MouseButtonRelease; - break; - case QEvent::GraphicsSceneMouseMove: - t = QEvent::MouseMove; - break; - case QGraphicsSceneEvent::GraphicsSceneMouseDoubleClick: - t = QEvent::MouseButtonDblClick; - break; - } - - QMouseEvent *me = new QMouseEvent(t, (e->pos()/contentsScale()).toPoint(), e->button(), e->buttons(), 0); - return me; -} - -QMouseEvent *QDeclarativeWebView::sceneHoverMoveEventToMouseEvent(QGraphicsSceneHoverEvent *e) -{ - QEvent::Type t = QEvent::MouseMove; - - QMouseEvent *me = new QMouseEvent(t, (e->pos()/contentsScale()).toPoint(), Qt::NoButton, Qt::NoButton, 0); - - return me; -} - - -/*! - \qmlsignal WebView::onDoubleClick(clickx,clicky) - - The WebView does not pass double-click events to the web engine, but rather - emits this signals. -*/ - -void QDeclarativeWebView::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) -{ - QMouseEvent *me = sceneMouseEventToMouseEvent(event); - emit doubleClick(me->x(),me->y()); - delete me; -} - -/*! - \qmlmethod bool WebView::heuristicZoom(clickX,clickY,maxzoom) - - Finds a zoom that: - \list - \i shows a whole item - \i includes (\a clickX, \a clickY) - \i fits into the preferredWidth and preferredHeight - \i zooms by no more than \a maxzoom - \i is more than 10% above the current zoom - \endlist - - If such a zoom exists, emits zoomTo(zoom,centerX,centerY) and returns true; otherwise, - no signal is emitted and returns false. -*/ -bool QDeclarativeWebView::heuristicZoom(int clickX, int clickY, qreal maxzoom) -{ - Q_D(QDeclarativeWebView); - if (contentsScale() >= maxzoom/zoomFactor()) - return false; - qreal ozf = contentsScale(); - QRect showarea = elementAreaAt(clickX, clickY, d->preferredwidth/maxzoom, d->preferredheight/maxzoom); - qreal z = qMin(qreal(d->preferredwidth)/showarea.width(),qreal(d->preferredheight)/showarea.height()); - if (z > maxzoom/zoomFactor()) - z = maxzoom/zoomFactor(); - if (z/ozf > 1.2) { - QRectF r(showarea.left()*z, showarea.top()*z, showarea.width()*z, showarea.height()*z); - emit zoomTo(z,r.x()+r.width()/2, r.y()+r.height()/2); - return true; - } else { - return false; - } -} - -/*! - \qmlproperty int WebView::pressGrabTime - - The number of milliseconds the user must press before the WebView - starts passing move events through to the web engine (rather than - letting other QML elements such as a Flickable take them). - - Defaults to 400ms. Set to 0 to always grab and pass move events to - the web engine. -*/ -int QDeclarativeWebView::pressGrabTime() const -{ - Q_D(const QDeclarativeWebView); - return d->pressTime; -} - -void QDeclarativeWebView::setPressGrabTime(int ms) -{ - Q_D(QDeclarativeWebView); - if (d->pressTime == ms) - return; - d->pressTime = ms; - emit pressGrabTimeChanged(); -} - -void QDeclarativeWebView::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - Q_D(QDeclarativeWebView); - - setFocus (true); - QMouseEvent *me = sceneMouseEventToMouseEvent(event); - - d->pressPoint = me->pos(); - if (d->pressTime) { - d->pressTimer.start(d->pressTime,this); - setKeepMouseGrab(false); - } else { - grabMouse(); - setKeepMouseGrab(true); - } - - page()->event(me); - event->setAccepted( -/* - It is not correct to send the press event upwards, if it is not accepted by WebKit - e.g. push button does not work, if done so as QGraphicsScene will not send the release event at all to WebKit - Might be a bug in WebKit, though - */ -#if 1 //QT_VERSION <= 0x040500 // XXX see bug 230835 - true -#else - me->isAccepted() -#endif - ); - delete me; - if (!event->isAccepted()) { - QDeclarativePaintedItem::mousePressEvent(event); - } -} - -void QDeclarativeWebView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) -{ - Q_D(QDeclarativeWebView); - - QMouseEvent *me = sceneMouseEventToMouseEvent(event); - page()->event(me); - d->pressTimer.stop(); - event->setAccepted( -/* - It is not correct to send the press event upwards, if it is not accepted by WebKit - e.g. push button does not work, if done so as QGraphicsScene will not send all the events to WebKit - */ -#if 1 //QT_VERSION <= 0x040500 // XXX see bug 230835 - true -#else - me->isAccepted() -#endif - ); - delete me; - if (!event->isAccepted()) { - QDeclarativePaintedItem::mouseReleaseEvent(event); - } - setKeepMouseGrab(false); - ungrabMouse(); -} - -void QDeclarativeWebView::timerEvent(QTimerEvent *event) -{ - Q_D(QDeclarativeWebView); - if (event->timerId() == d->pressTimer.timerId()) { - d->pressTimer.stop(); - grabMouse(); - setKeepMouseGrab(true); - } -} - -void QDeclarativeWebView::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - Q_D(QDeclarativeWebView); - - QMouseEvent *me = sceneMouseEventToMouseEvent(event); - if (d->pressTimer.isActive()) { - if ((me->pos() - d->pressPoint).manhattanLength() > QApplication::startDragDistance()) { - d->pressTimer.stop(); - } - } - if (keepMouseGrab()) { - page()->event(me); - event->setAccepted( -/* - It is not correct to send the press event upwards, if it is not accepted by WebKit - e.g. push button does not work, if done so as QGraphicsScene will not send the release event at all to WebKit - Might be a bug in WebKit, though - */ -#if 1 // QT_VERSION <= 0x040500 // XXX see bug 230835 - true -#else - me->isAccepted() -#endif - ); - } - delete me; - if (!event->isAccepted()) - QDeclarativePaintedItem::mouseMoveEvent(event); - -} -void QDeclarativeWebView::hoverMoveEvent (QGraphicsSceneHoverEvent * event) -{ - QMouseEvent *me = sceneHoverMoveEventToMouseEvent(event); - page()->event(me); - event->setAccepted( -#if QT_VERSION <= 0x040500 // XXX see bug 230835 - true -#else - me->isAccepted() -#endif - ); - delete me; - if (!event->isAccepted()) - QDeclarativePaintedItem::hoverMoveEvent(event); -} - -void QDeclarativeWebView::keyPressEvent(QKeyEvent* event) -{ - page()->event(event); - if (!event->isAccepted()) - QDeclarativePaintedItem::keyPressEvent(event); -} - -void QDeclarativeWebView::keyReleaseEvent(QKeyEvent* event) -{ - page()->event(event); - if (!event->isAccepted()) - QDeclarativePaintedItem::keyReleaseEvent(event); -} - -bool QDeclarativeWebView::sceneEvent(QEvent *event) -{ - if (event->type() == QEvent::KeyPress) { - QKeyEvent *k = static_cast(event); - if (k->key() == Qt::Key_Tab || k->key() == Qt::Key_Backtab) { - if (!(k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) { //### Add MetaModifier? - page()->event(event); - if (event->isAccepted()) - return true; - } - } - } - return QDeclarativePaintedItem::sceneEvent(event); -} - - -/*! - \qmlproperty action WebView::back - This property holds the action for causing the previous URL in the history to be displayed. -*/ -QAction *QDeclarativeWebView::backAction() const -{ - return page()->action(QWebPage::Back); -} - -/*! - \qmlproperty action WebView::forward - This property holds the action for causing the next URL in the history to be displayed. -*/ -QAction *QDeclarativeWebView::forwardAction() const -{ - return page()->action(QWebPage::Forward); -} - -/*! - \qmlproperty action WebView::reload - This property holds the action for reloading with the current URL -*/ -QAction *QDeclarativeWebView::reloadAction() const -{ - return page()->action(QWebPage::Reload); -} - -/*! - \qmlproperty action WebView::stop - This property holds the action for stopping loading with the current URL -*/ -QAction *QDeclarativeWebView::stopAction() const -{ - return page()->action(QWebPage::Stop); -} - -/*! - \qmlproperty real WebView::title - This property holds the title of the web page currently viewed - - By default, this property contains an empty string. -*/ -QString QDeclarativeWebView::title() const -{ - return page()->mainFrame()->title(); -} - - - -/*! - \qmlproperty pixmap WebView::icon - This property holds the icon associated with the web page currently viewed -*/ -QPixmap QDeclarativeWebView::icon() const -{ - return page()->mainFrame()->icon().pixmap(QSize(256,256)); -} - - -/*! - \qmlproperty real WebView::zoomFactor - This property holds the multiplier used to scale the contents of a Web page. -*/ -void QDeclarativeWebView::setZoomFactor(qreal factor) -{ - Q_D(QDeclarativeWebView); - if (factor == page()->mainFrame()->zoomFactor()) - return; - - page()->mainFrame()->setZoomFactor(factor); - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth*factor : width()*factor, - d->preferredheight>0 ? d->preferredheight*factor : height()*factor)); - expandToWebPage(); - - emit zoomFactorChanged(); -} - -qreal QDeclarativeWebView::zoomFactor() const -{ - return page()->mainFrame()->zoomFactor(); -} - -/*! - \qmlproperty string WebView::statusText - - This property is the current status suggested by the current web page. In a web browser, - such status is often shown in some kind of status bar. -*/ -void QDeclarativeWebView::setStatusText(const QString& s) -{ - Q_D(QDeclarativeWebView); - d->statusText = s; - emit statusTextChanged(); -} - -void QDeclarativeWebView::windowObjectCleared() -{ - Q_D(QDeclarativeWebView); - d->updateWindowObjects(); -} - -QString QDeclarativeWebView::statusText() const -{ - Q_D(const QDeclarativeWebView); - return d->statusText; -} - -QWebPage *QDeclarativeWebView::page() const -{ - Q_D(const QDeclarativeWebView); - - if (!d->page) { - QDeclarativeWebView *self = const_cast(this); - QWebPage *wp = new QDeclarativeWebPage(self); - - // QML items don't default to having a background, - // even though most we pages will set one anyway. - QPalette pal = QApplication::palette(); - pal.setBrush(QPalette::Base, QColor::fromRgbF(0, 0, 0, 0)); - wp->setPalette(pal); - - wp->setNetworkAccessManager(qmlEngine(this)->networkAccessManager()); - - self->setPage(wp); - - return wp; - } - - return d->page; -} - - -// The QObject interface to settings(). -/*! - \qmlproperty string WebView::settings.standardFontFamily - \qmlproperty string WebView::settings.fixedFontFamily - \qmlproperty string WebView::settings.serifFontFamily - \qmlproperty string WebView::settings.sansSerifFontFamily - \qmlproperty string WebView::settings.cursiveFontFamily - \qmlproperty string WebView::settings.fantasyFontFamily - - \qmlproperty int WebView::settings.minimumFontSize - \qmlproperty int WebView::settings.minimumLogicalFontSize - \qmlproperty int WebView::settings.defaultFontSize - \qmlproperty int WebView::settings.defaultFixedFontSize - - \qmlproperty bool WebView::settings.autoLoadImages - \qmlproperty bool WebView::settings.javascriptEnabled - \qmlproperty bool WebView::settings.javaEnabled - \qmlproperty bool WebView::settings.pluginsEnabled - \qmlproperty bool WebView::settings.privateBrowsingEnabled - \qmlproperty bool WebView::settings.javascriptCanOpenWindows - \qmlproperty bool WebView::settings.javascriptCanAccessClipboard - \qmlproperty bool WebView::settings.developerExtrasEnabled - \qmlproperty bool WebView::settings.linksIncludedInFocusChain - \qmlproperty bool WebView::settings.zoomTextOnly - \qmlproperty bool WebView::settings.printElementBackgrounds - \qmlproperty bool WebView::settings.offlineStorageDatabaseEnabled - \qmlproperty bool WebView::settings.offlineWebApplicationCacheEnabled - \qmlproperty bool WebView::settings.localStorageDatabaseEnabled - \qmlproperty bool WebView::settings.localContentCanAccessRemoteUrls - - These properties give access to the settings controlling the web view. - - See QWebSettings for details of these properties. - - \qml - WebView { - settings.pluginsEnabled: true - settings.standardFontFamily: "Arial" - ... - } - \endqml -*/ -QDeclarativeWebSettings *QDeclarativeWebView::settingsObject() const -{ - Q_D(const QDeclarativeWebView); - d->settings.s = page()->settings(); - return &d->settings; -} - -void QDeclarativeWebView::setPage(QWebPage *page) -{ - Q_D(QDeclarativeWebView); - if (d->page == page) - return; - if (d->page) { - if (d->page->parent() == this) { - delete d->page; - } else { - d->page->disconnect(this); - } - } - d->page = page; - d->page->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - d->page->mainFrame()->setScrollBarPolicy(Qt::Horizontal,Qt::ScrollBarAlwaysOff); - d->page->mainFrame()->setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff); - connect(d->page,SIGNAL(repaintRequested(QRect)),this,SLOT(paintPage(QRect))); - connect(d->page->mainFrame(),SIGNAL(urlChanged(QUrl)),this,SLOT(pageUrlChanged())); - connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(titleChanged(QString))); - connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(iconChanged())); - connect(d->page->mainFrame(), SIGNAL(iconChanged()), this, SIGNAL(iconChanged())); - connect(d->page->mainFrame(), SIGNAL(contentsSizeChanged(QSize)), this, SLOT(noteContentsSizeChanged(QSize))); - connect(d->page->mainFrame(), SIGNAL(initialLayoutCompleted()), this, SLOT(initialLayout())); - - connect(d->page,SIGNAL(loadStarted()),this,SLOT(doLoadStarted())); - connect(d->page,SIGNAL(loadProgress(int)),this,SLOT(doLoadProgress(int))); - connect(d->page,SIGNAL(loadFinished(bool)),this,SLOT(doLoadFinished(bool))); - connect(d->page,SIGNAL(statusBarMessage(QString)),this,SLOT(setStatusText(QString))); - - connect(d->page->mainFrame(),SIGNAL(javaScriptWindowObjectCleared()),this,SLOT(windowObjectCleared())); -} - -/*! - \qmlsignal WebView::onLoadStarted() - - This handler is called when the web engine begins loading - a page. Later, WebView::onLoadFinished() or WebView::onLoadFailed() - will be emitted. -*/ - -/*! - \qmlsignal WebView::onLoadFinished() - - This handler is called when the web engine \e successfully - finishes loading a page, including any component content - (WebView::onLoadFailed() will be emitted otherwise). - - \sa progress -*/ - -/*! - \qmlsignal WebView::onLoadFailed() - - This handler is called when the web engine fails loading - a page or any component content - (WebView::onLoadFinished() will be emitted on success). -*/ - -void QDeclarativeWebView::load(const QNetworkRequest &request, - QNetworkAccessManager::Operation operation, - const QByteArray &body) -{ - page()->mainFrame()->load(request, operation, body); -} - -QString QDeclarativeWebView::html() const -{ - return page()->mainFrame()->toHtml(); -} - -/*! - \qmlproperty string WebView::html - This property holds HTML text set directly - - The html property can be set as a string. - - \qml - WebView { - html: "

This is HTML." - } - \endqml -*/ -void QDeclarativeWebView::setHtml(const QString &html, const QUrl &baseUrl) -{ - Q_D(QDeclarativeWebView); - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - if (isComponentComplete()) - page()->mainFrame()->setHtml(html, baseUrl); - else { - d->pending = d->PendingHtml; - d->pending_url = baseUrl; - d->pending_string = html; - } - emit htmlChanged(); -} - -void QDeclarativeWebView::setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl) -{ - Q_D(QDeclarativeWebView); - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - - if (isComponentComplete()) - page()->mainFrame()->setContent(data,mimeType,qmlContext(this)->resolvedUrl(baseUrl)); - else { - d->pending = d->PendingContent; - d->pending_url = baseUrl; - d->pending_string = mimeType; - d->pending_data = data; - } -} - -QWebHistory *QDeclarativeWebView::history() const -{ - return page()->history(); -} - -QWebSettings *QDeclarativeWebView::settings() const -{ - return page()->settings(); -} - -QDeclarativeWebView *QDeclarativeWebView::createWindow(QWebPage::WebWindowType type) -{ - Q_D(QDeclarativeWebView); - switch (type) { - case QWebPage::WebBrowserWindow: { - if (!d->newWindowComponent && d->newWindowParent) - qWarning("WebView::newWindowComponent not set - WebView::newWindowParent ignored"); - else if (d->newWindowComponent && !d->newWindowParent) - qWarning("WebView::newWindowParent not set - WebView::newWindowComponent ignored"); - else if (d->newWindowComponent && d->newWindowParent) { - QDeclarativeWebView *webview = 0; - QDeclarativeContext *windowContext = new QDeclarativeContext(qmlContext(this)); - - QObject *nobj = d->newWindowComponent->create(windowContext); - if (nobj) { - windowContext->setParent(nobj); - QDeclarativeItem *item = qobject_cast(nobj); - if (!item) { - delete nobj; - } else { - webview = item->findChild(); - if (!webview) { - delete item; - } else { - nobj->setParent(d->newWindowParent); - static_cast(item)->setParentItem(d->newWindowParent); - } - } - } else { - delete windowContext; - } - - return webview; - } - } - break; - case QWebPage::WebModalDialog: { - // Not supported - } - } - return 0; -} - -/*! - \qmlproperty component WebView::newWindowComponent - - This property holds the component to use for new windows. - The component must have a WebView somewhere in its structure. - - When the web engine requests a new window, it will be an instance of - this component. - - The parent of the new window is set by newWindowParent. It must be set. -*/ -QDeclarativeComponent *QDeclarativeWebView::newWindowComponent() const -{ - Q_D(const QDeclarativeWebView); - return d->newWindowComponent; -} - -void QDeclarativeWebView::setNewWindowComponent(QDeclarativeComponent *newWindow) -{ - Q_D(QDeclarativeWebView); - if (newWindow == d->newWindowComponent) - return; - d->newWindowComponent = newWindow; - emit newWindowComponentChanged(); -} - - -/*! - \qmlproperty item WebView::newWindowParent - - The parent item for new windows. - - \sa newWindowComponent -*/ -QDeclarativeItem *QDeclarativeWebView::newWindowParent() const -{ - Q_D(const QDeclarativeWebView); - return d->newWindowParent; -} - -void QDeclarativeWebView::setNewWindowParent(QDeclarativeItem *parent) -{ - Q_D(QDeclarativeWebView); - if (parent == d->newWindowParent) - return; - if (d->newWindowParent && parent) { - QList children = d->newWindowParent->childItems(); - for (int i = 0; i < children.count(); ++i) { - children.at(i)->setParentItem(parent); - } - } - d->newWindowParent = parent; - emit newWindowParentChanged(); -} - -/*! - Returns the area of the largest element at position (\a x,\a y) that is no larger - than \a maxwidth by \a maxheight pixels. - - May return an area larger in the case when no smaller element is at the position. -*/ -QRect QDeclarativeWebView::elementAreaAt(int x, int y, int maxwidth, int maxheight) const -{ - QWebHitTestResult hit = page()->mainFrame()->hitTestContent(QPoint(x,y)); - QRect rv = hit.boundingRect(); - QWebElement element = hit.enclosingBlockElement(); - if (maxwidth<=0) maxwidth = INT_MAX; - if (maxheight<=0) maxheight = INT_MAX; - while (!element.parent().isNull() && element.geometry().width() <= maxwidth && element.geometry().height() <= maxheight) { - rv = element.geometry(); - element = element.parent(); - } - return rv; -} - -/*! - \internal - \class QDeclarativeWebPage - \brief The QDeclarativeWebPage class is a QWebPage that can create QML plugins. - - \sa QDeclarativeWebView -*/ -QDeclarativeWebPage::QDeclarativeWebPage(QDeclarativeWebView *parent) : - QWebPage(parent) -{ -} - -QDeclarativeWebPage::~QDeclarativeWebPage() -{ -} - -void QDeclarativeWebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) -{ - qWarning() << sourceID << ':' << lineNumber << ':' << message; -} - -QString QDeclarativeWebPage::chooseFile(QWebFrame *originatingFrame, const QString& oldFile) -{ - // Not supported (it's modal) - Q_UNUSED(originatingFrame) - Q_UNUSED(oldFile) - return oldFile; -} - -void QDeclarativeWebPage::javaScriptAlert(QWebFrame *originatingFrame, const QString& msg) -{ - Q_UNUSED(originatingFrame) - emit viewItem()->alert(msg); -} - -bool QDeclarativeWebPage::javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg) -{ - // Not supported (it's modal) - Q_UNUSED(originatingFrame) - Q_UNUSED(msg) - return false; -} - -bool QDeclarativeWebPage::javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result) -{ - // Not supported (it's modal) - Q_UNUSED(originatingFrame) - Q_UNUSED(msg) - Q_UNUSED(defaultValue) - Q_UNUSED(result) - return false; -} - - -/* - Qt WebKit does not understand non-QWidget plugins, so dummy widgets - are created, parented to a single dummy tool window. - - The requirements for QML object plugins are input to the Qt WebKit - non-QWidget plugin support, which will obsolete this kludge. -*/ -class QWidget_Dummy_Plugin : public QWidget -{ - Q_OBJECT -public: - static QWidget *dummy_shared_parent() - { - static QWidget *dsp = 0; - if (!dsp) { - dsp = new QWidget(0,Qt::Tool); - dsp->setGeometry(-10000,-10000,0,0); - dsp->show(); - } - return dsp; - } - QWidget_Dummy_Plugin(const QUrl& url, QDeclarativeWebView *view, const QStringList ¶mNames, const QStringList ¶mValues) : - QWidget(dummy_shared_parent()), - propertyNames(paramNames), - propertyValues(paramValues), - webview(view) - { - QDeclarativeEngine *engine = qmlEngine(webview); - component = new QDeclarativeComponent(engine, url, this); - item = 0; - if (component->isLoading()) - connect(component, SIGNAL(statusChanged(QDeclarativeComponent::Status)), this, SLOT(qmlLoaded())); - else - qmlLoaded(); - } - -public Q_SLOTS: - void qmlLoaded() - { - if (component->isError()) { - // ### Could instead give these errors to the WebView to handle. - qWarning() << component->errors(); - return; - } - item = qobject_cast(component->create(qmlContext(webview))); - item->setParent(webview); - QString jsObjName; - for (int i=0; isetProperty(propertyNames[i].toUtf8(),propertyValues[i]); - if (propertyNames[i] == QLatin1String("objectname")) - jsObjName = propertyValues[i]; - } - } - if (!jsObjName.isNull()) { - QWebFrame *f = webview->page()->mainFrame(); - f->addToJavaScriptWindowObject(jsObjName, item); - } - resizeEvent(0); - delete component; - component = 0; - } - void resizeEvent(QResizeEvent*) - { - if (item) { - item->setX(x()); - item->setY(y()); - item->setWidth(width()); - item->setHeight(height()); - } - } - -private: - QDeclarativeComponent *component; - QDeclarativeItem *item; - QStringList propertyNames, propertyValues; - QDeclarativeWebView *webview; -}; - -QDeclarativeWebView *QDeclarativeWebPage::viewItem() -{ - return static_cast(parent()); -} - -QObject *QDeclarativeWebPage::createPlugin(const QString &, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues) -{ - QUrl comp = qmlContext(viewItem())->resolvedUrl(url); - return new QWidget_Dummy_Plugin(comp,viewItem(),paramNames,paramValues); -} - -QWebPage *QDeclarativeWebPage::createWindow(WebWindowType type) -{ - QDeclarativeWebView *newView = viewItem()->createWindow(type); - if (newView) - return newView->page(); - return 0; -} - -QT_END_NAMESPACE - -#include diff --git a/src/declarative/graphicsitems/qdeclarativewebview_p.h b/src/declarative/graphicsitems/qdeclarativewebview_p.h deleted file mode 100644 index a65aab3..0000000 --- a/src/declarative/graphicsitems/qdeclarativewebview_p.h +++ /dev/null @@ -1,286 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 QDECLARATIVEWEBVIEW_H -#define QDECLARATIVEWEBVIEW_H - -#include "qdeclarativepainteditem_p.h" - -#include -#include -#include -#include - -QT_BEGIN_HEADER - -class QWebHistory; -class QWebSettings; - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) -class QDeclarativeWebViewPrivate; -class QNetworkRequest; -class QDeclarativeWebView; - -class Q_DECLARATIVE_EXPORT QDeclarativeWebPage : public QWebPage -{ - Q_OBJECT -public: - explicit QDeclarativeWebPage(QDeclarativeWebView *parent); - ~QDeclarativeWebPage(); -protected: - QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues); - QWebPage *createWindow(WebWindowType type); - void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID); - QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile); - void javaScriptAlert(QWebFrame *originatingFrame, const QString& msg); - bool javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg); - bool javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result); - -private: - QDeclarativeWebView *viewItem(); -}; - - -class QDeclarativeWebViewAttached; -class QDeclarativeWebSettings; - -//### TODO: browser plugins - -class Q_DECLARATIVE_EXPORT QDeclarativeWebView : public QDeclarativePaintedItem -{ - Q_OBJECT - - Q_ENUMS(Status SelectionMode) - - Q_PROPERTY(QString title READ title NOTIFY titleChanged) - Q_PROPERTY(QPixmap icon READ icon NOTIFY iconChanged) - Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged) - Q_PROPERTY(QString statusText READ statusText NOTIFY statusTextChanged) - - Q_PROPERTY(QString html READ html WRITE setHtml NOTIFY htmlChanged) - - Q_PROPERTY(int pressGrabTime READ pressGrabTime WRITE setPressGrabTime NOTIFY pressGrabTimeChanged) - - Q_PROPERTY(int preferredWidth READ preferredWidth WRITE setPreferredWidth NOTIFY preferredWidthChanged) - Q_PROPERTY(int preferredHeight READ preferredHeight WRITE setPreferredHeight NOTIFY preferredHeightChanged) - Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) - Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged) - Q_PROPERTY(Status status READ status NOTIFY statusChanged) - - Q_PROPERTY(QAction* reload READ reloadAction CONSTANT) - Q_PROPERTY(QAction* back READ backAction CONSTANT) - Q_PROPERTY(QAction* forward READ forwardAction CONSTANT) - Q_PROPERTY(QAction* stop READ stopAction CONSTANT) - - Q_PROPERTY(QDeclarativeWebSettings* settings READ settingsObject CONSTANT) - - Q_PROPERTY(QDeclarativeListProperty javaScriptWindowObjects READ javaScriptWindowObjects CONSTANT) - - Q_PROPERTY(QDeclarativeComponent* newWindowComponent READ newWindowComponent WRITE setNewWindowComponent NOTIFY newWindowComponentChanged) - Q_PROPERTY(QDeclarativeItem* newWindowParent READ newWindowParent WRITE setNewWindowParent NOTIFY newWindowParentChanged) - - Q_PROPERTY(bool renderingEnabled READ renderingEnabled WRITE setRenderingEnabled NOTIFY renderingEnabledChanged) - -public: - QDeclarativeWebView(QDeclarativeItem *parent=0); - ~QDeclarativeWebView(); - - QUrl url() const; - void setUrl(const QUrl &); - - QString title() const; - - QPixmap icon() const; - - qreal zoomFactor() const; - void setZoomFactor(qreal); - Q_INVOKABLE bool heuristicZoom(int clickX, int clickY, qreal maxzoom); - QRect elementAreaAt(int x, int y, int minwidth, int minheight) const; - - int pressGrabTime() const; - void setPressGrabTime(int); - - int preferredWidth() const; - void setPreferredWidth(int); - int preferredHeight() const; - void setPreferredHeight(int); - - enum Status { Null, Ready, Loading, Error }; - Status status() const; - qreal progress() const; - QString statusText() const; - - QAction *reloadAction() const; - QAction *backAction() const; - QAction *forwardAction() const; - QAction *stopAction() const; - - QWebPage *page() const; - void setPage(QWebPage *page); - - void load(const QNetworkRequest &request, - QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, - const QByteArray &body = QByteArray()); - - QString html() const; - - void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); - void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); - - QWebHistory *history() const; - QWebSettings *settings() const; - QDeclarativeWebSettings *settingsObject() const; - - bool renderingEnabled() const; - void setRenderingEnabled(bool); - - QDeclarativeListProperty javaScriptWindowObjects(); - - static QDeclarativeWebViewAttached *qmlAttachedProperties(QObject *); - - QDeclarativeComponent *newWindowComponent() const; - void setNewWindowComponent(QDeclarativeComponent *newWindow); - QDeclarativeItem *newWindowParent() const; - void setNewWindowParent(QDeclarativeItem *newWindow); - -Q_SIGNALS: - void preferredWidthChanged(); - void preferredHeightChanged(); - void urlChanged(); - void progressChanged(); - void statusChanged(Status); - void titleChanged(const QString&); - void iconChanged(); - void statusTextChanged(); - void htmlChanged(); - void pressGrabTimeChanged(); - void zoomFactorChanged(); - void newWindowComponentChanged(); - void newWindowParentChanged(); - void renderingEnabledChanged(); - - void loadStarted(); - void loadFinished(); - void loadFailed(); - - void doubleClick(int clickX, int clickY); - - void zoomTo(qreal zoom, int centerX, int centerY); - - void alert(const QString& message); - -public Q_SLOTS: - QVariant evaluateJavaScript(const QString&); - -private Q_SLOTS: - void expandToWebPage(); - void paintPage(const QRect&); - void doLoadStarted(); - void doLoadProgress(int p); - void doLoadFinished(bool ok); - void setStatusText(const QString&); - void windowObjectCleared(); - void pageUrlChanged(); - void noteContentsSizeChanged(const QSize&); - void initialLayout(); - -protected: - void drawContents(QPainter *, const QRect &); - - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); - void timerEvent(QTimerEvent *event); - void hoverMoveEvent (QGraphicsSceneHoverEvent * event); - void keyPressEvent(QKeyEvent* event); - void keyReleaseEvent(QKeyEvent* event); - virtual void geometryChanged(const QRectF &newGeometry, - const QRectF &oldGeometry); - virtual void focusChanged(bool); - virtual bool sceneEvent(QEvent *event); - QDeclarativeWebView *createWindow(QWebPage::WebWindowType type); - -private: - void init(); - virtual void componentComplete(); - Q_DISABLE_COPY(QDeclarativeWebView) - Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeWebView) - QMouseEvent *sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *); - QMouseEvent *sceneHoverMoveEventToMouseEvent(QGraphicsSceneHoverEvent *); - friend class QDeclarativeWebPage; -}; - -class QDeclarativeWebViewAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QString windowObjectName READ windowObjectName WRITE setWindowObjectName) -public: - QDeclarativeWebViewAttached(QObject *parent) - : QObject(parent) - { - } - - QString windowObjectName() const - { - return m_windowObjectName; - } - - void setWindowObjectName(const QString &n) - { - m_windowObjectName = n; - } - -private: - QString m_windowObjectName; -}; - - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QDeclarativeWebView) -QML_DECLARE_TYPEINFO(QDeclarativeWebView, QML_HAS_ATTACHED_PROPERTIES) - -QT_END_HEADER - -#endif diff --git a/src/declarative/graphicsitems/qdeclarativewebview_p_p.h b/src/declarative/graphicsitems/qdeclarativewebview_p_p.h deleted file mode 100644 index 258b472..0000000 --- a/src/declarative/graphicsitems/qdeclarativewebview_p_p.h +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 QDECLARATIVEWEBVIEW_P_H -#define QDECLARATIVEWEBVIEW_P_H - -#include - -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QDeclarativeWebSettings : public QObject { - Q_OBJECT - - Q_PROPERTY(QString standardFontFamily READ standardFontFamily WRITE setStandardFontFamily) - Q_PROPERTY(QString fixedFontFamily READ fixedFontFamily WRITE setFixedFontFamily) - Q_PROPERTY(QString serifFontFamily READ serifFontFamily WRITE setSerifFontFamily) - Q_PROPERTY(QString sansSerifFontFamily READ sansSerifFontFamily WRITE setSansSerifFontFamily) - Q_PROPERTY(QString cursiveFontFamily READ cursiveFontFamily WRITE setCursiveFontFamily) - Q_PROPERTY(QString fantasyFontFamily READ fantasyFontFamily WRITE setFantasyFontFamily) - - Q_PROPERTY(int minimumFontSize READ minimumFontSize WRITE setMinimumFontSize) - Q_PROPERTY(int minimumLogicalFontSize READ minimumLogicalFontSize WRITE setMinimumLogicalFontSize) - Q_PROPERTY(int defaultFontSize READ defaultFontSize WRITE setDefaultFontSize) - Q_PROPERTY(int defaultFixedFontSize READ defaultFixedFontSize WRITE setDefaultFixedFontSize) - - Q_PROPERTY(bool autoLoadImages READ autoLoadImages WRITE setAutoLoadImages) - Q_PROPERTY(bool javascriptEnabled READ javascriptEnabled WRITE setJavascriptEnabled) - Q_PROPERTY(bool javaEnabled READ javaEnabled WRITE setJavaEnabled) - Q_PROPERTY(bool pluginsEnabled READ pluginsEnabled WRITE setPluginsEnabled) - Q_PROPERTY(bool privateBrowsingEnabled READ privateBrowsingEnabled WRITE setPrivateBrowsingEnabled) - Q_PROPERTY(bool javascriptCanOpenWindows READ javascriptCanOpenWindows WRITE setJavascriptCanOpenWindows) - Q_PROPERTY(bool javascriptCanAccessClipboard READ javascriptCanAccessClipboard WRITE setJavascriptCanAccessClipboard) - Q_PROPERTY(bool developerExtrasEnabled READ developerExtrasEnabled WRITE setDeveloperExtrasEnabled) - Q_PROPERTY(bool linksIncludedInFocusChain READ linksIncludedInFocusChain WRITE setLinksIncludedInFocusChain) - Q_PROPERTY(bool zoomTextOnly READ zoomTextOnly WRITE setZoomTextOnly) - Q_PROPERTY(bool printElementBackgrounds READ printElementBackgrounds WRITE setPrintElementBackgrounds) - Q_PROPERTY(bool offlineStorageDatabaseEnabled READ offlineStorageDatabaseEnabled WRITE setOfflineStorageDatabaseEnabled) - Q_PROPERTY(bool offlineWebApplicationCacheEnabled READ offlineWebApplicationCacheEnabled WRITE setOfflineWebApplicationCacheEnabled) - Q_PROPERTY(bool localStorageDatabaseEnabled READ localStorageDatabaseEnabled WRITE setLocalStorageDatabaseEnabled) - Q_PROPERTY(bool localContentCanAccessRemoteUrls READ localContentCanAccessRemoteUrls WRITE setLocalContentCanAccessRemoteUrls) - -public: - QDeclarativeWebSettings() {} - - QString standardFontFamily() const { return s->fontFamily(QWebSettings::StandardFont); } - void setStandardFontFamily(const QString& f) { s->setFontFamily(QWebSettings::StandardFont,f); } - QString fixedFontFamily() const { return s->fontFamily(QWebSettings::FixedFont); } - void setFixedFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FixedFont,f); } - QString serifFontFamily() const { return s->fontFamily(QWebSettings::SerifFont); } - void setSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SerifFont,f); } - QString sansSerifFontFamily() const { return s->fontFamily(QWebSettings::SansSerifFont); } - void setSansSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SansSerifFont,f); } - QString cursiveFontFamily() const { return s->fontFamily(QWebSettings::CursiveFont); } - void setCursiveFontFamily(const QString& f) { s->setFontFamily(QWebSettings::CursiveFont,f); } - QString fantasyFontFamily() const { return s->fontFamily(QWebSettings::FantasyFont); } - void setFantasyFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FantasyFont,f); } - - int minimumFontSize() const { return s->fontSize(QWebSettings::MinimumFontSize); } - void setMinimumFontSize(int size) { s->setFontSize(QWebSettings::MinimumFontSize,size); } - int minimumLogicalFontSize() const { return s->fontSize(QWebSettings::MinimumLogicalFontSize); } - void setMinimumLogicalFontSize(int size) { s->setFontSize(QWebSettings::MinimumLogicalFontSize,size); } - int defaultFontSize() const { return s->fontSize(QWebSettings::DefaultFontSize); } - void setDefaultFontSize(int size) { s->setFontSize(QWebSettings::DefaultFontSize,size); } - int defaultFixedFontSize() const { return s->fontSize(QWebSettings::DefaultFixedFontSize); } - void setDefaultFixedFontSize(int size) { s->setFontSize(QWebSettings::DefaultFixedFontSize,size); } - - bool autoLoadImages() const { return s->testAttribute(QWebSettings::AutoLoadImages); } - void setAutoLoadImages(bool on) { s->setAttribute(QWebSettings::AutoLoadImages, on); } - bool javascriptEnabled() const { return s->testAttribute(QWebSettings::JavascriptEnabled); } - void setJavascriptEnabled(bool on) { s->setAttribute(QWebSettings::JavascriptEnabled, on); } - bool javaEnabled() const { return s->testAttribute(QWebSettings::JavaEnabled); } - void setJavaEnabled(bool on) { s->setAttribute(QWebSettings::JavaEnabled, on); } - bool pluginsEnabled() const { return s->testAttribute(QWebSettings::PluginsEnabled); } - void setPluginsEnabled(bool on) { s->setAttribute(QWebSettings::PluginsEnabled, on); } - bool privateBrowsingEnabled() const { return s->testAttribute(QWebSettings::PrivateBrowsingEnabled); } - void setPrivateBrowsingEnabled(bool on) { s->setAttribute(QWebSettings::PrivateBrowsingEnabled, on); } - bool javascriptCanOpenWindows() const { return s->testAttribute(QWebSettings::JavascriptCanOpenWindows); } - void setJavascriptCanOpenWindows(bool on) { s->setAttribute(QWebSettings::JavascriptCanOpenWindows, on); } - bool javascriptCanAccessClipboard() const { return s->testAttribute(QWebSettings::JavascriptCanAccessClipboard); } - void setJavascriptCanAccessClipboard(bool on) { s->setAttribute(QWebSettings::JavascriptCanAccessClipboard, on); } - bool developerExtrasEnabled() const { return s->testAttribute(QWebSettings::DeveloperExtrasEnabled); } - void setDeveloperExtrasEnabled(bool on) { s->setAttribute(QWebSettings::DeveloperExtrasEnabled, on); } - bool linksIncludedInFocusChain() const { return s->testAttribute(QWebSettings::LinksIncludedInFocusChain); } - void setLinksIncludedInFocusChain(bool on) { s->setAttribute(QWebSettings::LinksIncludedInFocusChain, on); } - bool zoomTextOnly() const { return s->testAttribute(QWebSettings::ZoomTextOnly); } - void setZoomTextOnly(bool on) { s->setAttribute(QWebSettings::ZoomTextOnly, on); } - bool printElementBackgrounds() const { return s->testAttribute(QWebSettings::PrintElementBackgrounds); } - void setPrintElementBackgrounds(bool on) { s->setAttribute(QWebSettings::PrintElementBackgrounds, on); } - bool offlineStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::OfflineStorageDatabaseEnabled); } - void setOfflineStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, on); } - bool offlineWebApplicationCacheEnabled() const { return s->testAttribute(QWebSettings::OfflineWebApplicationCacheEnabled); } - void setOfflineWebApplicationCacheEnabled(bool on) { s->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, on); } - bool localStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::LocalStorageDatabaseEnabled); } - void setLocalStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, on); } - bool localContentCanAccessRemoteUrls() const { return s->testAttribute(QWebSettings::LocalContentCanAccessRemoteUrls); } - void setLocalContentCanAccessRemoteUrls(bool on) { s->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, on); } - - QWebSettings *s; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QDeclarativeWebSettings) - -QT_END_HEADER - -#endif diff --git a/src/plugins/qdeclarativemodules/qdeclarativemodules.pro b/src/plugins/qdeclarativemodules/qdeclarativemodules.pro index 0a6f444..ae53578 100644 --- a/src/plugins/qdeclarativemodules/qdeclarativemodules.pro +++ b/src/plugins/qdeclarativemodules/qdeclarativemodules.pro @@ -3,4 +3,5 @@ TEMPLATE = subdirs SUBDIRS += widgets contains(QT_CONFIG, multimedia): SUBDIRS += multimedia +contains(QT_CONFIG, webkit): SUBDIRS += webkitqmlplugin diff --git a/src/plugins/qdeclarativemodules/webkitqmlplugin/plugin.cpp b/src/plugins/qdeclarativemodules/webkitqmlplugin/plugin.cpp new file mode 100644 index 0000000..2f6205d --- /dev/null +++ b/src/plugins/qdeclarativemodules/webkitqmlplugin/plugin.cpp @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** 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 plugins 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 +#include + +#include "qdeclarativewebview_p.h" +#include "qdeclarativewebview_p_p.h" + +QT_BEGIN_NAMESPACE + +class WebKitQmlPlugin : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + virtual void registerTypes(const char *uri) + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("org.webkit")); + qmlRegisterType(uri,1,0,"WebView"); + } +}; + +QT_END_NAMESPACE + +#include "plugin.moc" + +Q_EXPORT_PLUGIN2(webkitqmlplugin, QT_PREPEND_NAMESPACE(WebKitQmlPlugin)); + diff --git a/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview.cpp b/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview.cpp new file mode 100644 index 0000000..733ac86 --- /dev/null +++ b/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview.cpp @@ -0,0 +1,1340 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 "qdeclarativewebview_p.h" +#include "qdeclarativewebview_p_p.h" + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +static const int MAX_DOUBLECLICK_TIME=500; // XXX need better gesture system + +class QDeclarativeWebViewPrivate : public QDeclarativePaintedItemPrivate +{ + Q_DECLARE_PUBLIC(QDeclarativeWebView) + +public: + QDeclarativeWebViewPrivate() + : QDeclarativePaintedItemPrivate(), page(0), preferredwidth(0), preferredheight(0), + progress(1.0), status(QDeclarativeWebView::Null), pending(PendingNone), + newWindowComponent(0), newWindowParent(0), + pressTime(400), + rendering(true) + { + } + + QUrl url; // page url might be different if it has not loaded yet + QWebPage *page; + + int preferredwidth, preferredheight; + qreal progress; + QDeclarativeWebView::Status status; + QString statusText; + enum { PendingNone, PendingUrl, PendingHtml, PendingContent } pending; + QUrl pending_url; + QString pending_string; + QByteArray pending_data; + mutable QDeclarativeWebSettings settings; + QDeclarativeComponent *newWindowComponent; + QDeclarativeItem *newWindowParent; + + QBasicTimer pressTimer; + QPoint pressPoint; + int pressTime; // milliseconds before it's a "hold" + + + static void windowObjects_append(QDeclarativeListProperty *prop, QObject *o) { + static_cast(prop->data)->windowObjects.append(o); + static_cast(prop->data)->updateWindowObjects(); + } + + void updateWindowObjects(); + QObjectList windowObjects; + + bool rendering; +}; + +/*! + \qmlclass WebView QDeclarativeWebView + \since 4.7 + \brief The WebView item allows you to add web content to a canvas. + \inherits Item + + A WebView renders web content based on a URL. + + If the width and height of the item is not set, they will + dynamically adjust to a size appropriate for the content. + This width may be large for typical online web pages. + + If the preferredWidth is set, the width will be this amount or larger, + usually laying out the web content to fit the preferredWidth. + + \qml + import org.webkit 1.0 + + WebView { + url: "http://www.nokia.com" + width: 490 + height: 400 + scale: 0.5 + smooth: false + smoothCache: true + } + \endqml + + \image webview.png + + The item includes no scrolling, scaling, + toolbars, etc., those must be implemented around WebView. See the WebBrowser example + for a demonstration of this. +*/ + +/*! + \internal + \class QDeclarativeWebView + \brief The QDeclarativeWebView class allows you to add web content to a QDeclarativeView. + + A WebView renders web content base on a URL. + + \image webview.png + + The item includes no scrolling, scaling, + toolbars, etc., those must be implemented around WebView. See the WebBrowser example + for a demonstration of this. + + A QDeclarativeWebView object can be instantiated in Qml using the tag \l WebView. +*/ + +QDeclarativeWebView::QDeclarativeWebView(QDeclarativeItem *parent) + : QDeclarativePaintedItem(*(new QDeclarativeWebViewPrivate), parent) +{ + init(); +} + +QDeclarativeWebView::~QDeclarativeWebView() +{ + Q_D(QDeclarativeWebView); + delete d->page; +} + +void QDeclarativeWebView::init() +{ + Q_D(QDeclarativeWebView); + + QWebSettings::enablePersistentStorage(); + + setAcceptHoverEvents(true); + setAcceptedMouseButtons(Qt::LeftButton); + setFlag(QGraphicsItem::ItemHasNoContents, false); + + d->page = 0; +} + +void QDeclarativeWebView::componentComplete() +{ + QDeclarativePaintedItem::componentComplete(); + Q_D(QDeclarativeWebView); + switch (d->pending) { + case QDeclarativeWebViewPrivate::PendingUrl: + setUrl(d->pending_url); + break; + case QDeclarativeWebViewPrivate::PendingHtml: + setHtml(d->pending_string, d->pending_url); + break; + case QDeclarativeWebViewPrivate::PendingContent: + setContent(d->pending_data, d->pending_string, d->pending_url); + break; + default: + break; + } + d->pending = QDeclarativeWebViewPrivate::PendingNone; + d->updateWindowObjects(); +} + +QDeclarativeWebView::Status QDeclarativeWebView::status() const +{ + Q_D(const QDeclarativeWebView); + return d->status; +} + + +/*! + \qmlproperty real WebView::progress + This property holds the progress of loading the current URL, from 0 to 1. + + If you just want to know when progress gets to 1, use + WebView::onLoadFinished() or WebView::onLoadFailed() instead. +*/ +qreal QDeclarativeWebView::progress() const +{ + Q_D(const QDeclarativeWebView); + return d->progress; +} + +void QDeclarativeWebView::doLoadStarted() +{ + Q_D(QDeclarativeWebView); + + if (!d->url.isEmpty()) { + d->status = Loading; + emit statusChanged(d->status); + } + emit loadStarted(); +} + +void QDeclarativeWebView::doLoadProgress(int p) +{ + Q_D(QDeclarativeWebView); + if (d->progress == p/100.0) + return; + d->progress = p/100.0; + emit progressChanged(); +} + +void QDeclarativeWebView::pageUrlChanged() +{ + Q_D(QDeclarativeWebView); + + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + expandToWebPage(); + + if ((d->url.isEmpty() && page()->mainFrame()->url() != QUrl(QLatin1String("about:blank"))) + || (d->url != page()->mainFrame()->url() && !page()->mainFrame()->url().isEmpty())) + { + d->url = page()->mainFrame()->url(); + if (d->url == QUrl(QLatin1String("about:blank"))) + d->url = QUrl(); + emit urlChanged(); + } +} + +void QDeclarativeWebView::doLoadFinished(bool ok) +{ + Q_D(QDeclarativeWebView); + + if (title().isEmpty()) + pageUrlChanged(); // XXX bug 232556 - pages with no title never get urlChanged() + + if (ok) { + d->status = d->url.isEmpty() ? Null : Ready; + emit loadFinished(); + } else { + d->status = Error; + emit loadFailed(); + } + emit statusChanged(d->status); +} + +/*! + \qmlproperty url WebView::url + This property holds the URL to the page displayed in this item. It can be set, + but also can change spontaneously (eg. because of network redirection). + + If the url is empty, the page is blank. + + The url is always absolute (QML will resolve relative URL strings in the context + of the containing QML document). +*/ +QUrl QDeclarativeWebView::url() const +{ + Q_D(const QDeclarativeWebView); + return d->url; +} + +void QDeclarativeWebView::setUrl(const QUrl &url) +{ + Q_D(QDeclarativeWebView); + if (url == d->url) + return; + + if (isComponentComplete()) { + d->url = url; + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + QUrl seturl = url; + if (seturl.isEmpty()) + seturl = QUrl(QLatin1String("about:blank")); + + Q_ASSERT(!seturl.isRelative()); + + page()->mainFrame()->load(seturl); + + emit urlChanged(); + } else { + d->pending = d->PendingUrl; + d->pending_url = url; + } +} + +/*! + \qmlproperty int WebView::preferredWidth + This property holds the ideal width for displaying the current URL. +*/ +int QDeclarativeWebView::preferredWidth() const +{ + Q_D(const QDeclarativeWebView); + return d->preferredwidth; +} + +void QDeclarativeWebView::setPreferredWidth(int iw) +{ + Q_D(QDeclarativeWebView); + if (d->preferredwidth == iw) return; + d->preferredwidth = iw; + //expandToWebPage(); + emit preferredWidthChanged(); +} + +/*! + \qmlproperty int WebView::preferredHeight + This property holds the ideal height for displaying the current URL. + This only affects the area zoomed by heuristicZoom(). +*/ +int QDeclarativeWebView::preferredHeight() const +{ + Q_D(const QDeclarativeWebView); + return d->preferredheight; +} +void QDeclarativeWebView::setPreferredHeight(int ih) +{ + Q_D(QDeclarativeWebView); + if (d->preferredheight == ih) return; + d->preferredheight = ih; + emit preferredHeightChanged(); +} + +/*! + \qmlmethod bool WebView::evaluateJavaScript(string) + + Evaluates the \a scriptSource JavaScript inside the context of the + main web frame, and returns the result of the last executed statement. + + Note that this JavaScript does \e not have any access to QML objects + except as made available as windowObjects. +*/ +QVariant QDeclarativeWebView::evaluateJavaScript(const QString &scriptSource) +{ + return this->page()->mainFrame()->evaluateJavaScript(scriptSource); +} + +void QDeclarativeWebView::focusChanged(bool hasFocus) +{ + QFocusEvent e(hasFocus ? QEvent::FocusIn : QEvent::FocusOut); + page()->event(&e); + QDeclarativeItem::focusChanged(hasFocus); +} + +void QDeclarativeWebView::initialLayout() +{ + // nothing useful to do at this point +} + +void QDeclarativeWebView::noteContentsSizeChanged(const QSize&) +{ + expandToWebPage(); +} + +void QDeclarativeWebView::expandToWebPage() +{ + Q_D(QDeclarativeWebView); + QSize cs = page()->mainFrame()->contentsSize(); + if (cs.width() < d->preferredwidth) + cs.setWidth(d->preferredwidth); + if (cs.height() < d->preferredheight) + cs.setHeight(d->preferredheight); + if (widthValid()) + cs.setWidth(width()); + if (heightValid()) + cs.setHeight(height()); + if (cs != page()->viewportSize()) { + page()->setViewportSize(cs); + } + if (cs != contentsSize()) + setContentsSize(cs); +} + +void QDeclarativeWebView::geometryChanged(const QRectF &newGeometry, + const QRectF &oldGeometry) +{ + if (newGeometry.size() != oldGeometry.size()) + expandToWebPage(); + QDeclarativePaintedItem::geometryChanged(newGeometry, oldGeometry); +} + +void QDeclarativeWebView::paintPage(const QRect& r) +{ + dirtyCache(r); + update(); +} + +/*! + \qmlproperty list WebView::javaScriptWindowObjects + + This property is a list of object that are available from within + the webview's JavaScript context. + + The \a object will be inserted as a child of the frame's window + object, under the name given by the attached property \c WebView.windowObjectName. + + \qml + WebView { + javaScriptWindowObjects: Object { + WebView.windowObjectName: "coordinates" + } + } + \endqml + + Properties of the object will be exposed as JavaScript properties and slots as + JavaScript methods. + + If Javascript is not enabled for this page, then this property does nothing. +*/ +QDeclarativeListProperty QDeclarativeWebView::javaScriptWindowObjects() +{ + Q_D(QDeclarativeWebView); + return QDeclarativeListProperty(this, d, &QDeclarativeWebViewPrivate::windowObjects_append); +} + +QDeclarativeWebViewAttached *QDeclarativeWebView::qmlAttachedProperties(QObject *o) +{ + return new QDeclarativeWebViewAttached(o); +} + +void QDeclarativeWebViewPrivate::updateWindowObjects() +{ + Q_Q(QDeclarativeWebView); + if (!q->isComponentComplete() || !page) + return; + + for (int ii = 0; ii < windowObjects.count(); ++ii) { + QObject *object = windowObjects.at(ii); + QDeclarativeWebViewAttached *attached = static_cast(qmlAttachedPropertiesObject(object)); + if (attached && !attached->windowObjectName().isEmpty()) { + page->mainFrame()->addToJavaScriptWindowObject(attached->windowObjectName(), object); + } + } +} + +bool QDeclarativeWebView::renderingEnabled() const +{ + Q_D(const QDeclarativeWebView); + return d->rendering; +} + +void QDeclarativeWebView::setRenderingEnabled(bool enabled) +{ + Q_D(QDeclarativeWebView); + if (d->rendering == enabled) + return; + d->rendering = enabled; + emit renderingEnabledChanged(); + + setCacheFrozen(!enabled); + if (enabled) + clearCache(); +} + + +void QDeclarativeWebView::drawContents(QPainter *p, const QRect &r) +{ + Q_D(QDeclarativeWebView); + if (d->rendering) + page()->mainFrame()->render(p,r); +} + +QMouseEvent *QDeclarativeWebView::sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *e) +{ + QEvent::Type t; + switch(e->type()) { + default: + case QEvent::GraphicsSceneMousePress: + t = QEvent::MouseButtonPress; + break; + case QEvent::GraphicsSceneMouseRelease: + t = QEvent::MouseButtonRelease; + break; + case QEvent::GraphicsSceneMouseMove: + t = QEvent::MouseMove; + break; + case QGraphicsSceneEvent::GraphicsSceneMouseDoubleClick: + t = QEvent::MouseButtonDblClick; + break; + } + + QMouseEvent *me = new QMouseEvent(t, (e->pos()/contentsScale()).toPoint(), e->button(), e->buttons(), 0); + return me; +} + +QMouseEvent *QDeclarativeWebView::sceneHoverMoveEventToMouseEvent(QGraphicsSceneHoverEvent *e) +{ + QEvent::Type t = QEvent::MouseMove; + + QMouseEvent *me = new QMouseEvent(t, (e->pos()/contentsScale()).toPoint(), Qt::NoButton, Qt::NoButton, 0); + + return me; +} + + +/*! + \qmlsignal WebView::onDoubleClick(clickx,clicky) + + The WebView does not pass double-click events to the web engine, but rather + emits this signals. +*/ + +void QDeclarativeWebView::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +{ + QMouseEvent *me = sceneMouseEventToMouseEvent(event); + emit doubleClick(me->x(),me->y()); + delete me; +} + +/*! + \qmlmethod bool WebView::heuristicZoom(clickX,clickY,maxzoom) + + Finds a zoom that: + \list + \i shows a whole item + \i includes (\a clickX, \a clickY) + \i fits into the preferredWidth and preferredHeight + \i zooms by no more than \a maxzoom + \i is more than 10% above the current zoom + \endlist + + If such a zoom exists, emits zoomTo(zoom,centerX,centerY) and returns true; otherwise, + no signal is emitted and returns false. +*/ +bool QDeclarativeWebView::heuristicZoom(int clickX, int clickY, qreal maxzoom) +{ + Q_D(QDeclarativeWebView); + if (contentsScale() >= maxzoom/zoomFactor()) + return false; + qreal ozf = contentsScale(); + QRect showarea = elementAreaAt(clickX, clickY, d->preferredwidth/maxzoom, d->preferredheight/maxzoom); + qreal z = qMin(qreal(d->preferredwidth)/showarea.width(),qreal(d->preferredheight)/showarea.height()); + if (z > maxzoom/zoomFactor()) + z = maxzoom/zoomFactor(); + if (z/ozf > 1.2) { + QRectF r(showarea.left()*z, showarea.top()*z, showarea.width()*z, showarea.height()*z); + emit zoomTo(z,r.x()+r.width()/2, r.y()+r.height()/2); + return true; + } else { + return false; + } +} + +/*! + \qmlproperty int WebView::pressGrabTime + + The number of milliseconds the user must press before the WebView + starts passing move events through to the web engine (rather than + letting other QML elements such as a Flickable take them). + + Defaults to 400ms. Set to 0 to always grab and pass move events to + the web engine. +*/ +int QDeclarativeWebView::pressGrabTime() const +{ + Q_D(const QDeclarativeWebView); + return d->pressTime; +} + +void QDeclarativeWebView::setPressGrabTime(int ms) +{ + Q_D(QDeclarativeWebView); + if (d->pressTime == ms) + return; + d->pressTime = ms; + emit pressGrabTimeChanged(); +} + +void QDeclarativeWebView::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + Q_D(QDeclarativeWebView); + + setFocus (true); + QMouseEvent *me = sceneMouseEventToMouseEvent(event); + + d->pressPoint = me->pos(); + if (d->pressTime) { + d->pressTimer.start(d->pressTime,this); + setKeepMouseGrab(false); + } else { + grabMouse(); + setKeepMouseGrab(true); + } + + page()->event(me); + event->setAccepted( +/* + It is not correct to send the press event upwards, if it is not accepted by WebKit + e.g. push button does not work, if done so as QGraphicsScene will not send the release event at all to WebKit + Might be a bug in WebKit, though + */ +#if 1 //QT_VERSION <= 0x040500 // XXX see bug 230835 + true +#else + me->isAccepted() +#endif + ); + delete me; + if (!event->isAccepted()) { + QDeclarativePaintedItem::mousePressEvent(event); + } +} + +void QDeclarativeWebView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + Q_D(QDeclarativeWebView); + + QMouseEvent *me = sceneMouseEventToMouseEvent(event); + page()->event(me); + d->pressTimer.stop(); + event->setAccepted( +/* + It is not correct to send the press event upwards, if it is not accepted by WebKit + e.g. push button does not work, if done so as QGraphicsScene will not send all the events to WebKit + */ +#if 1 //QT_VERSION <= 0x040500 // XXX see bug 230835 + true +#else + me->isAccepted() +#endif + ); + delete me; + if (!event->isAccepted()) { + QDeclarativePaintedItem::mouseReleaseEvent(event); + } + setKeepMouseGrab(false); + ungrabMouse(); +} + +void QDeclarativeWebView::timerEvent(QTimerEvent *event) +{ + Q_D(QDeclarativeWebView); + if (event->timerId() == d->pressTimer.timerId()) { + d->pressTimer.stop(); + grabMouse(); + setKeepMouseGrab(true); + } +} + +void QDeclarativeWebView::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + Q_D(QDeclarativeWebView); + + QMouseEvent *me = sceneMouseEventToMouseEvent(event); + if (d->pressTimer.isActive()) { + if ((me->pos() - d->pressPoint).manhattanLength() > QApplication::startDragDistance()) { + d->pressTimer.stop(); + } + } + if (keepMouseGrab()) { + page()->event(me); + event->setAccepted( +/* + It is not correct to send the press event upwards, if it is not accepted by WebKit + e.g. push button does not work, if done so as QGraphicsScene will not send the release event at all to WebKit + Might be a bug in WebKit, though + */ +#if 1 // QT_VERSION <= 0x040500 // XXX see bug 230835 + true +#else + me->isAccepted() +#endif + ); + } + delete me; + if (!event->isAccepted()) + QDeclarativePaintedItem::mouseMoveEvent(event); + +} +void QDeclarativeWebView::hoverMoveEvent (QGraphicsSceneHoverEvent * event) +{ + QMouseEvent *me = sceneHoverMoveEventToMouseEvent(event); + page()->event(me); + event->setAccepted( +#if QT_VERSION <= 0x040500 // XXX see bug 230835 + true +#else + me->isAccepted() +#endif + ); + delete me; + if (!event->isAccepted()) + QDeclarativePaintedItem::hoverMoveEvent(event); +} + +void QDeclarativeWebView::keyPressEvent(QKeyEvent* event) +{ + page()->event(event); + if (!event->isAccepted()) + QDeclarativePaintedItem::keyPressEvent(event); +} + +void QDeclarativeWebView::keyReleaseEvent(QKeyEvent* event) +{ + page()->event(event); + if (!event->isAccepted()) + QDeclarativePaintedItem::keyReleaseEvent(event); +} + +bool QDeclarativeWebView::sceneEvent(QEvent *event) +{ + if (event->type() == QEvent::KeyPress) { + QKeyEvent *k = static_cast(event); + if (k->key() == Qt::Key_Tab || k->key() == Qt::Key_Backtab) { + if (!(k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) { //### Add MetaModifier? + page()->event(event); + if (event->isAccepted()) + return true; + } + } + } + return QDeclarativePaintedItem::sceneEvent(event); +} + + +/*! + \qmlproperty action WebView::back + This property holds the action for causing the previous URL in the history to be displayed. +*/ +QAction *QDeclarativeWebView::backAction() const +{ + return page()->action(QWebPage::Back); +} + +/*! + \qmlproperty action WebView::forward + This property holds the action for causing the next URL in the history to be displayed. +*/ +QAction *QDeclarativeWebView::forwardAction() const +{ + return page()->action(QWebPage::Forward); +} + +/*! + \qmlproperty action WebView::reload + This property holds the action for reloading with the current URL +*/ +QAction *QDeclarativeWebView::reloadAction() const +{ + return page()->action(QWebPage::Reload); +} + +/*! + \qmlproperty action WebView::stop + This property holds the action for stopping loading with the current URL +*/ +QAction *QDeclarativeWebView::stopAction() const +{ + return page()->action(QWebPage::Stop); +} + +/*! + \qmlproperty real WebView::title + This property holds the title of the web page currently viewed + + By default, this property contains an empty string. +*/ +QString QDeclarativeWebView::title() const +{ + return page()->mainFrame()->title(); +} + + + +/*! + \qmlproperty pixmap WebView::icon + This property holds the icon associated with the web page currently viewed +*/ +QPixmap QDeclarativeWebView::icon() const +{ + return page()->mainFrame()->icon().pixmap(QSize(256,256)); +} + + +/*! + \qmlproperty real WebView::zoomFactor + This property holds the multiplier used to scale the contents of a Web page. +*/ +void QDeclarativeWebView::setZoomFactor(qreal factor) +{ + Q_D(QDeclarativeWebView); + if (factor == page()->mainFrame()->zoomFactor()) + return; + + page()->mainFrame()->setZoomFactor(factor); + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth*factor : width()*factor, + d->preferredheight>0 ? d->preferredheight*factor : height()*factor)); + expandToWebPage(); + + emit zoomFactorChanged(); +} + +qreal QDeclarativeWebView::zoomFactor() const +{ + return page()->mainFrame()->zoomFactor(); +} + +/*! + \qmlproperty string WebView::statusText + + This property is the current status suggested by the current web page. In a web browser, + such status is often shown in some kind of status bar. +*/ +void QDeclarativeWebView::setStatusText(const QString& s) +{ + Q_D(QDeclarativeWebView); + d->statusText = s; + emit statusTextChanged(); +} + +void QDeclarativeWebView::windowObjectCleared() +{ + Q_D(QDeclarativeWebView); + d->updateWindowObjects(); +} + +QString QDeclarativeWebView::statusText() const +{ + Q_D(const QDeclarativeWebView); + return d->statusText; +} + +QWebPage *QDeclarativeWebView::page() const +{ + Q_D(const QDeclarativeWebView); + + if (!d->page) { + QDeclarativeWebView *self = const_cast(this); + QWebPage *wp = new QDeclarativeWebPage(self); + + // QML items don't default to having a background, + // even though most we pages will set one anyway. + QPalette pal = QApplication::palette(); + pal.setBrush(QPalette::Base, QColor::fromRgbF(0, 0, 0, 0)); + wp->setPalette(pal); + + wp->setNetworkAccessManager(qmlEngine(this)->networkAccessManager()); + + self->setPage(wp); + + return wp; + } + + return d->page; +} + + +// The QObject interface to settings(). +/*! + \qmlproperty string WebView::settings.standardFontFamily + \qmlproperty string WebView::settings.fixedFontFamily + \qmlproperty string WebView::settings.serifFontFamily + \qmlproperty string WebView::settings.sansSerifFontFamily + \qmlproperty string WebView::settings.cursiveFontFamily + \qmlproperty string WebView::settings.fantasyFontFamily + + \qmlproperty int WebView::settings.minimumFontSize + \qmlproperty int WebView::settings.minimumLogicalFontSize + \qmlproperty int WebView::settings.defaultFontSize + \qmlproperty int WebView::settings.defaultFixedFontSize + + \qmlproperty bool WebView::settings.autoLoadImages + \qmlproperty bool WebView::settings.javascriptEnabled + \qmlproperty bool WebView::settings.javaEnabled + \qmlproperty bool WebView::settings.pluginsEnabled + \qmlproperty bool WebView::settings.privateBrowsingEnabled + \qmlproperty bool WebView::settings.javascriptCanOpenWindows + \qmlproperty bool WebView::settings.javascriptCanAccessClipboard + \qmlproperty bool WebView::settings.developerExtrasEnabled + \qmlproperty bool WebView::settings.linksIncludedInFocusChain + \qmlproperty bool WebView::settings.zoomTextOnly + \qmlproperty bool WebView::settings.printElementBackgrounds + \qmlproperty bool WebView::settings.offlineStorageDatabaseEnabled + \qmlproperty bool WebView::settings.offlineWebApplicationCacheEnabled + \qmlproperty bool WebView::settings.localStorageDatabaseEnabled + \qmlproperty bool WebView::settings.localContentCanAccessRemoteUrls + + These properties give access to the settings controlling the web view. + + See QWebSettings for details of these properties. + + \qml + WebView { + settings.pluginsEnabled: true + settings.standardFontFamily: "Arial" + ... + } + \endqml +*/ +QObject *QDeclarativeWebView::settingsObject() const +{ + Q_D(const QDeclarativeWebView); + d->settings.s = page()->settings(); + return &d->settings; +} + +void QDeclarativeWebView::setPage(QWebPage *page) +{ + Q_D(QDeclarativeWebView); + if (d->page == page) + return; + if (d->page) { + if (d->page->parent() == this) { + delete d->page; + } else { + d->page->disconnect(this); + } + } + d->page = page; + d->page->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + d->page->mainFrame()->setScrollBarPolicy(Qt::Horizontal,Qt::ScrollBarAlwaysOff); + d->page->mainFrame()->setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff); + connect(d->page,SIGNAL(repaintRequested(QRect)),this,SLOT(paintPage(QRect))); + connect(d->page->mainFrame(),SIGNAL(urlChanged(QUrl)),this,SLOT(pageUrlChanged())); + connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(titleChanged(QString))); + connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(iconChanged())); + connect(d->page->mainFrame(), SIGNAL(iconChanged()), this, SIGNAL(iconChanged())); + connect(d->page->mainFrame(), SIGNAL(contentsSizeChanged(QSize)), this, SLOT(noteContentsSizeChanged(QSize))); + connect(d->page->mainFrame(), SIGNAL(initialLayoutCompleted()), this, SLOT(initialLayout())); + + connect(d->page,SIGNAL(loadStarted()),this,SLOT(doLoadStarted())); + connect(d->page,SIGNAL(loadProgress(int)),this,SLOT(doLoadProgress(int))); + connect(d->page,SIGNAL(loadFinished(bool)),this,SLOT(doLoadFinished(bool))); + connect(d->page,SIGNAL(statusBarMessage(QString)),this,SLOT(setStatusText(QString))); + + connect(d->page->mainFrame(),SIGNAL(javaScriptWindowObjectCleared()),this,SLOT(windowObjectCleared())); +} + +/*! + \qmlsignal WebView::onLoadStarted() + + This handler is called when the web engine begins loading + a page. Later, WebView::onLoadFinished() or WebView::onLoadFailed() + will be emitted. +*/ + +/*! + \qmlsignal WebView::onLoadFinished() + + This handler is called when the web engine \e successfully + finishes loading a page, including any component content + (WebView::onLoadFailed() will be emitted otherwise). + + \sa progress +*/ + +/*! + \qmlsignal WebView::onLoadFailed() + + This handler is called when the web engine fails loading + a page or any component content + (WebView::onLoadFinished() will be emitted on success). +*/ + +void QDeclarativeWebView::load(const QNetworkRequest &request, + QNetworkAccessManager::Operation operation, + const QByteArray &body) +{ + page()->mainFrame()->load(request, operation, body); +} + +QString QDeclarativeWebView::html() const +{ + return page()->mainFrame()->toHtml(); +} + +/*! + \qmlproperty string WebView::html + This property holds HTML text set directly + + The html property can be set as a string. + + \qml + WebView { + html: "

This is HTML." + } + \endqml +*/ +void QDeclarativeWebView::setHtml(const QString &html, const QUrl &baseUrl) +{ + Q_D(QDeclarativeWebView); + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + if (isComponentComplete()) + page()->mainFrame()->setHtml(html, baseUrl); + else { + d->pending = d->PendingHtml; + d->pending_url = baseUrl; + d->pending_string = html; + } + emit htmlChanged(); +} + +void QDeclarativeWebView::setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl) +{ + Q_D(QDeclarativeWebView); + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + + if (isComponentComplete()) + page()->mainFrame()->setContent(data,mimeType,qmlContext(this)->resolvedUrl(baseUrl)); + else { + d->pending = d->PendingContent; + d->pending_url = baseUrl; + d->pending_string = mimeType; + d->pending_data = data; + } +} + +QWebHistory *QDeclarativeWebView::history() const +{ + return page()->history(); +} + +QWebSettings *QDeclarativeWebView::settings() const +{ + return page()->settings(); +} + +QDeclarativeWebView *QDeclarativeWebView::createWindow(QWebPage::WebWindowType type) +{ + Q_D(QDeclarativeWebView); + switch (type) { + case QWebPage::WebBrowserWindow: { + if (!d->newWindowComponent && d->newWindowParent) + qWarning("WebView::newWindowComponent not set - WebView::newWindowParent ignored"); + else if (d->newWindowComponent && !d->newWindowParent) + qWarning("WebView::newWindowParent not set - WebView::newWindowComponent ignored"); + else if (d->newWindowComponent && d->newWindowParent) { + QDeclarativeWebView *webview = 0; + QDeclarativeContext *windowContext = new QDeclarativeContext(qmlContext(this)); + + QObject *nobj = d->newWindowComponent->create(windowContext); + if (nobj) { + windowContext->setParent(nobj); + QDeclarativeItem *item = qobject_cast(nobj); + if (!item) { + delete nobj; + } else { + webview = item->findChild(); + if (!webview) { + delete item; + } else { + nobj->setParent(d->newWindowParent); + static_cast(item)->setParentItem(d->newWindowParent); + } + } + } else { + delete windowContext; + } + + return webview; + } + } + break; + case QWebPage::WebModalDialog: { + // Not supported + } + } + return 0; +} + +/*! + \qmlproperty component WebView::newWindowComponent + + This property holds the component to use for new windows. + The component must have a WebView somewhere in its structure. + + When the web engine requests a new window, it will be an instance of + this component. + + The parent of the new window is set by newWindowParent. It must be set. +*/ +QDeclarativeComponent *QDeclarativeWebView::newWindowComponent() const +{ + Q_D(const QDeclarativeWebView); + return d->newWindowComponent; +} + +void QDeclarativeWebView::setNewWindowComponent(QDeclarativeComponent *newWindow) +{ + Q_D(QDeclarativeWebView); + if (newWindow == d->newWindowComponent) + return; + d->newWindowComponent = newWindow; + emit newWindowComponentChanged(); +} + + +/*! + \qmlproperty item WebView::newWindowParent + + The parent item for new windows. + + \sa newWindowComponent +*/ +QDeclarativeItem *QDeclarativeWebView::newWindowParent() const +{ + Q_D(const QDeclarativeWebView); + return d->newWindowParent; +} + +void QDeclarativeWebView::setNewWindowParent(QDeclarativeItem *parent) +{ + Q_D(QDeclarativeWebView); + if (parent == d->newWindowParent) + return; + if (d->newWindowParent && parent) { + QList children = d->newWindowParent->childItems(); + for (int i = 0; i < children.count(); ++i) { + children.at(i)->setParentItem(parent); + } + } + d->newWindowParent = parent; + emit newWindowParentChanged(); +} + +/*! + Returns the area of the largest element at position (\a x,\a y) that is no larger + than \a maxwidth by \a maxheight pixels. + + May return an area larger in the case when no smaller element is at the position. +*/ +QRect QDeclarativeWebView::elementAreaAt(int x, int y, int maxwidth, int maxheight) const +{ + QWebHitTestResult hit = page()->mainFrame()->hitTestContent(QPoint(x,y)); + QRect rv = hit.boundingRect(); + QWebElement element = hit.enclosingBlockElement(); + if (maxwidth<=0) maxwidth = INT_MAX; + if (maxheight<=0) maxheight = INT_MAX; + while (!element.parent().isNull() && element.geometry().width() <= maxwidth && element.geometry().height() <= maxheight) { + rv = element.geometry(); + element = element.parent(); + } + return rv; +} + +/*! + \internal + \class QDeclarativeWebPage + \brief The QDeclarativeWebPage class is a QWebPage that can create QML plugins. + + \sa QDeclarativeWebView +*/ +QDeclarativeWebPage::QDeclarativeWebPage(QDeclarativeWebView *parent) : + QWebPage(parent) +{ +} + +QDeclarativeWebPage::~QDeclarativeWebPage() +{ +} + +void QDeclarativeWebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) +{ + qWarning() << sourceID << ':' << lineNumber << ':' << message; +} + +QString QDeclarativeWebPage::chooseFile(QWebFrame *originatingFrame, const QString& oldFile) +{ + // Not supported (it's modal) + Q_UNUSED(originatingFrame) + Q_UNUSED(oldFile) + return oldFile; +} + +void QDeclarativeWebPage::javaScriptAlert(QWebFrame *originatingFrame, const QString& msg) +{ + Q_UNUSED(originatingFrame) + emit viewItem()->alert(msg); +} + +bool QDeclarativeWebPage::javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg) +{ + // Not supported (it's modal) + Q_UNUSED(originatingFrame) + Q_UNUSED(msg) + return false; +} + +bool QDeclarativeWebPage::javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result) +{ + // Not supported (it's modal) + Q_UNUSED(originatingFrame) + Q_UNUSED(msg) + Q_UNUSED(defaultValue) + Q_UNUSED(result) + return false; +} + + +/* + Qt WebKit does not understand non-QWidget plugins, so dummy widgets + are created, parented to a single dummy tool window. + + The requirements for QML object plugins are input to the Qt WebKit + non-QWidget plugin support, which will obsolete this kludge. +*/ +class QWidget_Dummy_Plugin : public QWidget +{ + Q_OBJECT +public: + static QWidget *dummy_shared_parent() + { + static QWidget *dsp = 0; + if (!dsp) { + dsp = new QWidget(0,Qt::Tool); + dsp->setGeometry(-10000,-10000,0,0); + dsp->show(); + } + return dsp; + } + QWidget_Dummy_Plugin(const QUrl& url, QDeclarativeWebView *view, const QStringList ¶mNames, const QStringList ¶mValues) : + QWidget(dummy_shared_parent()), + propertyNames(paramNames), + propertyValues(paramValues), + webview(view) + { + QDeclarativeEngine *engine = qmlEngine(webview); + component = new QDeclarativeComponent(engine, url, this); + item = 0; + if (component->isLoading()) + connect(component, SIGNAL(statusChanged(QDeclarativeComponent::Status)), this, SLOT(qmlLoaded())); + else + qmlLoaded(); + } + +public Q_SLOTS: + void qmlLoaded() + { + if (component->isError()) { + // ### Could instead give these errors to the WebView to handle. + qWarning() << component->errors(); + return; + } + item = qobject_cast(component->create(qmlContext(webview))); + item->setParent(webview); + QString jsObjName; + for (int i=0; isetProperty(propertyNames[i].toUtf8(),propertyValues[i]); + if (propertyNames[i] == QLatin1String("objectname")) + jsObjName = propertyValues[i]; + } + } + if (!jsObjName.isNull()) { + QWebFrame *f = webview->page()->mainFrame(); + f->addToJavaScriptWindowObject(jsObjName, item); + } + resizeEvent(0); + delete component; + component = 0; + } + void resizeEvent(QResizeEvent*) + { + if (item) { + item->setX(x()); + item->setY(y()); + item->setWidth(width()); + item->setHeight(height()); + } + } + +private: + QDeclarativeComponent *component; + QDeclarativeItem *item; + QStringList propertyNames, propertyValues; + QDeclarativeWebView *webview; +}; + +QDeclarativeWebView *QDeclarativeWebPage::viewItem() +{ + return static_cast(parent()); +} + +QObject *QDeclarativeWebPage::createPlugin(const QString &, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues) +{ + QUrl comp = qmlContext(viewItem())->resolvedUrl(url); + return new QWidget_Dummy_Plugin(comp,viewItem(),paramNames,paramValues); +} + +QWebPage *QDeclarativeWebPage::createWindow(WebWindowType type) +{ + QDeclarativeWebView *newView = viewItem()->createWindow(type); + if (newView) + return newView->page(); + return 0; +} + +QT_END_NAMESPACE + +#include diff --git a/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p.h b/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p.h new file mode 100644 index 0000000..0bb5d29 --- /dev/null +++ b/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p.h @@ -0,0 +1,285 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 QDECLARATIVEWEBVIEW_H +#define QDECLARATIVEWEBVIEW_H + +#include + +#include +#include +#include +#include + +QT_BEGIN_HEADER + +class QWebHistory; +class QWebSettings; + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) +class QDeclarativeWebViewPrivate; +class QNetworkRequest; +class QDeclarativeWebView; + +class Q_DECLARATIVE_EXPORT QDeclarativeWebPage : public QWebPage +{ + Q_OBJECT +public: + explicit QDeclarativeWebPage(QDeclarativeWebView *parent); + ~QDeclarativeWebPage(); +protected: + QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues); + QWebPage *createWindow(WebWindowType type); + void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID); + QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile); + void javaScriptAlert(QWebFrame *originatingFrame, const QString& msg); + bool javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg); + bool javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result); + +private: + QDeclarativeWebView *viewItem(); +}; + + +class QDeclarativeWebViewAttached; + +//### TODO: browser plugins + +class Q_DECLARATIVE_EXPORT QDeclarativeWebView : public QDeclarativePaintedItem +{ + Q_OBJECT + + Q_ENUMS(Status SelectionMode) + + Q_PROPERTY(QString title READ title NOTIFY titleChanged) + Q_PROPERTY(QPixmap icon READ icon NOTIFY iconChanged) + Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged) + Q_PROPERTY(QString statusText READ statusText NOTIFY statusTextChanged) + + Q_PROPERTY(QString html READ html WRITE setHtml NOTIFY htmlChanged) + + Q_PROPERTY(int pressGrabTime READ pressGrabTime WRITE setPressGrabTime NOTIFY pressGrabTimeChanged) + + Q_PROPERTY(int preferredWidth READ preferredWidth WRITE setPreferredWidth NOTIFY preferredWidthChanged) + Q_PROPERTY(int preferredHeight READ preferredHeight WRITE setPreferredHeight NOTIFY preferredHeightChanged) + Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) + Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged) + Q_PROPERTY(Status status READ status NOTIFY statusChanged) + + Q_PROPERTY(QAction* reload READ reloadAction CONSTANT) + Q_PROPERTY(QAction* back READ backAction CONSTANT) + Q_PROPERTY(QAction* forward READ forwardAction CONSTANT) + Q_PROPERTY(QAction* stop READ stopAction CONSTANT) + + Q_PROPERTY(QObject* settings READ settingsObject CONSTANT) + + Q_PROPERTY(QDeclarativeListProperty javaScriptWindowObjects READ javaScriptWindowObjects CONSTANT) + + Q_PROPERTY(QDeclarativeComponent* newWindowComponent READ newWindowComponent WRITE setNewWindowComponent NOTIFY newWindowComponentChanged) + Q_PROPERTY(QDeclarativeItem* newWindowParent READ newWindowParent WRITE setNewWindowParent NOTIFY newWindowParentChanged) + + Q_PROPERTY(bool renderingEnabled READ renderingEnabled WRITE setRenderingEnabled NOTIFY renderingEnabledChanged) + +public: + QDeclarativeWebView(QDeclarativeItem *parent=0); + ~QDeclarativeWebView(); + + QUrl url() const; + void setUrl(const QUrl &); + + QString title() const; + + QPixmap icon() const; + + qreal zoomFactor() const; + void setZoomFactor(qreal); + Q_INVOKABLE bool heuristicZoom(int clickX, int clickY, qreal maxzoom); + QRect elementAreaAt(int x, int y, int minwidth, int minheight) const; + + int pressGrabTime() const; + void setPressGrabTime(int); + + int preferredWidth() const; + void setPreferredWidth(int); + int preferredHeight() const; + void setPreferredHeight(int); + + enum Status { Null, Ready, Loading, Error }; + Status status() const; + qreal progress() const; + QString statusText() const; + + QAction *reloadAction() const; + QAction *backAction() const; + QAction *forwardAction() const; + QAction *stopAction() const; + + QWebPage *page() const; + void setPage(QWebPage *page); + + void load(const QNetworkRequest &request, + QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, + const QByteArray &body = QByteArray()); + + QString html() const; + + void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); + void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); + + QWebHistory *history() const; + QWebSettings *settings() const; + QObject *settingsObject() const; + + bool renderingEnabled() const; + void setRenderingEnabled(bool); + + QDeclarativeListProperty javaScriptWindowObjects(); + + static QDeclarativeWebViewAttached *qmlAttachedProperties(QObject *); + + QDeclarativeComponent *newWindowComponent() const; + void setNewWindowComponent(QDeclarativeComponent *newWindow); + QDeclarativeItem *newWindowParent() const; + void setNewWindowParent(QDeclarativeItem *newWindow); + +Q_SIGNALS: + void preferredWidthChanged(); + void preferredHeightChanged(); + void urlChanged(); + void progressChanged(); + void statusChanged(Status); + void titleChanged(const QString&); + void iconChanged(); + void statusTextChanged(); + void htmlChanged(); + void pressGrabTimeChanged(); + void zoomFactorChanged(); + void newWindowComponentChanged(); + void newWindowParentChanged(); + void renderingEnabledChanged(); + + void loadStarted(); + void loadFinished(); + void loadFailed(); + + void doubleClick(int clickX, int clickY); + + void zoomTo(qreal zoom, int centerX, int centerY); + + void alert(const QString& message); + +public Q_SLOTS: + QVariant evaluateJavaScript(const QString&); + +private Q_SLOTS: + void expandToWebPage(); + void paintPage(const QRect&); + void doLoadStarted(); + void doLoadProgress(int p); + void doLoadFinished(bool ok); + void setStatusText(const QString&); + void windowObjectCleared(); + void pageUrlChanged(); + void noteContentsSizeChanged(const QSize&); + void initialLayout(); + +protected: + void drawContents(QPainter *, const QRect &); + + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + void timerEvent(QTimerEvent *event); + void hoverMoveEvent (QGraphicsSceneHoverEvent * event); + void keyPressEvent(QKeyEvent* event); + void keyReleaseEvent(QKeyEvent* event); + virtual void geometryChanged(const QRectF &newGeometry, + const QRectF &oldGeometry); + virtual void focusChanged(bool); + virtual bool sceneEvent(QEvent *event); + QDeclarativeWebView *createWindow(QWebPage::WebWindowType type); + +private: + void init(); + virtual void componentComplete(); + Q_DISABLE_COPY(QDeclarativeWebView) + Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeWebView) + QMouseEvent *sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *); + QMouseEvent *sceneHoverMoveEventToMouseEvent(QGraphicsSceneHoverEvent *); + friend class QDeclarativeWebPage; +}; + +class QDeclarativeWebViewAttached : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString windowObjectName READ windowObjectName WRITE setWindowObjectName) +public: + QDeclarativeWebViewAttached(QObject *parent) + : QObject(parent) + { + } + + QString windowObjectName() const + { + return m_windowObjectName; + } + + void setWindowObjectName(const QString &n) + { + m_windowObjectName = n; + } + +private: + QString m_windowObjectName; +}; + + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QDeclarativeWebView) +QML_DECLARE_TYPEINFO(QDeclarativeWebView, QML_HAS_ATTACHED_PROPERTIES) + +QT_END_HEADER + +#endif diff --git a/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p_p.h b/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p_p.h new file mode 100644 index 0000000..258b472 --- /dev/null +++ b/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p_p.h @@ -0,0 +1,151 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 QDECLARATIVEWEBVIEW_P_H +#define QDECLARATIVEWEBVIEW_P_H + +#include + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +class QDeclarativeWebSettings : public QObject { + Q_OBJECT + + Q_PROPERTY(QString standardFontFamily READ standardFontFamily WRITE setStandardFontFamily) + Q_PROPERTY(QString fixedFontFamily READ fixedFontFamily WRITE setFixedFontFamily) + Q_PROPERTY(QString serifFontFamily READ serifFontFamily WRITE setSerifFontFamily) + Q_PROPERTY(QString sansSerifFontFamily READ sansSerifFontFamily WRITE setSansSerifFontFamily) + Q_PROPERTY(QString cursiveFontFamily READ cursiveFontFamily WRITE setCursiveFontFamily) + Q_PROPERTY(QString fantasyFontFamily READ fantasyFontFamily WRITE setFantasyFontFamily) + + Q_PROPERTY(int minimumFontSize READ minimumFontSize WRITE setMinimumFontSize) + Q_PROPERTY(int minimumLogicalFontSize READ minimumLogicalFontSize WRITE setMinimumLogicalFontSize) + Q_PROPERTY(int defaultFontSize READ defaultFontSize WRITE setDefaultFontSize) + Q_PROPERTY(int defaultFixedFontSize READ defaultFixedFontSize WRITE setDefaultFixedFontSize) + + Q_PROPERTY(bool autoLoadImages READ autoLoadImages WRITE setAutoLoadImages) + Q_PROPERTY(bool javascriptEnabled READ javascriptEnabled WRITE setJavascriptEnabled) + Q_PROPERTY(bool javaEnabled READ javaEnabled WRITE setJavaEnabled) + Q_PROPERTY(bool pluginsEnabled READ pluginsEnabled WRITE setPluginsEnabled) + Q_PROPERTY(bool privateBrowsingEnabled READ privateBrowsingEnabled WRITE setPrivateBrowsingEnabled) + Q_PROPERTY(bool javascriptCanOpenWindows READ javascriptCanOpenWindows WRITE setJavascriptCanOpenWindows) + Q_PROPERTY(bool javascriptCanAccessClipboard READ javascriptCanAccessClipboard WRITE setJavascriptCanAccessClipboard) + Q_PROPERTY(bool developerExtrasEnabled READ developerExtrasEnabled WRITE setDeveloperExtrasEnabled) + Q_PROPERTY(bool linksIncludedInFocusChain READ linksIncludedInFocusChain WRITE setLinksIncludedInFocusChain) + Q_PROPERTY(bool zoomTextOnly READ zoomTextOnly WRITE setZoomTextOnly) + Q_PROPERTY(bool printElementBackgrounds READ printElementBackgrounds WRITE setPrintElementBackgrounds) + Q_PROPERTY(bool offlineStorageDatabaseEnabled READ offlineStorageDatabaseEnabled WRITE setOfflineStorageDatabaseEnabled) + Q_PROPERTY(bool offlineWebApplicationCacheEnabled READ offlineWebApplicationCacheEnabled WRITE setOfflineWebApplicationCacheEnabled) + Q_PROPERTY(bool localStorageDatabaseEnabled READ localStorageDatabaseEnabled WRITE setLocalStorageDatabaseEnabled) + Q_PROPERTY(bool localContentCanAccessRemoteUrls READ localContentCanAccessRemoteUrls WRITE setLocalContentCanAccessRemoteUrls) + +public: + QDeclarativeWebSettings() {} + + QString standardFontFamily() const { return s->fontFamily(QWebSettings::StandardFont); } + void setStandardFontFamily(const QString& f) { s->setFontFamily(QWebSettings::StandardFont,f); } + QString fixedFontFamily() const { return s->fontFamily(QWebSettings::FixedFont); } + void setFixedFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FixedFont,f); } + QString serifFontFamily() const { return s->fontFamily(QWebSettings::SerifFont); } + void setSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SerifFont,f); } + QString sansSerifFontFamily() const { return s->fontFamily(QWebSettings::SansSerifFont); } + void setSansSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SansSerifFont,f); } + QString cursiveFontFamily() const { return s->fontFamily(QWebSettings::CursiveFont); } + void setCursiveFontFamily(const QString& f) { s->setFontFamily(QWebSettings::CursiveFont,f); } + QString fantasyFontFamily() const { return s->fontFamily(QWebSettings::FantasyFont); } + void setFantasyFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FantasyFont,f); } + + int minimumFontSize() const { return s->fontSize(QWebSettings::MinimumFontSize); } + void setMinimumFontSize(int size) { s->setFontSize(QWebSettings::MinimumFontSize,size); } + int minimumLogicalFontSize() const { return s->fontSize(QWebSettings::MinimumLogicalFontSize); } + void setMinimumLogicalFontSize(int size) { s->setFontSize(QWebSettings::MinimumLogicalFontSize,size); } + int defaultFontSize() const { return s->fontSize(QWebSettings::DefaultFontSize); } + void setDefaultFontSize(int size) { s->setFontSize(QWebSettings::DefaultFontSize,size); } + int defaultFixedFontSize() const { return s->fontSize(QWebSettings::DefaultFixedFontSize); } + void setDefaultFixedFontSize(int size) { s->setFontSize(QWebSettings::DefaultFixedFontSize,size); } + + bool autoLoadImages() const { return s->testAttribute(QWebSettings::AutoLoadImages); } + void setAutoLoadImages(bool on) { s->setAttribute(QWebSettings::AutoLoadImages, on); } + bool javascriptEnabled() const { return s->testAttribute(QWebSettings::JavascriptEnabled); } + void setJavascriptEnabled(bool on) { s->setAttribute(QWebSettings::JavascriptEnabled, on); } + bool javaEnabled() const { return s->testAttribute(QWebSettings::JavaEnabled); } + void setJavaEnabled(bool on) { s->setAttribute(QWebSettings::JavaEnabled, on); } + bool pluginsEnabled() const { return s->testAttribute(QWebSettings::PluginsEnabled); } + void setPluginsEnabled(bool on) { s->setAttribute(QWebSettings::PluginsEnabled, on); } + bool privateBrowsingEnabled() const { return s->testAttribute(QWebSettings::PrivateBrowsingEnabled); } + void setPrivateBrowsingEnabled(bool on) { s->setAttribute(QWebSettings::PrivateBrowsingEnabled, on); } + bool javascriptCanOpenWindows() const { return s->testAttribute(QWebSettings::JavascriptCanOpenWindows); } + void setJavascriptCanOpenWindows(bool on) { s->setAttribute(QWebSettings::JavascriptCanOpenWindows, on); } + bool javascriptCanAccessClipboard() const { return s->testAttribute(QWebSettings::JavascriptCanAccessClipboard); } + void setJavascriptCanAccessClipboard(bool on) { s->setAttribute(QWebSettings::JavascriptCanAccessClipboard, on); } + bool developerExtrasEnabled() const { return s->testAttribute(QWebSettings::DeveloperExtrasEnabled); } + void setDeveloperExtrasEnabled(bool on) { s->setAttribute(QWebSettings::DeveloperExtrasEnabled, on); } + bool linksIncludedInFocusChain() const { return s->testAttribute(QWebSettings::LinksIncludedInFocusChain); } + void setLinksIncludedInFocusChain(bool on) { s->setAttribute(QWebSettings::LinksIncludedInFocusChain, on); } + bool zoomTextOnly() const { return s->testAttribute(QWebSettings::ZoomTextOnly); } + void setZoomTextOnly(bool on) { s->setAttribute(QWebSettings::ZoomTextOnly, on); } + bool printElementBackgrounds() const { return s->testAttribute(QWebSettings::PrintElementBackgrounds); } + void setPrintElementBackgrounds(bool on) { s->setAttribute(QWebSettings::PrintElementBackgrounds, on); } + bool offlineStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::OfflineStorageDatabaseEnabled); } + void setOfflineStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, on); } + bool offlineWebApplicationCacheEnabled() const { return s->testAttribute(QWebSettings::OfflineWebApplicationCacheEnabled); } + void setOfflineWebApplicationCacheEnabled(bool on) { s->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, on); } + bool localStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::LocalStorageDatabaseEnabled); } + void setLocalStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, on); } + bool localContentCanAccessRemoteUrls() const { return s->testAttribute(QWebSettings::LocalContentCanAccessRemoteUrls); } + void setLocalContentCanAccessRemoteUrls(bool on) { s->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, on); } + + QWebSettings *s; +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QDeclarativeWebSettings) + +QT_END_HEADER + +#endif diff --git a/src/plugins/qdeclarativemodules/webkitqmlplugin/webkitqmlplugin.pro b/src/plugins/qdeclarativemodules/webkitqmlplugin/webkitqmlplugin.pro new file mode 100644 index 0000000..37fe37c --- /dev/null +++ b/src/plugins/qdeclarativemodules/webkitqmlplugin/webkitqmlplugin.pro @@ -0,0 +1,18 @@ +TARGET = webkitqmlplugin +include(../../qpluginbase.pri) + +contains(QT_CONFIG, webkit) { + QT += webkit declarative + + SOURCES += qdeclarativewebview.cpp plugin.cpp + HEADERS += qdeclarativewebview_p.h + HEADERS += qdeclarativewebview_p_p.h + + QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/org/webkit + target.path = $$[QT_INSTALL_IMPORTS]/org/webkit + + qmldir.files += $$QT_BUILD_TREE/imports/org/webkit/qmldir + qmldir.path += $$[QT_INSTALL_IMPORTS]/org/webkit + + INSTALLS += target qmldir +} diff --git a/tests/auto/declarative/qdeclarativewebview/data/basic.qml b/tests/auto/declarative/qdeclarativewebview/data/basic.qml index 5394837..f0b41ef 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/basic.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/basic.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { url: "basic.html" diff --git a/tests/auto/declarative/qdeclarativewebview/data/elements.qml b/tests/auto/declarative/qdeclarativewebview/data/elements.qml index 7c030e6..16e5788 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/elements.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/elements.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { url: "elements.html" diff --git a/tests/auto/declarative/qdeclarativewebview/data/javaScript.qml b/tests/auto/declarative/qdeclarativewebview/data/javaScript.qml index 07eee88..0e92e0e 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/javaScript.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/javaScript.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { url: "javaScript.html" diff --git a/tests/auto/declarative/qdeclarativewebview/data/loadError.qml b/tests/auto/declarative/qdeclarativewebview/data/loadError.qml index 1460f30..f827238 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/loadError.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/loadError.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { url: "does-not-exist.html" diff --git a/tests/auto/declarative/qdeclarativewebview/data/newwindows.qml b/tests/auto/declarative/qdeclarativewebview/data/newwindows.qml index 0bc8263..4d9df43 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/newwindows.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/newwindows.qml @@ -1,6 +1,7 @@ // Demonstrates opening new WebViews from HTML import Qt 4.6 +import org.webkit 1.0 Grid { columns: 3 diff --git a/tests/auto/declarative/qdeclarativewebview/data/propertychanges.qml b/tests/auto/declarative/qdeclarativewebview/data/propertychanges.qml index 3dd4e51..0770acf 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/propertychanges.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/propertychanges.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 Item { width: 240 @@ -30,4 +31,4 @@ Item { pressGrabTime: 200 } } -} \ No newline at end of file +} diff --git a/tests/auto/declarative/qdeclarativewebview/data/sethtml.qml b/tests/auto/declarative/qdeclarativewebview/data/sethtml.qml index 063b5a8..9e17597 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/sethtml.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/sethtml.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { html: "

This is a string set on the WebView" diff --git a/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro b/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro index 6af0a60..20173c6 100644 --- a/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro +++ b/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro @@ -3,8 +3,7 @@ contains(QT_CONFIG,declarative): QT += declarative contains(QT_CONFIG,webkit): QT += webkit macx:CONFIG -= app_bundle -SOURCES += tst_qdeclarativewebview.cpp testtypes.cpp -HEADERS += testtypes.h +SOURCES += tst_qdeclarativewebview.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qdeclarativewebview/testtypes.cpp b/tests/auto/declarative/qdeclarativewebview/testtypes.cpp deleted file mode 100644 index 7efc214..0000000 --- a/tests/auto/declarative/qdeclarativewebview/testtypes.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** -** -** 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 "testtypes.h" - -void MyWebView::drawContents(QPainter *p, const QRect &r) -{ - pp += r.width()*r.height(); - QDeclarativeWebView::drawContents(p,r); -} - -void registerTypes() -{ - QML_REGISTER_TYPE(Test,1,0,MyWebView,MyWebView); -} diff --git a/tests/auto/declarative/qdeclarativewebview/testtypes.h b/tests/auto/declarative/qdeclarativewebview/testtypes.h deleted file mode 100644 index 8eb703f..0000000 --- a/tests/auto/declarative/qdeclarativewebview/testtypes.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** 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 TESTTYPES_H -#define TESTTYPES_H - -#include - -class MyWebView : public QDeclarativeWebView -{ - Q_OBJECT - Q_PROPERTY(int pixelsPainted READ pixelsPainted); - -public: - MyWebView() : pp(0) {} - - int pixelsPainted() const { return pp; } - - void drawContents(QPainter *p, const QRect &r); - -private: - int pp; -}; - -QML_DECLARE_TYPE(MyWebView); - -void registerTypes(); - -#endif // TESTTYPES_H diff --git a/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp b/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp index 6d16056..1d6bedc 100644 --- a/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp +++ b/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp @@ -43,15 +43,12 @@ #include "../../../shared/util.h" #include #include -#include -#include #include #include #include #include #include #include -#include "testtypes.h" class tst_qdeclarativewebview : public QObject { @@ -70,7 +67,7 @@ private slots: void setHtml(); void javaScript(); void cleanupTestCase(); - void pixelCache(); + //void pixelCache(); void newWindowParent(); void newWindowComponent(); void renderingEnabled(); @@ -89,7 +86,6 @@ private: void tst_qdeclarativewebview::initTestCase() { - registerTypes(); } static QString strippedHtml(QString html) @@ -148,81 +144,81 @@ void tst_qdeclarativewebview::basicProperties() checkNoErrors(component); QWebSettings::enablePersistentStorage(tmpDir()); - QDeclarativeWebView *wv = qobject_cast(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); - QCOMPARE(wv->title(),QString("Basic")); - QTRY_COMPARE(wv->icon().width(), 48); - QCOMPARE(wv->icon(),QPixmap(SRCDIR "/data/basic.png")); - QCOMPARE(wv->statusText(),QString("status here")); - QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/basic.html")), strippedHtml(wv->html())); - QCOMPARE(wv->width(), 123.0); - QCOMPARE(wv->preferredWidth(), 0); - QCOMPARE(wv->preferredHeight(), 0); - QCOMPARE(wv->zoomFactor(), 1.0); - QCOMPARE(wv->url(), QUrl::fromLocalFile(SRCDIR "/data/basic.html")); - QCOMPARE(wv->status(), QDeclarativeWebView::Ready); - QVERIFY(wv->reloadAction()); - QVERIFY(wv->reloadAction()->isEnabled()); - QVERIFY(wv->backAction()); - QVERIFY(!wv->backAction()->isEnabled()); - QVERIFY(wv->forwardAction()); - QVERIFY(!wv->forwardAction()->isEnabled()); - QVERIFY(wv->stopAction()); - QVERIFY(!wv->stopAction()->isEnabled()); - - wv->setPixelCacheSize(0); // mainly testing that it doesn't crash or anything! - QCOMPARE(wv->pixelCacheSize(),0); - wv->reloadAction()->trigger(); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + QCOMPARE(wv->property("title").toString(),QString("Basic")); + QTRY_COMPARE(qvariant_cast(wv->property("icon")).width(), 48); + QCOMPARE(qvariant_cast(wv->property("icon")),QPixmap(SRCDIR "/data/basic.png")); + QCOMPARE(wv->property("statusText").toString(),QString("status here")); + QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/basic.html")), strippedHtml(wv->property("html").toString())); + QCOMPARE(wv->property("width").toDouble(), 123.0); + QCOMPARE(wv->property("preferredWidth").toInt(), 0); + QCOMPARE(wv->property("preferredHeight").toInt(), 0); + QCOMPARE(wv->property("zoomFactor").toDouble(), 1.0); + QCOMPARE(wv->property("url").toUrl(), QUrl::fromLocalFile(SRCDIR "/data/basic.html")); + QCOMPARE(wv->property("status").toInt(), 1 /*QDeclarativeWebView::Ready*/); + QVERIFY(qvariant_cast(wv->property("reload"))); + QVERIFY(qvariant_cast(wv->property("reload"))->isEnabled()); + QVERIFY(qvariant_cast(wv->property("back"))); + QVERIFY(!qvariant_cast(wv->property("back"))->isEnabled()); + QVERIFY(qvariant_cast(wv->property("forward"))); + QVERIFY(!qvariant_cast(wv->property("forward"))->isEnabled()); + QVERIFY(qvariant_cast(wv->property("stop"))); + QVERIFY(!qvariant_cast(wv->property("stop"))->isEnabled()); + + wv->setProperty("pixelCacheSize", 0); // mainly testing that it doesn't crash or anything! + QCOMPARE(wv->property("pixelCacheSize").toInt(),0); + qvariant_cast(wv->property("reload"))->trigger(); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); } void tst_qdeclarativewebview::settings() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/basic.qml")); checkNoErrors(component); - QDeclarativeWebView *wv = qobject_cast(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); - QDeclarativeWebSettings *s = wv->settingsObject(); + QObject *s = qvariant_cast(wv->property("settings")); // merely tests that setting gets stored (in QWebSettings) // behavioural tests are in WebKit. for (int b=0; b<=1; ++b) { bool on = !!b; - s->setAutoLoadImages(on); - s->setDeveloperExtrasEnabled(on); - s->setJavaEnabled(on); - s->setJavascriptCanAccessClipboard(on); - s->setJavascriptCanOpenWindows(on); - s->setJavascriptEnabled(on); - s->setLinksIncludedInFocusChain(on); - s->setLocalContentCanAccessRemoteUrls(on); - s->setLocalStorageDatabaseEnabled(on); - s->setOfflineStorageDatabaseEnabled(on); - s->setOfflineWebApplicationCacheEnabled(on); - s->setPluginsEnabled(on); - s->setPrintElementBackgrounds(on); - s->setPrivateBrowsingEnabled(on); - s->setZoomTextOnly(on); - - QVERIFY(s->autoLoadImages() == on); - QVERIFY(s->developerExtrasEnabled() == on); - QVERIFY(s->javaEnabled() == on); - QVERIFY(s->javascriptCanAccessClipboard() == on); - QVERIFY(s->javascriptCanOpenWindows() == on); - QVERIFY(s->javascriptEnabled() == on); - QVERIFY(s->linksIncludedInFocusChain() == on); - QVERIFY(s->localContentCanAccessRemoteUrls() == on); - QVERIFY(s->localStorageDatabaseEnabled() == on); - QVERIFY(s->offlineStorageDatabaseEnabled() == on); - QVERIFY(s->offlineWebApplicationCacheEnabled() == on); - QVERIFY(s->pluginsEnabled() == on); - QVERIFY(s->printElementBackgrounds() == on); - QVERIFY(s->privateBrowsingEnabled() == on); - QVERIFY(s->zoomTextOnly() == on); + s->setProperty("autoLoadImages", on); + s->setProperty("developerExtrasEnabled", on); + s->setProperty("javaEnabled", on); + s->setProperty("javascriptCanAccessClipboard", on); + s->setProperty("javascriptCanOpenWindows", on); + s->setProperty("javascriptEnabled", on); + s->setProperty("linksIncludedInFocusChain", on); + s->setProperty("localContentCanAccessRemoteUrls", on); + s->setProperty("localStorageDatabaseEnabled", on); + s->setProperty("offlineStorageDatabaseEnabled", on); + s->setProperty("offlineWebApplicationCacheEnabled", on); + s->setProperty("pluginsEnabled", on); + s->setProperty("printElementBackgrounds", on); + s->setProperty("privateBrowsingEnabled", on); + s->setProperty("zoomTextOnly", on); + + QVERIFY(s->property("autoLoadImages") == on); + QVERIFY(s->property("developerExtrasEnabled") == on); + QVERIFY(s->property("javaEnabled") == on); + QVERIFY(s->property("javascriptCanAccessClipboard") == on); + QVERIFY(s->property("javascriptCanOpenWindows") == on); + QVERIFY(s->property("javascriptEnabled") == on); + QVERIFY(s->property("linksIncludedInFocusChain") == on); + QVERIFY(s->property("localContentCanAccessRemoteUrls") == on); + QVERIFY(s->property("localStorageDatabaseEnabled") == on); + QVERIFY(s->property("offlineStorageDatabaseEnabled") == on); + QVERIFY(s->property("offlineWebApplicationCacheEnabled") == on); + QVERIFY(s->property("pluginsEnabled") == on); + QVERIFY(s->property("printElementBackgrounds") == on); + QVERIFY(s->property("privateBrowsingEnabled") == on); + QVERIFY(s->property("zoomTextOnly") == on); QVERIFY(s->property("autoLoadImages") == on); QVERIFY(s->property("developerExtrasEnabled") == on); @@ -248,65 +244,65 @@ void tst_qdeclarativewebview::historyNav() checkNoErrors(component); QWebSettings::enablePersistentStorage(tmpDir()); - QDeclarativeWebView *wv = qobject_cast(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); for (int i=1; i<=2; ++i) { - QTRY_COMPARE(wv->progress(), 1.0); - QCOMPARE(wv->title(),QString("Basic")); - QTRY_COMPARE(wv->icon().width(), 48); - QCOMPARE(wv->icon(),QPixmap(SRCDIR "/data/basic.png")); - QCOMPARE(wv->statusText(),QString("status here")); - QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/basic.html")), strippedHtml(wv->html())); - QCOMPARE(wv->width(), 123.0); - QCOMPARE(wv->preferredWidth(), 0); - QCOMPARE(wv->zoomFactor(), 1.0); - QCOMPARE(wv->url(), QUrl::fromLocalFile(SRCDIR "/data/basic.html")); - QCOMPARE(wv->status(), QDeclarativeWebView::Ready); - QVERIFY(wv->reloadAction()); - QVERIFY(wv->reloadAction()->isEnabled()); - QVERIFY(wv->backAction()); - QVERIFY(!wv->backAction()->isEnabled()); - QVERIFY(wv->forwardAction()); - QVERIFY(!wv->forwardAction()->isEnabled()); - QVERIFY(wv->stopAction()); - QVERIFY(!wv->stopAction()->isEnabled()); - - wv->reloadAction()->trigger(); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + QCOMPARE(wv->property("title").toString(),QString("Basic")); + QTRY_COMPARE(qvariant_cast(wv->property("icon")).width(), 48); + QCOMPARE(qvariant_cast(wv->property("icon")),QPixmap(SRCDIR "/data/basic.png")); + QCOMPARE(wv->property("statusText").toString(),QString("status here")); + QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/basic.html")), strippedHtml(wv->property("html").toString())); + QCOMPARE(wv->property("width").toDouble(), 123.0); + QCOMPARE(wv->property("preferredWidth").toDouble(), 0.0); + QCOMPARE(wv->property("zoomFactor").toDouble(), 1.0); + QCOMPARE(wv->property("url").toUrl(), QUrl::fromLocalFile(SRCDIR "/data/basic.html")); + QCOMPARE(wv->property("status").toInt(), 1 /*QDeclarativeWebView::Ready*/); + QVERIFY(qvariant_cast(wv->property("reload"))); + QVERIFY(qvariant_cast(wv->property("reload"))->isEnabled()); + QVERIFY(qvariant_cast(wv->property("back"))); + QVERIFY(!qvariant_cast(wv->property("back"))->isEnabled()); + QVERIFY(qvariant_cast(wv->property("forward"))); + QVERIFY(!qvariant_cast(wv->property("forward"))->isEnabled()); + QVERIFY(qvariant_cast(wv->property("stop"))); + QVERIFY(!qvariant_cast(wv->property("stop"))->isEnabled()); + + qvariant_cast(wv->property("reload"))->trigger(); } - wv->setUrl(QUrl::fromLocalFile(SRCDIR "/data/forward.html")); - QTRY_COMPARE(wv->progress(), 1.0); - QCOMPARE(wv->title(),QString("Forward")); - QTRY_COMPARE(wv->icon().width(), 32); - QCOMPARE(wv->icon(),QPixmap(SRCDIR "/data/forward.png")); - QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/forward.html")), strippedHtml(wv->html())); - QCOMPARE(wv->url(), QUrl::fromLocalFile(SRCDIR "/data/forward.html")); - QCOMPARE(wv->status(), QDeclarativeWebView::Ready); - QCOMPARE(wv->statusText(),QString("")); - QVERIFY(wv->reloadAction()); - QVERIFY(wv->reloadAction()->isEnabled()); - QVERIFY(wv->backAction()); - QVERIFY(wv->backAction()->isEnabled()); - QVERIFY(wv->forwardAction()); - QVERIFY(!wv->forwardAction()->isEnabled()); - QVERIFY(wv->stopAction()); - QVERIFY(!wv->stopAction()->isEnabled()); - - wv->backAction()->trigger(); - - QTRY_COMPARE(wv->progress(), 1.0); - QCOMPARE(wv->title(),QString("Basic")); - QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/basic.html")), strippedHtml(wv->html())); - QCOMPARE(wv->url(), QUrl::fromLocalFile(SRCDIR "/data/basic.html")); - QCOMPARE(wv->status(), QDeclarativeWebView::Ready); - QVERIFY(wv->reloadAction()); - QVERIFY(wv->reloadAction()->isEnabled()); - QVERIFY(wv->backAction()); - QVERIFY(!wv->backAction()->isEnabled()); - QVERIFY(wv->forwardAction()); - QVERIFY(wv->forwardAction()->isEnabled()); - QVERIFY(wv->stopAction()); - QVERIFY(!wv->stopAction()->isEnabled()); + wv->setProperty("url", QUrl::fromLocalFile(SRCDIR "/data/forward.html")); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + QCOMPARE(wv->property("title").toString(),QString("Forward")); + QTRY_COMPARE(qvariant_cast(wv->property("icon")).width(), 32); + QCOMPARE(qvariant_cast(wv->property("icon")),QPixmap(SRCDIR "/data/forward.png")); + QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/forward.html")), strippedHtml(wv->property("html").toString())); + QCOMPARE(wv->property("url").toUrl(), QUrl::fromLocalFile(SRCDIR "/data/forward.html")); + QCOMPARE(wv->property("status").toInt(), 1 /*QDeclarativeWebView::Ready*/); + QCOMPARE(wv->property("statusText").toString(),QString("")); + QVERIFY(qvariant_cast(wv->property("reload"))); + QVERIFY(qvariant_cast(wv->property("reload"))->isEnabled()); + QVERIFY(qvariant_cast(wv->property("back"))); + QVERIFY(qvariant_cast(wv->property("back"))->isEnabled()); + QVERIFY(qvariant_cast(wv->property("forward"))); + QVERIFY(!qvariant_cast(wv->property("forward"))->isEnabled()); + QVERIFY(qvariant_cast(wv->property("stop"))); + QVERIFY(!qvariant_cast(wv->property("stop"))->isEnabled()); + + qvariant_cast(wv->property("back"))->trigger(); + + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + QCOMPARE(wv->property("title").toString(),QString("Basic")); + QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/basic.html")), strippedHtml(wv->property("html").toString())); + QCOMPARE(wv->property("url").toUrl(), QUrl::fromLocalFile(SRCDIR "/data/basic.html")); + QCOMPARE(wv->property("status").toInt(), 1 /*QDeclarativeWebView::Ready*/); + QVERIFY(qvariant_cast(wv->property("reload"))); + QVERIFY(qvariant_cast(wv->property("reload"))->isEnabled()); + QVERIFY(qvariant_cast(wv->property("back"))); + QVERIFY(!qvariant_cast(wv->property("back"))->isEnabled()); + QVERIFY(qvariant_cast(wv->property("forward"))); + QVERIFY(qvariant_cast(wv->property("forward"))->isEnabled()); + QVERIFY(qvariant_cast(wv->property("stop"))); + QVERIFY(!qvariant_cast(wv->property("stop"))->isEnabled()); } void tst_qdeclarativewebview::multipleWindows() @@ -328,16 +324,16 @@ void tst_qdeclarativewebview::loadError() checkNoErrors(component); QWebSettings::enablePersistentStorage(tmpDir()); - QDeclarativeWebView *wv = qobject_cast(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); for (int i=1; i<=2; ++i) { - QTRY_COMPARE(wv->progress(), 1.0); - QCOMPARE(wv->title(),QString("")); - QCOMPARE(wv->statusText(),QString("")); // HTML 'status bar' text, not error message - QCOMPARE(wv->url(), QUrl::fromLocalFile(SRCDIR "/data/does-not-exist.html")); // Unlike QWebPage, which loses url - QCOMPARE(wv->status(), QDeclarativeWebView::Error); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + QCOMPARE(wv->property("title").toString(),QString("")); + QCOMPARE(wv->property("statusText").toString(),QString("")); // HTML 'status bar' text, not error message + QCOMPARE(wv->property("url").toUrl(), QUrl::fromLocalFile(SRCDIR "/data/does-not-exist.html")); // Unlike QWebPage, which loses url + QCOMPARE(wv->property("status").toInt(), 3 /*QDeclarativeWebView::Error*/); - wv->reloadAction()->trigger(); + qvariant_cast(wv->property("reload"))->trigger(); } } @@ -345,12 +341,12 @@ void tst_qdeclarativewebview::setHtml() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/sethtml.qml")); checkNoErrors(component); - QDeclarativeWebView *wv = qobject_cast(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); - QCOMPARE(wv->html(),QString("

This is a string set on the WebView

")); + QCOMPARE(wv->property("html").toString(),QString("

This is a string set on the WebView

")); QSignalSpy spy(wv, SIGNAL(htmlChanged())); - wv->setHtml(QString("Basic

text

")); + wv->setProperty("html", QString("Basic

text

")); QCOMPARE(spy.count(),1); } @@ -358,81 +354,91 @@ void tst_qdeclarativewebview::elementAreaAt() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/elements.qml")); checkNoErrors(component); - QDeclarativeWebView *wv = qobject_cast(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + /* not now it's a plugin... QCOMPARE(wv->elementAreaAt(40,30,100,100),QRect(1,1,75,54)); // Area A in data/elements.html QCOMPARE(wv->elementAreaAt(130,30,200,100),QRect(78,3,110,50)); // Area B QCOMPARE(wv->elementAreaAt(40,30,400,400),QRect(0,0,310,100)); // Whole view QCOMPARE(wv->elementAreaAt(130,30,280,280),QRect(76,1,223,54)); // Area BC QCOMPARE(wv->elementAreaAt(130,30,400,400),QRect(0,0,310,100)); // Whole view + */ } void tst_qdeclarativewebview::javaScript() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/javaScript.qml")); checkNoErrors(component); - QDeclarativeWebView *wv = qobject_cast(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + /* not now it's a plugin... QCOMPARE(wv->evaluateJavaScript("123").toInt(), 123); QCOMPARE(wv->evaluateJavaScript("window.status").toString(), QString("status here")); QCOMPARE(wv->evaluateJavaScript("window.myjsname.qmlprop").toString(), QString("qmlvalue")); + */ } +/* +Cannot be done now that webkit is a plugin + void tst_qdeclarativewebview::pixelCache() { + QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/pixelCache.qml")); checkNoErrors(component); MyWebView *wv = qobject_cast(component.create()); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress"), 1.0); QPixmap pm(150,150); QPainter p(&pm); wv->paint(&p,0,0); const int expected = 120*(150+128); // 120 = width of HTML page, 150=pixmap height, 128=cache extra area - QCOMPARE(wv->pixelsPainted(), expected); + QCOMPARE(wv->property("pixelsPainted"), expected); wv->paint(&p,0,0); - QCOMPARE(wv->pixelsPainted(), expected); // nothing new needed to be painted - wv->setPixelCacheSize(0); // clears the cache + QCOMPARE(wv->property("pixelsPainted"), expected); // nothing new needed to be painted + wv->setProperty("pixelCacheSize", 0); // clears the cache wv->paint(&p,0,0); - QCOMPARE(wv->pixelsPainted(), expected*2); // everything needed to be painted + QCOMPARE(wv->property("pixelsPainted"), expected*2); // everything needed to be painted // Note that painted things always go into the cache (even if they don't "fit"), // just that they will be removed if anything else needs to be painted. - wv->setPixelCacheSize(expected); // won't clear the cache + wv->setProperty("pixelCacheSize", expected); // won't clear the cache wv->paint(&p,0,0); - QCOMPARE(wv->pixelsPainted(), expected*2); // still there - wv->setPixelCacheSize(expected-1); // too small - will clear the cache + QCOMPARE(wv->property("pixelsPainted"), expected*2); // still there + wv->setProperty("pixelCacheSize", expected-1); // too small - will clear the cache wv->paint(&p,0,0); - QCOMPARE(wv->pixelsPainted(), expected*3); // repainted + QCOMPARE(wv->property("pixelsPainted"), expected*3); // repainted } +*/ void tst_qdeclarativewebview::newWindowParent() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); checkNoErrors(component); QDeclarativeItem *rootItem = qobject_cast(component.create()); - QDeclarativeWebView *wv = rootItem->findChild("webView"); + QObject *wv = rootItem->findChild("webView"); QVERIFY(rootItem != 0); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); QDeclarativeItem* oldWindowParent = rootItem->findChild("oldWindowParent"); - QCOMPARE(wv->newWindowParent(), oldWindowParent); + QCOMPARE(qvariant_cast(wv->property("newWindowParent")), oldWindowParent); QSignalSpy newWindowParentSpy(wv, SIGNAL(newWindowParentChanged())); QDeclarativeItem* newWindowParent = rootItem->findChild("newWindowParent"); - wv->setNewWindowParent(newWindowParent); + wv->setProperty("newWindowParent", QVariant::fromValue(newWindowParent)); + QVERIFY(newWindowParent); QVERIFY(oldWindowParent); QVERIFY(oldWindowParent->childItems().count() == 0); - QCOMPARE(wv->newWindowParent(), newWindowParent); + QCOMPARE(wv->property("newWindowParent"), QVariant::fromValue(newWindowParent)); QCOMPARE(newWindowParentSpy.count(),1); - wv->setNewWindowParent(newWindowParent); + wv->setProperty("newWindowParent", QVariant::fromValue(newWindowParent)); QCOMPARE(newWindowParentSpy.count(),1); - wv->setNewWindowParent(0); + wv->setProperty("newWindowParent", QVariant::fromValue((QDeclarativeItem*)0)); QCOMPARE(newWindowParentSpy.count(),2); } @@ -441,23 +447,23 @@ void tst_qdeclarativewebview::newWindowComponent() QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); checkNoErrors(component); QDeclarativeItem *rootItem = qobject_cast(component.create()); - QDeclarativeWebView *wv = rootItem->findChild("webView"); + QObject *wv = rootItem->findChild("webView"); QVERIFY(rootItem != 0); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); QDeclarativeComponent substituteComponent(&engine); substituteComponent.setData("import Qt 4.6; WebView { objectName: 'newWebView'; url: 'basic.html'; }", QUrl::fromLocalFile("")); QSignalSpy newWindowComponentSpy(wv, SIGNAL(newWindowComponentChanged())); - wv->setNewWindowComponent(&substituteComponent); - QCOMPARE(wv->newWindowComponent(), &substituteComponent); + wv->setProperty("newWindowComponent", QVariant::fromValue(&substituteComponent)); + QCOMPARE(wv->property("newWindowComponent"), QVariant::fromValue(&substituteComponent)); QCOMPARE(newWindowComponentSpy.count(),1); - wv->setNewWindowComponent(&substituteComponent); + wv->setProperty("newWindowComponent", QVariant::fromValue(&substituteComponent)); QCOMPARE(newWindowComponentSpy.count(),1); - wv->setNewWindowComponent(0); + wv->setProperty("newWindowComponent", QVariant::fromValue((QDeclarativeComponent*)0)); QCOMPARE(newWindowComponentSpy.count(),2); } @@ -466,22 +472,22 @@ void tst_qdeclarativewebview::renderingEnabled() QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); checkNoErrors(component); QDeclarativeItem *rootItem = qobject_cast(component.create()); - QDeclarativeWebView *wv = rootItem->findChild("webView"); + QObject *wv = rootItem->findChild("webView"); QVERIFY(rootItem != 0); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); - QVERIFY(wv->renderingEnabled()); + QVERIFY(wv->property("renderingEnabled").toBool()); QSignalSpy renderingEnabledSpy(wv, SIGNAL(renderingEnabledChanged())); - wv->setRenderingEnabled(false); - QVERIFY(!wv->renderingEnabled()); + wv->setProperty("renderingEnabled", false); + QVERIFY(!wv->property("renderingEnabled").toBool()); QCOMPARE(renderingEnabledSpy.count(),1); - wv->setRenderingEnabled(false); + wv->setProperty("renderingEnabled", false); QCOMPARE(renderingEnabledSpy.count(),1); - wv->setRenderingEnabled(true); + wv->setProperty("renderingEnabled", true); QCOMPARE(renderingEnabledSpy.count(),2); } @@ -490,21 +496,21 @@ void tst_qdeclarativewebview::pressGrabTime() QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); checkNoErrors(component); QDeclarativeItem *rootItem = qobject_cast(component.create()); - QDeclarativeWebView *wv = rootItem->findChild("webView"); + QObject *wv = rootItem->findChild("webView"); QVERIFY(rootItem != 0); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); - QCOMPARE(wv->pressGrabTime(), 200); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + QCOMPARE(wv->property("pressGrabTime").toInt(), 200); QSignalSpy pressGrabTimeSpy(wv, SIGNAL(pressGrabTimeChanged())); - wv->setPressGrabTime(100); - QCOMPARE(wv->pressGrabTime(), 100); + wv->setProperty("pressGrabTime", 100); + QCOMPARE(wv->property("pressGrabTime").toInt(), 100); QCOMPARE(pressGrabTimeSpy.count(),1); - wv->setPressGrabTime(100); + wv->setProperty("pressGrabTime", 100); QCOMPARE(pressGrabTimeSpy.count(),1); - wv->setPressGrabTime(0); + wv->setProperty("pressGrabTime", 0); QCOMPARE(pressGrabTimeSpy.count(),2); } diff --git a/tests/auto/declarative/visual/qfxwebview/autosize/autosize.qml b/tests/auto/declarative/visual/qfxwebview/autosize/autosize.qml index 74c6844..3c00ee6 100644 --- a/tests/auto/declarative/visual/qfxwebview/autosize/autosize.qml +++ b/tests/auto/declarative/visual/qfxwebview/autosize/autosize.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 // The WebView size is determined by the width, height, // preferredWidth, and preferredHeight properties. diff --git a/tests/auto/declarative/visual/webview/embedding/nesting.qml b/tests/auto/declarative/visual/webview/embedding/nesting.qml index 0d76579..5e35306 100644 --- a/tests/auto/declarative/visual/webview/embedding/nesting.qml +++ b/tests/auto/declarative/visual/webview/embedding/nesting.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { width: 300 diff --git a/tests/auto/declarative/visual/webview/javascript/evaluateJavaScript.qml b/tests/auto/declarative/visual/webview/javascript/evaluateJavaScript.qml index 78d5cfc..6c01382 100644 --- a/tests/auto/declarative/visual/webview/javascript/evaluateJavaScript.qml +++ b/tests/auto/declarative/visual/webview/javascript/evaluateJavaScript.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 Column { WebView { diff --git a/tests/auto/declarative/visual/webview/javascript/windowObjects.qml b/tests/auto/declarative/visual/webview/javascript/windowObjects.qml index a41de9a..8c52aff 100644 --- a/tests/auto/declarative/visual/webview/javascript/windowObjects.qml +++ b/tests/auto/declarative/visual/webview/javascript/windowObjects.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 Column { WebView { diff --git a/tests/auto/declarative/visual/webview/settings/fontFamily.qml b/tests/auto/declarative/visual/webview/settings/fontFamily.qml index 2bb2a53..f547b0e 100644 --- a/tests/auto/declarative/visual/webview/settings/fontFamily.qml +++ b/tests/auto/declarative/visual/webview/settings/fontFamily.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { id: web diff --git a/tests/auto/declarative/visual/webview/settings/fontSize.qml b/tests/auto/declarative/visual/webview/settings/fontSize.qml index b970783..7eaa96b 100644 --- a/tests/auto/declarative/visual/webview/settings/fontSize.qml +++ b/tests/auto/declarative/visual/webview/settings/fontSize.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 Grid { columns: 3 diff --git a/tests/auto/declarative/visual/webview/settings/noAutoLoadImages.qml b/tests/auto/declarative/visual/webview/settings/noAutoLoadImages.qml index 72e672d..67f1633 100644 --- a/tests/auto/declarative/visual/webview/settings/noAutoLoadImages.qml +++ b/tests/auto/declarative/visual/webview/settings/noAutoLoadImages.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 Grid { columns: 2 diff --git a/tests/auto/declarative/visual/webview/settings/setFontFamily.qml b/tests/auto/declarative/visual/webview/settings/setFontFamily.qml index 26deed8..823469f 100644 --- a/tests/auto/declarative/visual/webview/settings/setFontFamily.qml +++ b/tests/auto/declarative/visual/webview/settings/setFontFamily.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { url: "test.html" diff --git a/tests/auto/declarative/visual/webview/zooming/pageWidth.qml b/tests/auto/declarative/visual/webview/zooming/pageWidth.qml index 86dd7d2..4a876dd 100644 --- a/tests/auto/declarative/visual/webview/zooming/pageWidth.qml +++ b/tests/auto/declarative/visual/webview/zooming/pageWidth.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { width: 200 diff --git a/tests/auto/declarative/visual/webview/zooming/renderControl.qml b/tests/auto/declarative/visual/webview/zooming/renderControl.qml index 0c8bb3b..49eb91b 100644 --- a/tests/auto/declarative/visual/webview/zooming/renderControl.qml +++ b/tests/auto/declarative/visual/webview/zooming/renderControl.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 Rectangle { width: 200 diff --git a/tests/auto/declarative/visual/webview/zooming/resolution.qml b/tests/auto/declarative/visual/webview/zooming/resolution.qml index a9d4e3a..8542768 100644 --- a/tests/auto/declarative/visual/webview/zooming/resolution.qml +++ b/tests/auto/declarative/visual/webview/zooming/resolution.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { width: 200 * zoomFactor diff --git a/tests/auto/declarative/visual/webview/zooming/zoomTextOnly.qml b/tests/auto/declarative/visual/webview/zooming/zoomTextOnly.qml index 4455b43..c2e9348 100644 --- a/tests/auto/declarative/visual/webview/zooming/zoomTextOnly.qml +++ b/tests/auto/declarative/visual/webview/zooming/zoomTextOnly.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { width: 200 diff --git a/tests/auto/declarative/visual/webview/zooming/zooming.qml b/tests/auto/declarative/visual/webview/zooming/zooming.qml index 0ea9131..9f0b865 100644 --- a/tests/auto/declarative/visual/webview/zooming/zooming.qml +++ b/tests/auto/declarative/visual/webview/zooming/zooming.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 // Note that zooming is better done using zoomFactor and careful // control of rendering to avoid excessive re-rendering during -- cgit v0.12 From fd7d730d04862095898773a781bb9a254d0aeb00 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Tue, 2 Mar 2010 15:56:53 +1000 Subject: doc --- src/declarative/QmlChanges.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt index 34e4834..c312abf 100644 --- a/src/declarative/QmlChanges.txt +++ b/src/declarative/QmlChanges.txt @@ -12,6 +12,7 @@ Connection: syntax and rename: Connection { sender: a; signal: bar(); script: yyy } becomes: Connections { target: a; onFoo: xxx; onBar: yyy } +Using WebView now requires "import org.webkit 1.0" QmlView ------- -- cgit v0.12 From 1e4258c6098a87342b61935f1ad25102ce699af1 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Tue, 2 Mar 2010 16:27:06 +1000 Subject: Fix zooming (broke with transformOrigin default change). Task-number: QTBUG-5845 --- demos/declarative/webbrowser/content/FlickableWebView.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/demos/declarative/webbrowser/content/FlickableWebView.qml b/demos/declarative/webbrowser/content/FlickableWebView.qml index cf4c825..30a5d78 100644 --- a/demos/declarative/webbrowser/content/FlickableWebView.qml +++ b/demos/declarative/webbrowser/content/FlickableWebView.qml @@ -23,6 +23,7 @@ Flickable { WebView { id: webView pixelCacheSize: 4000000 + transformOrigin: Item.TopLeft Script { function fixUrl(url) -- cgit v0.12 From 26f3d40e99b6afa6e5205eb2fbe162dd30416888 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 2 Mar 2010 09:18:21 +0100 Subject: Fix licenseCheck autotest --- src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp index 388e369..023bb28 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp @@ -1,4 +1,4 @@ - /**************************************************************************** +/**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. -- cgit v0.12 From 56d32b57814cb35409bc9b0076ec753de488ae7f Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Tue, 16 Feb 2010 09:38:23 +0100 Subject: Move qegl_p.h -> qeglcontext_p.h and add a new qegl_p.h This puts the QEgl namespace in a single file which can be used by both qeglcontext and qeglproperties. Files which need QEglContext should now include qeglcontext_p.h. Reviewed-By: Aleksandar Sasha Babic --- src/gui/egl/egl.pri | 1 + src/gui/egl/qegl.cpp | 3 + src/gui/egl/qegl_p.h | 108 +++++++++++------------------ src/gui/egl/qegl_qws.cpp | 2 + src/gui/egl/qegl_symbian.cpp | 2 + src/gui/egl/qegl_wince.cpp | 2 + src/gui/egl/qegl_x11.cpp | 3 +- src/gui/egl/qeglcontext_p.h | 130 +++++++++++++++++++++++++++++++++++ src/gui/egl/qeglproperties.cpp | 3 +- src/gui/egl/qeglproperties_p.h | 42 +---------- src/opengl/qgl_egl_p.h | 3 +- src/opengl/qgl_wince.cpp | 3 +- src/opengl/qpixmapdata_x11gl_egl.cpp | 1 + src/opengl/qwindowsurface_gl.cpp | 2 +- src/openvg/qpaintengine_vg.cpp | 2 +- src/openvg/qvg_p.h | 2 +- src/openvg/qwindowsurface_vg.cpp | 2 +- src/openvg/qwindowsurface_vgegl_p.h | 2 +- 18 files changed, 196 insertions(+), 117 deletions(-) create mode 100644 src/gui/egl/qeglcontext_p.h diff --git a/src/gui/egl/egl.pri b/src/gui/egl/egl.pri index 669d311..b90b9b0 100644 --- a/src/gui/egl/egl.pri +++ b/src/gui/egl/egl.pri @@ -2,6 +2,7 @@ CONFIG += egl HEADERS += \ egl/qegl_p.h \ + egl/qeglcontext_p.h \ egl/qeglproperties_p.h SOURCES += \ diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp index 0ed95ea..5052dfc 100644 --- a/src/gui/egl/qegl.cpp +++ b/src/gui/egl/qegl.cpp @@ -43,7 +43,10 @@ #include #include #include + #include "qegl_p.h" +#include "qeglcontext_p.h" + QT_BEGIN_NAMESPACE diff --git a/src/gui/egl/qegl_p.h b/src/gui/egl/qegl_p.h index 87ed818..eb83002 100644 --- a/src/gui/egl/qegl_p.h +++ b/src/gui/egl/qegl_p.h @@ -53,13 +53,34 @@ // We mean it. // -#include -#include +QT_BEGIN_INCLUDE_NAMESPACE -#include +#if defined(QT_GLES_EGL) +#include +#else +#include +#endif -QT_BEGIN_INCLUDE_NAMESPACE +#if defined(Q_WS_X11) +// If included , then the global namespace +// may have been polluted with X #define's. The following makes sure +// the X11 headers were included properly and then cleans things up. +#include +#include +#undef Bool +#undef Status +#undef None +#undef KeyPress +#undef KeyRelease +#undef FocusIn +#undef FocusOut +#undef Type +#undef FontChange +#undef CursorShape +#endif +// Internally we use the EGL-prefixed native types which are used in EGL >= 1.3. +// For older versions of EGL, we have to define these types ourselves here: #if !defined(EGL_VERSION_1_3) && !defined(QEGL_NATIVE_TYPES_DEFINED) #undef EGLNativeWindowType #undef EGLNativePixmapType @@ -69,74 +90,27 @@ typedef NativePixmapType EGLNativePixmapType; typedef NativeDisplayType EGLNativeDisplayType; #define QEGL_NATIVE_TYPES_DEFINED 1 #endif -QT_END_INCLUDE_NAMESPACE - -QT_BEGIN_NAMESPACE - -class Q_GUI_EXPORT QEglContext -{ -public: - QEglContext(); - ~QEglContext(); - - bool isValid() const; - bool isCurrent() const; - bool isSharing() const { return sharing; } - - QEgl::API api() const { return apiType; } - void setApi(QEgl::API api) { apiType = api; } - - bool chooseConfig(const QEglProperties& properties, QEgl::PixelFormatMatch match = QEgl::ExactPixelFormat); - bool createContext(QEglContext *shareContext = 0, const QEglProperties *properties = 0); - void destroyContext(); - EGLSurface createSurface(QPaintDevice *device, const QEglProperties *properties = 0); - void destroySurface(EGLSurface surface); - - bool makeCurrent(EGLSurface surface); - bool doneCurrent(); - bool lazyDoneCurrent(); - bool swapBuffers(EGLSurface surface); - void waitNative(); - void waitClient(); - - bool configAttrib(int name, EGLint *value) const; - - static void clearError() { eglGetError(); } - static EGLint error() { return eglGetError(); } - static QString errorString(EGLint code); - - static EGLDisplay display(); - - EGLContext context() const { return ctx; } - void setContext(EGLContext context) { ctx = context; ownsContext = false;} - - EGLConfig config() const { return cfg; } - void setConfig(EGLConfig config) { cfg = config; } - - QEglProperties configProperties(EGLConfig cfg = 0) const; - - void dumpAllConfigs(); - - static QString extensions(); - static bool hasExtension(const char* extensionName); +QT_END_INCLUDE_NAMESPACE -private: - QEgl::API apiType; - EGLContext ctx; - EGLConfig cfg; - EGLSurface currentSurface; - bool current; - bool ownsContext; - bool sharing; - static EGLDisplay dpy; - static EGLNativeDisplayType nativeDisplay(); +QT_BEGIN_NAMESPACE - static QEglContext *currentContext(QEgl::API api); - static void setCurrentContext(QEgl::API api, QEglContext *context); +namespace QEgl { + enum API + { + OpenGL, + OpenVG + }; + + enum PixelFormatMatch + { + ExactPixelFormat, + BestPixelFormat + }; }; + QT_END_NAMESPACE -#endif // QEGL_P_H +#endif //QEGL_P_H diff --git a/src/gui/egl/qegl_qws.cpp b/src/gui/egl/qegl_qws.cpp index 2a61beb..a40c236 100644 --- a/src/gui/egl/qegl_qws.cpp +++ b/src/gui/egl/qegl_qws.cpp @@ -42,7 +42,9 @@ #include #include #include + #include "qegl_p.h" +#include "qeglcontext_p.h" #if !defined(QT_NO_EGL) diff --git a/src/gui/egl/qegl_symbian.cpp b/src/gui/egl/qegl_symbian.cpp index 5a010cd..0c91fd8 100644 --- a/src/gui/egl/qegl_symbian.cpp +++ b/src/gui/egl/qegl_symbian.cpp @@ -42,7 +42,9 @@ #include #include #include + #include "qegl_p.h" +#include "qeglcontext_p.h" #include diff --git a/src/gui/egl/qegl_wince.cpp b/src/gui/egl/qegl_wince.cpp index c9c9773..00341ba 100644 --- a/src/gui/egl/qegl_wince.cpp +++ b/src/gui/egl/qegl_wince.cpp @@ -42,7 +42,9 @@ #include #include #include + #include "qegl_p.h" +#include "qeglcontext_p.h" #include diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index 634ff13..cd55849 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -49,8 +49,9 @@ #include #include #include -#include "qegl_p.h" +#include "qegl_p.h" +#include "qeglcontext_p.h" QT_BEGIN_NAMESPACE diff --git a/src/gui/egl/qeglcontext_p.h b/src/gui/egl/qeglcontext_p.h new file mode 100644 index 0000000..3857fb7 --- /dev/null +++ b/src/gui/egl/qeglcontext_p.h @@ -0,0 +1,130 @@ +/**************************************************************************** +** +** 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 QEGLCONTEXT_P_H +#define QEGLCONTEXT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience of +// the QtOpenGL and QtOpenVG modules. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_GUI_EXPORT QEglContext +{ +public: + QEglContext(); + ~QEglContext(); + + bool isValid() const; + bool isCurrent() const; + bool isSharing() const { return sharing; } + + QEgl::API api() const { return apiType; } + void setApi(QEgl::API api) { apiType = api; } + + bool chooseConfig(const QEglProperties& properties, QEgl::PixelFormatMatch match = QEgl::ExactPixelFormat); + bool createContext(QEglContext *shareContext = 0, const QEglProperties *properties = 0); + void destroyContext(); + EGLSurface createSurface(QPaintDevice *device, const QEglProperties *properties = 0); + void destroySurface(EGLSurface surface); + + bool makeCurrent(EGLSurface surface); + bool doneCurrent(); + bool lazyDoneCurrent(); + bool swapBuffers(EGLSurface surface); + + void waitNative(); + void waitClient(); + + bool configAttrib(int name, EGLint *value) const; + + static void clearError() { eglGetError(); } + static EGLint error() { return eglGetError(); } + static QString errorString(EGLint code); + + static EGLDisplay display(); + + EGLContext context() const { return ctx; } + void setContext(EGLContext context) { ctx = context; ownsContext = false;} + + EGLConfig config() const { return cfg; } + void setConfig(EGLConfig config) { cfg = config; } + + QEglProperties configProperties(EGLConfig cfg = 0) const; + + void dumpAllConfigs(); + + static QString extensions(); + static bool hasExtension(const char* extensionName); + +private: + QEgl::API apiType; + EGLContext ctx; + EGLConfig cfg; + EGLSurface currentSurface; + bool current; + bool ownsContext; + bool sharing; + + static EGLDisplay dpy; + static EGLNativeDisplayType nativeDisplay(); + + static QEglContext *currentContext(QEgl::API api); + static void setCurrentContext(QEgl::API api, QEglContext *context); +}; + +QT_END_NAMESPACE + +#endif // QEGLCONTEXT_P_H diff --git a/src/gui/egl/qeglproperties.cpp b/src/gui/egl/qeglproperties.cpp index 236ec37..b83ae4e 100644 --- a/src/gui/egl/qeglproperties.cpp +++ b/src/gui/egl/qeglproperties.cpp @@ -46,7 +46,8 @@ QT_BEGIN_NAMESPACE #include #include -#include "qegl_p.h" +#include "qeglproperties_p.h" +#include "qeglcontext_p.h" // Initialize a property block. diff --git a/src/gui/egl/qeglproperties_p.h b/src/gui/egl/qeglproperties_p.h index feed1d2..496847b 100644 --- a/src/gui/egl/qeglproperties_p.h +++ b/src/gui/egl/qeglproperties_p.h @@ -56,50 +56,10 @@ #include #include -QT_BEGIN_INCLUDE_NAMESPACE - -#if defined(QT_GLES_EGL) -#include -#else -#include -#endif - -#if defined(Q_WS_X11) -// If included , then the global namespace -// may have been polluted with X #define's. The following makes sure -// the X11 headers were included properly and then cleans things up. -#include -#include -#undef Bool -#undef Status -#undef None -#undef KeyPress -#undef KeyRelease -#undef FocusIn -#undef FocusOut -#undef Type -#undef FontChange -#undef CursorShape -#endif - -QT_END_INCLUDE_NAMESPACE +#include QT_BEGIN_NAMESPACE -namespace QEgl { - enum API - { - OpenGL, - OpenVG - }; - - enum PixelFormatMatch - { - ExactPixelFormat, - BestPixelFormat - }; -}; - class QX11Info; class QPaintDevice; diff --git a/src/opengl/qgl_egl_p.h b/src/opengl/qgl_egl_p.h index c503724..518b500 100644 --- a/src/opengl/qgl_egl_p.h +++ b/src/opengl/qgl_egl_p.h @@ -53,7 +53,8 @@ // We mean it. // -#include +#include +#include QT_BEGIN_NAMESPACE diff --git a/src/opengl/qgl_wince.cpp b/src/opengl/qgl_wince.cpp index f81115c..2b71201 100644 --- a/src/opengl/qgl_wince.cpp +++ b/src/opengl/qgl_wince.cpp @@ -54,7 +54,8 @@ #include -#include +#include +#include #include #include diff --git a/src/opengl/qpixmapdata_x11gl_egl.cpp b/src/opengl/qpixmapdata_x11gl_egl.cpp index 6a1d030..4f1543c 100644 --- a/src/opengl/qpixmapdata_x11gl_egl.cpp +++ b/src/opengl/qpixmapdata_x11gl_egl.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #if !defined(QT_OPENGL_ES_1) #include diff --git a/src/opengl/qwindowsurface_gl.cpp b/src/opengl/qwindowsurface_gl.cpp index 4ac4a3a..0334cbc 100644 --- a/src/opengl/qwindowsurface_gl.cpp +++ b/src/opengl/qwindowsurface_gl.cpp @@ -83,7 +83,7 @@ #endif #ifdef QT_OPENGL_ES -#include +#include #endif QT_BEGIN_NAMESPACE diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index 35f552e..47ce11c 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -45,7 +45,7 @@ #include "qvgcompositionhelper_p.h" #include "qvgimagepool_p.h" #if !defined(QT_NO_EGL) -#include +#include #include "qwindowsurface_vgegl_p.h" #endif #include diff --git a/src/openvg/qvg_p.h b/src/openvg/qvg_p.h index 7857bb6..51abbee 100644 --- a/src/openvg/qvg_p.h +++ b/src/openvg/qvg_p.h @@ -58,7 +58,7 @@ #include #if !defined(QT_NO_EGL) -#include +#include #endif QT_BEGIN_NAMESPACE diff --git a/src/openvg/qwindowsurface_vg.cpp b/src/openvg/qwindowsurface_vg.cpp index 83b0764..07d9209 100644 --- a/src/openvg/qwindowsurface_vg.cpp +++ b/src/openvg/qwindowsurface_vg.cpp @@ -47,7 +47,7 @@ #if !defined(QT_NO_EGL) -#include +#include #include QT_BEGIN_NAMESPACE diff --git a/src/openvg/qwindowsurface_vgegl_p.h b/src/openvg/qwindowsurface_vgegl_p.h index aa0c648..f6adbf3 100644 --- a/src/openvg/qwindowsurface_vgegl_p.h +++ b/src/openvg/qwindowsurface_vgegl_p.h @@ -58,7 +58,7 @@ #if !defined(QT_NO_EGL) -#include +#include QT_BEGIN_NAMESPACE -- cgit v0.12 From 28b85c76dd0ba4796ec519b890f6fab0fc813061 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Tue, 16 Feb 2010 13:29:36 +0100 Subject: Move static methods from QEglContext to QEgl namespace Reviewed-By: Aleksandar Sasha Babic --- src/gui/egl/qegl.cpp | 83 +++++++++++++++++++----------------- src/gui/egl/qegl_p.h | 18 ++++++++ src/gui/egl/qegl_wince.cpp | 6 +-- src/gui/egl/qegl_x11.cpp | 8 ++-- src/gui/egl/qeglcontext_p.h | 18 ++------ src/gui/egl/qeglproperties.cpp | 6 +-- src/opengl/qgl_egl.cpp | 2 +- src/opengl/qgl_x11egl.cpp | 20 ++++----- src/opengl/qglpixelbuffer_egl.cpp | 4 +- src/opengl/qpixmapdata_x11gl_egl.cpp | 20 ++++----- 10 files changed, 97 insertions(+), 88 deletions(-) diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp index 5052dfc..ef5eb67 100644 --- a/src/gui/egl/qegl.cpp +++ b/src/gui/egl/qegl.cpp @@ -57,8 +57,6 @@ QT_BEGIN_NAMESPACE static QEglContext * volatile currentGLContext = 0; static QEglContext * volatile currentVGContext = 0; -EGLDisplay QEglContext::dpy = EGL_NO_DISPLAY; - QEglContext::QEglContext() : apiType(QEgl::OpenGL) , ctx(EGL_NO_CONTEXT) @@ -98,7 +96,8 @@ bool QEglContext::chooseConfig do { // Get the number of matching configurations for this set of properties. EGLint matching = 0; - if (!eglChooseConfig(display(), props.properties(), 0, 0, &matching) || !matching) + EGLDisplay dpy = QEgl::display(); + if (!eglChooseConfig(dpy, props.properties(), 0, 0, &matching) || !matching) continue; // If we want the best pixel format, then return the first @@ -145,7 +144,7 @@ bool QEglContext::chooseConfig qWarning() << "QEglContext::chooseConfig(): Could not find a suitable EGL configuration"; qWarning() << "Requested:" << props.toString(); qWarning() << "Available:"; - dumpAllConfigs(); + QEgl::dumpAllConfigs(); } return false; } @@ -175,9 +174,9 @@ bool QEglContext::createContext(QEglContext *shareContext, const QEglProperties if (shareContext && shareContext->ctx == EGL_NO_CONTEXT) shareContext = 0; if (shareContext) { - ctx = eglCreateContext(display(), cfg, shareContext->ctx, contextProps.properties()); + ctx = eglCreateContext(QEgl::display(), cfg, shareContext->ctx, contextProps.properties()); if (ctx == EGL_NO_CONTEXT) { - qWarning() << "QEglContext::createContext(): Could not share context:" << errorString(eglGetError()); + qWarning() << "QEglContext::createContext(): Could not share context:" << QEgl::errorString(); shareContext = 0; } else { sharing = true; @@ -186,7 +185,7 @@ bool QEglContext::createContext(QEglContext *shareContext, const QEglProperties if (ctx == EGL_NO_CONTEXT) { ctx = eglCreateContext(display(), cfg, 0, contextProps.properties()); if (ctx == EGL_NO_CONTEXT) { - qWarning() << "QEglContext::createContext(): Unable to create EGL context:" << errorString(eglGetError()); + qWarning() << "QEglContext::createContext(): Unable to create EGL context:" << QEgl::errorString(); return false; } } @@ -243,9 +242,9 @@ bool QEglContext::makeCurrent(EGLSurface surface) eglBindAPI(EGL_OPENVG_API); #endif - bool ok = eglMakeCurrent(display(), surface, surface, ctx); + bool ok = eglMakeCurrent(QEgl::display(), surface, surface, ctx); if (!ok) - qWarning() << "QEglContext::makeCurrent():" << errorString(eglGetError()); + qWarning() << "QEglContext::makeCurrent():" << QEgl::errorString(); return ok; } @@ -272,9 +271,9 @@ bool QEglContext::doneCurrent() eglBindAPI(EGL_OPENVG_API); #endif - bool ok = eglMakeCurrent(display(), EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + bool ok = eglMakeCurrent(QEgl::display(), EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); if (!ok) - qWarning() << "QEglContext::doneCurrent():" << errorString(eglGetError()); + qWarning() << "QEglContext::doneCurrent():" << QEgl::errorString(); return ok; } @@ -294,9 +293,9 @@ bool QEglContext::swapBuffers(EGLSurface surface) if(ctx == EGL_NO_CONTEXT) return false; - bool ok = eglSwapBuffers(display(), surface); + bool ok = eglSwapBuffers(QEgl::display(), surface); if (!ok) - qWarning() << "QEglContext::swapBuffers():" << errorString(eglGetError()); + qWarning() << "QEglContext::swapBuffers():" << QEgl::errorString(); return ok; } @@ -333,43 +332,33 @@ void QEglContext::waitClient() // Query the value of a configuration attribute. bool QEglContext::configAttrib(int name, EGLint *value) const { - return eglGetConfigAttrib(display(), cfg, name, value); + return eglGetConfigAttrib(QEgl::display(), cfg, name, value); } -// Retrieve all of the properties on "cfg". If zero, return -// the context's configuration. -QEglProperties QEglContext::configProperties(EGLConfig cfg) const +QEglProperties QEglContext::configProperties() const { - if (!cfg) - cfg = config(); - QEglProperties props; - for (int name = 0x3020; name <= 0x304F; ++name) { - EGLint value; - if (name != EGL_NONE && eglGetConfigAttrib(display(), cfg, name, &value)) - props.setValue(name, value); - } - eglGetError(); // Clear the error state. - return props; + return QEglProperties(config()); } -EGLDisplay QEglContext::display() +EGLDisplay QEgl::display() { + static EGLDisplay dpy = EGL_NO_DISPLAY; static bool openedDisplay = false; if (!openedDisplay) { dpy = eglGetDisplay(nativeDisplay()); openedDisplay = true; if (dpy == EGL_NO_DISPLAY) { - qWarning("QEglContext::display(): Falling back to EGL_DEFAULT_DISPLAY"); + qWarning("QEgl::display(): Falling back to EGL_DEFAULT_DISPLAY"); dpy = eglGetDisplay(EGLNativeDisplayType(EGL_DEFAULT_DISPLAY)); } if (dpy == EGL_NO_DISPLAY) { - qWarning("QEglContext::display(): Can't even open the default display"); + qWarning("QEgl::display(): Can't even open the default display"); return EGL_NO_DISPLAY; } if (!eglInitialize(dpy, NULL, NULL)) { - qWarning() << "QEglContext::display(): Cannot initialize EGL display:" << errorString(eglGetError()); + qWarning() << "QEgl::display(): Cannot initialize EGL display:" << QEgl::errorString(); return EGL_NO_DISPLAY; } } @@ -378,14 +367,14 @@ EGLDisplay QEglContext::display() } #if !defined(Q_WS_X11) && !defined(Q_WS_WINCE) // WinCE & X11 implement this properly -EGLNativeDisplayType QEglContext::nativeDisplay() +EGLNativeDisplayType QEgl::nativeDisplay() { return EGL_DEFAULT_DISPLAY; } #endif // Return the error string associated with a specific code. -QString QEglContext::errorString(EGLint code) +QString QEgl::errorString(EGLint code) { static const char * const errors[] = { "Success (0x3000)", // No tr @@ -411,8 +400,24 @@ QString QEglContext::errorString(EGLint code) } } +QString QEgl::errorString() +{ + return errorString(error()); +} + +void QEgl::clearError() +{ + eglGetError(); +} + +EGLint QEgl::error() +{ + return eglGetError(); +} + + // Dump all of the EGL configurations supported by the system. -void QEglContext::dumpAllConfigs() +void QEgl::dumpAllConfigs() { QEglProperties props; EGLint count = 0; @@ -421,23 +426,23 @@ void QEglContext::dumpAllConfigs() EGLConfig *configs = new EGLConfig [count]; eglGetConfigs(display(), configs, count, &count); for (EGLint index = 0; index < count; ++index) { - props = configProperties(configs[index]); + props = QEglProperties(configs[index]); qWarning() << props.toString(); } delete [] configs; } -QString QEglContext::extensions() +QString QEgl::extensions() { - const char* exts = eglQueryString(QEglContext::display(), EGL_EXTENSIONS); + const char* exts = eglQueryString(QEgl::display(), EGL_EXTENSIONS); return QString(QLatin1String(exts)); } -bool QEglContext::hasExtension(const char* extensionName) +bool QEgl::hasExtension(const char* extensionName) { QList extensions = QByteArray(reinterpret_cast - (eglQueryString(QEglContext::display(), EGL_EXTENSIONS))).split(' '); + (eglQueryString(QEgl::display(), EGL_EXTENSIONS))).split(' '); return extensions.contains(extensionName); } diff --git a/src/gui/egl/qegl_p.h b/src/gui/egl/qegl_p.h index eb83002..e48e4a0 100644 --- a/src/gui/egl/qegl_p.h +++ b/src/gui/egl/qegl_p.h @@ -96,6 +96,8 @@ QT_END_INCLUDE_NAMESPACE QT_BEGIN_NAMESPACE +class QEglProperties; + namespace QEgl { enum API { @@ -108,6 +110,22 @@ namespace QEgl { ExactPixelFormat, BestPixelFormat }; + +// EGLConfig chooseConfig(const QEglProperties* properties, QEgl::PixelFormatMatch match = QEgl::ExactPixelFormat); +// EGLSurface createSurface(QPaintDevice *device, EGLConfig config, const QEglProperties *properties = 0); + + Q_GUI_EXPORT void dumpAllConfigs(); + + Q_GUI_EXPORT void clearError(); + Q_GUI_EXPORT EGLint error(); + Q_GUI_EXPORT QString errorString(EGLint code); + Q_GUI_EXPORT QString errorString(); + + Q_GUI_EXPORT QString extensions(); + Q_GUI_EXPORT bool hasExtension(const char* extensionName); + + Q_GUI_EXPORT EGLDisplay display(); + Q_GUI_EXPORT EGLNativeDisplayType nativeDisplay(); }; diff --git a/src/gui/egl/qegl_wince.cpp b/src/gui/egl/qegl_wince.cpp index 00341ba..2f79005 100644 --- a/src/gui/egl/qegl_wince.cpp +++ b/src/gui/egl/qegl_wince.cpp @@ -80,16 +80,16 @@ EGLSurface QEglContext::createSurface(QPaintDevice *device, const QEglProperties props = 0; EGLSurface surf; if (devType == QInternal::Widget) - surf = eglCreateWindowSurface(dpy, cfg, windowDrawable, props); + surf = eglCreateWindowSurface(QEgl::display(), cfg, windowDrawable, props); else - surf = eglCreatePixmapSurface(dpy, cfg, pixmapDrawable, props); + surf = eglCreatePixmapSurface(QEgl::display(), cfg, pixmapDrawable, props); if (surf == EGL_NO_SURFACE) { qWarning("QEglContext::createSurface(): Unable to create EGL surface, error = 0x%x", eglGetError()); } return surf; } -EGLNativeDisplayType QEglContext::nativeDisplay() +EGLNativeDisplayType QEgl::nativeDisplay() { HWND win = (static_cast(device))->winId(); HDC myDc = GetDC(win); diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index cd55849..4a813c6 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -84,17 +84,17 @@ EGLSurface QEglContext::createSurface(QPaintDevice *device, const QEglProperties props = 0; EGLSurface surf; if (devType == QInternal::Widget) - surf = eglCreateWindowSurface(dpy, cfg, windowDrawable, props); + surf = eglCreateWindowSurface(QEgl::display(), cfg, windowDrawable, props); else - surf = eglCreatePixmapSurface(dpy, cfg, pixmapDrawable, props); + surf = eglCreatePixmapSurface(QEgl::display(), cfg, pixmapDrawable, props); if (surf == EGL_NO_SURFACE) { qWarning() << "QEglContext::createSurface(): Unable to create EGL surface:" - << errorString(eglGetError()); + << QEgl::errorString(); } return surf; } -EGLNativeDisplayType QEglContext::nativeDisplay() +EGLNativeDisplayType QEgl::nativeDisplay() { Display *xdpy = QX11Info::display(); if (!xdpy) { diff --git a/src/gui/egl/qeglcontext_p.h b/src/gui/egl/qeglcontext_p.h index 3857fb7..c656d1d 100644 --- a/src/gui/egl/qeglcontext_p.h +++ b/src/gui/egl/qeglcontext_p.h @@ -90,24 +90,15 @@ public: bool configAttrib(int name, EGLint *value) const; - static void clearError() { eglGetError(); } - static EGLint error() { return eglGetError(); } - static QString errorString(EGLint code); - - static EGLDisplay display(); - EGLContext context() const { return ctx; } void setContext(EGLContext context) { ctx = context; ownsContext = false;} + EGLDisplay display() {return QEgl::display();} + EGLConfig config() const { return cfg; } void setConfig(EGLConfig config) { cfg = config; } - QEglProperties configProperties(EGLConfig cfg = 0) const; - - void dumpAllConfigs(); - - static QString extensions(); - static bool hasExtension(const char* extensionName); + QEglProperties configProperties() const; private: QEgl::API apiType; @@ -118,9 +109,6 @@ private: bool ownsContext; bool sharing; - static EGLDisplay dpy; - static EGLNativeDisplayType nativeDisplay(); - static QEglContext *currentContext(QEgl::API api); static void setCurrentContext(QEgl::API api, QEglContext *context); }; diff --git a/src/gui/egl/qeglproperties.cpp b/src/gui/egl/qeglproperties.cpp index b83ae4e..86e158b 100644 --- a/src/gui/egl/qeglproperties.cpp +++ b/src/gui/egl/qeglproperties.cpp @@ -61,7 +61,7 @@ QEglProperties::QEglProperties(EGLConfig cfg) props.append(EGL_NONE); for (int name = 0x3020; name <= 0x304F; ++name) { EGLint value; - if (name != EGL_NONE && eglGetConfigAttrib(QEglContext::display(), cfg, name, &value)) + if (name != EGL_NONE && eglGetConfigAttrib(QEgl::display(), cfg, name, &value)) setValue(name, value); } eglGetError(); // Clear the error state. @@ -274,12 +274,12 @@ static void addTag(QString& str, const QString& tag) void QEglProperties::dumpAllConfigs() { EGLint count = 0; - eglGetConfigs(QEglContext::display(), 0, 0, &count); + eglGetConfigs(QEgl::display(), 0, 0, &count); if (count < 1) return; EGLConfig *configs = new EGLConfig [count]; - eglGetConfigs(QEglContext::display(), configs, count, &count); + eglGetConfigs(QEgl::display(), configs, count, &count); for (EGLint index = 0; index < count; ++index) qWarning() << QEglProperties(configs[index]).toString(); delete [] configs; diff --git a/src/opengl/qgl_egl.cpp b/src/opengl/qgl_egl.cpp index 3addea1..90fb2bb 100644 --- a/src/opengl/qgl_egl.cpp +++ b/src/opengl/qgl_egl.cpp @@ -126,7 +126,7 @@ void qt_egl_update_format(const QEglContext& context, QGLFormat& format) // Clear the EGL error state because some of the above may // have errored out because the attribute is not applicable // to the surface type. Such errors don't matter. - context.clearError(); + QEgl::clearError(); } bool QGLFormat::hasOpenGL() diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index 3d183ee..972a5f6 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -609,7 +609,7 @@ EGLConfig Q_OPENGL_EXPORT qt_chooseEGLConfigForPixmap(bool hasAlpha, bool readOn EGLint configCount = 0; do { - eglChooseConfig(QEglContext::display(), configAttribs.properties(), targetConfig, 1, &configCount); + eglChooseConfig(QEgl::display(), configAttribs.properties(), targetConfig, 1, &configCount); if (configCount > 0) { // Got one qDebug() << "Found an" << (hasAlpha ? "ARGB" : "RGB") << (readOnly ? "readonly" : "target" ) @@ -648,7 +648,7 @@ bool Q_OPENGL_EXPORT qt_createEGLSurfaceForPixmap(QPixmapData* pmd, bool readOnl pixmapAttribs.setValue(EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGB); EGLSurface pixmapSurface; - pixmapSurface = eglCreatePixmapSurface(QEglContext::display(), + pixmapSurface = eglCreatePixmapSurface(QEgl::display(), pixmapConfig, (EGLNativePixmapType) pixmapData->handle(), pixmapAttribs.properties()); @@ -656,7 +656,7 @@ bool Q_OPENGL_EXPORT qt_createEGLSurfaceForPixmap(QPixmapData* pmd, bool readOnl // pixmapSurface, pixmapData->handle()); if (pixmapSurface == EGL_NO_SURFACE) { qWarning() << "Failed to create a pixmap surface using config" << (int)pixmapConfig - << ":" << QEglContext::errorString(eglGetError()); + << ":" << QEgl::errorString(); return false; } @@ -693,8 +693,8 @@ QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmapData* pd, cons if (!checkedForTFP) { // Check for texture_from_pixmap egl extension checkedForTFP = true; - if (eglContext->hasExtension("EGL_NOKIA_texture_from_pixmap") || - eglContext->hasExtension("EGL_EXT_texture_from_pixmap")) + if (QEgl::hasExtension("EGL_NOKIA_texture_from_pixmap") || + QEgl::hasExtension("EGL_EXT_texture_from_pixmap")) { qDebug("Found texture_from_pixmap EGL extension!"); haveTFP = true; @@ -734,7 +734,7 @@ QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmapData* pd, cons EGLBoolean success; success = eglBindTexImage(eglContext->display(), (EGLSurface)pixmapData->gl_surface, EGL_BACK_BUFFER); if (success == EGL_FALSE) { - qWarning() << "eglBindTexImage() failed:" << eglContext->errorString(eglGetError()); + qWarning() << "eglBindTexImage() failed:" << QEgl::errorString(); eglDestroySurface(eglContext->display(), (EGLSurface)pixmapData->gl_surface); pixmapData->gl_surface = (Qt::HANDLE)EGL_NO_SURFACE; haveTFP = false; @@ -757,10 +757,10 @@ void QGLContextPrivate::destroyGlSurfaceForPixmap(QPixmapData* pmd) QX11PixmapData *pixmapData = static_cast(pmd); if (pixmapData->gl_surface) { EGLBoolean success; - success = eglDestroySurface(QEglContext::display(), (EGLSurface)pixmapData->gl_surface); + success = eglDestroySurface(QEgl::display(), (EGLSurface)pixmapData->gl_surface); if (success == EGL_FALSE) { qWarning() << "destroyGlSurfaceForPixmap() - Error deleting surface: " - << QEglContext::errorString(eglGetError()); + << QEgl::errorString(); } pixmapData->gl_surface = 0; } @@ -772,12 +772,12 @@ void QGLContextPrivate::unbindPixmapFromTexture(QPixmapData* pmd) QX11PixmapData *pixmapData = static_cast(pmd); if (pixmapData->gl_surface) { EGLBoolean success; - success = eglReleaseTexImage(QEglContext::display(), + success = eglReleaseTexImage(QEgl::display(), (EGLSurface)pixmapData->gl_surface, EGL_BACK_BUFFER); if (success == EGL_FALSE) { qWarning() << "unbindPixmapFromTexture() - Unable to release bound texture: " - << QEglContext::errorString(eglGetError()); + << QEgl::errorString(); } } } diff --git a/src/opengl/qglpixelbuffer_egl.cpp b/src/opengl/qglpixelbuffer_egl.cpp index 954049d..cee5a1f 100644 --- a/src/opengl/qglpixelbuffer_egl.cpp +++ b/src/opengl/qglpixelbuffer_egl.cpp @@ -137,7 +137,7 @@ bool QGLPixelBufferPrivate::init(const QSize &size, const QGLFormat &f, QGLWidge } #endif if (pbuf == EGL_NO_SURFACE) { - qWarning() << "QGLPixelBufferPrivate::init(): Unable to create EGL pbuffer surface:" << QEglContext::errorString(eglGetError()); + qWarning() << "QGLPixelBufferPrivate::init(): Unable to create EGL pbuffer surface:" << QEgl::errorString(); return false; } @@ -204,7 +204,7 @@ GLuint QGLPixelBuffer::generateDynamicTexture() const bool QGLPixelBuffer::hasOpenGLPbuffers() { // See if we have at least 1 configuration that matches the default format. - EGLDisplay dpy = QEglContext::display(); + EGLDisplay dpy = QEgl::display(); if (dpy == EGL_NO_DISPLAY) return false; QEglProperties configProps; diff --git a/src/opengl/qpixmapdata_x11gl_egl.cpp b/src/opengl/qpixmapdata_x11gl_egl.cpp index 4f1543c..811e554 100644 --- a/src/opengl/qpixmapdata_x11gl_egl.cpp +++ b/src/opengl/qpixmapdata_x11gl_egl.cpp @@ -97,14 +97,14 @@ bool QX11GLPixmapData::hasX11GLPixmaps() #endif EGL_NONE }; - qPixmapARGBSharedEglContext = eglCreateContext(QEglContext::display(), + qPixmapARGBSharedEglContext = eglCreateContext(QEgl::display(), argbConfig, 0, contextAttribs); if (argbConfig == rgbConfig) { // If the configs are the same, we can re-use the same context. qPixmapRGBSharedEglContext = qPixmapARGBSharedEglContext; } else { - qPixmapRGBSharedEglContext = eglCreateContext(QEglContext::display(), + qPixmapRGBSharedEglContext = eglCreateContext(QEgl::display(), rgbConfig, 0, contextAttribs); } @@ -115,13 +115,12 @@ bool QX11GLPixmapData::hasX11GLPixmaps() if (!qt_createEGLSurfaceForPixmap(argbPixmapData, false)) break; - haveX11Pixmaps = eglMakeCurrent(QEglContext::display(), + haveX11Pixmaps = eglMakeCurrent(QEgl::display(), (EGLSurface)argbPixmapData->gl_surface, (EGLSurface)argbPixmapData->gl_surface, qPixmapARGBSharedEglContext); if (!haveX11Pixmaps) { - EGLint err = eglGetError(); - qWarning() << "Unable to make pixmap config current:" << err << QEglContext::errorString(err); + qWarning() << "Unable to make pixmap config current:" << QEgl::errorString(); break; } @@ -135,20 +134,19 @@ bool QX11GLPixmapData::hasX11GLPixmaps() if (!qt_createEGLSurfaceForPixmap(rgbPixmapData, false)) break; - haveX11Pixmaps = eglMakeCurrent(QEglContext::display(), + haveX11Pixmaps = eglMakeCurrent(QEgl::display(), (EGLSurface)rgbPixmapData->gl_surface, (EGLSurface)rgbPixmapData->gl_surface, qPixmapRGBSharedEglContext); if (!haveX11Pixmaps) { - EGLint err = eglGetError(); - qWarning() << "Unable to make pixmap config current:" << err << QEglContext::errorString(err); + qWarning() << "Unable to make pixmap config current:" << QEgl::errorString(); break; } } } while (0); if (qPixmapARGBSharedEglContext || qPixmapRGBSharedEglContext) { - eglMakeCurrent(QEglContext::display(), + eglMakeCurrent(QEgl::display(), EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); } @@ -168,12 +166,12 @@ bool QX11GLPixmapData::hasX11GLPixmaps() if (!haveX11Pixmaps) { // Clean up the context(s) if we can't use X11GL pixmaps if (qPixmapARGBSharedEglContext != EGL_NO_CONTEXT) - eglDestroyContext(QEglContext::display(), qPixmapARGBSharedEglContext); + eglDestroyContext(QEgl::display(), qPixmapARGBSharedEglContext); if (qPixmapRGBSharedEglContext != qPixmapARGBSharedEglContext && qPixmapRGBSharedEglContext != EGL_NO_CONTEXT) { - eglDestroyContext(QEglContext::display(), qPixmapRGBSharedEglContext); + eglDestroyContext(QEgl::display(), qPixmapRGBSharedEglContext); } qPixmapRGBSharedEglContext = EGL_NO_CONTEXT; qPixmapARGBSharedEglContext = EGL_NO_CONTEXT; -- cgit v0.12 From 6378d3d0e851f6af3e518ff53351de3253368026 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Tue, 16 Feb 2010 16:15:04 +0100 Subject: Move chooseConfig and createSurface logic to QEgl functions We keep the methods in QEglContext, but these are useful helpers which wrap the QEgl version of the functions, which is where the bulk of the logic is (for these functions anyway). Reviewed-By: Aleksandar Sasha Babic --- src/gui/egl/qegl.cpp | 24 ++++++++++++++++++------ src/gui/egl/qegl_p.h | 7 +++++-- src/gui/egl/qegl_qws.cpp | 3 ++- src/gui/egl/qegl_symbian.cpp | 2 +- src/gui/egl/qegl_wince.cpp | 2 +- src/gui/egl/qegl_x11.cpp | 2 +- 6 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp index ef5eb67..6d719ba 100644 --- a/src/gui/egl/qegl.cpp +++ b/src/gui/egl/qegl.cpp @@ -89,10 +89,10 @@ bool QEglContext::isCurrent() const } // Choose a configuration that matches "properties". -bool QEglContext::chooseConfig - (const QEglProperties& properties, QEgl::PixelFormatMatch match) +EGLConfig QEgl::chooseConfig(const QEglProperties* properties, QEgl::PixelFormatMatch match) { - QEglProperties props(properties); + QEglProperties props(*properties); + EGLConfig cfg = QEGL_NO_CONFIG; do { // Get the number of matching configurations for this set of properties. EGLint matching = 0; @@ -106,7 +106,7 @@ bool QEglContext::chooseConfig eglChooseConfig(display(), props.properties(), &cfg, 1, &matching); if (matching < 1) continue; - return true; + return cfg; } // Fetch all of the matching configurations and find the @@ -127,7 +127,7 @@ bool QEglContext::chooseConfig alpha == props.value(EGL_ALPHA_SIZE))) { cfg = configs[index]; delete [] configs; - return true; + return cfg; } } delete [] configs; @@ -146,9 +146,21 @@ bool QEglContext::chooseConfig qWarning() << "Available:"; QEgl::dumpAllConfigs(); } - return false; + return QEGL_NO_CONFIG; } +bool QEglContext::chooseConfig(const QEglProperties& properties, QEgl::PixelFormatMatch match) +{ + cfg = QEgl::chooseConfig(&properties, match); + return cfg != QEGL_NO_CONFIG; +} + +EGLSurface QEglContext::createSurface(QPaintDevice* device, const QEglProperties *properties) +{ + return QEgl::createSurface(device, cfg, properties); +} + + // Create the EGLContext. bool QEglContext::createContext(QEglContext *shareContext, const QEglProperties *properties) { diff --git a/src/gui/egl/qegl_p.h b/src/gui/egl/qegl_p.h index e48e4a0..a50e4e1 100644 --- a/src/gui/egl/qegl_p.h +++ b/src/gui/egl/qegl_p.h @@ -93,9 +93,12 @@ typedef NativeDisplayType EGLNativeDisplayType; QT_END_INCLUDE_NAMESPACE +#include QT_BEGIN_NAMESPACE +#define QEGL_NO_CONFIG ((EGLConfig)-1) + class QEglProperties; namespace QEgl { @@ -111,8 +114,8 @@ namespace QEgl { BestPixelFormat }; -// EGLConfig chooseConfig(const QEglProperties* properties, QEgl::PixelFormatMatch match = QEgl::ExactPixelFormat); -// EGLSurface createSurface(QPaintDevice *device, EGLConfig config, const QEglProperties *properties = 0); + Q_GUI_EXPORT EGLConfig chooseConfig(const QEglProperties* configAttribs, QEgl::PixelFormatMatch match = QEgl::ExactPixelFormat); + Q_GUI_EXPORT EGLSurface createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *surfaceAttribs = 0); Q_GUI_EXPORT void dumpAllConfigs(); diff --git a/src/gui/egl/qegl_qws.cpp b/src/gui/egl/qegl_qws.cpp index a40c236..935fe67 100644 --- a/src/gui/egl/qegl_qws.cpp +++ b/src/gui/egl/qegl_qws.cpp @@ -59,9 +59,10 @@ QT_BEGIN_NAMESPACE // We don't have QGLScreen to create EGL surfaces for us, // so surface creation needs to be done in QtOpenGL or // QtOpenVG for Qt/Embedded. -EGLSurface QEglContext::createSurface(QPaintDevice *device, const QEglProperties *properties) +EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *properties) { Q_UNUSED(device); + Q_UNUSED(cfg); Q_UNUSED(properties); return EGL_NO_SURFACE; } diff --git a/src/gui/egl/qegl_symbian.cpp b/src/gui/egl/qegl_symbian.cpp index 0c91fd8..2276ce0 100644 --- a/src/gui/egl/qegl_symbian.cpp +++ b/src/gui/egl/qegl_symbian.cpp @@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE -EGLSurface QEglContext::createSurface(QPaintDevice *device, const QEglProperties *properties) +EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *properties) { // Create the native drawable for the paint device. int devType = device->devType(); diff --git a/src/gui/egl/qegl_wince.cpp b/src/gui/egl/qegl_wince.cpp index 2f79005..fae491b 100644 --- a/src/gui/egl/qegl_wince.cpp +++ b/src/gui/egl/qegl_wince.cpp @@ -51,7 +51,7 @@ QT_BEGIN_NAMESPACE -EGLSurface QEglContext::createSurface(QPaintDevice *device, const QEglProperties *properties) +EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *properties) { // Create the native drawable for the paint device. int devType = device->devType(); diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index 4a813c6..d24727a 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE -EGLSurface QEglContext::createSurface(QPaintDevice *device, const QEglProperties *properties) +EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *properties) { // Create the native drawable for the paint device. int devType = device->devType(); -- cgit v0.12 From d0a2d10dfac7be20af78988a3351d374acfdd208 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Tue, 16 Feb 2010 17:38:25 +0100 Subject: Make QEgl::createSurface cross-platform and add native getters QEgl::createSurface was virtually identical for every platform apart from the line which returned the native window type. This patch just adds QEgl::nativePixmap and QEgl::nativeWindow which are platform specific (though the default widget->winId() works for everything apart from symbian). Reviewed-By: Aleksandar Sasha Babic --- src/gui/egl/qegl.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++ src/gui/egl/qegl_p.h | 3 +++ src/gui/egl/qegl_qws.cpp | 12 ---------- src/gui/egl/qegl_symbian.cpp | 37 ++----------------------------- src/gui/egl/qegl_wince.cpp | 38 -------------------------------- src/gui/egl/qegl_x11.cpp | 38 -------------------------------- 6 files changed, 57 insertions(+), 123 deletions(-) diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp index 6d719ba..ef30029 100644 --- a/src/gui/egl/qegl.cpp +++ b/src/gui/egl/qegl.cpp @@ -385,6 +385,58 @@ EGLNativeDisplayType QEgl::nativeDisplay() } #endif +#if !defined(Q_OS_SYMBIAN) +EGLNativeWindowType QEgl::nativeWindow(QWidget* widget) +{ + return (EGLNativeWindowType)(widget->winId()); +} +#endif + +EGLNativePixmapType QEgl::nativePixmap(QPixmap* pixmap) +{ + return (EGLNativePixmapType)(pixmap->handle()); +} + +EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *properties) +{ + // Create the native drawable for the paint device. + int devType = device->devType(); + EGLNativePixmapType pixmapDrawable = 0; + EGLNativeWindowType windowDrawable = 0; + bool ok; + if (devType == QInternal::Pixmap) { + pixmapDrawable = nativePixmap(static_cast(device)); + ok = (pixmapDrawable != 0); + } else if (devType == QInternal::Widget) { + windowDrawable = nativeWindow(static_cast(device)); + ok = (windowDrawable != 0); + } else { + ok = false; + } + if (!ok) { + qWarning("QEglContext::createSurface(): Cannot create the native EGL drawable"); + return EGL_NO_SURFACE; + } + + // Create the EGL surface to draw into, based on the native drawable. + const int *props; + if (properties) + props = properties->properties(); + else + props = 0; + EGLSurface surf; + if (devType == QInternal::Widget) + surf = eglCreateWindowSurface(QEgl::display(), cfg, windowDrawable, props); + else + surf = eglCreatePixmapSurface(QEgl::display(), cfg, pixmapDrawable, props); + if (surf == EGL_NO_SURFACE) { + qWarning("QEglContext::createSurface(): Unable to create EGL surface, error = 0x%x", eglGetError()); + } + return surf; +} + + + // Return the error string associated with a specific code. QString QEgl::errorString(EGLint code) { diff --git a/src/gui/egl/qegl_p.h b/src/gui/egl/qegl_p.h index a50e4e1..8a9d815 100644 --- a/src/gui/egl/qegl_p.h +++ b/src/gui/egl/qegl_p.h @@ -128,7 +128,10 @@ namespace QEgl { Q_GUI_EXPORT bool hasExtension(const char* extensionName); Q_GUI_EXPORT EGLDisplay display(); + Q_GUI_EXPORT EGLNativeDisplayType nativeDisplay(); + Q_GUI_EXPORT EGLNativeWindowType nativeWindow(QWidget*); + Q_GUI_EXPORT EGLNativePixmapType nativePixmap(QPixmap*); }; diff --git a/src/gui/egl/qegl_qws.cpp b/src/gui/egl/qegl_qws.cpp index 935fe67..eb41bcc 100644 --- a/src/gui/egl/qegl_qws.cpp +++ b/src/gui/egl/qegl_qws.cpp @@ -55,18 +55,6 @@ QT_BEGIN_NAMESPACE -// Create the surface for a QPixmap, QImage, or QWidget. -// We don't have QGLScreen to create EGL surfaces for us, -// so surface creation needs to be done in QtOpenGL or -// QtOpenVG for Qt/Embedded. -EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *properties) -{ - Q_UNUSED(device); - Q_UNUSED(cfg); - Q_UNUSED(properties); - return EGL_NO_SURFACE; -} - static QScreen *screenForDevice(QPaintDevice *device) { QScreen *screen = qt_screen; diff --git a/src/gui/egl/qegl_symbian.cpp b/src/gui/egl/qegl_symbian.cpp index 2276ce0..8833b42 100644 --- a/src/gui/egl/qegl_symbian.cpp +++ b/src/gui/egl/qegl_symbian.cpp @@ -50,42 +50,9 @@ QT_BEGIN_NAMESPACE -EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *properties) +EGLNativeWindowType QEgl::nativeWindow(QWidget* widget) { - // Create the native drawable for the paint device. - int devType = device->devType(); - EGLNativePixmapType pixmapDrawable = 0; - EGLNativeWindowType windowDrawable = 0; - bool ok; - if (devType == QInternal::Pixmap) { - pixmapDrawable = 0; - ok = (pixmapDrawable != 0); - } else if (devType == QInternal::Widget) { - QWidget *w = static_cast(device); - windowDrawable = (EGLNativeWindowType)(w->winId()->DrawableWindow()); - ok = (windowDrawable != 0); - } else { - ok = false; - } - if (!ok) { - qWarning("QEglContext::createSurface(): Cannot create the native EGL drawable"); - return EGL_NO_SURFACE; - } - - // Create the EGL surface to draw into, based on the native drawable. - const int *props; - if (properties) - props = properties->properties(); - else - props = 0; - EGLSurface surf; - if (devType == QInternal::Widget) - surf = eglCreateWindowSurface(dpy, cfg, windowDrawable, props); - else - surf = eglCreatePixmapSurface(dpy, cfg, pixmapDrawable, props); - if (surf == EGL_NO_SURFACE) - qWarning("QEglContext::createSurface(): Unable to create EGL surface, error = 0x%x", eglGetError()); - return surf; + return (EGLNativeWindowType)(widget->winId()->DrawableWindow()); } // Set pixel format and other properties based on a paint device. diff --git a/src/gui/egl/qegl_wince.cpp b/src/gui/egl/qegl_wince.cpp index fae491b..b201153 100644 --- a/src/gui/egl/qegl_wince.cpp +++ b/src/gui/egl/qegl_wince.cpp @@ -51,44 +51,6 @@ QT_BEGIN_NAMESPACE -EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *properties) -{ - // Create the native drawable for the paint device. - int devType = device->devType(); - EGLNativePixmapType pixmapDrawable = 0; - EGLNativeWindowType windowDrawable = 0; - bool ok; - if (devType == QInternal::Pixmap) { - pixmapDrawable = 0; - ok = (pixmapDrawable != 0); - } else if (devType == QInternal::Widget) { - windowDrawable = (EGLNativeWindowType)(static_cast(device))->winId(); - ok = (windowDrawable != 0); - } else { - ok = false; - } - if (!ok) { - qWarning("QEglContext::createSurface(): Cannot create the native EGL drawable"); - return EGL_NO_SURFACE; - } - - // Create the EGL surface to draw into, based on the native drawable. - const int *props; - if (properties) - props = properties->properties(); - else - props = 0; - EGLSurface surf; - if (devType == QInternal::Widget) - surf = eglCreateWindowSurface(QEgl::display(), cfg, windowDrawable, props); - else - surf = eglCreatePixmapSurface(QEgl::display(), cfg, pixmapDrawable, props); - if (surf == EGL_NO_SURFACE) { - qWarning("QEglContext::createSurface(): Unable to create EGL surface, error = 0x%x", eglGetError()); - } - return surf; -} - EGLNativeDisplayType QEgl::nativeDisplay() { HWND win = (static_cast(device))->winId(); diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index d24727a..e8fb662 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -55,44 +55,6 @@ QT_BEGIN_NAMESPACE -EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *properties) -{ - // Create the native drawable for the paint device. - int devType = device->devType(); - EGLNativePixmapType pixmapDrawable = 0; - EGLNativeWindowType windowDrawable = 0; - bool ok; - if (devType == QInternal::Pixmap) { - pixmapDrawable = (EGLNativePixmapType)(static_cast(device))->handle(); - ok = (pixmapDrawable != 0); - } else if (devType == QInternal::Widget) { - windowDrawable = (EGLNativeWindowType)(static_cast(device))->winId(); - ok = (windowDrawable != 0); - } else { - ok = false; - } - if (!ok) { - qWarning("QEglContext::createSurface(): Cannot create the native EGL drawable"); - return EGL_NO_SURFACE; - } - - // Create the EGL surface to draw into, based on the native drawable. - const int *props; - if (properties) - props = properties->properties(); - else - props = 0; - EGLSurface surf; - if (devType == QInternal::Widget) - surf = eglCreateWindowSurface(QEgl::display(), cfg, windowDrawable, props); - else - surf = eglCreatePixmapSurface(QEgl::display(), cfg, pixmapDrawable, props); - if (surf == EGL_NO_SURFACE) { - qWarning() << "QEglContext::createSurface(): Unable to create EGL surface:" - << QEgl::errorString(); - } - return surf; -} EGLNativeDisplayType QEgl::nativeDisplay() { -- cgit v0.12 From 551b41e20118b66edb37704a0cfbfe5d3a960067 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Thu, 18 Feb 2010 09:58:57 +0100 Subject: Add QEgl::defaultConfig method to select configs suitable for Qt Reviewed-By: TrustMe --- src/gui/egl/qegl.cpp | 163 +++++++++++++++++++++++++++++++++++++++++ src/gui/egl/qegl_p.h | 15 ++++ src/gui/egl/qeglproperties.cpp | 10 +++ 3 files changed, 188 insertions(+) diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp index ef30029..8bd4d7f 100644 --- a/src/gui/egl/qegl.cpp +++ b/src/gui/egl/qegl.cpp @@ -88,6 +88,169 @@ bool QEglContext::isCurrent() const return current; } +EGLConfig QEgl::defaultConfig(QPaintDevice* device, API api, ConfigOptions options) +{ + int devType = device->devType(); + + if ( (devType != QInternal::Pixmap) && ((options & Renderable) == 0)) + qWarning("QEgl::defaultConfig() - Only configs for pixmaps make sense to be read-only!"); + + EGLConfig* targetConfig = 0; + + static EGLConfig defaultVGConfigs[] = { + QEGL_NO_CONFIG, // 0 Window Renderable Translucent + QEGL_NO_CONFIG, // 1 Window Renderable Opaque + QEGL_NO_CONFIG, // 2 Pixmap Renderable Translucent + QEGL_NO_CONFIG, // 3 Pixmap Renderable Opaque + QEGL_NO_CONFIG, // 4 Pixmap ReadOnly Translucent + QEGL_NO_CONFIG // 5 Pixmap ReadOnly Opaque + }; + if (api == OpenVG) { + if (devType == QInternal::Widget) { + if (options & Translucent) + targetConfig = &(defaultVGConfigs[0]); + else + targetConfig = &(defaultVGConfigs[1]); + } else if (devType == QInternal::Pixmap) { + if (options & Renderable) { + if (options & Translucent) + targetConfig = &(defaultVGConfigs[2]); + else // Opaque + targetConfig = &(defaultVGConfigs[3]); + } else { // Read-only + if (options & Translucent) + targetConfig = &(defaultVGConfigs[4]); + else // Opaque + targetConfig = &(defaultVGConfigs[5]); + } + } + } + + + static EGLConfig defaultGLConfigs[] = { + QEGL_NO_CONFIG, // 0 Window Renderable Translucent + QEGL_NO_CONFIG, // 1 Window Renderable Opaque + QEGL_NO_CONFIG, // 2 PBuffer Renderable Translucent + QEGL_NO_CONFIG, // 3 PBuffer Renderable Opaque + QEGL_NO_CONFIG, // 4 Pixmap Renderable Translucent + QEGL_NO_CONFIG, // 5 Pixmap Renderable Opaque + QEGL_NO_CONFIG, // 6 Pixmap ReadOnly Translucent + QEGL_NO_CONFIG // 7 Pixmap ReadOnly Opaque + }; + if (api == OpenGL) { + if (devType == QInternal::Widget) { + if (options & Translucent) + targetConfig = &(defaultGLConfigs[0]); + else // Opaque + targetConfig = &(defaultGLConfigs[1]); + } else if (devType == QInternal::Pbuffer) { + if (options & Translucent) + targetConfig = &(defaultGLConfigs[2]); + else // Opaque + targetConfig = &(defaultGLConfigs[3]); + } else if (devType == QInternal::Pixmap) { + if (options & Renderable) { + if (options & Translucent) + targetConfig = &(defaultGLConfigs[4]); + else // Opaque + targetConfig = &(defaultGLConfigs[5]); + } else { // ReadOnly + if (options & Translucent) + targetConfig = &(defaultGLConfigs[6]); + else // Opaque + targetConfig = &(defaultGLConfigs[7]); + } + } + } + + if (!targetConfig) { + qWarning("QEgl::defaultConfig() - No default config for device/api/options combo"); + return QEGL_NO_CONFIG; + } + if (*targetConfig != QEGL_NO_CONFIG) + return *targetConfig; + + + // We haven't found an EGL config for the target config yet, so do it now: + + + // Allow overriding from an environment variable: + QByteArray configId; + if (api == OpenVG) + configId = qgetenv("QT_VG_EGL_CONFIG"); + else + configId = qgetenv("QT_GL_EGL_CONFIG"); + if (!configId.isEmpty()) { + // Overriden, so get the EGLConfig for the specified config ID: + EGLint properties[] = { + EGL_CONFIG_ID, (EGLint)configId.toInt(), + EGL_NONE + }; + EGLint configCount = 0; + eglChooseConfig(display(), properties, targetConfig, 1, &configCount); + if (configCount > 0) + return *targetConfig; + qWarning() << "QEgl::defaultConfig() -" << configId << "appears to be invalid"; + } + + QEglProperties configAttribs; + configAttribs.setRenderableType(api); + + EGLint surfaceType; + switch (devType) { + case QInternal::Widget: + surfaceType = EGL_WINDOW_BIT; + break; + case QInternal::Pixmap: + surfaceType = EGL_PIXMAP_BIT; + break; + case QInternal::Pbuffer: + surfaceType = EGL_PBUFFER_BIT; + break; + default: + qWarning("QEgl::defaultConfig() - Can't create EGL surface for %d device type", devType); + return QEGL_NO_CONFIG; + }; +#ifdef EGL_VG_ALPHA_FORMAT_PRE_BIT + // For OpenVG, we try to create a surface using a pre-multiplied format if + // the surface needs to have an alpha channel: + if (api == OpenVG && (options & Translucent)) + surfaceType |= EGL_VG_ALPHA_FORMAT_PRE_BIT; +#endif + configAttribs.setValue(EGL_SURFACE_TYPE, surfaceType); + +#ifdef EGL_BIND_TO_TEXTURE_RGBA + if (devType == QInternal::Pixmap || devType == QInternal::Pbuffer) { + if (options & Translucent) + configAttribs.setValue(EGL_BIND_TO_TEXTURE_RGBA, EGL_TRUE); + else + configAttribs.setValue(EGL_BIND_TO_TEXTURE_RGB, EGL_TRUE); + } +#endif + + // Add paint engine requirements + if (api == OpenVG) { +#ifndef QVG_SCISSOR_CLIP + configAttribs.setValue(EGL_ALPHA_MASK_SIZE, 1); +#endif + } else { + // Both OpenGL paint engines need to have stencil and sample buffers + configAttribs.setValue(EGL_STENCIL_SIZE, 1); + configAttribs.setValue(EGL_SAMPLE_BUFFERS, 1); +#ifndef QT_OPENGL_ES_2 + // Aditionally, the GL1 engine likes to have a depth buffer for clipping + configAttribs.setValue(EGL_DEPTH_SIZE, 1); +#endif + } + + // Finally, set the color format based on the device: + configAttribs.setPaintDeviceFormat(device); + + *targetConfig = chooseConfig(&configAttribs, QEgl::BestPixelFormat); + return *targetConfig; +} + + // Choose a configuration that matches "properties". EGLConfig QEgl::chooseConfig(const QEglProperties* properties, QEgl::PixelFormatMatch match) { diff --git a/src/gui/egl/qegl_p.h b/src/gui/egl/qegl_p.h index 8a9d815..1a5e4c0 100644 --- a/src/gui/egl/qegl_p.h +++ b/src/gui/egl/qegl_p.h @@ -114,6 +114,21 @@ namespace QEgl { BestPixelFormat }; + enum ConfigOptions + { + Opaque = 0x00, + Translucent = 0x01, + + ReadOnly = 0x00, + Renderable = 0x02 // Config will be compatable with the paint engines (VG or GL) + }; + + // Most of the time we use the same config for things like widgets & pixmaps, so rather than + // go through the eglChooseConfig loop every time, we use defaultConfig, which will return + // the config for a particular device/api/option combo. This function assumes that once a + // config is chosen for a particular combo, it's safe to always use that combo. + Q_GUI_EXPORT EGLConfig defaultConfig(QPaintDevice* device, API api, ConfigOptions options); + Q_GUI_EXPORT EGLConfig chooseConfig(const QEglProperties* configAttribs, QEgl::PixelFormatMatch match = QEgl::ExactPixelFormat); Q_GUI_EXPORT EGLSurface createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *surfaceAttribs = 0); diff --git a/src/gui/egl/qeglproperties.cpp b/src/gui/egl/qeglproperties.cpp index 86e158b..e0e8481 100644 --- a/src/gui/egl/qeglproperties.cpp +++ b/src/gui/egl/qeglproperties.cpp @@ -230,6 +230,16 @@ void QEglProperties::setRenderableType(QEgl::API api) // reductions in complexity are possible. bool QEglProperties::reduceConfiguration() { +#ifdef EGL_VG_ALPHA_FORMAT_PRE_BIT + // For OpenVG, we sometimes try to create a surface using a pre-multiplied format. If we can't + // find a config which supports pre-multiplied formats, remove the flag on the surface type: + EGLint surfaceType = value(EGL_SURFACE_TYPE); + if (surfaceType & EGL_VG_ALPHA_FORMAT_PRE_BIT) { + surfaceType ^= EGL_VG_ALPHA_FORMAT_PRE_BIT; + setValue(EGL_SURFACE_TYPE, surfaceType); + return true; + } +#endif // EGL chooses configs with the highest color depth over // those with smaller (but faster) lower color depths. One // way around this is to set EGL_BUFFER_SIZE to 16, which -- cgit v0.12 From 4c5549269144eae79bdcefc7119b2adf3044e000 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Fri, 19 Feb 2010 15:54:09 +0100 Subject: Add getCompatibleVisualId to QEgl on X11 This method takes an EGLConfig and hands back an X11 VisualID which can be used to create native windows/pixmaps which will have an EGL surface created for them using the given EGL config. Reviewed-By: TrustMe --- src/gui/egl/qegl_p.h | 4 ++ src/gui/egl/qegl_x11.cpp | 145 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 149 insertions(+) diff --git a/src/gui/egl/qegl_p.h b/src/gui/egl/qegl_p.h index 1a5e4c0..7f753d0 100644 --- a/src/gui/egl/qegl_p.h +++ b/src/gui/egl/qegl_p.h @@ -147,6 +147,10 @@ namespace QEgl { Q_GUI_EXPORT EGLNativeDisplayType nativeDisplay(); Q_GUI_EXPORT EGLNativeWindowType nativeWindow(QWidget*); Q_GUI_EXPORT EGLNativePixmapType nativePixmap(QPixmap*); + +#ifdef Q_WS_X11 + Q_GUI_EXPORT VisualID getCompatibleVisualId(EGLConfig config); +#endif }; diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index e8fb662..2c0bbd3 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -116,4 +116,149 @@ void QEglProperties::setPaintDeviceFormat(QPaintDevice *dev) setVisualFormat(qt_x11Info(dev)); } + +VisualID QEgl::getCompatibleVisualId(EGLConfig config) +{ + VisualID visualId = 0; + EGLint eglValue = 0; + + EGLint configRedSize = 0; + eglGetConfigAttrib(display(), config, EGL_RED_SIZE, &configRedSize); + + EGLint configGreenSize = 0; + eglGetConfigAttrib(display(), config, EGL_GREEN_SIZE, &configGreenSize); + + EGLint configBlueSize = 0; + eglGetConfigAttrib(display(), config, EGL_BLUE_SIZE, &configBlueSize); + + EGLint configAlphaSize = 0; + eglGetConfigAttrib(display(), config, EGL_ALPHA_SIZE, &configAlphaSize); + + eglGetConfigAttrib(display(), config, EGL_BUFFER_SIZE, &eglValue); + int configBitDepth = eglValue; + + // See if EGL provided a valid VisualID: + eglGetConfigAttrib(display(), config, EGL_NATIVE_VISUAL_ID, &eglValue); + visualId = (VisualID)eglValue; + if (visualId) { + // EGL has suggested a visual id, so get the rest of the visual info for that id: + XVisualInfo visualInfoTemplate; + memset(&visualInfoTemplate, 0, sizeof(XVisualInfo)); + visualInfoTemplate.visualid = visualId; + + XVisualInfo *chosenVisualInfo; + int matchingCount = 0; + chosenVisualInfo = XGetVisualInfo(X11->display, VisualIDMask, &visualInfoTemplate, &matchingCount); + if (chosenVisualInfo) { + if (configBitDepth == chosenVisualInfo->depth) { +#if !defined(QT_NO_XRENDER) + // If we have XRender, actually check the visual supplied by EGL is ARGB + if (configAlphaSize > 0) { + XRenderPictFormat *format; + format = XRenderFindVisualFormat(X11->display, chosenVisualInfo->visual); + if (!format || (format->type != PictTypeDirect) || (!format->direct.alphaMask)) { + qWarning("Warning: EGL suggested using X visual ID %d for config %d, but this is not ARGB", + (int)visualId, (int)config); + visualId = 0; + } + } +#endif + } else { + qWarning("Warning: EGL suggested using X visual ID %d (%d bpp) for config %d (%d bpp), but the depths do not match!", + (int)visualId, chosenVisualInfo->depth, (int)config, configBitDepth); + visualId = 0; + } + } + XFree(chosenVisualInfo); + } + + if (visualId) { +#ifdef QT_DEBUG_X11_VISUAL_SELECTION + if (configHasAlpha) + qDebug("Using ARGB Visual ID %d provided by EGL for config %d", (int)visualId, (int)config); + else + qDebug("Using Opaque Visual ID %d provided by EGL for config %d", (int)visualId, (int)config); +#endif + return visualId; + } + + + // If EGL didn't give us a valid visual ID, try XRender +#if !defined(QT_NO_XRENDER) + if (!visualId) { + XVisualInfo visualInfoTemplate; + memset(&visualInfoTemplate, 0, sizeof(XVisualInfo)); + + visualInfoTemplate.depth = configBitDepth; + visualInfoTemplate.c_class = TrueColor; + + XVisualInfo *matchingVisuals; + int matchingCount = 0; + matchingVisuals = XGetVisualInfo(X11->display, + VisualDepthMask|VisualClassMask, + &visualInfoTemplate, + &matchingCount); + + for (int i = 0; i < matchingCount; ++i) { + XRenderPictFormat *format; + format = XRenderFindVisualFormat(X11->display, matchingVisuals[i].visual); + + // Check the format for the visual matches the EGL config + if ( (countBits(format->direct.redMask) == configRedSize) && + (countBits(format->direct.greenMask) == configGreenSize) && + (countBits(format->direct.blueMask) == configBlueSize) && + (countBits(format->direct.alphaMask) == configAlphaSize) ) + { + visualId = matchingVisuals[i].visualid; + break; + } + } + if (matchingVisuals) + XFree(matchingVisuals); + + } + if (visualId) { +# ifdef QT_DEBUG_X11_VISUAL_SELECTION + if (configHasAlpha) + qDebug("Using ARGB Visual ID %d provided by XRender for EGL config %d", (int)visualId, (int)config); + else + qDebug("Using Opaque Visual ID %d provided by XRender for EGL config %d", (int)visualId, (int)config); +# endif // QT_DEBUG_X11_VISUAL_SELECTION + return visualId; + } +#endif //!defined(QT_NO_XRENDER) + + + // Finally, if XRender also failed to find a visual (or isn't present), try to + // use XGetVisualInfo and only use the bit depth to match on: + if (!visualId) { + XVisualInfo visualInfoTemplate; + memset(&visualInfoTemplate, 0, sizeof(XVisualInfo)); + + visualInfoTemplate.depth = configBitDepth; + + XVisualInfo *matchingVisuals; + int matchingCount = 0; + matchingVisuals = XGetVisualInfo(X11->display, + VisualDepthMask, + &visualInfoTemplate, + &matchingCount); + if (matchingVisuals) { + visualId = matchingVisuals[0].visualid; + XFree(matchingVisuals); + } + } + + if (visualId) { +#ifdef QT_DEBUG_X11_VISUAL_SELECTION + qDebug("Using Visual ID %d provided by XGetVisualInfo for EGL config %d", (int)visualId, (int)config); +#endif + return visualId; + } + + qWarning("Unable to find an X11 visual which matches EGL config %d", (int)config); + return (VisualID)0; +} + + QT_END_NAMESPACE -- cgit v0.12 From c993aef82eca9f5d5241093f407179e4189ab7f1 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Fri, 19 Feb 2010 18:17:08 +0100 Subject: Add QEglContext::configAttrib(int name) helper Reviewed-By: TrustMe --- src/gui/egl/qegl.cpp | 10 ++++++++++ src/gui/egl/qeglcontext_p.h | 1 + 2 files changed, 11 insertions(+) diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp index 8bd4d7f..d4c9913 100644 --- a/src/gui/egl/qegl.cpp +++ b/src/gui/egl/qegl.cpp @@ -510,6 +510,16 @@ bool QEglContext::configAttrib(int name, EGLint *value) const return eglGetConfigAttrib(QEgl::display(), cfg, name, value); } +int QEglContext::configAttrib(int name) const +{ + EGLint value; + EGLBoolean success = eglGetConfigAttrib(QEgl::display(), cfg, name, &value); + if (success) + return value; + else + return EGL_DONT_CARE; +} + QEglProperties QEglContext::configProperties() const { return QEglProperties(config()); diff --git a/src/gui/egl/qeglcontext_p.h b/src/gui/egl/qeglcontext_p.h index c656d1d..7eec7eb 100644 --- a/src/gui/egl/qeglcontext_p.h +++ b/src/gui/egl/qeglcontext_p.h @@ -89,6 +89,7 @@ public: void waitClient(); bool configAttrib(int name, EGLint *value) const; + int configAttrib(int name) const; EGLContext context() const { return ctx; } void setContext(EGLContext context) { ctx = context; ownsContext = false;} -- cgit v0.12 From 445b62cb432deb8aed3be766d3c37b9567e1d4ec Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Fri, 19 Feb 2010 18:29:42 +0100 Subject: Make QGLWidget use new QEgl::getCompatibleVisualId API Reviewed-By: TrustMe --- src/gui/egl/qegl_x11.cpp | 5 +++-- src/opengl/qgl_x11egl.cpp | 18 +++++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index 2c0bbd3..49c8d60 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -116,6 +116,7 @@ void QEglProperties::setPaintDeviceFormat(QPaintDevice *dev) setVisualFormat(qt_x11Info(dev)); } +//#define QT_DEBUG_X11_VISUAL_SELECTION 1 VisualID QEgl::getCompatibleVisualId(EGLConfig config) { @@ -174,7 +175,7 @@ VisualID QEgl::getCompatibleVisualId(EGLConfig config) if (visualId) { #ifdef QT_DEBUG_X11_VISUAL_SELECTION - if (configHasAlpha) + if (configAlphaSize > 0) qDebug("Using ARGB Visual ID %d provided by EGL for config %d", (int)visualId, (int)config); else qDebug("Using Opaque Visual ID %d provided by EGL for config %d", (int)visualId, (int)config); @@ -219,7 +220,7 @@ VisualID QEgl::getCompatibleVisualId(EGLConfig config) } if (visualId) { # ifdef QT_DEBUG_X11_VISUAL_SELECTION - if (configHasAlpha) + if (configAlphaSize > 0) qDebug("Using ARGB Visual ID %d provided by XRender for EGL config %d", (int)visualId, (int)config); else qDebug("Using Opaque Visual ID %d provided by XRender for EGL config %d", (int)visualId, (int)config); diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index 972a5f6..b8da156 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -282,6 +282,7 @@ void QGLWidget::updateOverlayGL() } //#define QT_DEBUG_X11_VISUAL_SELECTION 1 +//#undef QT_DEBUG_X11_VISUAL_SELECTION bool qt_egl_setup_x11_visual(XVisualInfo &vi, EGLDisplay display, EGLConfig config, const QX11Info &x11Info, bool useArgbVisual) { @@ -471,10 +472,21 @@ void QGLWidget::setContext(QGLContext *context, const QGLContext* shareContext, if (visible) hide(); - XVisualInfo vi; QEglContext *eglContext = d->glcx->d_func()->eglContext; - bool usingArgbVisual = qt_egl_setup_x11_visual(vi, eglContext->display(), eglContext->config(), - x11Info(), tryArgbVisual); + + XVisualInfo vi; + memset(&vi, 0, sizeof(XVisualInfo)); + vi.visualid = QEgl::getCompatibleVisualId(eglContext->config()); + + { + XVisualInfo *visualInfoPtr; + int matchingCount = 0; + visualInfoPtr = XGetVisualInfo(X11->display, VisualIDMask, &vi, &matchingCount); + vi = *visualInfoPtr; + XFree(visualInfoPtr); + } + + bool usingArgbVisual = eglContext->configAttrib(EGL_ALPHA_SIZE) > 0; XSetWindowAttributes a; -- cgit v0.12 From dbc62b34b54ec3294f1cf8248630fbd1eaad9cbc Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Tue, 23 Feb 2010 18:08:08 +0100 Subject: Remove qt_egl_setup_x11_visual This method has been re-written as QEgl::getCompatibleVisualId() which is much cleaner code. Reviewed-By: TrustMe --- src/opengl/qgl_x11egl.cpp | 150 +--------------------------------------------- 1 file changed, 1 insertion(+), 149 deletions(-) diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index b8da156..99ff5b8 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -53,9 +53,6 @@ QT_BEGIN_NAMESPACE -bool qt_egl_setup_x11_visual(XVisualInfo &vi, EGLDisplay display, EGLConfig config, - const QX11Info &x11Info, bool useArgbVisual); - /* QGLTemporaryContext implementation */ @@ -107,15 +104,7 @@ QGLTemporaryContext::QGLTemporaryContext(bool, QWidget *) int numVisuals; EGLint id = 0; - eglGetConfigAttrib(d->display, config, EGL_NATIVE_VISUAL_ID, &id); - if (id == 0) { - // EGL_NATIVE_VISUAL_ID is optional and might not be supported - // on some implementations - we'll have to do it the hard way - QX11Info xinfo; - qt_egl_setup_x11_visual(visualInfo, d->display, config, xinfo, false); - } else { - visualInfo.visualid = id; - } + visualInfo.visualid = QEgl::getCompatibleVisualId(config); vi = XGetVisualInfo(X11->display, VisualIDMask, &visualInfo, &numVisuals); if (!vi || numVisuals < 1) { qWarning("QGLTemporaryContext: Unable to get X11 visual info id."); @@ -281,143 +270,6 @@ void QGLWidget::updateOverlayGL() //handle overlay } -//#define QT_DEBUG_X11_VISUAL_SELECTION 1 -//#undef QT_DEBUG_X11_VISUAL_SELECTION - -bool qt_egl_setup_x11_visual(XVisualInfo &vi, EGLDisplay display, EGLConfig config, const QX11Info &x11Info, bool useArgbVisual) -{ - bool foundVisualIsArgb = useArgbVisual; - -#ifdef QT_DEBUG_X11_VISUAL_SELECTION - qDebug("qt_egl_setup_x11_visual() - useArgbVisual=%d", useArgbVisual); -#endif - - memset(&vi, 0, sizeof(XVisualInfo)); - - EGLint eglConfigColorSize; - eglGetConfigAttrib(display, config, EGL_BUFFER_SIZE, &eglConfigColorSize); - - // Check to see if EGL is suggesting an appropriate visual id: - EGLint nativeVisualId; - eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &nativeVisualId); - vi.visualid = nativeVisualId; - - if (vi.visualid) { - // EGL has suggested a visual id, so get the rest of the visual info for that id: - XVisualInfo *chosenVisualInfo; - int matchingCount = 0; - chosenVisualInfo = XGetVisualInfo(x11Info.display(), VisualIDMask, &vi, &matchingCount); - if (chosenVisualInfo) { -#if !defined(QT_NO_XRENDER) - if (useArgbVisual) { - // Check to make sure the visual provided by EGL is ARGB - XRenderPictFormat *format; - format = XRenderFindVisualFormat(x11Info.display(), chosenVisualInfo->visual); - if (format->type == PictTypeDirect && format->direct.alphaMask) { -#ifdef QT_DEBUG_X11_VISUAL_SELECTION - qDebug("Using ARGB X Visual ID (%d) provided by EGL", (int)vi.visualid); -#endif - foundVisualIsArgb = true; - vi = *chosenVisualInfo; - } - else { - qWarning("Warning: EGL suggested using X visual ID %d for config %d, but this is not ARGB", - nativeVisualId, (int)config); - vi.visualid = 0; - } - } else -#endif - { - if (eglConfigColorSize == chosenVisualInfo->depth) { -#ifdef QT_DEBUG_X11_VISUAL_SELECTION - qDebug("Using opaque X Visual ID (%d) provided by EGL", (int)vi.visualid); -#endif - vi = *chosenVisualInfo; - } else - qWarning("Warning: EGL suggested using X visual ID %d (%d bpp) for config %d (%d bpp), but the depths do not match!", - nativeVisualId, chosenVisualInfo->depth, (int)config, eglConfigColorSize); - } - XFree(chosenVisualInfo); - } - else { - qWarning("Warning: EGL suggested using X visual ID %d for config %d, but this seems to be invalid!", - nativeVisualId, (int)config); - vi.visualid = 0; - } - } - - // If EGL does not know the visual ID, so try to select an appropriate one ourselves, first - // using XRender if we're supposed to have an alpha, then falling back to XGetVisualInfo - -#if !defined(QT_NO_XRENDER) - if (vi.visualid == 0 && useArgbVisual) { - // Try to use XRender to find an ARGB visual we can use - vi.screen = x11Info.screen(); - vi.depth = 32; //### We might at some point (soon) get ARGB4444 - vi.c_class = TrueColor; - XVisualInfo *matchingVisuals; - int matchingCount = 0; - matchingVisuals = XGetVisualInfo(x11Info.display(), - VisualScreenMask|VisualDepthMask|VisualClassMask, - &vi, &matchingCount); - - for (int i = 0; i < matchingCount; ++i) { - XRenderPictFormat *format; - format = XRenderFindVisualFormat(x11Info.display(), matchingVisuals[i].visual); - if (format->type == PictTypeDirect && format->direct.alphaMask) { - vi = matchingVisuals[i]; - foundVisualIsArgb = true; -#ifdef QT_DEBUG_X11_VISUAL_SELECTION - qDebug("Using X Visual ID (%d) for ARGB visual as provided by XRender", (int)vi.visualid); -#endif - break; - } - } - XFree(matchingVisuals); - } -#endif - - if (vi.visualid == 0) { - EGLint depth; - eglGetConfigAttrib(display, config, EGL_BUFFER_SIZE, &depth); - int err; - err = XMatchVisualInfo(x11Info.display(), x11Info.screen(), depth, TrueColor, &vi); - if (err == 0) { - qWarning("Warning: Can't find an X visual which matches the EGL config(%d)'s depth (%d)!", - (int)config, depth); - depth = x11Info.depth(); - err = XMatchVisualInfo(x11Info.display(), x11Info.screen(), depth, TrueColor, &vi); - if (err == 0) { - qWarning("Error: Couldn't get any matching X visual!"); - return false; - } else - qWarning(" - Falling back to X11 suggested depth (%d)", depth); - } -#ifdef QT_DEBUG_X11_VISUAL_SELECTION - else - qDebug("Using X Visual ID (%d) for EGL provided depth (%d)", (int)vi.visualid, depth); -#endif - - // Don't try to use ARGB now unless the visual is 32-bit - even then it might stil fail :-( - if (useArgbVisual) - foundVisualIsArgb = vi.depth == 32; //### We might at some point (soon) get ARGB4444 - } - -#ifdef QT_DEBUG_X11_VISUAL_SELECTION - qDebug("Visual Info:"); - qDebug(" bits_per_rgb=%d", vi.bits_per_rgb); - qDebug(" red_mask=0x%x", vi.red_mask); - qDebug(" green_mask=0x%x", vi.green_mask); - qDebug(" blue_mask=0x%x", vi.blue_mask); - qDebug(" colormap_size=%d", vi.colormap_size); - qDebug(" c_class=%d", vi.c_class); - qDebug(" depth=%d", vi.depth); - qDebug(" screen=%d", vi.screen); - qDebug(" visualid=%d", vi.visualid); -#endif - return foundVisualIsArgb; -} - void QGLWidget::setContext(QGLContext *context, const QGLContext* shareContext, bool deleteOldContext) { Q_D(QGLWidget); -- cgit v0.12 From ebdfa7270f67e4ce3b5034aa5144fdabeaecbbcd Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Wed, 24 Feb 2010 13:41:29 +0100 Subject: Use QEgl::display in QGLTemporaryContext so EGL is init'd only once MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-By: Trond Kjernåsen --- src/opengl/qgl_x11egl.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index 99ff5b8..ff58fba 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -76,12 +76,7 @@ QGLTemporaryContext::QGLTemporaryContext(bool, QWidget *) d->surface = 0; int screen = 0; - d->display = eglGetDisplay(EGLNativeDisplayType(X11->display)); - - if (!eglInitialize(d->display, NULL, NULL)) { - qWarning("QGLTemporaryContext: Unable to initialize EGL display."); - return; - } + d->display = QEgl::display(); EGLConfig config; int numConfigs = 0; -- cgit v0.12 From a2eddea1432d6e558dcd620cd5100ce4531975e8 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Wed, 24 Feb 2010 17:26:11 +0100 Subject: Replace qt_egl_add_platform_config with existing QEglProperties API QEglProperties::setPaintDeviceFormat() seems to be a copy & paste of qt_egl_add_platform_config for every platform anyway. Reviewed-By: TrustMe --- src/opengl/qgl_egl_p.h | 1 - src/opengl/qgl_qws.cpp | 17 +---------------- src/opengl/qgl_wince.cpp | 12 +----------- src/opengl/qgl_x11egl.cpp | 8 +------- 4 files changed, 3 insertions(+), 35 deletions(-) diff --git a/src/opengl/qgl_egl_p.h b/src/opengl/qgl_egl_p.h index 518b500..1d8cbf1 100644 --- a/src/opengl/qgl_egl_p.h +++ b/src/opengl/qgl_egl_p.h @@ -62,7 +62,6 @@ class QGLFormat; void qt_egl_set_format(QEglProperties& props, int deviceType, const QGLFormat& f); void qt_egl_update_format(const QEglContext& context, QGLFormat& format); -void qt_egl_add_platform_config(QEglProperties& props, QPaintDevice *device); QT_END_NAMESPACE diff --git a/src/opengl/qgl_qws.cpp b/src/opengl/qgl_qws.cpp index fd17a27..c221134 100644 --- a/src/opengl/qgl_qws.cpp +++ b/src/opengl/qgl_qws.cpp @@ -119,21 +119,6 @@ bool QGLFormat::hasOpenGLOverlays() return false; } -void qt_egl_add_platform_config(QEglProperties& props, QPaintDevice *device) -{ - // Find the QGLScreen for this paint device. - QGLScreen *glScreen = glScreenForDevice(device); - if (!glScreen) { - qWarning("QGLContext::chooseContext(): The screen is not a QGLScreen"); - return; - } - int devType = device->devType(); - if (devType == QInternal::Image) - props.setPixelFormat(static_cast(device)->format()); - else - props.setPixelFormat(glScreen->pixelFormat()); -} - static EGLSurface qt_egl_create_surface (QEglContext *context, QPaintDevice *device, const QEglProperties *properties = 0) @@ -201,8 +186,8 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) // Construct the configuration we need for this surface. QEglProperties configProps; - qt_egl_add_platform_config(configProps, device()); qt_egl_set_format(configProps, devType, d->glFormat); + configProps.setPaintDeviceFormat(device()); configProps.setRenderableType(QEgl::OpenGL); // Search for a matching configuration, reducing the complexity diff --git a/src/opengl/qgl_wince.cpp b/src/opengl/qgl_wince.cpp index 2b71201..ed8b4f7 100644 --- a/src/opengl/qgl_wince.cpp +++ b/src/opengl/qgl_wince.cpp @@ -122,16 +122,6 @@ QGLTemporaryContext::~QGLTemporaryContext() QGLFormat Win32/WGL-specific code *****************************************************************************/ -void qt_egl_add_platform_config(QEglProperties& props, QPaintDevice *device) -{ - int devType = device->devType(); - if (devType == QInternal::Image) - props.setPixelFormat(static_cast(device)->format()); - else - props.setPixelFormat(QImage::Format_RGB16); -} - - static bool opengl32dll = false; bool QGLFormat::hasOpenGLOverlays() @@ -159,8 +149,8 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) // Construct the configuration we need for this surface. QEglProperties configProps; - qt_egl_add_platform_config(configProps, device()); qt_egl_set_format(configProps, devType, d->glFormat); + configProps.setPaintDeviceFormat(device()); configProps.setRenderableType(QEgl::OpenGL); // Search for a matching configuration, reducing the complexity diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index ff58fba..21ddfe3 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -154,12 +154,6 @@ bool QGLFormat::hasOpenGLOverlays() return false; } -void qt_egl_add_platform_config(QEglProperties& props, QPaintDevice *device) -{ - if (device->devType() == QInternal::Image) - props.setPixelFormat(static_cast(device)->format()); -} - // Chooses the EGL config and creates the EGL context bool QGLContext::chooseContext(const QGLContext* shareContext) { @@ -178,7 +172,7 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) // Construct the configuration we need for this surface. QEglProperties configProps; qt_egl_set_format(configProps, devType, d->glFormat); - qt_egl_add_platform_config(configProps, device()); + configProps.setPaintDeviceFormat(device()); configProps.setRenderableType(QEgl::OpenGL); #if We_have_an_EGL_library_which_bothers_to_check_EGL_BUFFER_SIZE -- cgit v0.12 From f936cc4e2a7b377981a626b1d45dbbb1c1df1cb8 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Mon, 1 Mar 2010 12:59:34 +0100 Subject: Move EGL surface type setting to new QEglProperties::setDeviceType Also renamed qt_egl_set_format->qt_eglproperties_set_glformat Reviewed-By: TrustMe --- src/gui/egl/qeglproperties.cpp | 11 +++++++ src/gui/egl/qeglproperties_p.h | 4 +-- src/opengl/qgl_egl.cpp | 62 ++++++++++++++++++--------------------- src/opengl/qgl_egl_p.h | 2 +- src/opengl/qgl_qws.cpp | 3 +- src/opengl/qgl_wince.cpp | 3 +- src/opengl/qgl_x11egl.cpp | 3 +- src/opengl/qglpixelbuffer_egl.cpp | 6 ++-- 8 files changed, 53 insertions(+), 41 deletions(-) diff --git a/src/gui/egl/qeglproperties.cpp b/src/gui/egl/qeglproperties.cpp index e0e8481..636f469 100644 --- a/src/gui/egl/qeglproperties.cpp +++ b/src/gui/egl/qeglproperties.cpp @@ -167,6 +167,17 @@ bool QEglProperties::removeValue(int name) return false; } +void QEglProperties::setDeviceType(int devType) +{ + if (devType == QInternal::Pixmap || devType == QInternal::Image) + setValue(EGL_SURFACE_TYPE, EGL_PIXMAP_BIT); + else if (devType == QInternal::Pbuffer) + setValue(EGL_SURFACE_TYPE, EGL_PBUFFER_BIT); + else + setValue(EGL_SURFACE_TYPE, EGL_WINDOW_BIT); +} + + // Sets the red, green, blue, and alpha sizes based on a pixel format. // Normally used to match a configuration request to the screen format. void QEglProperties::setPixelFormat(QImage::Format pixelFormat) diff --git a/src/gui/egl/qeglproperties_p.h b/src/gui/egl/qeglproperties_p.h index 496847b..eebcf72 100644 --- a/src/gui/egl/qeglproperties_p.h +++ b/src/gui/egl/qeglproperties_p.h @@ -82,9 +82,9 @@ public: #ifdef Q_WS_X11 void setVisualFormat(const QX11Info *xinfo); #endif - void setRenderableType(QEgl::API api); - + void setDeviceType(int devType); void setPaintDeviceFormat(QPaintDevice *dev); + void setRenderableType(QEgl::API api); bool reduceConfiguration(); diff --git a/src/opengl/qgl_egl.cpp b/src/opengl/qgl_egl.cpp index 90fb2bb..f1abab8 100644 --- a/src/opengl/qgl_egl.cpp +++ b/src/opengl/qgl_egl.cpp @@ -45,44 +45,40 @@ QT_BEGIN_NAMESPACE -// Set device configuration attributes from a QGLFormat instance. -void qt_egl_set_format(QEglProperties& props, int deviceType, const QGLFormat& f) +void qt_eglproperties_set_glformat(QEglProperties& eglProperties, const QGLFormat& glFormat) { - if (deviceType == QInternal::Pixmap || deviceType == QInternal::Image) - props.setValue(EGL_SURFACE_TYPE, EGL_PIXMAP_BIT); - else if (deviceType == QInternal::Pbuffer) - props.setValue(EGL_SURFACE_TYPE, EGL_PBUFFER_BIT); - else - props.setValue(EGL_SURFACE_TYPE, EGL_WINDOW_BIT); - - // Set the pixel format to that contained in the QGLFormat - // if the system hasn't already chosen a fixed format to - // match the pixmap, widget, etc. - if (props.value(EGL_RED_SIZE) == 0 || f.redBufferSize() != -1) - props.setValue(EGL_RED_SIZE, f.redBufferSize() == -1 ? 1 : f.redBufferSize()); - if (props.value(EGL_GREEN_SIZE) == 0 || f.greenBufferSize() != -1) - props.setValue(EGL_GREEN_SIZE, f.greenBufferSize() == -1 ? 1 : f.greenBufferSize()); - if (props.value(EGL_BLUE_SIZE) == 0 || f.blueBufferSize() != -1) - props.setValue(EGL_BLUE_SIZE, f.blueBufferSize() == -1 ? 1 : f.blueBufferSize()); - if (f.alpha()) { - if (props.value(EGL_ALPHA_SIZE) == 0 || f.alphaBufferSize() != -1) - props.setValue(EGL_ALPHA_SIZE, f.alphaBufferSize() == -1 ? 1 : f.alphaBufferSize()); + // NOTE: QGLFormat uses a magic value of -1 to indicate "don't care", even when a buffer of that + // type has been requested. + if (glFormat.depth()) { + int depthSize = glFormat.depthBufferSize(); + eglProperties.setValue(EGL_DEPTH_SIZE, depthSize == -1 ? 1 : depthSize); } - - if (f.depth()) - props.setValue(EGL_DEPTH_SIZE, f.depthBufferSize() == -1 ? 1 : f.depthBufferSize()); - if (f.stencil()) - props.setValue(EGL_STENCIL_SIZE, f.stencilBufferSize() == -1 ? 1 : f.stencilBufferSize()); - if (f.sampleBuffers()) { - props.setValue(EGL_SAMPLE_BUFFERS, 1); - props.setValue(EGL_SAMPLES, f.samples() == -1 ? 1 : f.samples()); - } else { - props.setValue(EGL_SAMPLE_BUFFERS, 0); + if (glFormat.stencil()) { + int stencilSize = glFormat.stencilBufferSize(); + eglProperties.setValue(EGL_STENCIL_SIZE, stencilSize == -1 ? 1 : stencilSize); + } + if (glFormat.sampleBuffers()) { + int sampleCount = glFormat.samples(); + eglProperties.setValue(EGL_SAMPLES, sampleCount == -1 ? 1 : sampleCount); + eglProperties.setValue(EGL_SAMPLE_BUFFERS, 1); + } + if (glFormat.alpha()) { + int alphaSize = glFormat.alphaBufferSize(); + eglProperties.setValue(EGL_ALPHA_SIZE, alphaSize == -1 ? 1 : alphaSize); } - if (deviceType == QInternal::Widget) - props.setValue(EGL_LEVEL, f.plane()); + + int redSize = glFormat.redBufferSize(); + int greenSize = glFormat.greenBufferSize(); + int blueSize = glFormat.blueBufferSize(); + int alphaSize = glFormat.alphaBufferSize(); + + eglProperties.setValue(EGL_RED_SIZE, redSize > 0 ? redSize : 1); + eglProperties.setValue(EGL_GREEN_SIZE, greenSize > 0 ? greenSize : 1); + eglProperties.setValue(EGL_BLUE_SIZE, blueSize > 0 ? blueSize : 1); + eglProperties.setValue(EGL_ALPHA_SIZE, alphaSize > 0 ? alphaSize : 0); } + // Updates "format" with the parameters of the selected configuration. void qt_egl_update_format(const QEglContext& context, QGLFormat& format) { diff --git a/src/opengl/qgl_egl_p.h b/src/opengl/qgl_egl_p.h index 1d8cbf1..6b65227 100644 --- a/src/opengl/qgl_egl_p.h +++ b/src/opengl/qgl_egl_p.h @@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE class QGLFormat; -void qt_egl_set_format(QEglProperties& props, int deviceType, const QGLFormat& f); +void qt_eglproperties_set_glformat(QEglProperties& props, const QGLFormat& format); void qt_egl_update_format(const QEglContext& context, QGLFormat& format); QT_END_NAMESPACE diff --git a/src/opengl/qgl_qws.cpp b/src/opengl/qgl_qws.cpp index c221134..f72f051 100644 --- a/src/opengl/qgl_qws.cpp +++ b/src/opengl/qgl_qws.cpp @@ -186,7 +186,8 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) // Construct the configuration we need for this surface. QEglProperties configProps; - qt_egl_set_format(configProps, devType, d->glFormat); + qt_eglproperties_set_glformat(configProps, d->glFormat); + configProps.setDeviceType(devType); configProps.setPaintDeviceFormat(device()); configProps.setRenderableType(QEgl::OpenGL); diff --git a/src/opengl/qgl_wince.cpp b/src/opengl/qgl_wince.cpp index ed8b4f7..3bf7f3a 100644 --- a/src/opengl/qgl_wince.cpp +++ b/src/opengl/qgl_wince.cpp @@ -149,7 +149,8 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) // Construct the configuration we need for this surface. QEglProperties configProps; - qt_egl_set_format(configProps, devType, d->glFormat); + qt_eglproperties_set_glformat(configProps, d->glFormat); + configProps.setDeviceType(devType); configProps.setPaintDeviceFormat(device()); configProps.setRenderableType(QEgl::OpenGL); diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index 21ddfe3..7be4973 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -171,7 +171,8 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) // Construct the configuration we need for this surface. QEglProperties configProps; - qt_egl_set_format(configProps, devType, d->glFormat); + qt_eglproperties_set_glformat(configProps, d->glFormat); + configProps.setDeviceType(devType); configProps.setPaintDeviceFormat(device()); configProps.setRenderableType(QEgl::OpenGL); diff --git a/src/opengl/qglpixelbuffer_egl.cpp b/src/opengl/qglpixelbuffer_egl.cpp index cee5a1f..ee0714f 100644 --- a/src/opengl/qglpixelbuffer_egl.cpp +++ b/src/opengl/qglpixelbuffer_egl.cpp @@ -82,7 +82,8 @@ bool QGLPixelBufferPrivate::init(const QSize &size, const QGLFormat &f, QGLWidge #endif } else { QEglProperties configProps; - qt_egl_set_format(configProps, QInternal::Pbuffer, f); + qt_eglproperties_set_glformat(configProps, f); + configProps.setDeviceType(QInternal::Pbuffer); configProps.setRenderableType(ctx->api()); bool ok = false; #if QGL_RENDER_TEXTURE @@ -208,7 +209,8 @@ bool QGLPixelBuffer::hasOpenGLPbuffers() if (dpy == EGL_NO_DISPLAY) return false; QEglProperties configProps; - qt_egl_set_format(configProps, QInternal::Pbuffer, QGLFormat::defaultFormat()); + qt_eglproperties_set_glformat(configProps, QGLFormat::defaultFormat()); + configProps.setDeviceType(QInternal::Pbuffer); configProps.setRenderableType(QEgl::OpenGL); do { EGLConfig cfg = 0; -- cgit v0.12 From b2cbb880273ae6516d68be5b5f3f9b614c31ca79 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Mon, 1 Mar 2010 14:12:23 +0100 Subject: Move QGLWidget::setContext logic into QEgl & QGLContext QEgl::createSurface() on X11 will now check to see if the device's X11 Visual is compatible with the EGLConfig passed in. If it is not compatible, the function will re-create the QPaintDevice's native drawable with a different Visual (one which is compatable with the EGLConfig). This represented the bulk of the QGLWidget::setContext method which is now much simpler. As a consequense of this change, QWidgets with graphicssystem opengl will behave much more like QGLWidget as most of the code is re-used. So things like WA_TranslucentBackground should now work with opengl graphicssystem too. Reviewed-By: TrustMe --- src/gui/egl/qegl.cpp | 3 +- src/gui/egl/qegl_x11.cpp | 121 +++++++++++++++++++++++++++ src/gui/image/qpixmap_x11_p.h | 1 + src/gui/kernel/qwidget.h | 1 + src/opengl/qgl_x11egl.cpp | 173 +++++++++++++-------------------------- src/opengl/qwindowsurface_gl.cpp | 12 --- 6 files changed, 180 insertions(+), 131 deletions(-) diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp index d4c9913..e2002ed 100644 --- a/src/gui/egl/qegl.cpp +++ b/src/gui/egl/qegl.cpp @@ -570,6 +570,7 @@ EGLNativePixmapType QEgl::nativePixmap(QPixmap* pixmap) return (EGLNativePixmapType)(pixmap->handle()); } +#ifndef Q_WS_X11 EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *properties) { // Create the native drawable for the paint device. @@ -607,7 +608,7 @@ EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglPr } return surf; } - +#endif // Return the error string associated with a specific code. diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index 49c8d60..b710889 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #include "qegl_p.h" #include "qeglcontext_p.h" @@ -261,5 +262,125 @@ VisualID QEgl::getCompatibleVisualId(EGLConfig config) return (VisualID)0; } +void qt_set_winid_on_widget(QWidget* w, Qt::HANDLE id) +{ + w->create(id); +} + + +// NOTE: The X11 version of createSurface will re-create the native drawable if it's visual doesn't +// match the one for the passed in EGLConfig +EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig config, const QEglProperties *unusedProperties) +{ + Q_UNUSED(unusedProperties); + + int devType = device->devType(); + + if (devType == QInternal::Pbuffer) { + // TODO + return EGL_NO_SURFACE; + } + + QX11PixmapData *x11PixmapData = 0; + if (devType == QInternal::Pixmap) { + QPixmapData *pmd = static_cast(device)->data_ptr().data(); + if (pmd->classId() == QPixmapData::X11Class) + x11PixmapData = static_cast(pmd); + else { + // TODO: Replace the pixmap's data with a new QX11PixmapData + qWarning("WARNING: Creating an EGL surface on a QPixmap is only supported for QX11PixmapData"); + return EGL_NO_SURFACE; + } + } else if ((devType != QInternal::Widget) && (devType != QInternal::Pbuffer)) { + qWarning("WARNING: Creating an EGLSurface for device type %d isn't supported", devType); + return EGL_NO_SURFACE; + } + + VisualID visualId = QEgl::getCompatibleVisualId(config); + EGLint alphaSize; + eglGetConfigAttrib(QEgl::display(), config, EGL_ALPHA_SIZE, &alphaSize); + + if (devType == QInternal::Widget) { + QWidget *widget = static_cast(device); + + VisualID currentVisualId = 0; + if (widget->testAttribute(Qt::WA_WState_Created)) + currentVisualId = XVisualIDFromVisual((Visual*)widget->x11Info().visual()); + + if (currentVisualId != visualId) { + // The window is either not created or has the wrong visual. Either way, we need + // to create a window with the correct visual and call create() on the widget: + + bool visible = widget->isVisible(); + if (visible) + widget->hide(); + + XVisualInfo visualInfo; + visualInfo.visualid = visualId; + { + XVisualInfo *visualInfoPtr; + int matchingCount = 0; + visualInfoPtr = XGetVisualInfo(widget->x11Info().display(), VisualIDMask, + &visualInfo, &matchingCount); + Q_ASSERT(visualInfoPtr); // visualId really should be valid! + visualInfo = *visualInfoPtr; + XFree(visualInfoPtr); + } + + Window parentWindow = RootWindow(widget->x11Info().display(), widget->x11Info().screen()); + if (widget->parentWidget()) + parentWindow = widget->parentWidget()->winId(); + + XSetWindowAttributes windowAttribs; + QColormap colmap = QColormap::instance(widget->x11Info().screen()); + windowAttribs.background_pixel = colmap.pixel(widget->palette().color(widget->backgroundRole())); + windowAttribs.border_pixel = colmap.pixel(Qt::black); + + unsigned int valueMask = CWBackPixel|CWBorderPixel; + if (alphaSize > 0) { + windowAttribs.colormap = XCreateColormap(widget->x11Info().display(), parentWindow, + visualInfo.visual, AllocNone); + valueMask |= CWColormap; + } + + Window window = XCreateWindow(widget->x11Info().display(), parentWindow, + widget->x(), widget->y(), widget->width(), widget->height(), + 0, visualInfo.depth, InputOutput, visualInfo.visual, + valueMask, &windowAttribs); + + // This is a nasty hack to get round the fact that we can't be a friend of QWidget: + qt_set_winid_on_widget(widget, window); + + if (visible) + widget->show(); + } + + // At this point, the widget's window should be created and have the correct visual. Now we + // just need to create the EGL surface for it: + return eglCreateWindowSurface(QEgl::display(), config, (EGLNativeWindowType)widget->winId(), 0); + } + + if (x11PixmapData) { + VisualID currentVisualId = XVisualIDFromVisual((Visual*)qt_x11Info(device)->visual()); + if (visualId != currentVisualId) + qWarning("Error: The QPixmap's visual does not match the EGLConfig's visual!"); + + QEglProperties surfaceAttribs; + + // If the pixmap can't be bound to a texture, it's pretty useless + surfaceAttribs.setValue(EGL_TEXTURE_TARGET, EGL_TEXTURE_2D); + if (alphaSize > 0) + surfaceAttribs.setValue(EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGBA); + else + surfaceAttribs.setValue(EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGB); + + return eglCreatePixmapSurface(QEgl::display(), config, + (EGLNativePixmapType) x11PixmapData->handle(), + surfaceAttribs.properties()); + } + + return EGL_NO_SURFACE; +} + QT_END_NAMESPACE diff --git a/src/gui/image/qpixmap_x11_p.h b/src/gui/image/qpixmap_x11_p.h index 0c0a9bd..7bc586d 100644 --- a/src/gui/image/qpixmap_x11_p.h +++ b/src/gui/image/qpixmap_x11_p.h @@ -105,6 +105,7 @@ private: friend class QRasterWindowSurface; friend class QGLContextPrivate; // Needs to access xinfo, gl_surface & flags friend class QEglContext; // Needs gl_surface + friend class QGLContext; // Needs gl_surface friend class QX11GLPixmapData; // Needs gl_surface friend bool qt_createEGLSurfaceForPixmap(QPixmapData*, bool); // Needs gl_surface diff --git a/src/gui/kernel/qwidget.h b/src/gui/kernel/qwidget.h index 0d7475e9..e12148b 100644 --- a/src/gui/kernel/qwidget.h +++ b/src/gui/kernel/qwidget.h @@ -773,6 +773,7 @@ private: #ifdef Q_WS_X11 friend void qt_net_update_user_time(QWidget *tlw, unsigned long timestamp); friend void qt_net_remove_user_time(QWidget *tlw); + friend void qt_set_winid_on_widget(QWidget*, Qt::HANDLE); #endif friend Q_GUI_EXPORT QWidgetData *qt_qwidget_data(QWidget *widget); diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index 7be4973..18a2ee5 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -48,6 +48,7 @@ #include "qgl_egl_p.h" #include "qcolormap.h" #include +#include QT_BEGIN_NAMESPACE @@ -164,55 +165,53 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) int devType = device()->devType(); - // Get the display and initialize it. + QX11PixmapData *x11PixmapData = 0; + if (devType == QInternal::Pixmap) { + QPixmapData *pmd = static_cast(device())->data_ptr().data(); + if (pmd->classId() == QPixmapData::X11Class) + x11PixmapData = static_cast(pmd); + else { + // TODO: Replace the pixmap's data with a new QX11PixmapData + qWarning("WARNING: Creating a QGLContext on a QPixmap is only supported for X11 pixmap backend"); + return false; + } + } else if ((devType != QInternal::Widget) && (devType != QInternal::Pbuffer)) { + qWarning("WARNING: Creating a QGLContext not supported on device type %d", devType); + return false; + } + + // Only create the eglContext if we don't already have one: if (d->eglContext == 0) { d->eglContext = new QEglContext(); d->eglContext->setApi(QEgl::OpenGL); + // If the device is a widget with WA_TranslucentBackground set, make sure the glFormat + // has the alpha channel option set: + if (devType == QInternal::Widget) { + QWidget* widget = static_cast(device()); + if (widget->testAttribute(Qt::WA_TranslucentBackground)) + d->glFormat.setAlpha(true); + } + // Construct the configuration we need for this surface. QEglProperties configProps; - qt_eglproperties_set_glformat(configProps, d->glFormat); configProps.setDeviceType(devType); - configProps.setPaintDeviceFormat(device()); configProps.setRenderableType(QEgl::OpenGL); + qt_eglproperties_set_glformat(configProps, d->glFormat); -#if We_have_an_EGL_library_which_bothers_to_check_EGL_BUFFER_SIZE - if (device()->depth() == 16 && configProps.value(EGL_ALPHA_SIZE) <= 0) { - qDebug("Setting EGL_BUFFER_SIZE to 16"); + // Use EGL_BUFFER_SIZE to make sure we prefer a 16-bit config over a 32-bit config + if (device()->depth() == 16 && !d->glFormat.alpha()) configProps.setValue(EGL_BUFFER_SIZE, 16); - configProps.setValue(EGL_ALPHA_SIZE, 0); - } if (!d->eglContext->chooseConfig(configProps, QEgl::BestPixelFormat)) { delete d->eglContext; d->eglContext = 0; return false; } -#else - QEgl::PixelFormatMatch matchType = QEgl::BestPixelFormat; - if ((device()->depth() == 16) && configProps.value(EGL_ALPHA_SIZE) == 0) { - configProps.setValue(EGL_RED_SIZE, 5); - configProps.setValue(EGL_GREEN_SIZE, 6); - configProps.setValue(EGL_BLUE_SIZE, 5); - configProps.setValue(EGL_ALPHA_SIZE, 0); - matchType = QEgl::ExactPixelFormat; - } - - // Search for a matching configuration, reducing the complexity - // each time until we get something that matches. - if (!d->eglContext->chooseConfig(configProps, matchType)) { - delete d->eglContext; - d->eglContext = 0; - return false; - } -#endif - -// qDebug("QGLContext::chooseContext() - using EGL config %d:", d->eglContext->config()); -// qDebug() << QEglProperties(d->eglContext->config()).toString(); // Create a new context for the configuration. - if (!d->eglContext->createContext - (shareContext ? shareContext->d_func()->eglContext : 0)) { + QEglContext* eglSharedContext = shareContext ? shareContext->d_func()->eglContext : 0; + if (!d->eglContext->createContext(eglSharedContext)) { delete d->eglContext; d->eglContext = 0; return false; @@ -220,16 +219,34 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) d->sharing = d->eglContext->isSharing(); if (d->sharing && shareContext) const_cast(shareContext)->d_func()->sharing = true; - -#if defined(EGL_VERSION_1_1) - if (d->glFormat.swapInterval() != -1 && devType == QInternal::Widget) - eglSwapInterval(d->eglContext->display(), d->glFormat.swapInterval()); -#endif } // Inform the higher layers about the actual format properties. qt_egl_update_format(*(d->eglContext), d->glFormat); + + // Do don't create the EGLSurface for everything. + // QWidget - yes, create the EGLSurface and store it in QGLContextPrivate::eglSurface + // QGLWidget - yes, create the EGLSurface and store it in QGLContextPrivate::eglSurface + // QPixmap - yes, create the EGLSurface but store it in QX11PixmapData::gl_surface + // QGLPixelBuffer - no, it creates the surface itself + + if (devType == QInternal::Widget) { + if (d->eglSurface != EGL_NO_SURFACE) + eglDestroySurface(d->eglContext->display(), d->eglSurface); + d->eglSurface = QEgl::createSurface(device(), d->eglContext->config()); + XFlush(X11->display); + setWindowCreated(true); + } + + if (x11PixmapData) { + // TODO: Actually check to see if the existing surface can be re-used + if (x11PixmapData->gl_surface) + eglDestroySurface(d->eglContext->display(), (EGLSurface)x11PixmapData->gl_surface); + + x11PixmapData->gl_surface = (Qt::HANDLE)QEgl::createSurface(device(), d->eglContext->config()); + } + return true; } @@ -277,20 +294,6 @@ void QGLWidget::setContext(QGLContext *context, const QGLContext* shareContext, QGLContext* oldcx = d->glcx; d->glcx = context; - if (parentWidget()) { - // force creation of delay-created widgets - parentWidget()->winId(); - if (parentWidget()->x11Info().screen() != x11Info().screen()) - d_func()->xinfo = parentWidget()->d_func()->xinfo; - } - - // If the application has set WA_TranslucentBackground and not explicitly set - // the alpha buffer size to zero, modify the format so it have an alpha channel - QGLFormat& fmt = d->glcx->d_func()->glFormat; - const bool tryArgbVisual = testAttribute(Qt::WA_TranslucentBackground) || fmt.alpha(); - if (tryArgbVisual && fmt.alphaBufferSize() == -1) - fmt.setAlphaBufferSize(1); - bool createFailed = false; if (!d->glcx->isValid()) { // Create the QGLContext here, which in turn chooses the EGL config @@ -304,74 +307,8 @@ void QGLWidget::setContext(QGLContext *context, const QGLContext* shareContext, return; } - if (d->glcx->windowCreated() || d->glcx->deviceIsPixmap()) { - if (deleteOldContext) - delete oldcx; - return; - } - - bool visible = isVisible(); - if (visible) - hide(); - - QEglContext *eglContext = d->glcx->d_func()->eglContext; - - XVisualInfo vi; - memset(&vi, 0, sizeof(XVisualInfo)); - vi.visualid = QEgl::getCompatibleVisualId(eglContext->config()); - - { - XVisualInfo *visualInfoPtr; - int matchingCount = 0; - visualInfoPtr = XGetVisualInfo(X11->display, VisualIDMask, &vi, &matchingCount); - vi = *visualInfoPtr; - XFree(visualInfoPtr); - } - - bool usingArgbVisual = eglContext->configAttrib(EGL_ALPHA_SIZE) > 0; - - XSetWindowAttributes a; - - Window p = RootWindow(x11Info().display(), x11Info().screen()); - if (parentWidget()) - p = parentWidget()->winId(); - - QColormap colmap = QColormap::instance(vi.screen); - a.background_pixel = colmap.pixel(palette().color(backgroundRole())); - a.border_pixel = colmap.pixel(Qt::black); - - unsigned int valueMask = CWBackPixel|CWBorderPixel; - if (usingArgbVisual) { - a.colormap = XCreateColormap(x11Info().display(), p, vi.visual, AllocNone); - valueMask |= CWColormap; - } - - Window w = XCreateWindow(x11Info().display(), p, x(), y(), width(), height(), - 0, vi.depth, InputOutput, vi.visual, valueMask, &a); - - if (deleteOldContext) - delete oldcx; - oldcx = 0; - - create(w); // Create with the ID of the window we've just created - - - // Create the EGL surface to draw into. - QGLContextPrivate *ctxpriv = d->glcx->d_func(); - ctxpriv->eglSurface = ctxpriv->eglContext->createSurface(this); - if (ctxpriv->eglSurface == EGL_NO_SURFACE) { - delete ctxpriv->eglContext; - ctxpriv->eglContext = 0; - return; - } - - d->eglSurfaceWindowId = w; // Remember the window id we created the surface for - - if (visible) - show(); - XFlush(X11->display); - d->glcx->setWindowCreated(true); + d->eglSurfaceWindowId = winId(); // Remember the window id we created the surface for } void QGLWidgetPrivate::init(QGLContext *context, const QGLWidget* shareWidget) @@ -380,7 +317,7 @@ void QGLWidgetPrivate::init(QGLContext *context, const QGLWidget* shareWidget) initContext(context, shareWidget); - if(q->isValid() && glcx->format().hasOverlay()) { + if (q->isValid() && glcx->format().hasOverlay()) { //no overlay qWarning("QtOpenGL ES doesn't currently support overlays"); } diff --git a/src/opengl/qwindowsurface_gl.cpp b/src/opengl/qwindowsurface_gl.cpp index 0334cbc..ca88de3 100644 --- a/src/opengl/qwindowsurface_gl.cpp +++ b/src/opengl/qwindowsurface_gl.cpp @@ -353,18 +353,6 @@ void QGLWindowSurface::hijackWindow(QWidget *widget) QGLContext *ctx = new QGLContext(surfaceFormat, widget); ctx->create(qt_gl_share_widget()->context()); -#if defined(Q_WS_X11) && defined(QT_OPENGL_ES) - // Create the EGL surface to draw into. QGLContext::chooseContext() - // does not do this for X11/EGL, but does do it for other platforms. - // This probably belongs in qgl_x11egl.cpp. - QGLContextPrivate *ctxpriv = ctx->d_func(); - ctxpriv->eglSurface = ctxpriv->eglContext->createSurface(widget); - if (ctxpriv->eglSurface == EGL_NO_SURFACE) { - qWarning() << "hijackWindow() could not create EGL surface"; - } - qDebug("QGLWindowSurface - using EGLConfig %d", reinterpret_cast(ctxpriv->eglContext->config())); -#endif - widgetPrivate->extraData()->glContext = ctx; union { QGLContext **ctxPtr; void **voidPtr; }; -- cgit v0.12 From 9c1ff07b427765beb71755e964b017d8258b834e Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Mon, 1 Mar 2010 16:53:17 +0100 Subject: Make bindTextureFromNativePixmap use new QEgl APIs The old qt_chooseEGLConfigForPixmap & qt_createEGLSurfaceForPixmap code will remain until QX11GLPixmapData can be re-written properly. Reviewed-By: TrustMe --- src/gui/egl/qegl.cpp | 8 +++----- src/gui/egl/qegl_p.h | 6 ++---- src/gui/egl/qegl_x11.cpp | 23 ++++++++++++++++++++--- src/gui/image/qpixmap_x11.cpp | 4 ++-- src/gui/image/qpixmap_x11_p.h | 9 +++++---- src/opengl/qgl_x11egl.cpp | 9 +++++++-- 6 files changed, 39 insertions(+), 20 deletions(-) diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp index e2002ed..1bfba10 100644 --- a/src/gui/egl/qegl.cpp +++ b/src/gui/egl/qegl.cpp @@ -88,10 +88,8 @@ bool QEglContext::isCurrent() const return current; } -EGLConfig QEgl::defaultConfig(QPaintDevice* device, API api, ConfigOptions options) +EGLConfig QEgl::defaultConfig(int devType, API api, ConfigOptions options) { - int devType = device->devType(); - if ( (devType != QInternal::Pixmap) && ((options & Renderable) == 0)) qWarning("QEgl::defaultConfig() - Only configs for pixmaps make sense to be read-only!"); @@ -243,8 +241,8 @@ EGLConfig QEgl::defaultConfig(QPaintDevice* device, API api, ConfigOptions optio #endif } - // Finally, set the color format based on the device: - configAttribs.setPaintDeviceFormat(device); + if (options & Translucent) + configAttribs.setValue(EGL_ALPHA_SIZE, 1); *targetConfig = chooseConfig(&configAttribs, QEgl::BestPixelFormat); return *targetConfig; diff --git a/src/gui/egl/qegl_p.h b/src/gui/egl/qegl_p.h index 7f753d0..aa89772 100644 --- a/src/gui/egl/qegl_p.h +++ b/src/gui/egl/qegl_p.h @@ -116,10 +116,8 @@ namespace QEgl { enum ConfigOptions { - Opaque = 0x00, + NoOptions = 0, Translucent = 0x01, - - ReadOnly = 0x00, Renderable = 0x02 // Config will be compatable with the paint engines (VG or GL) }; @@ -127,7 +125,7 @@ namespace QEgl { // go through the eglChooseConfig loop every time, we use defaultConfig, which will return // the config for a particular device/api/option combo. This function assumes that once a // config is chosen for a particular combo, it's safe to always use that combo. - Q_GUI_EXPORT EGLConfig defaultConfig(QPaintDevice* device, API api, ConfigOptions options); + Q_GUI_EXPORT EGLConfig defaultConfig(int devType, API api, ConfigOptions options); Q_GUI_EXPORT EGLConfig chooseConfig(const QEglProperties* configAttribs, QEgl::PixelFormatMatch match = QEgl::ExactPixelFormat); Q_GUI_EXPORT EGLSurface createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *surfaceAttribs = 0); diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index b710889..a4bfcac 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -361,9 +361,26 @@ EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig config, const QEg } if (x11PixmapData) { - VisualID currentVisualId = XVisualIDFromVisual((Visual*)qt_x11Info(device)->visual()); - if (visualId != currentVisualId) - qWarning("Error: The QPixmap's visual does not match the EGLConfig's visual!"); + // X11 Pixmaps are only created with a depth, so that's all we need to check + EGLint configDepth; + eglGetConfigAttrib(QEgl::display(), config, EGL_BUFFER_SIZE , &configDepth); + if (x11PixmapData->depth() != configDepth) { + // The bit depths are wrong which means the EGLConfig isn't compatable with + // this pixmap. So we need to replace the pixmap's existing data with a new + // one which is created with the correct depth: + +#ifndef QT_NO_XRENDER + if (configDepth == 32) { + qWarning("Warning: EGLConfig's depth (32) != pixmap's depth (%d), converting to ARGB32", + x11PixmapData->depth()); + x11PixmapData->convertToARGB32(true); + } else +#endif + { + qWarning("Warning: EGLConfig's depth (%d) != pixmap's depth (%d)", + configDepth, x11PixmapData->depth()); + } + } QEglProperties surfaceAttribs; diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp index b976376..5a882af 100644 --- a/src/gui/image/qpixmap_x11.cpp +++ b/src/gui/image/qpixmap_x11.cpp @@ -314,8 +314,8 @@ static int qt_pixmap_serial = 0; int Q_GUI_EXPORT qt_x11_preferred_pixmap_depth = 0; QX11PixmapData::QX11PixmapData(PixelType type) - : QPixmapData(type, X11Class), hd(0), - flags(Uninitialized), x11_mask(0), picture(0), mask_picture(0), hd2(0), gl_surface(0), + : QPixmapData(type, X11Class), gl_surface(0), hd(0), + flags(Uninitialized), x11_mask(0), picture(0), mask_picture(0), hd2(0), share_mode(QPixmap::ImplicitlyShared), pengine(0) { } diff --git a/src/gui/image/qpixmap_x11_p.h b/src/gui/image/qpixmap_x11_p.h index 7bc586d..521a612 100644 --- a/src/gui/image/qpixmap_x11_p.h +++ b/src/gui/image/qpixmap_x11_p.h @@ -94,6 +94,11 @@ public: static Qt::HANDLE createBitmapFromImage(const QImage &image); + Qt::HANDLE gl_surface; +#ifndef QT_NO_XRENDER + void convertToARGB32(bool preserveContents = true); +#endif + protected: int metric(QPaintDevice::PaintDeviceMetric metric) const; @@ -131,10 +136,6 @@ private: Qt::HANDLE picture; Qt::HANDLE mask_picture; Qt::HANDLE hd2; // sorted in the default display depth - Qt::HANDLE gl_surface; -#ifndef QT_NO_XRENDER - void convertToARGB32(bool preserveContents = true); -#endif QPixmap::ShareMode share_mode; QX11PaintEngine *pengine; diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index 18a2ee5..bcde8c4 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -508,8 +508,13 @@ QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmapData* pd, cons } if (pixmapData->gl_surface == 0) { - bool success = qt_createEGLSurfaceForPixmap(pixmapData, true); - if (!success) { + EGLConfig config = QEgl::defaultConfig(QInternal::Pixmap, + QEgl::OpenGL, + hasAlpha ? QEgl::Translucent : QEgl::NoOptions); + + QPixmap tmpPixmap(pixmapData); //### + pixmapData->gl_surface = (Qt::HANDLE)QEgl::createSurface(&tmpPixmap, config); + if (pixmapData->gl_surface == (Qt::HANDLE)EGL_NO_SURFACE) { haveTFP = false; return 0; } -- cgit v0.12 From 5363237c164667aa38433eefe8646aafee328b59 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Tue, 2 Mar 2010 09:40:55 +0100 Subject: qdoc: Second attempt, QML doc stuff. This change caused a crash on several platforms before, but not on mine, of course. It outputs a list of new QML elements on the What's New in 4.7 page, and it outputs the "Inherited by" list on each QML elemnent page for elements that are inherited by other elements. I can't see why it should crash anything, but I have included some debug output. I think the crash might have something to do with QList, which qdoc3 uses heavily. If it crashes for you, please get a stack trace and the debug output. --- tools/qdoc3/cppcodeparser.cpp | 2 +- tools/qdoc3/generator.cpp | 29 +++++++++++++++++++++ tools/qdoc3/generator.h | 7 +++++ tools/qdoc3/htmlgenerator.cpp | 60 +++++++++++++++++++++++-------------------- tools/qdoc3/htmlgenerator.h | 2 ++ tools/qdoc3/node.cpp | 9 ++++--- tools/qdoc3/node.h | 6 ++--- 7 files changed, 79 insertions(+), 36 deletions(-) diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp index 021d64a..d9e9c3b 100644 --- a/tools/qdoc3/cppcodeparser.cpp +++ b/tools/qdoc3/cppcodeparser.cpp @@ -1034,7 +1034,7 @@ void CppCodeParser::processOtherMetaCommand(const Doc& doc, else if (command == COMMAND_QMLINHERITS) { setLink(node, Node::InheritsLink, arg); if (node->subType() == Node::QmlClass) { - QmlClassNode::addInheritedBy(arg,node->name()); + QmlClassNode::addInheritedBy(arg,node); } } else if (command == COMMAND_QMLDEFAULT) { diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp index 6a8899a..40fd0e2 100644 --- a/tools/qdoc3/generator.cpp +++ b/tools/qdoc3/generator.cpp @@ -1186,6 +1186,35 @@ void Generator::appendSortedNames(Text& text, } } +void Generator::appendSortedQmlNames(Text& text, + const Node* base, + const NodeList& subs, + CodeMarker *marker) +{ + NodeList::ConstIterator r; + QMap classMap; + int index = 0; + + qDebug() << "Generator::appendSortedQmlNames():" << base->name() << "is inherited by..."; + + r = subs.begin(); + while (r != subs.end()) { + Text t; + qDebug() << " " << (*r)->name(); + appendFullName(t, (*r), base, marker); + classMap[t.toString().toLower()] = t; + ++r; + } + + QStringList names = classMap.keys(); + names.sort(); + + foreach (const QString &name, names) { + text << classMap[name]; + text << separator(index++, names.count()); + } +} + int Generator::skipAtoms(const Atom *atom, Atom::Type type) const { int skipAhead = 0; diff --git a/tools/qdoc3/generator.h b/tools/qdoc3/generator.h index 44f56e2..30d9af4 100644 --- a/tools/qdoc3/generator.h +++ b/tools/qdoc3/generator.h @@ -169,6 +169,13 @@ class Generator const QList &classes, CodeMarker *marker); + protected: + void appendSortedQmlNames(Text& text, + const Node* base, + const NodeList& subs, + CodeMarker *marker); + + private: QString amp; QString lt; QString gt; diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index e767460..411a886 100644 --- a/tools/qdoc3/htmlgenerator.cpp +++ b/tools/qdoc3/htmlgenerator.cpp @@ -73,6 +73,7 @@ QString HtmlGenerator::sinceTitles[] = " New Typedefs", " New Properties", " New Variables", + " New QML Elements", " New Qml Properties", " New Qml Signals", " New Qml Methods", @@ -687,6 +688,8 @@ int HtmlGenerator::generateAtom(const Atom *atom, nsmap = newSinceMaps.find(atom->string()); NewClassMaps::const_iterator ncmap; ncmap = newClassMaps.find(atom->string()); + NewClassMaps::const_iterator nqcmap; + nqcmap = newQmlClassMaps.find(atom->string()); if ((nsmap != newSinceMaps.constEnd()) && !nsmap.value().isEmpty()) { QList
sections; QList
::ConstIterator s; @@ -697,6 +700,13 @@ int HtmlGenerator::generateAtom(const Atom *atom, while (n != nsmap.value().constEnd()) { const Node* node = n.value(); switch (node->type()) { + case Node::Fake: + if (node->subType() == Node::QmlClass) { + sections[QmlClass].appendMember((Node*)node); + //qDebug() << "HtmlGenerator::generateAtom(): Atom::SinceList, append" + // << node->name(); + } + break; case Node::Namespace: sections[Namespace].appendMember((Node*)node); break; @@ -782,6 +792,8 @@ int HtmlGenerator::generateAtom(const Atom *atom, out() << "

" << protectEnc((*s).name) << "

\n"; if (idx == Class) generateCompactList(0, marker, ncmap.value(), QString("Q")); + else if (idx == QmlClass) + generateCompactList(0, marker, nqcmap.value(), QString("Q")); else if (idx == MemberFunction) { ParentMaps parentmaps; ParentMaps::iterator pmap; @@ -2332,7 +2344,11 @@ void HtmlGenerator::generateCompactList(const Node *relative, out() << ""; - QStringList pieces = fullName(it.value(), relative, marker).split("::"); + QStringList pieces; + if (it.value()->subType() == Node::QmlClass) + pieces << it.value()->name(); + else + pieces = fullName(it.value(), relative, marker).split("::"); out() << protectEnc(pieces.last()); out() << ""; if (pieces.size() > 1) { @@ -3723,6 +3739,9 @@ void HtmlGenerator::findAllSince(const InnerNode *node) NewClassMaps::iterator ncmap = newClassMaps.find(sinceVersion); if (ncmap == newClassMaps.end()) ncmap = newClassMaps.insert(sinceVersion,NodeMap()); + NewClassMaps::iterator nqcmap = newQmlClassMaps.find(sinceVersion); + if (nqcmap == newQmlClassMaps.end()) + nqcmap = newQmlClassMaps.insert(sinceVersion,NodeMap()); if ((*child)->type() == Node::Function) { FunctionNode *func = static_cast(*child); @@ -3742,6 +3761,16 @@ void HtmlGenerator::findAllSince(const InnerNode *node) nsmap.value().insert(className,(*child)); ncmap.value().insert(className,(*child)); } + else if ((*child)->subType() == Node::QmlClass) { + QString className = (*child)->name(); + if ((*child)->parent() && + (*child)->parent()->type() == Node::Namespace && + !(*child)->parent()->name().isEmpty()) + className = (*child)->parent()->name()+"::"+className; + nsmap.value().insert(className,(*child)); + nqcmap.value().insert(className,(*child)); + //qDebug() << "findAllSince(): insert" << className << sinceVersion; + } } else { QString name = (*child)->name(); @@ -4316,40 +4345,15 @@ void HtmlGenerator::generateQmlInheritedBy(const QmlClassNode* cn, CodeMarker* marker) { if (cn) { - QStringList subs; + NodeList subs; QmlClassNode::subclasses(cn->name(),subs); if (!subs.isEmpty()) { - subs.sort(); Text text; text << Atom::ParaLeft << "Inherited by "; - for (int i = 0; i < subs.size(); ++i) { - text << subs.at(i); - text << separator(i, subs.size()); - } + appendSortedQmlNames(text,cn,subs,marker); text << Atom::ParaRight; generateText(text, cn, marker); } -#if 0 - if (cn->links().contains(Node::InheritsLink)) { - QPair linkPair; - linkPair = cn->links()[Node::InheritsLink]; - QStringList strList(linkPair.first); - const Node* n = myTree->findNode(strList,Node::Fake); - if (n && n->subType() == Node::QmlClass) { - const QmlClassNode* qcn = static_cast(n); - out() << "

"; - Text text; - text << "[Inherits "; - text << Atom(Atom::LinkNode,CodeMarker::stringForNode(qcn)); - text << Atom(Atom::FormattingLeft, ATOM_FORMATTING_LINK); - text << Atom(Atom::String, linkPair.second); - text << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK); - text << "]"; - generateText(text, cn, marker); - out() << "

"; - } - } -#endif } } diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h index 551bead..8fe0331 100644 --- a/tools/qdoc3/htmlgenerator.h +++ b/tools/qdoc3/htmlgenerator.h @@ -90,6 +90,7 @@ class HtmlGenerator : public PageGenerator Typedef, Property, Variable, + QmlClass, QmlProperty, QmlSignal, QmlMethod, @@ -326,6 +327,7 @@ class HtmlGenerator : public PageGenerator NewSinceMaps newSinceMaps; static QString sinceTitles[]; NewClassMaps newClassMaps; + NewClassMaps newQmlClassMaps; static int id; }; diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp index 358fdd1..d2ffff5 100644 --- a/tools/qdoc3/node.cpp +++ b/tools/qdoc3/node.cpp @@ -1257,7 +1257,7 @@ bool TargetNode::isInnerNode() const #ifdef QDOC_QML bool QmlClassNode::qmlOnly = false; -QMultiMap QmlClassNode::inheritedBy; +QMultiMap QmlClassNode::inheritedBy; /*! Constructs a Qml class node (i.e. a Fake node with the @@ -1302,15 +1302,16 @@ QString QmlClassNode::fileBase() const Record the fact that QML class \a base is inherited by QML class \a sub. */ -void QmlClassNode::addInheritedBy(const QString& base, const QString& sub) +void QmlClassNode::addInheritedBy(const QString& base, Node* sub) { + //qDebug() << "QmlClassNode::addInheritedBy(): insert" << base << sub->name(); inheritedBy.insert(base,sub); } /*! - Loads the list \a subs with the names of all the subclasses of \a base. + Loads the list \a subs with the nodes of all the subclasses of \a base. */ -void QmlClassNode::subclasses(const QString& base, QStringList& subs) +void QmlClassNode::subclasses(const QString& base, NodeList& subs) { subs.clear(); if (inheritedBy.contains(base)) diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h index ae5dcd7..fd39698 100644 --- a/tools/qdoc3/node.h +++ b/tools/qdoc3/node.h @@ -383,12 +383,12 @@ class QmlClassNode : public FakeNode const ClassNode* classNode() const { return cnode; } virtual QString fileBase() const; - static void addInheritedBy(const QString& base, const QString& sub); - static void subclasses(const QString& base, QStringList& subs); + static void addInheritedBy(const QString& base, Node* sub); + static void subclasses(const QString& base, NodeList& subs); public: static bool qmlOnly; - static QMultiMap inheritedBy; + static QMultiMap inheritedBy; private: const ClassNode* cnode; -- cgit v0.12 From 9253b0dffc5e8a5d704f0a3d4960db4cd484d69a Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Tue, 2 Mar 2010 09:22:12 +0100 Subject: skip tst_QDialog::throwInExec on WinCE, ARM platform Rethrowing exceptions across DLL boundaries crashes on Windows CE ARM devices. This is a restriction of the Microsoft tools. See thread "(Re)throwing from a catch block across dll boundaries" in microsoft.public.windowsce.embedded.vc Reviewed-by: ninerider --- tests/auto/qdialog/tst_qdialog.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/qdialog/tst_qdialog.cpp b/tests/auto/qdialog/tst_qdialog.cpp index 7b8213d..86f87b8 100644 --- a/tests/auto/qdialog/tst_qdialog.cpp +++ b/tests/auto/qdialog/tst_qdialog.cpp @@ -464,8 +464,8 @@ public slots: void tst_QDialog::throwInExec() { -#ifdef Q_WS_MAC - QSKIP("Qt/Mac: Throwing exceptions in exec() is not supported.", SkipAll); +#if defined(Q_WS_MAC) || (defined(Q_WS_WINCE) && defined(_ARM_)) + QSKIP("Throwing exceptions in exec() is not supported on this platform.", SkipAll); #endif int caughtExceptions = 0; try { -- cgit v0.12 From 94b2938086203bc6154b107c518df7a6fbfb4b2c Mon Sep 17 00:00:00 2001 From: Janne Anttila Date: Tue, 2 Mar 2010 10:56:03 +0200 Subject: Fixed FEP crash when selected text was replaced with a a new T9 text. In T9 input mode StartFepInlineEditL gets called with empty initial text. In case there was text selected in editor when editing started, the selected text did not get removed since the logic in editors to detect input is as follows: bool isGettingInput = !event->commitString().isEmpty() || event->preeditString() != preeditAreaText() || event->replacementLength() > 0; This means that empty preeditString did not trigger selection removal, but the selected text was removed when non-empty inline text was provided by UpdateFepInlineTextL. However, the S60 FEP assumes that StartFepInlineEditL removes the selected text, i.e GetCursorSelectionForFep after StartFepInlineEditL must return empty selection. The above issue was fixed by removing the selected text explicitly in StartFepInlineEditL if aInitialInlineText is empty. Task-number: QTBUG-6363 Reviewed-by: Axis --- src/gui/inputmethod/qcoefepinputcontext_s60.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp index 1ac8ace..cc60246 100644 --- a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp +++ b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp @@ -551,6 +551,21 @@ void QCoeFepInputContext::StartFepInlineEditL(const TDesC& aInitialInlineText, m_formatRetriever = &aInlineTextFormatRetriever; m_pointerHandler = &aPointerEventHandlerDuringInlineEdit; + // With T9 aInitialInlineText is typically empty when StartFepInlineEditL is called, + // but FEP requires that selected text is always removed at StartFepInlineEditL. + // Let's remove the selected text if aInitialInlineText is empty and there is selected text + if (m_preeditString.isEmpty()) { + int anchor = w->inputMethodQuery(Qt::ImAnchorPosition).toInt(); + int replacementLength = qAbs(m_cursorPos-anchor); + if (replacementLength > 0) { + int replacementStart = m_cursorPos < anchor ? 0 : -replacementLength; + QList clearSelectionAttributes; + QInputMethodEvent clearSelectionEvent(QLatin1String(""), clearSelectionAttributes); + clearSelectionEvent.setCommitString(QLatin1String(""), replacementStart, replacementLength); + sendEvent(clearSelectionEvent); + } + } + applyFormat(&attributes); attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, -- cgit v0.12 From d0c4433ca1aabab1a8fac1aae2ba65f25dae5f85 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Tue, 2 Mar 2010 10:19:21 +0100 Subject: doc: Fixed some qdoc errors. --- src/declarative/graphicsitems/qdeclarativeitem.cpp | 2 +- src/network/bearer/qnetworksession.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index f48c761..5014fd8 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -1172,7 +1172,7 @@ QDeclarativeKeysAttached *QDeclarativeKeysAttached::qmlAttachedProperties(QObjec See the \l {Keys}{Keys} attached property for detailed documentation. - \section 1 Property Change Signals + \section1 Property Change Signals Most properties on Item and Item derivatives have a signal emitted when they change. By convention, the signals are diff --git a/src/network/bearer/qnetworksession.cpp b/src/network/bearer/qnetworksession.cpp index f0d7ede..047c8d3 100644 --- a/src/network/bearer/qnetworksession.cpp +++ b/src/network/bearer/qnetworksession.cpp @@ -527,7 +527,7 @@ QVariant QNetworkSession::sessionProperty(const QString& key) const \a key. Removing an already set property can be achieved by passing an invalid QVariant. - Note that the \i UserChoiceConfiguration and \i ActiveConfiguration + Note that the \e UserChoiceConfiguration and \e ActiveConfiguration properties are read only and cannot be changed using this method. */ void QNetworkSession::setSessionProperty(const QString& key, const QVariant& value) -- cgit v0.12 From 2d0e06a495b5c5a723997eef9618fdd7a7bc98b1 Mon Sep 17 00:00:00 2001 From: Carlos Manuel Duclos Vergara Date: Tue, 2 Mar 2010 10:24:41 +0100 Subject: Carbon : Setting palette brush to a pixmap does not work. The problem occurs because we were drawing the pixmap and then clearing the buffer. This patch basically moves the clearing of the buffer to the start of the process instead of having it in the middle. Task-number: QTBUG-7800 Reviewed-by: Morten Sorvig --- src/gui/kernel/qwidget_mac.mm | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index f78596e..c7acf69 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -1268,6 +1268,11 @@ OSStatus QWidgetPrivate::qt_widget_event(EventHandlerCallRef er, EventRef event, if (widget->isVisible() && widget->updatesEnabled()) { //process the actual paint event. if(widget->testAttribute(Qt::WA_WState_InPaintEvent)) qWarning("QWidget::repaint: Recursive repaint detected"); + if (widget->isWindow() && !widget->d_func()->isOpaque + && !widget->testAttribute(Qt::WA_MacBrushedMetal)) { + QRect qrgnRect = qrgn.boundingRect(); + CGContextClearRect(cg, CGRectMake(qrgnRect.x(), qrgnRect.y(), qrgnRect.width(), qrgnRect.height())); + } QPoint redirectionOffset(0, 0); QWidget *tl = widget->window(); @@ -1318,13 +1323,6 @@ OSStatus QWidgetPrivate::qt_widget_event(EventHandlerCallRef er, EventRef event, widget->d_func()->restoreRedirected(); } - if (widget->isWindow() && !widget->d_func()->isOpaque - && !widget->testAttribute(Qt::WA_MacBrushedMetal)) { - QRect qrgnRect = qrgn.boundingRect(); - CGContextClearRect(cg, CGRectMake(qrgnRect.x(), qrgnRect.y(), qrgnRect.width(), qrgnRect.height())); - } - - if(!HIObjectIsOfClass((HIObjectRef)hiview, kObjectQWidget)) CallNextEventHandler(er, event); -- cgit v0.12 From f1412745126db129445a368525f7ec05b20a0885 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Tue, 2 Mar 2010 18:45:02 +1000 Subject: Empty URL test --- src/declarative/qml/qdeclarativecomponent.cpp | 7 ++ tests/auto/declarative/declarative.pro | 1 + .../qdeclarativecomponent.pro | 8 +++ .../tst_qdeclarativecomponent.cpp | 75 ++++++++++++++++++++++ 4 files changed, 91 insertions(+) create mode 100644 tests/auto/declarative/qdeclarativecomponent/qdeclarativecomponent.pro create mode 100644 tests/auto/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index 6a2d2d1..d6bb216 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -437,6 +437,13 @@ void QDeclarativeComponent::loadUrl(const QUrl &url) else d->url = url; + if (url.isEmpty()) { + QDeclarativeError error; + error.setDescription(tr("Invalid empty URL")); + d->state.errors << error; + return; + } + QDeclarativeCompositeTypeData *data = QDeclarativeEnginePrivate::get(d->engine)->typeManager.get(d->url); diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index 42ff523..4ee6d8c 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -7,6 +7,7 @@ SUBDIRS += \ qdeclarativeanimations \ # Cover qdeclarativebehaviors \ # Cover qdeclarativebinding \ # Cover + qdeclarativecomponent \ # Cover qdeclarativeconnection \ # Cover qdeclarativecontext \ # Cover qdeclarativedatetimeformatter \ # Cover diff --git a/tests/auto/declarative/qdeclarativecomponent/qdeclarativecomponent.pro b/tests/auto/declarative/qdeclarativecomponent/qdeclarativecomponent.pro new file mode 100644 index 0000000..c7affb7 --- /dev/null +++ b/tests/auto/declarative/qdeclarativecomponent/qdeclarativecomponent.pro @@ -0,0 +1,8 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative +QT += script network +macx:CONFIG -= app_bundle + +SOURCES += tst_qdeclarativecomponent.cpp + +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp b/tests/auto/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp new file mode 100644 index 0000000..c9e304c --- /dev/null +++ b/tests/auto/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** 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 + +#include +#include + +class tst_qdeclarativecomponent : public QObject +{ + Q_OBJECT +public: + tst_qdeclarativecomponent() { } + +private slots: + void loadEmptyUrl(); + +private: + QDeclarativeEngine engine; +}; + +void tst_qdeclarativecomponent::loadEmptyUrl() +{ + QDeclarativeComponent c(&engine); + c.loadUrl(QUrl()); + + QVERIFY(c.isError()); + QCOMPARE(c.errors().count(), 1); + QDeclarativeError error = c.errors().first(); + QCOMPARE(error.url(), QUrl()); + QCOMPARE(error.line(), -1); + QCOMPARE(error.column(), -1); + QCOMPARE(error.description(), QLatin1String("Invalid empty URL")); +} + +QTEST_MAIN(tst_qdeclarativecomponent) + +#include "tst_qdeclarativecomponent.moc" -- cgit v0.12 From 3b8cad8be96d7791e8ca8305609d1155ec093b80 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Tue, 2 Mar 2010 19:35:30 +1000 Subject: Don't return QDeclarativeDeclarativeData for a deleting object This was causing crashes in the qmldesigner. --- src/declarative/qml/qdeclarativedeclarativedata_p.h | 5 ++++- src/declarative/qml/qdeclarativeengine_p.h | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/declarative/qml/qdeclarativedeclarativedata_p.h b/src/declarative/qml/qdeclarativedeclarativedata_p.h index 2c92419..a7a73bc 100644 --- a/src/declarative/qml/qdeclarativedeclarativedata_p.h +++ b/src/declarative/qml/qdeclarativedeclarativedata_p.h @@ -103,7 +103,10 @@ public: static QDeclarativeDeclarativeData *get(const QObject *object, bool create = false) { QObjectPrivate *priv = QObjectPrivate::get(const_cast(object)); - if (priv->declarativeData) { + if (priv->wasDeleted) { + Q_ASSERT(!create); + return 0; + } else if (priv->declarativeData) { return static_cast(priv->declarativeData); } else if (create) { priv->declarativeData = new QDeclarativeDeclarativeData; diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h index 0359f98..d3eb583 100644 --- a/src/declarative/qml/qdeclarativeengine_p.h +++ b/src/declarative/qml/qdeclarativeengine_p.h @@ -238,7 +238,8 @@ public: QHash propertyCache; QDeclarativePropertyCache *cache(QObject *obj) { Q_Q(QDeclarativeEngine); - if (!obj || QObjectPrivate::get(obj)->metaObject) return 0; + if (!obj || QObjectPrivate::get(obj)->metaObject || + QObjectPrivate::get(obj)->wasDeleted) return 0; const QMetaObject *mo = obj->metaObject(); QDeclarativePropertyCache *rv = propertyCache.value(mo); if (!rv) { -- cgit v0.12 From b08f42e5cc0d94a3b54494f6fe0af90be858f1eb Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Tue, 2 Mar 2010 10:39:28 +0100 Subject: Make the icon visible when set on an action in a QSystemTrayIcon on Mac This was a Carbon specific problem, it was already working fine in Cocoa Task-number: QTBUG-8521 Reviewed-by: richard --- src/gui/util/qsystemtrayicon_mac.mm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/util/qsystemtrayicon_mac.mm b/src/gui/util/qsystemtrayicon_mac.mm index 0265a83..d829947 100644 --- a/src/gui/util/qsystemtrayicon_mac.mm +++ b/src/gui/util/qsystemtrayicon_mac.mm @@ -530,7 +530,11 @@ private: [item setToolTip:(NSString*)QCFString::toCFStringRef(action->toolTip())]; const QIcon icon = action->icon(); if(!icon.isNull()) { +#ifndef QT_MAC_USE_COCOA + const short scale = GetMBarHeight(); +#else const short scale = [[NSApp mainMenu] menuBarHeight]; +#endif NSImage *nsimage = static_cast(qt_mac_create_nsimage(icon.pixmap(QSize(scale, scale)))); [item setImage: nsimage]; [nsimage release]; -- cgit v0.12 From cb9051c79e5937ad8441100aaf67553e28ba0700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Tue, 2 Mar 2010 10:25:13 +0100 Subject: Prevented assert on 1 pixel wide / high images in qt_blurImage. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Don't attempt to run qt_halfScaled on images less than 2px in either dimension. Particularly, avoid doing this from qt_blurImage, where that situation can happen as a result of a clipped QGraphicsEffect. Reviewed-by: Bjørn Erik Nilsen --- src/gui/image/qpixmapfilter.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/image/qpixmapfilter.cpp b/src/gui/image/qpixmapfilter.cpp index 2792e45..c605880 100644 --- a/src/gui/image/qpixmapfilter.cpp +++ b/src/gui/image/qpixmapfilter.cpp @@ -777,6 +777,9 @@ void expblur(QImage &img, qreal radius, bool improvedQuality = false, int transp Q_GUI_EXPORT QImage qt_halfScaled(const QImage &source) { + if (source.width() < 2 || source.height() < 2) + return QImage(); + QImage srcImage = source; if (source.format() == QImage::Format_Indexed8) { @@ -869,7 +872,7 @@ Q_GUI_EXPORT void qt_blurImage(QPainter *p, QImage &blurImage, qreal radius, boo } qreal scale = 1; - if (radius >= 4) { + if (radius >= 4 && blurImage.width() >= 2 && blurImage.height() >= 2) { blurImage = qt_halfScaled(blurImage); scale = 2; radius *= qreal(0.5); -- cgit v0.12 From 6e84a270c94376d24392d797f99bc7e95b217a34 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Tue, 2 Mar 2010 19:48:54 +1000 Subject: Add "on" syntax to QmlChanges.txt --- src/declarative/QmlChanges.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt index c312abf..4951cb3 100644 --- a/src/declarative/QmlChanges.txt +++ b/src/declarative/QmlChanges.txt @@ -53,6 +53,16 @@ matchProperties and matchTargets have been renamed back to properties and target The semantics are explained in the PropertyAnimation::properties documentation and the animation overview documentation. +Behavior and Animation syntax +----------------------------- + +Previously animations and behaviors could be "assigned" to properties like this: + Item { x: Behavior {}; y: NumberAnimation {} } +To make it more obvious that these are not regular value assignments a new "on" +syntax has been introduced: + Item { Behavior on x {}; NumberAnimation on y {} } +Only the syntax has changed, the behavior is identical. + ============================================================================= The changes below are pre-4.6.0 release. -- cgit v0.12 From 340eb4f20a5976be77ee66bbfc2ef16c97b033d2 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Mon, 1 Mar 2010 14:43:24 +0100 Subject: replace temporary disconnection with a very simple statemachine MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit this also fixes an issue with non-constant ordering of connections to document's contentsChange() signal Merge-request: 481 Reviewed-by: Thorbjørn Lindeijer --- src/gui/text/qsyntaxhighlighter.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp index 6750c09..9b3671d 100644 --- a/src/gui/text/qsyntaxhighlighter.cpp +++ b/src/gui/text/qsyntaxhighlighter.cpp @@ -59,23 +59,24 @@ class QSyntaxHighlighterPrivate : public QObjectPrivate { Q_DECLARE_PUBLIC(QSyntaxHighlighter) public: - inline QSyntaxHighlighterPrivate() : rehighlightPending(false) {} + inline QSyntaxHighlighterPrivate() + : rehighlightPending(false), inReformatBlocks(false) + {} QPointer doc; void _q_reformatBlocks(int from, int charsRemoved, int charsAdded); + void reformatBlocks(int from, int charsRemoved, int charsAdded); void reformatBlock(QTextBlock block); inline void rehighlight(QTextCursor &cursor, QTextCursor::MoveOperation operation) { - QObject::disconnect(doc, SIGNAL(contentsChange(int,int,int)), - q_func(), SLOT(_q_reformatBlocks(int,int,int))); + inReformatBlocks = true; cursor.beginEditBlock(); int from = cursor.position(); cursor.movePosition(operation); - _q_reformatBlocks(from, 0, cursor.position() - from); + reformatBlocks(from, 0, cursor.position() - from); cursor.endEditBlock(); - QObject::connect(doc, SIGNAL(contentsChange(int,int,int)), - q_func(), SLOT(_q_reformatBlocks(int,int,int))); + inReformatBlocks = false; } inline void _q_delayedRehighlight() { @@ -90,6 +91,7 @@ public: QVector formatChanges; QTextBlock currentBlock; bool rehighlightPending; + bool inReformatBlocks; }; void QSyntaxHighlighterPrivate::applyFormatChanges() @@ -162,6 +164,12 @@ void QSyntaxHighlighterPrivate::applyFormatChanges() void QSyntaxHighlighterPrivate::_q_reformatBlocks(int from, int charsRemoved, int charsAdded) { + if (!inReformatBlocks) + reformatBlocks(from, charsRemoved, charsAdded); +} + +void QSyntaxHighlighterPrivate::reformatBlocks(int from, int charsRemoved, int charsAdded) +{ Q_UNUSED(charsRemoved); rehighlightPending = false; -- cgit v0.12 From 6d51c7b9d1f6700564ec9e3c3f7b41b6b94a74da Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Mon, 1 Mar 2010 14:43:26 +0100 Subject: don't cancel the scheduled complete rehighlight from rehighlightBlock() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit if rehighlightBlock() is called just after setDocument() then it is possible that reformatBlocks() will be called just before q_delayedRehighlight() and thus will prevent previously scheduled complete rehighlighting. Merge-request: 481 Reviewed-by: Thorbjørn Lindeijer --- src/gui/text/qsyntaxhighlighter.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp index 9b3671d..b5a7aa1 100644 --- a/src/gui/text/qsyntaxhighlighter.cpp +++ b/src/gui/text/qsyntaxhighlighter.cpp @@ -402,8 +402,13 @@ void QSyntaxHighlighter::rehighlightBlock(const QTextBlock &block) if (!d->doc) return; + const bool rehighlightPending = d->rehighlightPending; + QTextCursor cursor(block); d->rehighlight(cursor, QTextCursor::EndOfBlock); + + if (rehighlightPending) + d->rehighlightPending = rehighlightPending; } /*! -- cgit v0.12 From 667ef5950bc16ff8582ac32f5150fc9f45a09682 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Mon, 1 Mar 2010 14:43:28 +0100 Subject: don't even try to rehighlight invalid or alien block MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge-request: 481 Reviewed-by: Thorbjørn Lindeijer --- src/gui/text/qsyntaxhighlighter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp index b5a7aa1..de16ca5 100644 --- a/src/gui/text/qsyntaxhighlighter.cpp +++ b/src/gui/text/qsyntaxhighlighter.cpp @@ -399,7 +399,7 @@ void QSyntaxHighlighter::rehighlight() void QSyntaxHighlighter::rehighlightBlock(const QTextBlock &block) { Q_D(QSyntaxHighlighter); - if (!d->doc) + if (!d->doc || !block.isValid() || block.document() != d->doc) return; const bool rehighlightPending = d->rehighlightPending; -- cgit v0.12 From 24c5bc6c0c5c23d808f055dabefd15a551cb0902 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Mon, 1 Mar 2010 14:43:30 +0100 Subject: minor clean-ups and styling fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge-request: 481 Reviewed-by: Thorbjørn Lindeijer --- src/gui/text/qsyntaxhighlighter.cpp | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp index de16ca5..02dabbb 100644 --- a/src/gui/text/qsyntaxhighlighter.cpp +++ b/src/gui/text/qsyntaxhighlighter.cpp @@ -67,8 +67,8 @@ public: void _q_reformatBlocks(int from, int charsRemoved, int charsAdded); void reformatBlocks(int from, int charsRemoved, int charsAdded); - void reformatBlock(QTextBlock block); - + void reformatBlock(const QTextBlock &block); + inline void rehighlight(QTextCursor &cursor, QTextCursor::MoveOperation operation) { inReformatBlocks = true; cursor.beginEditBlock(); @@ -84,7 +84,6 @@ public: return; rehighlightPending = false; q_func()->rehighlight(); - return; } void applyFormatChanges(); @@ -106,10 +105,11 @@ void QSyntaxHighlighterPrivate::applyFormatChanges() QList::Iterator it = ranges.begin(); while (it != ranges.end()) { if (it->start >= preeditAreaStart - && it->start + it->length <= preeditAreaStart + preeditAreaLength) + && it->start + it->length <= preeditAreaStart + preeditAreaLength) { ++it; - else + } else { it = ranges.erase(it); + } } QTextCharFormat emptyFormat; @@ -137,11 +137,10 @@ void QSyntaxHighlighterPrivate::applyFormatChanges() r.length = i - r.start; - if (r.start >= preeditAreaStart) { + if (r.start >= preeditAreaStart) r.start += preeditAreaLength; - } else if (r.start + r.length >= preeditAreaStart) { + else if (r.start + r.length >= preeditAreaStart) r.length += preeditAreaLength; - } ranges << r; r.start = r.length = -1; @@ -150,11 +149,10 @@ void QSyntaxHighlighterPrivate::applyFormatChanges() if (r.start != -1) { r.length = formatChanges.count() - r.start; - if (r.start >= preeditAreaStart) { + if (r.start >= preeditAreaStart) r.start += preeditAreaLength; - } else if (r.start + r.length >= preeditAreaStart) { + else if (r.start + r.length >= preeditAreaStart) r.length += preeditAreaLength; - } ranges << r; } @@ -170,7 +168,6 @@ void QSyntaxHighlighterPrivate::_q_reformatBlocks(int from, int charsRemoved, in void QSyntaxHighlighterPrivate::reformatBlocks(int from, int charsRemoved, int charsAdded) { - Q_UNUSED(charsRemoved); rehighlightPending = false; QTextBlock block = doc->findBlock(from); @@ -199,7 +196,7 @@ void QSyntaxHighlighterPrivate::reformatBlocks(int from, int charsRemoved, int c formatChanges.clear(); } -void QSyntaxHighlighterPrivate::reformatBlock(QTextBlock block) +void QSyntaxHighlighterPrivate::reformatBlock(const QTextBlock &block) { Q_Q(QSyntaxHighlighter); @@ -357,8 +354,8 @@ void QSyntaxHighlighter::setDocument(QTextDocument *doc) if (d->doc) { connect(d->doc, SIGNAL(contentsChange(int,int,int)), this, SLOT(_q_reformatBlocks(int,int,int))); - QTimer::singleShot(0, this, SLOT(_q_delayedRehighlight())); d->rehighlightPending = true; + QTimer::singleShot(0, this, SLOT(_q_delayedRehighlight())); } } @@ -473,7 +470,6 @@ void QSyntaxHighlighter::rehighlightBlock(const QTextBlock &block) void QSyntaxHighlighter::setFormat(int start, int count, const QTextCharFormat &format) { Q_D(QSyntaxHighlighter); - if (start < 0 || start >= d->formatChanges.count()) return; @@ -641,7 +637,7 @@ QTextBlockUserData *QSyntaxHighlighter::currentBlockUserData() const \since 4.4 Returns the current text block. - */ +*/ QTextBlock QSyntaxHighlighter::currentBlock() const { Q_D(const QSyntaxHighlighter); -- cgit v0.12 From b49eaedbe81011483ce52af71e9ebf29c61cef43 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Mon, 1 Mar 2010 14:43:33 +0100 Subject: remove unused code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge-request: 481 Reviewed-by: Thorbjørn Lindeijer --- src/gui/text/qsyntaxhighlighter.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp index 02dabbb..1dc8e23 100644 --- a/src/gui/text/qsyntaxhighlighter.cpp +++ b/src/gui/text/qsyntaxhighlighter.cpp @@ -203,7 +203,6 @@ void QSyntaxHighlighterPrivate::reformatBlock(const QTextBlock &block) Q_ASSERT_X(!currentBlock.isValid(), "QSyntaxHighlighter::reformatBlock()", "reFormatBlock() called recursively"); currentBlock = block; - QTextBlock previous = block.previous(); formatChanges.fill(QTextCharFormat(), block.length() - 1); q->highlightBlock(block.text()); -- cgit v0.12 From b7a79ea08be3e127058be549ed354d6276e32e0f Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Mon, 1 Mar 2010 14:43:35 +0100 Subject: minor optimization: ignore invalid preeditAreaPosition/preeditAreaText MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge-request: 481 Reviewed-by: Thorbjørn Lindeijer --- src/gui/text/qsyntaxhighlighter.cpp | 40 +++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp index 1dc8e23..d3db2a1 100644 --- a/src/gui/text/qsyntaxhighlighter.cpp +++ b/src/gui/text/qsyntaxhighlighter.cpp @@ -102,20 +102,22 @@ void QSyntaxHighlighterPrivate::applyFormatChanges() const int preeditAreaStart = layout->preeditAreaPosition(); const int preeditAreaLength = layout->preeditAreaText().length(); - QList::Iterator it = ranges.begin(); - while (it != ranges.end()) { - if (it->start >= preeditAreaStart - && it->start + it->length <= preeditAreaStart + preeditAreaLength) { - ++it; - } else { - it = ranges.erase(it); + if (preeditAreaLength != 0) { + QList::Iterator it = ranges.begin(); + while (it != ranges.end()) { + if (it->start >= preeditAreaStart + && it->start + it->length <= preeditAreaStart + preeditAreaLength) { + ++it; + } else { + it = ranges.erase(it); + } } } QTextCharFormat emptyFormat; QTextLayout::FormatRange r; - r.start = r.length = -1; + r.start = -1; int i = 0; while (i < formatChanges.count()) { @@ -137,22 +139,26 @@ void QSyntaxHighlighterPrivate::applyFormatChanges() r.length = i - r.start; - if (r.start >= preeditAreaStart) - r.start += preeditAreaLength; - else if (r.start + r.length >= preeditAreaStart) - r.length += preeditAreaLength; + if (preeditAreaLength != 0) { + if (r.start >= preeditAreaStart) + r.start += preeditAreaLength; + else if (r.start + r.length >= preeditAreaStart) + r.length += preeditAreaLength; + } ranges << r; - r.start = r.length = -1; + r.start = -1; } if (r.start != -1) { r.length = formatChanges.count() - r.start; - if (r.start >= preeditAreaStart) - r.start += preeditAreaLength; - else if (r.start + r.length >= preeditAreaStart) - r.length += preeditAreaLength; + if (preeditAreaLength != 0) { + if (r.start >= preeditAreaStart) + r.start += preeditAreaLength; + else if (r.start + r.length >= preeditAreaStart) + r.length += preeditAreaLength; + } ranges << r; } -- cgit v0.12 From 62faec229dfe654872d3791bee0a27e5290fff4c Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Mon, 1 Mar 2010 14:43:37 +0100 Subject: minor optimization: don't mark contents as dirty if nothing was changed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge-request: 481 Reviewed-by: Thorbjørn Lindeijer --- src/gui/text/qsyntaxhighlighter.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp index d3db2a1..28af5bb 100644 --- a/src/gui/text/qsyntaxhighlighter.cpp +++ b/src/gui/text/qsyntaxhighlighter.cpp @@ -95,6 +95,8 @@ public: void QSyntaxHighlighterPrivate::applyFormatChanges() { + bool formatsChanged = false; + QTextLayout *layout = currentBlock.layout(); QList ranges = layout->additionalFormats(); @@ -110,6 +112,7 @@ void QSyntaxHighlighterPrivate::applyFormatChanges() ++it; } else { it = ranges.erase(it); + formatsChanged = true; } } } @@ -147,6 +150,7 @@ void QSyntaxHighlighterPrivate::applyFormatChanges() } ranges << r; + formatsChanged = true; r.start = -1; } @@ -161,9 +165,13 @@ void QSyntaxHighlighterPrivate::applyFormatChanges() } ranges << r; + formatsChanged = true; } - layout->setAdditionalFormats(ranges); + if (formatsChanged) { + layout->setAdditionalFormats(ranges); + doc->markContentsDirty(currentBlock.position(), currentBlock.length()); + } } void QSyntaxHighlighterPrivate::_q_reformatBlocks(int from, int charsRemoved, int charsAdded) @@ -214,8 +222,6 @@ void QSyntaxHighlighterPrivate::reformatBlock(const QTextBlock &block) q->highlightBlock(block.text()); applyFormatChanges(); - doc->markContentsDirty(block.position(), block.length()); - currentBlock = QTextBlock(); } -- cgit v0.12 From 1bc449a16051f09028cfcb78ebdffa6ee0440572 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Tue, 2 Mar 2010 10:52:47 +0100 Subject: Revert "ItemViews: make it possible for chekcable items to get partiallyChecked" This reverts commit 435bbd4be73768f617e4a4083a345d1d8d62daa3. Reviewed-By: ogoffart --- src/gui/itemviews/qitemdelegate.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/gui/itemviews/qitemdelegate.cpp b/src/gui/itemviews/qitemdelegate.cpp index 9069ce4..7d8e103 100644 --- a/src/gui/itemviews/qitemdelegate.cpp +++ b/src/gui/itemviews/qitemdelegate.cpp @@ -1297,14 +1297,8 @@ bool QItemDelegate::editorEvent(QEvent *event, return false; } - Qt::CheckState state; - if ( flags & Qt::ItemIsTristate ) { - state = static_cast( (value.toInt() + 1) % 3 ); - } else { - state = (static_cast(value.toInt()) == Qt::Checked + Qt::CheckState state = (static_cast(value.toInt()) == Qt::Checked ? Qt::Unchecked : Qt::Checked); - } - return model->setData(index, state, Qt::CheckStateRole); } -- cgit v0.12 From 5a028f794fe48dc7141acedbf0e896b488bb8cd5 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Mon, 21 Dec 2009 17:03:13 +0100 Subject: Add DNS caching to QHostInfo By default enabled, but it can be disabled via a compile flag. Reviewed-by: Thiago --- src/network/kernel/qhostinfo.cpp | 129 +++++++++++++++++++++++++++++++-- src/network/kernel/qhostinfo_p.h | 32 ++++++++ tests/auto/qhostinfo/tst_qhostinfo.cpp | 55 +++++++++++++- 3 files changed, 208 insertions(+), 8 deletions(-) diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index b23f6db..a65ca50 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -181,9 +181,26 @@ int QHostInfo::lookupHost(const QString &name, QObject *receiver, receiver, member, Qt::QueuedConnection); result.data()->emitResultsReady(hostInfo); #else - QHostInfoRunnable* runnable = new QHostInfoRunnable(name, id); - QObject::connect(&runnable->resultEmitter, SIGNAL(resultsReady(QHostInfo)), receiver, member, Qt::QueuedConnection); - theHostInfoLookupManager()->scheduleLookup(runnable); + QHostInfoLookupManager *manager = theHostInfoLookupManager(); + if (manager) { + // the application is still alive + if (manager->cache.isEnabled()) { + // check cache first + bool valid = false; + QHostInfo info = manager->cache.get(name, &valid); + if (valid) { + info.setLookupId(id); + QHostInfoResult result; + QObject::connect(&result, SIGNAL(resultsReady(QHostInfo)), receiver, member, Qt::QueuedConnection); + result.emitResultsReady(info); + return id; + } + } + // cache is not enabled or it was not in the cache, do normal lookup + QHostInfoRunnable* runnable = new QHostInfoRunnable(name, id); + QObject::connect(&runnable->resultEmitter, SIGNAL(resultsReady(QHostInfo)), receiver, member, Qt::QueuedConnection); + manager->scheduleLookup(runnable); + } #endif return id; @@ -418,14 +435,12 @@ void QHostInfoRunnable::run() return; } - // check cache - // FIXME - // if not in cache: OS lookup QHostInfo hostInfo = QHostInfoAgent::fromName(toBeLookedUp); // save to cache - // FIXME + if (manager->cache.isEnabled()) + manager->cache.put(toBeLookedUp, hostInfo); // check aborted again if (manager->wasAborted(id)) { @@ -575,6 +590,106 @@ void QHostInfoLookupManager::lookupFinished(QHostInfoRunnable *r) work(); } +// This function returns immediatly when we had a result in the cache, else it will later emit a signal +QHostInfo qt_qhostinfo_lookup(const QString &name, QObject *receiver, const char *member, bool *valid, int *id) +{ + *valid = false; + *id = -1; + + // check cache + QHostInfoLookupManager* manager = theHostInfoLookupManager(); + if (manager && manager->cache.isEnabled()) { + QHostInfo info = manager->cache.get(name, valid); + if (*valid) { + return info; + } + } + + // was not in cache, trigger lookup + *id = QHostInfo::lookupHost(name, receiver, member); + + // return empty response, valid==false + return QHostInfo(); +} + +void qt_qhostinfo_clear_cache() +{ + QHostInfoLookupManager* manager = theHostInfoLookupManager(); + if (manager) { + manager->cache.clear(); + } +} + +void Q_NETWORK_EXPORT qt_qhostinfo_enable_cache(bool e) +{ + QHostInfoLookupManager* manager = theHostInfoLookupManager(); + if (manager) { + manager->cache.setEnabled(e); + } +} + +// cache for 60 seconds +// cache 64 items +QHostInfoCache::QHostInfoCache() : max_age(60), enabled(true), cache(64) +{ +#ifdef QT_QHOSTINFO_CACHE_DISABLED_BY_DEFAULT + enabled = false; +#endif +} + +bool QHostInfoCache::isEnabled() +{ + return enabled; +} + +// this function is currently only used for the auto tests +// and not usable by public API +void QHostInfoCache::setEnabled(bool e) +{ + enabled = e; +} + + +QHostInfo QHostInfoCache::get(const QString &name, bool *valid) +{ + QMutexLocker locker(&this->mutex); + + *valid = false; + if (cache.contains(name)) { + QHostInfoCacheElement *element = cache.object(name); + if (element->age.elapsed() < max_age*1000) + *valid = true; + return element->info; + + // FIXME idea: + // if too old but not expired, trigger a new lookup + // to freshen our cache + } + + return QHostInfo(); +} + +void QHostInfoCache::put(const QString &name, const QHostInfo &info) +{ + // if the lookup failed, don't cache + if (info.error() != QHostInfo::NoError) + return; + + QHostInfoCacheElement* element = new QHostInfoCacheElement(); + element->info = info; + element->age = QTime(); + element->age.start(); + + QMutexLocker locker(&this->mutex); + cache.insert(name, element); // cache will take ownership +} + +void QHostInfoCache::clear() +{ + QMutexLocker locker(&this->mutex); + cache.clear(); +} + #endif // QT_NO_THREAD QT_END_NAMESPACE diff --git a/src/network/kernel/qhostinfo_p.h b/src/network/kernel/qhostinfo_p.h index d6aa287..2b26b07 100644 --- a/src/network/kernel/qhostinfo_p.h +++ b/src/network/kernel/qhostinfo_p.h @@ -68,6 +68,8 @@ #include "QtCore/qrunnable.h" #include "QtCore/qlist.h" #include "QtCore/qqueue.h" +#include +#include #endif QT_BEGIN_NAMESPACE @@ -111,6 +113,34 @@ public: }; #ifndef QT_NO_THREAD +// These functions are outside of the QHostInfo class and strictly internal. +// Do NOT use them outside of QAbstractSocket. +QHostInfo Q_NETWORK_EXPORT qt_qhostinfo_lookup(const QString &name, QObject *receiver, const char *member, bool *valid, int *id); +void Q_NETWORK_EXPORT qt_qhostinfo_clear_cache(); +void Q_AUTOTEST_EXPORT qt_qhostinfo_enable_cache(bool e); + +class QHostInfoCache +{ +public: + QHostInfoCache(); + const int max_age; // seconds + + QHostInfo get(const QString &name, bool *valid); + void put(const QString &name, const QHostInfo &info); + void clear(); + + bool isEnabled(); + void setEnabled(bool e); +private: + bool enabled; + struct QHostInfoCacheElement { + QHostInfo info; + QTime age; + }; + QCache cache; + QMutex mutex; +}; + // the following classes are used for the (normal) case: We use multiple threads to lookup DNS class QHostInfoRunnable : public QRunnable @@ -141,6 +171,7 @@ public: void lookupFinished(QHostInfoRunnable *r); bool wasAborted(int id); + QHostInfoCache cache; protected: QList currentLookups; // in progress QList postponedLookups; // postponed because in progress for same host @@ -154,6 +185,7 @@ protected: bool wasDeleted; }; + #endif QT_END_NAMESPACE diff --git a/tests/auto/qhostinfo/tst_qhostinfo.cpp b/tests/auto/qhostinfo/tst_qhostinfo.cpp index d5411d0..cbadcf5 100644 --- a/tests/auto/qhostinfo/tst_qhostinfo.cpp +++ b/tests/auto/qhostinfo/tst_qhostinfo.cpp @@ -72,6 +72,7 @@ #endif #include +#include "private/qhostinfo_p.h" #if !defined(QT_NO_GETADDRINFO) # if !defined(Q_OS_WINCE) @@ -108,10 +109,11 @@ public: public slots: void init(); void cleanup(); + void initTestCase(); + private slots: void getSetCheck(); void staticInformation(); - void initTestCase(); void lookupIPv4_data(); void lookupIPv4(); void lookupIPv6_data(); @@ -128,6 +130,8 @@ private slots: void multipleSameLookups(); void multipleDifferentLookups(); + void cache(); + protected slots: void resultsReady(const QHostInfo &); @@ -205,10 +209,21 @@ void tst_QHostInfo::initTestCase() // We have IPv6 support ipv6Available = true; } + + + // run each testcase with and without test enabled + QTest::addColumn("cache"); + QTest::newRow("WithCache") << false; + QTest::newRow("WithoutCache") << true; } void tst_QHostInfo::init() { + // delete the cache so inidividual testcase results are independant from each other + qt_qhostinfo_clear_cache(); + + QFETCH_GLOBAL(bool, cache); + qt_qhostinfo_enable_cache(cache); } void tst_QHostInfo::cleanup() @@ -458,6 +473,44 @@ void tst_QHostInfo::multipleDifferentLookups() QTRY_VERIFY(lookupsDoneCounter == COUNT); } +void tst_QHostInfo::cache() +{ + QFETCH_GLOBAL(bool, cache); + if (!cache) + return; // test makes only sense when cache enabled + + // reset slot counter + lookupsDoneCounter = 0; + + // lookup once, wait in event loop, result should not come directly. + bool valid = true; + QHostInfo result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid); + QTestEventLoop::instance().enterLoop(5); + QVERIFY(!QTestEventLoop::instance().timeout()); + QVERIFY(valid == false); + QVERIFY(result.addresses().isEmpty()); + + // loopkup second time, result should come directly + valid = false; + result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid); + QVERIFY(valid == true); + QVERIFY(!result.addresses().isEmpty()); + + // clear the cache + qt_qhostinfo_clear_cache(); + + // lookup third time, result should not come directly. + valid = true; + result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid); + QTestEventLoop::instance().enterLoop(5); + QVERIFY(!QTestEventLoop::instance().timeout()); + QVERIFY(valid == false); + QVERIFY(result.addresses().isEmpty()); + + // the slot should have been called 2 times. + QVERIFY(lookupsDoneCounter == 2); +} + void tst_QHostInfo::resultsReady(const QHostInfo &hi) { lookupDone = true; -- cgit v0.12 From daace2df3eb80f1b62f38151f5cc3f3b355927e7 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Tue, 2 Mar 2010 10:39:54 +0100 Subject: QAbstractSocket: Use new faster DNS function Use qt_qhostinfo_lookup which avoids the event loop when the DNS result is already cached. Reviewed-by: Thiago --- src/network/socket/qabstractsocket.cpp | 18 ++++++++++++++++-- tests/auto/qsslsocket/qsslsocket.pro | 2 ++ tests/auto/qsslsocket/tst_qsslsocket.cpp | 6 +++++- tests/auto/qtcpsocket/qtcpsocket.pro | 3 +++ tests/auto/qtcpsocket/tst_qtcpsocket.cpp | 13 +++++++++++-- 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 275c436..d990448 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -354,6 +354,8 @@ #include "qabstractsocket.h" #include "qabstractsocket_p.h" +#include "private/qhostinfo_p.h" + #include #include #include @@ -1369,8 +1371,20 @@ void QAbstractSocket::connectToHostImplementation(const QString &hostName, quint return; #endif } else { - if (d->threadData->eventDispatcher) - d->hostLookupId = QHostInfo::lookupHost(hostName, this, SLOT(_q_startConnecting(QHostInfo))); + if (d->threadData->eventDispatcher) { + // this internal API for QHostInfo either immediatly gives us the desired + // QHostInfo from cache or later calls the _q_startConnecting slot. + bool immediateResultValid = false; + QHostInfo hostInfo = qt_qhostinfo_lookup(hostName, + this, + SLOT(_q_startConnecting(QHostInfo)), + &immediateResultValid, + &d->hostLookupId); + if (immediateResultValid) { + d->hostLookupId = -1; + d->_q_startConnecting(hostInfo); + } + } } #if defined(QABSTRACTSOCKET_DEBUG) diff --git a/tests/auto/qsslsocket/qsslsocket.pro b/tests/auto/qsslsocket/qsslsocket.pro index 147175e..541b2d9 100644 --- a/tests/auto/qsslsocket/qsslsocket.pro +++ b/tests/auto/qsslsocket/qsslsocket.pro @@ -32,3 +32,5 @@ wince* { } else { DEFINES += SRCDIR=\\\"$$PWD/\\\" } + +requires(contains(QT_CONFIG,private_tests)) diff --git a/tests/auto/qsslsocket/tst_qsslsocket.cpp b/tests/auto/qsslsocket/tst_qsslsocket.cpp index abd3237..ad2b50d 100644 --- a/tests/auto/qsslsocket/tst_qsslsocket.cpp +++ b/tests/auto/qsslsocket/tst_qsslsocket.cpp @@ -54,6 +54,8 @@ #include #include +#include "private/qhostinfo_p.h" + #include "../network-settings.h" Q_DECLARE_METATYPE(QAbstractSocket::SocketState) @@ -288,6 +290,8 @@ void tst_QSslSocket::init() } QNetworkProxy::setApplicationProxy(proxy); } + + qt_qhostinfo_clear_cache(); } void tst_QSslSocket::cleanup() @@ -477,7 +481,7 @@ void tst_QSslSocket::simpleConnectWithIgnore() // Start connecting socket.connectToHost(QtNetworkSettings::serverName(), 993); - QCOMPARE(socket.state(), QAbstractSocket::HostLookupState); + QVERIFY(socket.state() != QAbstractSocket::UnconnectedState); // something must be in progress enterLoop(10); // Start handshake diff --git a/tests/auto/qtcpsocket/qtcpsocket.pro b/tests/auto/qtcpsocket/qtcpsocket.pro index 4bbec23..3d4eba3 100644 --- a/tests/auto/qtcpsocket/qtcpsocket.pro +++ b/tests/auto/qtcpsocket/qtcpsocket.pro @@ -3,3 +3,6 @@ TEMPLATE = subdirs !wince*: SUBDIRS = test stressTest wince*|symbian*|vxworks* : SUBDIRS = test + + +requires(contains(QT_CONFIG,private_tests)) diff --git a/tests/auto/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/qtcpsocket/tst_qtcpsocket.cpp index e638e287..ef7ff83 100644 --- a/tests/auto/qtcpsocket/tst_qtcpsocket.cpp +++ b/tests/auto/qtcpsocket/tst_qtcpsocket.cpp @@ -92,6 +92,8 @@ #include #endif +#include "private/qhostinfo_p.h" + #include "../network-settings.h" Q_DECLARE_METATYPE(QAbstractSocket::SocketError) @@ -315,6 +317,8 @@ void tst_QTcpSocket::init() } QNetworkProxy::setApplicationProxy(proxy); } + + qt_qhostinfo_clear_cache(); } QTcpSocket *tst_QTcpSocket::newSocket() const @@ -1059,7 +1063,9 @@ void tst_QTcpSocket::disconnectWhileLookingUp() // just connect and disconnect, then make sure nothing weird happened QTcpSocket *socket = newSocket(); socket->connectToHost(QtNetworkSettings::serverName(), 21); - QVERIFY(socket->state() == QAbstractSocket::HostLookupState); + + // check that connect is in progress + QVERIFY(socket->state() != QAbstractSocket::UnconnectedState); QFETCH(bool, doClose); if (doClose) { @@ -1665,7 +1671,10 @@ void tst_QTcpSocket::waitForConnectedInHostLookupSlot() connect(tmpSocket, SIGNAL(hostFound()), this, SLOT(hostLookupSlot())); tmpSocket->connectToHost(QtNetworkSettings::serverName(), 143); - loop.exec(); + // only execute the loop if not already connected + if (tmpSocket->state() != QAbstractSocket::ConnectedState) + loop.exec(); + QCOMPARE(timerSpy.count(), 0); delete tmpSocket; -- cgit v0.12 From 0998fc069512d0ae2853929489b80f35e0d9d4ae Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 2 Mar 2010 11:23:45 +0100 Subject: QDeclarativeView: Make usable in Designer Make source a designable property, add missing declarations for enumerations. Reviewed-by: akennedy --- src/declarative/util/qdeclarativeview.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/declarative/util/qdeclarativeview.h b/src/declarative/util/qdeclarativeview.h index 03d8db3..107f3f9 100644 --- a/src/declarative/util/qdeclarativeview.h +++ b/src/declarative/util/qdeclarativeview.h @@ -43,6 +43,7 @@ #define QDECLARATIVEVIEW_H #include +#include #include #include #include @@ -64,7 +65,8 @@ class Q_DECLARATIVE_EXPORT QDeclarativeView : public QGraphicsView Q_OBJECT Q_PROPERTY(ResizeMode resizeMode READ resizeMode WRITE setResizeMode) Q_PROPERTY(Status status READ status NOTIFY statusChanged) - + Q_PROPERTY(QUrl source READ source WRITE setSource DESIGNABLE true) + Q_ENUMS(ResizeMode Status) public: explicit QDeclarativeView(QWidget *parent = 0); QDeclarativeView(const QUrl &source, QWidget *parent = 0); -- cgit v0.12 From 13f23b71cee682ccaaec455d72b1578afc2800ee Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 2 Mar 2010 11:25:16 +0100 Subject: QDeclarativeView: Add a Designer plugin. Reviewed-by: Jarek Kobus Acked-by: akennedy --- tools/designer/src/plugins/plugins.pro | 1 + .../plugins/qdeclarativeview/qdeclarativeview.pro | 13 ++ .../qdeclarativeview/qdeclarativeview_plugin.cpp | 132 +++++++++++++++++++++ .../qdeclarativeview/qdeclarativeview_plugin.h | 74 ++++++++++++ 4 files changed, 220 insertions(+) create mode 100644 tools/designer/src/plugins/qdeclarativeview/qdeclarativeview.pro create mode 100644 tools/designer/src/plugins/qdeclarativeview/qdeclarativeview_plugin.cpp create mode 100644 tools/designer/src/plugins/qdeclarativeview/qdeclarativeview_plugin.h diff --git a/tools/designer/src/plugins/plugins.pro b/tools/designer/src/plugins/plugins.pro index baf5261..cf4fa8a 100644 --- a/tools/designer/src/plugins/plugins.pro +++ b/tools/designer/src/plugins/plugins.pro @@ -7,3 +7,4 @@ win32:!contains(QT_EDITION, OpenSource):SUBDIRS += activeqt # contains(QT_CONFIG, opengl): SUBDIRS += tools/view3d contains(QT_CONFIG, webkit): SUBDIRS += qwebview contains(QT_CONFIG, phonon): SUBDIRS += phononwidgets +contains(QT_CONFIG, declarative): SUBDIRS += qdeclarativeview diff --git a/tools/designer/src/plugins/qdeclarativeview/qdeclarativeview.pro b/tools/designer/src/plugins/qdeclarativeview/qdeclarativeview.pro new file mode 100644 index 0000000..b8abe87 --- /dev/null +++ b/tools/designer/src/plugins/qdeclarativeview/qdeclarativeview.pro @@ -0,0 +1,13 @@ +TEMPLATE = lib +TARGET = qdeclarativeview +CONFIG += qt warn_on plugin designer +QT += declarative + +include(../plugins.pri) +build_all:!build_pass { + CONFIG -= build_all + CONFIG += release +} + +SOURCES += qdeclarativeview_plugin.cpp +HEADERS += qdeclarativeview_plugin.h diff --git a/tools/designer/src/plugins/qdeclarativeview/qdeclarativeview_plugin.cpp b/tools/designer/src/plugins/qdeclarativeview/qdeclarativeview_plugin.cpp new file mode 100644 index 0000000..b352a9b --- /dev/null +++ b/tools/designer/src/plugins/qdeclarativeview/qdeclarativeview_plugin.cpp @@ -0,0 +1,132 @@ +/**************************************************************************** +** +** 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 Qt Designer 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 "qdeclarativeview_plugin.h" + +#include +#include + +#include +#include + +static const char toolTipC[] = "QtDeclarative view widget"; + +QT_BEGIN_NAMESPACE + +QDeclarativeViewPlugin::QDeclarativeViewPlugin(QObject *parent) : + QObject(parent), + m_initialized(false) +{ +} + +QString QDeclarativeViewPlugin::name() const +{ + return QLatin1String("QDeclarativeView"); +} + +QString QDeclarativeViewPlugin::group() const +{ + return QLatin1String("Display Widgets"); +} + +QString QDeclarativeViewPlugin::toolTip() const +{ + return QString(QLatin1String(toolTipC)); +} + +QString QDeclarativeViewPlugin::whatsThis() const +{ + return QString(QLatin1String(toolTipC)); +} + +QString QDeclarativeViewPlugin::includeFile() const +{ + return QLatin1String("QtDeclarative/QDeclarativeView"); +} + +QIcon QDeclarativeViewPlugin::icon() const +{ + return QIcon(); +} + +bool QDeclarativeViewPlugin::isContainer() const +{ + return false; +} + +QWidget *QDeclarativeViewPlugin::createWidget(QWidget *parent) +{ + return new QDeclarativeView(parent); +} + +bool QDeclarativeViewPlugin::isInitialized() const +{ + return m_initialized; +} + +void QDeclarativeViewPlugin::initialize(QDesignerFormEditorInterface * /*core*/) +{ + if (m_initialized) + return; + + m_initialized = true; +} + +QString QDeclarativeViewPlugin::domXml() const +{ + return QLatin1String("\ + \ + \ + \ + \ + 0\ + 0\ + 300\ + 200\ + \ + \ + \ + "); +} + +Q_EXPORT_PLUGIN2(customwidgetplugin, QDeclarativeViewPlugin) + +QT_END_NAMESPACE diff --git a/tools/designer/src/plugins/qdeclarativeview/qdeclarativeview_plugin.h b/tools/designer/src/plugins/qdeclarativeview/qdeclarativeview_plugin.h new file mode 100644 index 0000000..2f13f16 --- /dev/null +++ b/tools/designer/src/plugins/qdeclarativeview/qdeclarativeview_plugin.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** 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 Qt Designer 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 QDECLARATIVEVIEW_PLUGIN_H +#define QDECLARATIVEVIEW_PLUGIN_H + +#include + +QT_BEGIN_NAMESPACE + +class QDeclarativeViewPlugin: public QObject, public QDesignerCustomWidgetInterface +{ + Q_OBJECT + Q_INTERFACES(QDesignerCustomWidgetInterface) +public: + QDeclarativeViewPlugin(QObject *parent = 0); + + virtual QString name() const; + virtual QString group() const; + virtual QString toolTip() const; + virtual QString whatsThis() const; + virtual QString includeFile() const; + virtual QIcon icon() const; + virtual bool isContainer() const; + virtual QWidget *createWidget(QWidget *parent); + virtual bool isInitialized() const; + virtual void initialize(QDesignerFormEditorInterface *core); + virtual QString domXml() const; + +private: + bool m_initialized; +}; + +QT_END_NAMESPACE + +#endif // QDECLARATIVEVIEW_PLUGIN_H -- cgit v0.12 From b6e312df6cc087dbf45becb91bd43b35913e3684 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Tue, 2 Mar 2010 11:26:51 +0100 Subject: 2nd part of revert of commit 435bbd4be73768f617e4a After a mess-up by git rebase... Reviewed-by: ogoffart --- src/gui/itemviews/qstyleditemdelegate.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/gui/itemviews/qstyleditemdelegate.cpp b/src/gui/itemviews/qstyleditemdelegate.cpp index 9aac554..880f8ab 100644 --- a/src/gui/itemviews/qstyleditemdelegate.cpp +++ b/src/gui/itemviews/qstyleditemdelegate.cpp @@ -747,13 +747,8 @@ bool QStyledItemDelegate::editorEvent(QEvent *event, return false; } - Qt::CheckState state; - if ( flags & Qt::ItemIsTristate ) { - state = static_cast( (value.toInt() + 1) % 3 ); - } else { - state = (static_cast(value.toInt()) == Qt::Checked + Qt::CheckState state = (static_cast(value.toInt()) == Qt::Checked ? Qt::Unchecked : Qt::Checked); - } return model->setData(index, state, Qt::CheckStateRole); } -- cgit v0.12 From 7366200d7600271c86144e70ae59ce77f39b2a16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Mon, 15 Feb 2010 14:06:32 +0100 Subject: Implement alien widgets on Mac/Cocoa. This commit makes alien widgets opt in on a per-widget basis on Mac, set the Qt::WA_NativeWindow flag when creating the widget to enable. Setting this flag on widgets that have native child or sibling NSViews is not supported. The main use case for alien widgets on Mac is to improve performance for applications that have complex user interfaces. Qt can handle thousands of widgets per window, while Cocoa is designed to use a smaller number of NSViews in combination with NSCells and custom control implementations. This commit moves us in the direction of having a few main NSViews with "leaf" qwidgets implemented as a custom control. --- src/gui/kernel/qapplication.cpp | 8 ++---- src/gui/kernel/qapplication_mac.mm | 3 +- src/gui/kernel/qapplication_p.h | 2 +- src/gui/kernel/qcocoaview_mac.mm | 25 +++++++++++++++++ src/gui/kernel/qt_cocoa_helpers_mac.mm | 39 +++++++++++++++++++++++--- src/gui/kernel/qwidget.cpp | 43 +++++++++++++++++++++++++---- src/gui/kernel/qwidget_mac.mm | 50 ++++++++++++++++++++++++++-------- src/gui/kernel/qwidget_p.h | 1 + src/gui/widgets/qmainwindow.cpp | 3 +- 9 files changed, 145 insertions(+), 29 deletions(-) diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 4ec2ae2..203f637 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -498,9 +498,7 @@ inline bool QApplicationPrivate::isAlien(QWidget *widget) { if (!widget) return false; -#if defined(Q_WS_MAC) // Fake alien behavior on the Mac :) - return !widget->isWindow() && widget->window()->testAttribute(Qt::WA_DontShowOnScreen); -#elif defined(Q_WS_QWS) +#if defined(Q_WS_QWS) return !widget->isWindow() # ifdef Q_BACKINGSTORE_SUBSURFACES && !(widget->d_func()->maybeTopData() && widget->d_func()->maybeTopData()->windowSurface) @@ -3013,7 +3011,7 @@ bool QApplicationPrivate::sendMouseEvent(QWidget *receiver, QMouseEvent *event, return result; } -#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined(Q_WS_QWS) +#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_WS_MAC) /* This function should only be called when the widget changes visibility, i.e. when the \a widget is shown, hidden or deleted. This function does nothing @@ -3073,7 +3071,7 @@ void QApplicationPrivate::sendSyntheticEnterLeave(QWidget *widget) sendMouseEvent(widgetUnderCursor, &e, widgetUnderCursor, tlw, &qt_button_down, qt_last_mouse_receiver); #endif // QT_NO_CURSOR } -#endif // Q_WS_WIN || Q_WS_X11 +#endif // Q_WS_WIN || Q_WS_X11 || Q_WS_MAC /*! Returns the desktop widget (also called the root window). diff --git a/src/gui/kernel/qapplication_mac.mm b/src/gui/kernel/qapplication_mac.mm index babfc72..c7d0e48 100644 --- a/src/gui/kernel/qapplication_mac.mm +++ b/src/gui/kernel/qapplication_mac.mm @@ -184,7 +184,8 @@ bool qt_mac_app_fullscreen = false; bool qt_scrollbar_jump_to_pos = false; static bool qt_mac_collapse_on_dblclick = true; extern int qt_antialiasing_threshold; // from qapplication.cpp -QPointer qt_button_down; // widget got last button-down +QWidget * qt_button_down; // widget got last button-down +QPointer qt_last_mouse_receiver; #ifndef QT_MAC_USE_COCOA static bool qt_button_down_in_content; // whether the button_down was in the content area. static bool qt_mac_previous_press_in_popup_mode = false; diff --git a/src/gui/kernel/qapplication_p.h b/src/gui/kernel/qapplication_p.h index e0a6103..8653dec 100644 --- a/src/gui/kernel/qapplication_p.h +++ b/src/gui/kernel/qapplication_p.h @@ -514,7 +514,7 @@ public: int symbianResourceChange(const QSymbianEvent *symbianEvent); #endif -#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) +#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC) void sendSyntheticEnterLeave(QWidget *widget); #endif diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm index 6a16403..a1dcc2a 100644 --- a/src/gui/kernel/qcocoaview_mac.mm +++ b/src/gui/kernel/qcocoaview_mac.mm @@ -185,6 +185,9 @@ extern "C" { extern NSString *NSTextInputReplacementRangeAttributeName; } +#ifdef ALIEN_DEBUG +static int qCocoaViewCount = 0; +#endif @implementation QT_MANGLE_NAMESPACE(QCocoaView) @@ -195,6 +198,12 @@ extern "C" { [self finishInitWithQWidget:widget widgetPrivate:widgetprivate]; } composingText = new QString(); + +#ifdef ALIEN_DEBUG + ++qCocoaViewCount; + qDebug() << "init: qCocoaViewCount is" << qCocoaViewCount; +#endif + composing = false; sendKeyEvents = true; [self setHidden:YES]; @@ -414,6 +423,12 @@ extern "C" { { delete composingText; [[NSNotificationCenter defaultCenter] removeObserver:self]; + +#ifdef ALIEN_DEBUG + --qCocoaViewCount; + qDebug() << "qCocoaViewCount is" << qCocoaViewCount; +#endif + [super dealloc]; } @@ -523,6 +538,10 @@ extern "C" { CGContextClearRect(cg, NSRectToCGRect(aRect)); } + // Check for alien widgets, use qwidgetPrivate->drawWidget() to draw the widget if this + // is the case. This makes sure child widgets are drawn as well, Cocoa does not know about + // those and wont send them drawRect calls. + if (qwidget->testAttribute(Qt::WA_NativeWindow) && qt_widget_private(qwidget)->hasAlienChildren == false) { if (engine && !qwidget->testAttribute(Qt::WA_NoSystemBackground) && (qwidget->isWindow() || qwidget->autoFillBackground()) || qwidget->testAttribute(Qt::WA_TintedBackground) @@ -542,6 +561,12 @@ extern "C" { e.setErased(true); #endif qt_sendSpontaneousEvent(qwidget, &e); + } else { + qwidget->setAttribute(Qt::WA_WState_InPaintEvent, false); // QWidgetPrivate::drawWidget sets this + QWidgetPrivate *qwidgetPrivate = qt_widget_private(qwidget); + qwidgetPrivate->drawWidget(qwidget, qrgn, QPoint(), QWidgetPrivate::DrawAsRoot | QWidgetPrivate::DrawPaintOnScreen | QWidgetPrivate::DrawRecursive, 0); + } + if (!redirectionOffset.isNull()) QPainter::restoreRedirected(qwidget); if (engine) diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm index 9560952..19bae5a 100644 --- a/src/gui/kernel/qt_cocoa_helpers_mac.mm +++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm @@ -139,7 +139,7 @@ void QMacWindowFader::performFade() extern bool qt_sendSpontaneousEvent(QObject *receiver, QEvent *event); // qapplication.cpp; extern QWidget * mac_mouse_grabber; -extern QPointer qt_button_down; //qapplication_mac.cpp +extern QWidget *qt_button_down; //qapplication_mac.cpp void macWindowFade(void * /*OSWindowRef*/ window, float durationSeconds) { @@ -686,6 +686,12 @@ bool qt_dispatchKeyEvent(void * /*NSEvent * */ keyEvent, QWidget *widgetToGetEve if ([event type] == NSKeyDown) { qt_keymapper_private()->updateKeyMap(0, key_event, 0); } + + // Redirect keys to alien widgets. + if (widgetToGetEvent->testAttribute(Qt::WA_NativeWindow) == false) { + widgetToGetEvent = qApp->focusWidget(); + } + if (widgetToGetEvent == 0) return false; @@ -940,7 +946,7 @@ bool qt_mac_handleMouseEvent(void * /* NSView * */view, void * /* NSEvent * */ev [static_cast(tmpView) qt_qwidget]; } } else { - extern QPointer qt_button_down; //qapplication_mac.cpp + extern QWidget * qt_button_down; //qapplication_mac.cpp QPoint pos; widgetToGetMouse = QApplicationPrivate::pickMouseReceiver(qwidget, qglobalPoint, pos, eventType, @@ -952,7 +958,20 @@ bool qt_mac_handleMouseEvent(void * /* NSView * */view, void * /* NSEvent * */ev return false; NSPoint localPoint = [tmpView convertPoint:windowPoint fromView:nil]; - QPoint qlocalPoint(localPoint.x, localPoint.y); + QPoint qlocalPoint = QPoint(localPoint.x, localPoint.y); + + // Search for alien child widgets (either on this qwidget or on the popup) + if (widgetToGetMouse->testAttribute(Qt::WA_NativeWindow) == false || qt_widget_private(widgetToGetMouse)->hasAlienChildren) { + QPoint qScreenPoint = flipPoint(globalPoint).toPoint(); +#ifdef ALIEN_DEBUG + qDebug() << "alien mouse event" << qScreenPoint << possibleAlien; +#endif + QWidget *possibleAlien = widgetToGetMouse->childAt(qlocalPoint); + if (possibleAlien) { + qlocalPoint = possibleAlien->mapFromGlobal(widgetToGetMouse->mapToGlobal(qlocalPoint)); + widgetToGetMouse = possibleAlien; + } + } EventRef carbonEvent = static_cast(const_cast([theEvent eventRef])); if (qt_mac_sendMacEventToWidget(widgetToGetMouse, carbonEvent)) @@ -997,7 +1016,19 @@ bool qt_mac_handleMouseEvent(void * /* NSView * */view, void * /* NSEvent * */ev } [QT_MANGLE_NAMESPACE(QCocoaView) currentMouseEvent]->localPoint = localPoint; QMouseEvent qme(eventType, qlocalPoint, qglobalPoint, button, buttons, keyMods); - qt_sendSpontaneousEvent(widgetToGetMouse, &qme); + +#ifdef ALIEN_DEBUG + qDebug() << "sending mouse event to" << widgetToGetMouse; +#endif + extern QWidget *qt_button_down; + extern QPointer qt_last_mouse_receiver; + + if (qwidget->testAttribute(Qt::WA_NativeWindow) && qt_widget_private(qwidget)->hasAlienChildren == false) + qt_sendSpontaneousEvent(widgetToGetMouse, &qme); + else + QApplicationPrivate::sendMouseEvent(widgetToGetMouse, &qme, widgetToGetMouse, qwidget, &qt_button_down, + qt_last_mouse_receiver); + if (eventType == QEvent::MouseButtonPress && button == Qt::RightButton) { QContextMenuEvent qcme(QContextMenuEvent::Mouse, qlocalPoint, qglobalPoint, keyMods); qt_sendSpontaneousEvent(widgetToGetMouse, &qcme); diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 2f6ec6b..b19d541 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -205,6 +205,7 @@ QWidgetPrivate::QWidgetPrivate(int version) , nativeGesturePanEnabled(0) #elif defined(Q_WS_MAC) , needWindowChange(0) + , hasAlienChildren(0) , window_event(0) , qd_hd(0) #endif @@ -1168,6 +1169,10 @@ void QWidgetPrivate::init(QWidget *parentWidget, Qt::WindowFlags f) if (f & Qt::MSWindowsOwnDC) q->setAttribute(Qt::WA_NativeWindow); +#ifdef Q_WS_MAC + q->setAttribute(Qt::WA_NativeWindow); +#endif + q->setAttribute(Qt::WA_QuitOnClose); // might be cleared in adjustQuitOnCloseAttribute() adjustQuitOnCloseAttribute(); @@ -1263,6 +1268,10 @@ void QWidget::create(WId window, bool initializeWindow, bool destroyOldWindow) } if (QWidget *parent = parentWidget()) { +#ifdef Q_WS_MAC + if (testAttribute(Qt::WA_NativeWindow) == false) + parent->d_func()->hasAlienChildren = true; +#endif if (type & Qt::Window) { if (!parent->testAttribute(Qt::WA_WState_Created)) parent->createWinId(); @@ -1433,7 +1442,7 @@ QWidget::~QWidget() } } -#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) +#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC) else if (!internalWinId() && isVisible()) { qApp->d_func()->sendSyntheticEnterLeave(this); #ifdef Q_WS_QWS @@ -2306,6 +2315,9 @@ QWidget *QWidget::find(WId id) WId QWidget::winId() const { if (!testAttribute(Qt::WA_WState_Created) || !internalWinId()) { +#ifdef ALIEN_DEBUG + qDebug() << "QWidget::winId: creating native window for" << this; +#endif QWidget *that = const_cast(this); that->setAttribute(Qt::WA_NativeWindow); that->d_func()->createWinId(); @@ -2318,6 +2330,10 @@ WId QWidget::winId() const void QWidgetPrivate::createWinId(WId winid) { Q_Q(QWidget); + +#ifdef ALIEN_DEBUG + qDebug() << "QWidgetPrivate::createWinId for" << q << winid; +#endif const bool forceNativeWindow = q->testAttribute(Qt::WA_NativeWindow); if (!q->testAttribute(Qt::WA_WState_Created) || (forceNativeWindow && !q->internalWinId())) { if (!q->isWindow()) { @@ -2360,6 +2376,9 @@ Ensures that the widget has a window system identifier, i.e. that it is known to void QWidget::createWinId() { Q_D(QWidget); +#ifdef ALIEN_DEBUG + qDebug() << "QWidget::createWinId" << this; +#endif // qWarning("QWidget::createWinId is obsolete, please fix your code."); d->createWinId(); } @@ -5249,7 +5268,15 @@ void QWidgetPrivate::drawWidget(QPaintDevice *pdev, const QRegion &rgn, const QP QPaintEngine *paintEngine = pdev->paintEngine(); if (paintEngine) { setRedirected(pdev, -offset); +#ifdef Q_WS_MAC + // (Alien support) Special case for Mac when redirecting: If the paint device + // is of the Widget type we need to set WA_WState_InPaintEvent since painting + // outside the paint event is not supported on QWidgets. The attributeis + // restored further down. + if (pdev->devType() == QInternal::Widget) + static_cast(pdev)->setAttribute(Qt::WA_WState_InPaintEvent); +#endif if (sharedPainter) paintEngine->d_func()->systemClip = toBePainted; else @@ -5290,6 +5317,10 @@ void QWidgetPrivate::drawWidget(QPaintDevice *pdev, const QRegion &rgn, const QP //restore if (paintEngine) { +#ifdef Q_WS_MAC + if (pdev->devType() == QInternal::Widget) + static_cast(pdev)->setAttribute(Qt::WA_WState_InPaintEvent, false); +#endif restoreRedirected(); if (!sharedPainter) paintEngine->d_func()->systemRect = QRect(); @@ -7322,7 +7353,7 @@ void QWidgetPrivate::hide_helper() // next bit tries to move the focus if the focus widget is now // hidden. if (wasVisible) { -#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) +#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC) qApp->d_func()->sendSyntheticEnterLeave(q); #endif @@ -7454,7 +7485,7 @@ void QWidget::setVisible(bool visible) d->show_helper(); -#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) +#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC) qApp->d_func()->sendSyntheticEnterLeave(this); #endif } @@ -7569,7 +7600,7 @@ void QWidgetPrivate::hideChildren(bool spontaneous) widget->d_func()->hide_sys(); } } -#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) +#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined (Q_WS_QWS) || defined(Q_WS_MAC) qApp->d_func()->sendSyntheticEnterLeave(widget); #endif #ifndef QT_NO_ACCESSIBILITY @@ -9787,7 +9818,7 @@ void QWidget::setParent(QWidget *parent, Qt::WindowFlags f) desktopWidget = parent; bool newParent = (parent != parentWidget()) || !wasCreated || desktopWidget; -#if defined(Q_WS_X11) || defined(Q_WS_WIN) +#if defined(Q_WS_X11) || defined(Q_WS_WIN) || defined(Q_WS_MAC) if (newParent && parent && !desktopWidget) { if (testAttribute(Qt::WA_NativeWindow) && !qApp->testAttribute(Qt::AA_DontCreateNativeWidgetSiblings)) parent->d_func()->enforceNativeChildren(); @@ -10433,7 +10464,7 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on) } case Qt::WA_PaintOnScreen: d->updateIsOpaque(); -#if defined(Q_WS_WIN) || defined(Q_WS_X11) +#if defined(Q_WS_WIN) || defined(Q_WS_X11) || defined(Q_WS_MAC) // Recreate the widget if it's already created as an alien widget and // WA_PaintOnScreen is enabled. Paint on screen widgets must have win id. // So must their children. diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index dcb87fc..6d8c97b 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -459,7 +459,13 @@ static bool qt_isGenuineQWidget(OSViewRef ref) bool qt_isGenuineQWidget(const QWidget *window) { - return window && qt_isGenuineQWidget(OSViewRef(window->winId())); + if (!window) + return false; + + if (!window->internalWinId()) + return true; //alien + + return qt_isGenuineQWidget(OSViewRef(window->internalWinId())); } Q_GUI_EXPORT OSWindowRef qt_mac_window_for(const QWidget *w) @@ -2608,7 +2614,16 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO } } else { data.fstrut_dirty = false; // non-toplevel widgets don't have a frame, so no need to update the strut - if(OSViewRef osview = qt_mac_create_widget(q, this, qt_mac_nativeview_for(parentWidget))) { + +#ifdef QT_MAC_USE_COCOA + if (q->testAttribute(Qt::WA_NativeWindow) == false || + q->internalWinId() != 0) { +#ifdef ALIEN_DEBUG + qDebug() << "Skipping native widget creation for" << this; +#endif + } else +#endif + if (OSViewRef osview = qt_mac_create_widget(q, this, qt_mac_nativeview_for(parentWidget))) { #ifndef QT_MAC_USE_COCOA HIRect bounds = CGRectMake(data.crect.x(), data.crect.y(), data.crect.width(), data.crect.height()); HIViewSetFrame(osview, &bounds); @@ -2869,9 +2884,12 @@ void QWidgetPrivate::setParent_sys(QWidget *parent, Qt::WindowFlags f) q->setAttribute(Qt::WA_WState_Visible, false); q->setAttribute(Qt::WA_WState_Hidden, false); adjustFlags(data.window_flags, q); - // keep compatibility with previous versions, we need to preserve the created state - // (but we recreate the winId for the widget being reparented, again for compatibility) - if (wasCreated || (!q->isWindow() && parent->testAttribute(Qt::WA_WState_Created))) { + // keep compatibility with previous versions, we need to preserve the created state. + // (but we recreate the winId for the widget being reparented, again for compatibility, + // unless this is an alien widget. ) + const bool nonWindowWithCreatedParent = !q->isWindow() && parent->testAttribute(Qt::WA_WState_Created); + const bool nativeWidget = q->internalWinId() != 0; + if (wasCreated || nativeWidget && nonWindowWithCreatedParent) { createWinId(); if (q->isWindow()) { #ifndef QT_MAC_USE_COCOA @@ -2955,7 +2973,7 @@ void QWidgetPrivate::setParent_sys(QWidget *parent, Qt::WindowFlags f) QPoint QWidget::mapToGlobal(const QPoint &pos) const { Q_D(const QWidget); - if (!testAttribute(Qt::WA_WState_Created)) { + if (!testAttribute(Qt::WA_WState_Created) || !internalWinId()) { QPoint p = pos + data->crect.topLeft(); return isWindow() ? p : parentWidget()->mapToGlobal(p); } @@ -2982,7 +3000,7 @@ QPoint QWidget::mapToGlobal(const QPoint &pos) const QPoint QWidget::mapFromGlobal(const QPoint &pos) const { Q_D(const QWidget); - if (!testAttribute(Qt::WA_WState_Created)) { + if (!testAttribute(Qt::WA_WState_Created) || !internalWinId()) { QPoint p = isWindow() ? pos : parentWidget()->mapFromGlobal(pos); return p - data->crect.topLeft(); } @@ -3320,10 +3338,20 @@ void QWidgetPrivate::update_sys(const QRegion &rgn) } #else // Cocoa doesn't do regions, it seems more efficient to just update the bounding rect instead of a potential number of message passes for each rect. - const QRect &boundingRect = rgn.boundingRect(); - [qt_mac_nativeview_for(q) setNeedsDisplayInRect:NSMakeRect(boundingRect.x(), - boundingRect.y(), boundingRect.width(), - boundingRect.height())]; + const QRect & boundingRect = rgn.boundingRect(); + + // Alien support: get the first native ancestor widget (will be q itself in the non-alien case), + // map the coordinates from q space to NSView space and invalidate the rect. + QWidget *nativeParent = q->internalWinId() ? q : q->nativeParentWidget(); + if (nativeParent == 0) + return; + const QRect nativeBoundingRect = QRect( + QPoint(q->mapTo(nativeParent, boundingRect.topLeft())), + QSize(boundingRect.size())); + + [qt_mac_nativeview_for(nativeParent) setNeedsDisplayInRect:NSMakeRect(nativeBoundingRect.x(), + nativeBoundingRect.y(), nativeBoundingRect.width(), + nativeBoundingRect.height())]; #endif } diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h index efd9a0a..2cb8586 100644 --- a/src/gui/kernel/qwidget_p.h +++ b/src/gui/kernel/qwidget_p.h @@ -720,6 +720,7 @@ public: #elif defined(Q_WS_MAC) // <--------------------------------------------------------- MAC // This is new stuff uint needWindowChange : 1; + uint hasAlienChildren : 1; // Each wiget keeps a list of all its child and grandchild OpenGL widgets. // This list is used to update the gl context whenever a parent and a granparent diff --git a/src/gui/widgets/qmainwindow.cpp b/src/gui/widgets/qmainwindow.cpp index 4620597..bdab6fb 100644 --- a/src/gui/widgets/qmainwindow.cpp +++ b/src/gui/widgets/qmainwindow.cpp @@ -1478,7 +1478,8 @@ void QMainWindow::setUnifiedTitleAndToolBarOnMac(bool set) return; // ### Disable the unified toolbar when using anything but the native graphics system. - if (windowSurface()) + // ### Disable when using alien widgets as well + if (windowSurface() || testAttribute(Qt::WA_NativeWindow) == false) return; d->useHIToolBar = set; -- cgit v0.12 From 2c0dec10520ce1ae25eaef2d1c67969528ac278d Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 2 Mar 2010 12:00:09 +0100 Subject: QtDeclarative: Fix compiler warnings class/struct mixups, unused variables. Reviewed-by: Thomas Hartmann --- src/declarative/graphicsitems/qdeclarativeflickable.cpp | 1 - src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp | 1 - src/declarative/qml/qdeclarativelist.h | 2 +- src/declarative/util/qdeclarativetimeline_p_p.h | 2 +- 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index c54ddd0..1998ccf 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -154,7 +154,6 @@ void QDeclarativeFlickablePrivate::init() */ qreal QDeclarativeFlickablePrivate::overShootDistance(qreal velocity, qreal size) { - Q_Q(QDeclarativeFlickable); if (maxVelocity <= 0) return 0.0; diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp index cd72ef9..693fd20 100644 --- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp +++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp @@ -1268,7 +1268,6 @@ void QDeclarativeVisualDataModel::_q_dataChanged(const QModelIndex &begin, const void QDeclarativeVisualDataModel::_q_modelReset() { - Q_D(QDeclarativeVisualDataModel); emit modelReset(); } diff --git a/src/declarative/qml/qdeclarativelist.h b/src/declarative/qml/qdeclarativelist.h index 8d59384..eac4967 100644 --- a/src/declarative/qml/qdeclarativelist.h +++ b/src/declarative/qml/qdeclarativelist.h @@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE QT_MODULE(Declarative) class QObject; -class QMetaObject; +struct QMetaObject; template struct QDeclarativeListProperty { typedef void (*AppendFunction)(QDeclarativeListProperty *, T*); diff --git a/src/declarative/util/qdeclarativetimeline_p_p.h b/src/declarative/util/qdeclarativetimeline_p_p.h index c08c07c..598c897 100644 --- a/src/declarative/util/qdeclarativetimeline_p_p.h +++ b/src/declarative/util/qdeclarativetimeline_p_p.h @@ -160,7 +160,7 @@ public: QDeclarativeTimeLineObject *callbackObject() const; private: - friend class QDeclarativeTimeLinePrivate; + friend struct QDeclarativeTimeLinePrivate; Callback d0; void *d1; QDeclarativeTimeLineObject *d2; -- cgit v0.12 From 671a6a0dc82857dd84feddf49d38540dd59186df Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Tue, 2 Mar 2010 12:16:31 +0100 Subject: OS X 10.4 compile error; required casting int to GLint. --- src/multimedia/base/qpaintervideosurface.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/multimedia/base/qpaintervideosurface.cpp b/src/multimedia/base/qpaintervideosurface.cpp index 97fddc9..fc3d493 100644 --- a/src/multimedia/base/qpaintervideosurface.cpp +++ b/src/multimedia/base/qpaintervideosurface.cpp @@ -1158,14 +1158,14 @@ QAbstractVideoSurface::Error QVideoSurfaceGlslPainter::paint( glBindTexture(GL_TEXTURE_2D, m_textureIds[2]); glActiveTexture(GL_TEXTURE0); - m_program.setUniformValue("texY", 0); - m_program.setUniformValue("texU", 1); - m_program.setUniformValue("texV", 2); + m_program.setUniformValue("texY", GLint(0)); + m_program.setUniformValue("texU", GLint(1)); + m_program.setUniformValue("texV", GLint(2)); } else { glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, m_textureIds[0]); - m_program.setUniformValue("texRgb", 0); + m_program.setUniformValue("texRgb", GLint(0)); } m_program.setUniformValue("colorMatrix", m_colorMatrix); -- cgit v0.12 From 2d99a28a583b099cc0281b39b88b0bda8f5e5f7f Mon Sep 17 00:00:00 2001 From: mae Date: Tue, 2 Mar 2010 11:36:05 +0100 Subject: Moved qdeclarativemodules to imports --- src/declarative/declarative.pro | 28 +- src/declarative/imports/imports.pro | 7 + src/declarative/imports/multimedia/multimedia.cpp | 63 + src/declarative/imports/multimedia/multimedia.pro | 15 + src/declarative/imports/qimportbase.pri | 16 + src/declarative/imports/webkit/plugin.cpp | 66 + .../imports/webkit/qdeclarativewebview.cpp | 1340 ++++++++++++++++++++ .../imports/webkit/qdeclarativewebview_p.h | 285 +++++ .../imports/webkit/qdeclarativewebview_p_p.h | 151 +++ src/declarative/imports/webkit/webkit.pro | 18 + .../imports/widgets/graphicslayouts.cpp | 260 ++++ .../imports/widgets/graphicslayouts_p.h | 226 ++++ .../imports/widgets/graphicswidgets.cpp | 40 + .../imports/widgets/graphicswidgets_p.h | 68 + src/declarative/imports/widgets/widgets.cpp | 138 ++ src/declarative/imports/widgets/widgets.pro | 20 + src/declarative/libdeclarative.pro | 29 + src/plugins/plugins.pro | 1 - .../qdeclarativemodules/multimedia/multimedia.cpp | 63 - .../qdeclarativemodules/multimedia/multimedia.pro | 15 - .../qdeclarativemodules/qdeclarativemodules.pro | 7 - .../qdeclarativemodules/webkitqmlplugin/plugin.cpp | 66 - .../webkitqmlplugin/qdeclarativewebview.cpp | 1340 -------------------- .../webkitqmlplugin/qdeclarativewebview_p.h | 285 ----- .../webkitqmlplugin/qdeclarativewebview_p_p.h | 151 --- .../webkitqmlplugin/webkitqmlplugin.pro | 18 - .../widgets/graphicslayouts.cpp | 260 ---- .../widgets/graphicslayouts_p.h | 226 ---- .../widgets/graphicswidgets.cpp | 40 - .../widgets/graphicswidgets_p.h | 68 - .../qdeclarativemodules/widgets/widgets.cpp | 138 -- .../qdeclarativemodules/widgets/widgets.pro | 20 - 32 files changed, 2744 insertions(+), 2724 deletions(-) create mode 100644 src/declarative/imports/imports.pro create mode 100644 src/declarative/imports/multimedia/multimedia.cpp create mode 100644 src/declarative/imports/multimedia/multimedia.pro create mode 100644 src/declarative/imports/qimportbase.pri create mode 100644 src/declarative/imports/webkit/plugin.cpp create mode 100644 src/declarative/imports/webkit/qdeclarativewebview.cpp create mode 100644 src/declarative/imports/webkit/qdeclarativewebview_p.h create mode 100644 src/declarative/imports/webkit/qdeclarativewebview_p_p.h create mode 100644 src/declarative/imports/webkit/webkit.pro create mode 100644 src/declarative/imports/widgets/graphicslayouts.cpp create mode 100644 src/declarative/imports/widgets/graphicslayouts_p.h create mode 100644 src/declarative/imports/widgets/graphicswidgets.cpp create mode 100644 src/declarative/imports/widgets/graphicswidgets_p.h create mode 100644 src/declarative/imports/widgets/widgets.cpp create mode 100644 src/declarative/imports/widgets/widgets.pro create mode 100644 src/declarative/libdeclarative.pro delete mode 100644 src/plugins/qdeclarativemodules/multimedia/multimedia.cpp delete mode 100644 src/plugins/qdeclarativemodules/multimedia/multimedia.pro delete mode 100644 src/plugins/qdeclarativemodules/qdeclarativemodules.pro delete mode 100644 src/plugins/qdeclarativemodules/webkitqmlplugin/plugin.cpp delete mode 100644 src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview.cpp delete mode 100644 src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p.h delete mode 100644 src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p_p.h delete mode 100644 src/plugins/qdeclarativemodules/webkitqmlplugin/webkitqmlplugin.pro delete mode 100644 src/plugins/qdeclarativemodules/widgets/graphicslayouts.cpp delete mode 100644 src/plugins/qdeclarativemodules/widgets/graphicslayouts_p.h delete mode 100644 src/plugins/qdeclarativemodules/widgets/graphicswidgets.cpp delete mode 100644 src/plugins/qdeclarativemodules/widgets/graphicswidgets_p.h delete mode 100644 src/plugins/qdeclarativemodules/widgets/widgets.cpp delete mode 100644 src/plugins/qdeclarativemodules/widgets/widgets.pro diff --git a/src/declarative/declarative.pro b/src/declarative/declarative.pro index 4287e25..a7ec18e 100644 --- a/src/declarative/declarative.pro +++ b/src/declarative/declarative.pro @@ -1,29 +1,5 @@ -TARGET = QtDeclarative -QPRO_PWD = $$PWD -QT = core gui xml script network -contains(QT_CONFIG, svg): QT += svg -contains(QT_CONFIG, opengl): QT += opengl -DEFINES += QT_BUILD_DECLARATIVE_LIB QT_NO_URL_CAST_FROM_STRING -win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x66000000 -solaris-cc*:QMAKE_CXXFLAGS_RELEASE -= -O2 +TEMPLATE = subdirs -unix:QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui QtXml +SUBDIRS = libdeclarative.pro imports -exists("qdeclarative_enable_gcov") { - QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage -fno-elide-constructors - LIBS += -lgcov -} -include(../qbase.pri) - -#INCLUDEPATH -= $$QMAKE_INCDIR_QT/$$TARGET -#DESTDIR=. - -#modules -include(3rdparty/3rdparty.pri) -include(util/util.pri) -include(graphicsitems/graphicsitems.pri) -include(qml/qml.pri) -include(debugger/debugger.pri) - -symbian:TARGET.UID3=0x2001E623 diff --git a/src/declarative/imports/imports.pro b/src/declarative/imports/imports.pro new file mode 100644 index 0000000..f874644 --- /dev/null +++ b/src/declarative/imports/imports.pro @@ -0,0 +1,7 @@ +TEMPLATE = subdirs + +SUBDIRS += widgets + +contains(QT_CONFIG, multimedia): SUBDIRS += multimedia +contains(QT_CONFIG, webkit): SUBDIRS += webkit + diff --git a/src/declarative/imports/multimedia/multimedia.cpp b/src/declarative/imports/multimedia/multimedia.cpp new file mode 100644 index 0000000..8becbf3 --- /dev/null +++ b/src/declarative/imports/multimedia/multimedia.cpp @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 +#include +#include + +QT_BEGIN_NAMESPACE + +class QMultimediaQmlModule : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + virtual void registerTypes(const char *uri) + { + QtMultimedia::qRegisterDeclarativeElements(uri); + } +}; + +QT_END_NAMESPACE + +#include "multimedia.moc" + +Q_EXPORT_PLUGIN2(qmultimediaqmlmodule, QT_PREPEND_NAMESPACE(QMultimediaQmlModule)); + diff --git a/src/declarative/imports/multimedia/multimedia.pro b/src/declarative/imports/multimedia/multimedia.pro new file mode 100644 index 0000000..d601d2e --- /dev/null +++ b/src/declarative/imports/multimedia/multimedia.pro @@ -0,0 +1,15 @@ +TARGET = multimedia +include(../qimportbase.pri) + +QT += multimedia declarative + +SOURCES += multimedia.cpp + +QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/Qt/multimedia +target.path = $$[QT_INSTALL_IMPORTS]/Qt/multimedia + +qmldir.files += $$QT_BUILD_TREE/imports/Qt/multimedia/qmldir +qmldir.path += $$[QT_INSTALL_IMPORTS]/Qt/multimedia + +INSTALLS += target qmldir + diff --git a/src/declarative/imports/qimportbase.pri b/src/declarative/imports/qimportbase.pri new file mode 100644 index 0000000..5b0a4e2 --- /dev/null +++ b/src/declarative/imports/qimportbase.pri @@ -0,0 +1,16 @@ +TEMPLATE = lib +CONFIG += qt plugin + +win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release +TARGET = $$qtLibraryTarget($$TARGET) +contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols + +include(../../qt_targets.pri) + +wince*:LIBS += $$QMAKE_LIBS_GUI + +symbian: { + TARGET.EPOCALLOWDLLDATA=1 + TARGET.CAPABILITY = All -Tcb + load(armcc_warnings) +} diff --git a/src/declarative/imports/webkit/plugin.cpp b/src/declarative/imports/webkit/plugin.cpp new file mode 100644 index 0000000..2f6205d --- /dev/null +++ b/src/declarative/imports/webkit/plugin.cpp @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** 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 plugins 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 +#include + +#include "qdeclarativewebview_p.h" +#include "qdeclarativewebview_p_p.h" + +QT_BEGIN_NAMESPACE + +class WebKitQmlPlugin : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + virtual void registerTypes(const char *uri) + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("org.webkit")); + qmlRegisterType(uri,1,0,"WebView"); + } +}; + +QT_END_NAMESPACE + +#include "plugin.moc" + +Q_EXPORT_PLUGIN2(webkitqmlplugin, QT_PREPEND_NAMESPACE(WebKitQmlPlugin)); + diff --git a/src/declarative/imports/webkit/qdeclarativewebview.cpp b/src/declarative/imports/webkit/qdeclarativewebview.cpp new file mode 100644 index 0000000..733ac86 --- /dev/null +++ b/src/declarative/imports/webkit/qdeclarativewebview.cpp @@ -0,0 +1,1340 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 "qdeclarativewebview_p.h" +#include "qdeclarativewebview_p_p.h" + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +static const int MAX_DOUBLECLICK_TIME=500; // XXX need better gesture system + +class QDeclarativeWebViewPrivate : public QDeclarativePaintedItemPrivate +{ + Q_DECLARE_PUBLIC(QDeclarativeWebView) + +public: + QDeclarativeWebViewPrivate() + : QDeclarativePaintedItemPrivate(), page(0), preferredwidth(0), preferredheight(0), + progress(1.0), status(QDeclarativeWebView::Null), pending(PendingNone), + newWindowComponent(0), newWindowParent(0), + pressTime(400), + rendering(true) + { + } + + QUrl url; // page url might be different if it has not loaded yet + QWebPage *page; + + int preferredwidth, preferredheight; + qreal progress; + QDeclarativeWebView::Status status; + QString statusText; + enum { PendingNone, PendingUrl, PendingHtml, PendingContent } pending; + QUrl pending_url; + QString pending_string; + QByteArray pending_data; + mutable QDeclarativeWebSettings settings; + QDeclarativeComponent *newWindowComponent; + QDeclarativeItem *newWindowParent; + + QBasicTimer pressTimer; + QPoint pressPoint; + int pressTime; // milliseconds before it's a "hold" + + + static void windowObjects_append(QDeclarativeListProperty *prop, QObject *o) { + static_cast(prop->data)->windowObjects.append(o); + static_cast(prop->data)->updateWindowObjects(); + } + + void updateWindowObjects(); + QObjectList windowObjects; + + bool rendering; +}; + +/*! + \qmlclass WebView QDeclarativeWebView + \since 4.7 + \brief The WebView item allows you to add web content to a canvas. + \inherits Item + + A WebView renders web content based on a URL. + + If the width and height of the item is not set, they will + dynamically adjust to a size appropriate for the content. + This width may be large for typical online web pages. + + If the preferredWidth is set, the width will be this amount or larger, + usually laying out the web content to fit the preferredWidth. + + \qml + import org.webkit 1.0 + + WebView { + url: "http://www.nokia.com" + width: 490 + height: 400 + scale: 0.5 + smooth: false + smoothCache: true + } + \endqml + + \image webview.png + + The item includes no scrolling, scaling, + toolbars, etc., those must be implemented around WebView. See the WebBrowser example + for a demonstration of this. +*/ + +/*! + \internal + \class QDeclarativeWebView + \brief The QDeclarativeWebView class allows you to add web content to a QDeclarativeView. + + A WebView renders web content base on a URL. + + \image webview.png + + The item includes no scrolling, scaling, + toolbars, etc., those must be implemented around WebView. See the WebBrowser example + for a demonstration of this. + + A QDeclarativeWebView object can be instantiated in Qml using the tag \l WebView. +*/ + +QDeclarativeWebView::QDeclarativeWebView(QDeclarativeItem *parent) + : QDeclarativePaintedItem(*(new QDeclarativeWebViewPrivate), parent) +{ + init(); +} + +QDeclarativeWebView::~QDeclarativeWebView() +{ + Q_D(QDeclarativeWebView); + delete d->page; +} + +void QDeclarativeWebView::init() +{ + Q_D(QDeclarativeWebView); + + QWebSettings::enablePersistentStorage(); + + setAcceptHoverEvents(true); + setAcceptedMouseButtons(Qt::LeftButton); + setFlag(QGraphicsItem::ItemHasNoContents, false); + + d->page = 0; +} + +void QDeclarativeWebView::componentComplete() +{ + QDeclarativePaintedItem::componentComplete(); + Q_D(QDeclarativeWebView); + switch (d->pending) { + case QDeclarativeWebViewPrivate::PendingUrl: + setUrl(d->pending_url); + break; + case QDeclarativeWebViewPrivate::PendingHtml: + setHtml(d->pending_string, d->pending_url); + break; + case QDeclarativeWebViewPrivate::PendingContent: + setContent(d->pending_data, d->pending_string, d->pending_url); + break; + default: + break; + } + d->pending = QDeclarativeWebViewPrivate::PendingNone; + d->updateWindowObjects(); +} + +QDeclarativeWebView::Status QDeclarativeWebView::status() const +{ + Q_D(const QDeclarativeWebView); + return d->status; +} + + +/*! + \qmlproperty real WebView::progress + This property holds the progress of loading the current URL, from 0 to 1. + + If you just want to know when progress gets to 1, use + WebView::onLoadFinished() or WebView::onLoadFailed() instead. +*/ +qreal QDeclarativeWebView::progress() const +{ + Q_D(const QDeclarativeWebView); + return d->progress; +} + +void QDeclarativeWebView::doLoadStarted() +{ + Q_D(QDeclarativeWebView); + + if (!d->url.isEmpty()) { + d->status = Loading; + emit statusChanged(d->status); + } + emit loadStarted(); +} + +void QDeclarativeWebView::doLoadProgress(int p) +{ + Q_D(QDeclarativeWebView); + if (d->progress == p/100.0) + return; + d->progress = p/100.0; + emit progressChanged(); +} + +void QDeclarativeWebView::pageUrlChanged() +{ + Q_D(QDeclarativeWebView); + + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + expandToWebPage(); + + if ((d->url.isEmpty() && page()->mainFrame()->url() != QUrl(QLatin1String("about:blank"))) + || (d->url != page()->mainFrame()->url() && !page()->mainFrame()->url().isEmpty())) + { + d->url = page()->mainFrame()->url(); + if (d->url == QUrl(QLatin1String("about:blank"))) + d->url = QUrl(); + emit urlChanged(); + } +} + +void QDeclarativeWebView::doLoadFinished(bool ok) +{ + Q_D(QDeclarativeWebView); + + if (title().isEmpty()) + pageUrlChanged(); // XXX bug 232556 - pages with no title never get urlChanged() + + if (ok) { + d->status = d->url.isEmpty() ? Null : Ready; + emit loadFinished(); + } else { + d->status = Error; + emit loadFailed(); + } + emit statusChanged(d->status); +} + +/*! + \qmlproperty url WebView::url + This property holds the URL to the page displayed in this item. It can be set, + but also can change spontaneously (eg. because of network redirection). + + If the url is empty, the page is blank. + + The url is always absolute (QML will resolve relative URL strings in the context + of the containing QML document). +*/ +QUrl QDeclarativeWebView::url() const +{ + Q_D(const QDeclarativeWebView); + return d->url; +} + +void QDeclarativeWebView::setUrl(const QUrl &url) +{ + Q_D(QDeclarativeWebView); + if (url == d->url) + return; + + if (isComponentComplete()) { + d->url = url; + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + QUrl seturl = url; + if (seturl.isEmpty()) + seturl = QUrl(QLatin1String("about:blank")); + + Q_ASSERT(!seturl.isRelative()); + + page()->mainFrame()->load(seturl); + + emit urlChanged(); + } else { + d->pending = d->PendingUrl; + d->pending_url = url; + } +} + +/*! + \qmlproperty int WebView::preferredWidth + This property holds the ideal width for displaying the current URL. +*/ +int QDeclarativeWebView::preferredWidth() const +{ + Q_D(const QDeclarativeWebView); + return d->preferredwidth; +} + +void QDeclarativeWebView::setPreferredWidth(int iw) +{ + Q_D(QDeclarativeWebView); + if (d->preferredwidth == iw) return; + d->preferredwidth = iw; + //expandToWebPage(); + emit preferredWidthChanged(); +} + +/*! + \qmlproperty int WebView::preferredHeight + This property holds the ideal height for displaying the current URL. + This only affects the area zoomed by heuristicZoom(). +*/ +int QDeclarativeWebView::preferredHeight() const +{ + Q_D(const QDeclarativeWebView); + return d->preferredheight; +} +void QDeclarativeWebView::setPreferredHeight(int ih) +{ + Q_D(QDeclarativeWebView); + if (d->preferredheight == ih) return; + d->preferredheight = ih; + emit preferredHeightChanged(); +} + +/*! + \qmlmethod bool WebView::evaluateJavaScript(string) + + Evaluates the \a scriptSource JavaScript inside the context of the + main web frame, and returns the result of the last executed statement. + + Note that this JavaScript does \e not have any access to QML objects + except as made available as windowObjects. +*/ +QVariant QDeclarativeWebView::evaluateJavaScript(const QString &scriptSource) +{ + return this->page()->mainFrame()->evaluateJavaScript(scriptSource); +} + +void QDeclarativeWebView::focusChanged(bool hasFocus) +{ + QFocusEvent e(hasFocus ? QEvent::FocusIn : QEvent::FocusOut); + page()->event(&e); + QDeclarativeItem::focusChanged(hasFocus); +} + +void QDeclarativeWebView::initialLayout() +{ + // nothing useful to do at this point +} + +void QDeclarativeWebView::noteContentsSizeChanged(const QSize&) +{ + expandToWebPage(); +} + +void QDeclarativeWebView::expandToWebPage() +{ + Q_D(QDeclarativeWebView); + QSize cs = page()->mainFrame()->contentsSize(); + if (cs.width() < d->preferredwidth) + cs.setWidth(d->preferredwidth); + if (cs.height() < d->preferredheight) + cs.setHeight(d->preferredheight); + if (widthValid()) + cs.setWidth(width()); + if (heightValid()) + cs.setHeight(height()); + if (cs != page()->viewportSize()) { + page()->setViewportSize(cs); + } + if (cs != contentsSize()) + setContentsSize(cs); +} + +void QDeclarativeWebView::geometryChanged(const QRectF &newGeometry, + const QRectF &oldGeometry) +{ + if (newGeometry.size() != oldGeometry.size()) + expandToWebPage(); + QDeclarativePaintedItem::geometryChanged(newGeometry, oldGeometry); +} + +void QDeclarativeWebView::paintPage(const QRect& r) +{ + dirtyCache(r); + update(); +} + +/*! + \qmlproperty list WebView::javaScriptWindowObjects + + This property is a list of object that are available from within + the webview's JavaScript context. + + The \a object will be inserted as a child of the frame's window + object, under the name given by the attached property \c WebView.windowObjectName. + + \qml + WebView { + javaScriptWindowObjects: Object { + WebView.windowObjectName: "coordinates" + } + } + \endqml + + Properties of the object will be exposed as JavaScript properties and slots as + JavaScript methods. + + If Javascript is not enabled for this page, then this property does nothing. +*/ +QDeclarativeListProperty QDeclarativeWebView::javaScriptWindowObjects() +{ + Q_D(QDeclarativeWebView); + return QDeclarativeListProperty(this, d, &QDeclarativeWebViewPrivate::windowObjects_append); +} + +QDeclarativeWebViewAttached *QDeclarativeWebView::qmlAttachedProperties(QObject *o) +{ + return new QDeclarativeWebViewAttached(o); +} + +void QDeclarativeWebViewPrivate::updateWindowObjects() +{ + Q_Q(QDeclarativeWebView); + if (!q->isComponentComplete() || !page) + return; + + for (int ii = 0; ii < windowObjects.count(); ++ii) { + QObject *object = windowObjects.at(ii); + QDeclarativeWebViewAttached *attached = static_cast(qmlAttachedPropertiesObject(object)); + if (attached && !attached->windowObjectName().isEmpty()) { + page->mainFrame()->addToJavaScriptWindowObject(attached->windowObjectName(), object); + } + } +} + +bool QDeclarativeWebView::renderingEnabled() const +{ + Q_D(const QDeclarativeWebView); + return d->rendering; +} + +void QDeclarativeWebView::setRenderingEnabled(bool enabled) +{ + Q_D(QDeclarativeWebView); + if (d->rendering == enabled) + return; + d->rendering = enabled; + emit renderingEnabledChanged(); + + setCacheFrozen(!enabled); + if (enabled) + clearCache(); +} + + +void QDeclarativeWebView::drawContents(QPainter *p, const QRect &r) +{ + Q_D(QDeclarativeWebView); + if (d->rendering) + page()->mainFrame()->render(p,r); +} + +QMouseEvent *QDeclarativeWebView::sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *e) +{ + QEvent::Type t; + switch(e->type()) { + default: + case QEvent::GraphicsSceneMousePress: + t = QEvent::MouseButtonPress; + break; + case QEvent::GraphicsSceneMouseRelease: + t = QEvent::MouseButtonRelease; + break; + case QEvent::GraphicsSceneMouseMove: + t = QEvent::MouseMove; + break; + case QGraphicsSceneEvent::GraphicsSceneMouseDoubleClick: + t = QEvent::MouseButtonDblClick; + break; + } + + QMouseEvent *me = new QMouseEvent(t, (e->pos()/contentsScale()).toPoint(), e->button(), e->buttons(), 0); + return me; +} + +QMouseEvent *QDeclarativeWebView::sceneHoverMoveEventToMouseEvent(QGraphicsSceneHoverEvent *e) +{ + QEvent::Type t = QEvent::MouseMove; + + QMouseEvent *me = new QMouseEvent(t, (e->pos()/contentsScale()).toPoint(), Qt::NoButton, Qt::NoButton, 0); + + return me; +} + + +/*! + \qmlsignal WebView::onDoubleClick(clickx,clicky) + + The WebView does not pass double-click events to the web engine, but rather + emits this signals. +*/ + +void QDeclarativeWebView::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +{ + QMouseEvent *me = sceneMouseEventToMouseEvent(event); + emit doubleClick(me->x(),me->y()); + delete me; +} + +/*! + \qmlmethod bool WebView::heuristicZoom(clickX,clickY,maxzoom) + + Finds a zoom that: + \list + \i shows a whole item + \i includes (\a clickX, \a clickY) + \i fits into the preferredWidth and preferredHeight + \i zooms by no more than \a maxzoom + \i is more than 10% above the current zoom + \endlist + + If such a zoom exists, emits zoomTo(zoom,centerX,centerY) and returns true; otherwise, + no signal is emitted and returns false. +*/ +bool QDeclarativeWebView::heuristicZoom(int clickX, int clickY, qreal maxzoom) +{ + Q_D(QDeclarativeWebView); + if (contentsScale() >= maxzoom/zoomFactor()) + return false; + qreal ozf = contentsScale(); + QRect showarea = elementAreaAt(clickX, clickY, d->preferredwidth/maxzoom, d->preferredheight/maxzoom); + qreal z = qMin(qreal(d->preferredwidth)/showarea.width(),qreal(d->preferredheight)/showarea.height()); + if (z > maxzoom/zoomFactor()) + z = maxzoom/zoomFactor(); + if (z/ozf > 1.2) { + QRectF r(showarea.left()*z, showarea.top()*z, showarea.width()*z, showarea.height()*z); + emit zoomTo(z,r.x()+r.width()/2, r.y()+r.height()/2); + return true; + } else { + return false; + } +} + +/*! + \qmlproperty int WebView::pressGrabTime + + The number of milliseconds the user must press before the WebView + starts passing move events through to the web engine (rather than + letting other QML elements such as a Flickable take them). + + Defaults to 400ms. Set to 0 to always grab and pass move events to + the web engine. +*/ +int QDeclarativeWebView::pressGrabTime() const +{ + Q_D(const QDeclarativeWebView); + return d->pressTime; +} + +void QDeclarativeWebView::setPressGrabTime(int ms) +{ + Q_D(QDeclarativeWebView); + if (d->pressTime == ms) + return; + d->pressTime = ms; + emit pressGrabTimeChanged(); +} + +void QDeclarativeWebView::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + Q_D(QDeclarativeWebView); + + setFocus (true); + QMouseEvent *me = sceneMouseEventToMouseEvent(event); + + d->pressPoint = me->pos(); + if (d->pressTime) { + d->pressTimer.start(d->pressTime,this); + setKeepMouseGrab(false); + } else { + grabMouse(); + setKeepMouseGrab(true); + } + + page()->event(me); + event->setAccepted( +/* + It is not correct to send the press event upwards, if it is not accepted by WebKit + e.g. push button does not work, if done so as QGraphicsScene will not send the release event at all to WebKit + Might be a bug in WebKit, though + */ +#if 1 //QT_VERSION <= 0x040500 // XXX see bug 230835 + true +#else + me->isAccepted() +#endif + ); + delete me; + if (!event->isAccepted()) { + QDeclarativePaintedItem::mousePressEvent(event); + } +} + +void QDeclarativeWebView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + Q_D(QDeclarativeWebView); + + QMouseEvent *me = sceneMouseEventToMouseEvent(event); + page()->event(me); + d->pressTimer.stop(); + event->setAccepted( +/* + It is not correct to send the press event upwards, if it is not accepted by WebKit + e.g. push button does not work, if done so as QGraphicsScene will not send all the events to WebKit + */ +#if 1 //QT_VERSION <= 0x040500 // XXX see bug 230835 + true +#else + me->isAccepted() +#endif + ); + delete me; + if (!event->isAccepted()) { + QDeclarativePaintedItem::mouseReleaseEvent(event); + } + setKeepMouseGrab(false); + ungrabMouse(); +} + +void QDeclarativeWebView::timerEvent(QTimerEvent *event) +{ + Q_D(QDeclarativeWebView); + if (event->timerId() == d->pressTimer.timerId()) { + d->pressTimer.stop(); + grabMouse(); + setKeepMouseGrab(true); + } +} + +void QDeclarativeWebView::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + Q_D(QDeclarativeWebView); + + QMouseEvent *me = sceneMouseEventToMouseEvent(event); + if (d->pressTimer.isActive()) { + if ((me->pos() - d->pressPoint).manhattanLength() > QApplication::startDragDistance()) { + d->pressTimer.stop(); + } + } + if (keepMouseGrab()) { + page()->event(me); + event->setAccepted( +/* + It is not correct to send the press event upwards, if it is not accepted by WebKit + e.g. push button does not work, if done so as QGraphicsScene will not send the release event at all to WebKit + Might be a bug in WebKit, though + */ +#if 1 // QT_VERSION <= 0x040500 // XXX see bug 230835 + true +#else + me->isAccepted() +#endif + ); + } + delete me; + if (!event->isAccepted()) + QDeclarativePaintedItem::mouseMoveEvent(event); + +} +void QDeclarativeWebView::hoverMoveEvent (QGraphicsSceneHoverEvent * event) +{ + QMouseEvent *me = sceneHoverMoveEventToMouseEvent(event); + page()->event(me); + event->setAccepted( +#if QT_VERSION <= 0x040500 // XXX see bug 230835 + true +#else + me->isAccepted() +#endif + ); + delete me; + if (!event->isAccepted()) + QDeclarativePaintedItem::hoverMoveEvent(event); +} + +void QDeclarativeWebView::keyPressEvent(QKeyEvent* event) +{ + page()->event(event); + if (!event->isAccepted()) + QDeclarativePaintedItem::keyPressEvent(event); +} + +void QDeclarativeWebView::keyReleaseEvent(QKeyEvent* event) +{ + page()->event(event); + if (!event->isAccepted()) + QDeclarativePaintedItem::keyReleaseEvent(event); +} + +bool QDeclarativeWebView::sceneEvent(QEvent *event) +{ + if (event->type() == QEvent::KeyPress) { + QKeyEvent *k = static_cast(event); + if (k->key() == Qt::Key_Tab || k->key() == Qt::Key_Backtab) { + if (!(k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) { //### Add MetaModifier? + page()->event(event); + if (event->isAccepted()) + return true; + } + } + } + return QDeclarativePaintedItem::sceneEvent(event); +} + + +/*! + \qmlproperty action WebView::back + This property holds the action for causing the previous URL in the history to be displayed. +*/ +QAction *QDeclarativeWebView::backAction() const +{ + return page()->action(QWebPage::Back); +} + +/*! + \qmlproperty action WebView::forward + This property holds the action for causing the next URL in the history to be displayed. +*/ +QAction *QDeclarativeWebView::forwardAction() const +{ + return page()->action(QWebPage::Forward); +} + +/*! + \qmlproperty action WebView::reload + This property holds the action for reloading with the current URL +*/ +QAction *QDeclarativeWebView::reloadAction() const +{ + return page()->action(QWebPage::Reload); +} + +/*! + \qmlproperty action WebView::stop + This property holds the action for stopping loading with the current URL +*/ +QAction *QDeclarativeWebView::stopAction() const +{ + return page()->action(QWebPage::Stop); +} + +/*! + \qmlproperty real WebView::title + This property holds the title of the web page currently viewed + + By default, this property contains an empty string. +*/ +QString QDeclarativeWebView::title() const +{ + return page()->mainFrame()->title(); +} + + + +/*! + \qmlproperty pixmap WebView::icon + This property holds the icon associated with the web page currently viewed +*/ +QPixmap QDeclarativeWebView::icon() const +{ + return page()->mainFrame()->icon().pixmap(QSize(256,256)); +} + + +/*! + \qmlproperty real WebView::zoomFactor + This property holds the multiplier used to scale the contents of a Web page. +*/ +void QDeclarativeWebView::setZoomFactor(qreal factor) +{ + Q_D(QDeclarativeWebView); + if (factor == page()->mainFrame()->zoomFactor()) + return; + + page()->mainFrame()->setZoomFactor(factor); + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth*factor : width()*factor, + d->preferredheight>0 ? d->preferredheight*factor : height()*factor)); + expandToWebPage(); + + emit zoomFactorChanged(); +} + +qreal QDeclarativeWebView::zoomFactor() const +{ + return page()->mainFrame()->zoomFactor(); +} + +/*! + \qmlproperty string WebView::statusText + + This property is the current status suggested by the current web page. In a web browser, + such status is often shown in some kind of status bar. +*/ +void QDeclarativeWebView::setStatusText(const QString& s) +{ + Q_D(QDeclarativeWebView); + d->statusText = s; + emit statusTextChanged(); +} + +void QDeclarativeWebView::windowObjectCleared() +{ + Q_D(QDeclarativeWebView); + d->updateWindowObjects(); +} + +QString QDeclarativeWebView::statusText() const +{ + Q_D(const QDeclarativeWebView); + return d->statusText; +} + +QWebPage *QDeclarativeWebView::page() const +{ + Q_D(const QDeclarativeWebView); + + if (!d->page) { + QDeclarativeWebView *self = const_cast(this); + QWebPage *wp = new QDeclarativeWebPage(self); + + // QML items don't default to having a background, + // even though most we pages will set one anyway. + QPalette pal = QApplication::palette(); + pal.setBrush(QPalette::Base, QColor::fromRgbF(0, 0, 0, 0)); + wp->setPalette(pal); + + wp->setNetworkAccessManager(qmlEngine(this)->networkAccessManager()); + + self->setPage(wp); + + return wp; + } + + return d->page; +} + + +// The QObject interface to settings(). +/*! + \qmlproperty string WebView::settings.standardFontFamily + \qmlproperty string WebView::settings.fixedFontFamily + \qmlproperty string WebView::settings.serifFontFamily + \qmlproperty string WebView::settings.sansSerifFontFamily + \qmlproperty string WebView::settings.cursiveFontFamily + \qmlproperty string WebView::settings.fantasyFontFamily + + \qmlproperty int WebView::settings.minimumFontSize + \qmlproperty int WebView::settings.minimumLogicalFontSize + \qmlproperty int WebView::settings.defaultFontSize + \qmlproperty int WebView::settings.defaultFixedFontSize + + \qmlproperty bool WebView::settings.autoLoadImages + \qmlproperty bool WebView::settings.javascriptEnabled + \qmlproperty bool WebView::settings.javaEnabled + \qmlproperty bool WebView::settings.pluginsEnabled + \qmlproperty bool WebView::settings.privateBrowsingEnabled + \qmlproperty bool WebView::settings.javascriptCanOpenWindows + \qmlproperty bool WebView::settings.javascriptCanAccessClipboard + \qmlproperty bool WebView::settings.developerExtrasEnabled + \qmlproperty bool WebView::settings.linksIncludedInFocusChain + \qmlproperty bool WebView::settings.zoomTextOnly + \qmlproperty bool WebView::settings.printElementBackgrounds + \qmlproperty bool WebView::settings.offlineStorageDatabaseEnabled + \qmlproperty bool WebView::settings.offlineWebApplicationCacheEnabled + \qmlproperty bool WebView::settings.localStorageDatabaseEnabled + \qmlproperty bool WebView::settings.localContentCanAccessRemoteUrls + + These properties give access to the settings controlling the web view. + + See QWebSettings for details of these properties. + + \qml + WebView { + settings.pluginsEnabled: true + settings.standardFontFamily: "Arial" + ... + } + \endqml +*/ +QObject *QDeclarativeWebView::settingsObject() const +{ + Q_D(const QDeclarativeWebView); + d->settings.s = page()->settings(); + return &d->settings; +} + +void QDeclarativeWebView::setPage(QWebPage *page) +{ + Q_D(QDeclarativeWebView); + if (d->page == page) + return; + if (d->page) { + if (d->page->parent() == this) { + delete d->page; + } else { + d->page->disconnect(this); + } + } + d->page = page; + d->page->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + d->page->mainFrame()->setScrollBarPolicy(Qt::Horizontal,Qt::ScrollBarAlwaysOff); + d->page->mainFrame()->setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff); + connect(d->page,SIGNAL(repaintRequested(QRect)),this,SLOT(paintPage(QRect))); + connect(d->page->mainFrame(),SIGNAL(urlChanged(QUrl)),this,SLOT(pageUrlChanged())); + connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(titleChanged(QString))); + connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(iconChanged())); + connect(d->page->mainFrame(), SIGNAL(iconChanged()), this, SIGNAL(iconChanged())); + connect(d->page->mainFrame(), SIGNAL(contentsSizeChanged(QSize)), this, SLOT(noteContentsSizeChanged(QSize))); + connect(d->page->mainFrame(), SIGNAL(initialLayoutCompleted()), this, SLOT(initialLayout())); + + connect(d->page,SIGNAL(loadStarted()),this,SLOT(doLoadStarted())); + connect(d->page,SIGNAL(loadProgress(int)),this,SLOT(doLoadProgress(int))); + connect(d->page,SIGNAL(loadFinished(bool)),this,SLOT(doLoadFinished(bool))); + connect(d->page,SIGNAL(statusBarMessage(QString)),this,SLOT(setStatusText(QString))); + + connect(d->page->mainFrame(),SIGNAL(javaScriptWindowObjectCleared()),this,SLOT(windowObjectCleared())); +} + +/*! + \qmlsignal WebView::onLoadStarted() + + This handler is called when the web engine begins loading + a page. Later, WebView::onLoadFinished() or WebView::onLoadFailed() + will be emitted. +*/ + +/*! + \qmlsignal WebView::onLoadFinished() + + This handler is called when the web engine \e successfully + finishes loading a page, including any component content + (WebView::onLoadFailed() will be emitted otherwise). + + \sa progress +*/ + +/*! + \qmlsignal WebView::onLoadFailed() + + This handler is called when the web engine fails loading + a page or any component content + (WebView::onLoadFinished() will be emitted on success). +*/ + +void QDeclarativeWebView::load(const QNetworkRequest &request, + QNetworkAccessManager::Operation operation, + const QByteArray &body) +{ + page()->mainFrame()->load(request, operation, body); +} + +QString QDeclarativeWebView::html() const +{ + return page()->mainFrame()->toHtml(); +} + +/*! + \qmlproperty string WebView::html + This property holds HTML text set directly + + The html property can be set as a string. + + \qml + WebView { + html: "

This is HTML." + } + \endqml +*/ +void QDeclarativeWebView::setHtml(const QString &html, const QUrl &baseUrl) +{ + Q_D(QDeclarativeWebView); + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + if (isComponentComplete()) + page()->mainFrame()->setHtml(html, baseUrl); + else { + d->pending = d->PendingHtml; + d->pending_url = baseUrl; + d->pending_string = html; + } + emit htmlChanged(); +} + +void QDeclarativeWebView::setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl) +{ + Q_D(QDeclarativeWebView); + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + + if (isComponentComplete()) + page()->mainFrame()->setContent(data,mimeType,qmlContext(this)->resolvedUrl(baseUrl)); + else { + d->pending = d->PendingContent; + d->pending_url = baseUrl; + d->pending_string = mimeType; + d->pending_data = data; + } +} + +QWebHistory *QDeclarativeWebView::history() const +{ + return page()->history(); +} + +QWebSettings *QDeclarativeWebView::settings() const +{ + return page()->settings(); +} + +QDeclarativeWebView *QDeclarativeWebView::createWindow(QWebPage::WebWindowType type) +{ + Q_D(QDeclarativeWebView); + switch (type) { + case QWebPage::WebBrowserWindow: { + if (!d->newWindowComponent && d->newWindowParent) + qWarning("WebView::newWindowComponent not set - WebView::newWindowParent ignored"); + else if (d->newWindowComponent && !d->newWindowParent) + qWarning("WebView::newWindowParent not set - WebView::newWindowComponent ignored"); + else if (d->newWindowComponent && d->newWindowParent) { + QDeclarativeWebView *webview = 0; + QDeclarativeContext *windowContext = new QDeclarativeContext(qmlContext(this)); + + QObject *nobj = d->newWindowComponent->create(windowContext); + if (nobj) { + windowContext->setParent(nobj); + QDeclarativeItem *item = qobject_cast(nobj); + if (!item) { + delete nobj; + } else { + webview = item->findChild(); + if (!webview) { + delete item; + } else { + nobj->setParent(d->newWindowParent); + static_cast(item)->setParentItem(d->newWindowParent); + } + } + } else { + delete windowContext; + } + + return webview; + } + } + break; + case QWebPage::WebModalDialog: { + // Not supported + } + } + return 0; +} + +/*! + \qmlproperty component WebView::newWindowComponent + + This property holds the component to use for new windows. + The component must have a WebView somewhere in its structure. + + When the web engine requests a new window, it will be an instance of + this component. + + The parent of the new window is set by newWindowParent. It must be set. +*/ +QDeclarativeComponent *QDeclarativeWebView::newWindowComponent() const +{ + Q_D(const QDeclarativeWebView); + return d->newWindowComponent; +} + +void QDeclarativeWebView::setNewWindowComponent(QDeclarativeComponent *newWindow) +{ + Q_D(QDeclarativeWebView); + if (newWindow == d->newWindowComponent) + return; + d->newWindowComponent = newWindow; + emit newWindowComponentChanged(); +} + + +/*! + \qmlproperty item WebView::newWindowParent + + The parent item for new windows. + + \sa newWindowComponent +*/ +QDeclarativeItem *QDeclarativeWebView::newWindowParent() const +{ + Q_D(const QDeclarativeWebView); + return d->newWindowParent; +} + +void QDeclarativeWebView::setNewWindowParent(QDeclarativeItem *parent) +{ + Q_D(QDeclarativeWebView); + if (parent == d->newWindowParent) + return; + if (d->newWindowParent && parent) { + QList children = d->newWindowParent->childItems(); + for (int i = 0; i < children.count(); ++i) { + children.at(i)->setParentItem(parent); + } + } + d->newWindowParent = parent; + emit newWindowParentChanged(); +} + +/*! + Returns the area of the largest element at position (\a x,\a y) that is no larger + than \a maxwidth by \a maxheight pixels. + + May return an area larger in the case when no smaller element is at the position. +*/ +QRect QDeclarativeWebView::elementAreaAt(int x, int y, int maxwidth, int maxheight) const +{ + QWebHitTestResult hit = page()->mainFrame()->hitTestContent(QPoint(x,y)); + QRect rv = hit.boundingRect(); + QWebElement element = hit.enclosingBlockElement(); + if (maxwidth<=0) maxwidth = INT_MAX; + if (maxheight<=0) maxheight = INT_MAX; + while (!element.parent().isNull() && element.geometry().width() <= maxwidth && element.geometry().height() <= maxheight) { + rv = element.geometry(); + element = element.parent(); + } + return rv; +} + +/*! + \internal + \class QDeclarativeWebPage + \brief The QDeclarativeWebPage class is a QWebPage that can create QML plugins. + + \sa QDeclarativeWebView +*/ +QDeclarativeWebPage::QDeclarativeWebPage(QDeclarativeWebView *parent) : + QWebPage(parent) +{ +} + +QDeclarativeWebPage::~QDeclarativeWebPage() +{ +} + +void QDeclarativeWebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) +{ + qWarning() << sourceID << ':' << lineNumber << ':' << message; +} + +QString QDeclarativeWebPage::chooseFile(QWebFrame *originatingFrame, const QString& oldFile) +{ + // Not supported (it's modal) + Q_UNUSED(originatingFrame) + Q_UNUSED(oldFile) + return oldFile; +} + +void QDeclarativeWebPage::javaScriptAlert(QWebFrame *originatingFrame, const QString& msg) +{ + Q_UNUSED(originatingFrame) + emit viewItem()->alert(msg); +} + +bool QDeclarativeWebPage::javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg) +{ + // Not supported (it's modal) + Q_UNUSED(originatingFrame) + Q_UNUSED(msg) + return false; +} + +bool QDeclarativeWebPage::javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result) +{ + // Not supported (it's modal) + Q_UNUSED(originatingFrame) + Q_UNUSED(msg) + Q_UNUSED(defaultValue) + Q_UNUSED(result) + return false; +} + + +/* + Qt WebKit does not understand non-QWidget plugins, so dummy widgets + are created, parented to a single dummy tool window. + + The requirements for QML object plugins are input to the Qt WebKit + non-QWidget plugin support, which will obsolete this kludge. +*/ +class QWidget_Dummy_Plugin : public QWidget +{ + Q_OBJECT +public: + static QWidget *dummy_shared_parent() + { + static QWidget *dsp = 0; + if (!dsp) { + dsp = new QWidget(0,Qt::Tool); + dsp->setGeometry(-10000,-10000,0,0); + dsp->show(); + } + return dsp; + } + QWidget_Dummy_Plugin(const QUrl& url, QDeclarativeWebView *view, const QStringList ¶mNames, const QStringList ¶mValues) : + QWidget(dummy_shared_parent()), + propertyNames(paramNames), + propertyValues(paramValues), + webview(view) + { + QDeclarativeEngine *engine = qmlEngine(webview); + component = new QDeclarativeComponent(engine, url, this); + item = 0; + if (component->isLoading()) + connect(component, SIGNAL(statusChanged(QDeclarativeComponent::Status)), this, SLOT(qmlLoaded())); + else + qmlLoaded(); + } + +public Q_SLOTS: + void qmlLoaded() + { + if (component->isError()) { + // ### Could instead give these errors to the WebView to handle. + qWarning() << component->errors(); + return; + } + item = qobject_cast(component->create(qmlContext(webview))); + item->setParent(webview); + QString jsObjName; + for (int i=0; isetProperty(propertyNames[i].toUtf8(),propertyValues[i]); + if (propertyNames[i] == QLatin1String("objectname")) + jsObjName = propertyValues[i]; + } + } + if (!jsObjName.isNull()) { + QWebFrame *f = webview->page()->mainFrame(); + f->addToJavaScriptWindowObject(jsObjName, item); + } + resizeEvent(0); + delete component; + component = 0; + } + void resizeEvent(QResizeEvent*) + { + if (item) { + item->setX(x()); + item->setY(y()); + item->setWidth(width()); + item->setHeight(height()); + } + } + +private: + QDeclarativeComponent *component; + QDeclarativeItem *item; + QStringList propertyNames, propertyValues; + QDeclarativeWebView *webview; +}; + +QDeclarativeWebView *QDeclarativeWebPage::viewItem() +{ + return static_cast(parent()); +} + +QObject *QDeclarativeWebPage::createPlugin(const QString &, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues) +{ + QUrl comp = qmlContext(viewItem())->resolvedUrl(url); + return new QWidget_Dummy_Plugin(comp,viewItem(),paramNames,paramValues); +} + +QWebPage *QDeclarativeWebPage::createWindow(WebWindowType type) +{ + QDeclarativeWebView *newView = viewItem()->createWindow(type); + if (newView) + return newView->page(); + return 0; +} + +QT_END_NAMESPACE + +#include diff --git a/src/declarative/imports/webkit/qdeclarativewebview_p.h b/src/declarative/imports/webkit/qdeclarativewebview_p.h new file mode 100644 index 0000000..0bb5d29 --- /dev/null +++ b/src/declarative/imports/webkit/qdeclarativewebview_p.h @@ -0,0 +1,285 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 QDECLARATIVEWEBVIEW_H +#define QDECLARATIVEWEBVIEW_H + +#include + +#include +#include +#include +#include + +QT_BEGIN_HEADER + +class QWebHistory; +class QWebSettings; + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) +class QDeclarativeWebViewPrivate; +class QNetworkRequest; +class QDeclarativeWebView; + +class Q_DECLARATIVE_EXPORT QDeclarativeWebPage : public QWebPage +{ + Q_OBJECT +public: + explicit QDeclarativeWebPage(QDeclarativeWebView *parent); + ~QDeclarativeWebPage(); +protected: + QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues); + QWebPage *createWindow(WebWindowType type); + void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID); + QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile); + void javaScriptAlert(QWebFrame *originatingFrame, const QString& msg); + bool javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg); + bool javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result); + +private: + QDeclarativeWebView *viewItem(); +}; + + +class QDeclarativeWebViewAttached; + +//### TODO: browser plugins + +class Q_DECLARATIVE_EXPORT QDeclarativeWebView : public QDeclarativePaintedItem +{ + Q_OBJECT + + Q_ENUMS(Status SelectionMode) + + Q_PROPERTY(QString title READ title NOTIFY titleChanged) + Q_PROPERTY(QPixmap icon READ icon NOTIFY iconChanged) + Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged) + Q_PROPERTY(QString statusText READ statusText NOTIFY statusTextChanged) + + Q_PROPERTY(QString html READ html WRITE setHtml NOTIFY htmlChanged) + + Q_PROPERTY(int pressGrabTime READ pressGrabTime WRITE setPressGrabTime NOTIFY pressGrabTimeChanged) + + Q_PROPERTY(int preferredWidth READ preferredWidth WRITE setPreferredWidth NOTIFY preferredWidthChanged) + Q_PROPERTY(int preferredHeight READ preferredHeight WRITE setPreferredHeight NOTIFY preferredHeightChanged) + Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) + Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged) + Q_PROPERTY(Status status READ status NOTIFY statusChanged) + + Q_PROPERTY(QAction* reload READ reloadAction CONSTANT) + Q_PROPERTY(QAction* back READ backAction CONSTANT) + Q_PROPERTY(QAction* forward READ forwardAction CONSTANT) + Q_PROPERTY(QAction* stop READ stopAction CONSTANT) + + Q_PROPERTY(QObject* settings READ settingsObject CONSTANT) + + Q_PROPERTY(QDeclarativeListProperty javaScriptWindowObjects READ javaScriptWindowObjects CONSTANT) + + Q_PROPERTY(QDeclarativeComponent* newWindowComponent READ newWindowComponent WRITE setNewWindowComponent NOTIFY newWindowComponentChanged) + Q_PROPERTY(QDeclarativeItem* newWindowParent READ newWindowParent WRITE setNewWindowParent NOTIFY newWindowParentChanged) + + Q_PROPERTY(bool renderingEnabled READ renderingEnabled WRITE setRenderingEnabled NOTIFY renderingEnabledChanged) + +public: + QDeclarativeWebView(QDeclarativeItem *parent=0); + ~QDeclarativeWebView(); + + QUrl url() const; + void setUrl(const QUrl &); + + QString title() const; + + QPixmap icon() const; + + qreal zoomFactor() const; + void setZoomFactor(qreal); + Q_INVOKABLE bool heuristicZoom(int clickX, int clickY, qreal maxzoom); + QRect elementAreaAt(int x, int y, int minwidth, int minheight) const; + + int pressGrabTime() const; + void setPressGrabTime(int); + + int preferredWidth() const; + void setPreferredWidth(int); + int preferredHeight() const; + void setPreferredHeight(int); + + enum Status { Null, Ready, Loading, Error }; + Status status() const; + qreal progress() const; + QString statusText() const; + + QAction *reloadAction() const; + QAction *backAction() const; + QAction *forwardAction() const; + QAction *stopAction() const; + + QWebPage *page() const; + void setPage(QWebPage *page); + + void load(const QNetworkRequest &request, + QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, + const QByteArray &body = QByteArray()); + + QString html() const; + + void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); + void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); + + QWebHistory *history() const; + QWebSettings *settings() const; + QObject *settingsObject() const; + + bool renderingEnabled() const; + void setRenderingEnabled(bool); + + QDeclarativeListProperty javaScriptWindowObjects(); + + static QDeclarativeWebViewAttached *qmlAttachedProperties(QObject *); + + QDeclarativeComponent *newWindowComponent() const; + void setNewWindowComponent(QDeclarativeComponent *newWindow); + QDeclarativeItem *newWindowParent() const; + void setNewWindowParent(QDeclarativeItem *newWindow); + +Q_SIGNALS: + void preferredWidthChanged(); + void preferredHeightChanged(); + void urlChanged(); + void progressChanged(); + void statusChanged(Status); + void titleChanged(const QString&); + void iconChanged(); + void statusTextChanged(); + void htmlChanged(); + void pressGrabTimeChanged(); + void zoomFactorChanged(); + void newWindowComponentChanged(); + void newWindowParentChanged(); + void renderingEnabledChanged(); + + void loadStarted(); + void loadFinished(); + void loadFailed(); + + void doubleClick(int clickX, int clickY); + + void zoomTo(qreal zoom, int centerX, int centerY); + + void alert(const QString& message); + +public Q_SLOTS: + QVariant evaluateJavaScript(const QString&); + +private Q_SLOTS: + void expandToWebPage(); + void paintPage(const QRect&); + void doLoadStarted(); + void doLoadProgress(int p); + void doLoadFinished(bool ok); + void setStatusText(const QString&); + void windowObjectCleared(); + void pageUrlChanged(); + void noteContentsSizeChanged(const QSize&); + void initialLayout(); + +protected: + void drawContents(QPainter *, const QRect &); + + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + void timerEvent(QTimerEvent *event); + void hoverMoveEvent (QGraphicsSceneHoverEvent * event); + void keyPressEvent(QKeyEvent* event); + void keyReleaseEvent(QKeyEvent* event); + virtual void geometryChanged(const QRectF &newGeometry, + const QRectF &oldGeometry); + virtual void focusChanged(bool); + virtual bool sceneEvent(QEvent *event); + QDeclarativeWebView *createWindow(QWebPage::WebWindowType type); + +private: + void init(); + virtual void componentComplete(); + Q_DISABLE_COPY(QDeclarativeWebView) + Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeWebView) + QMouseEvent *sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *); + QMouseEvent *sceneHoverMoveEventToMouseEvent(QGraphicsSceneHoverEvent *); + friend class QDeclarativeWebPage; +}; + +class QDeclarativeWebViewAttached : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString windowObjectName READ windowObjectName WRITE setWindowObjectName) +public: + QDeclarativeWebViewAttached(QObject *parent) + : QObject(parent) + { + } + + QString windowObjectName() const + { + return m_windowObjectName; + } + + void setWindowObjectName(const QString &n) + { + m_windowObjectName = n; + } + +private: + QString m_windowObjectName; +}; + + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QDeclarativeWebView) +QML_DECLARE_TYPEINFO(QDeclarativeWebView, QML_HAS_ATTACHED_PROPERTIES) + +QT_END_HEADER + +#endif diff --git a/src/declarative/imports/webkit/qdeclarativewebview_p_p.h b/src/declarative/imports/webkit/qdeclarativewebview_p_p.h new file mode 100644 index 0000000..258b472 --- /dev/null +++ b/src/declarative/imports/webkit/qdeclarativewebview_p_p.h @@ -0,0 +1,151 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 QDECLARATIVEWEBVIEW_P_H +#define QDECLARATIVEWEBVIEW_P_H + +#include + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +class QDeclarativeWebSettings : public QObject { + Q_OBJECT + + Q_PROPERTY(QString standardFontFamily READ standardFontFamily WRITE setStandardFontFamily) + Q_PROPERTY(QString fixedFontFamily READ fixedFontFamily WRITE setFixedFontFamily) + Q_PROPERTY(QString serifFontFamily READ serifFontFamily WRITE setSerifFontFamily) + Q_PROPERTY(QString sansSerifFontFamily READ sansSerifFontFamily WRITE setSansSerifFontFamily) + Q_PROPERTY(QString cursiveFontFamily READ cursiveFontFamily WRITE setCursiveFontFamily) + Q_PROPERTY(QString fantasyFontFamily READ fantasyFontFamily WRITE setFantasyFontFamily) + + Q_PROPERTY(int minimumFontSize READ minimumFontSize WRITE setMinimumFontSize) + Q_PROPERTY(int minimumLogicalFontSize READ minimumLogicalFontSize WRITE setMinimumLogicalFontSize) + Q_PROPERTY(int defaultFontSize READ defaultFontSize WRITE setDefaultFontSize) + Q_PROPERTY(int defaultFixedFontSize READ defaultFixedFontSize WRITE setDefaultFixedFontSize) + + Q_PROPERTY(bool autoLoadImages READ autoLoadImages WRITE setAutoLoadImages) + Q_PROPERTY(bool javascriptEnabled READ javascriptEnabled WRITE setJavascriptEnabled) + Q_PROPERTY(bool javaEnabled READ javaEnabled WRITE setJavaEnabled) + Q_PROPERTY(bool pluginsEnabled READ pluginsEnabled WRITE setPluginsEnabled) + Q_PROPERTY(bool privateBrowsingEnabled READ privateBrowsingEnabled WRITE setPrivateBrowsingEnabled) + Q_PROPERTY(bool javascriptCanOpenWindows READ javascriptCanOpenWindows WRITE setJavascriptCanOpenWindows) + Q_PROPERTY(bool javascriptCanAccessClipboard READ javascriptCanAccessClipboard WRITE setJavascriptCanAccessClipboard) + Q_PROPERTY(bool developerExtrasEnabled READ developerExtrasEnabled WRITE setDeveloperExtrasEnabled) + Q_PROPERTY(bool linksIncludedInFocusChain READ linksIncludedInFocusChain WRITE setLinksIncludedInFocusChain) + Q_PROPERTY(bool zoomTextOnly READ zoomTextOnly WRITE setZoomTextOnly) + Q_PROPERTY(bool printElementBackgrounds READ printElementBackgrounds WRITE setPrintElementBackgrounds) + Q_PROPERTY(bool offlineStorageDatabaseEnabled READ offlineStorageDatabaseEnabled WRITE setOfflineStorageDatabaseEnabled) + Q_PROPERTY(bool offlineWebApplicationCacheEnabled READ offlineWebApplicationCacheEnabled WRITE setOfflineWebApplicationCacheEnabled) + Q_PROPERTY(bool localStorageDatabaseEnabled READ localStorageDatabaseEnabled WRITE setLocalStorageDatabaseEnabled) + Q_PROPERTY(bool localContentCanAccessRemoteUrls READ localContentCanAccessRemoteUrls WRITE setLocalContentCanAccessRemoteUrls) + +public: + QDeclarativeWebSettings() {} + + QString standardFontFamily() const { return s->fontFamily(QWebSettings::StandardFont); } + void setStandardFontFamily(const QString& f) { s->setFontFamily(QWebSettings::StandardFont,f); } + QString fixedFontFamily() const { return s->fontFamily(QWebSettings::FixedFont); } + void setFixedFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FixedFont,f); } + QString serifFontFamily() const { return s->fontFamily(QWebSettings::SerifFont); } + void setSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SerifFont,f); } + QString sansSerifFontFamily() const { return s->fontFamily(QWebSettings::SansSerifFont); } + void setSansSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SansSerifFont,f); } + QString cursiveFontFamily() const { return s->fontFamily(QWebSettings::CursiveFont); } + void setCursiveFontFamily(const QString& f) { s->setFontFamily(QWebSettings::CursiveFont,f); } + QString fantasyFontFamily() const { return s->fontFamily(QWebSettings::FantasyFont); } + void setFantasyFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FantasyFont,f); } + + int minimumFontSize() const { return s->fontSize(QWebSettings::MinimumFontSize); } + void setMinimumFontSize(int size) { s->setFontSize(QWebSettings::MinimumFontSize,size); } + int minimumLogicalFontSize() const { return s->fontSize(QWebSettings::MinimumLogicalFontSize); } + void setMinimumLogicalFontSize(int size) { s->setFontSize(QWebSettings::MinimumLogicalFontSize,size); } + int defaultFontSize() const { return s->fontSize(QWebSettings::DefaultFontSize); } + void setDefaultFontSize(int size) { s->setFontSize(QWebSettings::DefaultFontSize,size); } + int defaultFixedFontSize() const { return s->fontSize(QWebSettings::DefaultFixedFontSize); } + void setDefaultFixedFontSize(int size) { s->setFontSize(QWebSettings::DefaultFixedFontSize,size); } + + bool autoLoadImages() const { return s->testAttribute(QWebSettings::AutoLoadImages); } + void setAutoLoadImages(bool on) { s->setAttribute(QWebSettings::AutoLoadImages, on); } + bool javascriptEnabled() const { return s->testAttribute(QWebSettings::JavascriptEnabled); } + void setJavascriptEnabled(bool on) { s->setAttribute(QWebSettings::JavascriptEnabled, on); } + bool javaEnabled() const { return s->testAttribute(QWebSettings::JavaEnabled); } + void setJavaEnabled(bool on) { s->setAttribute(QWebSettings::JavaEnabled, on); } + bool pluginsEnabled() const { return s->testAttribute(QWebSettings::PluginsEnabled); } + void setPluginsEnabled(bool on) { s->setAttribute(QWebSettings::PluginsEnabled, on); } + bool privateBrowsingEnabled() const { return s->testAttribute(QWebSettings::PrivateBrowsingEnabled); } + void setPrivateBrowsingEnabled(bool on) { s->setAttribute(QWebSettings::PrivateBrowsingEnabled, on); } + bool javascriptCanOpenWindows() const { return s->testAttribute(QWebSettings::JavascriptCanOpenWindows); } + void setJavascriptCanOpenWindows(bool on) { s->setAttribute(QWebSettings::JavascriptCanOpenWindows, on); } + bool javascriptCanAccessClipboard() const { return s->testAttribute(QWebSettings::JavascriptCanAccessClipboard); } + void setJavascriptCanAccessClipboard(bool on) { s->setAttribute(QWebSettings::JavascriptCanAccessClipboard, on); } + bool developerExtrasEnabled() const { return s->testAttribute(QWebSettings::DeveloperExtrasEnabled); } + void setDeveloperExtrasEnabled(bool on) { s->setAttribute(QWebSettings::DeveloperExtrasEnabled, on); } + bool linksIncludedInFocusChain() const { return s->testAttribute(QWebSettings::LinksIncludedInFocusChain); } + void setLinksIncludedInFocusChain(bool on) { s->setAttribute(QWebSettings::LinksIncludedInFocusChain, on); } + bool zoomTextOnly() const { return s->testAttribute(QWebSettings::ZoomTextOnly); } + void setZoomTextOnly(bool on) { s->setAttribute(QWebSettings::ZoomTextOnly, on); } + bool printElementBackgrounds() const { return s->testAttribute(QWebSettings::PrintElementBackgrounds); } + void setPrintElementBackgrounds(bool on) { s->setAttribute(QWebSettings::PrintElementBackgrounds, on); } + bool offlineStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::OfflineStorageDatabaseEnabled); } + void setOfflineStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, on); } + bool offlineWebApplicationCacheEnabled() const { return s->testAttribute(QWebSettings::OfflineWebApplicationCacheEnabled); } + void setOfflineWebApplicationCacheEnabled(bool on) { s->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, on); } + bool localStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::LocalStorageDatabaseEnabled); } + void setLocalStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, on); } + bool localContentCanAccessRemoteUrls() const { return s->testAttribute(QWebSettings::LocalContentCanAccessRemoteUrls); } + void setLocalContentCanAccessRemoteUrls(bool on) { s->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, on); } + + QWebSettings *s; +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QDeclarativeWebSettings) + +QT_END_HEADER + +#endif diff --git a/src/declarative/imports/webkit/webkit.pro b/src/declarative/imports/webkit/webkit.pro new file mode 100644 index 0000000..7ad8564 --- /dev/null +++ b/src/declarative/imports/webkit/webkit.pro @@ -0,0 +1,18 @@ +TARGET = webkitqmlplugin +include(../qimportbase.pri) + +contains(QT_CONFIG, webkit) { + QT += webkit declarative + + SOURCES += qdeclarativewebview.cpp plugin.cpp + HEADERS += qdeclarativewebview_p.h + HEADERS += qdeclarativewebview_p_p.h + + QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/org/webkit + target.path = $$[QT_INSTALL_IMPORTS]/org/webkit + + qmldir.files += $$QT_BUILD_TREE/imports/org/webkit/qmldir + qmldir.path += $$[QT_INSTALL_IMPORTS]/org/webkit + + INSTALLS += target qmldir +} diff --git a/src/declarative/imports/widgets/graphicslayouts.cpp b/src/declarative/imports/widgets/graphicslayouts.cpp new file mode 100644 index 0000000..fc15ad2 --- /dev/null +++ b/src/declarative/imports/widgets/graphicslayouts.cpp @@ -0,0 +1,260 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 "graphicslayouts_p.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +LinearLayoutAttached::LinearLayoutAttached(QObject *parent) +: QObject(parent), _stretch(1), _alignment(Qt::AlignCenter) +{ +} + +void LinearLayoutAttached::setStretchFactor(int f) +{ + if (_stretch == f) + return; + + _stretch = f; + emit stretchChanged(reinterpret_cast(parent()), _stretch); +} + +void LinearLayoutAttached::setAlignment(Qt::Alignment a) +{ + if (_alignment == a) + return; + + _alignment = a; + emit alignmentChanged(reinterpret_cast(parent()), _alignment); +} + +QGraphicsLinearLayoutStretchItemObject::QGraphicsLinearLayoutStretchItemObject(QObject *parent) + : QObject(parent) +{ +} + +QSizeF QGraphicsLinearLayoutStretchItemObject::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const +{ +Q_UNUSED(which); +Q_UNUSED(constraint); +return QSizeF(); +} + + +QGraphicsLinearLayoutObject::QGraphicsLinearLayoutObject(QObject *parent) +: QObject(parent) +{ +} + +QGraphicsLinearLayoutObject::~QGraphicsLinearLayoutObject() +{ +} + +void QGraphicsLinearLayoutObject::insertLayoutItem(int index, QGraphicsLayoutItem *item) +{ +insertItem(index, item); + +//connect attached properties +if (LinearLayoutAttached *obj = attachedProperties.value(item)) { + setStretchFactor(item, obj->stretchFactor()); + setAlignment(item, obj->alignment()); + QObject::connect(obj, SIGNAL(stretchChanged(QGraphicsLayoutItem*,int)), + this, SLOT(updateStretch(QGraphicsLayoutItem*,int))); + QObject::connect(obj, SIGNAL(alignmentChanged(QGraphicsLayoutItem*,Qt::Alignment)), + this, SLOT(updateAlignment(QGraphicsLayoutItem*,Qt::Alignment))); + //### need to disconnect when widget is removed? +} +} + +//### is there a better way to do this? +void QGraphicsLinearLayoutObject::clearChildren() +{ +for (int i = 0; i < count(); ++i) + removeAt(i); +} + +void QGraphicsLinearLayoutObject::updateStretch(QGraphicsLayoutItem *item, int stretch) +{ +QGraphicsLinearLayout::setStretchFactor(item, stretch); +} + +void QGraphicsLinearLayoutObject::updateAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment) +{ +QGraphicsLinearLayout::setAlignment(item, alignment); +} + +QHash QGraphicsLinearLayoutObject::attachedProperties; +LinearLayoutAttached *QGraphicsLinearLayoutObject::qmlAttachedProperties(QObject *obj) +{ +// ### This is not allowed - you must attach to any object +if (!qobject_cast(obj)) + return 0; +LinearLayoutAttached *rv = new LinearLayoutAttached(obj); +attachedProperties.insert(qobject_cast(obj), rv); +return rv; +} + +////////////////////////////////////////////////////////////////////////////////////////////////////// +// QGraphicsGridLayout-related classes +////////////////////////////////////////////////////////////////////////////////////////////////////// +GridLayoutAttached::GridLayoutAttached(QObject *parent) +: QObject(parent), _row(-1), _column(-1), _rowspan(1), _colspan(1), _alignment(-1) +{ +} + +void GridLayoutAttached::setRow(int r) +{ + if (_row == r) + return; + + _row = r; + //emit rowChanged(reinterpret_cast(parent()), _row); +} + +void GridLayoutAttached::setColumn(int c) +{ + if (_column == c) + return; + + _column = c; + //emit columnChanged(reinterpret_cast(parent()), _column); +} + +void GridLayoutAttached::setRowSpan(int rs) +{ + if (_rowspan == rs) + return; + + _rowspan = rs; + //emit rowSpanChanged(reinterpret_cast(parent()), _rowSpan); +} + +void GridLayoutAttached::setColumnSpan(int cs) +{ + if (_colspan == cs) + return; + + _colspan = cs; + //emit columnSpanChanged(reinterpret_cast(parent()), _columnSpan); +} + +void GridLayoutAttached::setAlignment(Qt::Alignment a) +{ + if (_alignment == a) + return; + + _alignment = a; + //emit alignmentChanged(reinterpret_cast(parent()), _alignment); +} + +QGraphicsGridLayoutObject::QGraphicsGridLayoutObject(QObject *parent) +: QObject(parent) +{ +} + +QGraphicsGridLayoutObject::~QGraphicsGridLayoutObject() +{ +} + +void QGraphicsGridLayoutObject::addWidget(QGraphicsWidget *wid) +{ +//use attached properties +if (QObject *obj = attachedProperties.value(qobject_cast(wid))) { + int row = static_cast(obj)->row(); + int column = static_cast(obj)->column(); + int rowSpan = static_cast(obj)->rowSpan(); + int columnSpan = static_cast(obj)->columnSpan(); + if (row == -1 || column == -1) { + qWarning() << "Must set row and column for an item in a grid layout"; + return; + } + addItem(wid, row, column, rowSpan, columnSpan); +} +} + +void QGraphicsGridLayoutObject::addLayoutItem(QGraphicsLayoutItem *item) +{ +//use attached properties +if (GridLayoutAttached *obj = attachedProperties.value(item)) { + int row = obj->row(); + int column = obj->column(); + int rowSpan = obj->rowSpan(); + int columnSpan = obj->columnSpan(); + Qt::Alignment alignment = obj->alignment(); + if (row == -1 || column == -1) { + qWarning() << "Must set row and column for an item in a grid layout"; + return; + } + addItem(item, row, column, rowSpan, columnSpan); + if (alignment != -1) + setAlignment(item,alignment); +} +} + +//### is there a better way to do this? +void QGraphicsGridLayoutObject::clearChildren() +{ +for (int i = 0; i < count(); ++i) + removeAt(i); +} + +qreal QGraphicsGridLayoutObject::spacing() const +{ +if (verticalSpacing() == horizontalSpacing()) + return verticalSpacing(); +return -1; //### +} + +QHash QGraphicsGridLayoutObject::attachedProperties; +GridLayoutAttached *QGraphicsGridLayoutObject::qmlAttachedProperties(QObject *obj) +{ +// ### This is not allowed - you must attach to any object +if (!qobject_cast(obj)) + return 0; +GridLayoutAttached *rv = new GridLayoutAttached(obj); +attachedProperties.insert(qobject_cast(obj), rv); +return rv; +} + +QT_END_NAMESPACE diff --git a/src/declarative/imports/widgets/graphicslayouts_p.h b/src/declarative/imports/widgets/graphicslayouts_p.h new file mode 100644 index 0000000..f9b9ae8 --- /dev/null +++ b/src/declarative/imports/widgets/graphicslayouts_p.h @@ -0,0 +1,226 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 GRAPHICSLAYOUTS_H +#define GRAPHICSLAYOUTS_H + +#include "graphicswidgets_p.h" + +#include +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +class QGraphicsLinearLayoutStretchItemObject : public QObject, public QGraphicsLayoutItem +{ + Q_OBJECT + Q_INTERFACES(QGraphicsLayoutItem) +public: + QGraphicsLinearLayoutStretchItemObject(QObject *parent = 0); + + virtual QSizeF sizeHint(Qt::SizeHint, const QSizeF &) const; +}; + +class LinearLayoutAttached; +class QGraphicsLinearLayoutObject : public QObject, public QGraphicsLinearLayout +{ + Q_OBJECT + Q_INTERFACES(QGraphicsLayout QGraphicsLayoutItem) + + Q_PROPERTY(QDeclarativeListProperty children READ children) + Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) + Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing) + Q_CLASSINFO("DefaultProperty", "children") +public: + QGraphicsLinearLayoutObject(QObject * = 0); + ~QGraphicsLinearLayoutObject(); + + QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append, children_count, children_at, children_clear); } + + static LinearLayoutAttached *qmlAttachedProperties(QObject *); + +private Q_SLOTS: + void updateStretch(QGraphicsLayoutItem*,int); + void updateAlignment(QGraphicsLayoutItem*,Qt::Alignment); + +private: + friend class LinearLayoutAttached; + void clearChildren(); + void insertLayoutItem(int, QGraphicsLayoutItem *); + static QHash attachedProperties; + + static void children_append(QDeclarativeListProperty *prop, QGraphicsLayoutItem *item) { + static_cast(prop->object)->insertLayoutItem(-1, item); + } + + static void children_clear(QDeclarativeListProperty *prop) { + static_cast(prop->object)->clearChildren(); + } + + static int children_count(QDeclarativeListProperty *prop) { + return static_cast(prop->object)->count(); + } + + static QGraphicsLayoutItem *children_at(QDeclarativeListProperty *prop, int index) { + return static_cast(prop->object)->itemAt(index); + } +}; + +class GridLayoutAttached; +class QGraphicsGridLayoutObject : public QObject, public QGraphicsGridLayout +{ + Q_OBJECT + Q_INTERFACES(QGraphicsLayout QGraphicsLayoutItem) + + Q_PROPERTY(QDeclarativeListProperty children READ children) + Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing) + Q_PROPERTY(qreal verticalSpacing READ verticalSpacing WRITE setVerticalSpacing) + Q_PROPERTY(qreal horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing) + Q_CLASSINFO("DefaultProperty", "children") +public: + QGraphicsGridLayoutObject(QObject * = 0); + ~QGraphicsGridLayoutObject(); + + QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append, children_count, children_at, children_clear); } + + qreal spacing() const; + + static GridLayoutAttached *qmlAttachedProperties(QObject *); + +private: + friend class GraphicsLayoutAttached; + void addWidget(QGraphicsWidget *); + void clearChildren(); + void addLayoutItem(QGraphicsLayoutItem *); + static QHash attachedProperties; + + static void children_append(QDeclarativeListProperty *prop, QGraphicsLayoutItem *item) { + static_cast(prop->object)->addLayoutItem(item); + } + + static void children_clear(QDeclarativeListProperty *prop) { + static_cast(prop->object)->clearChildren(); + } + + static int children_count(QDeclarativeListProperty *prop) { + return static_cast(prop->object)->count(); + } + + static QGraphicsLayoutItem *children_at(QDeclarativeListProperty *prop, int index) { + return static_cast(prop->object)->itemAt(index); + } +}; + +class LinearLayoutAttached : public QObject +{ + Q_OBJECT + + Q_PROPERTY(int stretchFactor READ stretchFactor WRITE setStretchFactor NOTIFY stretchChanged) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged) +public: + LinearLayoutAttached(QObject *parent); + + int stretchFactor() const { return _stretch; } + void setStretchFactor(int f); + Qt::Alignment alignment() const { return _alignment; } + void setAlignment(Qt::Alignment a); + +Q_SIGNALS: + void stretchChanged(QGraphicsLayoutItem*,int); + void alignmentChanged(QGraphicsLayoutItem*,Qt::Alignment); + +private: + int _stretch; + Qt::Alignment _alignment; +}; + +class GridLayoutAttached : public QObject +{ + Q_OBJECT + + Q_PROPERTY(int row READ row WRITE setRow) + Q_PROPERTY(int column READ column WRITE setColumn) + Q_PROPERTY(int rowSpan READ rowSpan WRITE setRowSpan) + Q_PROPERTY(int columnSpan READ columnSpan WRITE setColumnSpan) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) +public: + GridLayoutAttached(QObject *parent); + + int row() const { return _row; } + void setRow(int r); + + int column() const { return _column; } + void setColumn(int c); + + int rowSpan() const { return _rowspan; } + void setRowSpan(int rs); + + int columnSpan() const { return _colspan; } + void setColumnSpan(int cs); + + Qt::Alignment alignment() const { return _alignment; } + void setAlignment(Qt::Alignment a); + +private: + int _row; + int _column; + int _rowspan; + int _colspan; + Qt::Alignment _alignment; +}; + +QT_END_NAMESPACE + +QML_DECLARE_INTERFACE(QGraphicsLayoutItem) +QML_DECLARE_INTERFACE(QGraphicsLayout) +QML_DECLARE_TYPE(QGraphicsLinearLayoutStretchItemObject) +QML_DECLARE_TYPE(QGraphicsLinearLayoutObject) +QML_DECLARE_TYPEINFO(QGraphicsLinearLayoutObject, QML_HAS_ATTACHED_PROPERTIES) +QML_DECLARE_TYPE(QGraphicsGridLayoutObject) +QML_DECLARE_TYPEINFO(QGraphicsGridLayoutObject, QML_HAS_ATTACHED_PROPERTIES) + +QT_END_HEADER + +#endif // GRAPHICSLAYOUTS_H diff --git a/src/declarative/imports/widgets/graphicswidgets.cpp b/src/declarative/imports/widgets/graphicswidgets.cpp new file mode 100644 index 0000000..062e516 --- /dev/null +++ b/src/declarative/imports/widgets/graphicswidgets.cpp @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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$ +** +****************************************************************************/ diff --git a/src/declarative/imports/widgets/graphicswidgets_p.h b/src/declarative/imports/widgets/graphicswidgets_p.h new file mode 100644 index 0000000..2c2b707 --- /dev/null +++ b/src/declarative/imports/widgets/graphicswidgets_p.h @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 GRAPHICSWIDGETS_H +#define GRAPHICSWIDGETS_H + +#include + +#include +#include +#include +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QGraphicsView) +QML_DECLARE_TYPE_HASMETATYPE(QGraphicsScene) +QML_DECLARE_TYPE(QGraphicsWidget) +QML_DECLARE_TYPE(QGraphicsObject) +QML_DECLARE_INTERFACE_HASMETATYPE(QGraphicsItem) + +QT_END_HEADER + +#endif // GRAPHICSWIDGETS_H diff --git a/src/declarative/imports/widgets/widgets.cpp b/src/declarative/imports/widgets/widgets.cpp new file mode 100644 index 0000000..ec21cc4 --- /dev/null +++ b/src/declarative/imports/widgets/widgets.cpp @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 +#include + +#include "graphicslayouts_p.h" +#include "graphicswidgets_p.h" + +QT_BEGIN_NAMESPACE + +class QGraphicsViewDeclarativeUI : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QGraphicsScene *scene READ scene WRITE setScene) + Q_CLASSINFO("DefaultProperty", "scene") +public: + QGraphicsViewDeclarativeUI(QObject *other) : QObject(other) {} + + QGraphicsScene *scene() const { return static_cast(parent())->scene(); } + void setScene(QGraphicsScene *scene) + { + static_cast(parent())->setScene(scene); + } +}; + +class QGraphicsSceneDeclarativeUI : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QDeclarativeListProperty children READ children) + Q_CLASSINFO("DefaultProperty", "children") +public: + QGraphicsSceneDeclarativeUI(QObject *other) : QObject(other) {} + + QDeclarativeListProperty children() { return QDeclarativeListProperty(this->parent(), 0, children_append); } + +private: + static void children_append(QDeclarativeListProperty *prop, QObject *o) { + if (QGraphicsObject *go = qobject_cast(o)) + static_cast(prop->object)->addItem(go); + } +}; + +class QGraphicsWidgetDeclarativeUI : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QDeclarativeListProperty children READ children) + Q_PROPERTY(QGraphicsLayout *layout READ layout WRITE setLayout) + Q_CLASSINFO("DefaultProperty", "children") +public: + QGraphicsWidgetDeclarativeUI(QObject *other) : QObject(other) {} + + QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append); } + + QGraphicsLayout *layout() const { return static_cast(parent())->layout(); } + void setLayout(QGraphicsLayout *lo) + { + static_cast(parent())->setLayout(lo); + } + +private: + void setItemParent(QGraphicsItem *wid) + { + wid->setParentItem(static_cast(parent())); + } + + static void children_append(QDeclarativeListProperty *prop, QGraphicsItem *i) { + static_cast(prop->object)->setItemParent(i); + } +}; + +class QWidgetsQmlModule : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + virtual void registerTypes(const char *uri) + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.widgets")); + + QML_REGISTER_INTERFACE(QGraphicsLayoutItem); + QML_REGISTER_INTERFACE(QGraphicsLayout); + qmlRegisterType(uri,4,6,"QGraphicsLinearLayoutStretchItem"); + qmlRegisterType(uri,4,6,"QGraphicsLinearLayout"); + qmlRegisterType(uri,4,6,"QGraphicsGridLayout"); + qmlRegisterExtendedType(uri,4,6,"QGraphicsView"); + qmlRegisterExtendedType(uri,4,6,"QGraphicsScene"); + qmlRegisterExtendedType(uri,4,6,"QGraphicsWidget"); + QML_REGISTER_INTERFACE(QGraphicsItem); + } +}; + +QT_END_NAMESPACE + +#include "widgets.moc" + +Q_EXPORT_PLUGIN2(qtwidgetsqmlmodule, QT_PREPEND_NAMESPACE(QWidgetsQmlModule)); + diff --git a/src/declarative/imports/widgets/widgets.pro b/src/declarative/imports/widgets/widgets.pro new file mode 100644 index 0000000..230d398 --- /dev/null +++ b/src/declarative/imports/widgets/widgets.pro @@ -0,0 +1,20 @@ +TARGET = widgets +include(../qimportbase.pri) + +QT += declarative + +SOURCES += \ + graphicslayouts.cpp \ + widgets.cpp + +HEADERS += \ + graphicswidgets_p.h \ + graphicslayouts_p.h + +QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/Qt/widgets +target.path = $$[QT_INSTALL_IMPORTS]/Qt/widgets + +qmldir.files += $$QT_BUILD_TREE/imports/Qt/widgets/qmldir +qmldir.path += $$[QT_INSTALL_IMPORTS]/Qt/widgets + +INSTALLS += target qmldir diff --git a/src/declarative/libdeclarative.pro b/src/declarative/libdeclarative.pro new file mode 100644 index 0000000..4287e25 --- /dev/null +++ b/src/declarative/libdeclarative.pro @@ -0,0 +1,29 @@ +TARGET = QtDeclarative +QPRO_PWD = $$PWD +QT = core gui xml script network +contains(QT_CONFIG, svg): QT += svg +contains(QT_CONFIG, opengl): QT += opengl +DEFINES += QT_BUILD_DECLARATIVE_LIB QT_NO_URL_CAST_FROM_STRING +win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x66000000 +solaris-cc*:QMAKE_CXXFLAGS_RELEASE -= -O2 + +unix:QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui QtXml + +exists("qdeclarative_enable_gcov") { + QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage -fno-elide-constructors + LIBS += -lgcov +} + +include(../qbase.pri) + +#INCLUDEPATH -= $$QMAKE_INCDIR_QT/$$TARGET +#DESTDIR=. + +#modules +include(3rdparty/3rdparty.pri) +include(util/util.pri) +include(graphicsitems/graphicsitems.pri) +include(qml/qml.pri) +include(debugger/debugger.pri) + +symbian:TARGET.UID3=0x2001E623 diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index 418fd81..730fdc5 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -12,6 +12,5 @@ embedded:SUBDIRS *= gfxdrivers decorations mousedrivers kbddrivers symbian:SUBDIRS += s60 contains(QT_CONFIG, phonon): SUBDIRS *= phonon contains(QT_CONFIG, multimedia): SUBDIRS *= audio mediaservices -contains(QT_CONFIG, declarative): SUBDIRS *= qdeclarativemodules diff --git a/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp b/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp deleted file mode 100644 index 8becbf3..0000000 --- a/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 -#include -#include - -QT_BEGIN_NAMESPACE - -class QMultimediaQmlModule : public QDeclarativeExtensionPlugin -{ - Q_OBJECT -public: - virtual void registerTypes(const char *uri) - { - QtMultimedia::qRegisterDeclarativeElements(uri); - } -}; - -QT_END_NAMESPACE - -#include "multimedia.moc" - -Q_EXPORT_PLUGIN2(qmultimediaqmlmodule, QT_PREPEND_NAMESPACE(QMultimediaQmlModule)); - diff --git a/src/plugins/qdeclarativemodules/multimedia/multimedia.pro b/src/plugins/qdeclarativemodules/multimedia/multimedia.pro deleted file mode 100644 index d8ad18e..0000000 --- a/src/plugins/qdeclarativemodules/multimedia/multimedia.pro +++ /dev/null @@ -1,15 +0,0 @@ -TARGET = multimedia -include(../../qpluginbase.pri) - -QT += multimedia declarative - -SOURCES += multimedia.cpp - -QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/Qt/multimedia -target.path = $$[QT_INSTALL_IMPORTS]/Qt/multimedia - -qmldir.files += $$QT_BUILD_TREE/imports/Qt/multimedia/qmldir -qmldir.path += $$[QT_INSTALL_IMPORTS]/Qt/multimedia - -INSTALLS += target qmldir - diff --git a/src/plugins/qdeclarativemodules/qdeclarativemodules.pro b/src/plugins/qdeclarativemodules/qdeclarativemodules.pro deleted file mode 100644 index ae53578..0000000 --- a/src/plugins/qdeclarativemodules/qdeclarativemodules.pro +++ /dev/null @@ -1,7 +0,0 @@ -TEMPLATE = subdirs - -SUBDIRS += widgets - -contains(QT_CONFIG, multimedia): SUBDIRS += multimedia -contains(QT_CONFIG, webkit): SUBDIRS += webkitqmlplugin - diff --git a/src/plugins/qdeclarativemodules/webkitqmlplugin/plugin.cpp b/src/plugins/qdeclarativemodules/webkitqmlplugin/plugin.cpp deleted file mode 100644 index 2f6205d..0000000 --- a/src/plugins/qdeclarativemodules/webkitqmlplugin/plugin.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** 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 plugins 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 -#include - -#include "qdeclarativewebview_p.h" -#include "qdeclarativewebview_p_p.h" - -QT_BEGIN_NAMESPACE - -class WebKitQmlPlugin : public QDeclarativeExtensionPlugin -{ - Q_OBJECT -public: - virtual void registerTypes(const char *uri) - { - Q_ASSERT(QLatin1String(uri) == QLatin1String("org.webkit")); - qmlRegisterType(uri,1,0,"WebView"); - } -}; - -QT_END_NAMESPACE - -#include "plugin.moc" - -Q_EXPORT_PLUGIN2(webkitqmlplugin, QT_PREPEND_NAMESPACE(WebKitQmlPlugin)); - diff --git a/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview.cpp b/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview.cpp deleted file mode 100644 index 733ac86..0000000 --- a/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview.cpp +++ /dev/null @@ -1,1340 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 "qdeclarativewebview_p.h" -#include "qdeclarativewebview_p_p.h" - -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -QT_BEGIN_NAMESPACE - -static const int MAX_DOUBLECLICK_TIME=500; // XXX need better gesture system - -class QDeclarativeWebViewPrivate : public QDeclarativePaintedItemPrivate -{ - Q_DECLARE_PUBLIC(QDeclarativeWebView) - -public: - QDeclarativeWebViewPrivate() - : QDeclarativePaintedItemPrivate(), page(0), preferredwidth(0), preferredheight(0), - progress(1.0), status(QDeclarativeWebView::Null), pending(PendingNone), - newWindowComponent(0), newWindowParent(0), - pressTime(400), - rendering(true) - { - } - - QUrl url; // page url might be different if it has not loaded yet - QWebPage *page; - - int preferredwidth, preferredheight; - qreal progress; - QDeclarativeWebView::Status status; - QString statusText; - enum { PendingNone, PendingUrl, PendingHtml, PendingContent } pending; - QUrl pending_url; - QString pending_string; - QByteArray pending_data; - mutable QDeclarativeWebSettings settings; - QDeclarativeComponent *newWindowComponent; - QDeclarativeItem *newWindowParent; - - QBasicTimer pressTimer; - QPoint pressPoint; - int pressTime; // milliseconds before it's a "hold" - - - static void windowObjects_append(QDeclarativeListProperty *prop, QObject *o) { - static_cast(prop->data)->windowObjects.append(o); - static_cast(prop->data)->updateWindowObjects(); - } - - void updateWindowObjects(); - QObjectList windowObjects; - - bool rendering; -}; - -/*! - \qmlclass WebView QDeclarativeWebView - \since 4.7 - \brief The WebView item allows you to add web content to a canvas. - \inherits Item - - A WebView renders web content based on a URL. - - If the width and height of the item is not set, they will - dynamically adjust to a size appropriate for the content. - This width may be large for typical online web pages. - - If the preferredWidth is set, the width will be this amount or larger, - usually laying out the web content to fit the preferredWidth. - - \qml - import org.webkit 1.0 - - WebView { - url: "http://www.nokia.com" - width: 490 - height: 400 - scale: 0.5 - smooth: false - smoothCache: true - } - \endqml - - \image webview.png - - The item includes no scrolling, scaling, - toolbars, etc., those must be implemented around WebView. See the WebBrowser example - for a demonstration of this. -*/ - -/*! - \internal - \class QDeclarativeWebView - \brief The QDeclarativeWebView class allows you to add web content to a QDeclarativeView. - - A WebView renders web content base on a URL. - - \image webview.png - - The item includes no scrolling, scaling, - toolbars, etc., those must be implemented around WebView. See the WebBrowser example - for a demonstration of this. - - A QDeclarativeWebView object can be instantiated in Qml using the tag \l WebView. -*/ - -QDeclarativeWebView::QDeclarativeWebView(QDeclarativeItem *parent) - : QDeclarativePaintedItem(*(new QDeclarativeWebViewPrivate), parent) -{ - init(); -} - -QDeclarativeWebView::~QDeclarativeWebView() -{ - Q_D(QDeclarativeWebView); - delete d->page; -} - -void QDeclarativeWebView::init() -{ - Q_D(QDeclarativeWebView); - - QWebSettings::enablePersistentStorage(); - - setAcceptHoverEvents(true); - setAcceptedMouseButtons(Qt::LeftButton); - setFlag(QGraphicsItem::ItemHasNoContents, false); - - d->page = 0; -} - -void QDeclarativeWebView::componentComplete() -{ - QDeclarativePaintedItem::componentComplete(); - Q_D(QDeclarativeWebView); - switch (d->pending) { - case QDeclarativeWebViewPrivate::PendingUrl: - setUrl(d->pending_url); - break; - case QDeclarativeWebViewPrivate::PendingHtml: - setHtml(d->pending_string, d->pending_url); - break; - case QDeclarativeWebViewPrivate::PendingContent: - setContent(d->pending_data, d->pending_string, d->pending_url); - break; - default: - break; - } - d->pending = QDeclarativeWebViewPrivate::PendingNone; - d->updateWindowObjects(); -} - -QDeclarativeWebView::Status QDeclarativeWebView::status() const -{ - Q_D(const QDeclarativeWebView); - return d->status; -} - - -/*! - \qmlproperty real WebView::progress - This property holds the progress of loading the current URL, from 0 to 1. - - If you just want to know when progress gets to 1, use - WebView::onLoadFinished() or WebView::onLoadFailed() instead. -*/ -qreal QDeclarativeWebView::progress() const -{ - Q_D(const QDeclarativeWebView); - return d->progress; -} - -void QDeclarativeWebView::doLoadStarted() -{ - Q_D(QDeclarativeWebView); - - if (!d->url.isEmpty()) { - d->status = Loading; - emit statusChanged(d->status); - } - emit loadStarted(); -} - -void QDeclarativeWebView::doLoadProgress(int p) -{ - Q_D(QDeclarativeWebView); - if (d->progress == p/100.0) - return; - d->progress = p/100.0; - emit progressChanged(); -} - -void QDeclarativeWebView::pageUrlChanged() -{ - Q_D(QDeclarativeWebView); - - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - expandToWebPage(); - - if ((d->url.isEmpty() && page()->mainFrame()->url() != QUrl(QLatin1String("about:blank"))) - || (d->url != page()->mainFrame()->url() && !page()->mainFrame()->url().isEmpty())) - { - d->url = page()->mainFrame()->url(); - if (d->url == QUrl(QLatin1String("about:blank"))) - d->url = QUrl(); - emit urlChanged(); - } -} - -void QDeclarativeWebView::doLoadFinished(bool ok) -{ - Q_D(QDeclarativeWebView); - - if (title().isEmpty()) - pageUrlChanged(); // XXX bug 232556 - pages with no title never get urlChanged() - - if (ok) { - d->status = d->url.isEmpty() ? Null : Ready; - emit loadFinished(); - } else { - d->status = Error; - emit loadFailed(); - } - emit statusChanged(d->status); -} - -/*! - \qmlproperty url WebView::url - This property holds the URL to the page displayed in this item. It can be set, - but also can change spontaneously (eg. because of network redirection). - - If the url is empty, the page is blank. - - The url is always absolute (QML will resolve relative URL strings in the context - of the containing QML document). -*/ -QUrl QDeclarativeWebView::url() const -{ - Q_D(const QDeclarativeWebView); - return d->url; -} - -void QDeclarativeWebView::setUrl(const QUrl &url) -{ - Q_D(QDeclarativeWebView); - if (url == d->url) - return; - - if (isComponentComplete()) { - d->url = url; - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - QUrl seturl = url; - if (seturl.isEmpty()) - seturl = QUrl(QLatin1String("about:blank")); - - Q_ASSERT(!seturl.isRelative()); - - page()->mainFrame()->load(seturl); - - emit urlChanged(); - } else { - d->pending = d->PendingUrl; - d->pending_url = url; - } -} - -/*! - \qmlproperty int WebView::preferredWidth - This property holds the ideal width for displaying the current URL. -*/ -int QDeclarativeWebView::preferredWidth() const -{ - Q_D(const QDeclarativeWebView); - return d->preferredwidth; -} - -void QDeclarativeWebView::setPreferredWidth(int iw) -{ - Q_D(QDeclarativeWebView); - if (d->preferredwidth == iw) return; - d->preferredwidth = iw; - //expandToWebPage(); - emit preferredWidthChanged(); -} - -/*! - \qmlproperty int WebView::preferredHeight - This property holds the ideal height for displaying the current URL. - This only affects the area zoomed by heuristicZoom(). -*/ -int QDeclarativeWebView::preferredHeight() const -{ - Q_D(const QDeclarativeWebView); - return d->preferredheight; -} -void QDeclarativeWebView::setPreferredHeight(int ih) -{ - Q_D(QDeclarativeWebView); - if (d->preferredheight == ih) return; - d->preferredheight = ih; - emit preferredHeightChanged(); -} - -/*! - \qmlmethod bool WebView::evaluateJavaScript(string) - - Evaluates the \a scriptSource JavaScript inside the context of the - main web frame, and returns the result of the last executed statement. - - Note that this JavaScript does \e not have any access to QML objects - except as made available as windowObjects. -*/ -QVariant QDeclarativeWebView::evaluateJavaScript(const QString &scriptSource) -{ - return this->page()->mainFrame()->evaluateJavaScript(scriptSource); -} - -void QDeclarativeWebView::focusChanged(bool hasFocus) -{ - QFocusEvent e(hasFocus ? QEvent::FocusIn : QEvent::FocusOut); - page()->event(&e); - QDeclarativeItem::focusChanged(hasFocus); -} - -void QDeclarativeWebView::initialLayout() -{ - // nothing useful to do at this point -} - -void QDeclarativeWebView::noteContentsSizeChanged(const QSize&) -{ - expandToWebPage(); -} - -void QDeclarativeWebView::expandToWebPage() -{ - Q_D(QDeclarativeWebView); - QSize cs = page()->mainFrame()->contentsSize(); - if (cs.width() < d->preferredwidth) - cs.setWidth(d->preferredwidth); - if (cs.height() < d->preferredheight) - cs.setHeight(d->preferredheight); - if (widthValid()) - cs.setWidth(width()); - if (heightValid()) - cs.setHeight(height()); - if (cs != page()->viewportSize()) { - page()->setViewportSize(cs); - } - if (cs != contentsSize()) - setContentsSize(cs); -} - -void QDeclarativeWebView::geometryChanged(const QRectF &newGeometry, - const QRectF &oldGeometry) -{ - if (newGeometry.size() != oldGeometry.size()) - expandToWebPage(); - QDeclarativePaintedItem::geometryChanged(newGeometry, oldGeometry); -} - -void QDeclarativeWebView::paintPage(const QRect& r) -{ - dirtyCache(r); - update(); -} - -/*! - \qmlproperty list WebView::javaScriptWindowObjects - - This property is a list of object that are available from within - the webview's JavaScript context. - - The \a object will be inserted as a child of the frame's window - object, under the name given by the attached property \c WebView.windowObjectName. - - \qml - WebView { - javaScriptWindowObjects: Object { - WebView.windowObjectName: "coordinates" - } - } - \endqml - - Properties of the object will be exposed as JavaScript properties and slots as - JavaScript methods. - - If Javascript is not enabled for this page, then this property does nothing. -*/ -QDeclarativeListProperty QDeclarativeWebView::javaScriptWindowObjects() -{ - Q_D(QDeclarativeWebView); - return QDeclarativeListProperty(this, d, &QDeclarativeWebViewPrivate::windowObjects_append); -} - -QDeclarativeWebViewAttached *QDeclarativeWebView::qmlAttachedProperties(QObject *o) -{ - return new QDeclarativeWebViewAttached(o); -} - -void QDeclarativeWebViewPrivate::updateWindowObjects() -{ - Q_Q(QDeclarativeWebView); - if (!q->isComponentComplete() || !page) - return; - - for (int ii = 0; ii < windowObjects.count(); ++ii) { - QObject *object = windowObjects.at(ii); - QDeclarativeWebViewAttached *attached = static_cast(qmlAttachedPropertiesObject(object)); - if (attached && !attached->windowObjectName().isEmpty()) { - page->mainFrame()->addToJavaScriptWindowObject(attached->windowObjectName(), object); - } - } -} - -bool QDeclarativeWebView::renderingEnabled() const -{ - Q_D(const QDeclarativeWebView); - return d->rendering; -} - -void QDeclarativeWebView::setRenderingEnabled(bool enabled) -{ - Q_D(QDeclarativeWebView); - if (d->rendering == enabled) - return; - d->rendering = enabled; - emit renderingEnabledChanged(); - - setCacheFrozen(!enabled); - if (enabled) - clearCache(); -} - - -void QDeclarativeWebView::drawContents(QPainter *p, const QRect &r) -{ - Q_D(QDeclarativeWebView); - if (d->rendering) - page()->mainFrame()->render(p,r); -} - -QMouseEvent *QDeclarativeWebView::sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *e) -{ - QEvent::Type t; - switch(e->type()) { - default: - case QEvent::GraphicsSceneMousePress: - t = QEvent::MouseButtonPress; - break; - case QEvent::GraphicsSceneMouseRelease: - t = QEvent::MouseButtonRelease; - break; - case QEvent::GraphicsSceneMouseMove: - t = QEvent::MouseMove; - break; - case QGraphicsSceneEvent::GraphicsSceneMouseDoubleClick: - t = QEvent::MouseButtonDblClick; - break; - } - - QMouseEvent *me = new QMouseEvent(t, (e->pos()/contentsScale()).toPoint(), e->button(), e->buttons(), 0); - return me; -} - -QMouseEvent *QDeclarativeWebView::sceneHoverMoveEventToMouseEvent(QGraphicsSceneHoverEvent *e) -{ - QEvent::Type t = QEvent::MouseMove; - - QMouseEvent *me = new QMouseEvent(t, (e->pos()/contentsScale()).toPoint(), Qt::NoButton, Qt::NoButton, 0); - - return me; -} - - -/*! - \qmlsignal WebView::onDoubleClick(clickx,clicky) - - The WebView does not pass double-click events to the web engine, but rather - emits this signals. -*/ - -void QDeclarativeWebView::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) -{ - QMouseEvent *me = sceneMouseEventToMouseEvent(event); - emit doubleClick(me->x(),me->y()); - delete me; -} - -/*! - \qmlmethod bool WebView::heuristicZoom(clickX,clickY,maxzoom) - - Finds a zoom that: - \list - \i shows a whole item - \i includes (\a clickX, \a clickY) - \i fits into the preferredWidth and preferredHeight - \i zooms by no more than \a maxzoom - \i is more than 10% above the current zoom - \endlist - - If such a zoom exists, emits zoomTo(zoom,centerX,centerY) and returns true; otherwise, - no signal is emitted and returns false. -*/ -bool QDeclarativeWebView::heuristicZoom(int clickX, int clickY, qreal maxzoom) -{ - Q_D(QDeclarativeWebView); - if (contentsScale() >= maxzoom/zoomFactor()) - return false; - qreal ozf = contentsScale(); - QRect showarea = elementAreaAt(clickX, clickY, d->preferredwidth/maxzoom, d->preferredheight/maxzoom); - qreal z = qMin(qreal(d->preferredwidth)/showarea.width(),qreal(d->preferredheight)/showarea.height()); - if (z > maxzoom/zoomFactor()) - z = maxzoom/zoomFactor(); - if (z/ozf > 1.2) { - QRectF r(showarea.left()*z, showarea.top()*z, showarea.width()*z, showarea.height()*z); - emit zoomTo(z,r.x()+r.width()/2, r.y()+r.height()/2); - return true; - } else { - return false; - } -} - -/*! - \qmlproperty int WebView::pressGrabTime - - The number of milliseconds the user must press before the WebView - starts passing move events through to the web engine (rather than - letting other QML elements such as a Flickable take them). - - Defaults to 400ms. Set to 0 to always grab and pass move events to - the web engine. -*/ -int QDeclarativeWebView::pressGrabTime() const -{ - Q_D(const QDeclarativeWebView); - return d->pressTime; -} - -void QDeclarativeWebView::setPressGrabTime(int ms) -{ - Q_D(QDeclarativeWebView); - if (d->pressTime == ms) - return; - d->pressTime = ms; - emit pressGrabTimeChanged(); -} - -void QDeclarativeWebView::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - Q_D(QDeclarativeWebView); - - setFocus (true); - QMouseEvent *me = sceneMouseEventToMouseEvent(event); - - d->pressPoint = me->pos(); - if (d->pressTime) { - d->pressTimer.start(d->pressTime,this); - setKeepMouseGrab(false); - } else { - grabMouse(); - setKeepMouseGrab(true); - } - - page()->event(me); - event->setAccepted( -/* - It is not correct to send the press event upwards, if it is not accepted by WebKit - e.g. push button does not work, if done so as QGraphicsScene will not send the release event at all to WebKit - Might be a bug in WebKit, though - */ -#if 1 //QT_VERSION <= 0x040500 // XXX see bug 230835 - true -#else - me->isAccepted() -#endif - ); - delete me; - if (!event->isAccepted()) { - QDeclarativePaintedItem::mousePressEvent(event); - } -} - -void QDeclarativeWebView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) -{ - Q_D(QDeclarativeWebView); - - QMouseEvent *me = sceneMouseEventToMouseEvent(event); - page()->event(me); - d->pressTimer.stop(); - event->setAccepted( -/* - It is not correct to send the press event upwards, if it is not accepted by WebKit - e.g. push button does not work, if done so as QGraphicsScene will not send all the events to WebKit - */ -#if 1 //QT_VERSION <= 0x040500 // XXX see bug 230835 - true -#else - me->isAccepted() -#endif - ); - delete me; - if (!event->isAccepted()) { - QDeclarativePaintedItem::mouseReleaseEvent(event); - } - setKeepMouseGrab(false); - ungrabMouse(); -} - -void QDeclarativeWebView::timerEvent(QTimerEvent *event) -{ - Q_D(QDeclarativeWebView); - if (event->timerId() == d->pressTimer.timerId()) { - d->pressTimer.stop(); - grabMouse(); - setKeepMouseGrab(true); - } -} - -void QDeclarativeWebView::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - Q_D(QDeclarativeWebView); - - QMouseEvent *me = sceneMouseEventToMouseEvent(event); - if (d->pressTimer.isActive()) { - if ((me->pos() - d->pressPoint).manhattanLength() > QApplication::startDragDistance()) { - d->pressTimer.stop(); - } - } - if (keepMouseGrab()) { - page()->event(me); - event->setAccepted( -/* - It is not correct to send the press event upwards, if it is not accepted by WebKit - e.g. push button does not work, if done so as QGraphicsScene will not send the release event at all to WebKit - Might be a bug in WebKit, though - */ -#if 1 // QT_VERSION <= 0x040500 // XXX see bug 230835 - true -#else - me->isAccepted() -#endif - ); - } - delete me; - if (!event->isAccepted()) - QDeclarativePaintedItem::mouseMoveEvent(event); - -} -void QDeclarativeWebView::hoverMoveEvent (QGraphicsSceneHoverEvent * event) -{ - QMouseEvent *me = sceneHoverMoveEventToMouseEvent(event); - page()->event(me); - event->setAccepted( -#if QT_VERSION <= 0x040500 // XXX see bug 230835 - true -#else - me->isAccepted() -#endif - ); - delete me; - if (!event->isAccepted()) - QDeclarativePaintedItem::hoverMoveEvent(event); -} - -void QDeclarativeWebView::keyPressEvent(QKeyEvent* event) -{ - page()->event(event); - if (!event->isAccepted()) - QDeclarativePaintedItem::keyPressEvent(event); -} - -void QDeclarativeWebView::keyReleaseEvent(QKeyEvent* event) -{ - page()->event(event); - if (!event->isAccepted()) - QDeclarativePaintedItem::keyReleaseEvent(event); -} - -bool QDeclarativeWebView::sceneEvent(QEvent *event) -{ - if (event->type() == QEvent::KeyPress) { - QKeyEvent *k = static_cast(event); - if (k->key() == Qt::Key_Tab || k->key() == Qt::Key_Backtab) { - if (!(k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) { //### Add MetaModifier? - page()->event(event); - if (event->isAccepted()) - return true; - } - } - } - return QDeclarativePaintedItem::sceneEvent(event); -} - - -/*! - \qmlproperty action WebView::back - This property holds the action for causing the previous URL in the history to be displayed. -*/ -QAction *QDeclarativeWebView::backAction() const -{ - return page()->action(QWebPage::Back); -} - -/*! - \qmlproperty action WebView::forward - This property holds the action for causing the next URL in the history to be displayed. -*/ -QAction *QDeclarativeWebView::forwardAction() const -{ - return page()->action(QWebPage::Forward); -} - -/*! - \qmlproperty action WebView::reload - This property holds the action for reloading with the current URL -*/ -QAction *QDeclarativeWebView::reloadAction() const -{ - return page()->action(QWebPage::Reload); -} - -/*! - \qmlproperty action WebView::stop - This property holds the action for stopping loading with the current URL -*/ -QAction *QDeclarativeWebView::stopAction() const -{ - return page()->action(QWebPage::Stop); -} - -/*! - \qmlproperty real WebView::title - This property holds the title of the web page currently viewed - - By default, this property contains an empty string. -*/ -QString QDeclarativeWebView::title() const -{ - return page()->mainFrame()->title(); -} - - - -/*! - \qmlproperty pixmap WebView::icon - This property holds the icon associated with the web page currently viewed -*/ -QPixmap QDeclarativeWebView::icon() const -{ - return page()->mainFrame()->icon().pixmap(QSize(256,256)); -} - - -/*! - \qmlproperty real WebView::zoomFactor - This property holds the multiplier used to scale the contents of a Web page. -*/ -void QDeclarativeWebView::setZoomFactor(qreal factor) -{ - Q_D(QDeclarativeWebView); - if (factor == page()->mainFrame()->zoomFactor()) - return; - - page()->mainFrame()->setZoomFactor(factor); - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth*factor : width()*factor, - d->preferredheight>0 ? d->preferredheight*factor : height()*factor)); - expandToWebPage(); - - emit zoomFactorChanged(); -} - -qreal QDeclarativeWebView::zoomFactor() const -{ - return page()->mainFrame()->zoomFactor(); -} - -/*! - \qmlproperty string WebView::statusText - - This property is the current status suggested by the current web page. In a web browser, - such status is often shown in some kind of status bar. -*/ -void QDeclarativeWebView::setStatusText(const QString& s) -{ - Q_D(QDeclarativeWebView); - d->statusText = s; - emit statusTextChanged(); -} - -void QDeclarativeWebView::windowObjectCleared() -{ - Q_D(QDeclarativeWebView); - d->updateWindowObjects(); -} - -QString QDeclarativeWebView::statusText() const -{ - Q_D(const QDeclarativeWebView); - return d->statusText; -} - -QWebPage *QDeclarativeWebView::page() const -{ - Q_D(const QDeclarativeWebView); - - if (!d->page) { - QDeclarativeWebView *self = const_cast(this); - QWebPage *wp = new QDeclarativeWebPage(self); - - // QML items don't default to having a background, - // even though most we pages will set one anyway. - QPalette pal = QApplication::palette(); - pal.setBrush(QPalette::Base, QColor::fromRgbF(0, 0, 0, 0)); - wp->setPalette(pal); - - wp->setNetworkAccessManager(qmlEngine(this)->networkAccessManager()); - - self->setPage(wp); - - return wp; - } - - return d->page; -} - - -// The QObject interface to settings(). -/*! - \qmlproperty string WebView::settings.standardFontFamily - \qmlproperty string WebView::settings.fixedFontFamily - \qmlproperty string WebView::settings.serifFontFamily - \qmlproperty string WebView::settings.sansSerifFontFamily - \qmlproperty string WebView::settings.cursiveFontFamily - \qmlproperty string WebView::settings.fantasyFontFamily - - \qmlproperty int WebView::settings.minimumFontSize - \qmlproperty int WebView::settings.minimumLogicalFontSize - \qmlproperty int WebView::settings.defaultFontSize - \qmlproperty int WebView::settings.defaultFixedFontSize - - \qmlproperty bool WebView::settings.autoLoadImages - \qmlproperty bool WebView::settings.javascriptEnabled - \qmlproperty bool WebView::settings.javaEnabled - \qmlproperty bool WebView::settings.pluginsEnabled - \qmlproperty bool WebView::settings.privateBrowsingEnabled - \qmlproperty bool WebView::settings.javascriptCanOpenWindows - \qmlproperty bool WebView::settings.javascriptCanAccessClipboard - \qmlproperty bool WebView::settings.developerExtrasEnabled - \qmlproperty bool WebView::settings.linksIncludedInFocusChain - \qmlproperty bool WebView::settings.zoomTextOnly - \qmlproperty bool WebView::settings.printElementBackgrounds - \qmlproperty bool WebView::settings.offlineStorageDatabaseEnabled - \qmlproperty bool WebView::settings.offlineWebApplicationCacheEnabled - \qmlproperty bool WebView::settings.localStorageDatabaseEnabled - \qmlproperty bool WebView::settings.localContentCanAccessRemoteUrls - - These properties give access to the settings controlling the web view. - - See QWebSettings for details of these properties. - - \qml - WebView { - settings.pluginsEnabled: true - settings.standardFontFamily: "Arial" - ... - } - \endqml -*/ -QObject *QDeclarativeWebView::settingsObject() const -{ - Q_D(const QDeclarativeWebView); - d->settings.s = page()->settings(); - return &d->settings; -} - -void QDeclarativeWebView::setPage(QWebPage *page) -{ - Q_D(QDeclarativeWebView); - if (d->page == page) - return; - if (d->page) { - if (d->page->parent() == this) { - delete d->page; - } else { - d->page->disconnect(this); - } - } - d->page = page; - d->page->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - d->page->mainFrame()->setScrollBarPolicy(Qt::Horizontal,Qt::ScrollBarAlwaysOff); - d->page->mainFrame()->setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff); - connect(d->page,SIGNAL(repaintRequested(QRect)),this,SLOT(paintPage(QRect))); - connect(d->page->mainFrame(),SIGNAL(urlChanged(QUrl)),this,SLOT(pageUrlChanged())); - connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(titleChanged(QString))); - connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(iconChanged())); - connect(d->page->mainFrame(), SIGNAL(iconChanged()), this, SIGNAL(iconChanged())); - connect(d->page->mainFrame(), SIGNAL(contentsSizeChanged(QSize)), this, SLOT(noteContentsSizeChanged(QSize))); - connect(d->page->mainFrame(), SIGNAL(initialLayoutCompleted()), this, SLOT(initialLayout())); - - connect(d->page,SIGNAL(loadStarted()),this,SLOT(doLoadStarted())); - connect(d->page,SIGNAL(loadProgress(int)),this,SLOT(doLoadProgress(int))); - connect(d->page,SIGNAL(loadFinished(bool)),this,SLOT(doLoadFinished(bool))); - connect(d->page,SIGNAL(statusBarMessage(QString)),this,SLOT(setStatusText(QString))); - - connect(d->page->mainFrame(),SIGNAL(javaScriptWindowObjectCleared()),this,SLOT(windowObjectCleared())); -} - -/*! - \qmlsignal WebView::onLoadStarted() - - This handler is called when the web engine begins loading - a page. Later, WebView::onLoadFinished() or WebView::onLoadFailed() - will be emitted. -*/ - -/*! - \qmlsignal WebView::onLoadFinished() - - This handler is called when the web engine \e successfully - finishes loading a page, including any component content - (WebView::onLoadFailed() will be emitted otherwise). - - \sa progress -*/ - -/*! - \qmlsignal WebView::onLoadFailed() - - This handler is called when the web engine fails loading - a page or any component content - (WebView::onLoadFinished() will be emitted on success). -*/ - -void QDeclarativeWebView::load(const QNetworkRequest &request, - QNetworkAccessManager::Operation operation, - const QByteArray &body) -{ - page()->mainFrame()->load(request, operation, body); -} - -QString QDeclarativeWebView::html() const -{ - return page()->mainFrame()->toHtml(); -} - -/*! - \qmlproperty string WebView::html - This property holds HTML text set directly - - The html property can be set as a string. - - \qml - WebView { - html: "

This is HTML." - } - \endqml -*/ -void QDeclarativeWebView::setHtml(const QString &html, const QUrl &baseUrl) -{ - Q_D(QDeclarativeWebView); - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - if (isComponentComplete()) - page()->mainFrame()->setHtml(html, baseUrl); - else { - d->pending = d->PendingHtml; - d->pending_url = baseUrl; - d->pending_string = html; - } - emit htmlChanged(); -} - -void QDeclarativeWebView::setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl) -{ - Q_D(QDeclarativeWebView); - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - - if (isComponentComplete()) - page()->mainFrame()->setContent(data,mimeType,qmlContext(this)->resolvedUrl(baseUrl)); - else { - d->pending = d->PendingContent; - d->pending_url = baseUrl; - d->pending_string = mimeType; - d->pending_data = data; - } -} - -QWebHistory *QDeclarativeWebView::history() const -{ - return page()->history(); -} - -QWebSettings *QDeclarativeWebView::settings() const -{ - return page()->settings(); -} - -QDeclarativeWebView *QDeclarativeWebView::createWindow(QWebPage::WebWindowType type) -{ - Q_D(QDeclarativeWebView); - switch (type) { - case QWebPage::WebBrowserWindow: { - if (!d->newWindowComponent && d->newWindowParent) - qWarning("WebView::newWindowComponent not set - WebView::newWindowParent ignored"); - else if (d->newWindowComponent && !d->newWindowParent) - qWarning("WebView::newWindowParent not set - WebView::newWindowComponent ignored"); - else if (d->newWindowComponent && d->newWindowParent) { - QDeclarativeWebView *webview = 0; - QDeclarativeContext *windowContext = new QDeclarativeContext(qmlContext(this)); - - QObject *nobj = d->newWindowComponent->create(windowContext); - if (nobj) { - windowContext->setParent(nobj); - QDeclarativeItem *item = qobject_cast(nobj); - if (!item) { - delete nobj; - } else { - webview = item->findChild(); - if (!webview) { - delete item; - } else { - nobj->setParent(d->newWindowParent); - static_cast(item)->setParentItem(d->newWindowParent); - } - } - } else { - delete windowContext; - } - - return webview; - } - } - break; - case QWebPage::WebModalDialog: { - // Not supported - } - } - return 0; -} - -/*! - \qmlproperty component WebView::newWindowComponent - - This property holds the component to use for new windows. - The component must have a WebView somewhere in its structure. - - When the web engine requests a new window, it will be an instance of - this component. - - The parent of the new window is set by newWindowParent. It must be set. -*/ -QDeclarativeComponent *QDeclarativeWebView::newWindowComponent() const -{ - Q_D(const QDeclarativeWebView); - return d->newWindowComponent; -} - -void QDeclarativeWebView::setNewWindowComponent(QDeclarativeComponent *newWindow) -{ - Q_D(QDeclarativeWebView); - if (newWindow == d->newWindowComponent) - return; - d->newWindowComponent = newWindow; - emit newWindowComponentChanged(); -} - - -/*! - \qmlproperty item WebView::newWindowParent - - The parent item for new windows. - - \sa newWindowComponent -*/ -QDeclarativeItem *QDeclarativeWebView::newWindowParent() const -{ - Q_D(const QDeclarativeWebView); - return d->newWindowParent; -} - -void QDeclarativeWebView::setNewWindowParent(QDeclarativeItem *parent) -{ - Q_D(QDeclarativeWebView); - if (parent == d->newWindowParent) - return; - if (d->newWindowParent && parent) { - QList children = d->newWindowParent->childItems(); - for (int i = 0; i < children.count(); ++i) { - children.at(i)->setParentItem(parent); - } - } - d->newWindowParent = parent; - emit newWindowParentChanged(); -} - -/*! - Returns the area of the largest element at position (\a x,\a y) that is no larger - than \a maxwidth by \a maxheight pixels. - - May return an area larger in the case when no smaller element is at the position. -*/ -QRect QDeclarativeWebView::elementAreaAt(int x, int y, int maxwidth, int maxheight) const -{ - QWebHitTestResult hit = page()->mainFrame()->hitTestContent(QPoint(x,y)); - QRect rv = hit.boundingRect(); - QWebElement element = hit.enclosingBlockElement(); - if (maxwidth<=0) maxwidth = INT_MAX; - if (maxheight<=0) maxheight = INT_MAX; - while (!element.parent().isNull() && element.geometry().width() <= maxwidth && element.geometry().height() <= maxheight) { - rv = element.geometry(); - element = element.parent(); - } - return rv; -} - -/*! - \internal - \class QDeclarativeWebPage - \brief The QDeclarativeWebPage class is a QWebPage that can create QML plugins. - - \sa QDeclarativeWebView -*/ -QDeclarativeWebPage::QDeclarativeWebPage(QDeclarativeWebView *parent) : - QWebPage(parent) -{ -} - -QDeclarativeWebPage::~QDeclarativeWebPage() -{ -} - -void QDeclarativeWebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) -{ - qWarning() << sourceID << ':' << lineNumber << ':' << message; -} - -QString QDeclarativeWebPage::chooseFile(QWebFrame *originatingFrame, const QString& oldFile) -{ - // Not supported (it's modal) - Q_UNUSED(originatingFrame) - Q_UNUSED(oldFile) - return oldFile; -} - -void QDeclarativeWebPage::javaScriptAlert(QWebFrame *originatingFrame, const QString& msg) -{ - Q_UNUSED(originatingFrame) - emit viewItem()->alert(msg); -} - -bool QDeclarativeWebPage::javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg) -{ - // Not supported (it's modal) - Q_UNUSED(originatingFrame) - Q_UNUSED(msg) - return false; -} - -bool QDeclarativeWebPage::javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result) -{ - // Not supported (it's modal) - Q_UNUSED(originatingFrame) - Q_UNUSED(msg) - Q_UNUSED(defaultValue) - Q_UNUSED(result) - return false; -} - - -/* - Qt WebKit does not understand non-QWidget plugins, so dummy widgets - are created, parented to a single dummy tool window. - - The requirements for QML object plugins are input to the Qt WebKit - non-QWidget plugin support, which will obsolete this kludge. -*/ -class QWidget_Dummy_Plugin : public QWidget -{ - Q_OBJECT -public: - static QWidget *dummy_shared_parent() - { - static QWidget *dsp = 0; - if (!dsp) { - dsp = new QWidget(0,Qt::Tool); - dsp->setGeometry(-10000,-10000,0,0); - dsp->show(); - } - return dsp; - } - QWidget_Dummy_Plugin(const QUrl& url, QDeclarativeWebView *view, const QStringList ¶mNames, const QStringList ¶mValues) : - QWidget(dummy_shared_parent()), - propertyNames(paramNames), - propertyValues(paramValues), - webview(view) - { - QDeclarativeEngine *engine = qmlEngine(webview); - component = new QDeclarativeComponent(engine, url, this); - item = 0; - if (component->isLoading()) - connect(component, SIGNAL(statusChanged(QDeclarativeComponent::Status)), this, SLOT(qmlLoaded())); - else - qmlLoaded(); - } - -public Q_SLOTS: - void qmlLoaded() - { - if (component->isError()) { - // ### Could instead give these errors to the WebView to handle. - qWarning() << component->errors(); - return; - } - item = qobject_cast(component->create(qmlContext(webview))); - item->setParent(webview); - QString jsObjName; - for (int i=0; isetProperty(propertyNames[i].toUtf8(),propertyValues[i]); - if (propertyNames[i] == QLatin1String("objectname")) - jsObjName = propertyValues[i]; - } - } - if (!jsObjName.isNull()) { - QWebFrame *f = webview->page()->mainFrame(); - f->addToJavaScriptWindowObject(jsObjName, item); - } - resizeEvent(0); - delete component; - component = 0; - } - void resizeEvent(QResizeEvent*) - { - if (item) { - item->setX(x()); - item->setY(y()); - item->setWidth(width()); - item->setHeight(height()); - } - } - -private: - QDeclarativeComponent *component; - QDeclarativeItem *item; - QStringList propertyNames, propertyValues; - QDeclarativeWebView *webview; -}; - -QDeclarativeWebView *QDeclarativeWebPage::viewItem() -{ - return static_cast(parent()); -} - -QObject *QDeclarativeWebPage::createPlugin(const QString &, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues) -{ - QUrl comp = qmlContext(viewItem())->resolvedUrl(url); - return new QWidget_Dummy_Plugin(comp,viewItem(),paramNames,paramValues); -} - -QWebPage *QDeclarativeWebPage::createWindow(WebWindowType type) -{ - QDeclarativeWebView *newView = viewItem()->createWindow(type); - if (newView) - return newView->page(); - return 0; -} - -QT_END_NAMESPACE - -#include diff --git a/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p.h b/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p.h deleted file mode 100644 index 0bb5d29..0000000 --- a/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p.h +++ /dev/null @@ -1,285 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 QDECLARATIVEWEBVIEW_H -#define QDECLARATIVEWEBVIEW_H - -#include - -#include -#include -#include -#include - -QT_BEGIN_HEADER - -class QWebHistory; -class QWebSettings; - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) -class QDeclarativeWebViewPrivate; -class QNetworkRequest; -class QDeclarativeWebView; - -class Q_DECLARATIVE_EXPORT QDeclarativeWebPage : public QWebPage -{ - Q_OBJECT -public: - explicit QDeclarativeWebPage(QDeclarativeWebView *parent); - ~QDeclarativeWebPage(); -protected: - QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues); - QWebPage *createWindow(WebWindowType type); - void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID); - QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile); - void javaScriptAlert(QWebFrame *originatingFrame, const QString& msg); - bool javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg); - bool javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result); - -private: - QDeclarativeWebView *viewItem(); -}; - - -class QDeclarativeWebViewAttached; - -//### TODO: browser plugins - -class Q_DECLARATIVE_EXPORT QDeclarativeWebView : public QDeclarativePaintedItem -{ - Q_OBJECT - - Q_ENUMS(Status SelectionMode) - - Q_PROPERTY(QString title READ title NOTIFY titleChanged) - Q_PROPERTY(QPixmap icon READ icon NOTIFY iconChanged) - Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged) - Q_PROPERTY(QString statusText READ statusText NOTIFY statusTextChanged) - - Q_PROPERTY(QString html READ html WRITE setHtml NOTIFY htmlChanged) - - Q_PROPERTY(int pressGrabTime READ pressGrabTime WRITE setPressGrabTime NOTIFY pressGrabTimeChanged) - - Q_PROPERTY(int preferredWidth READ preferredWidth WRITE setPreferredWidth NOTIFY preferredWidthChanged) - Q_PROPERTY(int preferredHeight READ preferredHeight WRITE setPreferredHeight NOTIFY preferredHeightChanged) - Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) - Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged) - Q_PROPERTY(Status status READ status NOTIFY statusChanged) - - Q_PROPERTY(QAction* reload READ reloadAction CONSTANT) - Q_PROPERTY(QAction* back READ backAction CONSTANT) - Q_PROPERTY(QAction* forward READ forwardAction CONSTANT) - Q_PROPERTY(QAction* stop READ stopAction CONSTANT) - - Q_PROPERTY(QObject* settings READ settingsObject CONSTANT) - - Q_PROPERTY(QDeclarativeListProperty javaScriptWindowObjects READ javaScriptWindowObjects CONSTANT) - - Q_PROPERTY(QDeclarativeComponent* newWindowComponent READ newWindowComponent WRITE setNewWindowComponent NOTIFY newWindowComponentChanged) - Q_PROPERTY(QDeclarativeItem* newWindowParent READ newWindowParent WRITE setNewWindowParent NOTIFY newWindowParentChanged) - - Q_PROPERTY(bool renderingEnabled READ renderingEnabled WRITE setRenderingEnabled NOTIFY renderingEnabledChanged) - -public: - QDeclarativeWebView(QDeclarativeItem *parent=0); - ~QDeclarativeWebView(); - - QUrl url() const; - void setUrl(const QUrl &); - - QString title() const; - - QPixmap icon() const; - - qreal zoomFactor() const; - void setZoomFactor(qreal); - Q_INVOKABLE bool heuristicZoom(int clickX, int clickY, qreal maxzoom); - QRect elementAreaAt(int x, int y, int minwidth, int minheight) const; - - int pressGrabTime() const; - void setPressGrabTime(int); - - int preferredWidth() const; - void setPreferredWidth(int); - int preferredHeight() const; - void setPreferredHeight(int); - - enum Status { Null, Ready, Loading, Error }; - Status status() const; - qreal progress() const; - QString statusText() const; - - QAction *reloadAction() const; - QAction *backAction() const; - QAction *forwardAction() const; - QAction *stopAction() const; - - QWebPage *page() const; - void setPage(QWebPage *page); - - void load(const QNetworkRequest &request, - QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, - const QByteArray &body = QByteArray()); - - QString html() const; - - void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); - void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); - - QWebHistory *history() const; - QWebSettings *settings() const; - QObject *settingsObject() const; - - bool renderingEnabled() const; - void setRenderingEnabled(bool); - - QDeclarativeListProperty javaScriptWindowObjects(); - - static QDeclarativeWebViewAttached *qmlAttachedProperties(QObject *); - - QDeclarativeComponent *newWindowComponent() const; - void setNewWindowComponent(QDeclarativeComponent *newWindow); - QDeclarativeItem *newWindowParent() const; - void setNewWindowParent(QDeclarativeItem *newWindow); - -Q_SIGNALS: - void preferredWidthChanged(); - void preferredHeightChanged(); - void urlChanged(); - void progressChanged(); - void statusChanged(Status); - void titleChanged(const QString&); - void iconChanged(); - void statusTextChanged(); - void htmlChanged(); - void pressGrabTimeChanged(); - void zoomFactorChanged(); - void newWindowComponentChanged(); - void newWindowParentChanged(); - void renderingEnabledChanged(); - - void loadStarted(); - void loadFinished(); - void loadFailed(); - - void doubleClick(int clickX, int clickY); - - void zoomTo(qreal zoom, int centerX, int centerY); - - void alert(const QString& message); - -public Q_SLOTS: - QVariant evaluateJavaScript(const QString&); - -private Q_SLOTS: - void expandToWebPage(); - void paintPage(const QRect&); - void doLoadStarted(); - void doLoadProgress(int p); - void doLoadFinished(bool ok); - void setStatusText(const QString&); - void windowObjectCleared(); - void pageUrlChanged(); - void noteContentsSizeChanged(const QSize&); - void initialLayout(); - -protected: - void drawContents(QPainter *, const QRect &); - - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); - void timerEvent(QTimerEvent *event); - void hoverMoveEvent (QGraphicsSceneHoverEvent * event); - void keyPressEvent(QKeyEvent* event); - void keyReleaseEvent(QKeyEvent* event); - virtual void geometryChanged(const QRectF &newGeometry, - const QRectF &oldGeometry); - virtual void focusChanged(bool); - virtual bool sceneEvent(QEvent *event); - QDeclarativeWebView *createWindow(QWebPage::WebWindowType type); - -private: - void init(); - virtual void componentComplete(); - Q_DISABLE_COPY(QDeclarativeWebView) - Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeWebView) - QMouseEvent *sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *); - QMouseEvent *sceneHoverMoveEventToMouseEvent(QGraphicsSceneHoverEvent *); - friend class QDeclarativeWebPage; -}; - -class QDeclarativeWebViewAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QString windowObjectName READ windowObjectName WRITE setWindowObjectName) -public: - QDeclarativeWebViewAttached(QObject *parent) - : QObject(parent) - { - } - - QString windowObjectName() const - { - return m_windowObjectName; - } - - void setWindowObjectName(const QString &n) - { - m_windowObjectName = n; - } - -private: - QString m_windowObjectName; -}; - - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QDeclarativeWebView) -QML_DECLARE_TYPEINFO(QDeclarativeWebView, QML_HAS_ATTACHED_PROPERTIES) - -QT_END_HEADER - -#endif diff --git a/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p_p.h b/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p_p.h deleted file mode 100644 index 258b472..0000000 --- a/src/plugins/qdeclarativemodules/webkitqmlplugin/qdeclarativewebview_p_p.h +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 QDECLARATIVEWEBVIEW_P_H -#define QDECLARATIVEWEBVIEW_P_H - -#include - -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QDeclarativeWebSettings : public QObject { - Q_OBJECT - - Q_PROPERTY(QString standardFontFamily READ standardFontFamily WRITE setStandardFontFamily) - Q_PROPERTY(QString fixedFontFamily READ fixedFontFamily WRITE setFixedFontFamily) - Q_PROPERTY(QString serifFontFamily READ serifFontFamily WRITE setSerifFontFamily) - Q_PROPERTY(QString sansSerifFontFamily READ sansSerifFontFamily WRITE setSansSerifFontFamily) - Q_PROPERTY(QString cursiveFontFamily READ cursiveFontFamily WRITE setCursiveFontFamily) - Q_PROPERTY(QString fantasyFontFamily READ fantasyFontFamily WRITE setFantasyFontFamily) - - Q_PROPERTY(int minimumFontSize READ minimumFontSize WRITE setMinimumFontSize) - Q_PROPERTY(int minimumLogicalFontSize READ minimumLogicalFontSize WRITE setMinimumLogicalFontSize) - Q_PROPERTY(int defaultFontSize READ defaultFontSize WRITE setDefaultFontSize) - Q_PROPERTY(int defaultFixedFontSize READ defaultFixedFontSize WRITE setDefaultFixedFontSize) - - Q_PROPERTY(bool autoLoadImages READ autoLoadImages WRITE setAutoLoadImages) - Q_PROPERTY(bool javascriptEnabled READ javascriptEnabled WRITE setJavascriptEnabled) - Q_PROPERTY(bool javaEnabled READ javaEnabled WRITE setJavaEnabled) - Q_PROPERTY(bool pluginsEnabled READ pluginsEnabled WRITE setPluginsEnabled) - Q_PROPERTY(bool privateBrowsingEnabled READ privateBrowsingEnabled WRITE setPrivateBrowsingEnabled) - Q_PROPERTY(bool javascriptCanOpenWindows READ javascriptCanOpenWindows WRITE setJavascriptCanOpenWindows) - Q_PROPERTY(bool javascriptCanAccessClipboard READ javascriptCanAccessClipboard WRITE setJavascriptCanAccessClipboard) - Q_PROPERTY(bool developerExtrasEnabled READ developerExtrasEnabled WRITE setDeveloperExtrasEnabled) - Q_PROPERTY(bool linksIncludedInFocusChain READ linksIncludedInFocusChain WRITE setLinksIncludedInFocusChain) - Q_PROPERTY(bool zoomTextOnly READ zoomTextOnly WRITE setZoomTextOnly) - Q_PROPERTY(bool printElementBackgrounds READ printElementBackgrounds WRITE setPrintElementBackgrounds) - Q_PROPERTY(bool offlineStorageDatabaseEnabled READ offlineStorageDatabaseEnabled WRITE setOfflineStorageDatabaseEnabled) - Q_PROPERTY(bool offlineWebApplicationCacheEnabled READ offlineWebApplicationCacheEnabled WRITE setOfflineWebApplicationCacheEnabled) - Q_PROPERTY(bool localStorageDatabaseEnabled READ localStorageDatabaseEnabled WRITE setLocalStorageDatabaseEnabled) - Q_PROPERTY(bool localContentCanAccessRemoteUrls READ localContentCanAccessRemoteUrls WRITE setLocalContentCanAccessRemoteUrls) - -public: - QDeclarativeWebSettings() {} - - QString standardFontFamily() const { return s->fontFamily(QWebSettings::StandardFont); } - void setStandardFontFamily(const QString& f) { s->setFontFamily(QWebSettings::StandardFont,f); } - QString fixedFontFamily() const { return s->fontFamily(QWebSettings::FixedFont); } - void setFixedFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FixedFont,f); } - QString serifFontFamily() const { return s->fontFamily(QWebSettings::SerifFont); } - void setSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SerifFont,f); } - QString sansSerifFontFamily() const { return s->fontFamily(QWebSettings::SansSerifFont); } - void setSansSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SansSerifFont,f); } - QString cursiveFontFamily() const { return s->fontFamily(QWebSettings::CursiveFont); } - void setCursiveFontFamily(const QString& f) { s->setFontFamily(QWebSettings::CursiveFont,f); } - QString fantasyFontFamily() const { return s->fontFamily(QWebSettings::FantasyFont); } - void setFantasyFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FantasyFont,f); } - - int minimumFontSize() const { return s->fontSize(QWebSettings::MinimumFontSize); } - void setMinimumFontSize(int size) { s->setFontSize(QWebSettings::MinimumFontSize,size); } - int minimumLogicalFontSize() const { return s->fontSize(QWebSettings::MinimumLogicalFontSize); } - void setMinimumLogicalFontSize(int size) { s->setFontSize(QWebSettings::MinimumLogicalFontSize,size); } - int defaultFontSize() const { return s->fontSize(QWebSettings::DefaultFontSize); } - void setDefaultFontSize(int size) { s->setFontSize(QWebSettings::DefaultFontSize,size); } - int defaultFixedFontSize() const { return s->fontSize(QWebSettings::DefaultFixedFontSize); } - void setDefaultFixedFontSize(int size) { s->setFontSize(QWebSettings::DefaultFixedFontSize,size); } - - bool autoLoadImages() const { return s->testAttribute(QWebSettings::AutoLoadImages); } - void setAutoLoadImages(bool on) { s->setAttribute(QWebSettings::AutoLoadImages, on); } - bool javascriptEnabled() const { return s->testAttribute(QWebSettings::JavascriptEnabled); } - void setJavascriptEnabled(bool on) { s->setAttribute(QWebSettings::JavascriptEnabled, on); } - bool javaEnabled() const { return s->testAttribute(QWebSettings::JavaEnabled); } - void setJavaEnabled(bool on) { s->setAttribute(QWebSettings::JavaEnabled, on); } - bool pluginsEnabled() const { return s->testAttribute(QWebSettings::PluginsEnabled); } - void setPluginsEnabled(bool on) { s->setAttribute(QWebSettings::PluginsEnabled, on); } - bool privateBrowsingEnabled() const { return s->testAttribute(QWebSettings::PrivateBrowsingEnabled); } - void setPrivateBrowsingEnabled(bool on) { s->setAttribute(QWebSettings::PrivateBrowsingEnabled, on); } - bool javascriptCanOpenWindows() const { return s->testAttribute(QWebSettings::JavascriptCanOpenWindows); } - void setJavascriptCanOpenWindows(bool on) { s->setAttribute(QWebSettings::JavascriptCanOpenWindows, on); } - bool javascriptCanAccessClipboard() const { return s->testAttribute(QWebSettings::JavascriptCanAccessClipboard); } - void setJavascriptCanAccessClipboard(bool on) { s->setAttribute(QWebSettings::JavascriptCanAccessClipboard, on); } - bool developerExtrasEnabled() const { return s->testAttribute(QWebSettings::DeveloperExtrasEnabled); } - void setDeveloperExtrasEnabled(bool on) { s->setAttribute(QWebSettings::DeveloperExtrasEnabled, on); } - bool linksIncludedInFocusChain() const { return s->testAttribute(QWebSettings::LinksIncludedInFocusChain); } - void setLinksIncludedInFocusChain(bool on) { s->setAttribute(QWebSettings::LinksIncludedInFocusChain, on); } - bool zoomTextOnly() const { return s->testAttribute(QWebSettings::ZoomTextOnly); } - void setZoomTextOnly(bool on) { s->setAttribute(QWebSettings::ZoomTextOnly, on); } - bool printElementBackgrounds() const { return s->testAttribute(QWebSettings::PrintElementBackgrounds); } - void setPrintElementBackgrounds(bool on) { s->setAttribute(QWebSettings::PrintElementBackgrounds, on); } - bool offlineStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::OfflineStorageDatabaseEnabled); } - void setOfflineStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, on); } - bool offlineWebApplicationCacheEnabled() const { return s->testAttribute(QWebSettings::OfflineWebApplicationCacheEnabled); } - void setOfflineWebApplicationCacheEnabled(bool on) { s->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, on); } - bool localStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::LocalStorageDatabaseEnabled); } - void setLocalStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, on); } - bool localContentCanAccessRemoteUrls() const { return s->testAttribute(QWebSettings::LocalContentCanAccessRemoteUrls); } - void setLocalContentCanAccessRemoteUrls(bool on) { s->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, on); } - - QWebSettings *s; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QDeclarativeWebSettings) - -QT_END_HEADER - -#endif diff --git a/src/plugins/qdeclarativemodules/webkitqmlplugin/webkitqmlplugin.pro b/src/plugins/qdeclarativemodules/webkitqmlplugin/webkitqmlplugin.pro deleted file mode 100644 index 37fe37c..0000000 --- a/src/plugins/qdeclarativemodules/webkitqmlplugin/webkitqmlplugin.pro +++ /dev/null @@ -1,18 +0,0 @@ -TARGET = webkitqmlplugin -include(../../qpluginbase.pri) - -contains(QT_CONFIG, webkit) { - QT += webkit declarative - - SOURCES += qdeclarativewebview.cpp plugin.cpp - HEADERS += qdeclarativewebview_p.h - HEADERS += qdeclarativewebview_p_p.h - - QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/org/webkit - target.path = $$[QT_INSTALL_IMPORTS]/org/webkit - - qmldir.files += $$QT_BUILD_TREE/imports/org/webkit/qmldir - qmldir.path += $$[QT_INSTALL_IMPORTS]/org/webkit - - INSTALLS += target qmldir -} diff --git a/src/plugins/qdeclarativemodules/widgets/graphicslayouts.cpp b/src/plugins/qdeclarativemodules/widgets/graphicslayouts.cpp deleted file mode 100644 index fc15ad2..0000000 --- a/src/plugins/qdeclarativemodules/widgets/graphicslayouts.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 "graphicslayouts_p.h" - -#include -#include - -QT_BEGIN_NAMESPACE - -LinearLayoutAttached::LinearLayoutAttached(QObject *parent) -: QObject(parent), _stretch(1), _alignment(Qt::AlignCenter) -{ -} - -void LinearLayoutAttached::setStretchFactor(int f) -{ - if (_stretch == f) - return; - - _stretch = f; - emit stretchChanged(reinterpret_cast(parent()), _stretch); -} - -void LinearLayoutAttached::setAlignment(Qt::Alignment a) -{ - if (_alignment == a) - return; - - _alignment = a; - emit alignmentChanged(reinterpret_cast(parent()), _alignment); -} - -QGraphicsLinearLayoutStretchItemObject::QGraphicsLinearLayoutStretchItemObject(QObject *parent) - : QObject(parent) -{ -} - -QSizeF QGraphicsLinearLayoutStretchItemObject::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const -{ -Q_UNUSED(which); -Q_UNUSED(constraint); -return QSizeF(); -} - - -QGraphicsLinearLayoutObject::QGraphicsLinearLayoutObject(QObject *parent) -: QObject(parent) -{ -} - -QGraphicsLinearLayoutObject::~QGraphicsLinearLayoutObject() -{ -} - -void QGraphicsLinearLayoutObject::insertLayoutItem(int index, QGraphicsLayoutItem *item) -{ -insertItem(index, item); - -//connect attached properties -if (LinearLayoutAttached *obj = attachedProperties.value(item)) { - setStretchFactor(item, obj->stretchFactor()); - setAlignment(item, obj->alignment()); - QObject::connect(obj, SIGNAL(stretchChanged(QGraphicsLayoutItem*,int)), - this, SLOT(updateStretch(QGraphicsLayoutItem*,int))); - QObject::connect(obj, SIGNAL(alignmentChanged(QGraphicsLayoutItem*,Qt::Alignment)), - this, SLOT(updateAlignment(QGraphicsLayoutItem*,Qt::Alignment))); - //### need to disconnect when widget is removed? -} -} - -//### is there a better way to do this? -void QGraphicsLinearLayoutObject::clearChildren() -{ -for (int i = 0; i < count(); ++i) - removeAt(i); -} - -void QGraphicsLinearLayoutObject::updateStretch(QGraphicsLayoutItem *item, int stretch) -{ -QGraphicsLinearLayout::setStretchFactor(item, stretch); -} - -void QGraphicsLinearLayoutObject::updateAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment) -{ -QGraphicsLinearLayout::setAlignment(item, alignment); -} - -QHash QGraphicsLinearLayoutObject::attachedProperties; -LinearLayoutAttached *QGraphicsLinearLayoutObject::qmlAttachedProperties(QObject *obj) -{ -// ### This is not allowed - you must attach to any object -if (!qobject_cast(obj)) - return 0; -LinearLayoutAttached *rv = new LinearLayoutAttached(obj); -attachedProperties.insert(qobject_cast(obj), rv); -return rv; -} - -////////////////////////////////////////////////////////////////////////////////////////////////////// -// QGraphicsGridLayout-related classes -////////////////////////////////////////////////////////////////////////////////////////////////////// -GridLayoutAttached::GridLayoutAttached(QObject *parent) -: QObject(parent), _row(-1), _column(-1), _rowspan(1), _colspan(1), _alignment(-1) -{ -} - -void GridLayoutAttached::setRow(int r) -{ - if (_row == r) - return; - - _row = r; - //emit rowChanged(reinterpret_cast(parent()), _row); -} - -void GridLayoutAttached::setColumn(int c) -{ - if (_column == c) - return; - - _column = c; - //emit columnChanged(reinterpret_cast(parent()), _column); -} - -void GridLayoutAttached::setRowSpan(int rs) -{ - if (_rowspan == rs) - return; - - _rowspan = rs; - //emit rowSpanChanged(reinterpret_cast(parent()), _rowSpan); -} - -void GridLayoutAttached::setColumnSpan(int cs) -{ - if (_colspan == cs) - return; - - _colspan = cs; - //emit columnSpanChanged(reinterpret_cast(parent()), _columnSpan); -} - -void GridLayoutAttached::setAlignment(Qt::Alignment a) -{ - if (_alignment == a) - return; - - _alignment = a; - //emit alignmentChanged(reinterpret_cast(parent()), _alignment); -} - -QGraphicsGridLayoutObject::QGraphicsGridLayoutObject(QObject *parent) -: QObject(parent) -{ -} - -QGraphicsGridLayoutObject::~QGraphicsGridLayoutObject() -{ -} - -void QGraphicsGridLayoutObject::addWidget(QGraphicsWidget *wid) -{ -//use attached properties -if (QObject *obj = attachedProperties.value(qobject_cast(wid))) { - int row = static_cast(obj)->row(); - int column = static_cast(obj)->column(); - int rowSpan = static_cast(obj)->rowSpan(); - int columnSpan = static_cast(obj)->columnSpan(); - if (row == -1 || column == -1) { - qWarning() << "Must set row and column for an item in a grid layout"; - return; - } - addItem(wid, row, column, rowSpan, columnSpan); -} -} - -void QGraphicsGridLayoutObject::addLayoutItem(QGraphicsLayoutItem *item) -{ -//use attached properties -if (GridLayoutAttached *obj = attachedProperties.value(item)) { - int row = obj->row(); - int column = obj->column(); - int rowSpan = obj->rowSpan(); - int columnSpan = obj->columnSpan(); - Qt::Alignment alignment = obj->alignment(); - if (row == -1 || column == -1) { - qWarning() << "Must set row and column for an item in a grid layout"; - return; - } - addItem(item, row, column, rowSpan, columnSpan); - if (alignment != -1) - setAlignment(item,alignment); -} -} - -//### is there a better way to do this? -void QGraphicsGridLayoutObject::clearChildren() -{ -for (int i = 0; i < count(); ++i) - removeAt(i); -} - -qreal QGraphicsGridLayoutObject::spacing() const -{ -if (verticalSpacing() == horizontalSpacing()) - return verticalSpacing(); -return -1; //### -} - -QHash QGraphicsGridLayoutObject::attachedProperties; -GridLayoutAttached *QGraphicsGridLayoutObject::qmlAttachedProperties(QObject *obj) -{ -// ### This is not allowed - you must attach to any object -if (!qobject_cast(obj)) - return 0; -GridLayoutAttached *rv = new GridLayoutAttached(obj); -attachedProperties.insert(qobject_cast(obj), rv); -return rv; -} - -QT_END_NAMESPACE diff --git a/src/plugins/qdeclarativemodules/widgets/graphicslayouts_p.h b/src/plugins/qdeclarativemodules/widgets/graphicslayouts_p.h deleted file mode 100644 index f9b9ae8..0000000 --- a/src/plugins/qdeclarativemodules/widgets/graphicslayouts_p.h +++ /dev/null @@ -1,226 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 GRAPHICSLAYOUTS_H -#define GRAPHICSLAYOUTS_H - -#include "graphicswidgets_p.h" - -#include -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QGraphicsLinearLayoutStretchItemObject : public QObject, public QGraphicsLayoutItem -{ - Q_OBJECT - Q_INTERFACES(QGraphicsLayoutItem) -public: - QGraphicsLinearLayoutStretchItemObject(QObject *parent = 0); - - virtual QSizeF sizeHint(Qt::SizeHint, const QSizeF &) const; -}; - -class LinearLayoutAttached; -class QGraphicsLinearLayoutObject : public QObject, public QGraphicsLinearLayout -{ - Q_OBJECT - Q_INTERFACES(QGraphicsLayout QGraphicsLayoutItem) - - Q_PROPERTY(QDeclarativeListProperty children READ children) - Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) - Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing) - Q_CLASSINFO("DefaultProperty", "children") -public: - QGraphicsLinearLayoutObject(QObject * = 0); - ~QGraphicsLinearLayoutObject(); - - QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append, children_count, children_at, children_clear); } - - static LinearLayoutAttached *qmlAttachedProperties(QObject *); - -private Q_SLOTS: - void updateStretch(QGraphicsLayoutItem*,int); - void updateAlignment(QGraphicsLayoutItem*,Qt::Alignment); - -private: - friend class LinearLayoutAttached; - void clearChildren(); - void insertLayoutItem(int, QGraphicsLayoutItem *); - static QHash attachedProperties; - - static void children_append(QDeclarativeListProperty *prop, QGraphicsLayoutItem *item) { - static_cast(prop->object)->insertLayoutItem(-1, item); - } - - static void children_clear(QDeclarativeListProperty *prop) { - static_cast(prop->object)->clearChildren(); - } - - static int children_count(QDeclarativeListProperty *prop) { - return static_cast(prop->object)->count(); - } - - static QGraphicsLayoutItem *children_at(QDeclarativeListProperty *prop, int index) { - return static_cast(prop->object)->itemAt(index); - } -}; - -class GridLayoutAttached; -class QGraphicsGridLayoutObject : public QObject, public QGraphicsGridLayout -{ - Q_OBJECT - Q_INTERFACES(QGraphicsLayout QGraphicsLayoutItem) - - Q_PROPERTY(QDeclarativeListProperty children READ children) - Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing) - Q_PROPERTY(qreal verticalSpacing READ verticalSpacing WRITE setVerticalSpacing) - Q_PROPERTY(qreal horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing) - Q_CLASSINFO("DefaultProperty", "children") -public: - QGraphicsGridLayoutObject(QObject * = 0); - ~QGraphicsGridLayoutObject(); - - QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append, children_count, children_at, children_clear); } - - qreal spacing() const; - - static GridLayoutAttached *qmlAttachedProperties(QObject *); - -private: - friend class GraphicsLayoutAttached; - void addWidget(QGraphicsWidget *); - void clearChildren(); - void addLayoutItem(QGraphicsLayoutItem *); - static QHash attachedProperties; - - static void children_append(QDeclarativeListProperty *prop, QGraphicsLayoutItem *item) { - static_cast(prop->object)->addLayoutItem(item); - } - - static void children_clear(QDeclarativeListProperty *prop) { - static_cast(prop->object)->clearChildren(); - } - - static int children_count(QDeclarativeListProperty *prop) { - return static_cast(prop->object)->count(); - } - - static QGraphicsLayoutItem *children_at(QDeclarativeListProperty *prop, int index) { - return static_cast(prop->object)->itemAt(index); - } -}; - -class LinearLayoutAttached : public QObject -{ - Q_OBJECT - - Q_PROPERTY(int stretchFactor READ stretchFactor WRITE setStretchFactor NOTIFY stretchChanged) - Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged) -public: - LinearLayoutAttached(QObject *parent); - - int stretchFactor() const { return _stretch; } - void setStretchFactor(int f); - Qt::Alignment alignment() const { return _alignment; } - void setAlignment(Qt::Alignment a); - -Q_SIGNALS: - void stretchChanged(QGraphicsLayoutItem*,int); - void alignmentChanged(QGraphicsLayoutItem*,Qt::Alignment); - -private: - int _stretch; - Qt::Alignment _alignment; -}; - -class GridLayoutAttached : public QObject -{ - Q_OBJECT - - Q_PROPERTY(int row READ row WRITE setRow) - Q_PROPERTY(int column READ column WRITE setColumn) - Q_PROPERTY(int rowSpan READ rowSpan WRITE setRowSpan) - Q_PROPERTY(int columnSpan READ columnSpan WRITE setColumnSpan) - Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) -public: - GridLayoutAttached(QObject *parent); - - int row() const { return _row; } - void setRow(int r); - - int column() const { return _column; } - void setColumn(int c); - - int rowSpan() const { return _rowspan; } - void setRowSpan(int rs); - - int columnSpan() const { return _colspan; } - void setColumnSpan(int cs); - - Qt::Alignment alignment() const { return _alignment; } - void setAlignment(Qt::Alignment a); - -private: - int _row; - int _column; - int _rowspan; - int _colspan; - Qt::Alignment _alignment; -}; - -QT_END_NAMESPACE - -QML_DECLARE_INTERFACE(QGraphicsLayoutItem) -QML_DECLARE_INTERFACE(QGraphicsLayout) -QML_DECLARE_TYPE(QGraphicsLinearLayoutStretchItemObject) -QML_DECLARE_TYPE(QGraphicsLinearLayoutObject) -QML_DECLARE_TYPEINFO(QGraphicsLinearLayoutObject, QML_HAS_ATTACHED_PROPERTIES) -QML_DECLARE_TYPE(QGraphicsGridLayoutObject) -QML_DECLARE_TYPEINFO(QGraphicsGridLayoutObject, QML_HAS_ATTACHED_PROPERTIES) - -QT_END_HEADER - -#endif // GRAPHICSLAYOUTS_H diff --git a/src/plugins/qdeclarativemodules/widgets/graphicswidgets.cpp b/src/plugins/qdeclarativemodules/widgets/graphicswidgets.cpp deleted file mode 100644 index 062e516..0000000 --- a/src/plugins/qdeclarativemodules/widgets/graphicswidgets.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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$ -** -****************************************************************************/ diff --git a/src/plugins/qdeclarativemodules/widgets/graphicswidgets_p.h b/src/plugins/qdeclarativemodules/widgets/graphicswidgets_p.h deleted file mode 100644 index 2c2b707..0000000 --- a/src/plugins/qdeclarativemodules/widgets/graphicswidgets_p.h +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 GRAPHICSWIDGETS_H -#define GRAPHICSWIDGETS_H - -#include - -#include -#include -#include -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QGraphicsView) -QML_DECLARE_TYPE_HASMETATYPE(QGraphicsScene) -QML_DECLARE_TYPE(QGraphicsWidget) -QML_DECLARE_TYPE(QGraphicsObject) -QML_DECLARE_INTERFACE_HASMETATYPE(QGraphicsItem) - -QT_END_HEADER - -#endif // GRAPHICSWIDGETS_H diff --git a/src/plugins/qdeclarativemodules/widgets/widgets.cpp b/src/plugins/qdeclarativemodules/widgets/widgets.cpp deleted file mode 100644 index ec21cc4..0000000 --- a/src/plugins/qdeclarativemodules/widgets/widgets.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 -#include - -#include "graphicslayouts_p.h" -#include "graphicswidgets_p.h" - -QT_BEGIN_NAMESPACE - -class QGraphicsViewDeclarativeUI : public QObject -{ - Q_OBJECT - - Q_PROPERTY(QGraphicsScene *scene READ scene WRITE setScene) - Q_CLASSINFO("DefaultProperty", "scene") -public: - QGraphicsViewDeclarativeUI(QObject *other) : QObject(other) {} - - QGraphicsScene *scene() const { return static_cast(parent())->scene(); } - void setScene(QGraphicsScene *scene) - { - static_cast(parent())->setScene(scene); - } -}; - -class QGraphicsSceneDeclarativeUI : public QObject -{ - Q_OBJECT - - Q_PROPERTY(QDeclarativeListProperty children READ children) - Q_CLASSINFO("DefaultProperty", "children") -public: - QGraphicsSceneDeclarativeUI(QObject *other) : QObject(other) {} - - QDeclarativeListProperty children() { return QDeclarativeListProperty(this->parent(), 0, children_append); } - -private: - static void children_append(QDeclarativeListProperty *prop, QObject *o) { - if (QGraphicsObject *go = qobject_cast(o)) - static_cast(prop->object)->addItem(go); - } -}; - -class QGraphicsWidgetDeclarativeUI : public QObject -{ - Q_OBJECT - - Q_PROPERTY(QDeclarativeListProperty children READ children) - Q_PROPERTY(QGraphicsLayout *layout READ layout WRITE setLayout) - Q_CLASSINFO("DefaultProperty", "children") -public: - QGraphicsWidgetDeclarativeUI(QObject *other) : QObject(other) {} - - QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append); } - - QGraphicsLayout *layout() const { return static_cast(parent())->layout(); } - void setLayout(QGraphicsLayout *lo) - { - static_cast(parent())->setLayout(lo); - } - -private: - void setItemParent(QGraphicsItem *wid) - { - wid->setParentItem(static_cast(parent())); - } - - static void children_append(QDeclarativeListProperty *prop, QGraphicsItem *i) { - static_cast(prop->object)->setItemParent(i); - } -}; - -class QWidgetsQmlModule : public QDeclarativeExtensionPlugin -{ - Q_OBJECT -public: - virtual void registerTypes(const char *uri) - { - Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.widgets")); - - QML_REGISTER_INTERFACE(QGraphicsLayoutItem); - QML_REGISTER_INTERFACE(QGraphicsLayout); - qmlRegisterType(uri,4,6,"QGraphicsLinearLayoutStretchItem"); - qmlRegisterType(uri,4,6,"QGraphicsLinearLayout"); - qmlRegisterType(uri,4,6,"QGraphicsGridLayout"); - qmlRegisterExtendedType(uri,4,6,"QGraphicsView"); - qmlRegisterExtendedType(uri,4,6,"QGraphicsScene"); - qmlRegisterExtendedType(uri,4,6,"QGraphicsWidget"); - QML_REGISTER_INTERFACE(QGraphicsItem); - } -}; - -QT_END_NAMESPACE - -#include "widgets.moc" - -Q_EXPORT_PLUGIN2(qtwidgetsqmlmodule, QT_PREPEND_NAMESPACE(QWidgetsQmlModule)); - diff --git a/src/plugins/qdeclarativemodules/widgets/widgets.pro b/src/plugins/qdeclarativemodules/widgets/widgets.pro deleted file mode 100644 index 3ec38da..0000000 --- a/src/plugins/qdeclarativemodules/widgets/widgets.pro +++ /dev/null @@ -1,20 +0,0 @@ -TARGET = widgets -include(../../qpluginbase.pri) - -QT += declarative - -SOURCES += \ - graphicslayouts.cpp \ - widgets.cpp - -HEADERS += \ - graphicswidgets_p.h \ - graphicslayouts_p.h - -QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/Qt/widgets -target.path = $$[QT_INSTALL_IMPORTS]/Qt/widgets - -qmldir.files += $$QT_BUILD_TREE/imports/Qt/widgets/qmldir -qmldir.path += $$[QT_INSTALL_IMPORTS]/Qt/widgets - -INSTALLS += target qmldir -- cgit v0.12 From b277a6932c32ce4bae015cce6e1c00c322b4a63b Mon Sep 17 00:00:00 2001 From: mae Date: Tue, 2 Mar 2010 12:13:44 +0100 Subject: Let the 'qml' runtime use its applicationDirPath as importsPath The is analog to the plugin system in Qt. It makes it possible to ship an executable with extra plugins resp. qml import modules without creating a qt.conf. --- tools/qml/main.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp index 6339813..a4de339 100644 --- a/tools/qml/main.cpp +++ b/tools/qml/main.cpp @@ -311,8 +311,11 @@ int main(int argc, char ** argv) usage(); } + viewer.addLibraryPath(QCoreApplication::applicationDirPath()); + foreach (QString lib, libraries) viewer.addLibraryPath(lib); + viewer.setNetworkCacheSize(cache); viewer.setRecordFile(recordfile); if (resizeview) -- cgit v0.12 From e0a9e34b6e776be1df3b3fae68d20f242aa07e6a Mon Sep 17 00:00:00 2001 From: mae Date: Tue, 2 Mar 2010 12:39:38 +0100 Subject: Fix qml import modules loading on Windows On windows, when importing a declarative plugin by name, extend with "d.dll" in the debug case, then with ".dll". This is in sync with qmake's behaviour for libraries. --- src/declarative/qml/qdeclarativeengine.cpp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index af75e98..277c602 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -1687,6 +1687,7 @@ QString QDeclarativeEngine::offlineStoragePath() const \internal Returns the result of the merge of \a baseName with \a dir, \a suffixes, and \a prefix. + The \a prefix must contain the dot. */ QString QDeclarativeEnginePrivate::resolvePlugin(const QDir &dir, const QString &baseName, const QStringList &suffixes, @@ -1696,7 +1697,6 @@ QString QDeclarativeEnginePrivate::resolvePlugin(const QDir &dir, const QString QString pluginFileName = prefix; pluginFileName += baseName; - pluginFileName += QLatin1Char('.'); pluginFileName += suffix; QFileInfo fileInfo(dir, pluginFileName); @@ -1728,14 +1728,26 @@ QString QDeclarativeEnginePrivate::resolvePlugin(const QDir &dir, const QString QString QDeclarativeEnginePrivate::resolvePlugin(const QDir &dir, const QString &baseName) { #if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) - return resolvePlugin(dir, baseName, QStringList(QLatin1String("dll"))); + return resolvePlugin(dir, baseName, + QStringList() +# ifdef QT_DEBUG + << QLatin1String("d.dll") // try a qmake-style debug build first +# endif + << QLatin1String(".dll"); #elif defined(Q_OS_SYMBIAN) - return resolvePlugin(dir, baseName, QStringList() << QLatin1String("dll") << QLatin1String("qtplugin")); + return resolvePlugin(dir, baseName, + QStringList() + << QLatin1String(".dll") + << QLatin1String(".qtplugin")); #else # if defined(Q_OS_DARWIN) - return resolvePlugin(dir, baseName, QStringList() << QLatin1String("dylib") << QLatin1String("so") << QLatin1String("bundle"), + return resolvePlugin(dir, baseName, + QStringList() + << QLatin1String(".dylib") + << QLatin1String(".so") + << QLatin1String(".bundle"), QLatin1String("lib")); # else // Generic Unix QStringList validSuffixList; @@ -1746,14 +1758,14 @@ QString QDeclarativeEnginePrivate::resolvePlugin(const QDir &dir, const QString "In PA-RISC (PA-32 and PA-64) shared libraries are suffixed with .sl. In IPF (32-bit and 64-bit), the shared libraries are suffixed with .so. For compatibility, the IPF linker also supports the .sl suffix." */ - validSuffixList << QLatin1String("sl"); + validSuffixList << QLatin1String(".sl"); # if defined __ia64 - validSuffixList << QLatin1String("so"); + validSuffixList << QLatin1String(".so"); # endif # elif defined(Q_OS_AIX) - validSuffixList << QLatin1String("a") << QLatin1String("so"); + validSuffixList << QLatin1String(".a") << QLatin1String(".so"); # elif defined(Q_OS_UNIX) - validSuffixList << QLatin1String("so"); + validSuffixList << QLatin1String(".so"); # endif // Examples of valid library names: -- cgit v0.12 From 3708ff474a987ddb82f7b66d8c686f499b65eeb6 Mon Sep 17 00:00:00 2001 From: aavit Date: Tue, 2 Mar 2010 13:36:55 +0100 Subject: Updates to changes file Reviewed-by: trustme --- dist/changes-4.7.0 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dist/changes-4.7.0 b/dist/changes-4.7.0 index 013f1ce..4d776ee 100644 --- a/dist/changes-4.7.0 +++ b/dist/changes-4.7.0 @@ -30,6 +30,12 @@ General Improvements Third party components ---------------------- + - Updated libpng to version 1.4.0 + + - Updated libjpeg to version 8 + + - Updated libtiff to version 3.9.2 + **************************************************************************** * Library * -- cgit v0.12 From 2afda558815bc29c1f54e7b9bcc0312369dd7d79 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Tue, 2 Mar 2010 13:41:05 +0100 Subject: Build fix on windows --- src/declarative/qml/qdeclarativeengine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 277c602..ecaea61 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -1733,7 +1733,7 @@ QString QDeclarativeEnginePrivate::resolvePlugin(const QDir &dir, const QString # ifdef QT_DEBUG << QLatin1String("d.dll") // try a qmake-style debug build first # endif - << QLatin1String(".dll"); + << QLatin1String(".dll")); #elif defined(Q_OS_SYMBIAN) return resolvePlugin(dir, baseName, QStringList() -- cgit v0.12 From a140e37fab6a1d028fd1b751a98774dacb4f1a89 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Tue, 2 Mar 2010 13:42:05 +0100 Subject: Fix & move QEgl::native* to platform-specific files This should fix build on Symbian & WinCE Reviewed-By: TrustMe --- src/gui/egl/qegl.cpp | 19 ------------------- src/gui/egl/qegl_qws.cpp | 17 +++++++++++++++++ src/gui/egl/qegl_symbian.cpp | 11 +++++++++++ src/gui/egl/qegl_wince.cpp | 11 +++++++++++ src/gui/egl/qegl_x11.cpp | 11 ++++++++++- 5 files changed, 49 insertions(+), 20 deletions(-) diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp index 1bfba10..485bfbf 100644 --- a/src/gui/egl/qegl.cpp +++ b/src/gui/egl/qegl.cpp @@ -549,25 +549,6 @@ EGLDisplay QEgl::display() return dpy; } -#if !defined(Q_WS_X11) && !defined(Q_WS_WINCE) // WinCE & X11 implement this properly -EGLNativeDisplayType QEgl::nativeDisplay() -{ - return EGL_DEFAULT_DISPLAY; -} -#endif - -#if !defined(Q_OS_SYMBIAN) -EGLNativeWindowType QEgl::nativeWindow(QWidget* widget) -{ - return (EGLNativeWindowType)(widget->winId()); -} -#endif - -EGLNativePixmapType QEgl::nativePixmap(QPixmap* pixmap) -{ - return (EGLNativePixmapType)(pixmap->handle()); -} - #ifndef Q_WS_X11 EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *properties) { diff --git a/src/gui/egl/qegl_qws.cpp b/src/gui/egl/qegl_qws.cpp index eb41bcc..56383a5 100644 --- a/src/gui/egl/qegl_qws.cpp +++ b/src/gui/egl/qegl_qws.cpp @@ -92,6 +92,23 @@ void QEglProperties::setPaintDeviceFormat(QPaintDevice *dev) setPixelFormat(screen->pixelFormat()); } +EGLNativeDisplayType QEgl::nativeDisplay() +{ + return EGL_DEFAULT_DISPLAY; +} + +EGLNativeWindowType QEgl::nativeWindow(QWidget* widget) +{ + return (EGLNativeWindowType)(widget->winId()); // Might work +} + +EGLNativePixmapType QEgl::nativePixmap(QPixmap*) +{ + qWarning("QEgl: EGL pixmap surfaces not supported on QWS"); + return (EGLNativePixmapType)0; +} + + QT_END_NAMESPACE #endif // !QT_NO_EGL diff --git a/src/gui/egl/qegl_symbian.cpp b/src/gui/egl/qegl_symbian.cpp index 8833b42..9744ed0 100644 --- a/src/gui/egl/qegl_symbian.cpp +++ b/src/gui/egl/qegl_symbian.cpp @@ -50,11 +50,22 @@ QT_BEGIN_NAMESPACE +EGLNativeDisplayType QEgl::nativeDisplay() +{ + return EGL_DEFAULT_DISPLAY; +} + EGLNativeWindowType QEgl::nativeWindow(QWidget* widget) { return (EGLNativeWindowType)(widget->winId()->DrawableWindow()); } +EGLNativePixmapType QEgl::nativePixmap(QPixmap*) +{ + qWarning("QEgl: EGL pixmap surfaces not implemented yet on Symbian"); + return (EGLNativePixmapType)0; +} + // Set pixel format and other properties based on a paint device. void QEglProperties::setPaintDeviceFormat(QPaintDevice *dev) { diff --git a/src/gui/egl/qegl_wince.cpp b/src/gui/egl/qegl_wince.cpp index b201153..c07b20b 100644 --- a/src/gui/egl/qegl_wince.cpp +++ b/src/gui/egl/qegl_wince.cpp @@ -62,6 +62,17 @@ EGLNativeDisplayType QEgl::nativeDisplay() return EGLNativeDisplayType(myDc); } +EGLNativeWindowType QEgl::nativeWindow(QWidget* widget) +{ + return (EGLNativeWindowType)(widget->winId()); +} + +EGLNativePixmapType QEgl::nativePixmap(QPixmap*) +{ + qWarning("QEgl: EGL pixmap surfaces not supported on WinCE"); + return (EGLNativePixmapType)0; +} + // Set pixel format and other properties based on a paint device. void QEglProperties::setPaintDeviceFormat(QPaintDevice *dev) { diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index a4bfcac..339bd57 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -67,6 +67,16 @@ EGLNativeDisplayType QEgl::nativeDisplay() return EGLNativeDisplayType(xdpy); } +EGLNativeWindowType QEgl::nativeWindow(QWidget* widget) +{ + return (EGLNativeWindowType)(widget->winId()); +} + +EGLNativePixmapType QEgl::nativePixmap(QPixmap* pixmap) +{ + return (EGLNativePixmapType)(pixmap->handle()); +} + static int countBits(unsigned long mask) { int count = 0; @@ -399,5 +409,4 @@ EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig config, const QEg return EGL_NO_SURFACE; } - QT_END_NAMESPACE -- cgit v0.12 From 8b19712189aa2c7e83030b59cd4b4729e5e113cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Tue, 2 Mar 2010 13:50:36 +0100 Subject: Compile. --- tools/qdoc3/node.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp index 6ad9a6c..7dda824 100644 --- a/tools/qdoc3/node.cpp +++ b/tools/qdoc3/node.cpp @@ -44,6 +44,7 @@ */ #include "node.h" +#include QT_BEGIN_NAMESPACE -- cgit v0.12 From 89429d192dc14044f6d27c9dde06811f1f23b954 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Tue, 2 Mar 2010 14:17:08 +0100 Subject: Compile fix on Windows --- src/declarative/qml/qdeclarativelist.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/qml/qdeclarativelist.h b/src/declarative/qml/qdeclarativelist.h index 8d59384..eac4967 100644 --- a/src/declarative/qml/qdeclarativelist.h +++ b/src/declarative/qml/qdeclarativelist.h @@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE QT_MODULE(Declarative) class QObject; -class QMetaObject; +struct QMetaObject; template struct QDeclarativeListProperty { typedef void (*AppendFunction)(QDeclarativeListProperty *, T*); -- cgit v0.12 From 03daf059647c0a0222e8774b0a083f58c8e64934 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 2 Mar 2010 11:03:12 +0100 Subject: QMetaType: Now we can register typedefs. Task-number: QTBUG-6833 Task-number: QTBUG-937 Reviewed-by: Brad Reviewed-by: Kent Hansen --- .../snippets/code/src_corelib_kernel_qmetatype.cpp | 5 ++ src/corelib/kernel/qmetatype.cpp | 60 +++++++++++++++++++++- src/corelib/kernel/qmetatype.h | 37 ++++++++++++- tests/auto/qmetaobject/tst_qmetaobject.cpp | 20 ++++++++ tests/auto/qmetatype/tst_qmetatype.cpp | 14 ++++- tests/auto/qobject/tst_qobject.cpp | 16 ++++++ 6 files changed, 146 insertions(+), 6 deletions(-) diff --git a/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp b/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp index bff72a0..19e37ba 100644 --- a/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp +++ b/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp @@ -108,3 +108,8 @@ int id = qRegisterMetaType(); int id = qMetaTypeId(); // id is now QMetaType::QString id = qMetaTypeId(); // compile error if MyStruct not declared //! [8] + +//! [9] +typedef QString CustomString; +qRegisterMetaType("CustomString"); +//! [9] diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 779b69b..be506b4 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -352,6 +352,7 @@ public: QMetaType::SaveOperator saveOp; QMetaType::LoadOperator loadOp; #endif + int alias; }; Q_DECLARE_TYPEINFO(QCustomTypeInfo, Q_MOVABLE_TYPE); @@ -436,8 +437,11 @@ static int qMetaTypeCustomType_unlocked(const char *typeName, int length) return 0; for (int v = 0; v < ct->count(); ++v) { - if ((length == ct->at(v).typeName.size()) - && !strcmp(typeName, ct->at(v).typeName.constData())) { + const QCustomTypeInfo &customInfo = ct->at(v); + if ((length == customInfo.typeName.size()) + && !strcmp(typeName, customInfo.typeName.constData())) { + if (customInfo.alias >= 0) + return customInfo.alias; return v + QMetaType::User; } } @@ -475,6 +479,7 @@ int QMetaType::registerType(const char *typeName, Destructor destructor, inf.typeName = normalizedTypeName; inf.constr = constructor; inf.destr = destructor; + inf.alias = -1; idx = ct->size() + User; ct->append(inf); } @@ -482,6 +487,51 @@ int QMetaType::registerType(const char *typeName, Destructor destructor, return idx; } +/*! \internal + \since 4.7 + + Registers a user type for marshalling, as an alias of another type (typedef) +*/ +int QMetaType::registerTypedef(const char* typeName, int aliasId) +{ + QVector *ct = customTypes(); + if (!ct || !typeName) + return -1; + +#ifdef QT_NO_QOBJECT + NS(QByteArray) normalizedTypeName = typeName; +#else + NS(QByteArray) normalizedTypeName = QMetaObject::normalizedType(typeName); +#endif + + int idx = qMetaTypeStaticType(normalizedTypeName.constData(), + normalizedTypeName.size()); + + if (idx) { + Q_ASSERT(idx == aliasId); + return idx; + } + + QWriteLocker locker(customTypesLock()); + idx = qMetaTypeCustomType_unlocked(normalizedTypeName.constData(), + normalizedTypeName.size()); + + if (idx) { + Q_ASSERT(idx == aliasId); + return idx; + } + + if (!idx) { + QCustomTypeInfo inf; + inf.typeName = normalizedTypeName; + inf.alias = aliasId; + inf.constr = 0; + inf.destr = 0; + ct->append(inf); + } + return aliasId; +} + /*! \since 4.4 @@ -507,6 +557,7 @@ void QMetaType::unregisterType(const char *typeName) inf.typeName.clear(); inf.constr = 0; inf.destr = 0; + inf.alias = -1; } } } @@ -1349,6 +1400,11 @@ void QMetaType::destroy(int type, void *data) \snippet doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp 4 + This function is usefull to register typedefs so they can be used + by QMetaProperty, or in QueuedConnections + + \snippet doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp 9 + \sa qRegisterMetaTypeStreamOperators(), QMetaType::isRegistered(), Q_DECLARE_METATYPE() */ diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 33126e8..2ed4a1f 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -113,6 +113,7 @@ public: #endif static int registerType(const char *typeName, Destructor destructor, Constructor constructor); + static int registerTypedef(const char *typeName, int aliasId); static int type(const char *typeName); static const char *typeName(int type); static bool isRegistered(int type); @@ -154,13 +155,31 @@ void qMetaTypeLoadHelper(QDataStream &stream, T *t) } #endif // QT_NO_DATASTREAM +template struct QMetaTypeId2; + +namespace QtPrivate { + template ::Defined> + struct QMetaTypeIdHelper { + static inline int qt_metatype_id() + { return QMetaTypeId2::qt_metatype_id(); } + }; + template struct QMetaTypeIdHelper { + static inline int qt_metatype_id() + { return -1; } + }; +} + template int qRegisterMetaType(const char *typeName #ifndef qdoc - , T * /* dummy */ = 0 + , typename QMetaTypeId2::CustomType * dummy = 0 #endif ) { + const int typedefOf = dummy ? -1 : QtPrivate::QMetaTypeIdHelper::qt_metatype_id(); + if (typedefOf != -1) + return QMetaType::registerTypedef(typeName, typedefOf); + typedef void*(*ConstructPtr)(const T*); ConstructPtr cptr = qMetaTypeConstructHelper; typedef void(*DeletePtr)(T*); @@ -170,6 +189,17 @@ int qRegisterMetaType(const char *typeName reinterpret_cast(cptr)); } +template +int qRegisterMetaType(const char *typeName +#ifndef qdoc + , typename QMetaTypeId2::BuiltinType * /* dummy */ = 0 +#endif +) +{ + return QMetaType::registerTypedef(typeName, QMetaTypeId2::MetaType); +} + + #ifndef QT_NO_DATASTREAM template void qRegisterMetaTypeStreamOperators(const char *typeName @@ -198,6 +228,7 @@ struct QMetaTypeId template struct QMetaTypeId2 { + typedef T CustomType; enum { Defined = QMetaTypeId::Defined }; static inline int qt_metatype_id() { return QMetaTypeId::qt_metatype_id(); } }; @@ -254,7 +285,8 @@ inline int qRegisterMetaTypeStreamOperators() { \ static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); \ if (!metatype_id) \ - metatype_id = qRegisterMetaType< TYPE >(#TYPE); \ + metatype_id = qRegisterMetaType< TYPE >(#TYPE, \ + reinterpret_cast< TYPE *>(quintptr(-1))); \ return metatype_id; \ } \ }; \ @@ -264,6 +296,7 @@ inline int qRegisterMetaTypeStreamOperators() QT_BEGIN_NAMESPACE \ template<> struct QMetaTypeId2 \ { \ + typedef TYPE BuiltinType; \ enum { Defined = 1, MetaType = QMetaType::NAME }; \ static inline int qt_metatype_id() { return QMetaType::NAME; } \ }; \ diff --git a/tests/auto/qmetaobject/tst_qmetaobject.cpp b/tests/auto/qmetaobject/tst_qmetaobject.cpp index bd54975..bb4a0d2 100644 --- a/tests/auto/qmetaobject/tst_qmetaobject.cpp +++ b/tests/auto/qmetaobject/tst_qmetaobject.cpp @@ -157,6 +157,7 @@ private slots: void invokeQueuedMetaMember(); void invokeCustomTypes(); void invokeMetaConstructor(); + void invokeTypedefTypes(); void qtMetaObjectInheritance(); void normalizedSignature_data(); void normalizedSignature(); @@ -598,6 +599,8 @@ struct MyType int i1, i2, i3; }; +typedef QString CustomString; + class QtTestCustomObject: public QObject { Q_OBJECT @@ -607,6 +610,9 @@ public: public slots: void sl1(MyType myType); +signals: + void sig_custom(const CustomString &string); + public: int sum; }; @@ -664,6 +670,20 @@ void tst_QMetaObject::invokeMetaConstructor() } } +void tst_QMetaObject::invokeTypedefTypes() +{ + qRegisterMetaType("CustomString"); + QtTestCustomObject obj; + QSignalSpy spy(&obj, SIGNAL(sig_custom(CustomString))); + + QCOMPARE(spy.count(), 0); + CustomString arg("hello"); + QVERIFY(QMetaObject::invokeMethod(&obj, "sig_custom", Q_ARG(CustomString, arg))); + QCOMPARE(spy.count(), 1); + QCOMPARE(spy.at(0).count(), 1); + QCOMPARE(spy.at(0).at(0), QVariant(arg)); +} + void tst_QMetaObject::normalizedSignature_data() { QTest::addColumn("signature"); diff --git a/tests/auto/qmetatype/tst_qmetatype.cpp b/tests/auto/qmetatype/tst_qmetatype.cpp index 943b05b..f4e122f 100644 --- a/tests/auto/qmetatype/tst_qmetatype.cpp +++ b/tests/auto/qmetatype/tst_qmetatype.cpp @@ -241,6 +241,9 @@ void tst_QMetaType::construct() QMetaType::destroy(QMetaType::QSize, size); } +typedef QString CustomString; +Q_DECLARE_METATYPE(CustomString) //this line is useless + void tst_QMetaType::typedefs() { QCOMPARE(QMetaType::type("long long"), int(QMetaType::LongLong)); @@ -256,6 +259,13 @@ void tst_QMetaType::typedefs() // make sure the qreal typeId is the type id of the type it's defined to QCOMPARE(QMetaType::type("qreal"), ::qMetaTypeId()); + + qRegisterMetaType("CustomString"); + QCOMPARE(QMetaType::type("CustomString"), ::qMetaTypeId()); + + typedef Whity WhityDouble; + qRegisterMetaType("WhityDouble"); + QCOMPARE(QMetaType::type("WhityDouble"), ::qMetaTypeId()); } class IsRegisteredDummyType { }; @@ -286,9 +296,9 @@ void tst_QMetaType::isRegistered() QCOMPARE(QMetaType::isRegistered(typeId), registered); } -class RegUnreg +class RegUnreg { -public: +public: RegUnreg() {}; RegUnreg(const RegUnreg &) {}; ~RegUnreg() {}; diff --git a/tests/auto/qobject/tst_qobject.cpp b/tests/auto/qobject/tst_qobject.cpp index 3896d70..c8f846e 100644 --- a/tests/auto/qobject/tst_qobject.cpp +++ b/tests/auto/qobject/tst_qobject.cpp @@ -1112,6 +1112,8 @@ void tst_QObject::streamCustomTypes() QCOMPARE(instanceCount, 0); } +typedef QString CustomString; + class PropertyObject : public QObject { Q_OBJECT @@ -1125,6 +1127,7 @@ class PropertyObject : public QObject Q_PROPERTY(CustomType* custom READ custom WRITE setCustom) Q_PROPERTY(float myFloat READ myFloat WRITE setMyFloat) Q_PROPERTY(qreal myQReal READ myQReal WRITE setMyQReal) + Q_PROPERTY(CustomString customString READ customString WRITE setCustomString ) public: enum Alpha { @@ -1163,6 +1166,9 @@ public: void setMyQReal(qreal value) { m_qreal = value; } qreal myQReal() const { return m_qreal; } + CustomString customString() const { return m_customString; } + void setCustomString(const QString &string) { m_customString = string; } + private: Alpha m_alpha; Priority m_priority; @@ -1172,6 +1178,7 @@ private: CustomType *m_custom; float m_float; qreal m_qreal; + CustomString m_customString; }; Q_DECLARE_METATYPE(PropertyObject::Priority) @@ -1626,6 +1633,15 @@ void tst_QObject::property() QCOMPARE(qVariantValue(object.property("priority")), PropertyObject::Low); object.setProperty("priority", var); QCOMPARE(qVariantValue(object.property("priority")), PropertyObject::High); + + qRegisterMetaType("CustomString"); + QVERIFY(mo->indexOfProperty("customString") != -1); + QCOMPARE(object.property("customString").toString(), QString()); + object.setCustomString("String1"); + QCOMPARE(object.property("customString"), QVariant("String1")); + QVERIFY(object.setProperty("customString", "String2")); + QCOMPARE(object.property("customString"), QVariant("String2")); + QVERIFY(!object.setProperty("customString", QVariant())); } void tst_QObject::metamethod() -- cgit v0.12 From 6711f49a6c08c08759cb2185bf202d4b316d33df Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Tue, 2 Mar 2010 14:27:52 +0100 Subject: QNAM HTTP: Fix invoking a method when being destructed right now Reviewed-by: Olivier Goffart --- src/network/access/qhttpnetworkconnectionchannel.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index e92b2f3..806452c 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -681,7 +681,11 @@ void QHttpNetworkConnectionChannel::requeueCurrentlyPipelinedRequests() connection->d_func()->requeueRequest(alreadyPipelinedRequests.at(i)); alreadyPipelinedRequests.clear(); - QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); + // only run when the QHttpNetworkConnection is not currently being destructed, e.g. + // this function is called from _q_disconnected which is called because + // of ~QHttpNetworkConnectionPrivate + if (qobject_cast(connection)) + QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); } void QHttpNetworkConnectionChannel::eatWhitespace() -- cgit v0.12 From 298aee0577a45dadf8e30b5bea05224f9e3aa52d Mon Sep 17 00:00:00 2001 From: Zeno Albisser Date: Tue, 2 Mar 2010 13:49:52 +0100 Subject: Added comment about usage of strncpy_s function in VC++ > 14.00 Reviewed-by: Peter Hartmann --- src/corelib/tools/qbytearray.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp index 3324796..c5f70b0 100644 --- a/src/corelib/tools/qbytearray.cpp +++ b/src/corelib/tools/qbytearray.cpp @@ -154,6 +154,10 @@ char *qstrcpy(char *dst, const char *src) This function assumes that \a dst is at least \a len characters long. + \note When compiling with Visual C++ compiler version 14.00 + (Visual C++ 2005) or later, internally the function strncpy_s + will be used. + \sa qstrcpy() */ -- cgit v0.12 From c1b067ea8169e1d37e2a120334406f1f115298bb Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 1 Mar 2010 22:40:04 +0100 Subject: Fix strict-aliasing breakage with SunCC: the union trick is a GCC extension. It's probably also an MSVC extension, because the MSVC compiler has never complained about this fact, nor generated unintended code. Anyway, the only way is to reinterpret_cast the quintptr. It's not an aliasing violation to do it because we never access the integer as anything other than quintptr. Reviewed-By: Bradley T. Hughes --- src/corelib/thread/qmutex.h | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/corelib/thread/qmutex.h b/src/corelib/thread/qmutex.h index 80b50fc..677412e 100644 --- a/src/corelib/thread/qmutex.h +++ b/src/corelib/thread/qmutex.h @@ -95,7 +95,7 @@ class Q_CORE_EXPORT QMutexLocker { public: inline explicit QMutexLocker(QMutex *m) - : mtx(m) + : val(reinterpret_cast(m)) { Q_ASSERT_X((val & quintptr(1u)) == quintptr(0), "QMutexLocker", "QMutex pointer is misaligned"); @@ -105,19 +105,19 @@ public: inline void unlock() { - if (mtx) { + if (val) { if ((val & quintptr(1u)) == quintptr(1u)) { val &= ~quintptr(1u); - mtx->unlock(); + mutex()->unlock(); } } } inline void relock() { - if (mtx) { + if (val) { if ((val & quintptr(1u)) == quintptr(0u)) { - mtx->lock(); + mutex()->lock(); val |= quintptr(1u); } } @@ -140,10 +140,7 @@ public: private: Q_DISABLE_COPY(QMutexLocker) - union { - QMutex *mtx; - quintptr val; - }; + quintptr val; }; #else // QT_NO_THREAD -- cgit v0.12 From a62177874d961e0884e74ba7c7c8899fdb79fb09 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 1 Mar 2010 18:58:06 +0100 Subject: Always run syncqt if using a Git checkout. Reviewed-by: Olivier Goffart --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 2312165..2c7e431 100755 --- a/configure +++ b/configure @@ -4322,7 +4322,7 @@ if [ -n "$PERL" ] && [ -x "$relpath/bin/syncqt" ]; then [ "$CFG_DEV" = "yes" ] && SYNCQT_OPTS="$SYNCQT_OPTS -check-includes" if [ "$OPT_SHADOW" = "yes" ]; then "$outpath/bin/syncqt" $SYNCQT_OPTS - elif [ "$CFG_DEV" = "yes" ] || [ ! -d $relpath/include ]; then + elif [ "$CFG_DEV" = "yes" ] || [ ! -d $relpath/include ] || [ -d $relpath/.git ]; then QTDIR="$relpath" perl "$outpath/bin/syncqt" $SYNCQT_OPTS fi fi -- cgit v0.12 From 7fd5ade07bd05ff6cb6f4e7cfa7a74081b803809 Mon Sep 17 00:00:00 2001 From: mae Date: Tue, 2 Mar 2010 15:00:23 +0100 Subject: Adapted example to use the import mechanism --- .../imageprovider/ImageProviderCore/qmldir | 2 + .../declarative/imageprovider/imageprovider.cpp | 107 +++++++++++++++++++++ .../declarative/imageprovider/imageprovider.pro | 14 +-- .../declarative/imageprovider/imageprovider.qml | 23 +++++ .../declarative/imageprovider/imageprovider.qrc | 5 - examples/declarative/imageprovider/main.cpp | 98 ------------------- examples/declarative/imageprovider/view.qml | 22 ----- 7 files changed, 140 insertions(+), 131 deletions(-) create mode 100644 examples/declarative/imageprovider/ImageProviderCore/qmldir create mode 100644 examples/declarative/imageprovider/imageprovider.cpp create mode 100644 examples/declarative/imageprovider/imageprovider.qml delete mode 100644 examples/declarative/imageprovider/imageprovider.qrc delete mode 100644 examples/declarative/imageprovider/main.cpp delete mode 100644 examples/declarative/imageprovider/view.qml diff --git a/examples/declarative/imageprovider/ImageProviderCore/qmldir b/examples/declarative/imageprovider/ImageProviderCore/qmldir new file mode 100644 index 0000000..1028590 --- /dev/null +++ b/examples/declarative/imageprovider/ImageProviderCore/qmldir @@ -0,0 +1,2 @@ +plugin imageprovider + diff --git a/examples/declarative/imageprovider/imageprovider.cpp b/examples/declarative/imageprovider/imageprovider.cpp new file mode 100644 index 0000000..253dbf5 --- /dev/null +++ b/examples/declarative/imageprovider/imageprovider.cpp @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** 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 demonstration applications 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 + +#include +#include +#include +#include +#include +#include +#include +#include + +/* + This example illustrates using a QDeclarativeImageProvider to serve + images asynchronously. +*/ + +//![0] +class ColorImageProvider : public QDeclarativeImageProvider +{ +public: + // This is run in a low priority thread. + QImage request(const QString &id) { + QImage image(100, 50, QImage::Format_RGB32); + image.fill(QColor(id).rgba()); + QPainter p(&image); + p.setPen(Qt::black); + p.drawText(QRectF(0,0,100,50),Qt::AlignCenter,id); + return image; + } +}; + + +class ImageProviderExtensionPlugin : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + void registerTypes(const char *uri) { + Q_UNUSED(uri); + + } + + void initializeEngine(QDeclarativeEngine *engine, const char *uri) { + Q_UNUSED(uri); + + engine->addImageProvider("colors", new ColorImageProvider); + + QStringList dataList; + dataList.append("image://colors/red"); + dataList.append("image://colors/green"); + dataList.append("image://colors/blue"); + dataList.append("image://colors/brown"); + dataList.append("image://colors/orange"); + dataList.append("image://colors/purple"); + dataList.append("image://colors/yellow"); + + QDeclarativeContext *ctxt = engine->rootContext(); + ctxt->setContextProperty("myModel", QVariant::fromValue(dataList)); + } + +}; + +#include "imageprovider.moc" + +Q_EXPORT_PLUGIN(ImageProviderExtensionPlugin); + diff --git a/examples/declarative/imageprovider/imageprovider.pro b/examples/declarative/imageprovider/imageprovider.pro index 60423ab..e403bf8 100644 --- a/examples/declarative/imageprovider/imageprovider.pro +++ b/examples/declarative/imageprovider/imageprovider.pro @@ -1,9 +1,11 @@ -TEMPLATE = app -TARGET = imageprovider -DEPENDPATH += . -INCLUDEPATH += . +TEMPLATE = lib +TARGET = imageprovider QT += declarative +CONFIG += qt plugin + +TARGET = $$qtLibraryTarget($$TARGET) +DESTDIR = ImageProviderCore # Input -SOURCES += main.cpp -RESOURCES += imageprovider.qrc +SOURCES += imageprovider.cpp + diff --git a/examples/declarative/imageprovider/imageprovider.qml b/examples/declarative/imageprovider/imageprovider.qml new file mode 100644 index 0000000..a1f2794 --- /dev/null +++ b/examples/declarative/imageprovider/imageprovider.qml @@ -0,0 +1,23 @@ +import Qt 4.6 +import ImageProviderCore 1.0 +//![0] +ListView { + width: 100 + height: 100 + anchors.fill: parent + model: myModel + delegate: Component { + Item { + width: 100 + height: 50 + Text { + text: "Loading..." + anchors.centerIn: parent + } + Image { + source: modelData + } + } + } +} +//![0] diff --git a/examples/declarative/imageprovider/imageprovider.qrc b/examples/declarative/imageprovider/imageprovider.qrc deleted file mode 100644 index 17e9301..0000000 --- a/examples/declarative/imageprovider/imageprovider.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - view.qml - - diff --git a/examples/declarative/imageprovider/main.cpp b/examples/declarative/imageprovider/main.cpp deleted file mode 100644 index d9d4c1a..0000000 --- a/examples/declarative/imageprovider/main.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** 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 demonstration applications 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 - -#include -#include -#include -#include -#include -#include -#include -#include - -/* - This example illustrates using a QDeclarativeImageProvider to serve - images asynchronously. -*/ - -//![0] -class ColorImageProvider : public QDeclarativeImageProvider -{ -public: - // This is run in a low priority thread. - QImage request(const QString &id) { - QImage image(100, 50, QImage::Format_RGB32); - image.fill(QColor(id).rgba()); - QPainter p(&image); - p.setPen(Qt::black); - p.drawText(QRectF(0,0,100,50),Qt::AlignCenter,id); - return image; - } -}; - -int main(int argc, char ** argv) -{ - QApplication app(argc, argv); - - QDeclarativeView view; - - view.engine()->addImageProvider("colors", new ColorImageProvider); - - QStringList dataList; - dataList.append("image://colors/red"); - dataList.append("image://colors/green"); - dataList.append("image://colors/blue"); - dataList.append("image://colors/brown"); - dataList.append("image://colors/orange"); - dataList.append("image://colors/purple"); - dataList.append("image://colors/yellow"); - - QDeclarativeContext *ctxt = view.rootContext(); - ctxt->setContextProperty("myModel", QVariant::fromValue(dataList)); - - view.setSource(QUrl("qrc:view.qml")); - view.show(); - - return app.exec(); -} -//![0] diff --git a/examples/declarative/imageprovider/view.qml b/examples/declarative/imageprovider/view.qml deleted file mode 100644 index 2ab729d..0000000 --- a/examples/declarative/imageprovider/view.qml +++ /dev/null @@ -1,22 +0,0 @@ -import Qt 4.6 -//![0] -ListView { - width: 100 - height: 100 - anchors.fill: parent - model: myModel - delegate: Component { - Item { - width: 100 - height: 50 - Text { - text: "Loading..." - anchors.centerIn: parent - } - Image { - source: modelData - } - } - } -} -//![0] -- cgit v0.12 From 67cd8cc97104e38f2e3bae03b2a4c3575c73c461 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 1 Mar 2010 22:12:01 +0100 Subject: Add a template specialisation for QArgument when T is a reference. We can't form references to references, so this is the proper solution. Though apparently GCC figures out somehow to work without it... Task-number: QTBUG-8592 Reviewed-By: Olivier Goffart --- src/corelib/kernel/qobjectdefs.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/corelib/kernel/qobjectdefs.h b/src/corelib/kernel/qobjectdefs.h index 8ed7f3f..b045c42 100644 --- a/src/corelib/kernel/qobjectdefs.h +++ b/src/corelib/kernel/qobjectdefs.h @@ -271,6 +271,14 @@ public: : QGenericArgument(aName, static_cast(&aData)) {} }; +template +class QArgument: public QGenericArgument +{ +public: + inline QArgument(const char *aName, T &aData) + : QGenericArgument(aName, static_cast(&aData)) + {} +}; template -- cgit v0.12 From a76d12862122504bae2e75cb78bdb21d180aaca0 Mon Sep 17 00:00:00 2001 From: Janne Anttila Date: Tue, 2 Mar 2010 16:03:26 +0200 Subject: Re-applied a fix which get lost during softkey refactoring. See original commit (b461da1040c32d6690870290d6716a3b5cb7e9e9) for more information. Task-number: QTBUG-6220 Reviewed-By: TrustMe --- src/gui/kernel/qsoftkeymanager_s60.cpp | 7 ++++++- src/gui/widgets/qmainwindow.cpp | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qsoftkeymanager_s60.cpp b/src/gui/kernel/qsoftkeymanager_s60.cpp index 2a1ecc5..dedf0a1 100644 --- a/src/gui/kernel/qsoftkeymanager_s60.cpp +++ b/src/gui/kernel/qsoftkeymanager_s60.cpp @@ -284,7 +284,12 @@ bool QSoftKeyManagerPrivateS60::setSoftkey(CEikButtonGroupContainer &cba, TPtrC nativeText = qt_QString2TPtrC(text); int command = S60_COMMAND_START + position; setNativeSoftkey(cba, position, command, nativeText); - cba.DimCommand(command, !action->isEnabled()); + // QMainWindow "Options" action is set to invisible in order it does not appear in context menu + // and all invisible actions are by default disabled. + // However we never want to dim options softkey, even it is set to invisible + QVariant property = action->property(MENU_ACTION_PROPERTY); + const bool dimmed = (property.isValid() && property.toBool()) ? false : !action->isEnabled(); + cba.DimCommand(command, dimmed); realSoftKeyActions.insert(command, action); return true; } diff --git a/src/gui/widgets/qmainwindow.cpp b/src/gui/widgets/qmainwindow.cpp index e7c4f45..7e59bb0 100644 --- a/src/gui/widgets/qmainwindow.cpp +++ b/src/gui/widgets/qmainwindow.cpp @@ -119,6 +119,7 @@ void QMainWindowPrivate::init() q->setAttribute(Qt::WA_Hover); #ifdef QT_SOFTKEYS_ENABLED menuBarAction = QSoftKeyManager::createAction(QSoftKeyManager::MenuSoftKey, q); + menuBarAction->setVisible(false); #endif } -- cgit v0.12 From fd30cc9fabe6fc023fbca5b93cfdb116fe194514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Tue, 2 Mar 2010 13:49:33 +0100 Subject: Fixed rendering bugs when scrolling graphics items with drop shadows. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We can't clip source pixmaps to the device rect, as there's no way of knowing which parts of the source pixmap are needed for the part of the graphics effect that's unclipped. Reviewed-by: Bjørn Erik Nilsen --- src/gui/graphicsview/qgraphicsitem.cpp | 28 +++------------------- src/gui/graphicsview/qgraphicsscene.cpp | 23 ++++-------------- tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp | 23 ++++++++++++++++++ 3 files changed, 31 insertions(+), 43 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index bd214e1..368af58 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -10810,6 +10810,7 @@ void QGraphicsItemEffectSourcePrivate::draw(QPainter *painter) } } +// sourceRect must be in the given coordinate system QRect QGraphicsItemEffectSourcePrivate::paddedEffectRect(Qt::CoordinateSystem system, QGraphicsEffect::PixmapPadMode mode, const QRectF &sourceRect, bool *unpadded) const { QRectF effectRectF; @@ -10819,7 +10820,8 @@ QRect QGraphicsItemEffectSourcePrivate::paddedEffectRect(Qt::CoordinateSystem sy if (mode == QGraphicsEffect::PadToEffectiveBoundingRect) { if (info) { - effectRectF = item->graphicsEffect()->boundingRectFor(boundingRect(Qt::DeviceCoordinates)); + QRectF deviceRect = system == Qt::DeviceCoordinates ? sourceRect : info->painter->worldTransform().mapRect(sourceRect); + effectRectF = item->graphicsEffect()->boundingRectFor(deviceRect); if (unpadded) *unpadded = (effectRectF.size() == sourceRect.size()); if (info && system == Qt::LogicalCoordinates) @@ -10868,30 +10870,6 @@ QPixmap QGraphicsItemEffectSourcePrivate::pixmap(Qt::CoordinateSystem system, QP return static_cast(item)->pixmap(); } - if (deviceCoordinates) { - // Clip to viewport rect. - int left, top, right, bottom; - effectRect.getCoords(&left, &top, &right, &bottom); - if (left < 0) { - if (offset) - offset->rx() += -left; - effectRect.setX(0); - } - if (top < 0) { - if (offset) - offset->ry() += -top; - effectRect.setY(0); - } - // NB! We use +-1 for historical reasons (see QRect documentation). - QPaintDevice *device = info->painter->device(); - const int deviceWidth = device->width(); - const int deviceHeight = device->height(); - if (right + 1 > deviceWidth) - effectRect.setRight(deviceWidth - 1); - if (bottom + 1 > deviceHeight) - effectRect.setBottom(deviceHeight -1); - - } if (effectRect.isEmpty()) return QPixmap(); diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index afea082..4ee2301 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -4714,31 +4714,18 @@ void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter * if (sourced->currentCachedSystem() != Qt::LogicalCoordinates && sourced->lastEffectTransform != painter->worldTransform()) { - bool unclipped = false; if (sourced->lastEffectTransform.type() <= QTransform::TxTranslate && painter->worldTransform().type() <= QTransform::TxTranslate) { - QRectF itemRect = item->boundingRect(); - if (!item->d_ptr->children.isEmpty()) - itemRect |= item->childrenBoundingRect(); + QRectF sourceRect = sourced->boundingRect(Qt::DeviceCoordinates); + QRect effectRect = sourced->paddedEffectRect(Qt::DeviceCoordinates, sourced->currentCachedMode(), sourceRect); - QRectF oldSourceRect = sourced->lastEffectTransform.mapRect(itemRect); - QRectF newSourceRect = painter->worldTransform().mapRect(itemRect); - - QRect oldEffectRect = sourced->paddedEffectRect(sourced->currentCachedSystem(), sourced->currentCachedMode(), oldSourceRect); - QRect newEffectRect = sourced->paddedEffectRect(sourced->currentCachedSystem(), sourced->currentCachedMode(), newSourceRect); - - QRect deviceRect(0, 0, painter->device()->width(), painter->device()->height()); - if (deviceRect.contains(oldEffectRect) && deviceRect.contains(newEffectRect)) { - sourced->setCachedOffset(newEffectRect.topLeft()); - unclipped = true; - } + sourced->setCachedOffset(effectRect.topLeft()); + } else { + sourced->invalidateCache(QGraphicsEffectSourcePrivate::TransformChanged); } sourced->lastEffectTransform = painter->worldTransform(); - - if (!unclipped) - sourced->invalidateCache(QGraphicsEffectSourcePrivate::TransformChanged); } item->d_ptr->graphicsEffect->draw(painter); diff --git a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp index 795431b..1007d61 100644 --- a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp +++ b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp @@ -72,6 +72,7 @@ private slots: void drawPixmapItem(); void deviceCoordinateTranslateCaching(); void inheritOpacity(); + void dropShadowClipping(); }; void tst_QGraphicsEffect::initTestCase() @@ -590,6 +591,28 @@ void tst_QGraphicsEffect::inheritOpacity() QTRY_VERIFY(item->numRepaints > numRepaints); } +void tst_QGraphicsEffect::dropShadowClipping() +{ + QImage img(128, 128, QImage::Format_ARGB32_Premultiplied); + img.fill(0xffffffff); + + QGraphicsScene scene; + QGraphicsRectItem *item = new QGraphicsRectItem(-5, -500, 10, 1000); + item->setGraphicsEffect(new QGraphicsDropShadowEffect); + item->setPen(Qt::NoPen); + item->setBrush(Qt::red); + + scene.addItem(item); + + QPainter p(&img); + scene.render(&p, img.rect(), QRect(-64, -64, 128, 128)); + p.end(); + + for (int y = 1; y < img.height(); ++y) + for (int x = 0; x < img.width(); ++x) + QCOMPARE(img.pixel(x, y), img.pixel(x, y-1)); +} + QTEST_MAIN(tst_QGraphicsEffect) #include "tst_qgraphicseffect.moc" -- cgit v0.12 From d6aba8dd917e8306799743dd33905f2037e00d10 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 2 Mar 2010 15:26:03 +0100 Subject: Compile with GCC 3.3 Task-number: QTBUG-8554 Reviewed-by: Gabriel --- src/corelib/kernel/qmetaobject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index cd7418a..b151040 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -943,7 +943,7 @@ QByteArray QMetaObject::normalizedType(const char *type) if (!type || !*type) return result; - QVarLengthArray stackbuf(int(strlen(type)) + 1); + QVarLengthArray stackbuf(qstrlen(type) + 1); qRemoveWhitespace(type, stackbuf.data()); int templdepth = 0; qNormalizeType(stackbuf.data(), templdepth, result); -- cgit v0.12 From 120905fbc48ac7658fac392113bf45e00880c456 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Wed, 24 Feb 2010 16:55:15 +0100 Subject: Expand indicator would not be displayed after removal of a collapsed item's child While setting the hasChildren property of QTreeViewItem, "collapsed" and "not visible" were being mistaken. Auto-test included. Reviewed-by: Olivier Task-number: QTBUG-7443 (cherry picked from commit 77670c3c0fdc3021356e212e94042a0b5a4f4f8c) --- src/gui/itemviews/qtreeview.cpp | 13 +++++++++---- tests/auto/qtreeview/tst_qtreeview.cpp | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp index 706d2a8..37168eb 100644 --- a/src/gui/itemviews/qtreeview.cpp +++ b/src/gui/itemviews/qtreeview.cpp @@ -3770,10 +3770,15 @@ void QTreeViewPrivate::rowsRemoved(const QModelIndex &parent, if (previousSibiling != -1 && after && model->rowCount(parent) == start) viewItems[previousSibiling].hasMoreSiblings = false; - - updateChildCount(parentItem, -removedCount); - if (parentItem != -1 && viewItems.at(parentItem).total == 0) - viewItems[parentItem].hasChildren = false; //every children have been removed; + if (parentItem != -1) { + if (viewItems.at(parentItem).expanded) { + updateChildCount(parentItem, -removedCount); + if (viewItems.at(parentItem).total == 0) + viewItems[parentItem].hasChildren = false; //every children have been removed; + } else if (viewItems[parentItem].hasChildren && !hasVisibleChildren(parent)) { + viewItems[parentItem].hasChildren = false; + } + } if (after) { q->updateGeometries(); viewport->update(); diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp index fd4815e..e39cf6c 100644 --- a/tests/auto/qtreeview/tst_qtreeview.cpp +++ b/tests/auto/qtreeview/tst_qtreeview.cpp @@ -3083,6 +3083,20 @@ void tst_QTreeView::styleOptionViewItem() QApplication::processEvents(); QTRY_VERIFY(delegate.count >= 3); QApplication::processEvents(); + + item00->setText("OnlyOne"); + item0->insertRow(2, new QStandardItem("OnlyOne Last")); + view.collapse(item0->index()); + item0->removeRow(0); + delegate.count = 0; + QTRY_VERIFY(delegate.count >= 2); + QApplication::processEvents(); + + item0->removeRow(1); + item0->setText("OnlyOne"); + delegate.count = 0; + QTRY_VERIFY(delegate.count >= 2); + QApplication::processEvents(); } } -- cgit v0.12 From f56893bbffd5eb26dd77e56707615cbb11a26c9b Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Tue, 2 Mar 2010 15:41:16 +0100 Subject: Rewrite Minehunt demo to use the runtime. --- demos/declarative/minehunt/Description.qml | 34 -- demos/declarative/minehunt/Explosion.qml | 26 -- .../minehunt/MinehuntCore/Explosion.qml | 26 ++ .../MinehuntCore/pics/No-Ones-Laughing-3.jpg | Bin 0 -> 30730 bytes .../minehunt/MinehuntCore/pics/back.png | Bin 0 -> 558 bytes .../minehunt/MinehuntCore/pics/bomb-color.png | Bin 0 -> 284 bytes .../minehunt/MinehuntCore/pics/bomb.png | Bin 0 -> 535 bytes .../minehunt/MinehuntCore/pics/face-sad.png | Bin 0 -> 14844 bytes .../minehunt/MinehuntCore/pics/face-smile-big.png | Bin 0 -> 13810 bytes .../minehunt/MinehuntCore/pics/face-smile.png | Bin 0 -> 15408 bytes .../minehunt/MinehuntCore/pics/flag-color.png | Bin 0 -> 219 bytes .../minehunt/MinehuntCore/pics/flag.png | Bin 0 -> 196 bytes .../minehunt/MinehuntCore/pics/front.png | Bin 0 -> 580 bytes .../minehunt/MinehuntCore/pics/star.png | Bin 0 -> 2677 bytes demos/declarative/minehunt/MinehuntCore/qmldir | 2 + demos/declarative/minehunt/main.cpp | 351 --------------------- demos/declarative/minehunt/minehunt.cpp | 314 ++++++++++++++++++ demos/declarative/minehunt/minehunt.pro | 16 +- demos/declarative/minehunt/minehunt.qml | 24 +- .../minehunt/pics/No-Ones-Laughing-3.jpg | Bin 30730 -> 0 bytes demos/declarative/minehunt/pics/back.png | Bin 558 -> 0 bytes demos/declarative/minehunt/pics/bomb-color.png | Bin 284 -> 0 bytes demos/declarative/minehunt/pics/bomb.png | Bin 535 -> 0 bytes demos/declarative/minehunt/pics/face-sad.png | Bin 14844 -> 0 bytes demos/declarative/minehunt/pics/face-smile-big.png | Bin 13810 -> 0 bytes demos/declarative/minehunt/pics/face-smile.png | Bin 15408 -> 0 bytes demos/declarative/minehunt/pics/flag-color.png | Bin 219 -> 0 bytes demos/declarative/minehunt/pics/flag.png | Bin 196 -> 0 bytes demos/declarative/minehunt/pics/front.png | Bin 580 -> 0 bytes demos/declarative/minehunt/pics/star.png | Bin 2677 -> 0 bytes demos/declarative/minehunt/test.qml | 13 - 31 files changed, 360 insertions(+), 446 deletions(-) delete mode 100644 demos/declarative/minehunt/Description.qml delete mode 100644 demos/declarative/minehunt/Explosion.qml create mode 100644 demos/declarative/minehunt/MinehuntCore/Explosion.qml create mode 100644 demos/declarative/minehunt/MinehuntCore/pics/No-Ones-Laughing-3.jpg create mode 100644 demos/declarative/minehunt/MinehuntCore/pics/back.png create mode 100644 demos/declarative/minehunt/MinehuntCore/pics/bomb-color.png create mode 100644 demos/declarative/minehunt/MinehuntCore/pics/bomb.png create mode 100644 demos/declarative/minehunt/MinehuntCore/pics/face-sad.png create mode 100644 demos/declarative/minehunt/MinehuntCore/pics/face-smile-big.png create mode 100644 demos/declarative/minehunt/MinehuntCore/pics/face-smile.png create mode 100644 demos/declarative/minehunt/MinehuntCore/pics/flag-color.png create mode 100644 demos/declarative/minehunt/MinehuntCore/pics/flag.png create mode 100644 demos/declarative/minehunt/MinehuntCore/pics/front.png create mode 100644 demos/declarative/minehunt/MinehuntCore/pics/star.png create mode 100644 demos/declarative/minehunt/MinehuntCore/qmldir delete mode 100644 demos/declarative/minehunt/main.cpp create mode 100644 demos/declarative/minehunt/minehunt.cpp delete mode 100644 demos/declarative/minehunt/pics/No-Ones-Laughing-3.jpg delete mode 100644 demos/declarative/minehunt/pics/back.png delete mode 100644 demos/declarative/minehunt/pics/bomb-color.png delete mode 100644 demos/declarative/minehunt/pics/bomb.png delete mode 100644 demos/declarative/minehunt/pics/face-sad.png delete mode 100644 demos/declarative/minehunt/pics/face-smile-big.png delete mode 100644 demos/declarative/minehunt/pics/face-smile.png delete mode 100644 demos/declarative/minehunt/pics/flag-color.png delete mode 100644 demos/declarative/minehunt/pics/flag.png delete mode 100644 demos/declarative/minehunt/pics/front.png delete mode 100644 demos/declarative/minehunt/pics/star.png delete mode 100644 demos/declarative/minehunt/test.qml diff --git a/demos/declarative/minehunt/Description.qml b/demos/declarative/minehunt/Description.qml deleted file mode 100644 index cc4d3b2..0000000 --- a/demos/declarative/minehunt/Description.qml +++ /dev/null @@ -1,34 +0,0 @@ -import Qt 4.6 - -Item { - id: page - height: myText.height + 20 - property var text - MouseArea { - anchors.fill: parent - drag.target: page - drag.axis: "XandYAxis" - drag.minimumX: 0 - drag.maximumX: 1000 - drag.minimumY: 0 - drag.maximumY: 1000 - } - Rectangle { - radius: 10 - anchors.fill: parent - color: "lightsteelblue" - } - Item { - x: 10 - y: 10 - width: parent.width - 20 - height: parent.height - 20 - Text { - id: myText - text: page.text - width: parent.width - clip: true - wrap: true - } - } -} diff --git a/demos/declarative/minehunt/Explosion.qml b/demos/declarative/minehunt/Explosion.qml deleted file mode 100644 index e337c46..0000000 --- a/demos/declarative/minehunt/Explosion.qml +++ /dev/null @@ -1,26 +0,0 @@ -import Qt 4.6 - -Item { - property bool explode : false - - Particles { - id: particles - width: 40 - height: 40 - lifeSpan: 1000 - lifeSpanDeviation: 0 - source: "pics/star.png" - count: 0 - angle: 270 - angleDeviation: 360 - velocity: 100 - velocityDeviation: 20 - z: 100 - opacity: 1 - } - states: [ State { name: "exploding"; when: explode == true - StateChangeScript {script: particles.burst(200); } - } - ] - -} diff --git a/demos/declarative/minehunt/MinehuntCore/Explosion.qml b/demos/declarative/minehunt/MinehuntCore/Explosion.qml new file mode 100644 index 0000000..e337c46 --- /dev/null +++ b/demos/declarative/minehunt/MinehuntCore/Explosion.qml @@ -0,0 +1,26 @@ +import Qt 4.6 + +Item { + property bool explode : false + + Particles { + id: particles + width: 40 + height: 40 + lifeSpan: 1000 + lifeSpanDeviation: 0 + source: "pics/star.png" + count: 0 + angle: 270 + angleDeviation: 360 + velocity: 100 + velocityDeviation: 20 + z: 100 + opacity: 1 + } + states: [ State { name: "exploding"; when: explode == true + StateChangeScript {script: particles.burst(200); } + } + ] + +} diff --git a/demos/declarative/minehunt/MinehuntCore/pics/No-Ones-Laughing-3.jpg b/demos/declarative/minehunt/MinehuntCore/pics/No-Ones-Laughing-3.jpg new file mode 100644 index 0000000..445567f Binary files /dev/null and b/demos/declarative/minehunt/MinehuntCore/pics/No-Ones-Laughing-3.jpg differ diff --git a/demos/declarative/minehunt/MinehuntCore/pics/back.png b/demos/declarative/minehunt/MinehuntCore/pics/back.png new file mode 100644 index 0000000..f6b3f0b Binary files /dev/null and b/demos/declarative/minehunt/MinehuntCore/pics/back.png differ diff --git a/demos/declarative/minehunt/MinehuntCore/pics/bomb-color.png b/demos/declarative/minehunt/MinehuntCore/pics/bomb-color.png new file mode 100644 index 0000000..61ad0a9 Binary files /dev/null and b/demos/declarative/minehunt/MinehuntCore/pics/bomb-color.png differ diff --git a/demos/declarative/minehunt/MinehuntCore/pics/bomb.png b/demos/declarative/minehunt/MinehuntCore/pics/bomb.png new file mode 100644 index 0000000..a992575 Binary files /dev/null and b/demos/declarative/minehunt/MinehuntCore/pics/bomb.png differ diff --git a/demos/declarative/minehunt/MinehuntCore/pics/face-sad.png b/demos/declarative/minehunt/MinehuntCore/pics/face-sad.png new file mode 100644 index 0000000..cf00aaf Binary files /dev/null and b/demos/declarative/minehunt/MinehuntCore/pics/face-sad.png differ diff --git a/demos/declarative/minehunt/MinehuntCore/pics/face-smile-big.png b/demos/declarative/minehunt/MinehuntCore/pics/face-smile-big.png new file mode 100644 index 0000000..f9c2335 Binary files /dev/null and b/demos/declarative/minehunt/MinehuntCore/pics/face-smile-big.png differ diff --git a/demos/declarative/minehunt/MinehuntCore/pics/face-smile.png b/demos/declarative/minehunt/MinehuntCore/pics/face-smile.png new file mode 100644 index 0000000..3d66d72 Binary files /dev/null and b/demos/declarative/minehunt/MinehuntCore/pics/face-smile.png differ diff --git a/demos/declarative/minehunt/MinehuntCore/pics/flag-color.png b/demos/declarative/minehunt/MinehuntCore/pics/flag-color.png new file mode 100644 index 0000000..aadad0f Binary files /dev/null and b/demos/declarative/minehunt/MinehuntCore/pics/flag-color.png differ diff --git a/demos/declarative/minehunt/MinehuntCore/pics/flag.png b/demos/declarative/minehunt/MinehuntCore/pics/flag.png new file mode 100644 index 0000000..39cde4d Binary files /dev/null and b/demos/declarative/minehunt/MinehuntCore/pics/flag.png differ diff --git a/demos/declarative/minehunt/MinehuntCore/pics/front.png b/demos/declarative/minehunt/MinehuntCore/pics/front.png new file mode 100644 index 0000000..834331b Binary files /dev/null and b/demos/declarative/minehunt/MinehuntCore/pics/front.png differ diff --git a/demos/declarative/minehunt/MinehuntCore/pics/star.png b/demos/declarative/minehunt/MinehuntCore/pics/star.png new file mode 100644 index 0000000..3772359 Binary files /dev/null and b/demos/declarative/minehunt/MinehuntCore/pics/star.png differ diff --git a/demos/declarative/minehunt/MinehuntCore/qmldir b/demos/declarative/minehunt/MinehuntCore/qmldir new file mode 100644 index 0000000..862c396 --- /dev/null +++ b/demos/declarative/minehunt/MinehuntCore/qmldir @@ -0,0 +1,2 @@ +plugin minehunt +Explosion 1.0 Explosion.qml diff --git a/demos/declarative/minehunt/main.cpp b/demos/declarative/minehunt/main.cpp deleted file mode 100644 index 99856ed..0000000 --- a/demos/declarative/minehunt/main.cpp +++ /dev/null @@ -1,351 +0,0 @@ -/**************************************************************************** -** -** 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 demonstration applications 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 "qdeclarativeengine.h" -#include "qdeclarativecontext.h" -#include "qdeclarative.h" -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -QString fileName = "minehunt.qml"; - -class Tile : public QObject -{ - Q_OBJECT -public: - Tile() : _hasFlag(false), _hasMine(false), _hint(-1), _flipped(false) {} - - Q_PROPERTY(bool hasFlag READ hasFlag WRITE setHasFlag NOTIFY hasFlagChanged); - bool hasFlag() const { return _hasFlag; } - - Q_PROPERTY(bool hasMine READ hasMine NOTIFY hasMineChanged); - bool hasMine() const { return _hasMine; } - - Q_PROPERTY(int hint READ hint NOTIFY hintChanged); - int hint() const { return _hint; } - - Q_PROPERTY(bool flipped READ flipped NOTIFY flippedChanged()); - bool flipped() const { return _flipped; } - - void setHasFlag(bool flag) {if(flag==_hasFlag) return; _hasFlag = flag; emit hasFlagChanged();} - void setHasMine(bool mine) {if(mine==_hasMine) return; _hasMine = mine; emit hasMineChanged();} - void setHint(int hint) { if(hint == _hint) return; _hint = hint; emit hintChanged(); } - void flip() { if (_flipped) return; _flipped = true; emit flippedChanged(); } - void unflip() { if(!_flipped) return; _flipped = false; emit flippedChanged(); } - -signals: - void flippedChanged(); - void hasFlagChanged(); - void hintChanged(); - void hasMineChanged(); - -private: - bool _hasFlag; - bool _hasMine; - int _hint; - bool _flipped; -}; - -QML_DECLARE_TYPE(Tile); - -class MyWidget : public QWidget -{ -Q_OBJECT -public: - MyWidget(int = 370, int = 480, QWidget *parent=0, Qt::WindowFlags flags=0); - ~MyWidget(); - - Q_PROPERTY(QDeclarativeListProperty tiles READ tiles CONSTANT); - QDeclarativeListProperty tiles() { return QDeclarativeListProperty(this, _tiles); } - - Q_PROPERTY(bool isPlaying READ isPlaying NOTIFY isPlayingChanged); - bool isPlaying() {return playing;} - - Q_PROPERTY(bool hasWon READ hasWon NOTIFY hasWonChanged); - bool hasWon() {return won;} - - Q_PROPERTY(int numMines READ numMines NOTIFY numMinesChanged); - int numMines() const{return nMines;} - - Q_PROPERTY(int numFlags READ numFlags NOTIFY numFlagsChanged); - int numFlags() const{return nFlags;} - -public slots: - Q_INVOKABLE bool flip(int row, int col); - Q_INVOKABLE bool flag(int row, int col); - void setBoard(); - void reset(); - -signals: - void isPlayingChanged(); - void hasWonChanged(); - void numMinesChanged(); - void numFlagsChanged(); - -private: - bool onBoard( int r, int c ) const { return r >= 0 && r < numRows && c >= 0 && c < numCols; } - Tile *tile( int row, int col ) { return onBoard(row, col) ? _tiles[col+numRows*row] : 0; } - int getHint(int row, int col); - void setPlaying(bool b){if(b==playing) return; playing=b; emit isPlayingChanged();} - - QDeclarativeView *canvas; - - QList _tiles; - int numCols; - int numRows; - bool playing; - bool won; - int remaining; - int nMines; - int nFlags; -}; - -Q_DECLARE_METATYPE(QList) -MyWidget::MyWidget(int width, int height, QWidget *parent, Qt::WindowFlags flags) -: QWidget(parent, flags), canvas(0), numCols(9), numRows(9), playing(true), won(false) -{ - setObjectName("mainWidget"); - srand(QTime(0,0,0).secsTo(QTime::currentTime())); - - //initialize array - for(int ii = 0; ii < numRows * numCols; ++ii) { - _tiles << new Tile; - } - reset(); - - QVBoxLayout *vbox = new QVBoxLayout; - vbox->setMargin(0); - setLayout(vbox); - - canvas = new QDeclarativeView(this); - canvas->setFixedSize(width, height); - vbox->addWidget(canvas); - - QDeclarativeContext *ctxt = canvas->rootContext(); - ctxt->addDefaultObject(this); - - canvas->setSource(QUrl::fromLocalFile(fileName)); -} - -MyWidget::~MyWidget() -{ -} - -void MyWidget::setBoard() -{ - foreach(Tile* t, _tiles){ - t->setHasMine(false); - t->setHint(-1); - } - //place mines - int mines = nMines; - remaining = numRows*numCols-mines; - while ( mines ) { - int col = int((double(rand()) / double(RAND_MAX)) * numCols); - int row = int((double(rand()) / double(RAND_MAX)) * numRows); - - Tile* t = tile( row, col ); - - if (t && !t->hasMine()) { - t->setHasMine( true ); - mines--; - } - } - - //set hints - for (int r = 0; r < numRows; r++) - for (int c = 0; c < numCols; c++) { - Tile* t = tile(r, c); - if (t && !t->hasMine()) { - int hint = getHint(r,c); - t->setHint(hint); - } - } - - setPlaying(true); -} - -void MyWidget::reset() -{ - foreach(Tile* t, _tiles){ - t->unflip(); - t->setHasFlag(false); - } - nMines = 12; - nFlags = 0; - setPlaying(false); - QTimer::singleShot(600,this, SLOT(setBoard())); -} - -int MyWidget::getHint(int row, int col) -{ - int hint = 0; - for (int c = col-1; c <= col+1; c++) - for (int r = row-1; r <= row+1; r++) { - Tile* t = tile(r, c); - if (t && t->hasMine()) - hint++; - } - return hint; -} - -bool MyWidget::flip(int row, int col) -{ - if(!playing) - return false; - - Tile *t = tile(row, col); - if (!t || t->hasFlag()) - return false; - - if(t->flipped()){ - int flags = 0; - for (int c = col-1; c <= col+1; c++) - for (int r = row-1; r <= row+1; r++) { - Tile *nearT = tile(r, c); - if(!nearT || nearT == t) - continue; - if(nearT->hasFlag()) - flags++; - } - if(!t->hint() || t->hint() != flags) - return false; - for (int c = col-1; c <= col+1; c++) - for (int r = row-1; r <= row+1; r++) { - Tile *nearT = tile(r, c); - if (nearT && !nearT->flipped() && !nearT->hasFlag()) { - flip( r, c ); - } - } - return true; - } - - t->flip(); - - if (t->hint() == 0) { - for (int c = col-1; c <= col+1; c++) - for (int r = row-1; r <= row+1; r++) { - Tile* t = tile(r, c); - if (t && !t->flipped()) { - flip( r, c ); - } - } - } - - if(t->hasMine()){ - for (int r = 0; r < numRows; r++)//Flip all other mines - for (int c = 0; c < numCols; c++) { - Tile* t = tile(r, c); - if (t && t->hasMine()) { - flip(r, c); - } - } - won = false; - hasWonChanged(); - setPlaying(false); - } - - remaining--; - if(!remaining){ - won = true; - hasWonChanged(); - setPlaying(false); - } - return true; -} - -bool MyWidget::flag(int row, int col) -{ - Tile *t = tile(row, col); - if(!t) - return false; - - t->setHasFlag(!t->hasFlag()); - nFlags += (t->hasFlag()?1:-1); - emit numFlagsChanged(); - return true; -} -///////////////////////////////////////////////////////// - -int main(int argc, char ** argv) -{ -#ifdef Q_WS_X11 - // native on X11 is terrible for this demo. - QApplication::setGraphicsSystem("raster"); -#endif - QApplication app(argc, argv); - - bool frameless = false; - - int width = 370; - int height = 480; - - QML_REGISTER_TYPE(0,0,0,Tile,Tile); - - for (int i = 1; i < argc; ++i) { - QString arg = argv[i]; - if (arg == "-frameless") { - frameless = true; - } else if(arg == "-width" && i < (argc - 1)) { - ++i; - width = ::atoi(argv[i]); - } else if(arg == "-height" && i < (argc - 1)) { - ++i; - height = ::atoi(argv[i]); - } else if (arg[0] != '-') { - fileName = arg; - } - } - - MyWidget wid(width, height, 0, frameless ? Qt::FramelessWindowHint : Qt::Widget); - wid.show(); - - return app.exec(); -} - -#include "main.moc" diff --git a/demos/declarative/minehunt/minehunt.cpp b/demos/declarative/minehunt/minehunt.cpp new file mode 100644 index 0000000..89845ef --- /dev/null +++ b/demos/declarative/minehunt/minehunt.cpp @@ -0,0 +1,314 @@ +/**************************************************************************** +** +** 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 demonstration applications 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 +#include +#include +#include +#include + +#include +#include + +class Tile : public QObject +{ + Q_OBJECT +public: + Tile() : _hasFlag(false), _hasMine(false), _hint(-1), _flipped(false) {} + + Q_PROPERTY(bool hasFlag READ hasFlag WRITE setHasFlag NOTIFY hasFlagChanged); + bool hasFlag() const { return _hasFlag; } + + Q_PROPERTY(bool hasMine READ hasMine NOTIFY hasMineChanged); + bool hasMine() const { return _hasMine; } + + Q_PROPERTY(int hint READ hint NOTIFY hintChanged); + int hint() const { return _hint; } + + Q_PROPERTY(bool flipped READ flipped NOTIFY flippedChanged()); + bool flipped() const { return _flipped; } + + void setHasFlag(bool flag) {if(flag==_hasFlag) return; _hasFlag = flag; emit hasFlagChanged();} + void setHasMine(bool mine) {if(mine==_hasMine) return; _hasMine = mine; emit hasMineChanged();} + void setHint(int hint) { if(hint == _hint) return; _hint = hint; emit hintChanged(); } + void flip() { if (_flipped) return; _flipped = true; emit flippedChanged(); } + void unflip() { if(!_flipped) return; _flipped = false; emit flippedChanged(); } + +signals: + void flippedChanged(); + void hasFlagChanged(); + void hintChanged(); + void hasMineChanged(); + +private: + bool _hasFlag; + bool _hasMine; + int _hint; + bool _flipped; +}; + +class MinehuntGame : public QObject +{ + Q_OBJECT +public: + MinehuntGame(); + + Q_PROPERTY(QDeclarativeListProperty tiles READ tiles CONSTANT); + QDeclarativeListProperty tiles() { return QDeclarativeListProperty(this, _tiles); } + + Q_PROPERTY(bool isPlaying READ isPlaying NOTIFY isPlayingChanged); + bool isPlaying() {return playing;} + + Q_PROPERTY(bool hasWon READ hasWon NOTIFY hasWonChanged); + bool hasWon() {return won;} + + Q_PROPERTY(int numMines READ numMines NOTIFY numMinesChanged); + int numMines() const{return nMines;} + + Q_PROPERTY(int numFlags READ numFlags NOTIFY numFlagsChanged); + int numFlags() const{return nFlags;} + +public slots: + Q_INVOKABLE bool flip(int row, int col); + Q_INVOKABLE bool flag(int row, int col); + void setBoard(); + void reset(); + +signals: + void isPlayingChanged(); + void hasWonChanged(); + void numMinesChanged(); + void numFlagsChanged(); + +private: + bool onBoard( int r, int c ) const { return r >= 0 && r < numRows && c >= 0 && c < numCols; } + Tile *tile( int row, int col ) { return onBoard(row, col) ? _tiles[col+numRows*row] : 0; } + int getHint(int row, int col); + void setPlaying(bool b){if(b==playing) return; playing=b; emit isPlayingChanged();} + + QList _tiles; + int numCols; + int numRows; + bool playing; + bool won; + int remaining; + int nMines; + int nFlags; +}; + +MinehuntGame::MinehuntGame() +: numCols(9), numRows(9), playing(true), won(false) +{ + setObjectName("mainObject"); + srand(QTime(0,0,0).secsTo(QTime::currentTime())); + + //initialize array + for(int ii = 0; ii < numRows * numCols; ++ii) { + _tiles << new Tile; + } + reset(); + +} + +void MinehuntGame::setBoard() +{ + foreach(Tile* t, _tiles){ + t->setHasMine(false); + t->setHint(-1); + } + //place mines + int mines = nMines; + remaining = numRows*numCols-mines; + while ( mines ) { + int col = int((double(rand()) / double(RAND_MAX)) * numCols); + int row = int((double(rand()) / double(RAND_MAX)) * numRows); + + Tile* t = tile( row, col ); + + if (t && !t->hasMine()) { + t->setHasMine( true ); + mines--; + } + } + + //set hints + for (int r = 0; r < numRows; r++) + for (int c = 0; c < numCols; c++) { + Tile* t = tile(r, c); + if (t && !t->hasMine()) { + int hint = getHint(r,c); + t->setHint(hint); + } + } + + setPlaying(true); +} + +void MinehuntGame::reset() +{ + foreach(Tile* t, _tiles){ + t->unflip(); + t->setHasFlag(false); + } + nMines = 12; + nFlags = 0; + setPlaying(false); + QTimer::singleShot(600,this, SLOT(setBoard())); +} + +int MinehuntGame::getHint(int row, int col) +{ + int hint = 0; + for (int c = col-1; c <= col+1; c++) + for (int r = row-1; r <= row+1; r++) { + Tile* t = tile(r, c); + if (t && t->hasMine()) + hint++; + } + return hint; +} + +bool MinehuntGame::flip(int row, int col) +{ + if(!playing) + return false; + + Tile *t = tile(row, col); + if (!t || t->hasFlag()) + return false; + + if(t->flipped()){ + int flags = 0; + for (int c = col-1; c <= col+1; c++) + for (int r = row-1; r <= row+1; r++) { + Tile *nearT = tile(r, c); + if(!nearT || nearT == t) + continue; + if(nearT->hasFlag()) + flags++; + } + if(!t->hint() || t->hint() != flags) + return false; + for (int c = col-1; c <= col+1; c++) + for (int r = row-1; r <= row+1; r++) { + Tile *nearT = tile(r, c); + if (nearT && !nearT->flipped() && !nearT->hasFlag()) { + flip( r, c ); + } + } + return true; + } + + t->flip(); + + if (t->hint() == 0) { + for (int c = col-1; c <= col+1; c++) + for (int r = row-1; r <= row+1; r++) { + Tile* t = tile(r, c); + if (t && !t->flipped()) { + flip( r, c ); + } + } + } + + if(t->hasMine()){ + for (int r = 0; r < numRows; r++)//Flip all other mines + for (int c = 0; c < numCols; c++) { + Tile* t = tile(r, c); + if (t && t->hasMine()) { + flip(r, c); + } + } + won = false; + hasWonChanged(); + setPlaying(false); + } + + remaining--; + if(!remaining){ + won = true; + hasWonChanged(); + setPlaying(false); + } + return true; +} + +bool MinehuntGame::flag(int row, int col) +{ + Tile *t = tile(row, col); + if(!t) + return false; + + t->setHasFlag(!t->hasFlag()); + nFlags += (t->hasFlag()?1:-1); + emit numFlagsChanged(); + return true; +} + +QML_DECLARE_TYPE(Tile); +QML_DECLARE_TYPE(MinehuntGame); + +class MinehuntExtensionPlugin : public QDeclarativeExtensionPlugin +{ + Q_OBJECT + + public: + void registerTypes(const char *uri) { + Q_UNUSED(uri); + QML_REGISTER_TYPE(SameGameCore, 0, 1, Tile, Tile); + QML_REGISTER_TYPE(SameGameCore, 0, 1, Game, MinehuntGame); + } + + void initializeEngine(QDeclarativeEngine *engine, const char *uri) { + Q_UNUSED(uri); + + srand(QTime(0,0,0).secsTo(QTime::currentTime())); + + MinehuntGame* game = new MinehuntGame(); + + engine->rootContext()->addDefaultObject(game); + } +}; + +#include "minehunt.moc" + +Q_EXPORT_PLUGIN(MinehuntExtensionPlugin); + diff --git a/demos/declarative/minehunt/minehunt.pro b/demos/declarative/minehunt/minehunt.pro index 01791b1..a497b0f 100644 --- a/demos/declarative/minehunt/minehunt.pro +++ b/demos/declarative/minehunt/minehunt.pro @@ -1,9 +1,11 @@ -SOURCES = main.cpp +TEMPLATE = lib +TARGET = minehunt +QT += declarative +CONFIG += qt plugin -QT += script declarative -contains(QT_CONFIG, opengles2)|contains(QT_CONFIG, opengles1): QT += opengl +TARGET = $$qtLibraryTarget($$TARGET) +DESTDIR = MinehuntCore + +# Input +SOURCES += minehunt.cpp -target.path = $$[QT_INSTALL_EXAMPLES]/declarative/minehunt -sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS minehunt.pro -sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/minehunt -INSTALLS += target sources diff --git a/demos/declarative/minehunt/minehunt.qml b/demos/declarative/minehunt/minehunt.qml index 456f25b..9e99706 100644 --- a/demos/declarative/minehunt/minehunt.qml +++ b/demos/declarative/minehunt/minehunt.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import MinehuntCore 1.0 Item { id: field @@ -24,13 +25,13 @@ Item { angle: flipable.angle; } front: Image { - source: "pics/front.png" + source: "MinehuntCore/pics/front.png" width: 40 height: 40 Image { anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter - source: "pics/flag.png" + source: "MinehuntCore/pics/flag.png" opacity: modelData.hasFlag Behavior on opacity { NumberAnimation { @@ -41,7 +42,7 @@ Item { } } back: Image { - source: "pics/back.png" + source: "MinehuntCore/pics/back.png" width: 40 height: 40 Text { @@ -55,7 +56,7 @@ Item { Image { anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter - source: "pics/bomb.png" + source: "MinehuntCore/pics/bomb.png" opacity: modelData.hasMine } Explosion { @@ -120,16 +121,9 @@ Item { } ] Image { - source: "pics/No-Ones-Laughing-3.jpg" + source: "MinehuntCore/pics/No-Ones-Laughing-3.jpg" fillMode: Image.Tile } - Description { - text: "Use the 'minehunt' executable to run this demo!" - width: 300 - opacity: tiles?0:1 - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - } Repeater { id: repeater model: tiles @@ -156,7 +150,7 @@ Item { Image { // x: 100 // y: 20 - source: "pics/bomb-color.png" + source: "MinehuntCore/pics/bomb-color.png" } Text { // x: 100 @@ -172,7 +166,7 @@ Item { Image { // x: 140 // y: 20 - source: "pics/flag-color.png" + source: "MinehuntCore/pics/flag-color.png" } Text { // x: 140 @@ -187,7 +181,7 @@ Item { y: 390 anchors.right: field.right anchors.rightMargin: 20 - source: isPlaying ? 'pics/face-smile.png' : hasWon ? 'pics/face-smile-big.png': 'pics/face-sad.png' + source: isPlaying ? 'MinehuntCore/pics/face-smile.png' : hasWon ? 'MinehuntCore/pics/face-smile-big.png': 'MinehuntCore/pics/face-sad.png' MouseArea { anchors.fill: parent onPressed: { reset() } diff --git a/demos/declarative/minehunt/pics/No-Ones-Laughing-3.jpg b/demos/declarative/minehunt/pics/No-Ones-Laughing-3.jpg deleted file mode 100644 index 445567f..0000000 Binary files a/demos/declarative/minehunt/pics/No-Ones-Laughing-3.jpg and /dev/null differ diff --git a/demos/declarative/minehunt/pics/back.png b/demos/declarative/minehunt/pics/back.png deleted file mode 100644 index f6b3f0b..0000000 Binary files a/demos/declarative/minehunt/pics/back.png and /dev/null differ diff --git a/demos/declarative/minehunt/pics/bomb-color.png b/demos/declarative/minehunt/pics/bomb-color.png deleted file mode 100644 index 61ad0a9..0000000 Binary files a/demos/declarative/minehunt/pics/bomb-color.png and /dev/null differ diff --git a/demos/declarative/minehunt/pics/bomb.png b/demos/declarative/minehunt/pics/bomb.png deleted file mode 100644 index a992575..0000000 Binary files a/demos/declarative/minehunt/pics/bomb.png and /dev/null differ diff --git a/demos/declarative/minehunt/pics/face-sad.png b/demos/declarative/minehunt/pics/face-sad.png deleted file mode 100644 index cf00aaf..0000000 Binary files a/demos/declarative/minehunt/pics/face-sad.png and /dev/null differ diff --git a/demos/declarative/minehunt/pics/face-smile-big.png b/demos/declarative/minehunt/pics/face-smile-big.png deleted file mode 100644 index f9c2335..0000000 Binary files a/demos/declarative/minehunt/pics/face-smile-big.png and /dev/null differ diff --git a/demos/declarative/minehunt/pics/face-smile.png b/demos/declarative/minehunt/pics/face-smile.png deleted file mode 100644 index 3d66d72..0000000 Binary files a/demos/declarative/minehunt/pics/face-smile.png and /dev/null differ diff --git a/demos/declarative/minehunt/pics/flag-color.png b/demos/declarative/minehunt/pics/flag-color.png deleted file mode 100644 index aadad0f..0000000 Binary files a/demos/declarative/minehunt/pics/flag-color.png and /dev/null differ diff --git a/demos/declarative/minehunt/pics/flag.png b/demos/declarative/minehunt/pics/flag.png deleted file mode 100644 index 39cde4d..0000000 Binary files a/demos/declarative/minehunt/pics/flag.png and /dev/null differ diff --git a/demos/declarative/minehunt/pics/front.png b/demos/declarative/minehunt/pics/front.png deleted file mode 100644 index 834331b..0000000 Binary files a/demos/declarative/minehunt/pics/front.png and /dev/null differ diff --git a/demos/declarative/minehunt/pics/star.png b/demos/declarative/minehunt/pics/star.png deleted file mode 100644 index 3772359..0000000 Binary files a/demos/declarative/minehunt/pics/star.png and /dev/null differ diff --git a/demos/declarative/minehunt/test.qml b/demos/declarative/minehunt/test.qml deleted file mode 100644 index 11ed182..0000000 --- a/demos/declarative/minehunt/test.qml +++ /dev/null @@ -1,13 +0,0 @@ -import Qt 4.6 - - Image { - source: "pics/front.png" - width: 40 - height: 40 - Image { - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - source: "pics/flag.png" - opacity: 1 - } - } -- cgit v0.12 From 115c3214161152c99f488fd4cce39b15b40b3600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Tue, 2 Mar 2010 15:34:29 +0100 Subject: Fixed a regression in the syntax highlighter Caused by merging an old version of merge request 481. This patch updates it to the latest version. Merge-request: 481 Reviewed-by: Ritt Konstantin --- src/gui/text/qsyntaxhighlighter.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp index 28af5bb..e594b7e 100644 --- a/src/gui/text/qsyntaxhighlighter.cpp +++ b/src/gui/text/qsyntaxhighlighter.cpp @@ -115,6 +115,9 @@ void QSyntaxHighlighterPrivate::applyFormatChanges() formatsChanged = true; } } + } else if (!ranges.isEmpty()) { + ranges.clear(); + formatsChanged = true; } QTextCharFormat emptyFormat; -- cgit v0.12 From dfcbab749e51cddbbdec35d58c37814d4d21f30f Mon Sep 17 00:00:00 2001 From: Jani Hautakangas Date: Tue, 2 Mar 2010 16:20:12 +0200 Subject: Symbian event dispatcher needs to run all active objects. Symbian event dispatcher runs only active objects that have priority CActive::EPriorityIdle or above. CActive defines standard priorities but priority can be anything from KMinTInt to KMaxTInt Task-number: QTBUG-8654 Reviewed-by: axis --- src/corelib/kernel/qeventdispatcher_symbian.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp index 1d7be79..191be6c 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian.cpp +++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp @@ -733,7 +733,7 @@ bool QEventDispatcherSymbian::processEvents ( QEventLoop::ProcessEventsFlags fla } TInt error; - handledSymbianEvent = CActiveScheduler::RunIfReady(error, CActive::EPriorityIdle); + handledSymbianEvent = CActiveScheduler::RunIfReady(error, KMinTInt); if (error) { qWarning("CActiveScheduler::RunIfReady() returned error: %i\n", error); CActiveScheduler::Current()->Error(error); -- cgit v0.12 From e16b33eefa365986f8e0d26c710cb7568bf9abff Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Tue, 2 Mar 2010 15:54:38 +0100 Subject: Refactor demos Samegame and Twitter are now trying the new naming convention. --- .../samegame/SamegameCore/BoomBlock.qml | 55 +++++ demos/declarative/samegame/SamegameCore/Button.qml | 25 +++ demos/declarative/samegame/SamegameCore/Dialog.qml | 22 ++ .../samegame/SamegameCore/pics/background.png | Bin 0 -> 313930 bytes .../samegame/SamegameCore/pics/blueStar.png | Bin 0 -> 278 bytes .../samegame/SamegameCore/pics/blueStone.png | Bin 0 -> 3054 bytes .../samegame/SamegameCore/pics/greenStar.png | Bin 0 -> 273 bytes .../samegame/SamegameCore/pics/greenStone.png | Bin 0 -> 2932 bytes .../samegame/SamegameCore/pics/redStar.png | Bin 0 -> 274 bytes .../samegame/SamegameCore/pics/redStone.png | Bin 0 -> 2902 bytes .../samegame/SamegameCore/pics/star.png | Bin 0 -> 262 bytes .../samegame/SamegameCore/pics/yellowStone.png | Bin 0 -> 3056 bytes demos/declarative/samegame/SamegameCore/qmldir | 3 + .../declarative/samegame/SamegameCore/samegame.js | 250 +++++++++++++++++++++ demos/declarative/samegame/content/BoomBlock.qml | 55 ----- demos/declarative/samegame/content/Button.qml | 25 --- demos/declarative/samegame/content/Dialog.qml | 22 -- .../samegame/content/pics/background.png | Bin 313930 -> 0 bytes .../declarative/samegame/content/pics/blueStar.png | Bin 278 -> 0 bytes .../samegame/content/pics/blueStone.png | Bin 3054 -> 0 bytes .../samegame/content/pics/greenStar.png | Bin 273 -> 0 bytes .../samegame/content/pics/greenStone.png | Bin 2932 -> 0 bytes .../declarative/samegame/content/pics/redStar.png | Bin 274 -> 0 bytes .../declarative/samegame/content/pics/redStone.png | Bin 2902 -> 0 bytes demos/declarative/samegame/content/pics/star.png | Bin 262 -> 0 bytes .../samegame/content/pics/yellowStone.png | Bin 3056 -> 0 bytes demos/declarative/samegame/content/qmldir | 3 - demos/declarative/samegame/content/samegame.js | 250 --------------------- demos/declarative/samegame/samegame.qml | 6 +- demos/declarative/twitter/TwitterCore/AuthView.qml | 99 ++++++++ demos/declarative/twitter/TwitterCore/Button.qml | 49 ++++ .../twitter/TwitterCore/FatDelegate.qml | 46 ++++ .../twitter/TwitterCore/HomeTitleBar.qml | 121 ++++++++++ demos/declarative/twitter/TwitterCore/Loading.qml | 8 + .../twitter/TwitterCore/MultiTitleBar.qml | 24 ++ demos/declarative/twitter/TwitterCore/RssModel.qml | 44 ++++ demos/declarative/twitter/TwitterCore/TitleBar.qml | 77 +++++++ demos/declarative/twitter/TwitterCore/ToolBar.qml | 24 ++ .../declarative/twitter/TwitterCore/UserModel.qml | 26 +++ .../twitter/TwitterCore/images/gloss.png | Bin 0 -> 1236 bytes .../twitter/TwitterCore/images/lineedit.png | Bin 0 -> 1415 bytes .../twitter/TwitterCore/images/lineedit.sci | 5 + .../twitter/TwitterCore/images/loading.png | Bin 0 -> 813 bytes .../twitter/TwitterCore/images/stripes.png | Bin 0 -> 257 bytes .../twitter/TwitterCore/images/titlebar.png | Bin 0 -> 1436 bytes .../twitter/TwitterCore/images/titlebar.sci | 5 + .../twitter/TwitterCore/images/toolbutton.png | Bin 0 -> 2550 bytes .../twitter/TwitterCore/images/toolbutton.sci | 5 + demos/declarative/twitter/TwitterCore/qmldir | 10 + demos/declarative/twitter/content/AuthView.qml | 99 -------- demos/declarative/twitter/content/Button.qml | 49 ---- demos/declarative/twitter/content/FatDelegate.qml | 46 ---- demos/declarative/twitter/content/HomeTitleBar.qml | 121 ---------- demos/declarative/twitter/content/Loading.qml | 8 - .../declarative/twitter/content/MultiTitleBar.qml | 24 -- demos/declarative/twitter/content/RssModel.qml | 44 ---- demos/declarative/twitter/content/TitleBar.qml | 77 ------- demos/declarative/twitter/content/ToolBar.qml | 24 -- demos/declarative/twitter/content/UserModel.qml | 26 --- demos/declarative/twitter/content/images/gloss.png | Bin 1236 -> 0 bytes .../twitter/content/images/lineedit.png | Bin 1415 -> 0 bytes .../twitter/content/images/lineedit.sci | 5 - .../declarative/twitter/content/images/loading.png | Bin 813 -> 0 bytes .../declarative/twitter/content/images/stripes.png | Bin 257 -> 0 bytes .../twitter/content/images/titlebar.png | Bin 1436 -> 0 bytes .../twitter/content/images/titlebar.sci | 5 - .../twitter/content/images/toolbutton.png | Bin 2550 -> 0 bytes .../twitter/content/images/toolbutton.sci | 5 - demos/declarative/twitter/twitter.qml | 4 +- 69 files changed, 903 insertions(+), 893 deletions(-) create mode 100644 demos/declarative/samegame/SamegameCore/BoomBlock.qml create mode 100644 demos/declarative/samegame/SamegameCore/Button.qml create mode 100644 demos/declarative/samegame/SamegameCore/Dialog.qml create mode 100644 demos/declarative/samegame/SamegameCore/pics/background.png create mode 100644 demos/declarative/samegame/SamegameCore/pics/blueStar.png create mode 100644 demos/declarative/samegame/SamegameCore/pics/blueStone.png create mode 100644 demos/declarative/samegame/SamegameCore/pics/greenStar.png create mode 100644 demos/declarative/samegame/SamegameCore/pics/greenStone.png create mode 100644 demos/declarative/samegame/SamegameCore/pics/redStar.png create mode 100644 demos/declarative/samegame/SamegameCore/pics/redStone.png create mode 100644 demos/declarative/samegame/SamegameCore/pics/star.png create mode 100644 demos/declarative/samegame/SamegameCore/pics/yellowStone.png create mode 100644 demos/declarative/samegame/SamegameCore/qmldir create mode 100755 demos/declarative/samegame/SamegameCore/samegame.js delete mode 100644 demos/declarative/samegame/content/BoomBlock.qml delete mode 100644 demos/declarative/samegame/content/Button.qml delete mode 100644 demos/declarative/samegame/content/Dialog.qml delete mode 100644 demos/declarative/samegame/content/pics/background.png delete mode 100644 demos/declarative/samegame/content/pics/blueStar.png delete mode 100644 demos/declarative/samegame/content/pics/blueStone.png delete mode 100644 demos/declarative/samegame/content/pics/greenStar.png delete mode 100644 demos/declarative/samegame/content/pics/greenStone.png delete mode 100644 demos/declarative/samegame/content/pics/redStar.png delete mode 100644 demos/declarative/samegame/content/pics/redStone.png delete mode 100644 demos/declarative/samegame/content/pics/star.png delete mode 100644 demos/declarative/samegame/content/pics/yellowStone.png delete mode 100644 demos/declarative/samegame/content/qmldir delete mode 100755 demos/declarative/samegame/content/samegame.js create mode 100644 demos/declarative/twitter/TwitterCore/AuthView.qml create mode 100644 demos/declarative/twitter/TwitterCore/Button.qml create mode 100644 demos/declarative/twitter/TwitterCore/FatDelegate.qml create mode 100644 demos/declarative/twitter/TwitterCore/HomeTitleBar.qml create mode 100644 demos/declarative/twitter/TwitterCore/Loading.qml create mode 100644 demos/declarative/twitter/TwitterCore/MultiTitleBar.qml create mode 100644 demos/declarative/twitter/TwitterCore/RssModel.qml create mode 100644 demos/declarative/twitter/TwitterCore/TitleBar.qml create mode 100644 demos/declarative/twitter/TwitterCore/ToolBar.qml create mode 100644 demos/declarative/twitter/TwitterCore/UserModel.qml create mode 100644 demos/declarative/twitter/TwitterCore/images/gloss.png create mode 100644 demos/declarative/twitter/TwitterCore/images/lineedit.png create mode 100644 demos/declarative/twitter/TwitterCore/images/lineedit.sci create mode 100644 demos/declarative/twitter/TwitterCore/images/loading.png create mode 100644 demos/declarative/twitter/TwitterCore/images/stripes.png create mode 100644 demos/declarative/twitter/TwitterCore/images/titlebar.png create mode 100644 demos/declarative/twitter/TwitterCore/images/titlebar.sci create mode 100644 demos/declarative/twitter/TwitterCore/images/toolbutton.png create mode 100644 demos/declarative/twitter/TwitterCore/images/toolbutton.sci create mode 100644 demos/declarative/twitter/TwitterCore/qmldir delete mode 100644 demos/declarative/twitter/content/AuthView.qml delete mode 100644 demos/declarative/twitter/content/Button.qml delete mode 100644 demos/declarative/twitter/content/FatDelegate.qml delete mode 100644 demos/declarative/twitter/content/HomeTitleBar.qml delete mode 100644 demos/declarative/twitter/content/Loading.qml delete mode 100644 demos/declarative/twitter/content/MultiTitleBar.qml delete mode 100644 demos/declarative/twitter/content/RssModel.qml delete mode 100644 demos/declarative/twitter/content/TitleBar.qml delete mode 100644 demos/declarative/twitter/content/ToolBar.qml delete mode 100644 demos/declarative/twitter/content/UserModel.qml delete mode 100644 demos/declarative/twitter/content/images/gloss.png delete mode 100644 demos/declarative/twitter/content/images/lineedit.png delete mode 100644 demos/declarative/twitter/content/images/lineedit.sci delete mode 100644 demos/declarative/twitter/content/images/loading.png delete mode 100644 demos/declarative/twitter/content/images/stripes.png delete mode 100644 demos/declarative/twitter/content/images/titlebar.png delete mode 100644 demos/declarative/twitter/content/images/titlebar.sci delete mode 100644 demos/declarative/twitter/content/images/toolbutton.png delete mode 100644 demos/declarative/twitter/content/images/toolbutton.sci diff --git a/demos/declarative/samegame/SamegameCore/BoomBlock.qml b/demos/declarative/samegame/SamegameCore/BoomBlock.qml new file mode 100644 index 0000000..e48194a --- /dev/null +++ b/demos/declarative/samegame/SamegameCore/BoomBlock.qml @@ -0,0 +1,55 @@ +import Qt 4.6 + +Item { id:block + property bool dying: false + property bool spawned: false + property int type: 0 + property int targetX: 0 + property int targetY: 0 + + SpringFollow on x { enabled: spawned; source: targetX; spring: 2; damping: 0.2 } + SpringFollow on y { source: targetY; spring: 2; damping: 0.2 } + + Image { id: img + source: { + if(type == 0){ + "pics/redStone.png"; + } else if(type == 1) { + "pics/blueStone.png"; + } else { + "pics/greenStone.png"; + } + } + opacity: 0 + Behavior on opacity { NumberAnimation { duration: 200 } } + anchors.fill: parent + } + + Particles { id: particles + width:1; height:1; anchors.centerIn: parent; + emissionRate: 0; + lifeSpan: 700; lifeSpanDeviation: 600; + angle: 0; angleDeviation: 360; + velocity: 100; velocityDeviation:30; + source: { + if(type == 0){ + "pics/redStar.png"; + } else if (type == 1) { + "pics/blueStar.png"; + } else { + "pics/greenStar.png"; + } + } + } + + states: [ + State{ name: "AliveState"; when: spawned == true && dying == false + PropertyChanges { target: img; opacity: 1 } + }, + State{ name: "DeathState"; when: dying == true + StateChangeScript { script: particles.burst(50); } + PropertyChanges { target: img; opacity: 0 } + StateChangeScript { script: block.destroy(1000); } + } + ] +} diff --git a/demos/declarative/samegame/SamegameCore/Button.qml b/demos/declarative/samegame/SamegameCore/Button.qml new file mode 100644 index 0000000..6629302 --- /dev/null +++ b/demos/declarative/samegame/SamegameCore/Button.qml @@ -0,0 +1,25 @@ +import Qt 4.6 + +Rectangle { + id: container + + signal clicked + property string text: "Button" + + color: activePalette.button; smooth: true + width: txtItem.width + 20; height: txtItem.height + 6 + border.width: 1; border.color: Qt.darker(activePalette.button); radius: 8; + + gradient: Gradient { + GradientStop { + id: topGrad; position: 0.0 + color: if (mr.pressed) { activePalette.dark } else { activePalette.light } } + GradientStop { position: 1.0; color: activePalette.button } + } + + MouseArea { id: mr; anchors.fill: parent; onClicked: container.clicked() } + + Text { + id: txtItem; text: container.text; anchors.centerIn: container; color: activePalette.buttonText + } +} diff --git a/demos/declarative/samegame/SamegameCore/Dialog.qml b/demos/declarative/samegame/SamegameCore/Dialog.qml new file mode 100644 index 0000000..6d5d6b5 --- /dev/null +++ b/demos/declarative/samegame/SamegameCore/Dialog.qml @@ -0,0 +1,22 @@ +import Qt 4.6 + +Rectangle { + id: page + function forceClose() { + page.closed(); + page.opacity = 0; + } + function show(txt) { + myText.text = txt; + page.opacity = 1; + } + signal closed(); + property Item text: myText + color: "white"; border.width: 1; width: myText.width + 20; height: myText.height + 40; + opacity: 0 + Behavior on opacity { + NumberAnimation { duration: 1000 } + } + Text { id: myText; anchors.centerIn: parent; text: "Hello World!" } + MouseArea { id: mr; anchors.fill: parent; onClicked: forceClose(); } +} diff --git a/demos/declarative/samegame/SamegameCore/pics/background.png b/demos/declarative/samegame/SamegameCore/pics/background.png new file mode 100644 index 0000000..3734a27 Binary files /dev/null and b/demos/declarative/samegame/SamegameCore/pics/background.png differ diff --git a/demos/declarative/samegame/SamegameCore/pics/blueStar.png b/demos/declarative/samegame/SamegameCore/pics/blueStar.png new file mode 100644 index 0000000..ff9588f Binary files /dev/null and b/demos/declarative/samegame/SamegameCore/pics/blueStar.png differ diff --git a/demos/declarative/samegame/SamegameCore/pics/blueStone.png b/demos/declarative/samegame/SamegameCore/pics/blueStone.png new file mode 100644 index 0000000..20e43c7 Binary files /dev/null and b/demos/declarative/samegame/SamegameCore/pics/blueStone.png differ diff --git a/demos/declarative/samegame/SamegameCore/pics/greenStar.png b/demos/declarative/samegame/SamegameCore/pics/greenStar.png new file mode 100644 index 0000000..cd06854 Binary files /dev/null and b/demos/declarative/samegame/SamegameCore/pics/greenStar.png differ diff --git a/demos/declarative/samegame/SamegameCore/pics/greenStone.png b/demos/declarative/samegame/SamegameCore/pics/greenStone.png new file mode 100644 index 0000000..b568a19 Binary files /dev/null and b/demos/declarative/samegame/SamegameCore/pics/greenStone.png differ diff --git a/demos/declarative/samegame/SamegameCore/pics/redStar.png b/demos/declarative/samegame/SamegameCore/pics/redStar.png new file mode 100644 index 0000000..0a4dffe Binary files /dev/null and b/demos/declarative/samegame/SamegameCore/pics/redStar.png differ diff --git a/demos/declarative/samegame/SamegameCore/pics/redStone.png b/demos/declarative/samegame/SamegameCore/pics/redStone.png new file mode 100644 index 0000000..36b09a2 Binary files /dev/null and b/demos/declarative/samegame/SamegameCore/pics/redStone.png differ diff --git a/demos/declarative/samegame/SamegameCore/pics/star.png b/demos/declarative/samegame/SamegameCore/pics/star.png new file mode 100644 index 0000000..defbde5 Binary files /dev/null and b/demos/declarative/samegame/SamegameCore/pics/star.png differ diff --git a/demos/declarative/samegame/SamegameCore/pics/yellowStone.png b/demos/declarative/samegame/SamegameCore/pics/yellowStone.png new file mode 100644 index 0000000..b1ce762 Binary files /dev/null and b/demos/declarative/samegame/SamegameCore/pics/yellowStone.png differ diff --git a/demos/declarative/samegame/SamegameCore/qmldir b/demos/declarative/samegame/SamegameCore/qmldir new file mode 100644 index 0000000..a8f8a98 --- /dev/null +++ b/demos/declarative/samegame/SamegameCore/qmldir @@ -0,0 +1,3 @@ +BoomBlock 0.0 BoomBlock.qml +Button 0.0 Button.qml +Dialog 0.0 Dialog.qml diff --git a/demos/declarative/samegame/SamegameCore/samegame.js b/demos/declarative/samegame/SamegameCore/samegame.js new file mode 100755 index 0000000..c0f10bd --- /dev/null +++ b/demos/declarative/samegame/SamegameCore/samegame.js @@ -0,0 +1,250 @@ +/* This script file handles the game logic */ +//Note that X/Y referred to here are in game coordinates +var maxX = 10;//Nums are for gameCanvas.tileSize 40 +var maxY = 15; +var maxIndex = maxX*maxY; +var board = new Array(maxIndex); +var tileSrc = "content/BoomBlock.qml"; +var scoresURL = "http://qtfx-nokia.trolltech.com.au/samegame/scores.php"; +var scoresURL = ""; +var timer; +var component = createComponent(tileSrc); + +//Index function used instead of a 2D array +function index(xIdx,yIdx) { + return xIdx + (yIdx * maxX); +} + +function timeStr(msecs) { + var secs = Math.floor(msecs/1000); + var m = Math.floor(secs/60); + var ret = "" + m + "m " + (secs%60) + "s"; + return ret; +} + +function getTileSize() +{ + return tileSize; +} + +function initBoard() +{ + for(var i = 0; i= maxX || xIdx < 0 || yIdx >= maxY || yIdx < 0) + return; + if(board[index(xIdx, yIdx)] == null) + return; + //If it's a valid tile, remove it and all connected (does nothing if it's not connected) + floodFill(xIdx,yIdx, -1); + if(fillFound <= 0) + return; + gameCanvas.score += (fillFound - 1) * (fillFound - 1); + shuffleDown(); + victoryCheck(); +} + +function floodFill(xIdx,yIdx,type) +{ + if(board[index(xIdx, yIdx)] == null) + return; + var first = false; + if(type == -1){ + first = true; + type = board[index(xIdx,yIdx)].type; + + //Flood fill initialization + fillFound = 0; + floodBoard = new Array(maxIndex); + } + if(xIdx >= maxX || xIdx < 0 || yIdx >= maxY || yIdx < 0) + return; + if(floodBoard[index(xIdx, yIdx)] == 1 || (!first && type != board[index(xIdx,yIdx)].type)) + return; + floodBoard[index(xIdx, yIdx)] = 1; + floodFill(xIdx+1,yIdx,type); + floodFill(xIdx-1,yIdx,type); + floodFill(xIdx,yIdx+1,type); + floodFill(xIdx,yIdx-1,type); + if(first==true && fillFound == 0) + return;//Can't remove single tiles + board[index(xIdx,yIdx)].dying = true; + board[index(xIdx,yIdx)] = null; + fillFound += 1; +} + +function shuffleDown() +{ + //Fall down + for(var xIdx=0; xIdx=0; yIdx--){ + if(board[index(xIdx,yIdx)] == null){ + fallDist += 1; + }else{ + if(fallDist > 0){ + var obj = board[index(xIdx,yIdx)]; + obj.targetY += fallDist * gameCanvas.tileSize; + board[index(xIdx,yIdx+fallDist)] = obj; + board[index(xIdx,yIdx)] = null; + } + } + } + } + //Fall to the left + fallDist = 0; + for(xIdx=0; xIdx 0){ + for(yIdx=0; yIdx=0; xIdx--) + if(board[index(xIdx, maxY - 1)] != null) + deservesBonus = false; + if(deservesBonus) + gameCanvas.score += 500; + //Checks for game over + if(deservesBonus || !(floodMoveCheck(0,maxY-1, -1))){ + timer = new Date() - timer; + //scoreName.show("You won! Please enter your name: "); + scoreName.show("You won! Please enter your name: "); + scoreName.initialWidth = scoreName.text.width + 20; + scoreName.width = scoreName.initialWidth; + scoreName.text.opacity = 0;//Just a spacer + //dialog.show("Game Over. Your score is " + gameCanvas.score); + } +} + +//only floods up and right, to see if it can find adjacent same-typed tiles +function floodMoveCheck(xIdx, yIdx, type) +{ + if(xIdx >= maxX || xIdx < 0 || yIdx >= maxY || yIdx < 0) + return false; + if(board[index(xIdx, yIdx)] == null) + return false; + var myType = board[index(xIdx, yIdx)].type; + if(type == myType) + return true; + return floodMoveCheck(xIdx + 1, yIdx, myType) || + floodMoveCheck(xIdx, yIdx - 1, board[index(xIdx,yIdx)].type); +} + +function createBlock(xIdx,yIdx){ + // Note that we don't wait for the component to become ready. This will + // only work if the block QML is a local file. Otherwise the component will + // not be ready immediately. There is a statusChanged signal on the + // component you could use if you want to wait to load remote files. + if(component.isReady){ + var dynamicObject = component.createObject(); + if(dynamicObject == null){ + print("error creating block"); + print(component.errorsString()); + return false; + } + dynamicObject.type = Math.floor(Math.random() * 3); + dynamicObject.parent = gameCanvas; + dynamicObject.x = xIdx*gameCanvas.tileSize; + dynamicObject.targetX = xIdx*gameCanvas.tileSize; + dynamicObject.targetY = yIdx*gameCanvas.tileSize; + dynamicObject.width = gameCanvas.tileSize; + dynamicObject.height = gameCanvas.tileSize; + dynamicObject.spawned = true; + board[index(xIdx,yIdx)] = dynamicObject; + }else{//isError or isLoading + print("error loading block component"); + print(component.errorsString()); + return false; + } + return true; +} + +function saveHighScore(name) { + if(scoresURL!="") + sendHighScore(name); + //OfflineStorage + var db = openDatabaseSync("SameGameScores", "1.0", "Local SameGame High Scores",100); + var dataStr = "INSERT INTO Scores VALUES(?, ?, ?, ?)"; + var data = [name, gameCanvas.score, maxX+"x"+maxY ,Math.floor(timer/1000)]; + db.transaction( + function(tx) { + tx.executeSql('CREATE TABLE IF NOT EXISTS Scores(name TEXT, score NUMBER, gridSize TEXT, time NUMBER)'); + tx.executeSql(dataStr, data); + + //Only show results for the current grid size + var rs = tx.executeSql('SELECT * FROM Scores WHERE gridSize = "'+maxX+"x"+maxY+'" ORDER BY score desc LIMIT 10'); + var r = "\nHIGH SCORES for this grid size\n\n" + for(var i = 0; i < rs.rows.length; i++){ + r += (i+1)+". " + rs.rows.item(i).name +' got ' + + rs.rows.item(i).score + ' points in ' + + rs.rows.item(i).time + ' seconds.\n'; + } + dialog.show(r); + } + ); +} + +function sendHighScore(name) { + var postman = new XMLHttpRequest() + var postData = "name="+name+"&score="+gameCanvas.score + +"&gridSize="+maxX+"x"+maxY +"&time="+Math.floor(timer/1000); + postman.open("POST", scoresURL, true); + postman.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + postman.onreadystatechange = function() { + if (postman.readyState == postman.DONE) { + dialog.show("Your score has been uploaded."); + } + } + postman.send(postData); +} diff --git a/demos/declarative/samegame/content/BoomBlock.qml b/demos/declarative/samegame/content/BoomBlock.qml deleted file mode 100644 index e48194a..0000000 --- a/demos/declarative/samegame/content/BoomBlock.qml +++ /dev/null @@ -1,55 +0,0 @@ -import Qt 4.6 - -Item { id:block - property bool dying: false - property bool spawned: false - property int type: 0 - property int targetX: 0 - property int targetY: 0 - - SpringFollow on x { enabled: spawned; source: targetX; spring: 2; damping: 0.2 } - SpringFollow on y { source: targetY; spring: 2; damping: 0.2 } - - Image { id: img - source: { - if(type == 0){ - "pics/redStone.png"; - } else if(type == 1) { - "pics/blueStone.png"; - } else { - "pics/greenStone.png"; - } - } - opacity: 0 - Behavior on opacity { NumberAnimation { duration: 200 } } - anchors.fill: parent - } - - Particles { id: particles - width:1; height:1; anchors.centerIn: parent; - emissionRate: 0; - lifeSpan: 700; lifeSpanDeviation: 600; - angle: 0; angleDeviation: 360; - velocity: 100; velocityDeviation:30; - source: { - if(type == 0){ - "pics/redStar.png"; - } else if (type == 1) { - "pics/blueStar.png"; - } else { - "pics/greenStar.png"; - } - } - } - - states: [ - State{ name: "AliveState"; when: spawned == true && dying == false - PropertyChanges { target: img; opacity: 1 } - }, - State{ name: "DeathState"; when: dying == true - StateChangeScript { script: particles.burst(50); } - PropertyChanges { target: img; opacity: 0 } - StateChangeScript { script: block.destroy(1000); } - } - ] -} diff --git a/demos/declarative/samegame/content/Button.qml b/demos/declarative/samegame/content/Button.qml deleted file mode 100644 index 6629302..0000000 --- a/demos/declarative/samegame/content/Button.qml +++ /dev/null @@ -1,25 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: container - - signal clicked - property string text: "Button" - - color: activePalette.button; smooth: true - width: txtItem.width + 20; height: txtItem.height + 6 - border.width: 1; border.color: Qt.darker(activePalette.button); radius: 8; - - gradient: Gradient { - GradientStop { - id: topGrad; position: 0.0 - color: if (mr.pressed) { activePalette.dark } else { activePalette.light } } - GradientStop { position: 1.0; color: activePalette.button } - } - - MouseArea { id: mr; anchors.fill: parent; onClicked: container.clicked() } - - Text { - id: txtItem; text: container.text; anchors.centerIn: container; color: activePalette.buttonText - } -} diff --git a/demos/declarative/samegame/content/Dialog.qml b/demos/declarative/samegame/content/Dialog.qml deleted file mode 100644 index 6d5d6b5..0000000 --- a/demos/declarative/samegame/content/Dialog.qml +++ /dev/null @@ -1,22 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: page - function forceClose() { - page.closed(); - page.opacity = 0; - } - function show(txt) { - myText.text = txt; - page.opacity = 1; - } - signal closed(); - property Item text: myText - color: "white"; border.width: 1; width: myText.width + 20; height: myText.height + 40; - opacity: 0 - Behavior on opacity { - NumberAnimation { duration: 1000 } - } - Text { id: myText; anchors.centerIn: parent; text: "Hello World!" } - MouseArea { id: mr; anchors.fill: parent; onClicked: forceClose(); } -} diff --git a/demos/declarative/samegame/content/pics/background.png b/demos/declarative/samegame/content/pics/background.png deleted file mode 100644 index 3734a27..0000000 Binary files a/demos/declarative/samegame/content/pics/background.png and /dev/null differ diff --git a/demos/declarative/samegame/content/pics/blueStar.png b/demos/declarative/samegame/content/pics/blueStar.png deleted file mode 100644 index ff9588f..0000000 Binary files a/demos/declarative/samegame/content/pics/blueStar.png and /dev/null differ diff --git a/demos/declarative/samegame/content/pics/blueStone.png b/demos/declarative/samegame/content/pics/blueStone.png deleted file mode 100644 index 20e43c7..0000000 Binary files a/demos/declarative/samegame/content/pics/blueStone.png and /dev/null differ diff --git a/demos/declarative/samegame/content/pics/greenStar.png b/demos/declarative/samegame/content/pics/greenStar.png deleted file mode 100644 index cd06854..0000000 Binary files a/demos/declarative/samegame/content/pics/greenStar.png and /dev/null differ diff --git a/demos/declarative/samegame/content/pics/greenStone.png b/demos/declarative/samegame/content/pics/greenStone.png deleted file mode 100644 index b568a19..0000000 Binary files a/demos/declarative/samegame/content/pics/greenStone.png and /dev/null differ diff --git a/demos/declarative/samegame/content/pics/redStar.png b/demos/declarative/samegame/content/pics/redStar.png deleted file mode 100644 index 0a4dffe..0000000 Binary files a/demos/declarative/samegame/content/pics/redStar.png and /dev/null differ diff --git a/demos/declarative/samegame/content/pics/redStone.png b/demos/declarative/samegame/content/pics/redStone.png deleted file mode 100644 index 36b09a2..0000000 Binary files a/demos/declarative/samegame/content/pics/redStone.png and /dev/null differ diff --git a/demos/declarative/samegame/content/pics/star.png b/demos/declarative/samegame/content/pics/star.png deleted file mode 100644 index defbde5..0000000 Binary files a/demos/declarative/samegame/content/pics/star.png and /dev/null differ diff --git a/demos/declarative/samegame/content/pics/yellowStone.png b/demos/declarative/samegame/content/pics/yellowStone.png deleted file mode 100644 index b1ce762..0000000 Binary files a/demos/declarative/samegame/content/pics/yellowStone.png and /dev/null differ diff --git a/demos/declarative/samegame/content/qmldir b/demos/declarative/samegame/content/qmldir deleted file mode 100644 index a8f8a98..0000000 --- a/demos/declarative/samegame/content/qmldir +++ /dev/null @@ -1,3 +0,0 @@ -BoomBlock 0.0 BoomBlock.qml -Button 0.0 Button.qml -Dialog 0.0 Dialog.qml diff --git a/demos/declarative/samegame/content/samegame.js b/demos/declarative/samegame/content/samegame.js deleted file mode 100755 index c0f10bd..0000000 --- a/demos/declarative/samegame/content/samegame.js +++ /dev/null @@ -1,250 +0,0 @@ -/* This script file handles the game logic */ -//Note that X/Y referred to here are in game coordinates -var maxX = 10;//Nums are for gameCanvas.tileSize 40 -var maxY = 15; -var maxIndex = maxX*maxY; -var board = new Array(maxIndex); -var tileSrc = "content/BoomBlock.qml"; -var scoresURL = "http://qtfx-nokia.trolltech.com.au/samegame/scores.php"; -var scoresURL = ""; -var timer; -var component = createComponent(tileSrc); - -//Index function used instead of a 2D array -function index(xIdx,yIdx) { - return xIdx + (yIdx * maxX); -} - -function timeStr(msecs) { - var secs = Math.floor(msecs/1000); - var m = Math.floor(secs/60); - var ret = "" + m + "m " + (secs%60) + "s"; - return ret; -} - -function getTileSize() -{ - return tileSize; -} - -function initBoard() -{ - for(var i = 0; i= maxX || xIdx < 0 || yIdx >= maxY || yIdx < 0) - return; - if(board[index(xIdx, yIdx)] == null) - return; - //If it's a valid tile, remove it and all connected (does nothing if it's not connected) - floodFill(xIdx,yIdx, -1); - if(fillFound <= 0) - return; - gameCanvas.score += (fillFound - 1) * (fillFound - 1); - shuffleDown(); - victoryCheck(); -} - -function floodFill(xIdx,yIdx,type) -{ - if(board[index(xIdx, yIdx)] == null) - return; - var first = false; - if(type == -1){ - first = true; - type = board[index(xIdx,yIdx)].type; - - //Flood fill initialization - fillFound = 0; - floodBoard = new Array(maxIndex); - } - if(xIdx >= maxX || xIdx < 0 || yIdx >= maxY || yIdx < 0) - return; - if(floodBoard[index(xIdx, yIdx)] == 1 || (!first && type != board[index(xIdx,yIdx)].type)) - return; - floodBoard[index(xIdx, yIdx)] = 1; - floodFill(xIdx+1,yIdx,type); - floodFill(xIdx-1,yIdx,type); - floodFill(xIdx,yIdx+1,type); - floodFill(xIdx,yIdx-1,type); - if(first==true && fillFound == 0) - return;//Can't remove single tiles - board[index(xIdx,yIdx)].dying = true; - board[index(xIdx,yIdx)] = null; - fillFound += 1; -} - -function shuffleDown() -{ - //Fall down - for(var xIdx=0; xIdx=0; yIdx--){ - if(board[index(xIdx,yIdx)] == null){ - fallDist += 1; - }else{ - if(fallDist > 0){ - var obj = board[index(xIdx,yIdx)]; - obj.targetY += fallDist * gameCanvas.tileSize; - board[index(xIdx,yIdx+fallDist)] = obj; - board[index(xIdx,yIdx)] = null; - } - } - } - } - //Fall to the left - fallDist = 0; - for(xIdx=0; xIdx 0){ - for(yIdx=0; yIdx=0; xIdx--) - if(board[index(xIdx, maxY - 1)] != null) - deservesBonus = false; - if(deservesBonus) - gameCanvas.score += 500; - //Checks for game over - if(deservesBonus || !(floodMoveCheck(0,maxY-1, -1))){ - timer = new Date() - timer; - //scoreName.show("You won! Please enter your name: "); - scoreName.show("You won! Please enter your name: "); - scoreName.initialWidth = scoreName.text.width + 20; - scoreName.width = scoreName.initialWidth; - scoreName.text.opacity = 0;//Just a spacer - //dialog.show("Game Over. Your score is " + gameCanvas.score); - } -} - -//only floods up and right, to see if it can find adjacent same-typed tiles -function floodMoveCheck(xIdx, yIdx, type) -{ - if(xIdx >= maxX || xIdx < 0 || yIdx >= maxY || yIdx < 0) - return false; - if(board[index(xIdx, yIdx)] == null) - return false; - var myType = board[index(xIdx, yIdx)].type; - if(type == myType) - return true; - return floodMoveCheck(xIdx + 1, yIdx, myType) || - floodMoveCheck(xIdx, yIdx - 1, board[index(xIdx,yIdx)].type); -} - -function createBlock(xIdx,yIdx){ - // Note that we don't wait for the component to become ready. This will - // only work if the block QML is a local file. Otherwise the component will - // not be ready immediately. There is a statusChanged signal on the - // component you could use if you want to wait to load remote files. - if(component.isReady){ - var dynamicObject = component.createObject(); - if(dynamicObject == null){ - print("error creating block"); - print(component.errorsString()); - return false; - } - dynamicObject.type = Math.floor(Math.random() * 3); - dynamicObject.parent = gameCanvas; - dynamicObject.x = xIdx*gameCanvas.tileSize; - dynamicObject.targetX = xIdx*gameCanvas.tileSize; - dynamicObject.targetY = yIdx*gameCanvas.tileSize; - dynamicObject.width = gameCanvas.tileSize; - dynamicObject.height = gameCanvas.tileSize; - dynamicObject.spawned = true; - board[index(xIdx,yIdx)] = dynamicObject; - }else{//isError or isLoading - print("error loading block component"); - print(component.errorsString()); - return false; - } - return true; -} - -function saveHighScore(name) { - if(scoresURL!="") - sendHighScore(name); - //OfflineStorage - var db = openDatabaseSync("SameGameScores", "1.0", "Local SameGame High Scores",100); - var dataStr = "INSERT INTO Scores VALUES(?, ?, ?, ?)"; - var data = [name, gameCanvas.score, maxX+"x"+maxY ,Math.floor(timer/1000)]; - db.transaction( - function(tx) { - tx.executeSql('CREATE TABLE IF NOT EXISTS Scores(name TEXT, score NUMBER, gridSize TEXT, time NUMBER)'); - tx.executeSql(dataStr, data); - - //Only show results for the current grid size - var rs = tx.executeSql('SELECT * FROM Scores WHERE gridSize = "'+maxX+"x"+maxY+'" ORDER BY score desc LIMIT 10'); - var r = "\nHIGH SCORES for this grid size\n\n" - for(var i = 0; i < rs.rows.length; i++){ - r += (i+1)+". " + rs.rows.item(i).name +' got ' - + rs.rows.item(i).score + ' points in ' - + rs.rows.item(i).time + ' seconds.\n'; - } - dialog.show(r); - } - ); -} - -function sendHighScore(name) { - var postman = new XMLHttpRequest() - var postData = "name="+name+"&score="+gameCanvas.score - +"&gridSize="+maxX+"x"+maxY +"&time="+Math.floor(timer/1000); - postman.open("POST", scoresURL, true); - postman.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); - postman.onreadystatechange = function() { - if (postman.readyState == postman.DONE) { - dialog.show("Your score has been uploaded."); - } - } - postman.send(postData); -} diff --git a/demos/declarative/samegame/samegame.qml b/demos/declarative/samegame/samegame.qml index c81f292..3b19cbe 100644 --- a/demos/declarative/samegame/samegame.qml +++ b/demos/declarative/samegame/samegame.qml @@ -1,5 +1,5 @@ import Qt 4.6 -import "content" +import SamegameCore 1.0 Rectangle { id: screen @@ -12,7 +12,7 @@ Rectangle { Image { id: background - anchors.fill: parent; source: "content/pics/background.png" + anchors.fill: parent; source: "SamegameCore/pics/background.png" fillMode: Image.PreserveAspectCrop smooth: true } @@ -22,7 +22,7 @@ Rectangle { property int score: 0 property int tileSize: 40 - Script { source: "content/samegame.js" } + Script { source: "SamegameCore/samegame.js" } z: 20; anchors.centerIn: parent width: parent.width - (parent.width % getTileSize()); diff --git a/demos/declarative/twitter/TwitterCore/AuthView.qml b/demos/declarative/twitter/TwitterCore/AuthView.qml new file mode 100644 index 0000000..bcf4646 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/AuthView.qml @@ -0,0 +1,99 @@ +import Qt 4.6 + +Item { + id: wrapper + Column { + anchors.centerIn: parent + spacing: 20 + Column{ + spacing: 4 + Text { + text: "Screen name:" + font.pixelSize: 16; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black" + horizontalAlignment: Qt.AlignRight + } + Item { + width: 220 + height: 28 + BorderImage { source: "images/lineedit.sci"; anchors.fill: parent } + TextInput{ + id: nameIn + width: parent.width - 8 + anchors.centerIn: parent + maximumLength:21 + font.pixelSize: 16; + font.bold: true + color: "#151515"; selectionColor: "green" + KeyNavigation.down: passIn + focus: true + } + } + } + Column{ + spacing: 4 + Text { + text: "Password:" + font.pixelSize: 16; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black" + horizontalAlignment: Qt.AlignRight + } + Item { + width: 220 + height: 28 + BorderImage { source: "images/lineedit.sci"; anchors.fill: parent } + TextInput{ + id: passIn + width: parent.width - 8 + anchors.centerIn: parent + maximumLength:21 + echoMode: TextInput.Password + font.pixelSize: 16; + font.bold: true + color: "#151515"; selectionColor: "green" + KeyNavigation.down: login + KeyNavigation.up: nameIn + } + } + } + Row{ + spacing: 10 + Button { + width: 100 + height: 32 + id: login + keyUsing: true; + function doLogin(){ + rssModel.authName=nameIn.text; + rssModel.authPass=passIn.text; + rssModel.tags='my timeline'; + screen.focus = true; + } + text: "Log in" + KeyNavigation.right: guest + KeyNavigation.up: passIn + Keys.onReturnPressed: login.doLogin(); + Keys.onSelectPressed: login.doLogin(); + Keys.onSpacePressed: login.doLogin(); + onClicked: login.doLogin(); + } + Button { + width: 100 + height: 32 + id: guest + keyUsing: true; + function doGuest() + { + rssModel.authName='-'; + screen.focus = true; + screen.setMode(true); + } + text: "Guest" + KeyNavigation.left: login + KeyNavigation.up: passIn + Keys.onReturnPressed: guest.doGuest(); + Keys.onSelectPressed: guest.doGuest(); + Keys.onSpacePressed: guest.doGuest(); + onClicked: guest.doGuest(); + } + } + } +} diff --git a/demos/declarative/twitter/TwitterCore/Button.qml b/demos/declarative/twitter/TwitterCore/Button.qml new file mode 100644 index 0000000..4cba8c3 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/Button.qml @@ -0,0 +1,49 @@ +import Qt 4.6 + +Item { + id: container + + signal clicked + + property string text + property bool keyUsing: false + + BorderImage { + id: buttonImage + source: "images/toolbutton.sci" + width: container.width; height: container.height + } + BorderImage { + id: pressed + opacity: 0 + source: "images/toolbutton.sci" + width: container.width; height: container.height + } + MouseArea { + id: mouseRegion + anchors.fill: buttonImage + onClicked: { container.clicked(); } + } + Text { + id: btnText + color: if(container.keyUsing){"#DDDDDD";} else {"#FFFFFF";} + anchors.centerIn: buttonImage; font.bold: true + text: container.text; style: Text.Raised; styleColor: "black" + font.pixelSize: 12 + } + states: [ + State { + name: "Pressed" + when: mouseRegion.pressed == true + PropertyChanges { target: pressed; opacity: 1 } + }, + State { + name: "Focused" + when: container.focus == true + PropertyChanges { target: btnText; color: "#FFFFFF" } + } + ] + transitions: Transition { + ColorAnimation { target: btnText; } + } +} diff --git a/demos/declarative/twitter/TwitterCore/FatDelegate.qml b/demos/declarative/twitter/TwitterCore/FatDelegate.qml new file mode 100644 index 0000000..0f013e6 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/FatDelegate.qml @@ -0,0 +1,46 @@ +import Qt 4.6 + +Component { + id: listDelegate + Item { + id: wrapper; width: wrapper.ListView.view.width; height: if(txt.height > 58){txt.height+8}else{58}//50+4+4 + Script { + function handleLink(link){ + if(link.slice(0,3) == 'app'){ + setUser(link.slice(7)); + screen.setMode(true); + }else if(link.slice(0,4) == 'http'){ + Qt.openUrlExternally(link); + } + } + function addTags(str){ + var ret = str.replace(/@[a-zA-Z0-9_]+/g, '$&');//click to jump to user? + var ret2 = ret.replace(/http:\/\/[^ \n\t]+/g, '$&');//surrounds http links with html link tags + return ret2; + } + } + Item { + id: moveMe; height: parent.height + Rectangle { + id: blackRect + color: "black"; opacity: wrapper.ListView.index % 2 ? 0.2 : 0.3; height: wrapper.height-2; width: wrapper.width; y: 1 + } + Rectangle { + id: whiteRect; x: 6; width: 50; height: 50; color: "white"; smooth: true + anchors.verticalCenter: parent.verticalCenter + + Loading { x: 1; y: 1; width: 48; height: 48; visible: realImage.status != 1 } + Image { id: realImage; source: userImage; x: 1; y: 1; width:48; height:48 } + } + Text { id:txt; y:4; x: 56 + text: '' + + ''+userScreenName + " from " +source + + "
" + addTags(statusText) + ""; + textFormat: Qt.RichText + color: "#cccccc"; style: Text.Raised; styleColor: "black"; wrap: true + anchors.left: whiteRect.right; anchors.right: blackRect.right; anchors.leftMargin: 6; anchors.rightMargin: 6 + onLinkActivated: handleLink(link) + } + } + } +} diff --git a/demos/declarative/twitter/TwitterCore/HomeTitleBar.qml b/demos/declarative/twitter/TwitterCore/HomeTitleBar.qml new file mode 100644 index 0000000..a206c87 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/HomeTitleBar.qml @@ -0,0 +1,121 @@ +import Qt 4.6 + +Item { + id: titleBar + + signal update() + onYChanged: state="" //When switching titlebars + + BorderImage { source: "images/titlebar.sci"; width: parent.width; height: parent.height + 14; y: -7 } + Item { + id: container + width: (parent.width * 2) - 55 ; height: parent.height + + Script { + function accept() { + if(rssModel.authName == '' || rssModel.authPass == '') + return false;//Can't login like that + + var postData = "status=" + editor.text; + var postman = new XMLHttpRequest(); + postman.open("POST", "http://twitter.com/statuses/update.xml", true, rssModel.authName, rssModel.authPass); + postman.onreadystatechange = function() { + if (postman.readyState == postman.DONE) { + titleBar.update(); + } + } + postman.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + postman.send(postData); + + editor.text = "" + titleBar.state = "" + } + } + + Rectangle { + x: 6; width: 50; height: 50; color: "white"; smooth: true + anchors.verticalCenter: parent.verticalCenter + + UserModel { user: rssModel.authName; id: userModel } + Component { id: imgDelegate; + Item { + Loading { width:48; height:48; visible: realImage.status != 1 } + Image { source: image; width:48; height:48; id: realImage } + } + } + ListView { model: userModel.model; x:1; y:1; delegate: imgDelegate } + } + + Text { + id: categoryText + anchors.left: parent.left; anchors.right: tagButton.left + anchors.leftMargin: 58; anchors.rightMargin: 10 + anchors.verticalCenter: parent.verticalCenter + elide: Text.ElideLeft + text: "Timeline for " + rssModel.authName + font.pixelSize: 12; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black" + } + + Button { + id: tagButton; x: titleBar.width - 90; width: 85; height: 32; text: "New Post..." + anchors.verticalCenter: parent.verticalCenter; + onClicked: if (titleBar.state == "Posting") accept(); else titleBar.state = "Posting" + } + + Text { + id: charsLeftText; anchors.horizontalCenter: tagButton.horizontalCenter; + anchors.top: tagButton.bottom; anchors.topMargin: 2 + text: {140 - editor.text.length;} visible: titleBar.state == "Posting" + font.pointSize: 10; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black" + } + Item { + id: txtEdit; + anchors.left: tagButton.right; anchors.leftMargin: 5; y: 4 + anchors.right: parent.right; anchors.rightMargin: 40; height: parent.height - 9 + BorderImage { source: "images/lineedit.sci"; anchors.fill: parent } + + Binding {//TODO: Can this be a function, which also resets the cursor? And flashes? + when: editor.text.length > 140 + target: editor + property: "text" + value: editor.text.slice(0,140) + } + TextEdit { + id: editor + anchors.left: parent.left; + anchors.leftMargin: 8; + anchors.bottom: parent.bottom + anchors.bottomMargin: 4; + cursorVisible: true; font.bold: true + width: parent.width - 12 + height: parent.height - 8 + font.pointSize: 10 + wrap: true + color: "#151515"; selectionColor: "green" + } + Keys.forwardTo: [(returnKey), (editor)] + Item { + id: returnKey + Keys.onReturnPressed: accept() + Keys.onEscapePressed: titleBar.state = "" + } + } + } + states: [ + State { + name: "Posting" + PropertyChanges { target: container; x: -tagButton.x + 5 } + PropertyChanges { target: titleBar; height: 80 } + PropertyChanges { target: tagButton; text: "OK" } + PropertyChanges { target: tagButton; width: 28 } + PropertyChanges { target: tagButton; height: 24 } + PropertyChanges { target: txtEdit; focus: true } + } + ] + transitions: [ + Transition { + from: "*"; to: "*" + NumberAnimation { properties: "x,y,width,height"; easing.type: "InOutQuad" } + } + ] +} diff --git a/demos/declarative/twitter/TwitterCore/Loading.qml b/demos/declarative/twitter/TwitterCore/Loading.qml new file mode 100644 index 0000000..76bf64b --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/Loading.qml @@ -0,0 +1,8 @@ +import Qt 4.6 + +Image { + id: loading; source: "images/loading.png"; transformOrigin: "Center" + NumberAnimation on rotation { + from: 0; to: 360; running: loading.visible == true; repeat: true; duration: 900 + } +} diff --git a/demos/declarative/twitter/TwitterCore/MultiTitleBar.qml b/demos/declarative/twitter/TwitterCore/MultiTitleBar.qml new file mode 100644 index 0000000..e0205b8 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/MultiTitleBar.qml @@ -0,0 +1,24 @@ +import Qt 4.6 + +Item { + height: homeBar.height + HomeTitleBar { id: homeBar; width: parent.width; height: 60; + onUpdate: rssModel.reload() + } + TitleBar { id: titleBar; width: parent.width; height: 60; + y: -80 + untaggedString: "Latest tweets from everyone" + taggedString: "Latest tweets from " + } + states: [ + State { + name: "search"; when: screen.userView + PropertyChanges { target: titleBar; y: 0 } + PropertyChanges { target: homeBar; y: -80 } + } + ] + transitions: [ + Transition { NumberAnimation { properties: "x,y"; duration: 500; easing.type: "InOutQuad" } } + ] +} + diff --git a/demos/declarative/twitter/TwitterCore/RssModel.qml b/demos/declarative/twitter/TwitterCore/RssModel.qml new file mode 100644 index 0000000..9d88bb7 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/RssModel.qml @@ -0,0 +1,44 @@ +import Qt 4.6 + +Item { id: wrapper + property var model: xmlModel + property string tags : "" + property string authName : "" + property string authPass : "" + property string mode : "everyone" + property int status: xmlModel.status + function reload() { xmlModel.reload(); } +XmlListModel { + id: xmlModel + + source:{ + if (wrapper.authName == ""){ + ""; //Avoid worthless calls to twitter servers + }else if(wrapper.mode == 'user'){ + "https://"+ ((wrapper.authName!="" && wrapper.authPass!="")? (wrapper.authName+":"+wrapper.authPass+"@") : "" )+"twitter.com/statuses/user_timeline.xml?screen_name="+wrapper.tags; + }else if(wrapper.mode == 'self'){ + "https://"+ ((wrapper.authName!="" && wrapper.authPass!="")? (wrapper.authName+":"+wrapper.authPass+"@") : "" )+"twitter.com/statuses/friends_timeline.xml"; + }else{//everyone/public + "http://twitter.com/statuses/public_timeline.xml"; + } + } + query: "/statuses/status" + + XmlRole { name: "statusText"; query: "text/string()" } + XmlRole { name: "timestamp"; query: "created_at/string()" } + XmlRole { name: "source"; query: "source/string()" } + XmlRole { name: "userName"; query: "user/name/string()" } + XmlRole { name: "userScreenName"; query: "user/screen_name/string()" } + XmlRole { name: "userImage"; query: "user/profile_image_url/string()" } + XmlRole { name: "userLocation"; query: "user/location/string()" } + XmlRole { name: "userDescription"; query: "user/description/string()" } + XmlRole { name: "userFollowers"; query: "user/followers_count/string()" } + XmlRole { name: "userStatuses"; query: "user/statuses_count/string()" } + //TODO: Could also get the user's color scheme, timezone and a few other things +} +Binding { + property: "mode" + target: wrapper + value: {if(wrapper.tags==''){"everyone";}else if(wrapper.tags=='my timeline'){"self";}else{"user";}} +} +} diff --git a/demos/declarative/twitter/TwitterCore/TitleBar.qml b/demos/declarative/twitter/TwitterCore/TitleBar.qml new file mode 100644 index 0000000..149aa82 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/TitleBar.qml @@ -0,0 +1,77 @@ +import Qt 4.6 + +Item { + id: titleBar + property string untaggedString: "Uploads from everyone" + property string taggedString: "Recent uploads tagged " + + BorderImage { source: "images/titlebar.sci"; width: parent.width; height: parent.height + 14; y: -7 } + + Item { + id: container + width: (parent.width * 2) - 55 ; height: parent.height + + Script { + function accept() { + titleBar.state = "" + background.state = "" + rssModel.tags = editor.text + } + } + + Text { + id: categoryText + anchors { + left: parent.left; right: tagButton.left; leftMargin: 10; rightMargin: 10 + verticalCenter: parent.verticalCenter + } + elide: Text.ElideLeft + text: (rssModel.tags=="" ? untaggedString : taggedString + rssModel.tags) + font.bold: true; color: "White"; style: Text.Raised; styleColor: "Black" + font.pixelSize: 12 + } + + Button { + id: tagButton; x: titleBar.width - 50; width: 45; height: 32; text: "..." + onClicked: if (titleBar.state == "Tags") accept(); else titleBar.state = "Tags" + anchors.verticalCenter: parent.verticalCenter + } + + Item { + id: lineEdit + y: 4; height: parent.height - 9 + anchors { left: tagButton.right; leftMargin: 5; right: parent.right; rightMargin: 5 } + + BorderImage { source: "images/lineedit.sci"; anchors.fill: parent } + + TextInput { + id: editor + anchors { + left: parent.left; right: parent.right; leftMargin: 10; rightMargin: 10 + verticalCenter: parent.verticalCenter + } + cursorVisible: true; font.bold: true + color: "#151515"; selectionColor: "Green" + } + + Keys.forwardTo: [ (returnKey), (editor)] + + Item { + id: returnKey + Keys.onReturnPressed: accept() + Keys.onEscapePressed: titleBar.state = "" + } + } + } + + states: State { + name: "Tags" + PropertyChanges { target: container; x: -tagButton.x + 5 } + PropertyChanges { target: tagButton; text: "OK" } + PropertyChanges { target: lineEdit; focus: true } + } + + transitions: Transition { + NumberAnimation { properties: "x"; easing.type: "InOutQuad" } + } +} diff --git a/demos/declarative/twitter/TwitterCore/ToolBar.qml b/demos/declarative/twitter/TwitterCore/ToolBar.qml new file mode 100644 index 0000000..f96c767 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/ToolBar.qml @@ -0,0 +1,24 @@ +import Qt 4.6 + +Item { + id: toolbar + + property alias button1Label: button1.text + property alias button2Label: button2.text + signal button1Clicked + signal button2Clicked + + BorderImage { source: "images/titlebar.sci"; width: parent.width; height: parent.height + 14; y: -7 } + + Button { + id: button1 + anchors.left: parent.left; anchors.leftMargin: 5; y: 3; width: 140; height: 32 + onClicked: toolbar.button1Clicked() + } + + Button { + id: button2 + anchors.right: parent.right; anchors.rightMargin: 5; y: 3; width: 140; height: 32 + onClicked: toolbar.button2Clicked() + } +} diff --git a/demos/declarative/twitter/TwitterCore/UserModel.qml b/demos/declarative/twitter/TwitterCore/UserModel.qml new file mode 100644 index 0000000..c146b84 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/UserModel.qml @@ -0,0 +1,26 @@ +import Qt 4.6 + +//This "model" gets the user information about the searched user. Mainly for the icon. +//Copied from RssModel + +Item { id: wrapper + property var model: xmlModel + property string user : "" + property int status: xmlModel.status + function reload() { xmlModel.reload(); } +XmlListModel { + id: xmlModel + + source: {if(user!="") {"http://twitter.com/users/show.xml?screen_name="+user;}else{"";}} + query: "/user" + + XmlRole { name: "name"; query: "name/string()" } + XmlRole { name: "screenName"; query: "screen_name/string()" } + XmlRole { name: "image"; query: "profile_image_url/string()" } + XmlRole { name: "location"; query: "location/string()" } + XmlRole { name: "description"; query: "description/string()" } + XmlRole { name: "followers"; query: "followers_count/string()" } + //XmlRole { name: "protected"; query: "protected/bool()" } + //TODO: Could also get the user's color scheme, timezone and a few other things +} +} diff --git a/demos/declarative/twitter/TwitterCore/images/gloss.png b/demos/declarative/twitter/TwitterCore/images/gloss.png new file mode 100644 index 0000000..5d370cd Binary files /dev/null and b/demos/declarative/twitter/TwitterCore/images/gloss.png differ diff --git a/demos/declarative/twitter/TwitterCore/images/lineedit.png b/demos/declarative/twitter/TwitterCore/images/lineedit.png new file mode 100644 index 0000000..2cc38dc Binary files /dev/null and b/demos/declarative/twitter/TwitterCore/images/lineedit.png differ diff --git a/demos/declarative/twitter/TwitterCore/images/lineedit.sci b/demos/declarative/twitter/TwitterCore/images/lineedit.sci new file mode 100644 index 0000000..054bff7 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/images/lineedit.sci @@ -0,0 +1,5 @@ +border.left: 10 +border.top: 10 +border.bottom: 10 +border.right: 10 +source: lineedit.png diff --git a/demos/declarative/twitter/TwitterCore/images/loading.png b/demos/declarative/twitter/TwitterCore/images/loading.png new file mode 100644 index 0000000..47a1589 Binary files /dev/null and b/demos/declarative/twitter/TwitterCore/images/loading.png differ diff --git a/demos/declarative/twitter/TwitterCore/images/stripes.png b/demos/declarative/twitter/TwitterCore/images/stripes.png new file mode 100644 index 0000000..9f36727 Binary files /dev/null and b/demos/declarative/twitter/TwitterCore/images/stripes.png differ diff --git a/demos/declarative/twitter/TwitterCore/images/titlebar.png b/demos/declarative/twitter/TwitterCore/images/titlebar.png new file mode 100644 index 0000000..51c9008 Binary files /dev/null and b/demos/declarative/twitter/TwitterCore/images/titlebar.png differ diff --git a/demos/declarative/twitter/TwitterCore/images/titlebar.sci b/demos/declarative/twitter/TwitterCore/images/titlebar.sci new file mode 100644 index 0000000..0418d94 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/images/titlebar.sci @@ -0,0 +1,5 @@ +border.left: 10 +border.top: 12 +border.bottom: 12 +border.right: 10 +source: titlebar.png diff --git a/demos/declarative/twitter/TwitterCore/images/toolbutton.png b/demos/declarative/twitter/TwitterCore/images/toolbutton.png new file mode 100644 index 0000000..1131001 Binary files /dev/null and b/demos/declarative/twitter/TwitterCore/images/toolbutton.png differ diff --git a/demos/declarative/twitter/TwitterCore/images/toolbutton.sci b/demos/declarative/twitter/TwitterCore/images/toolbutton.sci new file mode 100644 index 0000000..9e4f965 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/images/toolbutton.sci @@ -0,0 +1,5 @@ +border.left: 15 +border.top: 4 +border.bottom: 4 +border.right: 15 +source: toolbutton.png diff --git a/demos/declarative/twitter/TwitterCore/qmldir b/demos/declarative/twitter/TwitterCore/qmldir new file mode 100644 index 0000000..8b56c56 --- /dev/null +++ b/demos/declarative/twitter/TwitterCore/qmldir @@ -0,0 +1,10 @@ +AuthView 1.0 AuthView.qml +Button 1.0 Button.qml +FatDelegate 1.0 FatDelegate.qml +HomeTitleBar 1.0 HomeTitleBar.qml +Loading 1.0 Loading.qml +MultiTitleBar 1.0 MultiTitleBar.qml +TitleBar 1.0 TitleBar.qml +RssModel 1.0 RssModel.qml +UserModel 1.0 UserModel.qml +ToolBar 1.0 ToolBar.qml diff --git a/demos/declarative/twitter/content/AuthView.qml b/demos/declarative/twitter/content/AuthView.qml deleted file mode 100644 index bcf4646..0000000 --- a/demos/declarative/twitter/content/AuthView.qml +++ /dev/null @@ -1,99 +0,0 @@ -import Qt 4.6 - -Item { - id: wrapper - Column { - anchors.centerIn: parent - spacing: 20 - Column{ - spacing: 4 - Text { - text: "Screen name:" - font.pixelSize: 16; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black" - horizontalAlignment: Qt.AlignRight - } - Item { - width: 220 - height: 28 - BorderImage { source: "images/lineedit.sci"; anchors.fill: parent } - TextInput{ - id: nameIn - width: parent.width - 8 - anchors.centerIn: parent - maximumLength:21 - font.pixelSize: 16; - font.bold: true - color: "#151515"; selectionColor: "green" - KeyNavigation.down: passIn - focus: true - } - } - } - Column{ - spacing: 4 - Text { - text: "Password:" - font.pixelSize: 16; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black" - horizontalAlignment: Qt.AlignRight - } - Item { - width: 220 - height: 28 - BorderImage { source: "images/lineedit.sci"; anchors.fill: parent } - TextInput{ - id: passIn - width: parent.width - 8 - anchors.centerIn: parent - maximumLength:21 - echoMode: TextInput.Password - font.pixelSize: 16; - font.bold: true - color: "#151515"; selectionColor: "green" - KeyNavigation.down: login - KeyNavigation.up: nameIn - } - } - } - Row{ - spacing: 10 - Button { - width: 100 - height: 32 - id: login - keyUsing: true; - function doLogin(){ - rssModel.authName=nameIn.text; - rssModel.authPass=passIn.text; - rssModel.tags='my timeline'; - screen.focus = true; - } - text: "Log in" - KeyNavigation.right: guest - KeyNavigation.up: passIn - Keys.onReturnPressed: login.doLogin(); - Keys.onSelectPressed: login.doLogin(); - Keys.onSpacePressed: login.doLogin(); - onClicked: login.doLogin(); - } - Button { - width: 100 - height: 32 - id: guest - keyUsing: true; - function doGuest() - { - rssModel.authName='-'; - screen.focus = true; - screen.setMode(true); - } - text: "Guest" - KeyNavigation.left: login - KeyNavigation.up: passIn - Keys.onReturnPressed: guest.doGuest(); - Keys.onSelectPressed: guest.doGuest(); - Keys.onSpacePressed: guest.doGuest(); - onClicked: guest.doGuest(); - } - } - } -} diff --git a/demos/declarative/twitter/content/Button.qml b/demos/declarative/twitter/content/Button.qml deleted file mode 100644 index 4cba8c3..0000000 --- a/demos/declarative/twitter/content/Button.qml +++ /dev/null @@ -1,49 +0,0 @@ -import Qt 4.6 - -Item { - id: container - - signal clicked - - property string text - property bool keyUsing: false - - BorderImage { - id: buttonImage - source: "images/toolbutton.sci" - width: container.width; height: container.height - } - BorderImage { - id: pressed - opacity: 0 - source: "images/toolbutton.sci" - width: container.width; height: container.height - } - MouseArea { - id: mouseRegion - anchors.fill: buttonImage - onClicked: { container.clicked(); } - } - Text { - id: btnText - color: if(container.keyUsing){"#DDDDDD";} else {"#FFFFFF";} - anchors.centerIn: buttonImage; font.bold: true - text: container.text; style: Text.Raised; styleColor: "black" - font.pixelSize: 12 - } - states: [ - State { - name: "Pressed" - when: mouseRegion.pressed == true - PropertyChanges { target: pressed; opacity: 1 } - }, - State { - name: "Focused" - when: container.focus == true - PropertyChanges { target: btnText; color: "#FFFFFF" } - } - ] - transitions: Transition { - ColorAnimation { target: btnText; } - } -} diff --git a/demos/declarative/twitter/content/FatDelegate.qml b/demos/declarative/twitter/content/FatDelegate.qml deleted file mode 100644 index 0f013e6..0000000 --- a/demos/declarative/twitter/content/FatDelegate.qml +++ /dev/null @@ -1,46 +0,0 @@ -import Qt 4.6 - -Component { - id: listDelegate - Item { - id: wrapper; width: wrapper.ListView.view.width; height: if(txt.height > 58){txt.height+8}else{58}//50+4+4 - Script { - function handleLink(link){ - if(link.slice(0,3) == 'app'){ - setUser(link.slice(7)); - screen.setMode(true); - }else if(link.slice(0,4) == 'http'){ - Qt.openUrlExternally(link); - } - } - function addTags(str){ - var ret = str.replace(/@[a-zA-Z0-9_]+/g, '$&');//click to jump to user? - var ret2 = ret.replace(/http:\/\/[^ \n\t]+/g, '$&');//surrounds http links with html link tags - return ret2; - } - } - Item { - id: moveMe; height: parent.height - Rectangle { - id: blackRect - color: "black"; opacity: wrapper.ListView.index % 2 ? 0.2 : 0.3; height: wrapper.height-2; width: wrapper.width; y: 1 - } - Rectangle { - id: whiteRect; x: 6; width: 50; height: 50; color: "white"; smooth: true - anchors.verticalCenter: parent.verticalCenter - - Loading { x: 1; y: 1; width: 48; height: 48; visible: realImage.status != 1 } - Image { id: realImage; source: userImage; x: 1; y: 1; width:48; height:48 } - } - Text { id:txt; y:4; x: 56 - text: '' - + ''+userScreenName + " from " +source - + "
" + addTags(statusText) + ""; - textFormat: Qt.RichText - color: "#cccccc"; style: Text.Raised; styleColor: "black"; wrap: true - anchors.left: whiteRect.right; anchors.right: blackRect.right; anchors.leftMargin: 6; anchors.rightMargin: 6 - onLinkActivated: handleLink(link) - } - } - } -} diff --git a/demos/declarative/twitter/content/HomeTitleBar.qml b/demos/declarative/twitter/content/HomeTitleBar.qml deleted file mode 100644 index a206c87..0000000 --- a/demos/declarative/twitter/content/HomeTitleBar.qml +++ /dev/null @@ -1,121 +0,0 @@ -import Qt 4.6 - -Item { - id: titleBar - - signal update() - onYChanged: state="" //When switching titlebars - - BorderImage { source: "images/titlebar.sci"; width: parent.width; height: parent.height + 14; y: -7 } - Item { - id: container - width: (parent.width * 2) - 55 ; height: parent.height - - Script { - function accept() { - if(rssModel.authName == '' || rssModel.authPass == '') - return false;//Can't login like that - - var postData = "status=" + editor.text; - var postman = new XMLHttpRequest(); - postman.open("POST", "http://twitter.com/statuses/update.xml", true, rssModel.authName, rssModel.authPass); - postman.onreadystatechange = function() { - if (postman.readyState == postman.DONE) { - titleBar.update(); - } - } - postman.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); - postman.send(postData); - - editor.text = "" - titleBar.state = "" - } - } - - Rectangle { - x: 6; width: 50; height: 50; color: "white"; smooth: true - anchors.verticalCenter: parent.verticalCenter - - UserModel { user: rssModel.authName; id: userModel } - Component { id: imgDelegate; - Item { - Loading { width:48; height:48; visible: realImage.status != 1 } - Image { source: image; width:48; height:48; id: realImage } - } - } - ListView { model: userModel.model; x:1; y:1; delegate: imgDelegate } - } - - Text { - id: categoryText - anchors.left: parent.left; anchors.right: tagButton.left - anchors.leftMargin: 58; anchors.rightMargin: 10 - anchors.verticalCenter: parent.verticalCenter - elide: Text.ElideLeft - text: "Timeline for " + rssModel.authName - font.pixelSize: 12; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black" - } - - Button { - id: tagButton; x: titleBar.width - 90; width: 85; height: 32; text: "New Post..." - anchors.verticalCenter: parent.verticalCenter; - onClicked: if (titleBar.state == "Posting") accept(); else titleBar.state = "Posting" - } - - Text { - id: charsLeftText; anchors.horizontalCenter: tagButton.horizontalCenter; - anchors.top: tagButton.bottom; anchors.topMargin: 2 - text: {140 - editor.text.length;} visible: titleBar.state == "Posting" - font.pointSize: 10; font.bold: true; color: "white"; style: Text.Raised; styleColor: "black" - } - Item { - id: txtEdit; - anchors.left: tagButton.right; anchors.leftMargin: 5; y: 4 - anchors.right: parent.right; anchors.rightMargin: 40; height: parent.height - 9 - BorderImage { source: "images/lineedit.sci"; anchors.fill: parent } - - Binding {//TODO: Can this be a function, which also resets the cursor? And flashes? - when: editor.text.length > 140 - target: editor - property: "text" - value: editor.text.slice(0,140) - } - TextEdit { - id: editor - anchors.left: parent.left; - anchors.leftMargin: 8; - anchors.bottom: parent.bottom - anchors.bottomMargin: 4; - cursorVisible: true; font.bold: true - width: parent.width - 12 - height: parent.height - 8 - font.pointSize: 10 - wrap: true - color: "#151515"; selectionColor: "green" - } - Keys.forwardTo: [(returnKey), (editor)] - Item { - id: returnKey - Keys.onReturnPressed: accept() - Keys.onEscapePressed: titleBar.state = "" - } - } - } - states: [ - State { - name: "Posting" - PropertyChanges { target: container; x: -tagButton.x + 5 } - PropertyChanges { target: titleBar; height: 80 } - PropertyChanges { target: tagButton; text: "OK" } - PropertyChanges { target: tagButton; width: 28 } - PropertyChanges { target: tagButton; height: 24 } - PropertyChanges { target: txtEdit; focus: true } - } - ] - transitions: [ - Transition { - from: "*"; to: "*" - NumberAnimation { properties: "x,y,width,height"; easing.type: "InOutQuad" } - } - ] -} diff --git a/demos/declarative/twitter/content/Loading.qml b/demos/declarative/twitter/content/Loading.qml deleted file mode 100644 index 76bf64b..0000000 --- a/demos/declarative/twitter/content/Loading.qml +++ /dev/null @@ -1,8 +0,0 @@ -import Qt 4.6 - -Image { - id: loading; source: "images/loading.png"; transformOrigin: "Center" - NumberAnimation on rotation { - from: 0; to: 360; running: loading.visible == true; repeat: true; duration: 900 - } -} diff --git a/demos/declarative/twitter/content/MultiTitleBar.qml b/demos/declarative/twitter/content/MultiTitleBar.qml deleted file mode 100644 index e0205b8..0000000 --- a/demos/declarative/twitter/content/MultiTitleBar.qml +++ /dev/null @@ -1,24 +0,0 @@ -import Qt 4.6 - -Item { - height: homeBar.height - HomeTitleBar { id: homeBar; width: parent.width; height: 60; - onUpdate: rssModel.reload() - } - TitleBar { id: titleBar; width: parent.width; height: 60; - y: -80 - untaggedString: "Latest tweets from everyone" - taggedString: "Latest tweets from " - } - states: [ - State { - name: "search"; when: screen.userView - PropertyChanges { target: titleBar; y: 0 } - PropertyChanges { target: homeBar; y: -80 } - } - ] - transitions: [ - Transition { NumberAnimation { properties: "x,y"; duration: 500; easing.type: "InOutQuad" } } - ] -} - diff --git a/demos/declarative/twitter/content/RssModel.qml b/demos/declarative/twitter/content/RssModel.qml deleted file mode 100644 index 9d88bb7..0000000 --- a/demos/declarative/twitter/content/RssModel.qml +++ /dev/null @@ -1,44 +0,0 @@ -import Qt 4.6 - -Item { id: wrapper - property var model: xmlModel - property string tags : "" - property string authName : "" - property string authPass : "" - property string mode : "everyone" - property int status: xmlModel.status - function reload() { xmlModel.reload(); } -XmlListModel { - id: xmlModel - - source:{ - if (wrapper.authName == ""){ - ""; //Avoid worthless calls to twitter servers - }else if(wrapper.mode == 'user'){ - "https://"+ ((wrapper.authName!="" && wrapper.authPass!="")? (wrapper.authName+":"+wrapper.authPass+"@") : "" )+"twitter.com/statuses/user_timeline.xml?screen_name="+wrapper.tags; - }else if(wrapper.mode == 'self'){ - "https://"+ ((wrapper.authName!="" && wrapper.authPass!="")? (wrapper.authName+":"+wrapper.authPass+"@") : "" )+"twitter.com/statuses/friends_timeline.xml"; - }else{//everyone/public - "http://twitter.com/statuses/public_timeline.xml"; - } - } - query: "/statuses/status" - - XmlRole { name: "statusText"; query: "text/string()" } - XmlRole { name: "timestamp"; query: "created_at/string()" } - XmlRole { name: "source"; query: "source/string()" } - XmlRole { name: "userName"; query: "user/name/string()" } - XmlRole { name: "userScreenName"; query: "user/screen_name/string()" } - XmlRole { name: "userImage"; query: "user/profile_image_url/string()" } - XmlRole { name: "userLocation"; query: "user/location/string()" } - XmlRole { name: "userDescription"; query: "user/description/string()" } - XmlRole { name: "userFollowers"; query: "user/followers_count/string()" } - XmlRole { name: "userStatuses"; query: "user/statuses_count/string()" } - //TODO: Could also get the user's color scheme, timezone and a few other things -} -Binding { - property: "mode" - target: wrapper - value: {if(wrapper.tags==''){"everyone";}else if(wrapper.tags=='my timeline'){"self";}else{"user";}} -} -} diff --git a/demos/declarative/twitter/content/TitleBar.qml b/demos/declarative/twitter/content/TitleBar.qml deleted file mode 100644 index 149aa82..0000000 --- a/demos/declarative/twitter/content/TitleBar.qml +++ /dev/null @@ -1,77 +0,0 @@ -import Qt 4.6 - -Item { - id: titleBar - property string untaggedString: "Uploads from everyone" - property string taggedString: "Recent uploads tagged " - - BorderImage { source: "images/titlebar.sci"; width: parent.width; height: parent.height + 14; y: -7 } - - Item { - id: container - width: (parent.width * 2) - 55 ; height: parent.height - - Script { - function accept() { - titleBar.state = "" - background.state = "" - rssModel.tags = editor.text - } - } - - Text { - id: categoryText - anchors { - left: parent.left; right: tagButton.left; leftMargin: 10; rightMargin: 10 - verticalCenter: parent.verticalCenter - } - elide: Text.ElideLeft - text: (rssModel.tags=="" ? untaggedString : taggedString + rssModel.tags) - font.bold: true; color: "White"; style: Text.Raised; styleColor: "Black" - font.pixelSize: 12 - } - - Button { - id: tagButton; x: titleBar.width - 50; width: 45; height: 32; text: "..." - onClicked: if (titleBar.state == "Tags") accept(); else titleBar.state = "Tags" - anchors.verticalCenter: parent.verticalCenter - } - - Item { - id: lineEdit - y: 4; height: parent.height - 9 - anchors { left: tagButton.right; leftMargin: 5; right: parent.right; rightMargin: 5 } - - BorderImage { source: "images/lineedit.sci"; anchors.fill: parent } - - TextInput { - id: editor - anchors { - left: parent.left; right: parent.right; leftMargin: 10; rightMargin: 10 - verticalCenter: parent.verticalCenter - } - cursorVisible: true; font.bold: true - color: "#151515"; selectionColor: "Green" - } - - Keys.forwardTo: [ (returnKey), (editor)] - - Item { - id: returnKey - Keys.onReturnPressed: accept() - Keys.onEscapePressed: titleBar.state = "" - } - } - } - - states: State { - name: "Tags" - PropertyChanges { target: container; x: -tagButton.x + 5 } - PropertyChanges { target: tagButton; text: "OK" } - PropertyChanges { target: lineEdit; focus: true } - } - - transitions: Transition { - NumberAnimation { properties: "x"; easing.type: "InOutQuad" } - } -} diff --git a/demos/declarative/twitter/content/ToolBar.qml b/demos/declarative/twitter/content/ToolBar.qml deleted file mode 100644 index f96c767..0000000 --- a/demos/declarative/twitter/content/ToolBar.qml +++ /dev/null @@ -1,24 +0,0 @@ -import Qt 4.6 - -Item { - id: toolbar - - property alias button1Label: button1.text - property alias button2Label: button2.text - signal button1Clicked - signal button2Clicked - - BorderImage { source: "images/titlebar.sci"; width: parent.width; height: parent.height + 14; y: -7 } - - Button { - id: button1 - anchors.left: parent.left; anchors.leftMargin: 5; y: 3; width: 140; height: 32 - onClicked: toolbar.button1Clicked() - } - - Button { - id: button2 - anchors.right: parent.right; anchors.rightMargin: 5; y: 3; width: 140; height: 32 - onClicked: toolbar.button2Clicked() - } -} diff --git a/demos/declarative/twitter/content/UserModel.qml b/demos/declarative/twitter/content/UserModel.qml deleted file mode 100644 index c146b84..0000000 --- a/demos/declarative/twitter/content/UserModel.qml +++ /dev/null @@ -1,26 +0,0 @@ -import Qt 4.6 - -//This "model" gets the user information about the searched user. Mainly for the icon. -//Copied from RssModel - -Item { id: wrapper - property var model: xmlModel - property string user : "" - property int status: xmlModel.status - function reload() { xmlModel.reload(); } -XmlListModel { - id: xmlModel - - source: {if(user!="") {"http://twitter.com/users/show.xml?screen_name="+user;}else{"";}} - query: "/user" - - XmlRole { name: "name"; query: "name/string()" } - XmlRole { name: "screenName"; query: "screen_name/string()" } - XmlRole { name: "image"; query: "profile_image_url/string()" } - XmlRole { name: "location"; query: "location/string()" } - XmlRole { name: "description"; query: "description/string()" } - XmlRole { name: "followers"; query: "followers_count/string()" } - //XmlRole { name: "protected"; query: "protected/bool()" } - //TODO: Could also get the user's color scheme, timezone and a few other things -} -} diff --git a/demos/declarative/twitter/content/images/gloss.png b/demos/declarative/twitter/content/images/gloss.png deleted file mode 100644 index 5d370cd..0000000 Binary files a/demos/declarative/twitter/content/images/gloss.png and /dev/null differ diff --git a/demos/declarative/twitter/content/images/lineedit.png b/demos/declarative/twitter/content/images/lineedit.png deleted file mode 100644 index 2cc38dc..0000000 Binary files a/demos/declarative/twitter/content/images/lineedit.png and /dev/null differ diff --git a/demos/declarative/twitter/content/images/lineedit.sci b/demos/declarative/twitter/content/images/lineedit.sci deleted file mode 100644 index 054bff7..0000000 --- a/demos/declarative/twitter/content/images/lineedit.sci +++ /dev/null @@ -1,5 +0,0 @@ -border.left: 10 -border.top: 10 -border.bottom: 10 -border.right: 10 -source: lineedit.png diff --git a/demos/declarative/twitter/content/images/loading.png b/demos/declarative/twitter/content/images/loading.png deleted file mode 100644 index 47a1589..0000000 Binary files a/demos/declarative/twitter/content/images/loading.png and /dev/null differ diff --git a/demos/declarative/twitter/content/images/stripes.png b/demos/declarative/twitter/content/images/stripes.png deleted file mode 100644 index 9f36727..0000000 Binary files a/demos/declarative/twitter/content/images/stripes.png and /dev/null differ diff --git a/demos/declarative/twitter/content/images/titlebar.png b/demos/declarative/twitter/content/images/titlebar.png deleted file mode 100644 index 51c9008..0000000 Binary files a/demos/declarative/twitter/content/images/titlebar.png and /dev/null differ diff --git a/demos/declarative/twitter/content/images/titlebar.sci b/demos/declarative/twitter/content/images/titlebar.sci deleted file mode 100644 index 0418d94..0000000 --- a/demos/declarative/twitter/content/images/titlebar.sci +++ /dev/null @@ -1,5 +0,0 @@ -border.left: 10 -border.top: 12 -border.bottom: 12 -border.right: 10 -source: titlebar.png diff --git a/demos/declarative/twitter/content/images/toolbutton.png b/demos/declarative/twitter/content/images/toolbutton.png deleted file mode 100644 index 1131001..0000000 Binary files a/demos/declarative/twitter/content/images/toolbutton.png and /dev/null differ diff --git a/demos/declarative/twitter/content/images/toolbutton.sci b/demos/declarative/twitter/content/images/toolbutton.sci deleted file mode 100644 index 9e4f965..0000000 --- a/demos/declarative/twitter/content/images/toolbutton.sci +++ /dev/null @@ -1,5 +0,0 @@ -border.left: 15 -border.top: 4 -border.bottom: 4 -border.right: 15 -source: toolbutton.png diff --git a/demos/declarative/twitter/twitter.qml b/demos/declarative/twitter/twitter.qml index 0ea1309..259f79a 100644 --- a/demos/declarative/twitter/twitter.qml +++ b/demos/declarative/twitter/twitter.qml @@ -1,5 +1,5 @@ import Qt 4.6 -import "content" as Twitter +import TwitterCore 1.0 as Twitter Item { id: screen; width: 320; height: 480 @@ -28,7 +28,7 @@ Item { id: background anchors.fill: parent; color: "#343434"; - Image { source: "content/images/stripes.png"; fillMode: Image.Tile; anchors.fill: parent; opacity: 0.3 } + Image { source: "TwitterCore/images/stripes.png"; fillMode: Image.Tile; anchors.fill: parent; opacity: 0.3 } Twitter.RssModel { id: rssModel } Twitter.Loading { anchors.centerIn: parent; visible: rssModel.status==XmlListModel.Loading && state!='unauthed'} -- cgit v0.12 From 4eaa7599be17d0838f98e2bafb0f0c8a0787530e Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Tue, 2 Mar 2010 15:55:17 +0100 Subject: Add minehunt README --- demos/declarative/minehunt/README | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 demos/declarative/minehunt/README diff --git a/demos/declarative/minehunt/README b/demos/declarative/minehunt/README new file mode 100644 index 0000000..7379dcf --- /dev/null +++ b/demos/declarative/minehunt/README @@ -0,0 +1,3 @@ +To run, simply load the minehunt.qml file with the qml runtime. + +Note that on X11, this demo has problems with the native graphicssystem. If you are using the X11 window system, please pass -graphicssystem raster to the qml binary. -- cgit v0.12 From 95087389919837fef920c6c06ccd34c3136c6b5e Mon Sep 17 00:00:00 2001 From: ck Date: Mon, 1 Mar 2010 17:45:15 +0100 Subject: Help system: Build search index with low priority. Reviewed-by: kh1 --- tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp | 2 +- tools/assistant/lib/qhelpsearchindexwriter_default.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp b/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp index d9dcec5..4baa376 100644 --- a/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp +++ b/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp @@ -586,7 +586,7 @@ void QHelpSearchIndexWriter::updateIndex(const QString &collectionFile, this->m_indexFilesFolder = indexFilesFolder; mutex.unlock(); - start(QThread::NormalPriority); + start(QThread::LowestPriority); } void QHelpSearchIndexWriter::optimizeIndex() diff --git a/tools/assistant/lib/qhelpsearchindexwriter_default.cpp b/tools/assistant/lib/qhelpsearchindexwriter_default.cpp index cb3e49c..827d145 100644 --- a/tools/assistant/lib/qhelpsearchindexwriter_default.cpp +++ b/tools/assistant/lib/qhelpsearchindexwriter_default.cpp @@ -191,7 +191,7 @@ void QHelpSearchIndexWriter::updateIndex(const QString &collectionFile, this->m_collectionFile = collectionFile; this->m_indexFilesFolder = indexFilesFolder; - start(QThread::NormalPriority); + start(QThread::LowestPriority); } void QHelpSearchIndexWriter::run() -- cgit v0.12 From fbcfcea9bb5cf0ce39e5ce1fb9b0628930f034d1 Mon Sep 17 00:00:00 2001 From: ck Date: Tue, 2 Mar 2010 15:31:27 +0100 Subject: Assistant: Un-watch files at shutdown. Not strictly needed, but it seems nicer to have a removePath() for every addPath(). Reviewed-by: kh1 --- tools/assistant/tools/assistant/helpenginewrapper.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/assistant/tools/assistant/helpenginewrapper.cpp b/tools/assistant/tools/assistant/helpenginewrapper.cpp index e21e95d..41ad633 100644 --- a/tools/assistant/tools/assistant/helpenginewrapper.cpp +++ b/tools/assistant/tools/assistant/helpenginewrapper.cpp @@ -167,6 +167,13 @@ HelpEngineWrapper::HelpEngineWrapper(const QString &collectionFile) HelpEngineWrapper::~HelpEngineWrapper() { TRACE_OBJ + const QStringList &namespaces = d->m_helpEngine->registeredDocumentations(); + foreach (const QString &nameSpace, namespaces) { + const QString &docFile + = d->m_helpEngine->documentationFileName(nameSpace); + d->m_qchWatcher->removePath(docFile); + } + delete d; } -- cgit v0.12 From e614e3548bbe505c75e8b3a54f44f07522a6ecf5 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Tue, 2 Mar 2010 16:41:16 +0100 Subject: Add and use QGLContextPrivate::eglSurfaceForDevice() The QGLContext only stores the EGLSurface for QWidgets & QGLWidgets, other device types like QPixmap & QGLPixelBuffer store the surface themsselves. With this patch it is possible to create a QGLContext on a QPixmap, make it current and render GL to that QPixmap on X11. Reviewed-By: TrustMe --- src/opengl/qgl_egl.cpp | 33 ++++++++++++++++++++++++++++++--- src/opengl/qgl_p.h | 1 + src/opengl/qgl_x11egl.cpp | 2 +- src/opengl/qglpixelbuffer.h | 1 + 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/opengl/qgl_egl.cpp b/src/opengl/qgl_egl.cpp index f1abab8..7bfcf27 100644 --- a/src/opengl/qgl_egl.cpp +++ b/src/opengl/qgl_egl.cpp @@ -40,8 +40,14 @@ ****************************************************************************/ #include +#include #include "qgl_p.h" #include "qgl_egl_p.h" +#include "qglpixelbuffer_p.h" + +#ifdef Q_WS_X11 +#include +#endif QT_BEGIN_NAMESPACE @@ -154,12 +160,12 @@ void QGLContext::reset() void QGLContext::makeCurrent() { Q_D(QGLContext); - if (!d->valid || !d->eglContext || d->eglSurface == EGL_NO_SURFACE) { + if (!d->valid || !d->eglContext || d->eglSurfaceForDevice() == EGL_NO_SURFACE) { qWarning("QGLContext::makeCurrent(): Cannot make invalid context current"); return; } - if (d->eglContext->makeCurrent(d->eglSurface)) + if (d->eglContext->makeCurrent(d->eglSurfaceForDevice())) QGLContextPrivate::setCurrentContext(this); } @@ -179,7 +185,7 @@ void QGLContext::swapBuffers() const if (!d->valid || !d->eglContext) return; - d->eglContext->swapBuffers(d->eglSurface); + d->eglContext->swapBuffers(d->eglSurfaceForDevice()); } void QGLContextPrivate::destroyEglSurfaceForDevice() @@ -202,6 +208,27 @@ void QGLContextPrivate::destroyEglSurfaceForDevice() } } +EGLSurface QGLContextPrivate::eglSurfaceForDevice() const +{ + if (paintDevice->devType() == QInternal::Widget) + return eglSurface; + if (paintDevice->devType() == QInternal::Pixmap) { +#ifdef Q_WS_X11 + QPixmapData *pmd = static_cast(paintDevice)->data_ptr().data(); + if (pmd->classId() == QPixmapData::X11Class) { + QX11PixmapData* x11PixmapData = static_cast(pmd); + return (EGLSurface)x11PixmapData->gl_surface; + } else +#endif + return eglSurface; + } + if (paintDevice->devType() == QInternal::Pbuffer) { + QGLPixelBuffer* pbuf = static_cast(paintDevice); + return pbuf->d_func()->pbuf; + } + return EGL_NO_SURFACE; +} + void QGLWidget::setMouseTracking(bool enable) { QWidget::setMouseTracking(enable); diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index ecd8b43..b828bea 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -356,6 +356,7 @@ public: QEglContext *eglContext; EGLSurface eglSurface; void destroyEglSurfaceForDevice(); + EGLSurface eglSurfaceForDevice() const; #elif defined(Q_WS_X11) || defined(Q_WS_MAC) void* cx; #endif diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index bcde8c4..ba05e72 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -229,7 +229,7 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) // QWidget - yes, create the EGLSurface and store it in QGLContextPrivate::eglSurface // QGLWidget - yes, create the EGLSurface and store it in QGLContextPrivate::eglSurface // QPixmap - yes, create the EGLSurface but store it in QX11PixmapData::gl_surface - // QGLPixelBuffer - no, it creates the surface itself + // QGLPixelBuffer - no, it creates the surface itself and stores it in QGLPixelBufferPrivate::pbuf if (devType == QInternal::Widget) { if (d->eglSurface != EGL_NO_SURFACE) diff --git a/src/opengl/qglpixelbuffer.h b/src/opengl/qglpixelbuffer.h index 3304dd8..d9c7e3e 100644 --- a/src/opengl/qglpixelbuffer.h +++ b/src/opengl/qglpixelbuffer.h @@ -112,6 +112,7 @@ private: friend class QGLWindowSurface; friend class QGLPaintDevice; friend class QGLPBufferGLPaintDevice; + friend class QGLContextPrivate; }; QT_END_NAMESPACE -- cgit v0.12 From ffec21e1e0694972592150c600f2970b6f28dbad Mon Sep 17 00:00:00 2001 From: ck Date: Tue, 2 Mar 2010 17:09:49 +0100 Subject: Assistant: Don't warn for non-existing English to English translations. They usually don't exist, so we'd just be adding noise otherwise. Reviewed-by: kh1 --- tools/assistant/tools/assistant/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/assistant/tools/assistant/main.cpp b/tools/assistant/tools/assistant/main.cpp index 77e5e7c..51ea9f9 100644 --- a/tools/assistant/tools/assistant/main.cpp +++ b/tools/assistant/tools/assistant/main.cpp @@ -292,7 +292,7 @@ void setupTranslation(const QString &fileName, const QString &dir) QTranslator *translator = new QTranslator(QCoreApplication::instance()); if (translator->load(fileName, dir)) { QCoreApplication::installTranslator(translator); - } else { + } else if (!fileName.endsWith(QLatin1String("en_US"))) { qWarning("Could not load translation file %s in directory %s.", qPrintable(fileName), qPrintable(dir)); } -- cgit v0.12 From 31e1fb9103e6d6657c1153f5c30e149087568042 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 2 Mar 2010 17:15:32 +0100 Subject: make the value of QMAKE_QMAKE somewhat less magic the generators change the value of QMAKE_QMAKE, so it is unwise to "redirect" it to a hidden builtin which is reset each time. in particular, this fixes qmake generating makefiles without an absolute path to qmake itself - the initial quoting of the filename will make the variable "real", so contains() will start working for it. --- qmake/project.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/qmake/project.cpp b/qmake/project.cpp index 951ca33..cf1c365 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -3136,7 +3136,6 @@ QStringList &QMakeProject::values(const QString &_var, QMap Date: Tue, 2 Mar 2010 16:41:05 +0100 Subject: QString::section: Fix crash with SectionIncludeLeadingSep flag And start is out of bounds. Reviewed-by: Thiago Reviewed-by: Joao Task-number: QTBUG-4306 --- src/corelib/tools/qstring.cpp | 2 +- tests/auto/qstring/tst_qstring.cpp | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 3ef0e66..03bc053 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -3185,7 +3185,7 @@ QString QString::section(const QRegExp ®, int start, int end, SectionFlags fl if (!empty || !(flags & SectionSkipEmpty)) x++; } - if((flags & SectionIncludeLeadingSep)) { + if((flags & SectionIncludeLeadingSep) && first_i < sections.size()) { const qt_section_chunk §ion = sections.at(first_i); ret.prepend(section.string.left(section.length)); } diff --git a/tests/auto/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp index c9b3436..4ebcade 100644 --- a/tests/auto/qstring/tst_qstring.cpp +++ b/tests/auto/qstring/tst_qstring.cpp @@ -3503,7 +3503,10 @@ void tst_QString::section_data() << QString("\\b") << 3 << 3 << int(QString::SectionDefault) << QString("is") << true; - + QTest::newRow( "task257941-rx" ) << QString("99.0 42.3") + << QString("\\s*[AaBb]\\s*") << 1 << 1 + << int(QString::SectionIncludeLeadingSep) + << QString() << true; } void tst_QString::section() -- cgit v0.12 From e3ae141989743b62dd4acc565801ff0898897065 Mon Sep 17 00:00:00 2001 From: Raino Priha Date: Tue, 2 Mar 2010 15:38:29 +0200 Subject: Allow platform specific values for the double click radius. Task-number: QT-2883 Reviewed-by: Volker Hilsheimer --- mkspecs/linux-g++-maemo/qplatformdefs.h | 2 ++ src/gui/kernel/qapplication.cpp | 4 ++++ src/gui/kernel/qapplication_x11.cpp | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/mkspecs/linux-g++-maemo/qplatformdefs.h b/mkspecs/linux-g++-maemo/qplatformdefs.h index 7e8d1d4..d7feb9e 100644 --- a/mkspecs/linux-g++-maemo/qplatformdefs.h +++ b/mkspecs/linux-g++-maemo/qplatformdefs.h @@ -40,3 +40,5 @@ ****************************************************************************/ #include "../linux-g++/qplatformdefs.h" + +#define QT_GUI_DOUBLE_CLICK_RADIUS 20 diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 4fe3900..6dda961 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -117,6 +117,10 @@ extern bool qt_wince_is_pocket_pc(); //qguifunctions_wince.cpp #include #endif +#ifndef QT_GUI_DOUBLE_CLICK_RADIUS +#define QT_GUI_DOUBLE_CLICK_RADIUS 5 +#endif + //#define ALIEN_DEBUG static void initResources() diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index afd927b..15761f4 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -4215,8 +4215,8 @@ bool QETWidget::translateMouseEvent(const XEvent *event) mouseButtonPressed == button && (long)event->xbutton.time -(long)mouseButtonPressTime < QApplication::doubleClickInterval() && - qAbs(event->xbutton.x - mouseXPos) < 5 && - qAbs(event->xbutton.y - mouseYPos) < 5) { + qAbs(event->xbutton.x - mouseXPos) < QT_GUI_DOUBLE_CLICK_RADIUS && + qAbs(event->xbutton.y - mouseYPos) < QT_GUI_DOUBLE_CLICK_RADIUS) { type = QEvent::MouseButtonDblClick; mouseButtonPressTime -= 2000; // no double-click next time } else { -- cgit v0.12 From 7f68ac15cb2a0b0caa5c56186ed672bebdb3a5b0 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Tue, 2 Mar 2010 18:39:11 +0100 Subject: update russian translations and phrasebook Merge-request: 485 Reviewed-by: Oswald Buddenhagen --- tools/linguist/phrasebooks/russian.qph | 40 + translations/assistant_adp_ru.ts | 235 +++-- translations/assistant_ru.ts | 143 +-- translations/designer_ru.ts | 569 ++++++----- translations/linguist_ru.ts | 562 ++++++----- translations/qt_help_ru.ts | 89 +- translations/qt_ru.ts | 1645 +++++++++++++++++++++++++------- translations/qtconfig_ru.ts | 297 +++--- translations/qvfb_ru.ts | 88 +- 9 files changed, 2287 insertions(+), 1381 deletions(-) diff --git a/tools/linguist/phrasebooks/russian.qph b/tools/linguist/phrasebooks/russian.qph index 9d40bd3..ae1a9b9 100644 --- a/tools/linguist/phrasebooks/russian.qph +++ b/tools/linguist/phrasebooks/russian.qph @@ -1164,4 +1164,44 @@ Table of Contents Оглавление + + parse + разобрать + + + parsing + разбор + + + phrasebook + глоссарий + + + phrase book + глоссарий + + + In use + Используется + + + Access denied + Доступ запрещён + + + No error + Нет ошибки + + + Not supported + Не поддерживается + + + Already exists + Уже существует + + + Permission denied + Доступ запрещён + diff --git a/translations/assistant_adp_ru.ts b/translations/assistant_adp_ru.ts index db0c9df..a421cd2 100644 --- a/translations/assistant_adp_ru.ts +++ b/translations/assistant_adp_ru.ts @@ -73,63 +73,62 @@ HelpDialog - + &Index &Указатель - + &Look For: &Искать: - + &New &Новая - - + &Search &Поиск - + <b>Enter a keyword.</b><p>The list will select an item that matches the entered string best.</p> <b>Указание ключевого слова.</b><p>Список заполняется элементами, лучше соответствующими указанному ключевому слову.</p> - + <b>Enter search word(s).</b><p>Enter here the word(s) you are looking for. The words may contain wildcards (*). For a sequence of words quote them.</p> <b>Указание слов для поиска.</b><p>Введите одно или несколько слов, по которым требуется осуществить поиск. Слова могут содержкать символы-заменители (*). Если требуется найти сочетание слов, заключите искомую фразу в кавычки.</p> - + <b>Found documents</b><p>This list contains all found documents from the last search. The documents are ordered, i.e. the first document has the most matches.</p> <b>Найденные документы</b><p>В данном списке представлены все найденные при последнем поиске документы. Документы упорядочены по релевантности, т.е. чем выше в списке, тем чаще в нём встречаются искомые слова.</p> - + <b>Help topics organized by category.</b><p>Double-click an item to see the topics in that category. To view a topic, just double-click it.</p> <b>Разделы справки, распределённые по категориям.</b><p>Дважды щёлкните по одному из пунктов для отображения разделов в данной категории. Для открытия раздела дважды щёлкните по нему.</p> - + <b>Help</b><p>Choose the topic you want help on from the contents list, or search the index for keywords.</p> <b>Справка</b><p>Выберите раздел справки из оглавления или воспользуйтесь поиском по предметному указателю.</p> - + <b>List of available help topics.</b><p>Double-click on an item to open its help page. If more than one is found, you must specify which page you want.</p> <b>Список доступных разделов справки.</b><p>Дважды щёлкните по одному из пунктов для открытия страницы справки. Если найдено более одной страницы, выберите желаемую.</p> - + Add new bookmark Добавить закладку - + Add the currently displayed page as a new bookmark. Добавить отображаемую страницу в закладки. @@ -139,47 +138,47 @@ Не удаётся открыть файл индекса %1 - + Con&tents &Оглавление - + Delete bookmark Удалить закладку - + Delete the selected bookmark. Удалить выбранную закладку. - + Enter searchword(s) Введите одно или несколько слов для поиска - + Display the help page Показать страницу справки - + Display the help page for the full text search. Показать справку по полнотекстовому поиску. - + Start searching Начать поиск - + Displays help topics organized by category, index or bookmarks. Another tab inherits the full text search. Отображает список разделов, распредёленных по категориям, указатель или закладки. Последняя вкладка содержит панель полнотекстового поиска. - + Displays the list of bookmarks. Отображает список закладок. @@ -205,7 +204,7 @@ Skipping file. Готово - + Enter keyword Введите ключевое слово @@ -224,7 +223,7 @@ Assistant will not work! Qt Assistant не будет работать! - + Found &Documents: Найденные &документы: @@ -235,12 +234,12 @@ Qt Assistant не будет работать! Полнотекстовый поиск - + He&lp &Справка - + Help Справка @@ -272,12 +271,12 @@ Qt Assistant не будет работать! Подготовка... - + Preparing... Подготовка... - + Pressing this button starts the search. Нажатие на эту кнопку запустит процесс поиска. @@ -294,7 +293,7 @@ Qt Assistant не будет работать! Чтение каталога... - + Searching f&or: &Искать: @@ -316,8 +315,7 @@ Qt Assistant не будет работать! Предупреждение - - + column 1 столбец 1 @@ -336,12 +334,12 @@ Qt Assistant не будет работать! - + &Bookmarks &Закладки - + &Delete &Удалить @@ -407,73 +405,72 @@ Qt Assistant не будет работать! MainWindow - - + "What's This?" context sensitive help. Контекстная справка "Что это?". - + &Add Bookmark &Добавить закладку - + &Close &Закрыть - + &Copy &Копировать - + &Edit &Правка - + &File &Файл - + &Find in Text... П&оиск по тексту... - + &Go &Перейти - + &Help &Справка - + &Home &Домой - + &Next Сл&едующий - + &Previous &Предыдущий - + &Print... &Печать... - + &View &Вид @@ -488,27 +485,27 @@ Qt Assistant не будет работать! ... - + About Qt О Qt - + About Qt Assistant О Qt Assistant - + Add Tab Добавить вкладку - + Add the currently displayed page as a new bookmark. Добавить отображаемую страницу в закладки. - + Boo&kmarks &Закладки @@ -518,17 +515,17 @@ Qt Assistant не будет работать! Не удалось открыть файл для записи! - + Close Tab Закрыть вкладку - + Close the current window. Закрыть текущее окно. - + Display further information about Qt Assistant. Показать дополнительную информацию о Qt Assistant. @@ -538,7 +535,7 @@ Qt Assistant не будет работать! Открывает стартовую страницу выбранного набора документации. - + E&xit В&ыход @@ -548,32 +545,32 @@ Qt Assistant не будет работать! Не удалось получить информацию о приложении из файла: '%1' - + Find &Next Найти &следующее - + Find &Previous Найти &предыдущее - + Font Settings... Настройки шрифта... - + Go Перейти - + Go to the home page. Qt Assistant's home page is the Qt Reference Documentation. Перейти на домашнюю страницу. Домашная страница Qt Assistant - Справочная документация по Qt. - + Go to the next page. Переход на следующую страницу. @@ -588,32 +585,32 @@ Qt Assistant не будет работать! Свернуть - + New Window Новое окно - + Next Tab Следующая вкладка - + Open a new window. Открыть новое окно. - + Open the Find dialog. Qt Assistant will search the currently displayed page for the text you enter. Открыть окно поиска. Qt Assistant произведёт поиск введённого текста на отображаемой странице. - + Previous Tab Предыдущая вкладка - + Print the currently displayed page. Печатать отображаемую страницу. @@ -624,17 +621,17 @@ Qt Assistant не будет работать! Qt Assistant - + Qt Assistant Manual Руководство по Qt Assistant - + Qt Assistant by Nokia Qt Assistant от Nokia - + Quit Qt Assistant. Выйти из Qt Assistant. @@ -645,12 +642,12 @@ Qt Assistant не будет работать! Сохранить страницу - + Save Page As... Сохранить страницу как... - + Select the page in contents tab. Выбрать страницу во вкладке оглавления. @@ -660,12 +657,12 @@ Qt Assistant не будет работать! Боковая панель - + Sync with Table of Contents Синхронизировать с оглавлением - + Toolbar Панель инструментов @@ -675,27 +672,27 @@ Qt Assistant не будет работать! Виды - + What's This? Что это? - + Zoom &in У&величить - + Zoom &out У&меньшить - + Zoom in on the document, i.e. increase the font size. Увеличить размер шрифта. - + Zoom out on the document, i.e. decrease the font size. Уменьшить размер шрифта. @@ -740,112 +737,112 @@ Qt Assistant не будет работать! - + Ctrl+P - + Ctrl+Q - + Copy the selected text to the clipboard. Скопировать выделенный текст в буфер обмена. - + Ctrl+C - + Ctrl+F - + F3 - + Shift+F3 - + Ctrl+Home - + Go to the previous page. Переход на предыдущую страницу. - + Alt+Left - + Alt+Right - + Ctrl++ - + Ctrl+- - + Ctrl+N - + Ctrl+W - + Shift+F1 - + Ctrl+Alt+N - + Ctrl+Alt+Right - + Ctrl+Alt+Left - + Ctrl+Alt+Q - + F1 - + Ctrl+Alt+S @@ -866,7 +863,7 @@ Qt Assistant не будет работать! ... - + <img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped <img src=":/trolltech/assistant/images/wrap.png">&nbsp;Поиск с начала @@ -876,7 +873,7 @@ Qt Assistant не будет работать! Добавить вкладку - + Case Sensitive Учитывать регистр @@ -901,50 +898,50 @@ Qt Assistant не будет работать! Новая вкладка - + Next Следующее - + Previous Предыдущее - + Untitled Безымянный - + Whole words Слова целиком - + TabbedBrowser - + TabbedBrowser TopicChooser - + &Close &Закрыть - + &Display &Показать - + &Topics &Разделы - + Choose Topic Выбор раздела @@ -954,22 +951,22 @@ Qt Assistant не будет работать! Выберите раздел для <b>%1</b> - + Close the Dialog. Закрыть диалог. - + Displays a list of available help topics for the keyword. Показывает список доступных разделов справки, найденных по ключевому слову. - + Open the topic selected in the list. Открыть выбранный раздел. - + Select a topic from the list and click the <b>Display</b>-button to open the online help. Выберите раздел из списка и нажмите на кнопку <b>Показать</b> для открытия онлайн справки. diff --git a/translations/assistant_ru.ts b/translations/assistant_ru.ts index 992cf18..ade4c85 100644 --- a/translations/assistant_ru.ts +++ b/translations/assistant_ru.ts @@ -32,41 +32,41 @@ BookmarkDialog - + Add Bookmark Добавление закладки - + Bookmark: Закладка: - + Add in Folder: Добавить в папку: - + + + - + New Folder Новая папка - + - + Bookmarks Закладки - + Delete Folder Удалить папку @@ -79,7 +79,7 @@ BookmarkManager - + Bookmarks Закладки @@ -103,7 +103,7 @@ BookmarkWidget - + Delete Folder Удалить папку @@ -151,7 +151,7 @@ CentralWidget - + Add new page Открыть новую страницу @@ -166,7 +166,7 @@ Печать документа - + unknown безымянная вкладка @@ -192,7 +192,7 @@ Добавить закладку для этой страницы... - + Search Поиск @@ -213,12 +213,12 @@ FilterNameDialogClass - + Add Filter Name Добавление фильтра - + Filter Name: Название фильтра: @@ -226,7 +226,7 @@ FindWidget - + Previous Предыдущее @@ -282,7 +282,7 @@ HelpViewer - + Open Link in New Tab Открыть ссылку в новой вкладке @@ -327,7 +327,7 @@ &Искать: - + Open Link Открыть ссылку @@ -340,7 +340,7 @@ InstallDialog - + Install Documentation Установка документации @@ -407,32 +407,32 @@ %1 - + Available Documentation: Доступная документация: - + Install Установить - + Cancel Отмена - + Close Закрыть - + Installation Path: Путь установки: - + ... ... @@ -441,31 +441,31 @@ MainWindow - + Index Указатель - - + + Contents Содержание - - + + Bookmarks Закладки - - - + + + Qt Assistant Qt Assistant - + Unfiltered Без фильтрации @@ -526,7 +526,12 @@ П&оиск в тексте... - + + &Find + &Поиск + + + Find &Next Найти &следующее @@ -621,7 +626,12 @@ Синхронизировать с оглавлением - + + Sync + Синхронизировать + + + Next Page Следующая страница @@ -706,7 +716,7 @@ Отфильтровано по: - + Address Toolbar Панель адреса @@ -783,118 +793,117 @@ PreferencesDialogClass - + Preferences Настройки - + Fonts Шрифты - + Font settings: Настройки шрифта: - + Browser Обозреватель - + Application Приложение - + Filters Фильтры - + Filter: Фильтр: - + Attributes: Атрибуты: - + 1 1 - + Add Добавить - - + Remove Удалить - + Documentation Документация - + Registered Documentation: Зарегистрированная документация: - + Add... Добавить... - + Options Параметры - + Homepage Стартовая страница - + Current Page Текущая страница - + Restore to default Страница по умолчанию - + On help start: При запуске: - + Show my home page Отобразить стартовую страницу - + Show a blank page Отобразить пустую страницу - + Show my tabs from last session Восстановить предыдущую сессиию - + Blank Page Пустая страница @@ -964,7 +973,7 @@ Qt Assistant - + Could not register documentation file %1 @@ -1026,7 +1035,7 @@ Reason: SearchWidget - + &Copy &Копировать @@ -1054,22 +1063,22 @@ Reason: Выберите раздел для <b>%1</b>: - + Choose Topic Выбор раздела - + &Topics &Разделы - + &Display &Показать - + &Close &Закрыть diff --git a/translations/designer_ru.ts b/translations/designer_ru.ts index 932c611..412be47 100644 --- a/translations/designer_ru.ts +++ b/translations/designer_ru.ts @@ -32,17 +32,17 @@ AddLinkDialog - + Insert Link Вставить ссылку - + Title: Заголовок: - + URL: URL: @@ -149,12 +149,12 @@ AppearanceOptionsWidget - + Form Форма - + User Interface Mode Режим пользовательского интерфейса @@ -585,7 +585,7 @@ Изменить компоновку '%1' с %2 на %3 - + Set action text Установить текст действия @@ -596,12 +596,12 @@ - + Move action Переместить действие - + Change Title Изменить заголовок @@ -680,24 +680,22 @@ ConnectDialog - + Configure Connection Настройка соединения - - + GroupBox GroupBox - - + Edit... Изменить... - + Show signals and slots inherited from QWidget Показывать сигналы и слоты, унаследованные от QWidget @@ -705,7 +703,7 @@ ConnectionDelegate - + <object> <объект> @@ -761,12 +759,12 @@ Invalid UI file: The root element <ui> is missing. - Некорректный файл UI: Отсутствует корневой элемент <ui>. + Некорректный файл UI: Отсутствует корневой элемент <ui>. An error has occurred while reading the UI file at line %1, column %2: %3 - При чтении файла UI в строке %1 позиции %2 возникла ошибка: %3 + При чтении файла UI в строке %1 позиции %2 возникла ошибка: %3 @@ -808,7 +806,7 @@ This file cannot be read because the extra info extension failed to load. - Не удалось прочитать файл, так как возникла ошибка при загрузке расширения дополнительной информации. + Не удалось прочитать файл, так как возникла ошибка при загрузке расширения дополнительной информации. @@ -869,27 +867,27 @@ DeviceProfileDialog - + &Family &Шрифт - + &Point Size &Размер - + Style Начертание - + Device DPI DPI устройства - + Name Название @@ -1030,7 +1028,7 @@ FormBuilder - + Invalid stretch value for '%1': '%2' Parsing layout stretch values Некорректный коэффициент растяжения для '%1': '%2' @@ -1074,38 +1072,38 @@ FormLayoutRowDialog - + Add Form Layout Row нелепица какая-то Добавление строки компоновки компоновщика формы - + &Label text: Текст &метки: - + Field &type: &Тип поля: - + &Field name: Имя п&оля: - + &Buddy: П&артнёр: - + &Row: &Строка: - + Label &name: Имя м&етки: @@ -1126,62 +1124,62 @@ FormWindowSettings - + Form Settings Настройки формы - + Layout &Default Компоновка по &умолчанию - + &Spacing: &Отступ: - + &Margin: &Границы: - + &Layout Function &Функция компоновки - + Ma&rgin: Г&раницы: - + Spa&cing: О&тступ: - + &Author &Автор - + &Include Hints &Подключить подсказки - + &Pixmap Function &Загрузчик изображений - + Grid Сетка - + Embedded Design Оформление портативных устройств @@ -1329,12 +1327,12 @@ PluginDialog - + Plugin Information Информация о модуле - + 1 1 @@ -1342,7 +1340,7 @@ PreferencesDialog - + Preferences Настройки @@ -1350,34 +1348,32 @@ PreviewConfigurationWidget - + Form Форма - + Print/Preview Configuration Настройка печати/предпросмотра - + Style Стиль - + Style sheet Таблица стилей - - - + ... ... - + Device skin Обложка устройства @@ -1410,15 +1406,15 @@ An error has occurred while reading the UI file at line %1, column %2: %3 - Возникла ошибка при чтении файла UI в строке %1 позиции %2: %3 + Возникла ошибка при чтении файла UI в строке %1 позиции %2: %3 Invalid UI file: The root element <ui> is missing. - Неверный файл UI: Отсутствует корневой элемент <ui>. + Некорректный файл UI: отсутствует корневой элемент <ui>. - + The creation of a widget of the class '%1' failed. Не удалось создание виджета класса '%1'. @@ -1932,7 +1928,7 @@ Would you like to retry? Reset control - Сбросить элемент управления + Сбросить элемент управления @@ -1994,7 +1990,7 @@ Would you like to retry? QDesignerMenu - + Type Here Пишите здесь @@ -2020,7 +2016,7 @@ Would you like to retry? - + Add separator Добавить разделитель @@ -2283,7 +2279,7 @@ Container pages should only be added by specifying them in XML returned by the d QFormBuilder - + An empty class name was passed on to %1 (object name: '%2'). Empty class name passed to widget factory method Методу %1 (объекта '%2') было передано пустое имя класса. @@ -2323,6 +2319,16 @@ Container pages should only be added by specifying them in XML returned by the d The property %1 could not be written. The type %2 is not supported yet. Не удалось записать свойство %1. Тип %2 ещё не поддерживается. + + + The enumeration-value '%1' is invalid. The default value '%2' will be used instead. + Значение '%1' перечисляемого типа некорректно. Будет использовано значение '%2'. + + + + The flag-value '%1' is invalid. Zero will be used instead. + Значение флага '%1' перечисляемого типа некорректно. Будет использовано значение '0' (нуль). + QStackedWidgetEventFilter @@ -2456,36 +2462,36 @@ Container pages should only be added by specifying them in XML returned by the d QtBoolEdit - + True - Вкл. + Вкл. False - Выкл. + Выкл. QtBoolPropertyManager - + True - Да + Вкл. False - Нет + Выкл. QtCharEdit - + Clear Char Стереть символ @@ -2501,7 +2507,7 @@ Container pages should only be added by specifying them in XML returned by the d QtColorPropertyManager - + Red Красный @@ -2524,7 +2530,7 @@ Container pages should only be added by specifying them in XML returned by the d QtCursorDatabase - + Arrow Arrow @@ -2673,7 +2679,7 @@ Container pages should only be added by specifying them in XML returned by the d QtGradientDialog - + Edit Gradient Правка градиента @@ -2763,234 +2769,222 @@ Container pages should only be added by specifying them in XML returned by the d Зеркальная - + Form Форма - + Gradient Editor Редактор градиента - + 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. Эта область отображает предварительный вариант настраиваемого градиента. Также она позволяет менять с помощью перетаскивания характерные для градиента параметры, такие как: начальная и конечная точки, радиус и пр. - + 1 1 - + 2 2 - + 3 3 - + 4 4 - + 5 5 - + Gradient Stops Editor Редактор опорных точек градиента - + 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. Эта область позволяет редактировать опорные точки градиента. Двойной щелчок на существующей точке создаст её копию. Двойной клик вне существующей точки создаст новую. Точки можно перемещать путем удерживания левой кнопки. По правой кнопке можно получить контекстное меню дополнительных действий. - + Zoom Масштаб - - + Reset Zoom 100% - + Position Положение - - - + Hue Оттенок - + H H - - + Saturation Насыщенность - + S S - + Sat Насыщение - - + Value Значение - + V V - + Val Значение - - - + Alpha Альфа - + A A - + Type Тип - + Spread Заливка - + Color Цвет - + Current stop's color Цвет текущей точки - + Show HSV specification Настройки в виде HSV - + HSV HSV - + Show RGB specification Настройки в виде RGB - + RGB RGB - + Current stop's position Положение текущей точки - + % % - + Zoom In Увеличить - + Zoom Out Уменьшить - + Toggle details extension Показать/скрыть детальные настройки - + > > - + Linear Type Линейный тип - - - - - - + ... ... - + Radial Type Радиальный тип - + Conical Type Конический тип - + Pad Spread Равномерная заливка - + Repeat Spread Цикличная заливка - + Reflect Spread Зеркальная заливка @@ -3015,7 +3009,7 @@ Container pages should only be added by specifying them in XML returned by the d Select All - Выделить все + Выделить всё @@ -3038,7 +3032,7 @@ Container pages should only be added by specifying them in XML returned by the d Grad - Градиент + Градиент @@ -3051,31 +3045,31 @@ Container pages should only be added by specifying them in XML returned by the d Вы действительно желаете удалить выбранный градиент? - + New... Новый... - + Edit... Правка... - + Rename Переименовать - + Remove Удалить - + Gradient View Просмотр градиента @@ -3083,7 +3077,8 @@ Container pages should only be added by specifying them in XML returned by the d QtGradientViewDialog - + + Select Gradient Выбрать градиент @@ -3091,7 +3086,7 @@ Container pages should only be added by specifying them in XML returned by the d QtKeySequenceEdit - + Clear Shortcut Удалить комбинацию горячих клавиш @@ -3153,7 +3148,7 @@ Container pages should only be added by specifying them in XML returned by the d QtPropertyBrowserUtils - + [%1, %2, %3] (%4) [%1, %2, %3] (%4) @@ -3269,7 +3264,7 @@ Do you want to replace it? newPrefix - + newPrefix @@ -3460,49 +3455,47 @@ to Предупреждение - + Dialog Диалог - + New File Новый файл - - + N N - + Remove File Удалить файл - - + R R - + I I - + New Resource Новый ресурс - + A A - + Remove Resource or File Удалить ресурс или файл @@ -3623,97 +3616,97 @@ to < Р А З Д Е Л И Т Е Л Ь > - + Customize Toolbars Настройка панелей инструментов - + 1 1 - + Actions Действия - + Toolbars Панель инструментов - + Add new toolbar Добавить новую панель инструментов - + New Новая - + Remove selected toolbar Удалить выбранную панель инструментов - + Remove Удалить - + Rename toolbar Переименовать панель инструментов - + Rename Переименовать - + Move action up Переместить действие вверх - + Up Вверх - + Remove action from toolbar Удалить действие из панели инструментов - + <- <- - + Add action to toolbar Добавить действие на панель инструментов - + -> -> - + Move action down Переместить действие вниз - + Down Вниз - + Current Toolbar Actions Текущие действия панели инструментов @@ -3781,17 +3774,17 @@ Do you want overwrite the template? Выберите каталог для сохранения шаблонов - + Save Form As Template Сохранить форму как шаблон - + &Category: &Категория: - + &Name: &Имя: @@ -3809,22 +3802,22 @@ Do you want overwrite the template? SelectSignalDialog - + Go to slot Переход к слоту - + Select signal Выбор сигнала - + signal сигнал - + class класс @@ -3840,37 +3833,32 @@ Do you want overwrite the template? SignalSlotDialogClass - + Signals and slots Сигналы и слоты - + Slots Слоты - - + Add Добавить - - - - + ... ... - - + Delete Удалить - + Signals Сигналы @@ -3934,7 +3922,7 @@ Do you want overwrite the template? VersionDialog - + <h3>%1</h3><br/><br/>Version %2 <h3>%1</h3><br/><br/>Версия %2 @@ -4053,7 +4041,7 @@ Do you want overwrite the template? qdesigner_internal::ActionModel - + Name Имя @@ -4609,57 +4597,57 @@ Do you want overwrite the template? qdesigner_internal::Dialog - + Dialog Диалог - + StringList Список строк - + New String Новая строка - + &New &Новая - + Delete String Удалить строку - + &Delete &Удалить - + &Value: &Значение: - + Move String Up Переместить строку вверх - + Up Вверх - + Move String Down Переместить строку вниз - + Down Вниз @@ -4828,7 +4816,7 @@ Do you want overwrite the template? Выбрать предка - + Lay out Компоновка @@ -4860,7 +4848,7 @@ Do you want overwrite the template? qdesigner_internal::FormWindowManager - + Cu&t &Вырезать @@ -5074,38 +5062,37 @@ Do you want overwrite the template? qdesigner_internal::GridPanel - + Form Форма - + Grid Сетка - + Visible Видимая - + Grid &X Сетка &X - - + Snap Прилипать - + Reset Сбросить - + Grid &Y Сетка &Y @@ -5227,53 +5214,53 @@ Do you want overwrite the template? Свойства &<< - + Properties &>> Свойства &>> - + Items List Список элементов - + New Item Новый элемент - + &New &Новый - + Delete Item Удалить элемент - + &Delete &Удалить - + Move Item Up Переместить элемент вверх - + U U - + Move Item Down Переместить элемент вниз - + D D @@ -5380,43 +5367,42 @@ Do you want overwrite the template? qdesigner_internal::NewActionDialog - + New Action... Новое действие... - + &Text: &Текст: - + Object &name: &Имя объекта: - + &Icon: &Значок: - + Shortcut: Горячая клавиша: - + Checkable: Триггерное: - + ToolTip: Подсказка: - - + ... ... @@ -5443,22 +5429,22 @@ Please select another name. Укажите другое имя. - + Create Dynamic Property Создание динамического свойства - + Property Name Имя свойства - + horizontalSpacer - + Property Type Тип свойства @@ -5522,27 +5508,27 @@ Please select another name. Внутренняя ошибка: Шаблон не выбран. - + 0 0 - + Choose a template for a preview Выберите шаблон для предпросмотра - + Embedded Design Оформление портативных устройств - + Device: Устройство: - + Screen Size: Размер экрана: @@ -5592,9 +5578,6 @@ Please select another name. &Find in Text... &Найти в тексте... - - - qdesigner_internal::ObjectInspector::ObjectInspectorPrivate Change Current Page @@ -5614,22 +5597,22 @@ Please select another name. %1 %2 - + Change Page Order Изменение порядка страниц - + Page Order Порядок страниц - + Move page up Переместить страницу выше - + Move page down Переместить страницу ниже @@ -5637,47 +5620,47 @@ Please select another name. qdesigner_internal::PaletteEditor - + Edit Palette Правка палитры - + Tune Palette Настройка палитры - + Show Details Показывать детали - + Compute Details Расчитывать детали - + Quick Быстрый - + Preview Предпросмотр - + Disabled Выключенная - + Inactive Неактивная - + Active Активная @@ -5813,9 +5796,6 @@ Please select another name. Browse... Обзор... - - - qdesigner_internal::PreviewConfigurationWidget::PreviewConfigurationWidgetPrivate Load Custom Device Skin @@ -5895,57 +5875,57 @@ ate the goose who was loose. qdesigner_internal::PreviewWidget - + Preview Window Окно предпросмотра - + LineEdit LineEdit - + ComboBox ComboBox - + PushButton PushButton - + ButtonGroup2 ButtonGroup2 - + CheckBox1 CheckBox1 - + CheckBox2 CheckBox2 - + ButtonGroup ButtonGroup - + RadioButton1 RadioButton1 - + RadioButton2 RadioButton2 - + RadioButton3 RadioButton3 @@ -6628,23 +6608,23 @@ Class: %2 qdesigner_internal::TableWidgetEditor - + Properties &>> Свойства &>> - + Edit Table Widget Правка табличного виджета - + &Items &Элементы - + Table Items Элементы таблицы @@ -6690,18 +6670,17 @@ Class: %2 Выберите каталог для сохранения шаблонов - + Form Форма - + Additional Template Paths Дополнительные пути к шаблонам - - + ... ... @@ -6803,13 +6782,13 @@ Class: %2 Общие свойства - + New Item Новый элемент - + New Subitem Новый дочерний элемент @@ -6820,88 +6799,88 @@ Class: %2 Свойства &<< - + Properties &>> Свойства &>> - + Edit Tree Widget - Изменение виджета Tree + Изменение виджета Дерево - + &Items &Элементы - + Tree Items Элементы дерева - + 1 1 - + &New &Новый - + New &Subitem Новый &дочерний элемент - + Delete Item Удалить элемент - + &Delete &Удалить - + Move Item Left (before Parent Item) Переместить элемент влево (перед родительским) - + L L - + Move Item Right (as a First Subitem of the Next Sibling Item) Переместить элемент вправо (сделать первым дочерним элементом соседнего элемента) - + R - + Move Item Up Переместить элемент вверх - + U U - + Move Item Down Переместить элемент вниз - + D D diff --git a/translations/linguist_ru.ts b/translations/linguist_ru.ts index 1749d48..3f26c49 100644 --- a/translations/linguist_ru.ts +++ b/translations/linguist_ru.ts @@ -4,7 +4,7 @@ AboutDialog - + Qt Linguist Qt Linguist @@ -12,52 +12,52 @@ BatchTranslationDialog - + Qt Linguist - Batch Translation Qt Linguist - Пакетный перевод - + Options Параметры - + Set translated entries to finished Помечать переведенные записи как завершённые - + Retranslate entries with existing translation Переводить записи, уже имеющие перевод - + Translate also finished entries Также переводить записи с завершёнными переводами - + Phrase book preference - Предпочитаемые разговорники + Предпочитаемые глоссарии - + Move up Поднять - + Move down Опустить - + &Run &Выполнить - + Cancel Отмена @@ -91,14 +91,14 @@ - + Note that the modified entries will be reset to unfinished if 'Set translated entries to finished' above is unchecked Имейте в виду, что изменённые записи будут отмечены как незавершённые, если не включен параметр "Помечать переведенные записи как завершённые" - + The batch translator will search through the selected phrase books in the order given above - Пакетный переводчик будет искать в выбранных разговорниках в указанном выше порядке + Пакетный переводчик будет искать в выбранных глоссариях в указанном выше порядке @@ -110,11 +110,17 @@ + <p>[more duplicates omitted] <p>[остальные повторы не указаны] - + + <p>* ID: %1 + <p>* ID: %1 + + + <p>* Context: %1<br>* Source: %2 <p>* Контекст: %1<br>* Источник: %2 @@ -124,7 +130,7 @@ <br>* Комментарий: %3 - + Linguist does not know the plural rules for '%1'. Will assume a single universal form. Qt Linguist не знает правила множественных форм для '%1'. @@ -161,7 +167,7 @@ Will assume a single universal form. A phrase book suggestion for '%1' was ignored. - Предложение разговорника для '%1' пропущено. + Предложение глоссария для '%1' пропущено. @@ -188,92 +194,92 @@ Will assume a single universal form. - + Find Поиск - + This window allows you to search for some text in the translation source file. Данное окно позволяет искать текст в файле перевода. - + &Find what: &Искать: - + Type in the text to search for. Введите искомый текст. - + Options Параметры - + Source texts are searched when checked. Если отмечено, поиск будет вестись в исходных текстах. - + &Source texts &Исходные тексты - + Translations are searched when checked. Если отмечено, поиск будет вестись в переведённых текстах. - + &Translations &Переводы - + Texts such as 'TeX' and 'tex' are considered as different when checked. Если отмечено, строки "ПрИмЕр" и "пример" будет считаться разными. - + &Match case С учётом &регистра - + Comments and contexts are searched when checked. Если отмечено, поиск будет вестись по контекстам и комментариям. - + &Comments &Комментарии - + Ignore &accelerators Пропускать &акселераторы - + Click here to find the next occurrence of the text you typed in. Найти следующее совпадение для введённого текста. - + Find Next Найти далее - + Click here to close this window. Закрыть окно. - + Cancel Отмена @@ -281,7 +287,7 @@ Will assume a single universal form. FormMultiWidget - + Alt+Delete translate, but don't change @@ -306,23 +312,27 @@ Will assume a single universal form. Delete non-empty length variant? - + Удалить непустой вариант длины? LRelease - + Dropped %n message(s) which had no ID. - + Удалено %n сообщение, у которого не было ID. + Удалено %n сообщения, у которых не было ID. + Удалено %n сообщений, у которых не было ID. Excess context/disambiguation dropped from %n message(s). - + Удалён лишний контекст из %n сообщения. + Удалён лишний контекст из %n сообщений. + Удалён лишний контекст из %n сообщений. @@ -355,14 +365,14 @@ Will assume a single universal form. MainWindow - + This is the application's main window. Основное окно программы. - + Source text Исходный текст @@ -374,27 +384,27 @@ Will assume a single universal form. - + Context Контекст - + Items Записи - + This panel lists the source contexts. В данной панели перечислены исходные контексты. - + Strings Строки - + Phrases and guesses Фразы и похожие переводы @@ -415,7 +425,7 @@ Will assume a single universal form. ИЗМ - + Loading... Загрузка... @@ -453,7 +463,7 @@ Skip loading the first named file? - + Related files (%1);; Связанные файлы (%1);; @@ -469,7 +479,7 @@ Skip loading the first named file? Файл сохранён. - + Release @@ -586,29 +596,29 @@ All files (*) Create New Phrase Book - Создать разговорник + Создать глоссарий Qt phrase books (*.qph) All files (*) - Разговорники Qt (*.qph) + Глоссарии Qt (*.qph) Все файлы (*) Phrase book created. - Разговорник создан. + Глоссарий создан. Open Phrase Book - Открыть разговорник + Открыть глоссарий Qt phrase books (*.qph);;All files (*) - Разговорники Qt (*.qph);;Все файлы (*) + Глоссарии Qt (*.qph);;Все файлы (*) @@ -624,22 +634,22 @@ All files (*) Add to phrase book - Добавить в разговорник + Добавить в глоссарий No appropriate phrasebook found. - Подходящий разговорник не найден. + Подходящий глоссарий не найден. Adding entry to phrasebook %1 - Добавление записи в разговорник %1 + Добавление записи в глоссарий %1 Select phrase book to add to - Выберите разговорник, в который желаете добавить фразу + Выберите глоссарий, в который желаете добавить фразу @@ -739,15 +749,14 @@ All files (*) &Сохранить - + Save &As... Сохранить &как... - - + Release As... @@ -765,7 +774,7 @@ All files (*) Сохранить все - + &Release All С&компилировать все @@ -796,13 +805,13 @@ All files (*) &Найти и перевести в '%1'... - + Translation File &Settings... &Параметры файла перевода... - + &Batch Translation... Пак&етный перевод... @@ -813,31 +822,31 @@ All files (*) &Найти и перевести... - + File Файл - + Edit Правка - + Translation Перевод - + Validation Проверка - + Help Справка @@ -845,658 +854,655 @@ All files (*) Cannot read from phrase book '%1'. - Не удалось прочитать из разговорника '%1'. + Не удалось прочитать из глоссария '%1'. Close this phrase book. - Закрыть разговорник. + Закрыть глоссарий. Enables you to add, modify, or delete entries in this phrase book. - Позволяет добавлять, изменять и удалять записи в разговорнике. + Позволяет добавлять, изменять и удалять записи в глоссарии. Print the entries in this phrase book. - Печать записей фраз разговорника. + Печать записей фраз глоссария. Cannot create phrase book '%1'. - Не удалось создать разговорник '%1'. + Не удалось создать глоссарий '%1'. Do you want to save phrase book '%1'? - Желаете сохранить разговорник '%1'? + Желаете сохранить глоссарий '%1'? - + All Все - + MainWindow Главное окно - + &Phrases Фра&зы - + &Close Phrase Book - &Закрыть разговорник + &Закрыть глоссарий - + &Edit Phrase Book - &Редактироваь разговорник + &Редактироваь глоссарий - + &Print Phrase Book - &Печатать разговорник + &Печатать глоссарий - + V&alidation П&роверка - + &View &Вид - + Vie&ws Вид&ы - + &Toolbars Пан&ели инструментов - + &Help &Справка - + &Translation П&еревод - + &File &Файл - + Recently Opened &Files Недавно открытые &файлы - + &Edit &Правка - + &Open... &Открыть... - + Open a Qt translation source file (TS file) for editing Открыть исходный файл переводов Qt (файл TS) для изменения - + Ctrl+O - + E&xit В&ыход - + Close this window and exit. Закрыть окно и выйти. - + Ctrl+Q - + Save Сохранить - + Save changes made to this Qt translation source file Сохранить изменения в данном исходном файле перевода Qt - + Save As... Сохранить как... - + Save changes made to this Qt translation source file into a new file. Сохранить изменения в данном исходном файле перевода Qt в новый файл. - + Create a Qt message file suitable for released applications from the current message file. Скомпилировать файл перевода Qt из текущего файла. - + &Print... &Печать... - + Print a list of all the translation units in the current translation source file. Печать списка всех записей перевода из текущего файла. - + Ctrl+P - + &Undo &Отменить - + Undo the last editing operation performed on the current translation. Отменить последнее изменение текущего перевода. - + Ctrl+Z - + &Redo &Повторить - + Redo an undone editing operation performed on the translation. Повторить отменённую правку перевода. - + Ctrl+Y - + Cu&t Выр&езать - + Copy the selected translation text to the clipboard and deletes it. Скопировать отмеченный текст в буфер обмена и удалить его из оригинала. - + Ctrl+X - + &Copy &Копировать - + Copy the selected translation text to the clipboard. Скопировать отмеченный текст в буфер обмена. - + Ctrl+C - + &Paste &Вставить - + Paste the clipboard text into the translation. Вставить текст из буфера обмена в перевод. - + Ctrl+V - + Select &All В&ыделить всё - + Select the whole translation text. Выделить весь текст перевода. - + Ctrl+A - + &Find... &Найти... - + Search for some text in the translation source file. Найти текст в исходном файле перевода. - + Ctrl+F - + Find &Next Найти д&алее - + Continue the search where it was left. Продолжить поиск с места, где он был остановлен. - + F3 - + &Prev Unfinished &Предыдущий незавершённый - + 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. Создание готового файла перевода Qt из текущего файла. Имя файла будет автоматически определено из имени .ts файла. - + Length Variants - + Варианты длины - + Move to the previous unfinished item. Перейти к предыдущему незавершённому переводу. - + Ctrl+K - + &Next Unfinished &Следующий незавершённый - + Move to the next unfinished item. Перейти к следующему незавершённому переводу. - + Ctrl+J - + P&rev Пр&едыдущий - + Move to the previous item. Перейти к предыдущему переводу. - + Ctrl+Shift+K - + Ne&xt С&ледующий - + Move to the next item. Перейти к следующему переводу. - + Ctrl+Shift+J - + &Done and Next &Готово и далее - + Mark this item as done and move to the next unfinished item. Пометить перевод как завершённый и перейти к следующему незавершённому. - - + Copy from source text Скопировать из исходного текста - + Copies the source text into the translation field. Скопировать исходный текст в поле перевода. - + Ctrl+B - + &Accelerators &Акселераторы - + 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. Переключение проверки акселераторов, т.е. совпадает ли количество амперсандов в исходном и переведённом текстах. Если выявлено несовпадение, будет показано сообщение в окне предупреждений. - + &Ending Punctuation &Знаки препинания - + Toggle the validity check of ending punctuation. If the check fails, a message is shown in the warnings window. Переключение проверки знаков препинания в конце текста. Если выявлено несовпадение, будет показано сообщение в окне предупреждений. - + &Phrase matches Совпадение &фраз - + Toggle checking that phrase suggestions are used. If the check fails, a message is shown in the warnings window. Переключение проверки использования предложений для фраз. Если выявлено несовпадение, будет показано сообщение в окне предупреждений. - + Place &Marker Matches Совпадение &маркеров - + 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. Переключение проверки маркеров форматирования, т.е. все ли маркеры (%1, %2, ...) исходного текста присутствуют в переведённом. Если выявлено несовпадение, будет показано сообщение в окне предупреждений. - + &New Phrase Book... - &Новый разговорник... + &Новый глоссарий... - + Create a new phrase book. - Создать разговорник. + Создать глоссарий. - + Ctrl+N - + &Open Phrase Book... - &Открыть разговорник... + &Открыть глоссарий... - + Open a phrase book to assist translation. - Открыть разговорник для помощи в переводе. + Открыть глоссарий для помощи в переводе. - + Ctrl+H - + &Reset Sorting &Сброс сортировки - + Sort the items back in the same order as in the message file. Упорядочить элементы в той последовательности, в которой они находятся в файле. - + &Display guesses &Предлагать похожие - + Set whether or not to display translation guesses. Определяет необходимо или нет отображать похожие переводы. - + &Statistics &Статистика - + Display translation statistics. Показать статистику перевода. - + &Manual &Руководство - + F1 - + About Qt Linguist О Qt Linguist - + About Qt О Qt - + Display information about the Qt toolkit by Trolltech. Показать информацию об инструментарии Qt от Nokia. - + &What's This? &Что это? - - + What's This? Что это? - + Enter What's This? mode. Переход в режим "Что это?". - + Shift+F1 - + &Search And Translate... &Найти и перевести... - + Replace the translation on all entries that matches the search source text. Заменить перевод всех записей, которые совпадают с искомым исходным текстом. - + Batch translate all entries using the information in the phrase books. - Перевести все записи в пакетном режиме, используя информацию из разговорника. + Перевести все записи в пакетном режиме, используя информацию из глоссария. - + Open/Refresh Form &Preview Открыть/обновить предпрос&мотр формы - - + Form Preview Tool Инструмент предпросмотра форм - + F5 - + &Add to Phrase Book - &Добавить в разговорник + &Добавить в глоссарий - + Ctrl+T - + Open Read-O&nly... Открыть только для &чтения... - + &Save All &Сохранить все - + Ctrl+S - + Close Закрыть - + &Close All &Закрыть все - + Ctrl+W - + Previous unfinished item Предыдущий незавершённый перевод - + Next unfinished item Следующий незавершённый перевод - + Move to previous item Перейти к предыдущему переводу - + Next item Следующий перевод - + Mark item as done and move to the next unfinished item Пометить перевод как завершённый и перейти к следующему незавершённому - + Copies the source text into the translation field Скопировать исходный текст в поле перевода - + Toggle the validity check of accelerators Переключение проверки акселераторов - + Toggle the validity check of ending punctuation Переключение проверки знаков препинания в конце текста - + Toggle checking that phrase suggestions are used Переключение проверки использования предложений для фраз - + Toggle the validity check of place markers Переключение проверки маркеров форматирования @@ -1541,12 +1547,12 @@ All files (*) Китайский - + This whole panel allows you to view and edit the translation of some source text. Данная панель позволяет просматривать и редактировать перевод исходного текста. - + Source text Исходный текст @@ -1581,7 +1587,7 @@ All files (*) Здесь вы можете оставить комментарий для собственного использования. Комментарии не влияют на перевод приложений. - + %1 translation (%2) %1 перевод (%2) @@ -1611,7 +1617,7 @@ Line: %2 MessageModel - + Completion status for %1 Состояние завершённости для %1 @@ -1657,90 +1663,90 @@ Line: %2 Cannot save phrase book '%1'. - Не удалось сохранить разговорник '%1'. + Не удалось сохранить глоссарий '%1'. - + Edit Phrase Book - Правка разговорника + Правка глоссария - + This window allows you to add, modify, or delete entries in a phrase book. - Данное окно позволяет добавлять, изменять и удалять записи в разговорнике. + Данное окно позволяет добавлять, изменять и удалять записи в глоссарии. - + &Translation: &Перевод: - + This is the phrase in the target language corresponding to the source phrase. Перевод, соответствующий исходной фразе. - + S&ource phrase: &Исходная фраза: - + This is a definition for the source phrase. Определение исходной фразы. - + This is the phrase in the source language. Фраза на исходном языке. - + &Definition: &Определение: - + Click here to add the phrase to the phrase book. - Добавить фразу в разговорник. + Добавить фразу в глоссарий. - + &New Entry Новая &запись - + Click here to remove the entry from the phrase book. - Удалить фразу из разговорника. + Удалить фразу из глоссария. - + &Remove Entry &Удалить - + Settin&gs... &Настройки... - + Click here to save the changes made. Сохранить изменения. - + &Save &Сохранить - + Click here to close this window. Закрыть окно. - + Close Закрыть @@ -1789,7 +1795,7 @@ Line: %2 QObject - + Translation files (%1);; Файлы перевода (%1);; @@ -1799,8 +1805,8 @@ Line: %2 Все файлы (*) - - + + @@ -1820,9 +1826,9 @@ Line: %2 Скомпилированные переводы Qt - + Qt Linguist 'Phrase Book' - 'Разговорник' Qt Linguist + 'Глоссарий' Qt Linguist @@ -1866,47 +1872,42 @@ Line: %2 Statistics - + Statistics Статистика - + Close Закрыть - + Translation Перевод - + Source Источник - - - - - - + 0 0 - + Words: Слов: - + Characters: Символов: - + Characters (with spaces): Символов (с пробелами): @@ -1914,73 +1915,72 @@ Line: %2 TranslateDialog - + This window allows you to search for some text in the translation source file. Данное окно позволяет искать текст в файле перевода. - - + Type in the text to search for. Введите искомый текст. - + Find &source text: &Найти текст: - + &Translate to: &Перевести как: - + Search options Параметры поиска - + Texts such as 'TeX' and 'tex' are considered as different when checked. Если отмечено, строки "ПрИмЕр" и "пример" будет считаться разными. - + Match &case С учётом &регистра - + Mark new translation as &finished Помечать перевод как завер&шённый - + Click here to find the next occurrence of the text you typed in. Найти следующее совпадение для введённого текста. - + Find Next Найти далее - + Translate Перевести - + Translate All Перевести все - + Click here to close this window. Закрыть окно. - + Cancel Отмена @@ -1988,34 +1988,32 @@ Line: %2 TranslationSettingsDialog - + Source language Исходный язык - - + Language Язык - - + Country/Region Страна/Регион - + Target language Язык перевода - + Any Country Любая страна - + Settings for '%1' - Qt Linguist Настройки для '%1' - Qt Linguist diff --git a/translations/qt_help_ru.ts b/translations/qt_help_ru.ts index 006a90b..341cf19 100644 --- a/translations/qt_help_ru.ts +++ b/translations/qt_help_ru.ts @@ -33,32 +33,52 @@ QHelpCollectionHandler - The collection file is not set up yet! - Файл набора ещё не установлен! + The collection file '%1' is not set up yet! + Файл набора '%1' ещё не установлен! - + Cannot load sqlite database driver! Не удалось загрузить драйвер базы данных sqlite! - + Cannot open collection file: %1 Не удалось открыть файл набора: %1 - + Cannot create tables in file %1! Не удалось создать таблицы в файле %1! - The specified collection file already exists! - Указанный файла набора уже существует! + The collection file '%1' already exists! + Файл набора '%1' уже существует! - + + Unknown filter '%1'! + Неизвестный фильтр '%1'! + + + + Invalid documentation file '%1'! + Некорректный файл документации '%1'! + + + + Cannot register namespace '%1'! + Не удалось зарегистрировать пространство имён %1! + + + + Cannot open database '%1' to optimize! + Не удалось открыть базу данных '%1' для оптимизации! + + + Cannot create directory: %1 Не удалось создать каталог: %1 @@ -68,12 +88,7 @@ Не удалось скопировать файл набора: %1 - - Unknown filter! - Неизвестный фильтр! - - - + Cannot register filter %1! Не удалось зарегистрировать фильтр %1! @@ -83,12 +98,7 @@ Не удалось открыть файл документации %1! - - Invalid documentation file! - Некорректный файл документации! - - - + The namespace %1 was not registered! Пространство имён %1 не зарегистрировано! @@ -97,16 +107,6 @@ Namespace %1 already exists! Пространство имён %1 уже существует! - - - Cannot register namespace! - Не удалось зарегистрировать пространство имён! - - - - Cannot open database to optimize! - Не удалось открыть базу данных для оптимизации! - QHelpDBReader @@ -120,7 +120,7 @@ QHelpEngineCore - + The specified namespace does not exist! Указанное пространство имён не существует! @@ -128,7 +128,7 @@ QHelpEngineCorePrivate - + Cannot open documentation file %1: %2! Не удалось открыть файл документации %1: %2! @@ -249,52 +249,52 @@ QHelpSearchQueryWidget - + Search for: Искать: - + Previous search Предыдущий запрос - + Next search Следующий запрос - + Search Поиск - + Advanced search Расширенный поиск - + words <B>similar</B> to: <B>похожие</B> слова: - + <B>without</B> the words: <B>не содержит</B> слов: - + with <B>exact phrase</B>: содержит <B>точную фразу</B>: - + with <B>all</B> of the words: содержит <B>все</B> слова: - + with <B>at least one</B> of the words: содержит <B>хотя бы одно</B> из слов: @@ -318,11 +318,6 @@ QObject - - Untitled - Безымянный - - Unknown token. Неизвестный идентификатор. diff --git a/translations/qt_ru.ts b/translations/qt_ru.ts index f2d1af2..9a2ad84 100644 --- a/translations/qt_ru.ts +++ b/translations/qt_ru.ts @@ -4,7 +4,7 @@ CloseButton - + Close Tab Закрыть вкладку @@ -12,7 +12,7 @@ FakeReply - + Fake error ! @@ -58,7 +58,7 @@ Phonon::AudioOutput - + <html>The audio playback device <b>%1</b> does not work.<br/>Falling back to <b>%2</b>.</html> <html>Звуковое устройство <b>%1</b> не работает.<br/>Будет использоваться <b>%2</b>.</html> @@ -76,7 +76,7 @@ Phonon::Gstreamer::Backend - + Warning: You do not seem to have the package gstreamer0.10-plugins-good installed. Some video features have been disabled. Внимание: Похоже, пакет gstreamer0.10-plugins-good не установлен. @@ -96,11 +96,11 @@ Cannot start playback. -Check your Gstreamer installation and make sure you +Check your GStreamer installation and make sure you have libgstreamer-plugins-base installed. Невозможно начать воспроизведение. -Проверьте установку Gstreamer и убедитесь, +Проверьте установку GStreamer и убедитесь, что пакет libgstreamer-plugins-base установлен. @@ -109,10 +109,10 @@ have libgstreamer-plugins-base installed. Отсутствует необходимый кодек. Вам нужно установить следующие кодеки для воспроизведения данного содержимого: %0 - + - + @@ -121,12 +121,12 @@ have libgstreamer-plugins-base installed. Не удалось открыть источник медиа-данных. - + Invalid source type. Неверный тип источника медиа-данных. - + Could not locate media source. Не удалось найти источник медиа-данных. @@ -144,7 +144,7 @@ have libgstreamer-plugins-base installed. Phonon::MMF - + Audio Output Воспроизведение звука @@ -153,52 +153,334 @@ have libgstreamer-plugins-base installed. The audio output device Устройство воспроизведения звука - - - Phonon::MMF::AudioEqualizer - - Frequency band, %1 Hz - Полоса частот, %1 Гц + + No error + Нет ошибки + + + + Not found + Не найден + + + + Out of memory + Недостаточно ресурсов + + + + Not supported + Не поддерживается + + + + Overflow + + + + + Underflow + + + + + Already exists + Уже существует + + + + Path not found + Путь не найден + + + + In use + Используется + + + + Not ready + Не готов + + + + Access denied + Доступ запрещён + + + + Could not connect + Не удалось установить соединение + + + + Disconnected + Соединение разорвано + + + + Permission denied + Доступ запрещён + + + + Insufficient bandwidth + Недостаточная ширина канала + + + + Network unavailable + Сеть недоступна + + + + Network communication error + Ошибка сетевого обмена данными + + + + Streaming not supported + + + + + Server alert + + + + + Invalid protocol + Некорректный протокол - - - Phonon::MMF::EffectFactory - - audio equalizer - Аудиоэквалайзер + + Invalid URL + Некорректный URL - Bass boost - Усиление басов + Multicast error + + + + + Proxy server error + Ошибка прокси-сервера - Distance Attenuation - Ослабление при отдалении + Proxy server not supported + Прокси-сервер не поддерживается + Audio output error + Ошибка воспроизведения звука + + - Environmental Reverb - Реверберация + Video output error + Ошибка воспроизведения видео - Loudness - Громкость + Decoder error + Ошибка декодирования - Source Orientation - Ориентация источника + Audio or video components could not be played + Аудио- или видео-состовляющая не может быть воспроизведена - Stereo Widening - Расширение стереобазы + DRM error + Ошибка DRM + + + + Unknown error (%1) + Неизвестная ошибка (%1) + + + + Phonon::MMF::AbstractMediaPlayer + + + Not ready to play + Не готов к воспроизведению + + + + + Error opening file + Ошибка открытия файла + + + + Error opening URL + Ошибка открытия URL + + + + Setting volume failed + Не удалось установить уровень громкости + + + + Playback complete + Воспроизведение завершено + + + + Phonon::MMF::AudioEqualizer + + + %1 Hz + %1 Гц + + + + Phonon::MMF::AudioPlayer + + + Getting position failed + + + + + Opening clip failed + + + + + Phonon::MMF::EffectFactory + + + Enabled + Активно + + + + Phonon::MMF::EnvironmentalReverb + + + Decay HF ratio (%) + DecayHFRatio: Ratio of high-frequency decay time to the value specified by DecayTime. + + + + + Decay time (ms) + DecayTime: Time over which reverberation is diminished. + + + + + 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. + + + + + 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. + + + + + Reflections delay (ms) + ReflectionsDelay: Amount of delay between the arrival the direct path from the source and the arrival of the first reflection. + + + + + Reflections level (mB) + ReflectionsLevel: Amplitude of reflections. This value is corrected by the RoomLevel to give the final reflection amplitude. + + + + + Reverb delay (ms) + ReverbDelay: Amount of time between arrival of the first reflection and start of the late reverberation. + + + + + Reverb level (mB) + ReverbLevel Amplitude of reverberations. This value is corrected by the RoomLevel to give the final reverberation amplitude. + + + + + Room HF level + RoomHFLevel: Amplitude of low-pass filter used to attenuate the high frequency component of reflected sound. + + + + + Room level (mB) + RoomLevel: Master volume control for all reflected sound. + + + + + Phonon::MMF::MediaObject + + + Error opening source: type not supported + Ошибка открытыия источника: тип не поддерживается + + + + Error opening source: media type could not be determined + Ошибка открытыия источника: тип медиа-данных не определён + + + + Phonon::MMF::StereoWidening + + + Level (%) + Уровень (%) + + + + Phonon::MMF::VideoPlayer + + + Pause failed + + + + + Seek failed + + + + + Getting position failed + + + + + Opening clip failed + + + + + Buffering clip failed + + + + + + + + + Video display error + @@ -268,7 +550,7 @@ have libgstreamer-plugins-base installed. Q3FileDialog - + Copy or Move a File Копировать или переместить файл @@ -293,7 +575,7 @@ have libgstreamer-plugins-base installed. - + All Files (*) Все файлы (*) @@ -905,8 +1187,8 @@ to QAbstractSocket - - + + Host not found @@ -925,19 +1207,20 @@ to Время на соединение истекло - - + + Operation on socket is not supported Операция с сокетом не поддерживается - + + Socket operation timed out Время на операцию с сокетом истекло - + Socket is not connected Сокет не подключён @@ -950,7 +1233,7 @@ to QAbstractSpinBox - + &Step up Шаг вв&ерх @@ -966,6 +1249,14 @@ to + QAccessibleButton + + + Press + Нажать + + + QApplication @@ -983,7 +1274,7 @@ to Ошибка совместимости библиотеки Qt - + QT_LAYOUT_DIRECTION Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout. LTR @@ -1020,7 +1311,7 @@ to QCheckBox - + Uncheck Снять отметку @@ -1038,7 +1329,7 @@ to QColorDialog - + Hu&e: &Тон: @@ -1078,7 +1369,7 @@ to Выбор цвета - + &Basic colors &Основные цвета @@ -1165,7 +1456,7 @@ to QDB2Driver - + Unable to connect Невозможно соединиться @@ -1188,7 +1479,7 @@ to QDB2Result - + Unable to execute statement Невозможно выполнить выражение @@ -1263,7 +1554,7 @@ to QDialog - + What's This? Что это? @@ -1276,9 +1567,9 @@ to QDialogButtonBox - + - + OK ОК @@ -1390,7 +1681,7 @@ to Restore Defaults - Восстановить значения + Восстановить значения @@ -1477,7 +1768,7 @@ to Критическая ошибка: - + &Show this message again &Показывать это сообщение в дальнейшем @@ -1490,7 +1781,7 @@ to QFile - + Destination file exists Файл существует @@ -1529,36 +1820,36 @@ to QFileDialog - - + + All Files (*) Все файлы (*) - + Directories Каталоги - - + + &Open &Открыть - - + + &Save &Сохранить - + Open Открыть - + %1 already exists. Do you want to replace it? %1 уже существует. @@ -1579,7 +1870,7 @@ Please verify the correct file name was given. Мой компьютер - + &Rename &Переименовать @@ -1625,12 +1916,12 @@ Please verify the correct file name was given. - + Directory: Каталог: - + %1 Directory not found. @@ -1657,7 +1948,7 @@ Do you want to delete it anyway? Не удалось удалить каталог. - + Recent Places Недавние документы @@ -1667,12 +1958,12 @@ Do you want to delete it anyway? Все файлы (*.*) - + Save As Сохранить как - + Drive Диск @@ -1728,18 +2019,18 @@ Do you want to delete it anyway? Вперёд - + New Folder Новая папка - + &New Folder &Новая папка - - + + &Choose &Выбрать @@ -1749,8 +2040,8 @@ Do you want to delete it anyway? Удалить - - + + File &name: &Имя файла: @@ -1770,6 +2061,11 @@ Do you want to delete it anyway? QFileSystemModel + + %1 byte(s) + %1 байт + + Invalid filename Некорректное имя файла @@ -1818,7 +2114,7 @@ Do you want to delete it anyway? - + %1 TB %1 Тб @@ -1842,7 +2138,6 @@ Do you want to delete it anyway? - %1 bytes %1 байт @@ -1851,55 +2146,55 @@ Do you want to delete it anyway? QFontDatabase - + Normal Обычный - + - + Bold Жирный - - + + Demi Bold Полужирный - + - + Black Чёрный - + Demi Средний - + Light Светлый - - + + Italic Курсив - - + + Oblique Наклонный - + Any Любая @@ -1941,12 +2236,12 @@ Do you want to delete it anyway? Thaana - Таана + Таана Devanagari - Деванагири + Деванагири @@ -1956,17 +2251,17 @@ Do you want to delete it anyway? Gurmukhi - Гурмукхи + Гурмукхи Gujarati - Гуджарати + Гуджарати Oriya - Ория + Ория @@ -1976,17 +2271,17 @@ Do you want to delete it anyway? Telugu - Телугу + Телугу Kannada - Каннада + Каннада Malayalam - Малайялам + Малаяльская @@ -2011,7 +2306,7 @@ Do you want to delete it anyway? Myanmar - Мьянма + Майанмарская @@ -2026,7 +2321,7 @@ Do you want to delete it anyway? Simplified Chinese - Китайская упрощенная + Китайская упрощённая @@ -2063,6 +2358,11 @@ Do you want to delete it anyway? Runic Руническая + + + N'Ko + Нко + QFontDialog @@ -2262,7 +2562,7 @@ Do you want to delete it anyway? QHostInfo - + Unknown error Неизвестная ошибка @@ -2272,7 +2572,7 @@ Do you want to delete it anyway? - + Host not found Узел не найден @@ -2306,7 +2606,7 @@ Do you want to delete it anyway? QHttp - + @@ -2338,7 +2638,7 @@ Do you want to delete it anyway? Сервер неожиданно разорвал соединение - + Unknown authentication method Неизвестный метод авторизации @@ -2348,13 +2648,13 @@ Do you want to delete it anyway? Ошибка записи ответа на устройство - + Connection refused Отказано в соединении - + Host %1 not found @@ -2362,14 +2662,12 @@ Do you want to delete it anyway? - - HTTP request failed HTTP-запрос не удался - + Invalid HTTP response header Некорректный HTTP-заголовок ответа @@ -2408,7 +2706,7 @@ Do you want to delete it anyway? Соединение с узлом установлено - + Connection closed Соединение закрыто @@ -2424,7 +2722,7 @@ Do you want to delete it anyway? Требуется авторизация - + Connection refused (or timed out) В соединении отказано (или время ожидания истекло) @@ -2623,7 +2921,7 @@ Do you want to delete it anyway? QIODevice - + Permission denied Доступ запрещён @@ -2643,7 +2941,7 @@ Do you want to delete it anyway? Нет свободного места на устройстве - + Unknown error Неизвестная ошибка @@ -2707,7 +3005,7 @@ Do you want to delete it anyway? Не удалось выполнить unmap '%1': %2 - + The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5] Модуль '%1' использует несоместимую библиотеку Qt. (%2.%3.%4) [%5] @@ -2759,7 +3057,7 @@ Do you want to delete it anyway? QLineEdit - + &Undo &Отменить действие @@ -2769,27 +3067,27 @@ Do you want to delete it anyway? &Повторить действие - + Cu&t &Вырезать - + &Copy &Копировать - + &Paste В&ставить - + Delete Удалить - + Select All Выделить всё @@ -2798,7 +3096,7 @@ Do you want to delete it anyway? QLocalServer - + %1: Name error %1: Некорректное имя @@ -2836,7 +3134,7 @@ Do you want to delete it anyway? - + %1: Invalid name %1: Некорректное имя @@ -2867,7 +3165,7 @@ Do you want to delete it anyway? - + %1: Connection error %1: Ошибка соединения @@ -2892,7 +3190,7 @@ Do you want to delete it anyway? QMYSQLDriver - + Unable to open database ' Невозможно открыть базу данных ' @@ -2902,7 +3200,7 @@ Do you want to delete it anyway? Невозможно соединиться - + Unable to begin transaction Невозможно начать транзакцию @@ -2920,12 +3218,13 @@ Do you want to delete it anyway? QMYSQLResult - + + Unable to fetch data Невозможно получить данные - + Unable to execute query Невозможно выполнить запрос @@ -3103,7 +3402,7 @@ Do you want to delete it anyway? QMenuBar - + Actions Действия @@ -3129,7 +3428,7 @@ Do you want to delete it anyway? О Qt - + Show Details... Показать подробности... @@ -3139,7 +3438,7 @@ Do you want to delete it anyway? Скрыть подробности... - + <h3>About Qt</h3><p>This program uses Qt version %1.</p> <h3>О Qt</h3><p>Данная программа использует Qt версии %1.</p> @@ -3323,27 +3622,30 @@ Do you want to delete it anyway? QNetworkAccessFileBackend + Request for opening non-local file %1 Запрос на открытие файла вне файловой системы %1 - + + Error opening %1: %2 Ошибка открытия %1: %2 - + Write error writing to %1: %2 Ошибка записи в %1: %2 - + + Cannot open %1: Path is a directory Невозможно открыть %1: Указан путь к каталогу - + Read error reading from %1: %2 Ошибка чтения из %1: %2 @@ -3379,7 +3681,7 @@ Do you want to delete it anyway? QNetworkAccessHttpBackend - + No suitable proxy found Подходящий прокси-сервер не найден @@ -3387,12 +3689,12 @@ Do you want to delete it anyway? QNetworkReply - + Error downloading %1 - server replied: %2 Ошибка загрузки %1 - ответ сервера: %2 - + Protocol "%1" is unknown Неизвестный протокол "%1" @@ -3400,7 +3702,7 @@ Do you want to delete it anyway? QNetworkReplyImpl - + Operation canceled Операция отменена @@ -3409,7 +3711,7 @@ Do you want to delete it anyway? QOCIDriver - + Unable to logon Невозможно авторизоваться @@ -3438,8 +3740,8 @@ Do you want to delete it anyway? QOCIResult - - + + Unable to bind column for batch execute Невозможно привязать столбец для пакетного выполнения @@ -3483,7 +3785,7 @@ Do you want to delete it anyway? QODBCDriver - + Unable to connect Невозможно соединиться @@ -3516,14 +3818,14 @@ Do you want to delete it anyway? QODBCResult - - + + QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration QODBCResult::reset: Невозможно установить 'SQL_CURSOR_STATIC' атрибутом выражение. Проверьте настройки драйвера ODBC - - + + Unable to execute statement Невозможно выполнить выражение @@ -3543,7 +3845,7 @@ Do you want to delete it anyway? Невозможно привязать значение - + Unable to fetch last @@ -3593,7 +3895,7 @@ Do you want to delete it anyway? Удалённый узел неожиданно прервал соединение для %1 - + No host name given Имя узла не задано @@ -3602,7 +3904,7 @@ Do you want to delete it anyway? QPPDOptionsModel - + Name Имя @@ -3777,7 +4079,7 @@ Do you want to delete it anyway? QPrintDialog - + locally connected соединено локально @@ -3788,7 +4090,7 @@ Do you want to delete it anyway? Псевдонимы: %1 - + unknown неизвестно @@ -3956,7 +4258,7 @@ Do you want to delete it anyway? Печать - + Print To File ... Печать в файл ... @@ -3971,7 +4273,7 @@ Do you want to delete it anyway? Печатать все - + File %1 is not writable. Please choose a different file name. %1 недоступен для записи. @@ -4162,7 +4464,7 @@ Please choose a different file name. Пользовательский - + &Options >> &Параметры >> @@ -4212,12 +4514,12 @@ Please choose a different file name. Параметры страницы - + %1% %1% - + Print Preview Просмотр печати @@ -4297,7 +4599,12 @@ Please choose a different file name. Параметры страницы - + + Close + Закрыть + + + Export to PDF Экспорт в PDF @@ -4474,7 +4781,7 @@ Please choose a different file name. QProcess - + Could not open input redirection for reading Не удалось открыть перенаправление ввода для чтения @@ -4491,7 +4798,7 @@ Please choose a different file name. Ошибка выделения ресурсов (сбой fork): %1 - + @@ -4504,7 +4811,7 @@ Please choose a different file name. Время на операцию с процессом истекло - + @@ -4619,7 +4926,7 @@ Please choose a different file name. QSQLite2Driver - + Error opening database Ошибка открытия базы данных @@ -4642,12 +4949,12 @@ Please choose a different file name. QSQLite2Result - + Unable to fetch results Невозможно получить результаты - + Unable to execute statement Невозможно выполнить выражение @@ -4655,7 +4962,7 @@ Please choose a different file name. QSQLiteDriver - + Error opening database Ошибка открытия базы данных @@ -4683,8 +4990,8 @@ Please choose a different file name. QSQLiteResult - - + + Unable to fetch row Невозможно получить строку @@ -4710,7 +5017,7 @@ Please choose a different file name. Количество параметров не совпадает - + No query Отсутствует запрос @@ -4725,7 +5032,7 @@ Please choose a different file name. Location - Размещение + Расположение @@ -4735,17 +5042,17 @@ Please choose a different file name. Ignore-count - Пропустить + Пропущено Single-shot - Один раз + Однократно Hit-count - Попаданий + Совпадений @@ -4837,12 +5144,12 @@ Please choose a different file name. Run to New Script - Выполнить до нового сценария + Выполнить до нового сценария Toggle Breakpoint - Установить/убрать точку останова + Установить/убрать точку останова @@ -4974,22 +5281,22 @@ Please choose a different file name. Toggle Breakpoint - Установить/убрать точку останова + Установить/убрать точку останова Disable Breakpoint - Убрать точку останова + Убрать точку останова Enable Breakpoint - Установить точку останова + Установить точку останова Breakpoint Condition: - Условие точки останова: + Условие точки останова: @@ -5163,7 +5470,7 @@ Please choose a different file name. - + %1: permission denied %1: доступ запрещён @@ -5255,117 +5562,117 @@ Please choose a different file name. Space - + Пробел Esc - + Esc Tab - + Tab Backtab - + Backtab Backspace - + Backspace Return - + Return Enter - + Enter Ins - + Ins Del - + Del Pause - + Pause Print - + Print SysReq - + SysReq Home - + Home End - + End Left - + Влево Up - + Вверх Right - + Вправо Down - + Вниз PgUp - + PgUp PgDown - + PgDown CapsLock - + CapsLock NumLock - + NumLock ScrollLock - + ScrollLock @@ -5378,7 +5685,7 @@ Please choose a different file name. Справка - + Back Назад @@ -5415,27 +5722,27 @@ Please choose a different file name. Bass Boost - + Усиление басов Bass Up - + Басы выше Bass Down - + Басы ниже Treble Up - + Высокие частоты выше Treble Down - + Высокие частоты ниже @@ -5529,83 +5836,529 @@ Please choose a different file name. - Launch (7) - Запустить (7) + Launch (7) + Запустить (7) + + + + Launch (8) + Запустить (8) + + + + Launch (9) + Запустить (9) + + + + Launch (A) + Запустить (A) + + + + Launch (B) + Запустить (B) + + + + Launch (C) + Запустить (C) + + + + Launch (D) + Запустить (D) + + + + Launch (E) + Запустить (E) + + + + Launch (F) + Запустить (F) + + + + Monitor Brightness Up + Яркость монитора выше + + + + Monitor Brightness Down + Яркость монитора ниже + + + + Keyboard Light On/Off + Вкл/выкл подсветку клавиатуры + + + + Keyboard Brightness Up + Подсветка клавиатуры ярче + + + + Keyboard Brightness Down + Подсветка клавиатуры бледнее + + + + Power Off + Выключение питания + + + + Wake Up + Пробуждение + + + + Eject + Извлечение + + + + Screensaver + Хранитель экрана + + + + WWW + WWW + + + + Sleep + Засыпание + + + + LightBulb + лампочка? + + + + + Shop + Магазин + + + + History + История + + + + Add Favorite + Добавить в избранное + + + + Hot Links + Горячие ссылки + + + + Adjust Brightness + Настройка яркости + + + + Finance + Финансы + + + + Community + Сообщество + + + + Audio Rewind + Перемотка + + + + Back Forward + + + + + Application Left + + + + + Application Right + + + + + Book + Книга + + + + CD + CD + + + + Calculator + Калькулятор + + + + Clear + Очистить + + + + Clear Grab + + + + + Close + Закрыть + + + + Copy + Копировать + + + + Cut + Вырезать + + + + Display + + + + + DOS + DOS + + + + Documents + Документы + + + + Spreadsheet + Электронная таблицы + + + + Browser + Обозреватель + + + + Game + Игра + + + + Go + Перейти + + + + iTouch + iTouch + + + + Logoff + Выйти из системы + + + + Market + Рынок + + + + Meeting + Встреча + + + + Keyboard Menu + Клавиатурное меню + + + + Menu PB + + + + + My Sites + Мои сайты + + + + News + Новости + + + + Home Office + Домашний офис + + + + Option + Опция + + + + Paste + Вставить + + + + Phone + Телефон + + + + Reply + Ответить + + + + Reload + Перезагрузить + + + + Rotate Windows + Повернуть окна + + + + Rotation PB + + + + + Rotation KB + + + + + Save + Сохранить + + + + Send + Отправить + + + + Spellchecker + Проверка орфографии + + + + Split Screen + Разделить экран + + + + Support + Поддержка + + + + Task Panel + Панель задач + + + + Terminal + Терминал + + + + Tools + Инструменты + + + + Travel + Путешествие + + + + Video + Видео + + + + Word Processor + Текстовый редактор + + + + XFer + + + + + Zoom In + Увеличить + + + + Zoom Out + Уменьшить + + + + Away + Ушёл + + + + Messenger + Клиент обмена мгновенными сообщениями + + + + WebCam + Вэб-камера + + + + Mail Forward + Переслать письмо + + + + Pictures + Изображения + + + + Music + Музыка + + + + Battery + Батарея + + + + Bluetooth + Bluetooth + + + + Wireless + Беспроводная сеть + + + + Ultra Wide Band + + + + + Audio Forward + - Launch (8) - Запустить (8) + Audio Repeat + - Launch (9) - Запустить (9) + Audio Random Play + - Launch (A) - Запустить (A) + Subtitle + Субтитры - Launch (B) - Запустить (B) + Audio Cycle Track + - Launch (C) - Запустить (C) + Time + Время + + + + View + Вид - Launch (D) - Запустить (D) + Top Menu + Главное меню - Launch (E) - Запустить (E) + Suspend + - Launch (F) - Запустить (F) + Hibernate + Print Screen - + Печать экрана Page Up - + На страницу вверх Page Down - + На страницу вниз Caps Lock - + Верний регистр Num Lock - + Цифровые клавиши Number Lock - + Цифровые клавиши Scroll Lock - + Scroll Lock @@ -5620,15 +6373,16 @@ Please choose a different file name. Escape - + Escape System Request - + Системный запрос - + + Select Выбрать @@ -5665,12 +6419,12 @@ Please choose a different file name. Call - + Позвонить Hangup - + Положить трубку @@ -5678,43 +6432,43 @@ Please choose a different file name. - + Ctrl - + Ctrl Shift - + Shift Alt - + Alt Meta - + Meta + - + + F%1 - + F%1 - + Home Page - + Домашняя страница @@ -5813,7 +6567,7 @@ Please choose a different file name. Неизвестная ошибка SOCKSv5 прокси (код 0x%1) - + Network operation timed out Время на сетевую операцию истекло @@ -5821,7 +6575,7 @@ Please choose a different file name. QSoftKeyManager - + Ok ОК @@ -5846,7 +6600,7 @@ Please choose a different file name. Отмена - + Exit Выход @@ -5929,7 +6683,12 @@ Please choose a different file name. Невозможно записать данные: %1 - + + Unable to decrypt data: %1 + Невозможно расшифровать данные: %1 + + + Error while reading: %1 Ошибка чтения: %1 @@ -5939,7 +6698,7 @@ Please choose a different file name. Ошибка квитирования SSL: %1 - + Error creating SSL context (%1) Ошибка создания контекста SSL: (%1) @@ -5949,7 +6708,12 @@ Please choose a different file name. Неправильный или пустой список шифров (%1) - + + Private key does not certify public key, %1 + Закрытый ключ не соответствует открытому ключу, %1 + + + Error creating SSL session, %1 Ошибка создания сессии SSL, %1 @@ -5974,15 +6738,126 @@ Please choose a different file name. Ошибка загрузки закрытого ключа, %1 - - Private key does not certificate public key, %1 - Закрытый ключ не соответствует открытому ключу, %1 + + No error + Нет ошибки + + + + The issuer certificate could not be found + издателя ? + Не удалось найти сертификат запрашивающей стороны + + + + The certificate signature could not be decrypted + Не удалось расшифровать подпись сертификата + + + + The public key in the certificate could not be read + Не удалось прочитать открытый ключ сертификата + + + + The signature of the certificate is invalid + Некорректная подпись сертификата + + + + The certificate is not yet valid + Срок действия сертификата ещё не наступил + + + + The certificate has expired + Срок действия сертификата истёк + + + + The certificate's notBefore field contains an invalid time + Поле сертификата notBefore содержит некорректное время + + + + The certificate's notAfter field contains an invalid time + Поле сертификата notAfter содержит некорректное время + + + + The certificate is self-signed, and untrusted + Самоподписанный сертификат не является заверенным + + + + The root certificate of the certificate chain is self-signed, and untrusted + Корневой сертификат цепочки сертификатов самоподписанный и не является заверенным + + + + The issuer certificate of a locally looked up certificate could not be found + + + + + No certificates could be verified + Не удалось проверить сертификаты + + + + One of the CA certificates is invalid + Один из CA сертификатов некорректный + + + + The basicConstraints path length parameter has been exceeded + Путь параметра basicConstraints слишком длинный + + + + The supplied certificate is unsuitable for this purpose + Представленный сертификат не предназначен для данного использования + + + + The root CA certificate is not trusted for this purpose + Корневой CA сертификат не является заверенным для данного использования + + + + The root CA certificate is marked to reject the specified purpose + Корневой CA сертификат отмечен как 'отказывать' для данного использования + + + + The current candidate issuer certificate was rejected because its subject name did not match the issuer name of the current certificate + + + + + The current candidate issuer certificate was rejected because its issuer name and serial number was present and did not match the authority key identifier of the current certificate + + + + + The peer did not present any certificate + Узел не предоставил сертификат + + + + The host name did not match any of the valid hosts for this certificate + Название узла не совпадает ни с одним из допустимых узлов данного сертификата + + + + Unknown error + Неизвестная ошибка QStateMachine - + Missing initial state in compound state '%1' @@ -6036,7 +6911,7 @@ Please choose a different file name. QTDSDriver - + Unable to open connection Невозможно открыть соединение @@ -6070,7 +6945,7 @@ Please choose a different file name. QTextControl - + &Undo &Отменить действие @@ -6113,7 +6988,7 @@ Please choose a different file name. QToolButton - + Press Нажать @@ -6170,14 +7045,14 @@ Please choose a different file name. QUnicodeControlCharacterMenu - + LRM Left-to-right mark - LRM Признак письма слева направо + LRM Индикатор написания слева направо RLM Right-to-left mark - RLM Признак письма справа налево + RLM Индикатор написания справа налево @@ -6187,7 +7062,7 @@ Please choose a different file name. ZWNJ Zero width non-joiner - ZWNJ Не объединяющий символ нулевой ширины + ZWNJ Разделитель нулевой ширины @@ -6197,27 +7072,27 @@ Please choose a different file name. LRE Start of left-to-right embedding - + LRE Индикатор написания слева направо внутри текста, написанного справа налево RLE Start of right-to-left embedding - + RLE Индикатор написания справа налево внутри текста, написанного слева направо LRO Start of left-to-right override - + LRO Перекрывающий индикатор написания слева направо RLO Start of right-to-left override - + RLO Перекрывающий индикатор написания справа налево PDF Pop directional formatting - + PDF Индикатор конца текста с другим направлением @@ -6228,7 +7103,7 @@ Please choose a different file name. QWebFrame - + Request cancelled Запрос отменён @@ -6266,7 +7141,7 @@ Please choose a different file name. Некорректный HTTP-запрос - + Submit default label for Submit buttons in forms on web pages Отправить @@ -6284,7 +7159,7 @@ Please choose a different file name. Сбросить - + This is a searchable index. Enter search keywords: text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index' Индекс поиска. Введите ключевые слова для поиска: @@ -6541,19 +7416,19 @@ Please choose a different file name. Audio Element Media controller element - + Аудио-элемент Video Element Media controller element - + Видео-элемент Mute Button Media controller element - + Кнопка "приглушить" @@ -6565,13 +7440,13 @@ Please choose a different file name. Play Button Media controller element - + Кнопка "воспроизведение" Pause Button Media controller element - + Кнопка "пауза" @@ -6589,7 +7464,7 @@ Please choose a different file name. Rewind Button Media controller element - + Кнопка "перемотать" @@ -6601,73 +7476,73 @@ Please choose a different file name. Elapsed Time Media controller element - + Прошло времени Remaining Time Media controller element - + Осталось времени Status Display Media controller element - + Отображение состояния Fullscreen Button Media controller element - + Кнопка "полноэкранный режим" Seek Forward Button Media controller element - + Кнопка "перемотка вперёд" Seek Back Button Media controller element - + Кнопка "перемотка назад" Audio element playback controls and status display Media controller element - + Элементы управления воспроизведением звука и отображения состояния Video element playback controls and status display Media controller element - + Элементы управления воспроизведением видео и отображения состояния Mute audio tracks Media controller element - + Выключить звуковые дорожки Unmute audio tracks Media controller element - + Включить звуковые дорожки Begin playback Media controller element - + Начать воспроизведение Pause playback Media controller element - + Приостановить воспроизведение @@ -6685,7 +7560,7 @@ Please choose a different file name. Rewind movie Media controller element - + Начать фильм сначала @@ -6697,67 +7572,67 @@ Please choose a different file name. Current movie time Media controller element - + Текущее время фильма Remaining movie time Media controller element - + Осталось времени фильма Current movie status Media controller element - + Текущее состояние фильма Play movie in full-screen mode Media controller element - + Воспроизводить фильм в полноэкранном режиме Seek quickly back Media controller element - + Быстрая перемотка назад Seek quickly forward Media controller element - + Быстрая перемотка вперёд Indefinite time Media time description - + Время не определено %1 days %2 hours %3 minutes %4 seconds Media time description - + %1 дней %2 часов %3 минут %4 секунд %1 hours %2 minutes %3 seconds Media time description - + %1 часов %2 минут %3 секунд %1 minutes %2 seconds Media time description - + %1 минут %2 секунд %1 seconds Media time description - + %1 секунд @@ -6796,7 +7671,7 @@ Please choose a different file name. %1 (%2x%3 px) - + Web Inspector - %2 Web-инспектор - %2 @@ -6876,7 +7751,7 @@ Please choose a different file name. - + JavaScript Alert - %1 JavaScript: Предупреждение - %1 @@ -6886,7 +7761,7 @@ Please choose a different file name. JavaScript: Подтверждение - %1 - + JavaScript Prompt - %1 JavaScript: Запрос - %1 @@ -6901,7 +7776,7 @@ Please choose a different file name. Сбой выполнения сценария на данной странице. Желаете остановить выполение сценария? - + Move the cursor to the next character Переместить указатель к следующему символу @@ -7122,7 +7997,7 @@ Please choose a different file name. QWidget - + * * @@ -7374,6 +8249,34 @@ Please choose a different file name. + QXmlPatternistCLI + + + Warning in %1, at line %2, column %3: %4 + Предупреждение в %1, в строке %2, столбце %3: %4 + + + + Warning in %1: %2 + Предупреждение в %1: %2 + + + + Unknown location + Неизвестное расположение + + + + Error %1 in %2, at line %3, column %4: %5 + Ошибка %1 в %2, в строке %3, столбце %4: %5 + + + + Error %1 in %2: %3 + Ошибка %1 в %2: %3 + + + QXmlStream @@ -7588,7 +8491,7 @@ Please choose a different file name. Overflow: Can't represent date %1. - Переполнение: Не удается представить дату %1. + Переполнение: Не удаётся представить дату %1. @@ -7759,7 +8662,7 @@ Please choose a different file name. - The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid. + The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, %2 is invalid. Целевое имя в обрабатываемой инструкции не может быть %1 в любой комбинации нижнего и верхнего регистров. Имя %2 некорректно. @@ -7943,7 +8846,12 @@ Please choose a different file name. %1 является схемой неизвестного типа. - + + A template with name %1 has already been declared. + Шаблон с именем %1 уже был объявлен. + + + Only one %1 declaration can occur in the query prolog. Только одно объявление %1 может присутствовать в прологе запроса. @@ -7953,17 +8861,12 @@ Please choose a different file name. Инициализация переменной %1 зависит от себя самой - - No variable by name %1 exists - Переменная с именем %1 отсутствует - - The variable %1 is unused Переменная %1 не используется - + Version %1 is not supported. The supported XQuery version is 1.0. Версия %1 не поддерживается. Поддерживается XQuery версии 1.0. @@ -8024,37 +8927,12 @@ Please choose a different file name. Возможность импорта модулей не поддерживается - - No value is available for the external variable by name %1. - Отсутствует значение для внешней переменной с именем %1. - - - - A template by name %1 has already been declared. - Шаблон с именем %1 уже был объявлен. - - - + The keyword %1 cannot occur with any other mode name. - Ключевое слово %1 не может встречаться с любым другим названием режима. - - - - The value of attribute %1 must of type %2, which %3 isn't. - Значение атрибута %1 должно быть типа %2, но %3 ему не соответствует. - - - - The prefix %1 can not be bound. By default, it is already bound to the namespace %2. - Не удается связать префикс %1. По умолчанию префикс связан с пространством имён %2. - - - - A variable by name %1 has already been declared. - Переменная с именем %1 уже объявлена. + Ключевое слово %1 не может встречаться с любым другим названием режима. - + A stylesheet function must have a prefixed name. Функция стилей должна иметь имя с префиксом. @@ -8084,8 +8962,33 @@ Please choose a different file name. Внешние функции не поддерживаются. Все поддерживаемые функции могут использоваться напрямую без первоначального объявления их в качестве внешних - - An argument by name %1 has already been declared. Every argument name must be unique. + + No variable with name %1 exists + Переменная с именем %1 отсутствует + + + + The value of attribute %1 must be of type %2, which %3 isn't. + Значение атрибута %1 должно быть типа %2, но %3 не соответствует данному типу. + + + + The prefix %1 cannot be bound. By default, it is already bound to the namespace %2. + Не удаётся связать префикс %1. По умолчанию префикс связан с пространством имён %2. + + + + A variable with name %1 has already been declared. + Переменная с именем %1 уже объявлена. + + + + No value is available for the external variable with name %1. + Отсутствует значение для внешней переменной с именем %1. + + + + An argument with name %1 has already been declared. Every argument name must be unique. Аргумент с именем %1 уже объявлен. Имя каждого аргумента должно быть уникальным. @@ -8149,7 +9052,17 @@ Please choose a different file name. Ось %1 не поддерживается в XQuery - + + No function with name %1 is available. + Функция с именем %1 отсутствует. + + + + An attribute with name %1 has already appeared on this element. + Атрибут с именем %1 уже существует для данного элемента. + + + %1 is not a valid name for a processing-instruction. %1 является неверным названием для инструкции обработки. @@ -8174,12 +9087,7 @@ Please choose a different file name. Встречена конструкция, запрещённая для текущего языка (%1). - - No function by name %1 is available. - Функция с именем %1 отсутствует. - - - + The namespace URI cannot be the empty string when binding to a prefix, %1. URI пространства имён не может быть пустой строкой при связывании с префиксом %1. @@ -8214,12 +9122,7 @@ Please choose a different file name. URI пространства имён должно быть константой и не может содержать выражений. - - An attribute by name %1 has already appeared on this element. - Атрибут с именем %1 уже существует для данного элемента. - - - + A direct element constructor is not well-formed. %1 is ended with %2. Прямой конструктор элемента составлен некорректно. %1 заканчивается на %2. @@ -8926,7 +9829,7 @@ Please choose a different file name. - Derived attribute %1 does not exists in the base definition. + Derived attribute %1 does not exist in the base definition. @@ -9378,7 +10281,7 @@ Please choose a different file name. - Component with id %1 has been defined previously. + Component with ID %1 has been defined previously. @@ -9792,11 +10695,16 @@ Please choose a different file name. - Fixed value constrained not allowed if element is nillable. + Fixed value constraint not allowed if element is nillable. - + + Element %1 cannot contain other elements, as it has a fixed content. + + + + Specified type %1 is not validly substitutable with element type %2. @@ -9840,12 +10748,7 @@ Please choose a different file name. - - Element %1 can not contain other elements, as it has a fixed content. - - - - + Element %1 is missing required attribute %2. diff --git a/translations/qtconfig_ru.ts b/translations/qtconfig_ru.ts index 26db840..334a801 100644 --- a/translations/qtconfig_ru.ts +++ b/translations/qtconfig_ru.ts @@ -45,7 +45,7 @@ Phonon GStreamer backend not available. - Модуль Phonon поддержки GStreamer недоступен. + Модуль поддержки GStreamer недоступен. @@ -156,363 +156,347 @@ MainWindowBase - + Qt Configuration Конфигурация Qt - + Appearance Внешний вид - + GUI Style Стиль пользовательского графического интерфейса - + Select GUI &Style: &Стиль интерфейса: - + Build Palette Палитра - + &3-D Effects: Эффекты &3D: - + Window Back&ground: &Фон окна: - + &Tune Palette... &Настроить палитру... - + Please use the KDE Control Center to set the palette. Используйте Центр управления KDE для настройки цветов. - + Preview Предпросмотр - + Select &Palette: Выбор &палитры: - + Active Palette Палитра активных элементов - + Inactive Palette Палитра неактивных элементов - + Disabled Palette Палитра выключенных элементов - + Fonts Шрифты - + Default Font Шрифт по умолчанию - + &Style: &Начертание: - + &Point Size: &Размер: - + F&amily: &Шрифт: - + Sample Text Текст для примера (Sample Text) - + Font Substitution Подстановка шрифтов - + S&elect or Enter a Family: &Выберите шрифт для замены: - + Current Substitutions: Текущие замены: - - + Up Выше - - + Down Ниже - - + Remove Удалить - + Select s&ubstitute Family: &Заменять на шрифт: - - + Add Добавить - + Interface Интерфейс - + Feel Settings Настройка указателя - - + ms мс - + &Double Click Interval: &Интервал двойного щелчка: - + No blinking Без мигания - + &Cursor Flash Time: &Период мигания курсора: - + lines строк - + Wheel &Scroll Lines: &Прокручивать строк при повороте колёсика: - + Resolve symlinks in URLs Разрешать символьные ссылки в URL-ах - + GUI Effects Эффекты пользовательского интерфейса - + &Enable &Включить - + Alt+E Alt+D - + &Menu Effect: Эффект &меню: - + C&omboBox Effect: Эффект C&omboBox: - + &ToolTip Effect: Эффект &ToolTip: - + Tool&Box Effect: Эффект Tool&Box: - - - - + Disable Выключен - - - - + Animate Анимация - - + Fade Затухание - + Global Strut Специальные возможности - + Minimum &Width: Минимальная &ширина: - + Minimum Hei&ght: Минимальная в&ысота: - - + pixels пикселей - + Enhanced support for languages written right-to-left Расширенная поддержка письма справа налево - + XIM Input Style: Стиль ввода XIM: - + On The Spot - + Over The Spot - + Off The Spot - + Root - + Default Input Method: Метод ввода по умолчанию: - + Printer Принтер - + Enable Font embedding Разрешить встраивание шрифтов - + Font Paths Пути к шрифтам - + Browse... Обзор... - + Press the <b>Browse</b> button or enter a directory and press Enter to add them to the list. Нажмите кнопку <b>Обзор...</b> или укажите каталог и нажмите Ввод для добавления его в список. - + Phonon Phonon - + About Phonon О Phonon - - + Current Version: Текущая версия: - - + Not available Недоступно - - + Website: Вэб-сайт: - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -525,12 +509,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://phonon.kde.org"><span style=" text-decoration: underline; color:#0000ff;">http://phonon.kde.org</span></a></p></body></html> - + About GStreamer О GStreamer - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -543,22 +527,22 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gstreamer.freedesktop.org/"><span style=" text-decoration: underline; color:#0000ff;">http://gstreamer.freedesktop.org/</span></a></p></body></html> - + GStreamer backend settings Настройки модуля GStreamer - + Preferred audio sink: Предпочитаемое звуковое устройство: - + Preferred render method: Предпочитаемый метод отрисовки: - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -571,57 +555,57 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Внимание: Изменение данных настроек может повлечь невозможность корректного запуска приложений.</span></p></body></html> - + &File &Файл - + &Help &Справка - + &Save &Сохранить - + Save Сохранить - + Ctrl+S - + E&xit В&ыход - + Exit Выход - + &About &О программе - + About О программе - + About &Qt О &Qt - + About Qt О Qt @@ -629,208 +613,207 @@ p, li { white-space: pre-wrap; } PaletteEditorAdvancedBase - + Tune Palette Настройка палитры - + <b>Edit Palette</b><p>Change the palette of the current widget or form.</p><p>Use a generated palette or select colors for each color group and each color role.</p><p>The palette can be tested with different widget layouts in the preview section.</p> <b>Изменение палитры</b><p>Изменение палитры текущего виджета или формы.</p><p>Используйте сформированную палитру или выберите цвета для каждой группы цветов и каждой их роли.</p><p>Палитру можно проверить на виджетах в разных режимах отображения в разделе предпросмотра.</p> - + Select &Palette: Выбор &палитры: - + Active Palette Палитра активных элементов - + Inactive Palette Палитра неактивных элементов - + Disabled Palette Палитра выключенных элементов - + Auto Автоматически - + Build inactive palette from active Создать неактивную палитру из активной - + Build disabled palette from active Создать выключенную палитру из активной - + Central color &roles Роли &цветов - + Choose central color role Выберите роль цвета - + <b>Select a color role.</b><p>Available central roles are: <ul> <li>Window - general background color.</li> <li>WindowText - general foreground color. </li> <li>Base - used as background color for e.g. text entry widgets, usually white or another light color. </li> <li>Text - the foreground color used with Base. Usually this is the same as WindowText, in what case it must provide good contrast both with Window and Base. </li> <li>Button - general button background color, where buttons need a background different from Window, as in the Macintosh style. </li> <li>ButtonText - a foreground color used with the Button color. </li> <li>Highlight - a color to indicate a selected or highlighted item. </li> <li>HighlightedText - a text color that contrasts to Highlight. </li> <li>BrightText - a text color that is very different from WindowText and contrasts well with e.g. black. </li> </ul> </p> <b>Выбор роли цвета.</b><p>Доступны следующие роли: <ul><li>Window - основной цвет фона.</li> <li>WindowText - основной цвет текста.</li> <li>Base - используется в качестве фона для, например, виджетов с текстовыми полями, обычно, белый или другой светлый цвет.</li> <li>Text - цвет текста используемый совместно с Base. Обычно, он совпадает с WindowText, так как в этом случае получается максимальный контраст и с Window, и с Base.</li> <li>Button - основной цвет фона кнопки, которой требуется цвет отличный от Window, например, в стиле Macintosh.</li> <li>ButtonText - цвет текста используемый совместно с Button.</li> <li>Highlight - цвет для обозначения выбранного или выделенного элемента.</li> <li>HighlightedText - цвет текста контрастирующий с Highlight.</li> <li>BrightText - цвет текста, который отличается от WindowText и хорошо контрастирует с черным.</li></ul></p> - + Window - + WindowText - + Button - + Base - + Text - + BrightText - + ButtonText - + Highlight - + HighlightedText - + &Select Color: &Выбор цвета: - - + Choose a color Выберите цвет - + Choose a color for the selected central color role. Выберите цвет для указанной роли. - + 3-D shadow &effects Эффекты т&рехмерной тени - + Build &from button color Получ&ить из цвета кнопки - + Generate shadings Создание полутонов - + Check to let 3D-effect colors be calculated from button-color. Включите, чтобы цвета эффекта трёхмерности были получены из цвета кнопки. - + Choose 3D-effect color role Выбор роли цвета дял эффекта трёхмерности - + <b>Select a color role.</b><p>Available effect roles are: <ul> <li>Light - lighter than Button color. </li> <li>Midlight - between Button and Light. </li> <li>Mid - between Button and Dark. </li> <li>Dark - darker than Button. </li> <li>Shadow - a very dark color. </li> </ul> <b>Выбор роли цвета.</b><p>Доступны следующие роли: <ul> <li>Light - светлее цвета Button. </li> <li>Midlight - среднее между Light и Button. </li> <li>Mid - среднее между Button и Dark. </li> <li>Dark - темнее цвета Button. </li> <li>Shadow - очень темный цвет. </li> </ul> - + Light - + Midlight - + Mid - + Dark - + Shadow - + Select Co&lor: Выбор &цвета: - + Choose a color for the selected effect color role. Выбор цвета для указанной роли. - + OK Принять - + Close dialog and apply all changes. Закрыть окно с применением изменений. - + Cancel Отмена - + Close dialog and discard all changes. Закрыть окно с отменой изменений. @@ -846,62 +829,62 @@ p, li { white-space: pre-wrap; } PreviewWidgetBase - + Preview Window Окно предпросмотра - + ButtonGroup ButtonGroup - + RadioButton1 RadioButton1 - + RadioButton2 RadioButton2 - + RadioButton3 RadioButton3 - + ButtonGroup2 ButtonGroup2 - + CheckBox1 CheckBox1 - + CheckBox2 CheckBox2 - + LineEdit LineEdit - + ComboBox ComboBox - + PushButton PushButton - + <p> <a href="http://qt.nokia.com">http://qt.nokia.com</a> </p> diff --git a/translations/qvfb_ru.ts b/translations/qvfb_ru.ts index 6d8681e..28f7010 100644 --- a/translations/qvfb_ru.ts +++ b/translations/qvfb_ru.ts @@ -4,7 +4,7 @@ AnimationSaveWidget - + Record Записать @@ -76,191 +76,193 @@ Config - + Configure Настройка - + Size Размер - + 176x220 "SmartPhone" 176x220 "SmartPhone" - + 240x320 "PDA" 240x320 "PDA" - + 320x240 "TV" / "QVGA" 320x240 "TV" / "QVGA" - + 640x480 "VGA" 640x480 "VGA" - + + 800x480 + 800x480 + + + 800x600 800x600 - + 1024x768 1024x768 - + Custom Особый - + Depth Глубина - + 1 bit monochrome 1 бит (монохромный) - + 2 bit grayscale 2 бита (градации серого) - + 4 bit grayscale 4 бита (градации серого) - + 8 bit 8 бит - + 12 (16) bit 12 (16) бит - + 15 bit 15 бит - + 16 bit 16 бит - + 18 bit 18 бит - + 24 bit 24 бита - + 32 bit 32 бита - + 32 bit ARGB 32 бита (ARGB) - + Swap red and blue channels Поменять синий и красный каналы - + BGR format Формат BGR - + Skin Обложка - + None Нет - + Emulate touch screen (no mouse move) указателя? Эмулировать тачскрин (без перемещения мыши) - + Emulate LCD screen (Only with fixed zoom of 3.0 times magnification) Эмулировать ж/к экран (только с 3-х кратным увеличением) - + <p>Note that any applications using the virtual framebuffer will be terminated if you change the Size or Depth <i>above</i>. You may freely modify the Gamma <i>below</i>. <p>Имейте в виду, что программы, использующие фрэймбуфер, будут завершены, если изменится <i>размер</i> и/или <i>глубина</i> экрана. - + Gamma Гамма - + Blue Синий - - - - + 1.0 1.0 - + Green Зеленый - + All Все - + Red Красный - + Set all to 1.0 Выставить все в 1.0 - + &OK &ОК - + &Cancel От&мена @@ -326,12 +328,12 @@ QVFb - + Browse... Обзор... - + Load Custom Skin... Загрузить обложку пользователя... -- cgit v0.12 From b0b19d286e10d307db4b9e477d4463eabc2b319d Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Tue, 2 Mar 2010 17:56:17 +0100 Subject: Fix build of imports * Fix export macro used in webkit * Fix dependencies on declarative/mutlimedia * Copy qmldir files into the build tree --- imports/Qt/multimedia/qmldir | 1 - imports/Qt/widgets/qmldir | 1 - imports/org/webkit/qmldir | 1 - src/declarative/declarative.pro | 28 +- src/declarative/imports/imports.pro | 7 - src/declarative/imports/multimedia/multimedia.cpp | 63 - src/declarative/imports/multimedia/multimedia.pro | 15 - src/declarative/imports/qimportbase.pri | 16 - src/declarative/imports/webkit/plugin.cpp | 66 - .../imports/webkit/qdeclarativewebview.cpp | 1340 -------------------- .../imports/webkit/qdeclarativewebview_p.h | 285 ----- .../imports/webkit/qdeclarativewebview_p_p.h | 151 --- src/declarative/imports/webkit/webkit.pro | 18 - .../imports/widgets/graphicslayouts.cpp | 260 ---- .../imports/widgets/graphicslayouts_p.h | 226 ---- .../imports/widgets/graphicswidgets.cpp | 40 - .../imports/widgets/graphicswidgets_p.h | 68 - src/declarative/imports/widgets/widgets.cpp | 138 -- src/declarative/imports/widgets/widgets.pro | 20 - src/declarative/libdeclarative.pro | 29 - src/imports/imports.pro | 7 + src/imports/multimedia/multimedia.cpp | 63 + src/imports/multimedia/multimedia.pro | 15 + src/imports/multimedia/qmldir | 1 + src/imports/qimportbase.pri | 33 + src/imports/webkit/plugin.cpp | 66 + src/imports/webkit/qdeclarativewebview.cpp | 1340 ++++++++++++++++++++ src/imports/webkit/qdeclarativewebview_p.h | 287 +++++ src/imports/webkit/qdeclarativewebview_p_p.h | 151 +++ src/imports/webkit/qmldir | 1 + src/imports/webkit/webkit.pro | 19 + src/imports/webkit/webkitqmlplugin_export.h | 53 + src/imports/widgets/graphicslayouts.cpp | 260 ++++ src/imports/widgets/graphicslayouts_p.h | 226 ++++ src/imports/widgets/graphicswidgets.cpp | 40 + src/imports/widgets/graphicswidgets_p.h | 68 + src/imports/widgets/qmldir | 1 + src/imports/widgets/widgets.cpp | 138 ++ src/imports/widgets/widgets.pro | 22 + src/src.pro | 6 + 40 files changed, 2823 insertions(+), 2747 deletions(-) delete mode 100644 imports/Qt/multimedia/qmldir delete mode 100644 imports/Qt/widgets/qmldir delete mode 100644 imports/org/webkit/qmldir delete mode 100644 src/declarative/imports/imports.pro delete mode 100644 src/declarative/imports/multimedia/multimedia.cpp delete mode 100644 src/declarative/imports/multimedia/multimedia.pro delete mode 100644 src/declarative/imports/qimportbase.pri delete mode 100644 src/declarative/imports/webkit/plugin.cpp delete mode 100644 src/declarative/imports/webkit/qdeclarativewebview.cpp delete mode 100644 src/declarative/imports/webkit/qdeclarativewebview_p.h delete mode 100644 src/declarative/imports/webkit/qdeclarativewebview_p_p.h delete mode 100644 src/declarative/imports/webkit/webkit.pro delete mode 100644 src/declarative/imports/widgets/graphicslayouts.cpp delete mode 100644 src/declarative/imports/widgets/graphicslayouts_p.h delete mode 100644 src/declarative/imports/widgets/graphicswidgets.cpp delete mode 100644 src/declarative/imports/widgets/graphicswidgets_p.h delete mode 100644 src/declarative/imports/widgets/widgets.cpp delete mode 100644 src/declarative/imports/widgets/widgets.pro delete mode 100644 src/declarative/libdeclarative.pro create mode 100644 src/imports/imports.pro create mode 100644 src/imports/multimedia/multimedia.cpp create mode 100644 src/imports/multimedia/multimedia.pro create mode 100644 src/imports/multimedia/qmldir create mode 100644 src/imports/qimportbase.pri create mode 100644 src/imports/webkit/plugin.cpp create mode 100644 src/imports/webkit/qdeclarativewebview.cpp create mode 100644 src/imports/webkit/qdeclarativewebview_p.h create mode 100644 src/imports/webkit/qdeclarativewebview_p_p.h create mode 100644 src/imports/webkit/qmldir create mode 100644 src/imports/webkit/webkit.pro create mode 100644 src/imports/webkit/webkitqmlplugin_export.h create mode 100644 src/imports/widgets/graphicslayouts.cpp create mode 100644 src/imports/widgets/graphicslayouts_p.h create mode 100644 src/imports/widgets/graphicswidgets.cpp create mode 100644 src/imports/widgets/graphicswidgets_p.h create mode 100644 src/imports/widgets/qmldir create mode 100644 src/imports/widgets/widgets.cpp create mode 100644 src/imports/widgets/widgets.pro diff --git a/imports/Qt/multimedia/qmldir b/imports/Qt/multimedia/qmldir deleted file mode 100644 index 0e6f656..0000000 --- a/imports/Qt/multimedia/qmldir +++ /dev/null @@ -1 +0,0 @@ -plugin multimedia diff --git a/imports/Qt/widgets/qmldir b/imports/Qt/widgets/qmldir deleted file mode 100644 index 6f19878..0000000 --- a/imports/Qt/widgets/qmldir +++ /dev/null @@ -1 +0,0 @@ -plugin widgets diff --git a/imports/org/webkit/qmldir b/imports/org/webkit/qmldir deleted file mode 100644 index 258aa2c..0000000 --- a/imports/org/webkit/qmldir +++ /dev/null @@ -1 +0,0 @@ -plugin webkitqmlplugin diff --git a/src/declarative/declarative.pro b/src/declarative/declarative.pro index a7ec18e..4287e25 100644 --- a/src/declarative/declarative.pro +++ b/src/declarative/declarative.pro @@ -1,5 +1,29 @@ -TEMPLATE = subdirs +TARGET = QtDeclarative +QPRO_PWD = $$PWD +QT = core gui xml script network +contains(QT_CONFIG, svg): QT += svg +contains(QT_CONFIG, opengl): QT += opengl +DEFINES += QT_BUILD_DECLARATIVE_LIB QT_NO_URL_CAST_FROM_STRING +win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x66000000 +solaris-cc*:QMAKE_CXXFLAGS_RELEASE -= -O2 -SUBDIRS = libdeclarative.pro imports +unix:QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui QtXml +exists("qdeclarative_enable_gcov") { + QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage -fno-elide-constructors + LIBS += -lgcov +} +include(../qbase.pri) + +#INCLUDEPATH -= $$QMAKE_INCDIR_QT/$$TARGET +#DESTDIR=. + +#modules +include(3rdparty/3rdparty.pri) +include(util/util.pri) +include(graphicsitems/graphicsitems.pri) +include(qml/qml.pri) +include(debugger/debugger.pri) + +symbian:TARGET.UID3=0x2001E623 diff --git a/src/declarative/imports/imports.pro b/src/declarative/imports/imports.pro deleted file mode 100644 index f874644..0000000 --- a/src/declarative/imports/imports.pro +++ /dev/null @@ -1,7 +0,0 @@ -TEMPLATE = subdirs - -SUBDIRS += widgets - -contains(QT_CONFIG, multimedia): SUBDIRS += multimedia -contains(QT_CONFIG, webkit): SUBDIRS += webkit - diff --git a/src/declarative/imports/multimedia/multimedia.cpp b/src/declarative/imports/multimedia/multimedia.cpp deleted file mode 100644 index 8becbf3..0000000 --- a/src/declarative/imports/multimedia/multimedia.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 -#include -#include - -QT_BEGIN_NAMESPACE - -class QMultimediaQmlModule : public QDeclarativeExtensionPlugin -{ - Q_OBJECT -public: - virtual void registerTypes(const char *uri) - { - QtMultimedia::qRegisterDeclarativeElements(uri); - } -}; - -QT_END_NAMESPACE - -#include "multimedia.moc" - -Q_EXPORT_PLUGIN2(qmultimediaqmlmodule, QT_PREPEND_NAMESPACE(QMultimediaQmlModule)); - diff --git a/src/declarative/imports/multimedia/multimedia.pro b/src/declarative/imports/multimedia/multimedia.pro deleted file mode 100644 index d601d2e..0000000 --- a/src/declarative/imports/multimedia/multimedia.pro +++ /dev/null @@ -1,15 +0,0 @@ -TARGET = multimedia -include(../qimportbase.pri) - -QT += multimedia declarative - -SOURCES += multimedia.cpp - -QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/Qt/multimedia -target.path = $$[QT_INSTALL_IMPORTS]/Qt/multimedia - -qmldir.files += $$QT_BUILD_TREE/imports/Qt/multimedia/qmldir -qmldir.path += $$[QT_INSTALL_IMPORTS]/Qt/multimedia - -INSTALLS += target qmldir - diff --git a/src/declarative/imports/qimportbase.pri b/src/declarative/imports/qimportbase.pri deleted file mode 100644 index 5b0a4e2..0000000 --- a/src/declarative/imports/qimportbase.pri +++ /dev/null @@ -1,16 +0,0 @@ -TEMPLATE = lib -CONFIG += qt plugin - -win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release -TARGET = $$qtLibraryTarget($$TARGET) -contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols - -include(../../qt_targets.pri) - -wince*:LIBS += $$QMAKE_LIBS_GUI - -symbian: { - TARGET.EPOCALLOWDLLDATA=1 - TARGET.CAPABILITY = All -Tcb - load(armcc_warnings) -} diff --git a/src/declarative/imports/webkit/plugin.cpp b/src/declarative/imports/webkit/plugin.cpp deleted file mode 100644 index 2f6205d..0000000 --- a/src/declarative/imports/webkit/plugin.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** 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 plugins 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 -#include - -#include "qdeclarativewebview_p.h" -#include "qdeclarativewebview_p_p.h" - -QT_BEGIN_NAMESPACE - -class WebKitQmlPlugin : public QDeclarativeExtensionPlugin -{ - Q_OBJECT -public: - virtual void registerTypes(const char *uri) - { - Q_ASSERT(QLatin1String(uri) == QLatin1String("org.webkit")); - qmlRegisterType(uri,1,0,"WebView"); - } -}; - -QT_END_NAMESPACE - -#include "plugin.moc" - -Q_EXPORT_PLUGIN2(webkitqmlplugin, QT_PREPEND_NAMESPACE(WebKitQmlPlugin)); - diff --git a/src/declarative/imports/webkit/qdeclarativewebview.cpp b/src/declarative/imports/webkit/qdeclarativewebview.cpp deleted file mode 100644 index 733ac86..0000000 --- a/src/declarative/imports/webkit/qdeclarativewebview.cpp +++ /dev/null @@ -1,1340 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 "qdeclarativewebview_p.h" -#include "qdeclarativewebview_p_p.h" - -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -QT_BEGIN_NAMESPACE - -static const int MAX_DOUBLECLICK_TIME=500; // XXX need better gesture system - -class QDeclarativeWebViewPrivate : public QDeclarativePaintedItemPrivate -{ - Q_DECLARE_PUBLIC(QDeclarativeWebView) - -public: - QDeclarativeWebViewPrivate() - : QDeclarativePaintedItemPrivate(), page(0), preferredwidth(0), preferredheight(0), - progress(1.0), status(QDeclarativeWebView::Null), pending(PendingNone), - newWindowComponent(0), newWindowParent(0), - pressTime(400), - rendering(true) - { - } - - QUrl url; // page url might be different if it has not loaded yet - QWebPage *page; - - int preferredwidth, preferredheight; - qreal progress; - QDeclarativeWebView::Status status; - QString statusText; - enum { PendingNone, PendingUrl, PendingHtml, PendingContent } pending; - QUrl pending_url; - QString pending_string; - QByteArray pending_data; - mutable QDeclarativeWebSettings settings; - QDeclarativeComponent *newWindowComponent; - QDeclarativeItem *newWindowParent; - - QBasicTimer pressTimer; - QPoint pressPoint; - int pressTime; // milliseconds before it's a "hold" - - - static void windowObjects_append(QDeclarativeListProperty *prop, QObject *o) { - static_cast(prop->data)->windowObjects.append(o); - static_cast(prop->data)->updateWindowObjects(); - } - - void updateWindowObjects(); - QObjectList windowObjects; - - bool rendering; -}; - -/*! - \qmlclass WebView QDeclarativeWebView - \since 4.7 - \brief The WebView item allows you to add web content to a canvas. - \inherits Item - - A WebView renders web content based on a URL. - - If the width and height of the item is not set, they will - dynamically adjust to a size appropriate for the content. - This width may be large for typical online web pages. - - If the preferredWidth is set, the width will be this amount or larger, - usually laying out the web content to fit the preferredWidth. - - \qml - import org.webkit 1.0 - - WebView { - url: "http://www.nokia.com" - width: 490 - height: 400 - scale: 0.5 - smooth: false - smoothCache: true - } - \endqml - - \image webview.png - - The item includes no scrolling, scaling, - toolbars, etc., those must be implemented around WebView. See the WebBrowser example - for a demonstration of this. -*/ - -/*! - \internal - \class QDeclarativeWebView - \brief The QDeclarativeWebView class allows you to add web content to a QDeclarativeView. - - A WebView renders web content base on a URL. - - \image webview.png - - The item includes no scrolling, scaling, - toolbars, etc., those must be implemented around WebView. See the WebBrowser example - for a demonstration of this. - - A QDeclarativeWebView object can be instantiated in Qml using the tag \l WebView. -*/ - -QDeclarativeWebView::QDeclarativeWebView(QDeclarativeItem *parent) - : QDeclarativePaintedItem(*(new QDeclarativeWebViewPrivate), parent) -{ - init(); -} - -QDeclarativeWebView::~QDeclarativeWebView() -{ - Q_D(QDeclarativeWebView); - delete d->page; -} - -void QDeclarativeWebView::init() -{ - Q_D(QDeclarativeWebView); - - QWebSettings::enablePersistentStorage(); - - setAcceptHoverEvents(true); - setAcceptedMouseButtons(Qt::LeftButton); - setFlag(QGraphicsItem::ItemHasNoContents, false); - - d->page = 0; -} - -void QDeclarativeWebView::componentComplete() -{ - QDeclarativePaintedItem::componentComplete(); - Q_D(QDeclarativeWebView); - switch (d->pending) { - case QDeclarativeWebViewPrivate::PendingUrl: - setUrl(d->pending_url); - break; - case QDeclarativeWebViewPrivate::PendingHtml: - setHtml(d->pending_string, d->pending_url); - break; - case QDeclarativeWebViewPrivate::PendingContent: - setContent(d->pending_data, d->pending_string, d->pending_url); - break; - default: - break; - } - d->pending = QDeclarativeWebViewPrivate::PendingNone; - d->updateWindowObjects(); -} - -QDeclarativeWebView::Status QDeclarativeWebView::status() const -{ - Q_D(const QDeclarativeWebView); - return d->status; -} - - -/*! - \qmlproperty real WebView::progress - This property holds the progress of loading the current URL, from 0 to 1. - - If you just want to know when progress gets to 1, use - WebView::onLoadFinished() or WebView::onLoadFailed() instead. -*/ -qreal QDeclarativeWebView::progress() const -{ - Q_D(const QDeclarativeWebView); - return d->progress; -} - -void QDeclarativeWebView::doLoadStarted() -{ - Q_D(QDeclarativeWebView); - - if (!d->url.isEmpty()) { - d->status = Loading; - emit statusChanged(d->status); - } - emit loadStarted(); -} - -void QDeclarativeWebView::doLoadProgress(int p) -{ - Q_D(QDeclarativeWebView); - if (d->progress == p/100.0) - return; - d->progress = p/100.0; - emit progressChanged(); -} - -void QDeclarativeWebView::pageUrlChanged() -{ - Q_D(QDeclarativeWebView); - - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - expandToWebPage(); - - if ((d->url.isEmpty() && page()->mainFrame()->url() != QUrl(QLatin1String("about:blank"))) - || (d->url != page()->mainFrame()->url() && !page()->mainFrame()->url().isEmpty())) - { - d->url = page()->mainFrame()->url(); - if (d->url == QUrl(QLatin1String("about:blank"))) - d->url = QUrl(); - emit urlChanged(); - } -} - -void QDeclarativeWebView::doLoadFinished(bool ok) -{ - Q_D(QDeclarativeWebView); - - if (title().isEmpty()) - pageUrlChanged(); // XXX bug 232556 - pages with no title never get urlChanged() - - if (ok) { - d->status = d->url.isEmpty() ? Null : Ready; - emit loadFinished(); - } else { - d->status = Error; - emit loadFailed(); - } - emit statusChanged(d->status); -} - -/*! - \qmlproperty url WebView::url - This property holds the URL to the page displayed in this item. It can be set, - but also can change spontaneously (eg. because of network redirection). - - If the url is empty, the page is blank. - - The url is always absolute (QML will resolve relative URL strings in the context - of the containing QML document). -*/ -QUrl QDeclarativeWebView::url() const -{ - Q_D(const QDeclarativeWebView); - return d->url; -} - -void QDeclarativeWebView::setUrl(const QUrl &url) -{ - Q_D(QDeclarativeWebView); - if (url == d->url) - return; - - if (isComponentComplete()) { - d->url = url; - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - QUrl seturl = url; - if (seturl.isEmpty()) - seturl = QUrl(QLatin1String("about:blank")); - - Q_ASSERT(!seturl.isRelative()); - - page()->mainFrame()->load(seturl); - - emit urlChanged(); - } else { - d->pending = d->PendingUrl; - d->pending_url = url; - } -} - -/*! - \qmlproperty int WebView::preferredWidth - This property holds the ideal width for displaying the current URL. -*/ -int QDeclarativeWebView::preferredWidth() const -{ - Q_D(const QDeclarativeWebView); - return d->preferredwidth; -} - -void QDeclarativeWebView::setPreferredWidth(int iw) -{ - Q_D(QDeclarativeWebView); - if (d->preferredwidth == iw) return; - d->preferredwidth = iw; - //expandToWebPage(); - emit preferredWidthChanged(); -} - -/*! - \qmlproperty int WebView::preferredHeight - This property holds the ideal height for displaying the current URL. - This only affects the area zoomed by heuristicZoom(). -*/ -int QDeclarativeWebView::preferredHeight() const -{ - Q_D(const QDeclarativeWebView); - return d->preferredheight; -} -void QDeclarativeWebView::setPreferredHeight(int ih) -{ - Q_D(QDeclarativeWebView); - if (d->preferredheight == ih) return; - d->preferredheight = ih; - emit preferredHeightChanged(); -} - -/*! - \qmlmethod bool WebView::evaluateJavaScript(string) - - Evaluates the \a scriptSource JavaScript inside the context of the - main web frame, and returns the result of the last executed statement. - - Note that this JavaScript does \e not have any access to QML objects - except as made available as windowObjects. -*/ -QVariant QDeclarativeWebView::evaluateJavaScript(const QString &scriptSource) -{ - return this->page()->mainFrame()->evaluateJavaScript(scriptSource); -} - -void QDeclarativeWebView::focusChanged(bool hasFocus) -{ - QFocusEvent e(hasFocus ? QEvent::FocusIn : QEvent::FocusOut); - page()->event(&e); - QDeclarativeItem::focusChanged(hasFocus); -} - -void QDeclarativeWebView::initialLayout() -{ - // nothing useful to do at this point -} - -void QDeclarativeWebView::noteContentsSizeChanged(const QSize&) -{ - expandToWebPage(); -} - -void QDeclarativeWebView::expandToWebPage() -{ - Q_D(QDeclarativeWebView); - QSize cs = page()->mainFrame()->contentsSize(); - if (cs.width() < d->preferredwidth) - cs.setWidth(d->preferredwidth); - if (cs.height() < d->preferredheight) - cs.setHeight(d->preferredheight); - if (widthValid()) - cs.setWidth(width()); - if (heightValid()) - cs.setHeight(height()); - if (cs != page()->viewportSize()) { - page()->setViewportSize(cs); - } - if (cs != contentsSize()) - setContentsSize(cs); -} - -void QDeclarativeWebView::geometryChanged(const QRectF &newGeometry, - const QRectF &oldGeometry) -{ - if (newGeometry.size() != oldGeometry.size()) - expandToWebPage(); - QDeclarativePaintedItem::geometryChanged(newGeometry, oldGeometry); -} - -void QDeclarativeWebView::paintPage(const QRect& r) -{ - dirtyCache(r); - update(); -} - -/*! - \qmlproperty list WebView::javaScriptWindowObjects - - This property is a list of object that are available from within - the webview's JavaScript context. - - The \a object will be inserted as a child of the frame's window - object, under the name given by the attached property \c WebView.windowObjectName. - - \qml - WebView { - javaScriptWindowObjects: Object { - WebView.windowObjectName: "coordinates" - } - } - \endqml - - Properties of the object will be exposed as JavaScript properties and slots as - JavaScript methods. - - If Javascript is not enabled for this page, then this property does nothing. -*/ -QDeclarativeListProperty QDeclarativeWebView::javaScriptWindowObjects() -{ - Q_D(QDeclarativeWebView); - return QDeclarativeListProperty(this, d, &QDeclarativeWebViewPrivate::windowObjects_append); -} - -QDeclarativeWebViewAttached *QDeclarativeWebView::qmlAttachedProperties(QObject *o) -{ - return new QDeclarativeWebViewAttached(o); -} - -void QDeclarativeWebViewPrivate::updateWindowObjects() -{ - Q_Q(QDeclarativeWebView); - if (!q->isComponentComplete() || !page) - return; - - for (int ii = 0; ii < windowObjects.count(); ++ii) { - QObject *object = windowObjects.at(ii); - QDeclarativeWebViewAttached *attached = static_cast(qmlAttachedPropertiesObject(object)); - if (attached && !attached->windowObjectName().isEmpty()) { - page->mainFrame()->addToJavaScriptWindowObject(attached->windowObjectName(), object); - } - } -} - -bool QDeclarativeWebView::renderingEnabled() const -{ - Q_D(const QDeclarativeWebView); - return d->rendering; -} - -void QDeclarativeWebView::setRenderingEnabled(bool enabled) -{ - Q_D(QDeclarativeWebView); - if (d->rendering == enabled) - return; - d->rendering = enabled; - emit renderingEnabledChanged(); - - setCacheFrozen(!enabled); - if (enabled) - clearCache(); -} - - -void QDeclarativeWebView::drawContents(QPainter *p, const QRect &r) -{ - Q_D(QDeclarativeWebView); - if (d->rendering) - page()->mainFrame()->render(p,r); -} - -QMouseEvent *QDeclarativeWebView::sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *e) -{ - QEvent::Type t; - switch(e->type()) { - default: - case QEvent::GraphicsSceneMousePress: - t = QEvent::MouseButtonPress; - break; - case QEvent::GraphicsSceneMouseRelease: - t = QEvent::MouseButtonRelease; - break; - case QEvent::GraphicsSceneMouseMove: - t = QEvent::MouseMove; - break; - case QGraphicsSceneEvent::GraphicsSceneMouseDoubleClick: - t = QEvent::MouseButtonDblClick; - break; - } - - QMouseEvent *me = new QMouseEvent(t, (e->pos()/contentsScale()).toPoint(), e->button(), e->buttons(), 0); - return me; -} - -QMouseEvent *QDeclarativeWebView::sceneHoverMoveEventToMouseEvent(QGraphicsSceneHoverEvent *e) -{ - QEvent::Type t = QEvent::MouseMove; - - QMouseEvent *me = new QMouseEvent(t, (e->pos()/contentsScale()).toPoint(), Qt::NoButton, Qt::NoButton, 0); - - return me; -} - - -/*! - \qmlsignal WebView::onDoubleClick(clickx,clicky) - - The WebView does not pass double-click events to the web engine, but rather - emits this signals. -*/ - -void QDeclarativeWebView::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) -{ - QMouseEvent *me = sceneMouseEventToMouseEvent(event); - emit doubleClick(me->x(),me->y()); - delete me; -} - -/*! - \qmlmethod bool WebView::heuristicZoom(clickX,clickY,maxzoom) - - Finds a zoom that: - \list - \i shows a whole item - \i includes (\a clickX, \a clickY) - \i fits into the preferredWidth and preferredHeight - \i zooms by no more than \a maxzoom - \i is more than 10% above the current zoom - \endlist - - If such a zoom exists, emits zoomTo(zoom,centerX,centerY) and returns true; otherwise, - no signal is emitted and returns false. -*/ -bool QDeclarativeWebView::heuristicZoom(int clickX, int clickY, qreal maxzoom) -{ - Q_D(QDeclarativeWebView); - if (contentsScale() >= maxzoom/zoomFactor()) - return false; - qreal ozf = contentsScale(); - QRect showarea = elementAreaAt(clickX, clickY, d->preferredwidth/maxzoom, d->preferredheight/maxzoom); - qreal z = qMin(qreal(d->preferredwidth)/showarea.width(),qreal(d->preferredheight)/showarea.height()); - if (z > maxzoom/zoomFactor()) - z = maxzoom/zoomFactor(); - if (z/ozf > 1.2) { - QRectF r(showarea.left()*z, showarea.top()*z, showarea.width()*z, showarea.height()*z); - emit zoomTo(z,r.x()+r.width()/2, r.y()+r.height()/2); - return true; - } else { - return false; - } -} - -/*! - \qmlproperty int WebView::pressGrabTime - - The number of milliseconds the user must press before the WebView - starts passing move events through to the web engine (rather than - letting other QML elements such as a Flickable take them). - - Defaults to 400ms. Set to 0 to always grab and pass move events to - the web engine. -*/ -int QDeclarativeWebView::pressGrabTime() const -{ - Q_D(const QDeclarativeWebView); - return d->pressTime; -} - -void QDeclarativeWebView::setPressGrabTime(int ms) -{ - Q_D(QDeclarativeWebView); - if (d->pressTime == ms) - return; - d->pressTime = ms; - emit pressGrabTimeChanged(); -} - -void QDeclarativeWebView::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - Q_D(QDeclarativeWebView); - - setFocus (true); - QMouseEvent *me = sceneMouseEventToMouseEvent(event); - - d->pressPoint = me->pos(); - if (d->pressTime) { - d->pressTimer.start(d->pressTime,this); - setKeepMouseGrab(false); - } else { - grabMouse(); - setKeepMouseGrab(true); - } - - page()->event(me); - event->setAccepted( -/* - It is not correct to send the press event upwards, if it is not accepted by WebKit - e.g. push button does not work, if done so as QGraphicsScene will not send the release event at all to WebKit - Might be a bug in WebKit, though - */ -#if 1 //QT_VERSION <= 0x040500 // XXX see bug 230835 - true -#else - me->isAccepted() -#endif - ); - delete me; - if (!event->isAccepted()) { - QDeclarativePaintedItem::mousePressEvent(event); - } -} - -void QDeclarativeWebView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) -{ - Q_D(QDeclarativeWebView); - - QMouseEvent *me = sceneMouseEventToMouseEvent(event); - page()->event(me); - d->pressTimer.stop(); - event->setAccepted( -/* - It is not correct to send the press event upwards, if it is not accepted by WebKit - e.g. push button does not work, if done so as QGraphicsScene will not send all the events to WebKit - */ -#if 1 //QT_VERSION <= 0x040500 // XXX see bug 230835 - true -#else - me->isAccepted() -#endif - ); - delete me; - if (!event->isAccepted()) { - QDeclarativePaintedItem::mouseReleaseEvent(event); - } - setKeepMouseGrab(false); - ungrabMouse(); -} - -void QDeclarativeWebView::timerEvent(QTimerEvent *event) -{ - Q_D(QDeclarativeWebView); - if (event->timerId() == d->pressTimer.timerId()) { - d->pressTimer.stop(); - grabMouse(); - setKeepMouseGrab(true); - } -} - -void QDeclarativeWebView::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - Q_D(QDeclarativeWebView); - - QMouseEvent *me = sceneMouseEventToMouseEvent(event); - if (d->pressTimer.isActive()) { - if ((me->pos() - d->pressPoint).manhattanLength() > QApplication::startDragDistance()) { - d->pressTimer.stop(); - } - } - if (keepMouseGrab()) { - page()->event(me); - event->setAccepted( -/* - It is not correct to send the press event upwards, if it is not accepted by WebKit - e.g. push button does not work, if done so as QGraphicsScene will not send the release event at all to WebKit - Might be a bug in WebKit, though - */ -#if 1 // QT_VERSION <= 0x040500 // XXX see bug 230835 - true -#else - me->isAccepted() -#endif - ); - } - delete me; - if (!event->isAccepted()) - QDeclarativePaintedItem::mouseMoveEvent(event); - -} -void QDeclarativeWebView::hoverMoveEvent (QGraphicsSceneHoverEvent * event) -{ - QMouseEvent *me = sceneHoverMoveEventToMouseEvent(event); - page()->event(me); - event->setAccepted( -#if QT_VERSION <= 0x040500 // XXX see bug 230835 - true -#else - me->isAccepted() -#endif - ); - delete me; - if (!event->isAccepted()) - QDeclarativePaintedItem::hoverMoveEvent(event); -} - -void QDeclarativeWebView::keyPressEvent(QKeyEvent* event) -{ - page()->event(event); - if (!event->isAccepted()) - QDeclarativePaintedItem::keyPressEvent(event); -} - -void QDeclarativeWebView::keyReleaseEvent(QKeyEvent* event) -{ - page()->event(event); - if (!event->isAccepted()) - QDeclarativePaintedItem::keyReleaseEvent(event); -} - -bool QDeclarativeWebView::sceneEvent(QEvent *event) -{ - if (event->type() == QEvent::KeyPress) { - QKeyEvent *k = static_cast(event); - if (k->key() == Qt::Key_Tab || k->key() == Qt::Key_Backtab) { - if (!(k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) { //### Add MetaModifier? - page()->event(event); - if (event->isAccepted()) - return true; - } - } - } - return QDeclarativePaintedItem::sceneEvent(event); -} - - -/*! - \qmlproperty action WebView::back - This property holds the action for causing the previous URL in the history to be displayed. -*/ -QAction *QDeclarativeWebView::backAction() const -{ - return page()->action(QWebPage::Back); -} - -/*! - \qmlproperty action WebView::forward - This property holds the action for causing the next URL in the history to be displayed. -*/ -QAction *QDeclarativeWebView::forwardAction() const -{ - return page()->action(QWebPage::Forward); -} - -/*! - \qmlproperty action WebView::reload - This property holds the action for reloading with the current URL -*/ -QAction *QDeclarativeWebView::reloadAction() const -{ - return page()->action(QWebPage::Reload); -} - -/*! - \qmlproperty action WebView::stop - This property holds the action for stopping loading with the current URL -*/ -QAction *QDeclarativeWebView::stopAction() const -{ - return page()->action(QWebPage::Stop); -} - -/*! - \qmlproperty real WebView::title - This property holds the title of the web page currently viewed - - By default, this property contains an empty string. -*/ -QString QDeclarativeWebView::title() const -{ - return page()->mainFrame()->title(); -} - - - -/*! - \qmlproperty pixmap WebView::icon - This property holds the icon associated with the web page currently viewed -*/ -QPixmap QDeclarativeWebView::icon() const -{ - return page()->mainFrame()->icon().pixmap(QSize(256,256)); -} - - -/*! - \qmlproperty real WebView::zoomFactor - This property holds the multiplier used to scale the contents of a Web page. -*/ -void QDeclarativeWebView::setZoomFactor(qreal factor) -{ - Q_D(QDeclarativeWebView); - if (factor == page()->mainFrame()->zoomFactor()) - return; - - page()->mainFrame()->setZoomFactor(factor); - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth*factor : width()*factor, - d->preferredheight>0 ? d->preferredheight*factor : height()*factor)); - expandToWebPage(); - - emit zoomFactorChanged(); -} - -qreal QDeclarativeWebView::zoomFactor() const -{ - return page()->mainFrame()->zoomFactor(); -} - -/*! - \qmlproperty string WebView::statusText - - This property is the current status suggested by the current web page. In a web browser, - such status is often shown in some kind of status bar. -*/ -void QDeclarativeWebView::setStatusText(const QString& s) -{ - Q_D(QDeclarativeWebView); - d->statusText = s; - emit statusTextChanged(); -} - -void QDeclarativeWebView::windowObjectCleared() -{ - Q_D(QDeclarativeWebView); - d->updateWindowObjects(); -} - -QString QDeclarativeWebView::statusText() const -{ - Q_D(const QDeclarativeWebView); - return d->statusText; -} - -QWebPage *QDeclarativeWebView::page() const -{ - Q_D(const QDeclarativeWebView); - - if (!d->page) { - QDeclarativeWebView *self = const_cast(this); - QWebPage *wp = new QDeclarativeWebPage(self); - - // QML items don't default to having a background, - // even though most we pages will set one anyway. - QPalette pal = QApplication::palette(); - pal.setBrush(QPalette::Base, QColor::fromRgbF(0, 0, 0, 0)); - wp->setPalette(pal); - - wp->setNetworkAccessManager(qmlEngine(this)->networkAccessManager()); - - self->setPage(wp); - - return wp; - } - - return d->page; -} - - -// The QObject interface to settings(). -/*! - \qmlproperty string WebView::settings.standardFontFamily - \qmlproperty string WebView::settings.fixedFontFamily - \qmlproperty string WebView::settings.serifFontFamily - \qmlproperty string WebView::settings.sansSerifFontFamily - \qmlproperty string WebView::settings.cursiveFontFamily - \qmlproperty string WebView::settings.fantasyFontFamily - - \qmlproperty int WebView::settings.minimumFontSize - \qmlproperty int WebView::settings.minimumLogicalFontSize - \qmlproperty int WebView::settings.defaultFontSize - \qmlproperty int WebView::settings.defaultFixedFontSize - - \qmlproperty bool WebView::settings.autoLoadImages - \qmlproperty bool WebView::settings.javascriptEnabled - \qmlproperty bool WebView::settings.javaEnabled - \qmlproperty bool WebView::settings.pluginsEnabled - \qmlproperty bool WebView::settings.privateBrowsingEnabled - \qmlproperty bool WebView::settings.javascriptCanOpenWindows - \qmlproperty bool WebView::settings.javascriptCanAccessClipboard - \qmlproperty bool WebView::settings.developerExtrasEnabled - \qmlproperty bool WebView::settings.linksIncludedInFocusChain - \qmlproperty bool WebView::settings.zoomTextOnly - \qmlproperty bool WebView::settings.printElementBackgrounds - \qmlproperty bool WebView::settings.offlineStorageDatabaseEnabled - \qmlproperty bool WebView::settings.offlineWebApplicationCacheEnabled - \qmlproperty bool WebView::settings.localStorageDatabaseEnabled - \qmlproperty bool WebView::settings.localContentCanAccessRemoteUrls - - These properties give access to the settings controlling the web view. - - See QWebSettings for details of these properties. - - \qml - WebView { - settings.pluginsEnabled: true - settings.standardFontFamily: "Arial" - ... - } - \endqml -*/ -QObject *QDeclarativeWebView::settingsObject() const -{ - Q_D(const QDeclarativeWebView); - d->settings.s = page()->settings(); - return &d->settings; -} - -void QDeclarativeWebView::setPage(QWebPage *page) -{ - Q_D(QDeclarativeWebView); - if (d->page == page) - return; - if (d->page) { - if (d->page->parent() == this) { - delete d->page; - } else { - d->page->disconnect(this); - } - } - d->page = page; - d->page->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - d->page->mainFrame()->setScrollBarPolicy(Qt::Horizontal,Qt::ScrollBarAlwaysOff); - d->page->mainFrame()->setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff); - connect(d->page,SIGNAL(repaintRequested(QRect)),this,SLOT(paintPage(QRect))); - connect(d->page->mainFrame(),SIGNAL(urlChanged(QUrl)),this,SLOT(pageUrlChanged())); - connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(titleChanged(QString))); - connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(iconChanged())); - connect(d->page->mainFrame(), SIGNAL(iconChanged()), this, SIGNAL(iconChanged())); - connect(d->page->mainFrame(), SIGNAL(contentsSizeChanged(QSize)), this, SLOT(noteContentsSizeChanged(QSize))); - connect(d->page->mainFrame(), SIGNAL(initialLayoutCompleted()), this, SLOT(initialLayout())); - - connect(d->page,SIGNAL(loadStarted()),this,SLOT(doLoadStarted())); - connect(d->page,SIGNAL(loadProgress(int)),this,SLOT(doLoadProgress(int))); - connect(d->page,SIGNAL(loadFinished(bool)),this,SLOT(doLoadFinished(bool))); - connect(d->page,SIGNAL(statusBarMessage(QString)),this,SLOT(setStatusText(QString))); - - connect(d->page->mainFrame(),SIGNAL(javaScriptWindowObjectCleared()),this,SLOT(windowObjectCleared())); -} - -/*! - \qmlsignal WebView::onLoadStarted() - - This handler is called when the web engine begins loading - a page. Later, WebView::onLoadFinished() or WebView::onLoadFailed() - will be emitted. -*/ - -/*! - \qmlsignal WebView::onLoadFinished() - - This handler is called when the web engine \e successfully - finishes loading a page, including any component content - (WebView::onLoadFailed() will be emitted otherwise). - - \sa progress -*/ - -/*! - \qmlsignal WebView::onLoadFailed() - - This handler is called when the web engine fails loading - a page or any component content - (WebView::onLoadFinished() will be emitted on success). -*/ - -void QDeclarativeWebView::load(const QNetworkRequest &request, - QNetworkAccessManager::Operation operation, - const QByteArray &body) -{ - page()->mainFrame()->load(request, operation, body); -} - -QString QDeclarativeWebView::html() const -{ - return page()->mainFrame()->toHtml(); -} - -/*! - \qmlproperty string WebView::html - This property holds HTML text set directly - - The html property can be set as a string. - - \qml - WebView { - html: "

This is HTML." - } - \endqml -*/ -void QDeclarativeWebView::setHtml(const QString &html, const QUrl &baseUrl) -{ - Q_D(QDeclarativeWebView); - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - if (isComponentComplete()) - page()->mainFrame()->setHtml(html, baseUrl); - else { - d->pending = d->PendingHtml; - d->pending_url = baseUrl; - d->pending_string = html; - } - emit htmlChanged(); -} - -void QDeclarativeWebView::setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl) -{ - Q_D(QDeclarativeWebView); - page()->setViewportSize(QSize( - d->preferredwidth>0 ? d->preferredwidth : width(), - d->preferredheight>0 ? d->preferredheight : height())); - - if (isComponentComplete()) - page()->mainFrame()->setContent(data,mimeType,qmlContext(this)->resolvedUrl(baseUrl)); - else { - d->pending = d->PendingContent; - d->pending_url = baseUrl; - d->pending_string = mimeType; - d->pending_data = data; - } -} - -QWebHistory *QDeclarativeWebView::history() const -{ - return page()->history(); -} - -QWebSettings *QDeclarativeWebView::settings() const -{ - return page()->settings(); -} - -QDeclarativeWebView *QDeclarativeWebView::createWindow(QWebPage::WebWindowType type) -{ - Q_D(QDeclarativeWebView); - switch (type) { - case QWebPage::WebBrowserWindow: { - if (!d->newWindowComponent && d->newWindowParent) - qWarning("WebView::newWindowComponent not set - WebView::newWindowParent ignored"); - else if (d->newWindowComponent && !d->newWindowParent) - qWarning("WebView::newWindowParent not set - WebView::newWindowComponent ignored"); - else if (d->newWindowComponent && d->newWindowParent) { - QDeclarativeWebView *webview = 0; - QDeclarativeContext *windowContext = new QDeclarativeContext(qmlContext(this)); - - QObject *nobj = d->newWindowComponent->create(windowContext); - if (nobj) { - windowContext->setParent(nobj); - QDeclarativeItem *item = qobject_cast(nobj); - if (!item) { - delete nobj; - } else { - webview = item->findChild(); - if (!webview) { - delete item; - } else { - nobj->setParent(d->newWindowParent); - static_cast(item)->setParentItem(d->newWindowParent); - } - } - } else { - delete windowContext; - } - - return webview; - } - } - break; - case QWebPage::WebModalDialog: { - // Not supported - } - } - return 0; -} - -/*! - \qmlproperty component WebView::newWindowComponent - - This property holds the component to use for new windows. - The component must have a WebView somewhere in its structure. - - When the web engine requests a new window, it will be an instance of - this component. - - The parent of the new window is set by newWindowParent. It must be set. -*/ -QDeclarativeComponent *QDeclarativeWebView::newWindowComponent() const -{ - Q_D(const QDeclarativeWebView); - return d->newWindowComponent; -} - -void QDeclarativeWebView::setNewWindowComponent(QDeclarativeComponent *newWindow) -{ - Q_D(QDeclarativeWebView); - if (newWindow == d->newWindowComponent) - return; - d->newWindowComponent = newWindow; - emit newWindowComponentChanged(); -} - - -/*! - \qmlproperty item WebView::newWindowParent - - The parent item for new windows. - - \sa newWindowComponent -*/ -QDeclarativeItem *QDeclarativeWebView::newWindowParent() const -{ - Q_D(const QDeclarativeWebView); - return d->newWindowParent; -} - -void QDeclarativeWebView::setNewWindowParent(QDeclarativeItem *parent) -{ - Q_D(QDeclarativeWebView); - if (parent == d->newWindowParent) - return; - if (d->newWindowParent && parent) { - QList children = d->newWindowParent->childItems(); - for (int i = 0; i < children.count(); ++i) { - children.at(i)->setParentItem(parent); - } - } - d->newWindowParent = parent; - emit newWindowParentChanged(); -} - -/*! - Returns the area of the largest element at position (\a x,\a y) that is no larger - than \a maxwidth by \a maxheight pixels. - - May return an area larger in the case when no smaller element is at the position. -*/ -QRect QDeclarativeWebView::elementAreaAt(int x, int y, int maxwidth, int maxheight) const -{ - QWebHitTestResult hit = page()->mainFrame()->hitTestContent(QPoint(x,y)); - QRect rv = hit.boundingRect(); - QWebElement element = hit.enclosingBlockElement(); - if (maxwidth<=0) maxwidth = INT_MAX; - if (maxheight<=0) maxheight = INT_MAX; - while (!element.parent().isNull() && element.geometry().width() <= maxwidth && element.geometry().height() <= maxheight) { - rv = element.geometry(); - element = element.parent(); - } - return rv; -} - -/*! - \internal - \class QDeclarativeWebPage - \brief The QDeclarativeWebPage class is a QWebPage that can create QML plugins. - - \sa QDeclarativeWebView -*/ -QDeclarativeWebPage::QDeclarativeWebPage(QDeclarativeWebView *parent) : - QWebPage(parent) -{ -} - -QDeclarativeWebPage::~QDeclarativeWebPage() -{ -} - -void QDeclarativeWebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) -{ - qWarning() << sourceID << ':' << lineNumber << ':' << message; -} - -QString QDeclarativeWebPage::chooseFile(QWebFrame *originatingFrame, const QString& oldFile) -{ - // Not supported (it's modal) - Q_UNUSED(originatingFrame) - Q_UNUSED(oldFile) - return oldFile; -} - -void QDeclarativeWebPage::javaScriptAlert(QWebFrame *originatingFrame, const QString& msg) -{ - Q_UNUSED(originatingFrame) - emit viewItem()->alert(msg); -} - -bool QDeclarativeWebPage::javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg) -{ - // Not supported (it's modal) - Q_UNUSED(originatingFrame) - Q_UNUSED(msg) - return false; -} - -bool QDeclarativeWebPage::javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result) -{ - // Not supported (it's modal) - Q_UNUSED(originatingFrame) - Q_UNUSED(msg) - Q_UNUSED(defaultValue) - Q_UNUSED(result) - return false; -} - - -/* - Qt WebKit does not understand non-QWidget plugins, so dummy widgets - are created, parented to a single dummy tool window. - - The requirements for QML object plugins are input to the Qt WebKit - non-QWidget plugin support, which will obsolete this kludge. -*/ -class QWidget_Dummy_Plugin : public QWidget -{ - Q_OBJECT -public: - static QWidget *dummy_shared_parent() - { - static QWidget *dsp = 0; - if (!dsp) { - dsp = new QWidget(0,Qt::Tool); - dsp->setGeometry(-10000,-10000,0,0); - dsp->show(); - } - return dsp; - } - QWidget_Dummy_Plugin(const QUrl& url, QDeclarativeWebView *view, const QStringList ¶mNames, const QStringList ¶mValues) : - QWidget(dummy_shared_parent()), - propertyNames(paramNames), - propertyValues(paramValues), - webview(view) - { - QDeclarativeEngine *engine = qmlEngine(webview); - component = new QDeclarativeComponent(engine, url, this); - item = 0; - if (component->isLoading()) - connect(component, SIGNAL(statusChanged(QDeclarativeComponent::Status)), this, SLOT(qmlLoaded())); - else - qmlLoaded(); - } - -public Q_SLOTS: - void qmlLoaded() - { - if (component->isError()) { - // ### Could instead give these errors to the WebView to handle. - qWarning() << component->errors(); - return; - } - item = qobject_cast(component->create(qmlContext(webview))); - item->setParent(webview); - QString jsObjName; - for (int i=0; isetProperty(propertyNames[i].toUtf8(),propertyValues[i]); - if (propertyNames[i] == QLatin1String("objectname")) - jsObjName = propertyValues[i]; - } - } - if (!jsObjName.isNull()) { - QWebFrame *f = webview->page()->mainFrame(); - f->addToJavaScriptWindowObject(jsObjName, item); - } - resizeEvent(0); - delete component; - component = 0; - } - void resizeEvent(QResizeEvent*) - { - if (item) { - item->setX(x()); - item->setY(y()); - item->setWidth(width()); - item->setHeight(height()); - } - } - -private: - QDeclarativeComponent *component; - QDeclarativeItem *item; - QStringList propertyNames, propertyValues; - QDeclarativeWebView *webview; -}; - -QDeclarativeWebView *QDeclarativeWebPage::viewItem() -{ - return static_cast(parent()); -} - -QObject *QDeclarativeWebPage::createPlugin(const QString &, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues) -{ - QUrl comp = qmlContext(viewItem())->resolvedUrl(url); - return new QWidget_Dummy_Plugin(comp,viewItem(),paramNames,paramValues); -} - -QWebPage *QDeclarativeWebPage::createWindow(WebWindowType type) -{ - QDeclarativeWebView *newView = viewItem()->createWindow(type); - if (newView) - return newView->page(); - return 0; -} - -QT_END_NAMESPACE - -#include diff --git a/src/declarative/imports/webkit/qdeclarativewebview_p.h b/src/declarative/imports/webkit/qdeclarativewebview_p.h deleted file mode 100644 index 0bb5d29..0000000 --- a/src/declarative/imports/webkit/qdeclarativewebview_p.h +++ /dev/null @@ -1,285 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 QDECLARATIVEWEBVIEW_H -#define QDECLARATIVEWEBVIEW_H - -#include - -#include -#include -#include -#include - -QT_BEGIN_HEADER - -class QWebHistory; -class QWebSettings; - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) -class QDeclarativeWebViewPrivate; -class QNetworkRequest; -class QDeclarativeWebView; - -class Q_DECLARATIVE_EXPORT QDeclarativeWebPage : public QWebPage -{ - Q_OBJECT -public: - explicit QDeclarativeWebPage(QDeclarativeWebView *parent); - ~QDeclarativeWebPage(); -protected: - QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues); - QWebPage *createWindow(WebWindowType type); - void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID); - QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile); - void javaScriptAlert(QWebFrame *originatingFrame, const QString& msg); - bool javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg); - bool javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result); - -private: - QDeclarativeWebView *viewItem(); -}; - - -class QDeclarativeWebViewAttached; - -//### TODO: browser plugins - -class Q_DECLARATIVE_EXPORT QDeclarativeWebView : public QDeclarativePaintedItem -{ - Q_OBJECT - - Q_ENUMS(Status SelectionMode) - - Q_PROPERTY(QString title READ title NOTIFY titleChanged) - Q_PROPERTY(QPixmap icon READ icon NOTIFY iconChanged) - Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged) - Q_PROPERTY(QString statusText READ statusText NOTIFY statusTextChanged) - - Q_PROPERTY(QString html READ html WRITE setHtml NOTIFY htmlChanged) - - Q_PROPERTY(int pressGrabTime READ pressGrabTime WRITE setPressGrabTime NOTIFY pressGrabTimeChanged) - - Q_PROPERTY(int preferredWidth READ preferredWidth WRITE setPreferredWidth NOTIFY preferredWidthChanged) - Q_PROPERTY(int preferredHeight READ preferredHeight WRITE setPreferredHeight NOTIFY preferredHeightChanged) - Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) - Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged) - Q_PROPERTY(Status status READ status NOTIFY statusChanged) - - Q_PROPERTY(QAction* reload READ reloadAction CONSTANT) - Q_PROPERTY(QAction* back READ backAction CONSTANT) - Q_PROPERTY(QAction* forward READ forwardAction CONSTANT) - Q_PROPERTY(QAction* stop READ stopAction CONSTANT) - - Q_PROPERTY(QObject* settings READ settingsObject CONSTANT) - - Q_PROPERTY(QDeclarativeListProperty javaScriptWindowObjects READ javaScriptWindowObjects CONSTANT) - - Q_PROPERTY(QDeclarativeComponent* newWindowComponent READ newWindowComponent WRITE setNewWindowComponent NOTIFY newWindowComponentChanged) - Q_PROPERTY(QDeclarativeItem* newWindowParent READ newWindowParent WRITE setNewWindowParent NOTIFY newWindowParentChanged) - - Q_PROPERTY(bool renderingEnabled READ renderingEnabled WRITE setRenderingEnabled NOTIFY renderingEnabledChanged) - -public: - QDeclarativeWebView(QDeclarativeItem *parent=0); - ~QDeclarativeWebView(); - - QUrl url() const; - void setUrl(const QUrl &); - - QString title() const; - - QPixmap icon() const; - - qreal zoomFactor() const; - void setZoomFactor(qreal); - Q_INVOKABLE bool heuristicZoom(int clickX, int clickY, qreal maxzoom); - QRect elementAreaAt(int x, int y, int minwidth, int minheight) const; - - int pressGrabTime() const; - void setPressGrabTime(int); - - int preferredWidth() const; - void setPreferredWidth(int); - int preferredHeight() const; - void setPreferredHeight(int); - - enum Status { Null, Ready, Loading, Error }; - Status status() const; - qreal progress() const; - QString statusText() const; - - QAction *reloadAction() const; - QAction *backAction() const; - QAction *forwardAction() const; - QAction *stopAction() const; - - QWebPage *page() const; - void setPage(QWebPage *page); - - void load(const QNetworkRequest &request, - QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, - const QByteArray &body = QByteArray()); - - QString html() const; - - void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); - void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); - - QWebHistory *history() const; - QWebSettings *settings() const; - QObject *settingsObject() const; - - bool renderingEnabled() const; - void setRenderingEnabled(bool); - - QDeclarativeListProperty javaScriptWindowObjects(); - - static QDeclarativeWebViewAttached *qmlAttachedProperties(QObject *); - - QDeclarativeComponent *newWindowComponent() const; - void setNewWindowComponent(QDeclarativeComponent *newWindow); - QDeclarativeItem *newWindowParent() const; - void setNewWindowParent(QDeclarativeItem *newWindow); - -Q_SIGNALS: - void preferredWidthChanged(); - void preferredHeightChanged(); - void urlChanged(); - void progressChanged(); - void statusChanged(Status); - void titleChanged(const QString&); - void iconChanged(); - void statusTextChanged(); - void htmlChanged(); - void pressGrabTimeChanged(); - void zoomFactorChanged(); - void newWindowComponentChanged(); - void newWindowParentChanged(); - void renderingEnabledChanged(); - - void loadStarted(); - void loadFinished(); - void loadFailed(); - - void doubleClick(int clickX, int clickY); - - void zoomTo(qreal zoom, int centerX, int centerY); - - void alert(const QString& message); - -public Q_SLOTS: - QVariant evaluateJavaScript(const QString&); - -private Q_SLOTS: - void expandToWebPage(); - void paintPage(const QRect&); - void doLoadStarted(); - void doLoadProgress(int p); - void doLoadFinished(bool ok); - void setStatusText(const QString&); - void windowObjectCleared(); - void pageUrlChanged(); - void noteContentsSizeChanged(const QSize&); - void initialLayout(); - -protected: - void drawContents(QPainter *, const QRect &); - - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); - void timerEvent(QTimerEvent *event); - void hoverMoveEvent (QGraphicsSceneHoverEvent * event); - void keyPressEvent(QKeyEvent* event); - void keyReleaseEvent(QKeyEvent* event); - virtual void geometryChanged(const QRectF &newGeometry, - const QRectF &oldGeometry); - virtual void focusChanged(bool); - virtual bool sceneEvent(QEvent *event); - QDeclarativeWebView *createWindow(QWebPage::WebWindowType type); - -private: - void init(); - virtual void componentComplete(); - Q_DISABLE_COPY(QDeclarativeWebView) - Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeWebView) - QMouseEvent *sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *); - QMouseEvent *sceneHoverMoveEventToMouseEvent(QGraphicsSceneHoverEvent *); - friend class QDeclarativeWebPage; -}; - -class QDeclarativeWebViewAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QString windowObjectName READ windowObjectName WRITE setWindowObjectName) -public: - QDeclarativeWebViewAttached(QObject *parent) - : QObject(parent) - { - } - - QString windowObjectName() const - { - return m_windowObjectName; - } - - void setWindowObjectName(const QString &n) - { - m_windowObjectName = n; - } - -private: - QString m_windowObjectName; -}; - - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QDeclarativeWebView) -QML_DECLARE_TYPEINFO(QDeclarativeWebView, QML_HAS_ATTACHED_PROPERTIES) - -QT_END_HEADER - -#endif diff --git a/src/declarative/imports/webkit/qdeclarativewebview_p_p.h b/src/declarative/imports/webkit/qdeclarativewebview_p_p.h deleted file mode 100644 index 258b472..0000000 --- a/src/declarative/imports/webkit/qdeclarativewebview_p_p.h +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 QDECLARATIVEWEBVIEW_P_H -#define QDECLARATIVEWEBVIEW_P_H - -#include - -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QDeclarativeWebSettings : public QObject { - Q_OBJECT - - Q_PROPERTY(QString standardFontFamily READ standardFontFamily WRITE setStandardFontFamily) - Q_PROPERTY(QString fixedFontFamily READ fixedFontFamily WRITE setFixedFontFamily) - Q_PROPERTY(QString serifFontFamily READ serifFontFamily WRITE setSerifFontFamily) - Q_PROPERTY(QString sansSerifFontFamily READ sansSerifFontFamily WRITE setSansSerifFontFamily) - Q_PROPERTY(QString cursiveFontFamily READ cursiveFontFamily WRITE setCursiveFontFamily) - Q_PROPERTY(QString fantasyFontFamily READ fantasyFontFamily WRITE setFantasyFontFamily) - - Q_PROPERTY(int minimumFontSize READ minimumFontSize WRITE setMinimumFontSize) - Q_PROPERTY(int minimumLogicalFontSize READ minimumLogicalFontSize WRITE setMinimumLogicalFontSize) - Q_PROPERTY(int defaultFontSize READ defaultFontSize WRITE setDefaultFontSize) - Q_PROPERTY(int defaultFixedFontSize READ defaultFixedFontSize WRITE setDefaultFixedFontSize) - - Q_PROPERTY(bool autoLoadImages READ autoLoadImages WRITE setAutoLoadImages) - Q_PROPERTY(bool javascriptEnabled READ javascriptEnabled WRITE setJavascriptEnabled) - Q_PROPERTY(bool javaEnabled READ javaEnabled WRITE setJavaEnabled) - Q_PROPERTY(bool pluginsEnabled READ pluginsEnabled WRITE setPluginsEnabled) - Q_PROPERTY(bool privateBrowsingEnabled READ privateBrowsingEnabled WRITE setPrivateBrowsingEnabled) - Q_PROPERTY(bool javascriptCanOpenWindows READ javascriptCanOpenWindows WRITE setJavascriptCanOpenWindows) - Q_PROPERTY(bool javascriptCanAccessClipboard READ javascriptCanAccessClipboard WRITE setJavascriptCanAccessClipboard) - Q_PROPERTY(bool developerExtrasEnabled READ developerExtrasEnabled WRITE setDeveloperExtrasEnabled) - Q_PROPERTY(bool linksIncludedInFocusChain READ linksIncludedInFocusChain WRITE setLinksIncludedInFocusChain) - Q_PROPERTY(bool zoomTextOnly READ zoomTextOnly WRITE setZoomTextOnly) - Q_PROPERTY(bool printElementBackgrounds READ printElementBackgrounds WRITE setPrintElementBackgrounds) - Q_PROPERTY(bool offlineStorageDatabaseEnabled READ offlineStorageDatabaseEnabled WRITE setOfflineStorageDatabaseEnabled) - Q_PROPERTY(bool offlineWebApplicationCacheEnabled READ offlineWebApplicationCacheEnabled WRITE setOfflineWebApplicationCacheEnabled) - Q_PROPERTY(bool localStorageDatabaseEnabled READ localStorageDatabaseEnabled WRITE setLocalStorageDatabaseEnabled) - Q_PROPERTY(bool localContentCanAccessRemoteUrls READ localContentCanAccessRemoteUrls WRITE setLocalContentCanAccessRemoteUrls) - -public: - QDeclarativeWebSettings() {} - - QString standardFontFamily() const { return s->fontFamily(QWebSettings::StandardFont); } - void setStandardFontFamily(const QString& f) { s->setFontFamily(QWebSettings::StandardFont,f); } - QString fixedFontFamily() const { return s->fontFamily(QWebSettings::FixedFont); } - void setFixedFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FixedFont,f); } - QString serifFontFamily() const { return s->fontFamily(QWebSettings::SerifFont); } - void setSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SerifFont,f); } - QString sansSerifFontFamily() const { return s->fontFamily(QWebSettings::SansSerifFont); } - void setSansSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SansSerifFont,f); } - QString cursiveFontFamily() const { return s->fontFamily(QWebSettings::CursiveFont); } - void setCursiveFontFamily(const QString& f) { s->setFontFamily(QWebSettings::CursiveFont,f); } - QString fantasyFontFamily() const { return s->fontFamily(QWebSettings::FantasyFont); } - void setFantasyFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FantasyFont,f); } - - int minimumFontSize() const { return s->fontSize(QWebSettings::MinimumFontSize); } - void setMinimumFontSize(int size) { s->setFontSize(QWebSettings::MinimumFontSize,size); } - int minimumLogicalFontSize() const { return s->fontSize(QWebSettings::MinimumLogicalFontSize); } - void setMinimumLogicalFontSize(int size) { s->setFontSize(QWebSettings::MinimumLogicalFontSize,size); } - int defaultFontSize() const { return s->fontSize(QWebSettings::DefaultFontSize); } - void setDefaultFontSize(int size) { s->setFontSize(QWebSettings::DefaultFontSize,size); } - int defaultFixedFontSize() const { return s->fontSize(QWebSettings::DefaultFixedFontSize); } - void setDefaultFixedFontSize(int size) { s->setFontSize(QWebSettings::DefaultFixedFontSize,size); } - - bool autoLoadImages() const { return s->testAttribute(QWebSettings::AutoLoadImages); } - void setAutoLoadImages(bool on) { s->setAttribute(QWebSettings::AutoLoadImages, on); } - bool javascriptEnabled() const { return s->testAttribute(QWebSettings::JavascriptEnabled); } - void setJavascriptEnabled(bool on) { s->setAttribute(QWebSettings::JavascriptEnabled, on); } - bool javaEnabled() const { return s->testAttribute(QWebSettings::JavaEnabled); } - void setJavaEnabled(bool on) { s->setAttribute(QWebSettings::JavaEnabled, on); } - bool pluginsEnabled() const { return s->testAttribute(QWebSettings::PluginsEnabled); } - void setPluginsEnabled(bool on) { s->setAttribute(QWebSettings::PluginsEnabled, on); } - bool privateBrowsingEnabled() const { return s->testAttribute(QWebSettings::PrivateBrowsingEnabled); } - void setPrivateBrowsingEnabled(bool on) { s->setAttribute(QWebSettings::PrivateBrowsingEnabled, on); } - bool javascriptCanOpenWindows() const { return s->testAttribute(QWebSettings::JavascriptCanOpenWindows); } - void setJavascriptCanOpenWindows(bool on) { s->setAttribute(QWebSettings::JavascriptCanOpenWindows, on); } - bool javascriptCanAccessClipboard() const { return s->testAttribute(QWebSettings::JavascriptCanAccessClipboard); } - void setJavascriptCanAccessClipboard(bool on) { s->setAttribute(QWebSettings::JavascriptCanAccessClipboard, on); } - bool developerExtrasEnabled() const { return s->testAttribute(QWebSettings::DeveloperExtrasEnabled); } - void setDeveloperExtrasEnabled(bool on) { s->setAttribute(QWebSettings::DeveloperExtrasEnabled, on); } - bool linksIncludedInFocusChain() const { return s->testAttribute(QWebSettings::LinksIncludedInFocusChain); } - void setLinksIncludedInFocusChain(bool on) { s->setAttribute(QWebSettings::LinksIncludedInFocusChain, on); } - bool zoomTextOnly() const { return s->testAttribute(QWebSettings::ZoomTextOnly); } - void setZoomTextOnly(bool on) { s->setAttribute(QWebSettings::ZoomTextOnly, on); } - bool printElementBackgrounds() const { return s->testAttribute(QWebSettings::PrintElementBackgrounds); } - void setPrintElementBackgrounds(bool on) { s->setAttribute(QWebSettings::PrintElementBackgrounds, on); } - bool offlineStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::OfflineStorageDatabaseEnabled); } - void setOfflineStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, on); } - bool offlineWebApplicationCacheEnabled() const { return s->testAttribute(QWebSettings::OfflineWebApplicationCacheEnabled); } - void setOfflineWebApplicationCacheEnabled(bool on) { s->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, on); } - bool localStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::LocalStorageDatabaseEnabled); } - void setLocalStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, on); } - bool localContentCanAccessRemoteUrls() const { return s->testAttribute(QWebSettings::LocalContentCanAccessRemoteUrls); } - void setLocalContentCanAccessRemoteUrls(bool on) { s->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, on); } - - QWebSettings *s; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QDeclarativeWebSettings) - -QT_END_HEADER - -#endif diff --git a/src/declarative/imports/webkit/webkit.pro b/src/declarative/imports/webkit/webkit.pro deleted file mode 100644 index 7ad8564..0000000 --- a/src/declarative/imports/webkit/webkit.pro +++ /dev/null @@ -1,18 +0,0 @@ -TARGET = webkitqmlplugin -include(../qimportbase.pri) - -contains(QT_CONFIG, webkit) { - QT += webkit declarative - - SOURCES += qdeclarativewebview.cpp plugin.cpp - HEADERS += qdeclarativewebview_p.h - HEADERS += qdeclarativewebview_p_p.h - - QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/org/webkit - target.path = $$[QT_INSTALL_IMPORTS]/org/webkit - - qmldir.files += $$QT_BUILD_TREE/imports/org/webkit/qmldir - qmldir.path += $$[QT_INSTALL_IMPORTS]/org/webkit - - INSTALLS += target qmldir -} diff --git a/src/declarative/imports/widgets/graphicslayouts.cpp b/src/declarative/imports/widgets/graphicslayouts.cpp deleted file mode 100644 index fc15ad2..0000000 --- a/src/declarative/imports/widgets/graphicslayouts.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 "graphicslayouts_p.h" - -#include -#include - -QT_BEGIN_NAMESPACE - -LinearLayoutAttached::LinearLayoutAttached(QObject *parent) -: QObject(parent), _stretch(1), _alignment(Qt::AlignCenter) -{ -} - -void LinearLayoutAttached::setStretchFactor(int f) -{ - if (_stretch == f) - return; - - _stretch = f; - emit stretchChanged(reinterpret_cast(parent()), _stretch); -} - -void LinearLayoutAttached::setAlignment(Qt::Alignment a) -{ - if (_alignment == a) - return; - - _alignment = a; - emit alignmentChanged(reinterpret_cast(parent()), _alignment); -} - -QGraphicsLinearLayoutStretchItemObject::QGraphicsLinearLayoutStretchItemObject(QObject *parent) - : QObject(parent) -{ -} - -QSizeF QGraphicsLinearLayoutStretchItemObject::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const -{ -Q_UNUSED(which); -Q_UNUSED(constraint); -return QSizeF(); -} - - -QGraphicsLinearLayoutObject::QGraphicsLinearLayoutObject(QObject *parent) -: QObject(parent) -{ -} - -QGraphicsLinearLayoutObject::~QGraphicsLinearLayoutObject() -{ -} - -void QGraphicsLinearLayoutObject::insertLayoutItem(int index, QGraphicsLayoutItem *item) -{ -insertItem(index, item); - -//connect attached properties -if (LinearLayoutAttached *obj = attachedProperties.value(item)) { - setStretchFactor(item, obj->stretchFactor()); - setAlignment(item, obj->alignment()); - QObject::connect(obj, SIGNAL(stretchChanged(QGraphicsLayoutItem*,int)), - this, SLOT(updateStretch(QGraphicsLayoutItem*,int))); - QObject::connect(obj, SIGNAL(alignmentChanged(QGraphicsLayoutItem*,Qt::Alignment)), - this, SLOT(updateAlignment(QGraphicsLayoutItem*,Qt::Alignment))); - //### need to disconnect when widget is removed? -} -} - -//### is there a better way to do this? -void QGraphicsLinearLayoutObject::clearChildren() -{ -for (int i = 0; i < count(); ++i) - removeAt(i); -} - -void QGraphicsLinearLayoutObject::updateStretch(QGraphicsLayoutItem *item, int stretch) -{ -QGraphicsLinearLayout::setStretchFactor(item, stretch); -} - -void QGraphicsLinearLayoutObject::updateAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment) -{ -QGraphicsLinearLayout::setAlignment(item, alignment); -} - -QHash QGraphicsLinearLayoutObject::attachedProperties; -LinearLayoutAttached *QGraphicsLinearLayoutObject::qmlAttachedProperties(QObject *obj) -{ -// ### This is not allowed - you must attach to any object -if (!qobject_cast(obj)) - return 0; -LinearLayoutAttached *rv = new LinearLayoutAttached(obj); -attachedProperties.insert(qobject_cast(obj), rv); -return rv; -} - -////////////////////////////////////////////////////////////////////////////////////////////////////// -// QGraphicsGridLayout-related classes -////////////////////////////////////////////////////////////////////////////////////////////////////// -GridLayoutAttached::GridLayoutAttached(QObject *parent) -: QObject(parent), _row(-1), _column(-1), _rowspan(1), _colspan(1), _alignment(-1) -{ -} - -void GridLayoutAttached::setRow(int r) -{ - if (_row == r) - return; - - _row = r; - //emit rowChanged(reinterpret_cast(parent()), _row); -} - -void GridLayoutAttached::setColumn(int c) -{ - if (_column == c) - return; - - _column = c; - //emit columnChanged(reinterpret_cast(parent()), _column); -} - -void GridLayoutAttached::setRowSpan(int rs) -{ - if (_rowspan == rs) - return; - - _rowspan = rs; - //emit rowSpanChanged(reinterpret_cast(parent()), _rowSpan); -} - -void GridLayoutAttached::setColumnSpan(int cs) -{ - if (_colspan == cs) - return; - - _colspan = cs; - //emit columnSpanChanged(reinterpret_cast(parent()), _columnSpan); -} - -void GridLayoutAttached::setAlignment(Qt::Alignment a) -{ - if (_alignment == a) - return; - - _alignment = a; - //emit alignmentChanged(reinterpret_cast(parent()), _alignment); -} - -QGraphicsGridLayoutObject::QGraphicsGridLayoutObject(QObject *parent) -: QObject(parent) -{ -} - -QGraphicsGridLayoutObject::~QGraphicsGridLayoutObject() -{ -} - -void QGraphicsGridLayoutObject::addWidget(QGraphicsWidget *wid) -{ -//use attached properties -if (QObject *obj = attachedProperties.value(qobject_cast(wid))) { - int row = static_cast(obj)->row(); - int column = static_cast(obj)->column(); - int rowSpan = static_cast(obj)->rowSpan(); - int columnSpan = static_cast(obj)->columnSpan(); - if (row == -1 || column == -1) { - qWarning() << "Must set row and column for an item in a grid layout"; - return; - } - addItem(wid, row, column, rowSpan, columnSpan); -} -} - -void QGraphicsGridLayoutObject::addLayoutItem(QGraphicsLayoutItem *item) -{ -//use attached properties -if (GridLayoutAttached *obj = attachedProperties.value(item)) { - int row = obj->row(); - int column = obj->column(); - int rowSpan = obj->rowSpan(); - int columnSpan = obj->columnSpan(); - Qt::Alignment alignment = obj->alignment(); - if (row == -1 || column == -1) { - qWarning() << "Must set row and column for an item in a grid layout"; - return; - } - addItem(item, row, column, rowSpan, columnSpan); - if (alignment != -1) - setAlignment(item,alignment); -} -} - -//### is there a better way to do this? -void QGraphicsGridLayoutObject::clearChildren() -{ -for (int i = 0; i < count(); ++i) - removeAt(i); -} - -qreal QGraphicsGridLayoutObject::spacing() const -{ -if (verticalSpacing() == horizontalSpacing()) - return verticalSpacing(); -return -1; //### -} - -QHash QGraphicsGridLayoutObject::attachedProperties; -GridLayoutAttached *QGraphicsGridLayoutObject::qmlAttachedProperties(QObject *obj) -{ -// ### This is not allowed - you must attach to any object -if (!qobject_cast(obj)) - return 0; -GridLayoutAttached *rv = new GridLayoutAttached(obj); -attachedProperties.insert(qobject_cast(obj), rv); -return rv; -} - -QT_END_NAMESPACE diff --git a/src/declarative/imports/widgets/graphicslayouts_p.h b/src/declarative/imports/widgets/graphicslayouts_p.h deleted file mode 100644 index f9b9ae8..0000000 --- a/src/declarative/imports/widgets/graphicslayouts_p.h +++ /dev/null @@ -1,226 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 GRAPHICSLAYOUTS_H -#define GRAPHICSLAYOUTS_H - -#include "graphicswidgets_p.h" - -#include -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QGraphicsLinearLayoutStretchItemObject : public QObject, public QGraphicsLayoutItem -{ - Q_OBJECT - Q_INTERFACES(QGraphicsLayoutItem) -public: - QGraphicsLinearLayoutStretchItemObject(QObject *parent = 0); - - virtual QSizeF sizeHint(Qt::SizeHint, const QSizeF &) const; -}; - -class LinearLayoutAttached; -class QGraphicsLinearLayoutObject : public QObject, public QGraphicsLinearLayout -{ - Q_OBJECT - Q_INTERFACES(QGraphicsLayout QGraphicsLayoutItem) - - Q_PROPERTY(QDeclarativeListProperty children READ children) - Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) - Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing) - Q_CLASSINFO("DefaultProperty", "children") -public: - QGraphicsLinearLayoutObject(QObject * = 0); - ~QGraphicsLinearLayoutObject(); - - QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append, children_count, children_at, children_clear); } - - static LinearLayoutAttached *qmlAttachedProperties(QObject *); - -private Q_SLOTS: - void updateStretch(QGraphicsLayoutItem*,int); - void updateAlignment(QGraphicsLayoutItem*,Qt::Alignment); - -private: - friend class LinearLayoutAttached; - void clearChildren(); - void insertLayoutItem(int, QGraphicsLayoutItem *); - static QHash attachedProperties; - - static void children_append(QDeclarativeListProperty *prop, QGraphicsLayoutItem *item) { - static_cast(prop->object)->insertLayoutItem(-1, item); - } - - static void children_clear(QDeclarativeListProperty *prop) { - static_cast(prop->object)->clearChildren(); - } - - static int children_count(QDeclarativeListProperty *prop) { - return static_cast(prop->object)->count(); - } - - static QGraphicsLayoutItem *children_at(QDeclarativeListProperty *prop, int index) { - return static_cast(prop->object)->itemAt(index); - } -}; - -class GridLayoutAttached; -class QGraphicsGridLayoutObject : public QObject, public QGraphicsGridLayout -{ - Q_OBJECT - Q_INTERFACES(QGraphicsLayout QGraphicsLayoutItem) - - Q_PROPERTY(QDeclarativeListProperty children READ children) - Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing) - Q_PROPERTY(qreal verticalSpacing READ verticalSpacing WRITE setVerticalSpacing) - Q_PROPERTY(qreal horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing) - Q_CLASSINFO("DefaultProperty", "children") -public: - QGraphicsGridLayoutObject(QObject * = 0); - ~QGraphicsGridLayoutObject(); - - QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append, children_count, children_at, children_clear); } - - qreal spacing() const; - - static GridLayoutAttached *qmlAttachedProperties(QObject *); - -private: - friend class GraphicsLayoutAttached; - void addWidget(QGraphicsWidget *); - void clearChildren(); - void addLayoutItem(QGraphicsLayoutItem *); - static QHash attachedProperties; - - static void children_append(QDeclarativeListProperty *prop, QGraphicsLayoutItem *item) { - static_cast(prop->object)->addLayoutItem(item); - } - - static void children_clear(QDeclarativeListProperty *prop) { - static_cast(prop->object)->clearChildren(); - } - - static int children_count(QDeclarativeListProperty *prop) { - return static_cast(prop->object)->count(); - } - - static QGraphicsLayoutItem *children_at(QDeclarativeListProperty *prop, int index) { - return static_cast(prop->object)->itemAt(index); - } -}; - -class LinearLayoutAttached : public QObject -{ - Q_OBJECT - - Q_PROPERTY(int stretchFactor READ stretchFactor WRITE setStretchFactor NOTIFY stretchChanged) - Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged) -public: - LinearLayoutAttached(QObject *parent); - - int stretchFactor() const { return _stretch; } - void setStretchFactor(int f); - Qt::Alignment alignment() const { return _alignment; } - void setAlignment(Qt::Alignment a); - -Q_SIGNALS: - void stretchChanged(QGraphicsLayoutItem*,int); - void alignmentChanged(QGraphicsLayoutItem*,Qt::Alignment); - -private: - int _stretch; - Qt::Alignment _alignment; -}; - -class GridLayoutAttached : public QObject -{ - Q_OBJECT - - Q_PROPERTY(int row READ row WRITE setRow) - Q_PROPERTY(int column READ column WRITE setColumn) - Q_PROPERTY(int rowSpan READ rowSpan WRITE setRowSpan) - Q_PROPERTY(int columnSpan READ columnSpan WRITE setColumnSpan) - Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) -public: - GridLayoutAttached(QObject *parent); - - int row() const { return _row; } - void setRow(int r); - - int column() const { return _column; } - void setColumn(int c); - - int rowSpan() const { return _rowspan; } - void setRowSpan(int rs); - - int columnSpan() const { return _colspan; } - void setColumnSpan(int cs); - - Qt::Alignment alignment() const { return _alignment; } - void setAlignment(Qt::Alignment a); - -private: - int _row; - int _column; - int _rowspan; - int _colspan; - Qt::Alignment _alignment; -}; - -QT_END_NAMESPACE - -QML_DECLARE_INTERFACE(QGraphicsLayoutItem) -QML_DECLARE_INTERFACE(QGraphicsLayout) -QML_DECLARE_TYPE(QGraphicsLinearLayoutStretchItemObject) -QML_DECLARE_TYPE(QGraphicsLinearLayoutObject) -QML_DECLARE_TYPEINFO(QGraphicsLinearLayoutObject, QML_HAS_ATTACHED_PROPERTIES) -QML_DECLARE_TYPE(QGraphicsGridLayoutObject) -QML_DECLARE_TYPEINFO(QGraphicsGridLayoutObject, QML_HAS_ATTACHED_PROPERTIES) - -QT_END_HEADER - -#endif // GRAPHICSLAYOUTS_H diff --git a/src/declarative/imports/widgets/graphicswidgets.cpp b/src/declarative/imports/widgets/graphicswidgets.cpp deleted file mode 100644 index 062e516..0000000 --- a/src/declarative/imports/widgets/graphicswidgets.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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$ -** -****************************************************************************/ diff --git a/src/declarative/imports/widgets/graphicswidgets_p.h b/src/declarative/imports/widgets/graphicswidgets_p.h deleted file mode 100644 index 2c2b707..0000000 --- a/src/declarative/imports/widgets/graphicswidgets_p.h +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 GRAPHICSWIDGETS_H -#define GRAPHICSWIDGETS_H - -#include - -#include -#include -#include -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QGraphicsView) -QML_DECLARE_TYPE_HASMETATYPE(QGraphicsScene) -QML_DECLARE_TYPE(QGraphicsWidget) -QML_DECLARE_TYPE(QGraphicsObject) -QML_DECLARE_INTERFACE_HASMETATYPE(QGraphicsItem) - -QT_END_HEADER - -#endif // GRAPHICSWIDGETS_H diff --git a/src/declarative/imports/widgets/widgets.cpp b/src/declarative/imports/widgets/widgets.cpp deleted file mode 100644 index ec21cc4..0000000 --- a/src/declarative/imports/widgets/widgets.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 -#include - -#include "graphicslayouts_p.h" -#include "graphicswidgets_p.h" - -QT_BEGIN_NAMESPACE - -class QGraphicsViewDeclarativeUI : public QObject -{ - Q_OBJECT - - Q_PROPERTY(QGraphicsScene *scene READ scene WRITE setScene) - Q_CLASSINFO("DefaultProperty", "scene") -public: - QGraphicsViewDeclarativeUI(QObject *other) : QObject(other) {} - - QGraphicsScene *scene() const { return static_cast(parent())->scene(); } - void setScene(QGraphicsScene *scene) - { - static_cast(parent())->setScene(scene); - } -}; - -class QGraphicsSceneDeclarativeUI : public QObject -{ - Q_OBJECT - - Q_PROPERTY(QDeclarativeListProperty children READ children) - Q_CLASSINFO("DefaultProperty", "children") -public: - QGraphicsSceneDeclarativeUI(QObject *other) : QObject(other) {} - - QDeclarativeListProperty children() { return QDeclarativeListProperty(this->parent(), 0, children_append); } - -private: - static void children_append(QDeclarativeListProperty *prop, QObject *o) { - if (QGraphicsObject *go = qobject_cast(o)) - static_cast(prop->object)->addItem(go); - } -}; - -class QGraphicsWidgetDeclarativeUI : public QObject -{ - Q_OBJECT - - Q_PROPERTY(QDeclarativeListProperty children READ children) - Q_PROPERTY(QGraphicsLayout *layout READ layout WRITE setLayout) - Q_CLASSINFO("DefaultProperty", "children") -public: - QGraphicsWidgetDeclarativeUI(QObject *other) : QObject(other) {} - - QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append); } - - QGraphicsLayout *layout() const { return static_cast(parent())->layout(); } - void setLayout(QGraphicsLayout *lo) - { - static_cast(parent())->setLayout(lo); - } - -private: - void setItemParent(QGraphicsItem *wid) - { - wid->setParentItem(static_cast(parent())); - } - - static void children_append(QDeclarativeListProperty *prop, QGraphicsItem *i) { - static_cast(prop->object)->setItemParent(i); - } -}; - -class QWidgetsQmlModule : public QDeclarativeExtensionPlugin -{ - Q_OBJECT -public: - virtual void registerTypes(const char *uri) - { - Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.widgets")); - - QML_REGISTER_INTERFACE(QGraphicsLayoutItem); - QML_REGISTER_INTERFACE(QGraphicsLayout); - qmlRegisterType(uri,4,6,"QGraphicsLinearLayoutStretchItem"); - qmlRegisterType(uri,4,6,"QGraphicsLinearLayout"); - qmlRegisterType(uri,4,6,"QGraphicsGridLayout"); - qmlRegisterExtendedType(uri,4,6,"QGraphicsView"); - qmlRegisterExtendedType(uri,4,6,"QGraphicsScene"); - qmlRegisterExtendedType(uri,4,6,"QGraphicsWidget"); - QML_REGISTER_INTERFACE(QGraphicsItem); - } -}; - -QT_END_NAMESPACE - -#include "widgets.moc" - -Q_EXPORT_PLUGIN2(qtwidgetsqmlmodule, QT_PREPEND_NAMESPACE(QWidgetsQmlModule)); - diff --git a/src/declarative/imports/widgets/widgets.pro b/src/declarative/imports/widgets/widgets.pro deleted file mode 100644 index 230d398..0000000 --- a/src/declarative/imports/widgets/widgets.pro +++ /dev/null @@ -1,20 +0,0 @@ -TARGET = widgets -include(../qimportbase.pri) - -QT += declarative - -SOURCES += \ - graphicslayouts.cpp \ - widgets.cpp - -HEADERS += \ - graphicswidgets_p.h \ - graphicslayouts_p.h - -QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/Qt/widgets -target.path = $$[QT_INSTALL_IMPORTS]/Qt/widgets - -qmldir.files += $$QT_BUILD_TREE/imports/Qt/widgets/qmldir -qmldir.path += $$[QT_INSTALL_IMPORTS]/Qt/widgets - -INSTALLS += target qmldir diff --git a/src/declarative/libdeclarative.pro b/src/declarative/libdeclarative.pro deleted file mode 100644 index 4287e25..0000000 --- a/src/declarative/libdeclarative.pro +++ /dev/null @@ -1,29 +0,0 @@ -TARGET = QtDeclarative -QPRO_PWD = $$PWD -QT = core gui xml script network -contains(QT_CONFIG, svg): QT += svg -contains(QT_CONFIG, opengl): QT += opengl -DEFINES += QT_BUILD_DECLARATIVE_LIB QT_NO_URL_CAST_FROM_STRING -win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x66000000 -solaris-cc*:QMAKE_CXXFLAGS_RELEASE -= -O2 - -unix:QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui QtXml - -exists("qdeclarative_enable_gcov") { - QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage -fno-elide-constructors - LIBS += -lgcov -} - -include(../qbase.pri) - -#INCLUDEPATH -= $$QMAKE_INCDIR_QT/$$TARGET -#DESTDIR=. - -#modules -include(3rdparty/3rdparty.pri) -include(util/util.pri) -include(graphicsitems/graphicsitems.pri) -include(qml/qml.pri) -include(debugger/debugger.pri) - -symbian:TARGET.UID3=0x2001E623 diff --git a/src/imports/imports.pro b/src/imports/imports.pro new file mode 100644 index 0000000..8b47043 --- /dev/null +++ b/src/imports/imports.pro @@ -0,0 +1,7 @@ +TEMPLATE = subdirs + +SUBDIRS += widgets + +contains(QT_CONFIG, webkit): SUBDIRS += webkit +contains(QT_CONFIG, multimedia): SUBDIRS += multimedia + diff --git a/src/imports/multimedia/multimedia.cpp b/src/imports/multimedia/multimedia.cpp new file mode 100644 index 0000000..8becbf3 --- /dev/null +++ b/src/imports/multimedia/multimedia.cpp @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 +#include +#include + +QT_BEGIN_NAMESPACE + +class QMultimediaQmlModule : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + virtual void registerTypes(const char *uri) + { + QtMultimedia::qRegisterDeclarativeElements(uri); + } +}; + +QT_END_NAMESPACE + +#include "multimedia.moc" + +Q_EXPORT_PLUGIN2(qmultimediaqmlmodule, QT_PREPEND_NAMESPACE(QMultimediaQmlModule)); + diff --git a/src/imports/multimedia/multimedia.pro b/src/imports/multimedia/multimedia.pro new file mode 100644 index 0000000..ad2ce1b --- /dev/null +++ b/src/imports/multimedia/multimedia.pro @@ -0,0 +1,15 @@ +TARGET = multimedia +TARGETPATH = $$[QT_INSTALL_IMPORTS]/Qt/multimedia +include(../qimportbase.pri) + +QT += multimedia declarative + +SOURCES += multimedia.cpp + +QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/Qt/multimedia +target.path = $$TARGETPATH + +qmldir.files += $$QT_BUILD_TREE/imports/Qt/multimedia/qmldir +qmldir.path += $$TARGETPATH + +INSTALLS += target qmldir diff --git a/src/imports/multimedia/qmldir b/src/imports/multimedia/qmldir new file mode 100644 index 0000000..0e6f656 --- /dev/null +++ b/src/imports/multimedia/qmldir @@ -0,0 +1 @@ +plugin multimedia diff --git a/src/imports/qimportbase.pri b/src/imports/qimportbase.pri new file mode 100644 index 0000000..363dd88 --- /dev/null +++ b/src/imports/qimportbase.pri @@ -0,0 +1,33 @@ +TEMPLATE = lib +CONFIG += qt plugin + +win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release + +isEmpty(TARGETPATH) { + error("qimportbase.pri: You must provide a TARGETPATH!") +} +isEmpty(TARGET) { + error("qimportbase.pri: You must provide a TARGET!") +} + +QMLDIRFILE = $${_PRO_FILE_PWD_}/qmldir +copy2build.input = QMLDIRFILE +copy2build.output = $$TARGETPATH/qmldir +isEmpty(vcproj):copy2build.variable_out = PRE_TARGETDEPS +copy2build.commands = $$QMAKE_COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT} +copy2build.name = COPY ${QMAKE_FILE_IN} +copy2build.CONFIG += no_link +QMAKE_EXTRA_COMPILERS += copy2build + +TARGET = $$qtLibraryTarget($$TARGET) +contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols + +include(../../qt_targets.pri) + +wince*:LIBS += $$QMAKE_LIBS_GUI + +symbian: { + TARGET.EPOCALLOWDLLDATA=1 + TARGET.CAPABILITY = All -Tcb + load(armcc_warnings) +} diff --git a/src/imports/webkit/plugin.cpp b/src/imports/webkit/plugin.cpp new file mode 100644 index 0000000..2f6205d --- /dev/null +++ b/src/imports/webkit/plugin.cpp @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** 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 plugins 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 +#include + +#include "qdeclarativewebview_p.h" +#include "qdeclarativewebview_p_p.h" + +QT_BEGIN_NAMESPACE + +class WebKitQmlPlugin : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + virtual void registerTypes(const char *uri) + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("org.webkit")); + qmlRegisterType(uri,1,0,"WebView"); + } +}; + +QT_END_NAMESPACE + +#include "plugin.moc" + +Q_EXPORT_PLUGIN2(webkitqmlplugin, QT_PREPEND_NAMESPACE(WebKitQmlPlugin)); + diff --git a/src/imports/webkit/qdeclarativewebview.cpp b/src/imports/webkit/qdeclarativewebview.cpp new file mode 100644 index 0000000..733ac86 --- /dev/null +++ b/src/imports/webkit/qdeclarativewebview.cpp @@ -0,0 +1,1340 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 "qdeclarativewebview_p.h" +#include "qdeclarativewebview_p_p.h" + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +static const int MAX_DOUBLECLICK_TIME=500; // XXX need better gesture system + +class QDeclarativeWebViewPrivate : public QDeclarativePaintedItemPrivate +{ + Q_DECLARE_PUBLIC(QDeclarativeWebView) + +public: + QDeclarativeWebViewPrivate() + : QDeclarativePaintedItemPrivate(), page(0), preferredwidth(0), preferredheight(0), + progress(1.0), status(QDeclarativeWebView::Null), pending(PendingNone), + newWindowComponent(0), newWindowParent(0), + pressTime(400), + rendering(true) + { + } + + QUrl url; // page url might be different if it has not loaded yet + QWebPage *page; + + int preferredwidth, preferredheight; + qreal progress; + QDeclarativeWebView::Status status; + QString statusText; + enum { PendingNone, PendingUrl, PendingHtml, PendingContent } pending; + QUrl pending_url; + QString pending_string; + QByteArray pending_data; + mutable QDeclarativeWebSettings settings; + QDeclarativeComponent *newWindowComponent; + QDeclarativeItem *newWindowParent; + + QBasicTimer pressTimer; + QPoint pressPoint; + int pressTime; // milliseconds before it's a "hold" + + + static void windowObjects_append(QDeclarativeListProperty *prop, QObject *o) { + static_cast(prop->data)->windowObjects.append(o); + static_cast(prop->data)->updateWindowObjects(); + } + + void updateWindowObjects(); + QObjectList windowObjects; + + bool rendering; +}; + +/*! + \qmlclass WebView QDeclarativeWebView + \since 4.7 + \brief The WebView item allows you to add web content to a canvas. + \inherits Item + + A WebView renders web content based on a URL. + + If the width and height of the item is not set, they will + dynamically adjust to a size appropriate for the content. + This width may be large for typical online web pages. + + If the preferredWidth is set, the width will be this amount or larger, + usually laying out the web content to fit the preferredWidth. + + \qml + import org.webkit 1.0 + + WebView { + url: "http://www.nokia.com" + width: 490 + height: 400 + scale: 0.5 + smooth: false + smoothCache: true + } + \endqml + + \image webview.png + + The item includes no scrolling, scaling, + toolbars, etc., those must be implemented around WebView. See the WebBrowser example + for a demonstration of this. +*/ + +/*! + \internal + \class QDeclarativeWebView + \brief The QDeclarativeWebView class allows you to add web content to a QDeclarativeView. + + A WebView renders web content base on a URL. + + \image webview.png + + The item includes no scrolling, scaling, + toolbars, etc., those must be implemented around WebView. See the WebBrowser example + for a demonstration of this. + + A QDeclarativeWebView object can be instantiated in Qml using the tag \l WebView. +*/ + +QDeclarativeWebView::QDeclarativeWebView(QDeclarativeItem *parent) + : QDeclarativePaintedItem(*(new QDeclarativeWebViewPrivate), parent) +{ + init(); +} + +QDeclarativeWebView::~QDeclarativeWebView() +{ + Q_D(QDeclarativeWebView); + delete d->page; +} + +void QDeclarativeWebView::init() +{ + Q_D(QDeclarativeWebView); + + QWebSettings::enablePersistentStorage(); + + setAcceptHoverEvents(true); + setAcceptedMouseButtons(Qt::LeftButton); + setFlag(QGraphicsItem::ItemHasNoContents, false); + + d->page = 0; +} + +void QDeclarativeWebView::componentComplete() +{ + QDeclarativePaintedItem::componentComplete(); + Q_D(QDeclarativeWebView); + switch (d->pending) { + case QDeclarativeWebViewPrivate::PendingUrl: + setUrl(d->pending_url); + break; + case QDeclarativeWebViewPrivate::PendingHtml: + setHtml(d->pending_string, d->pending_url); + break; + case QDeclarativeWebViewPrivate::PendingContent: + setContent(d->pending_data, d->pending_string, d->pending_url); + break; + default: + break; + } + d->pending = QDeclarativeWebViewPrivate::PendingNone; + d->updateWindowObjects(); +} + +QDeclarativeWebView::Status QDeclarativeWebView::status() const +{ + Q_D(const QDeclarativeWebView); + return d->status; +} + + +/*! + \qmlproperty real WebView::progress + This property holds the progress of loading the current URL, from 0 to 1. + + If you just want to know when progress gets to 1, use + WebView::onLoadFinished() or WebView::onLoadFailed() instead. +*/ +qreal QDeclarativeWebView::progress() const +{ + Q_D(const QDeclarativeWebView); + return d->progress; +} + +void QDeclarativeWebView::doLoadStarted() +{ + Q_D(QDeclarativeWebView); + + if (!d->url.isEmpty()) { + d->status = Loading; + emit statusChanged(d->status); + } + emit loadStarted(); +} + +void QDeclarativeWebView::doLoadProgress(int p) +{ + Q_D(QDeclarativeWebView); + if (d->progress == p/100.0) + return; + d->progress = p/100.0; + emit progressChanged(); +} + +void QDeclarativeWebView::pageUrlChanged() +{ + Q_D(QDeclarativeWebView); + + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + expandToWebPage(); + + if ((d->url.isEmpty() && page()->mainFrame()->url() != QUrl(QLatin1String("about:blank"))) + || (d->url != page()->mainFrame()->url() && !page()->mainFrame()->url().isEmpty())) + { + d->url = page()->mainFrame()->url(); + if (d->url == QUrl(QLatin1String("about:blank"))) + d->url = QUrl(); + emit urlChanged(); + } +} + +void QDeclarativeWebView::doLoadFinished(bool ok) +{ + Q_D(QDeclarativeWebView); + + if (title().isEmpty()) + pageUrlChanged(); // XXX bug 232556 - pages with no title never get urlChanged() + + if (ok) { + d->status = d->url.isEmpty() ? Null : Ready; + emit loadFinished(); + } else { + d->status = Error; + emit loadFailed(); + } + emit statusChanged(d->status); +} + +/*! + \qmlproperty url WebView::url + This property holds the URL to the page displayed in this item. It can be set, + but also can change spontaneously (eg. because of network redirection). + + If the url is empty, the page is blank. + + The url is always absolute (QML will resolve relative URL strings in the context + of the containing QML document). +*/ +QUrl QDeclarativeWebView::url() const +{ + Q_D(const QDeclarativeWebView); + return d->url; +} + +void QDeclarativeWebView::setUrl(const QUrl &url) +{ + Q_D(QDeclarativeWebView); + if (url == d->url) + return; + + if (isComponentComplete()) { + d->url = url; + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + QUrl seturl = url; + if (seturl.isEmpty()) + seturl = QUrl(QLatin1String("about:blank")); + + Q_ASSERT(!seturl.isRelative()); + + page()->mainFrame()->load(seturl); + + emit urlChanged(); + } else { + d->pending = d->PendingUrl; + d->pending_url = url; + } +} + +/*! + \qmlproperty int WebView::preferredWidth + This property holds the ideal width for displaying the current URL. +*/ +int QDeclarativeWebView::preferredWidth() const +{ + Q_D(const QDeclarativeWebView); + return d->preferredwidth; +} + +void QDeclarativeWebView::setPreferredWidth(int iw) +{ + Q_D(QDeclarativeWebView); + if (d->preferredwidth == iw) return; + d->preferredwidth = iw; + //expandToWebPage(); + emit preferredWidthChanged(); +} + +/*! + \qmlproperty int WebView::preferredHeight + This property holds the ideal height for displaying the current URL. + This only affects the area zoomed by heuristicZoom(). +*/ +int QDeclarativeWebView::preferredHeight() const +{ + Q_D(const QDeclarativeWebView); + return d->preferredheight; +} +void QDeclarativeWebView::setPreferredHeight(int ih) +{ + Q_D(QDeclarativeWebView); + if (d->preferredheight == ih) return; + d->preferredheight = ih; + emit preferredHeightChanged(); +} + +/*! + \qmlmethod bool WebView::evaluateJavaScript(string) + + Evaluates the \a scriptSource JavaScript inside the context of the + main web frame, and returns the result of the last executed statement. + + Note that this JavaScript does \e not have any access to QML objects + except as made available as windowObjects. +*/ +QVariant QDeclarativeWebView::evaluateJavaScript(const QString &scriptSource) +{ + return this->page()->mainFrame()->evaluateJavaScript(scriptSource); +} + +void QDeclarativeWebView::focusChanged(bool hasFocus) +{ + QFocusEvent e(hasFocus ? QEvent::FocusIn : QEvent::FocusOut); + page()->event(&e); + QDeclarativeItem::focusChanged(hasFocus); +} + +void QDeclarativeWebView::initialLayout() +{ + // nothing useful to do at this point +} + +void QDeclarativeWebView::noteContentsSizeChanged(const QSize&) +{ + expandToWebPage(); +} + +void QDeclarativeWebView::expandToWebPage() +{ + Q_D(QDeclarativeWebView); + QSize cs = page()->mainFrame()->contentsSize(); + if (cs.width() < d->preferredwidth) + cs.setWidth(d->preferredwidth); + if (cs.height() < d->preferredheight) + cs.setHeight(d->preferredheight); + if (widthValid()) + cs.setWidth(width()); + if (heightValid()) + cs.setHeight(height()); + if (cs != page()->viewportSize()) { + page()->setViewportSize(cs); + } + if (cs != contentsSize()) + setContentsSize(cs); +} + +void QDeclarativeWebView::geometryChanged(const QRectF &newGeometry, + const QRectF &oldGeometry) +{ + if (newGeometry.size() != oldGeometry.size()) + expandToWebPage(); + QDeclarativePaintedItem::geometryChanged(newGeometry, oldGeometry); +} + +void QDeclarativeWebView::paintPage(const QRect& r) +{ + dirtyCache(r); + update(); +} + +/*! + \qmlproperty list WebView::javaScriptWindowObjects + + This property is a list of object that are available from within + the webview's JavaScript context. + + The \a object will be inserted as a child of the frame's window + object, under the name given by the attached property \c WebView.windowObjectName. + + \qml + WebView { + javaScriptWindowObjects: Object { + WebView.windowObjectName: "coordinates" + } + } + \endqml + + Properties of the object will be exposed as JavaScript properties and slots as + JavaScript methods. + + If Javascript is not enabled for this page, then this property does nothing. +*/ +QDeclarativeListProperty QDeclarativeWebView::javaScriptWindowObjects() +{ + Q_D(QDeclarativeWebView); + return QDeclarativeListProperty(this, d, &QDeclarativeWebViewPrivate::windowObjects_append); +} + +QDeclarativeWebViewAttached *QDeclarativeWebView::qmlAttachedProperties(QObject *o) +{ + return new QDeclarativeWebViewAttached(o); +} + +void QDeclarativeWebViewPrivate::updateWindowObjects() +{ + Q_Q(QDeclarativeWebView); + if (!q->isComponentComplete() || !page) + return; + + for (int ii = 0; ii < windowObjects.count(); ++ii) { + QObject *object = windowObjects.at(ii); + QDeclarativeWebViewAttached *attached = static_cast(qmlAttachedPropertiesObject(object)); + if (attached && !attached->windowObjectName().isEmpty()) { + page->mainFrame()->addToJavaScriptWindowObject(attached->windowObjectName(), object); + } + } +} + +bool QDeclarativeWebView::renderingEnabled() const +{ + Q_D(const QDeclarativeWebView); + return d->rendering; +} + +void QDeclarativeWebView::setRenderingEnabled(bool enabled) +{ + Q_D(QDeclarativeWebView); + if (d->rendering == enabled) + return; + d->rendering = enabled; + emit renderingEnabledChanged(); + + setCacheFrozen(!enabled); + if (enabled) + clearCache(); +} + + +void QDeclarativeWebView::drawContents(QPainter *p, const QRect &r) +{ + Q_D(QDeclarativeWebView); + if (d->rendering) + page()->mainFrame()->render(p,r); +} + +QMouseEvent *QDeclarativeWebView::sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *e) +{ + QEvent::Type t; + switch(e->type()) { + default: + case QEvent::GraphicsSceneMousePress: + t = QEvent::MouseButtonPress; + break; + case QEvent::GraphicsSceneMouseRelease: + t = QEvent::MouseButtonRelease; + break; + case QEvent::GraphicsSceneMouseMove: + t = QEvent::MouseMove; + break; + case QGraphicsSceneEvent::GraphicsSceneMouseDoubleClick: + t = QEvent::MouseButtonDblClick; + break; + } + + QMouseEvent *me = new QMouseEvent(t, (e->pos()/contentsScale()).toPoint(), e->button(), e->buttons(), 0); + return me; +} + +QMouseEvent *QDeclarativeWebView::sceneHoverMoveEventToMouseEvent(QGraphicsSceneHoverEvent *e) +{ + QEvent::Type t = QEvent::MouseMove; + + QMouseEvent *me = new QMouseEvent(t, (e->pos()/contentsScale()).toPoint(), Qt::NoButton, Qt::NoButton, 0); + + return me; +} + + +/*! + \qmlsignal WebView::onDoubleClick(clickx,clicky) + + The WebView does not pass double-click events to the web engine, but rather + emits this signals. +*/ + +void QDeclarativeWebView::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) +{ + QMouseEvent *me = sceneMouseEventToMouseEvent(event); + emit doubleClick(me->x(),me->y()); + delete me; +} + +/*! + \qmlmethod bool WebView::heuristicZoom(clickX,clickY,maxzoom) + + Finds a zoom that: + \list + \i shows a whole item + \i includes (\a clickX, \a clickY) + \i fits into the preferredWidth and preferredHeight + \i zooms by no more than \a maxzoom + \i is more than 10% above the current zoom + \endlist + + If such a zoom exists, emits zoomTo(zoom,centerX,centerY) and returns true; otherwise, + no signal is emitted and returns false. +*/ +bool QDeclarativeWebView::heuristicZoom(int clickX, int clickY, qreal maxzoom) +{ + Q_D(QDeclarativeWebView); + if (contentsScale() >= maxzoom/zoomFactor()) + return false; + qreal ozf = contentsScale(); + QRect showarea = elementAreaAt(clickX, clickY, d->preferredwidth/maxzoom, d->preferredheight/maxzoom); + qreal z = qMin(qreal(d->preferredwidth)/showarea.width(),qreal(d->preferredheight)/showarea.height()); + if (z > maxzoom/zoomFactor()) + z = maxzoom/zoomFactor(); + if (z/ozf > 1.2) { + QRectF r(showarea.left()*z, showarea.top()*z, showarea.width()*z, showarea.height()*z); + emit zoomTo(z,r.x()+r.width()/2, r.y()+r.height()/2); + return true; + } else { + return false; + } +} + +/*! + \qmlproperty int WebView::pressGrabTime + + The number of milliseconds the user must press before the WebView + starts passing move events through to the web engine (rather than + letting other QML elements such as a Flickable take them). + + Defaults to 400ms. Set to 0 to always grab and pass move events to + the web engine. +*/ +int QDeclarativeWebView::pressGrabTime() const +{ + Q_D(const QDeclarativeWebView); + return d->pressTime; +} + +void QDeclarativeWebView::setPressGrabTime(int ms) +{ + Q_D(QDeclarativeWebView); + if (d->pressTime == ms) + return; + d->pressTime = ms; + emit pressGrabTimeChanged(); +} + +void QDeclarativeWebView::mousePressEvent(QGraphicsSceneMouseEvent *event) +{ + Q_D(QDeclarativeWebView); + + setFocus (true); + QMouseEvent *me = sceneMouseEventToMouseEvent(event); + + d->pressPoint = me->pos(); + if (d->pressTime) { + d->pressTimer.start(d->pressTime,this); + setKeepMouseGrab(false); + } else { + grabMouse(); + setKeepMouseGrab(true); + } + + page()->event(me); + event->setAccepted( +/* + It is not correct to send the press event upwards, if it is not accepted by WebKit + e.g. push button does not work, if done so as QGraphicsScene will not send the release event at all to WebKit + Might be a bug in WebKit, though + */ +#if 1 //QT_VERSION <= 0x040500 // XXX see bug 230835 + true +#else + me->isAccepted() +#endif + ); + delete me; + if (!event->isAccepted()) { + QDeclarativePaintedItem::mousePressEvent(event); + } +} + +void QDeclarativeWebView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +{ + Q_D(QDeclarativeWebView); + + QMouseEvent *me = sceneMouseEventToMouseEvent(event); + page()->event(me); + d->pressTimer.stop(); + event->setAccepted( +/* + It is not correct to send the press event upwards, if it is not accepted by WebKit + e.g. push button does not work, if done so as QGraphicsScene will not send all the events to WebKit + */ +#if 1 //QT_VERSION <= 0x040500 // XXX see bug 230835 + true +#else + me->isAccepted() +#endif + ); + delete me; + if (!event->isAccepted()) { + QDeclarativePaintedItem::mouseReleaseEvent(event); + } + setKeepMouseGrab(false); + ungrabMouse(); +} + +void QDeclarativeWebView::timerEvent(QTimerEvent *event) +{ + Q_D(QDeclarativeWebView); + if (event->timerId() == d->pressTimer.timerId()) { + d->pressTimer.stop(); + grabMouse(); + setKeepMouseGrab(true); + } +} + +void QDeclarativeWebView::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +{ + Q_D(QDeclarativeWebView); + + QMouseEvent *me = sceneMouseEventToMouseEvent(event); + if (d->pressTimer.isActive()) { + if ((me->pos() - d->pressPoint).manhattanLength() > QApplication::startDragDistance()) { + d->pressTimer.stop(); + } + } + if (keepMouseGrab()) { + page()->event(me); + event->setAccepted( +/* + It is not correct to send the press event upwards, if it is not accepted by WebKit + e.g. push button does not work, if done so as QGraphicsScene will not send the release event at all to WebKit + Might be a bug in WebKit, though + */ +#if 1 // QT_VERSION <= 0x040500 // XXX see bug 230835 + true +#else + me->isAccepted() +#endif + ); + } + delete me; + if (!event->isAccepted()) + QDeclarativePaintedItem::mouseMoveEvent(event); + +} +void QDeclarativeWebView::hoverMoveEvent (QGraphicsSceneHoverEvent * event) +{ + QMouseEvent *me = sceneHoverMoveEventToMouseEvent(event); + page()->event(me); + event->setAccepted( +#if QT_VERSION <= 0x040500 // XXX see bug 230835 + true +#else + me->isAccepted() +#endif + ); + delete me; + if (!event->isAccepted()) + QDeclarativePaintedItem::hoverMoveEvent(event); +} + +void QDeclarativeWebView::keyPressEvent(QKeyEvent* event) +{ + page()->event(event); + if (!event->isAccepted()) + QDeclarativePaintedItem::keyPressEvent(event); +} + +void QDeclarativeWebView::keyReleaseEvent(QKeyEvent* event) +{ + page()->event(event); + if (!event->isAccepted()) + QDeclarativePaintedItem::keyReleaseEvent(event); +} + +bool QDeclarativeWebView::sceneEvent(QEvent *event) +{ + if (event->type() == QEvent::KeyPress) { + QKeyEvent *k = static_cast(event); + if (k->key() == Qt::Key_Tab || k->key() == Qt::Key_Backtab) { + if (!(k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) { //### Add MetaModifier? + page()->event(event); + if (event->isAccepted()) + return true; + } + } + } + return QDeclarativePaintedItem::sceneEvent(event); +} + + +/*! + \qmlproperty action WebView::back + This property holds the action for causing the previous URL in the history to be displayed. +*/ +QAction *QDeclarativeWebView::backAction() const +{ + return page()->action(QWebPage::Back); +} + +/*! + \qmlproperty action WebView::forward + This property holds the action for causing the next URL in the history to be displayed. +*/ +QAction *QDeclarativeWebView::forwardAction() const +{ + return page()->action(QWebPage::Forward); +} + +/*! + \qmlproperty action WebView::reload + This property holds the action for reloading with the current URL +*/ +QAction *QDeclarativeWebView::reloadAction() const +{ + return page()->action(QWebPage::Reload); +} + +/*! + \qmlproperty action WebView::stop + This property holds the action for stopping loading with the current URL +*/ +QAction *QDeclarativeWebView::stopAction() const +{ + return page()->action(QWebPage::Stop); +} + +/*! + \qmlproperty real WebView::title + This property holds the title of the web page currently viewed + + By default, this property contains an empty string. +*/ +QString QDeclarativeWebView::title() const +{ + return page()->mainFrame()->title(); +} + + + +/*! + \qmlproperty pixmap WebView::icon + This property holds the icon associated with the web page currently viewed +*/ +QPixmap QDeclarativeWebView::icon() const +{ + return page()->mainFrame()->icon().pixmap(QSize(256,256)); +} + + +/*! + \qmlproperty real WebView::zoomFactor + This property holds the multiplier used to scale the contents of a Web page. +*/ +void QDeclarativeWebView::setZoomFactor(qreal factor) +{ + Q_D(QDeclarativeWebView); + if (factor == page()->mainFrame()->zoomFactor()) + return; + + page()->mainFrame()->setZoomFactor(factor); + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth*factor : width()*factor, + d->preferredheight>0 ? d->preferredheight*factor : height()*factor)); + expandToWebPage(); + + emit zoomFactorChanged(); +} + +qreal QDeclarativeWebView::zoomFactor() const +{ + return page()->mainFrame()->zoomFactor(); +} + +/*! + \qmlproperty string WebView::statusText + + This property is the current status suggested by the current web page. In a web browser, + such status is often shown in some kind of status bar. +*/ +void QDeclarativeWebView::setStatusText(const QString& s) +{ + Q_D(QDeclarativeWebView); + d->statusText = s; + emit statusTextChanged(); +} + +void QDeclarativeWebView::windowObjectCleared() +{ + Q_D(QDeclarativeWebView); + d->updateWindowObjects(); +} + +QString QDeclarativeWebView::statusText() const +{ + Q_D(const QDeclarativeWebView); + return d->statusText; +} + +QWebPage *QDeclarativeWebView::page() const +{ + Q_D(const QDeclarativeWebView); + + if (!d->page) { + QDeclarativeWebView *self = const_cast(this); + QWebPage *wp = new QDeclarativeWebPage(self); + + // QML items don't default to having a background, + // even though most we pages will set one anyway. + QPalette pal = QApplication::palette(); + pal.setBrush(QPalette::Base, QColor::fromRgbF(0, 0, 0, 0)); + wp->setPalette(pal); + + wp->setNetworkAccessManager(qmlEngine(this)->networkAccessManager()); + + self->setPage(wp); + + return wp; + } + + return d->page; +} + + +// The QObject interface to settings(). +/*! + \qmlproperty string WebView::settings.standardFontFamily + \qmlproperty string WebView::settings.fixedFontFamily + \qmlproperty string WebView::settings.serifFontFamily + \qmlproperty string WebView::settings.sansSerifFontFamily + \qmlproperty string WebView::settings.cursiveFontFamily + \qmlproperty string WebView::settings.fantasyFontFamily + + \qmlproperty int WebView::settings.minimumFontSize + \qmlproperty int WebView::settings.minimumLogicalFontSize + \qmlproperty int WebView::settings.defaultFontSize + \qmlproperty int WebView::settings.defaultFixedFontSize + + \qmlproperty bool WebView::settings.autoLoadImages + \qmlproperty bool WebView::settings.javascriptEnabled + \qmlproperty bool WebView::settings.javaEnabled + \qmlproperty bool WebView::settings.pluginsEnabled + \qmlproperty bool WebView::settings.privateBrowsingEnabled + \qmlproperty bool WebView::settings.javascriptCanOpenWindows + \qmlproperty bool WebView::settings.javascriptCanAccessClipboard + \qmlproperty bool WebView::settings.developerExtrasEnabled + \qmlproperty bool WebView::settings.linksIncludedInFocusChain + \qmlproperty bool WebView::settings.zoomTextOnly + \qmlproperty bool WebView::settings.printElementBackgrounds + \qmlproperty bool WebView::settings.offlineStorageDatabaseEnabled + \qmlproperty bool WebView::settings.offlineWebApplicationCacheEnabled + \qmlproperty bool WebView::settings.localStorageDatabaseEnabled + \qmlproperty bool WebView::settings.localContentCanAccessRemoteUrls + + These properties give access to the settings controlling the web view. + + See QWebSettings for details of these properties. + + \qml + WebView { + settings.pluginsEnabled: true + settings.standardFontFamily: "Arial" + ... + } + \endqml +*/ +QObject *QDeclarativeWebView::settingsObject() const +{ + Q_D(const QDeclarativeWebView); + d->settings.s = page()->settings(); + return &d->settings; +} + +void QDeclarativeWebView::setPage(QWebPage *page) +{ + Q_D(QDeclarativeWebView); + if (d->page == page) + return; + if (d->page) { + if (d->page->parent() == this) { + delete d->page; + } else { + d->page->disconnect(this); + } + } + d->page = page; + d->page->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + d->page->mainFrame()->setScrollBarPolicy(Qt::Horizontal,Qt::ScrollBarAlwaysOff); + d->page->mainFrame()->setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff); + connect(d->page,SIGNAL(repaintRequested(QRect)),this,SLOT(paintPage(QRect))); + connect(d->page->mainFrame(),SIGNAL(urlChanged(QUrl)),this,SLOT(pageUrlChanged())); + connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(titleChanged(QString))); + connect(d->page->mainFrame(), SIGNAL(titleChanged(QString)), this, SIGNAL(iconChanged())); + connect(d->page->mainFrame(), SIGNAL(iconChanged()), this, SIGNAL(iconChanged())); + connect(d->page->mainFrame(), SIGNAL(contentsSizeChanged(QSize)), this, SLOT(noteContentsSizeChanged(QSize))); + connect(d->page->mainFrame(), SIGNAL(initialLayoutCompleted()), this, SLOT(initialLayout())); + + connect(d->page,SIGNAL(loadStarted()),this,SLOT(doLoadStarted())); + connect(d->page,SIGNAL(loadProgress(int)),this,SLOT(doLoadProgress(int))); + connect(d->page,SIGNAL(loadFinished(bool)),this,SLOT(doLoadFinished(bool))); + connect(d->page,SIGNAL(statusBarMessage(QString)),this,SLOT(setStatusText(QString))); + + connect(d->page->mainFrame(),SIGNAL(javaScriptWindowObjectCleared()),this,SLOT(windowObjectCleared())); +} + +/*! + \qmlsignal WebView::onLoadStarted() + + This handler is called when the web engine begins loading + a page. Later, WebView::onLoadFinished() or WebView::onLoadFailed() + will be emitted. +*/ + +/*! + \qmlsignal WebView::onLoadFinished() + + This handler is called when the web engine \e successfully + finishes loading a page, including any component content + (WebView::onLoadFailed() will be emitted otherwise). + + \sa progress +*/ + +/*! + \qmlsignal WebView::onLoadFailed() + + This handler is called when the web engine fails loading + a page or any component content + (WebView::onLoadFinished() will be emitted on success). +*/ + +void QDeclarativeWebView::load(const QNetworkRequest &request, + QNetworkAccessManager::Operation operation, + const QByteArray &body) +{ + page()->mainFrame()->load(request, operation, body); +} + +QString QDeclarativeWebView::html() const +{ + return page()->mainFrame()->toHtml(); +} + +/*! + \qmlproperty string WebView::html + This property holds HTML text set directly + + The html property can be set as a string. + + \qml + WebView { + html: "

This is HTML." + } + \endqml +*/ +void QDeclarativeWebView::setHtml(const QString &html, const QUrl &baseUrl) +{ + Q_D(QDeclarativeWebView); + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + if (isComponentComplete()) + page()->mainFrame()->setHtml(html, baseUrl); + else { + d->pending = d->PendingHtml; + d->pending_url = baseUrl; + d->pending_string = html; + } + emit htmlChanged(); +} + +void QDeclarativeWebView::setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl) +{ + Q_D(QDeclarativeWebView); + page()->setViewportSize(QSize( + d->preferredwidth>0 ? d->preferredwidth : width(), + d->preferredheight>0 ? d->preferredheight : height())); + + if (isComponentComplete()) + page()->mainFrame()->setContent(data,mimeType,qmlContext(this)->resolvedUrl(baseUrl)); + else { + d->pending = d->PendingContent; + d->pending_url = baseUrl; + d->pending_string = mimeType; + d->pending_data = data; + } +} + +QWebHistory *QDeclarativeWebView::history() const +{ + return page()->history(); +} + +QWebSettings *QDeclarativeWebView::settings() const +{ + return page()->settings(); +} + +QDeclarativeWebView *QDeclarativeWebView::createWindow(QWebPage::WebWindowType type) +{ + Q_D(QDeclarativeWebView); + switch (type) { + case QWebPage::WebBrowserWindow: { + if (!d->newWindowComponent && d->newWindowParent) + qWarning("WebView::newWindowComponent not set - WebView::newWindowParent ignored"); + else if (d->newWindowComponent && !d->newWindowParent) + qWarning("WebView::newWindowParent not set - WebView::newWindowComponent ignored"); + else if (d->newWindowComponent && d->newWindowParent) { + QDeclarativeWebView *webview = 0; + QDeclarativeContext *windowContext = new QDeclarativeContext(qmlContext(this)); + + QObject *nobj = d->newWindowComponent->create(windowContext); + if (nobj) { + windowContext->setParent(nobj); + QDeclarativeItem *item = qobject_cast(nobj); + if (!item) { + delete nobj; + } else { + webview = item->findChild(); + if (!webview) { + delete item; + } else { + nobj->setParent(d->newWindowParent); + static_cast(item)->setParentItem(d->newWindowParent); + } + } + } else { + delete windowContext; + } + + return webview; + } + } + break; + case QWebPage::WebModalDialog: { + // Not supported + } + } + return 0; +} + +/*! + \qmlproperty component WebView::newWindowComponent + + This property holds the component to use for new windows. + The component must have a WebView somewhere in its structure. + + When the web engine requests a new window, it will be an instance of + this component. + + The parent of the new window is set by newWindowParent. It must be set. +*/ +QDeclarativeComponent *QDeclarativeWebView::newWindowComponent() const +{ + Q_D(const QDeclarativeWebView); + return d->newWindowComponent; +} + +void QDeclarativeWebView::setNewWindowComponent(QDeclarativeComponent *newWindow) +{ + Q_D(QDeclarativeWebView); + if (newWindow == d->newWindowComponent) + return; + d->newWindowComponent = newWindow; + emit newWindowComponentChanged(); +} + + +/*! + \qmlproperty item WebView::newWindowParent + + The parent item for new windows. + + \sa newWindowComponent +*/ +QDeclarativeItem *QDeclarativeWebView::newWindowParent() const +{ + Q_D(const QDeclarativeWebView); + return d->newWindowParent; +} + +void QDeclarativeWebView::setNewWindowParent(QDeclarativeItem *parent) +{ + Q_D(QDeclarativeWebView); + if (parent == d->newWindowParent) + return; + if (d->newWindowParent && parent) { + QList children = d->newWindowParent->childItems(); + for (int i = 0; i < children.count(); ++i) { + children.at(i)->setParentItem(parent); + } + } + d->newWindowParent = parent; + emit newWindowParentChanged(); +} + +/*! + Returns the area of the largest element at position (\a x,\a y) that is no larger + than \a maxwidth by \a maxheight pixels. + + May return an area larger in the case when no smaller element is at the position. +*/ +QRect QDeclarativeWebView::elementAreaAt(int x, int y, int maxwidth, int maxheight) const +{ + QWebHitTestResult hit = page()->mainFrame()->hitTestContent(QPoint(x,y)); + QRect rv = hit.boundingRect(); + QWebElement element = hit.enclosingBlockElement(); + if (maxwidth<=0) maxwidth = INT_MAX; + if (maxheight<=0) maxheight = INT_MAX; + while (!element.parent().isNull() && element.geometry().width() <= maxwidth && element.geometry().height() <= maxheight) { + rv = element.geometry(); + element = element.parent(); + } + return rv; +} + +/*! + \internal + \class QDeclarativeWebPage + \brief The QDeclarativeWebPage class is a QWebPage that can create QML plugins. + + \sa QDeclarativeWebView +*/ +QDeclarativeWebPage::QDeclarativeWebPage(QDeclarativeWebView *parent) : + QWebPage(parent) +{ +} + +QDeclarativeWebPage::~QDeclarativeWebPage() +{ +} + +void QDeclarativeWebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) +{ + qWarning() << sourceID << ':' << lineNumber << ':' << message; +} + +QString QDeclarativeWebPage::chooseFile(QWebFrame *originatingFrame, const QString& oldFile) +{ + // Not supported (it's modal) + Q_UNUSED(originatingFrame) + Q_UNUSED(oldFile) + return oldFile; +} + +void QDeclarativeWebPage::javaScriptAlert(QWebFrame *originatingFrame, const QString& msg) +{ + Q_UNUSED(originatingFrame) + emit viewItem()->alert(msg); +} + +bool QDeclarativeWebPage::javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg) +{ + // Not supported (it's modal) + Q_UNUSED(originatingFrame) + Q_UNUSED(msg) + return false; +} + +bool QDeclarativeWebPage::javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result) +{ + // Not supported (it's modal) + Q_UNUSED(originatingFrame) + Q_UNUSED(msg) + Q_UNUSED(defaultValue) + Q_UNUSED(result) + return false; +} + + +/* + Qt WebKit does not understand non-QWidget plugins, so dummy widgets + are created, parented to a single dummy tool window. + + The requirements for QML object plugins are input to the Qt WebKit + non-QWidget plugin support, which will obsolete this kludge. +*/ +class QWidget_Dummy_Plugin : public QWidget +{ + Q_OBJECT +public: + static QWidget *dummy_shared_parent() + { + static QWidget *dsp = 0; + if (!dsp) { + dsp = new QWidget(0,Qt::Tool); + dsp->setGeometry(-10000,-10000,0,0); + dsp->show(); + } + return dsp; + } + QWidget_Dummy_Plugin(const QUrl& url, QDeclarativeWebView *view, const QStringList ¶mNames, const QStringList ¶mValues) : + QWidget(dummy_shared_parent()), + propertyNames(paramNames), + propertyValues(paramValues), + webview(view) + { + QDeclarativeEngine *engine = qmlEngine(webview); + component = new QDeclarativeComponent(engine, url, this); + item = 0; + if (component->isLoading()) + connect(component, SIGNAL(statusChanged(QDeclarativeComponent::Status)), this, SLOT(qmlLoaded())); + else + qmlLoaded(); + } + +public Q_SLOTS: + void qmlLoaded() + { + if (component->isError()) { + // ### Could instead give these errors to the WebView to handle. + qWarning() << component->errors(); + return; + } + item = qobject_cast(component->create(qmlContext(webview))); + item->setParent(webview); + QString jsObjName; + for (int i=0; isetProperty(propertyNames[i].toUtf8(),propertyValues[i]); + if (propertyNames[i] == QLatin1String("objectname")) + jsObjName = propertyValues[i]; + } + } + if (!jsObjName.isNull()) { + QWebFrame *f = webview->page()->mainFrame(); + f->addToJavaScriptWindowObject(jsObjName, item); + } + resizeEvent(0); + delete component; + component = 0; + } + void resizeEvent(QResizeEvent*) + { + if (item) { + item->setX(x()); + item->setY(y()); + item->setWidth(width()); + item->setHeight(height()); + } + } + +private: + QDeclarativeComponent *component; + QDeclarativeItem *item; + QStringList propertyNames, propertyValues; + QDeclarativeWebView *webview; +}; + +QDeclarativeWebView *QDeclarativeWebPage::viewItem() +{ + return static_cast(parent()); +} + +QObject *QDeclarativeWebPage::createPlugin(const QString &, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues) +{ + QUrl comp = qmlContext(viewItem())->resolvedUrl(url); + return new QWidget_Dummy_Plugin(comp,viewItem(),paramNames,paramValues); +} + +QWebPage *QDeclarativeWebPage::createWindow(WebWindowType type) +{ + QDeclarativeWebView *newView = viewItem()->createWindow(type); + if (newView) + return newView->page(); + return 0; +} + +QT_END_NAMESPACE + +#include diff --git a/src/imports/webkit/qdeclarativewebview_p.h b/src/imports/webkit/qdeclarativewebview_p.h new file mode 100644 index 0000000..5efc3b5 --- /dev/null +++ b/src/imports/webkit/qdeclarativewebview_p.h @@ -0,0 +1,287 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 QDECLARATIVEWEBVIEW_H +#define QDECLARATIVEWEBVIEW_H + +#include "webkitqmlplugin_export.h" + +#include + +#include +#include +#include +#include + +QT_BEGIN_HEADER + +class QWebHistory; +class QWebSettings; + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) +class QDeclarativeWebViewPrivate; +class QNetworkRequest; +class QDeclarativeWebView; + +class WEBKITQMLPLUGIN_EXPORT QDeclarativeWebPage : public QWebPage +{ + Q_OBJECT +public: + explicit QDeclarativeWebPage(QDeclarativeWebView *parent); + ~QDeclarativeWebPage(); +protected: + QObject *createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues); + QWebPage *createWindow(WebWindowType type); + void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID); + QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile); + void javaScriptAlert(QWebFrame *originatingFrame, const QString& msg); + bool javaScriptConfirm(QWebFrame *originatingFrame, const QString& msg); + bool javaScriptPrompt(QWebFrame *originatingFrame, const QString& msg, const QString& defaultValue, QString* result); + +private: + QDeclarativeWebView *viewItem(); +}; + + +class QDeclarativeWebViewAttached; + +//### TODO: browser plugins + +class WEBKITQMLPLUGIN_EXPORT QDeclarativeWebView : public QDeclarativePaintedItem +{ + Q_OBJECT + + Q_ENUMS(Status SelectionMode) + + Q_PROPERTY(QString title READ title NOTIFY titleChanged) + Q_PROPERTY(QPixmap icon READ icon NOTIFY iconChanged) + Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor NOTIFY zoomFactorChanged) + Q_PROPERTY(QString statusText READ statusText NOTIFY statusTextChanged) + + Q_PROPERTY(QString html READ html WRITE setHtml NOTIFY htmlChanged) + + Q_PROPERTY(int pressGrabTime READ pressGrabTime WRITE setPressGrabTime NOTIFY pressGrabTimeChanged) + + Q_PROPERTY(int preferredWidth READ preferredWidth WRITE setPreferredWidth NOTIFY preferredWidthChanged) + Q_PROPERTY(int preferredHeight READ preferredHeight WRITE setPreferredHeight NOTIFY preferredHeightChanged) + Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) + Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged) + Q_PROPERTY(Status status READ status NOTIFY statusChanged) + + Q_PROPERTY(QAction* reload READ reloadAction CONSTANT) + Q_PROPERTY(QAction* back READ backAction CONSTANT) + Q_PROPERTY(QAction* forward READ forwardAction CONSTANT) + Q_PROPERTY(QAction* stop READ stopAction CONSTANT) + + Q_PROPERTY(QObject* settings READ settingsObject CONSTANT) + + Q_PROPERTY(QDeclarativeListProperty javaScriptWindowObjects READ javaScriptWindowObjects CONSTANT) + + Q_PROPERTY(QDeclarativeComponent* newWindowComponent READ newWindowComponent WRITE setNewWindowComponent NOTIFY newWindowComponentChanged) + Q_PROPERTY(QDeclarativeItem* newWindowParent READ newWindowParent WRITE setNewWindowParent NOTIFY newWindowParentChanged) + + Q_PROPERTY(bool renderingEnabled READ renderingEnabled WRITE setRenderingEnabled NOTIFY renderingEnabledChanged) + +public: + QDeclarativeWebView(QDeclarativeItem *parent=0); + ~QDeclarativeWebView(); + + QUrl url() const; + void setUrl(const QUrl &); + + QString title() const; + + QPixmap icon() const; + + qreal zoomFactor() const; + void setZoomFactor(qreal); + Q_INVOKABLE bool heuristicZoom(int clickX, int clickY, qreal maxzoom); + QRect elementAreaAt(int x, int y, int minwidth, int minheight) const; + + int pressGrabTime() const; + void setPressGrabTime(int); + + int preferredWidth() const; + void setPreferredWidth(int); + int preferredHeight() const; + void setPreferredHeight(int); + + enum Status { Null, Ready, Loading, Error }; + Status status() const; + qreal progress() const; + QString statusText() const; + + QAction *reloadAction() const; + QAction *backAction() const; + QAction *forwardAction() const; + QAction *stopAction() const; + + QWebPage *page() const; + void setPage(QWebPage *page); + + void load(const QNetworkRequest &request, + QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation, + const QByteArray &body = QByteArray()); + + QString html() const; + + void setHtml(const QString &html, const QUrl &baseUrl = QUrl()); + void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl()); + + QWebHistory *history() const; + QWebSettings *settings() const; + QObject *settingsObject() const; + + bool renderingEnabled() const; + void setRenderingEnabled(bool); + + QDeclarativeListProperty javaScriptWindowObjects(); + + static QDeclarativeWebViewAttached *qmlAttachedProperties(QObject *); + + QDeclarativeComponent *newWindowComponent() const; + void setNewWindowComponent(QDeclarativeComponent *newWindow); + QDeclarativeItem *newWindowParent() const; + void setNewWindowParent(QDeclarativeItem *newWindow); + +Q_SIGNALS: + void preferredWidthChanged(); + void preferredHeightChanged(); + void urlChanged(); + void progressChanged(); + void statusChanged(Status); + void titleChanged(const QString&); + void iconChanged(); + void statusTextChanged(); + void htmlChanged(); + void pressGrabTimeChanged(); + void zoomFactorChanged(); + void newWindowComponentChanged(); + void newWindowParentChanged(); + void renderingEnabledChanged(); + + void loadStarted(); + void loadFinished(); + void loadFailed(); + + void doubleClick(int clickX, int clickY); + + void zoomTo(qreal zoom, int centerX, int centerY); + + void alert(const QString& message); + +public Q_SLOTS: + QVariant evaluateJavaScript(const QString&); + +private Q_SLOTS: + void expandToWebPage(); + void paintPage(const QRect&); + void doLoadStarted(); + void doLoadProgress(int p); + void doLoadFinished(bool ok); + void setStatusText(const QString&); + void windowObjectCleared(); + void pageUrlChanged(); + void noteContentsSizeChanged(const QSize&); + void initialLayout(); + +protected: + void drawContents(QPainter *, const QRect &); + + void mousePressEvent(QGraphicsSceneMouseEvent *event); + void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); + void mouseMoveEvent(QGraphicsSceneMouseEvent *event); + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); + void timerEvent(QTimerEvent *event); + void hoverMoveEvent (QGraphicsSceneHoverEvent * event); + void keyPressEvent(QKeyEvent* event); + void keyReleaseEvent(QKeyEvent* event); + virtual void geometryChanged(const QRectF &newGeometry, + const QRectF &oldGeometry); + virtual void focusChanged(bool); + virtual bool sceneEvent(QEvent *event); + QDeclarativeWebView *createWindow(QWebPage::WebWindowType type); + +private: + void init(); + virtual void componentComplete(); + Q_DISABLE_COPY(QDeclarativeWebView) + Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeWebView) + QMouseEvent *sceneMouseEventToMouseEvent(QGraphicsSceneMouseEvent *); + QMouseEvent *sceneHoverMoveEventToMouseEvent(QGraphicsSceneHoverEvent *); + friend class QDeclarativeWebPage; +}; + +class QDeclarativeWebViewAttached : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString windowObjectName READ windowObjectName WRITE setWindowObjectName) +public: + QDeclarativeWebViewAttached(QObject *parent) + : QObject(parent) + { + } + + QString windowObjectName() const + { + return m_windowObjectName; + } + + void setWindowObjectName(const QString &n) + { + m_windowObjectName = n; + } + +private: + QString m_windowObjectName; +}; + + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QDeclarativeWebView) +QML_DECLARE_TYPEINFO(QDeclarativeWebView, QML_HAS_ATTACHED_PROPERTIES) + +QT_END_HEADER + +#endif diff --git a/src/imports/webkit/qdeclarativewebview_p_p.h b/src/imports/webkit/qdeclarativewebview_p_p.h new file mode 100644 index 0000000..258b472 --- /dev/null +++ b/src/imports/webkit/qdeclarativewebview_p_p.h @@ -0,0 +1,151 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 QDECLARATIVEWEBVIEW_P_H +#define QDECLARATIVEWEBVIEW_P_H + +#include + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +class QDeclarativeWebSettings : public QObject { + Q_OBJECT + + Q_PROPERTY(QString standardFontFamily READ standardFontFamily WRITE setStandardFontFamily) + Q_PROPERTY(QString fixedFontFamily READ fixedFontFamily WRITE setFixedFontFamily) + Q_PROPERTY(QString serifFontFamily READ serifFontFamily WRITE setSerifFontFamily) + Q_PROPERTY(QString sansSerifFontFamily READ sansSerifFontFamily WRITE setSansSerifFontFamily) + Q_PROPERTY(QString cursiveFontFamily READ cursiveFontFamily WRITE setCursiveFontFamily) + Q_PROPERTY(QString fantasyFontFamily READ fantasyFontFamily WRITE setFantasyFontFamily) + + Q_PROPERTY(int minimumFontSize READ minimumFontSize WRITE setMinimumFontSize) + Q_PROPERTY(int minimumLogicalFontSize READ minimumLogicalFontSize WRITE setMinimumLogicalFontSize) + Q_PROPERTY(int defaultFontSize READ defaultFontSize WRITE setDefaultFontSize) + Q_PROPERTY(int defaultFixedFontSize READ defaultFixedFontSize WRITE setDefaultFixedFontSize) + + Q_PROPERTY(bool autoLoadImages READ autoLoadImages WRITE setAutoLoadImages) + Q_PROPERTY(bool javascriptEnabled READ javascriptEnabled WRITE setJavascriptEnabled) + Q_PROPERTY(bool javaEnabled READ javaEnabled WRITE setJavaEnabled) + Q_PROPERTY(bool pluginsEnabled READ pluginsEnabled WRITE setPluginsEnabled) + Q_PROPERTY(bool privateBrowsingEnabled READ privateBrowsingEnabled WRITE setPrivateBrowsingEnabled) + Q_PROPERTY(bool javascriptCanOpenWindows READ javascriptCanOpenWindows WRITE setJavascriptCanOpenWindows) + Q_PROPERTY(bool javascriptCanAccessClipboard READ javascriptCanAccessClipboard WRITE setJavascriptCanAccessClipboard) + Q_PROPERTY(bool developerExtrasEnabled READ developerExtrasEnabled WRITE setDeveloperExtrasEnabled) + Q_PROPERTY(bool linksIncludedInFocusChain READ linksIncludedInFocusChain WRITE setLinksIncludedInFocusChain) + Q_PROPERTY(bool zoomTextOnly READ zoomTextOnly WRITE setZoomTextOnly) + Q_PROPERTY(bool printElementBackgrounds READ printElementBackgrounds WRITE setPrintElementBackgrounds) + Q_PROPERTY(bool offlineStorageDatabaseEnabled READ offlineStorageDatabaseEnabled WRITE setOfflineStorageDatabaseEnabled) + Q_PROPERTY(bool offlineWebApplicationCacheEnabled READ offlineWebApplicationCacheEnabled WRITE setOfflineWebApplicationCacheEnabled) + Q_PROPERTY(bool localStorageDatabaseEnabled READ localStorageDatabaseEnabled WRITE setLocalStorageDatabaseEnabled) + Q_PROPERTY(bool localContentCanAccessRemoteUrls READ localContentCanAccessRemoteUrls WRITE setLocalContentCanAccessRemoteUrls) + +public: + QDeclarativeWebSettings() {} + + QString standardFontFamily() const { return s->fontFamily(QWebSettings::StandardFont); } + void setStandardFontFamily(const QString& f) { s->setFontFamily(QWebSettings::StandardFont,f); } + QString fixedFontFamily() const { return s->fontFamily(QWebSettings::FixedFont); } + void setFixedFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FixedFont,f); } + QString serifFontFamily() const { return s->fontFamily(QWebSettings::SerifFont); } + void setSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SerifFont,f); } + QString sansSerifFontFamily() const { return s->fontFamily(QWebSettings::SansSerifFont); } + void setSansSerifFontFamily(const QString& f) { s->setFontFamily(QWebSettings::SansSerifFont,f); } + QString cursiveFontFamily() const { return s->fontFamily(QWebSettings::CursiveFont); } + void setCursiveFontFamily(const QString& f) { s->setFontFamily(QWebSettings::CursiveFont,f); } + QString fantasyFontFamily() const { return s->fontFamily(QWebSettings::FantasyFont); } + void setFantasyFontFamily(const QString& f) { s->setFontFamily(QWebSettings::FantasyFont,f); } + + int minimumFontSize() const { return s->fontSize(QWebSettings::MinimumFontSize); } + void setMinimumFontSize(int size) { s->setFontSize(QWebSettings::MinimumFontSize,size); } + int minimumLogicalFontSize() const { return s->fontSize(QWebSettings::MinimumLogicalFontSize); } + void setMinimumLogicalFontSize(int size) { s->setFontSize(QWebSettings::MinimumLogicalFontSize,size); } + int defaultFontSize() const { return s->fontSize(QWebSettings::DefaultFontSize); } + void setDefaultFontSize(int size) { s->setFontSize(QWebSettings::DefaultFontSize,size); } + int defaultFixedFontSize() const { return s->fontSize(QWebSettings::DefaultFixedFontSize); } + void setDefaultFixedFontSize(int size) { s->setFontSize(QWebSettings::DefaultFixedFontSize,size); } + + bool autoLoadImages() const { return s->testAttribute(QWebSettings::AutoLoadImages); } + void setAutoLoadImages(bool on) { s->setAttribute(QWebSettings::AutoLoadImages, on); } + bool javascriptEnabled() const { return s->testAttribute(QWebSettings::JavascriptEnabled); } + void setJavascriptEnabled(bool on) { s->setAttribute(QWebSettings::JavascriptEnabled, on); } + bool javaEnabled() const { return s->testAttribute(QWebSettings::JavaEnabled); } + void setJavaEnabled(bool on) { s->setAttribute(QWebSettings::JavaEnabled, on); } + bool pluginsEnabled() const { return s->testAttribute(QWebSettings::PluginsEnabled); } + void setPluginsEnabled(bool on) { s->setAttribute(QWebSettings::PluginsEnabled, on); } + bool privateBrowsingEnabled() const { return s->testAttribute(QWebSettings::PrivateBrowsingEnabled); } + void setPrivateBrowsingEnabled(bool on) { s->setAttribute(QWebSettings::PrivateBrowsingEnabled, on); } + bool javascriptCanOpenWindows() const { return s->testAttribute(QWebSettings::JavascriptCanOpenWindows); } + void setJavascriptCanOpenWindows(bool on) { s->setAttribute(QWebSettings::JavascriptCanOpenWindows, on); } + bool javascriptCanAccessClipboard() const { return s->testAttribute(QWebSettings::JavascriptCanAccessClipboard); } + void setJavascriptCanAccessClipboard(bool on) { s->setAttribute(QWebSettings::JavascriptCanAccessClipboard, on); } + bool developerExtrasEnabled() const { return s->testAttribute(QWebSettings::DeveloperExtrasEnabled); } + void setDeveloperExtrasEnabled(bool on) { s->setAttribute(QWebSettings::DeveloperExtrasEnabled, on); } + bool linksIncludedInFocusChain() const { return s->testAttribute(QWebSettings::LinksIncludedInFocusChain); } + void setLinksIncludedInFocusChain(bool on) { s->setAttribute(QWebSettings::LinksIncludedInFocusChain, on); } + bool zoomTextOnly() const { return s->testAttribute(QWebSettings::ZoomTextOnly); } + void setZoomTextOnly(bool on) { s->setAttribute(QWebSettings::ZoomTextOnly, on); } + bool printElementBackgrounds() const { return s->testAttribute(QWebSettings::PrintElementBackgrounds); } + void setPrintElementBackgrounds(bool on) { s->setAttribute(QWebSettings::PrintElementBackgrounds, on); } + bool offlineStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::OfflineStorageDatabaseEnabled); } + void setOfflineStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, on); } + bool offlineWebApplicationCacheEnabled() const { return s->testAttribute(QWebSettings::OfflineWebApplicationCacheEnabled); } + void setOfflineWebApplicationCacheEnabled(bool on) { s->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, on); } + bool localStorageDatabaseEnabled() const { return s->testAttribute(QWebSettings::LocalStorageDatabaseEnabled); } + void setLocalStorageDatabaseEnabled(bool on) { s->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, on); } + bool localContentCanAccessRemoteUrls() const { return s->testAttribute(QWebSettings::LocalContentCanAccessRemoteUrls); } + void setLocalContentCanAccessRemoteUrls(bool on) { s->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, on); } + + QWebSettings *s; +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QDeclarativeWebSettings) + +QT_END_HEADER + +#endif diff --git a/src/imports/webkit/qmldir b/src/imports/webkit/qmldir new file mode 100644 index 0000000..258aa2c --- /dev/null +++ b/src/imports/webkit/qmldir @@ -0,0 +1 @@ +plugin webkitqmlplugin diff --git a/src/imports/webkit/webkit.pro b/src/imports/webkit/webkit.pro new file mode 100644 index 0000000..76b46f1 --- /dev/null +++ b/src/imports/webkit/webkit.pro @@ -0,0 +1,19 @@ +TARGET = webkitqmlplugin +TARGETPATH = $$[QT_INSTALL_IMPORTS]/org/webkit +include(../qimportbase.pri) + +QT += webkit declarative +DEFINES += WEBKITQMLPLUGIN_EXPORTS + +SOURCES += qdeclarativewebview.cpp plugin.cpp +HEADERS += qdeclarativewebview_p.h \ + qdeclarativewebview_p_p.h \ + webkitqmlplugin_export.h + +QTDIR_build:DESTDIR = $$TARGETPATH +target.path = $$TARGETPATH + +qmldir.files += $$QT_BUILD_TREE/imports/org/webkit/qmldir +qmldir.path += $$TARGETPATH + +INSTALLS += target qmldir diff --git a/src/imports/webkit/webkitqmlplugin_export.h b/src/imports/webkit/webkitqmlplugin_export.h new file mode 100644 index 0000000..974fd24 --- /dev/null +++ b/src/imports/webkit/webkitqmlplugin_export.h @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 WEBKITQMLPLUGIN_EXPORT_H +#define WEBKITQMLPLUGIN_EXPORT_H + +#include + +#if defined WEBKITQMLPLUGIN_EXPORTS +# define WEBKITQMLPLUGIN_EXPORT Q_DECL_EXPORT +#else +# define WEBKITQMLPLUGIN_EXPORT Q_DECL_IMPORT +#endif + +#endif // WEBKITQMLPLUGIN_EXPORT_H diff --git a/src/imports/widgets/graphicslayouts.cpp b/src/imports/widgets/graphicslayouts.cpp new file mode 100644 index 0000000..fc15ad2 --- /dev/null +++ b/src/imports/widgets/graphicslayouts.cpp @@ -0,0 +1,260 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 "graphicslayouts_p.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +LinearLayoutAttached::LinearLayoutAttached(QObject *parent) +: QObject(parent), _stretch(1), _alignment(Qt::AlignCenter) +{ +} + +void LinearLayoutAttached::setStretchFactor(int f) +{ + if (_stretch == f) + return; + + _stretch = f; + emit stretchChanged(reinterpret_cast(parent()), _stretch); +} + +void LinearLayoutAttached::setAlignment(Qt::Alignment a) +{ + if (_alignment == a) + return; + + _alignment = a; + emit alignmentChanged(reinterpret_cast(parent()), _alignment); +} + +QGraphicsLinearLayoutStretchItemObject::QGraphicsLinearLayoutStretchItemObject(QObject *parent) + : QObject(parent) +{ +} + +QSizeF QGraphicsLinearLayoutStretchItemObject::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const +{ +Q_UNUSED(which); +Q_UNUSED(constraint); +return QSizeF(); +} + + +QGraphicsLinearLayoutObject::QGraphicsLinearLayoutObject(QObject *parent) +: QObject(parent) +{ +} + +QGraphicsLinearLayoutObject::~QGraphicsLinearLayoutObject() +{ +} + +void QGraphicsLinearLayoutObject::insertLayoutItem(int index, QGraphicsLayoutItem *item) +{ +insertItem(index, item); + +//connect attached properties +if (LinearLayoutAttached *obj = attachedProperties.value(item)) { + setStretchFactor(item, obj->stretchFactor()); + setAlignment(item, obj->alignment()); + QObject::connect(obj, SIGNAL(stretchChanged(QGraphicsLayoutItem*,int)), + this, SLOT(updateStretch(QGraphicsLayoutItem*,int))); + QObject::connect(obj, SIGNAL(alignmentChanged(QGraphicsLayoutItem*,Qt::Alignment)), + this, SLOT(updateAlignment(QGraphicsLayoutItem*,Qt::Alignment))); + //### need to disconnect when widget is removed? +} +} + +//### is there a better way to do this? +void QGraphicsLinearLayoutObject::clearChildren() +{ +for (int i = 0; i < count(); ++i) + removeAt(i); +} + +void QGraphicsLinearLayoutObject::updateStretch(QGraphicsLayoutItem *item, int stretch) +{ +QGraphicsLinearLayout::setStretchFactor(item, stretch); +} + +void QGraphicsLinearLayoutObject::updateAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment) +{ +QGraphicsLinearLayout::setAlignment(item, alignment); +} + +QHash QGraphicsLinearLayoutObject::attachedProperties; +LinearLayoutAttached *QGraphicsLinearLayoutObject::qmlAttachedProperties(QObject *obj) +{ +// ### This is not allowed - you must attach to any object +if (!qobject_cast(obj)) + return 0; +LinearLayoutAttached *rv = new LinearLayoutAttached(obj); +attachedProperties.insert(qobject_cast(obj), rv); +return rv; +} + +////////////////////////////////////////////////////////////////////////////////////////////////////// +// QGraphicsGridLayout-related classes +////////////////////////////////////////////////////////////////////////////////////////////////////// +GridLayoutAttached::GridLayoutAttached(QObject *parent) +: QObject(parent), _row(-1), _column(-1), _rowspan(1), _colspan(1), _alignment(-1) +{ +} + +void GridLayoutAttached::setRow(int r) +{ + if (_row == r) + return; + + _row = r; + //emit rowChanged(reinterpret_cast(parent()), _row); +} + +void GridLayoutAttached::setColumn(int c) +{ + if (_column == c) + return; + + _column = c; + //emit columnChanged(reinterpret_cast(parent()), _column); +} + +void GridLayoutAttached::setRowSpan(int rs) +{ + if (_rowspan == rs) + return; + + _rowspan = rs; + //emit rowSpanChanged(reinterpret_cast(parent()), _rowSpan); +} + +void GridLayoutAttached::setColumnSpan(int cs) +{ + if (_colspan == cs) + return; + + _colspan = cs; + //emit columnSpanChanged(reinterpret_cast(parent()), _columnSpan); +} + +void GridLayoutAttached::setAlignment(Qt::Alignment a) +{ + if (_alignment == a) + return; + + _alignment = a; + //emit alignmentChanged(reinterpret_cast(parent()), _alignment); +} + +QGraphicsGridLayoutObject::QGraphicsGridLayoutObject(QObject *parent) +: QObject(parent) +{ +} + +QGraphicsGridLayoutObject::~QGraphicsGridLayoutObject() +{ +} + +void QGraphicsGridLayoutObject::addWidget(QGraphicsWidget *wid) +{ +//use attached properties +if (QObject *obj = attachedProperties.value(qobject_cast(wid))) { + int row = static_cast(obj)->row(); + int column = static_cast(obj)->column(); + int rowSpan = static_cast(obj)->rowSpan(); + int columnSpan = static_cast(obj)->columnSpan(); + if (row == -1 || column == -1) { + qWarning() << "Must set row and column for an item in a grid layout"; + return; + } + addItem(wid, row, column, rowSpan, columnSpan); +} +} + +void QGraphicsGridLayoutObject::addLayoutItem(QGraphicsLayoutItem *item) +{ +//use attached properties +if (GridLayoutAttached *obj = attachedProperties.value(item)) { + int row = obj->row(); + int column = obj->column(); + int rowSpan = obj->rowSpan(); + int columnSpan = obj->columnSpan(); + Qt::Alignment alignment = obj->alignment(); + if (row == -1 || column == -1) { + qWarning() << "Must set row and column for an item in a grid layout"; + return; + } + addItem(item, row, column, rowSpan, columnSpan); + if (alignment != -1) + setAlignment(item,alignment); +} +} + +//### is there a better way to do this? +void QGraphicsGridLayoutObject::clearChildren() +{ +for (int i = 0; i < count(); ++i) + removeAt(i); +} + +qreal QGraphicsGridLayoutObject::spacing() const +{ +if (verticalSpacing() == horizontalSpacing()) + return verticalSpacing(); +return -1; //### +} + +QHash QGraphicsGridLayoutObject::attachedProperties; +GridLayoutAttached *QGraphicsGridLayoutObject::qmlAttachedProperties(QObject *obj) +{ +// ### This is not allowed - you must attach to any object +if (!qobject_cast(obj)) + return 0; +GridLayoutAttached *rv = new GridLayoutAttached(obj); +attachedProperties.insert(qobject_cast(obj), rv); +return rv; +} + +QT_END_NAMESPACE diff --git a/src/imports/widgets/graphicslayouts_p.h b/src/imports/widgets/graphicslayouts_p.h new file mode 100644 index 0000000..f9b9ae8 --- /dev/null +++ b/src/imports/widgets/graphicslayouts_p.h @@ -0,0 +1,226 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 GRAPHICSLAYOUTS_H +#define GRAPHICSLAYOUTS_H + +#include "graphicswidgets_p.h" + +#include +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +class QGraphicsLinearLayoutStretchItemObject : public QObject, public QGraphicsLayoutItem +{ + Q_OBJECT + Q_INTERFACES(QGraphicsLayoutItem) +public: + QGraphicsLinearLayoutStretchItemObject(QObject *parent = 0); + + virtual QSizeF sizeHint(Qt::SizeHint, const QSizeF &) const; +}; + +class LinearLayoutAttached; +class QGraphicsLinearLayoutObject : public QObject, public QGraphicsLinearLayout +{ + Q_OBJECT + Q_INTERFACES(QGraphicsLayout QGraphicsLayoutItem) + + Q_PROPERTY(QDeclarativeListProperty children READ children) + Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) + Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing) + Q_CLASSINFO("DefaultProperty", "children") +public: + QGraphicsLinearLayoutObject(QObject * = 0); + ~QGraphicsLinearLayoutObject(); + + QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append, children_count, children_at, children_clear); } + + static LinearLayoutAttached *qmlAttachedProperties(QObject *); + +private Q_SLOTS: + void updateStretch(QGraphicsLayoutItem*,int); + void updateAlignment(QGraphicsLayoutItem*,Qt::Alignment); + +private: + friend class LinearLayoutAttached; + void clearChildren(); + void insertLayoutItem(int, QGraphicsLayoutItem *); + static QHash attachedProperties; + + static void children_append(QDeclarativeListProperty *prop, QGraphicsLayoutItem *item) { + static_cast(prop->object)->insertLayoutItem(-1, item); + } + + static void children_clear(QDeclarativeListProperty *prop) { + static_cast(prop->object)->clearChildren(); + } + + static int children_count(QDeclarativeListProperty *prop) { + return static_cast(prop->object)->count(); + } + + static QGraphicsLayoutItem *children_at(QDeclarativeListProperty *prop, int index) { + return static_cast(prop->object)->itemAt(index); + } +}; + +class GridLayoutAttached; +class QGraphicsGridLayoutObject : public QObject, public QGraphicsGridLayout +{ + Q_OBJECT + Q_INTERFACES(QGraphicsLayout QGraphicsLayoutItem) + + Q_PROPERTY(QDeclarativeListProperty children READ children) + Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing) + Q_PROPERTY(qreal verticalSpacing READ verticalSpacing WRITE setVerticalSpacing) + Q_PROPERTY(qreal horizontalSpacing READ horizontalSpacing WRITE setHorizontalSpacing) + Q_CLASSINFO("DefaultProperty", "children") +public: + QGraphicsGridLayoutObject(QObject * = 0); + ~QGraphicsGridLayoutObject(); + + QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append, children_count, children_at, children_clear); } + + qreal spacing() const; + + static GridLayoutAttached *qmlAttachedProperties(QObject *); + +private: + friend class GraphicsLayoutAttached; + void addWidget(QGraphicsWidget *); + void clearChildren(); + void addLayoutItem(QGraphicsLayoutItem *); + static QHash attachedProperties; + + static void children_append(QDeclarativeListProperty *prop, QGraphicsLayoutItem *item) { + static_cast(prop->object)->addLayoutItem(item); + } + + static void children_clear(QDeclarativeListProperty *prop) { + static_cast(prop->object)->clearChildren(); + } + + static int children_count(QDeclarativeListProperty *prop) { + return static_cast(prop->object)->count(); + } + + static QGraphicsLayoutItem *children_at(QDeclarativeListProperty *prop, int index) { + return static_cast(prop->object)->itemAt(index); + } +}; + +class LinearLayoutAttached : public QObject +{ + Q_OBJECT + + Q_PROPERTY(int stretchFactor READ stretchFactor WRITE setStretchFactor NOTIFY stretchChanged) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged) +public: + LinearLayoutAttached(QObject *parent); + + int stretchFactor() const { return _stretch; } + void setStretchFactor(int f); + Qt::Alignment alignment() const { return _alignment; } + void setAlignment(Qt::Alignment a); + +Q_SIGNALS: + void stretchChanged(QGraphicsLayoutItem*,int); + void alignmentChanged(QGraphicsLayoutItem*,Qt::Alignment); + +private: + int _stretch; + Qt::Alignment _alignment; +}; + +class GridLayoutAttached : public QObject +{ + Q_OBJECT + + Q_PROPERTY(int row READ row WRITE setRow) + Q_PROPERTY(int column READ column WRITE setColumn) + Q_PROPERTY(int rowSpan READ rowSpan WRITE setRowSpan) + Q_PROPERTY(int columnSpan READ columnSpan WRITE setColumnSpan) + Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) +public: + GridLayoutAttached(QObject *parent); + + int row() const { return _row; } + void setRow(int r); + + int column() const { return _column; } + void setColumn(int c); + + int rowSpan() const { return _rowspan; } + void setRowSpan(int rs); + + int columnSpan() const { return _colspan; } + void setColumnSpan(int cs); + + Qt::Alignment alignment() const { return _alignment; } + void setAlignment(Qt::Alignment a); + +private: + int _row; + int _column; + int _rowspan; + int _colspan; + Qt::Alignment _alignment; +}; + +QT_END_NAMESPACE + +QML_DECLARE_INTERFACE(QGraphicsLayoutItem) +QML_DECLARE_INTERFACE(QGraphicsLayout) +QML_DECLARE_TYPE(QGraphicsLinearLayoutStretchItemObject) +QML_DECLARE_TYPE(QGraphicsLinearLayoutObject) +QML_DECLARE_TYPEINFO(QGraphicsLinearLayoutObject, QML_HAS_ATTACHED_PROPERTIES) +QML_DECLARE_TYPE(QGraphicsGridLayoutObject) +QML_DECLARE_TYPEINFO(QGraphicsGridLayoutObject, QML_HAS_ATTACHED_PROPERTIES) + +QT_END_HEADER + +#endif // GRAPHICSLAYOUTS_H diff --git a/src/imports/widgets/graphicswidgets.cpp b/src/imports/widgets/graphicswidgets.cpp new file mode 100644 index 0000000..062e516 --- /dev/null +++ b/src/imports/widgets/graphicswidgets.cpp @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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$ +** +****************************************************************************/ diff --git a/src/imports/widgets/graphicswidgets_p.h b/src/imports/widgets/graphicswidgets_p.h new file mode 100644 index 0000000..2c2b707 --- /dev/null +++ b/src/imports/widgets/graphicswidgets_p.h @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** 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 QtDeclarative 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 GRAPHICSWIDGETS_H +#define GRAPHICSWIDGETS_H + +#include + +#include +#include +#include +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QGraphicsView) +QML_DECLARE_TYPE_HASMETATYPE(QGraphicsScene) +QML_DECLARE_TYPE(QGraphicsWidget) +QML_DECLARE_TYPE(QGraphicsObject) +QML_DECLARE_INTERFACE_HASMETATYPE(QGraphicsItem) + +QT_END_HEADER + +#endif // GRAPHICSWIDGETS_H diff --git a/src/imports/widgets/qmldir b/src/imports/widgets/qmldir new file mode 100644 index 0000000..6f19878 --- /dev/null +++ b/src/imports/widgets/qmldir @@ -0,0 +1 @@ +plugin widgets diff --git a/src/imports/widgets/widgets.cpp b/src/imports/widgets/widgets.cpp new file mode 100644 index 0000000..ec21cc4 --- /dev/null +++ b/src/imports/widgets/widgets.cpp @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 +#include + +#include "graphicslayouts_p.h" +#include "graphicswidgets_p.h" + +QT_BEGIN_NAMESPACE + +class QGraphicsViewDeclarativeUI : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QGraphicsScene *scene READ scene WRITE setScene) + Q_CLASSINFO("DefaultProperty", "scene") +public: + QGraphicsViewDeclarativeUI(QObject *other) : QObject(other) {} + + QGraphicsScene *scene() const { return static_cast(parent())->scene(); } + void setScene(QGraphicsScene *scene) + { + static_cast(parent())->setScene(scene); + } +}; + +class QGraphicsSceneDeclarativeUI : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QDeclarativeListProperty children READ children) + Q_CLASSINFO("DefaultProperty", "children") +public: + QGraphicsSceneDeclarativeUI(QObject *other) : QObject(other) {} + + QDeclarativeListProperty children() { return QDeclarativeListProperty(this->parent(), 0, children_append); } + +private: + static void children_append(QDeclarativeListProperty *prop, QObject *o) { + if (QGraphicsObject *go = qobject_cast(o)) + static_cast(prop->object)->addItem(go); + } +}; + +class QGraphicsWidgetDeclarativeUI : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QDeclarativeListProperty children READ children) + Q_PROPERTY(QGraphicsLayout *layout READ layout WRITE setLayout) + Q_CLASSINFO("DefaultProperty", "children") +public: + QGraphicsWidgetDeclarativeUI(QObject *other) : QObject(other) {} + + QDeclarativeListProperty children() { return QDeclarativeListProperty(this, 0, children_append); } + + QGraphicsLayout *layout() const { return static_cast(parent())->layout(); } + void setLayout(QGraphicsLayout *lo) + { + static_cast(parent())->setLayout(lo); + } + +private: + void setItemParent(QGraphicsItem *wid) + { + wid->setParentItem(static_cast(parent())); + } + + static void children_append(QDeclarativeListProperty *prop, QGraphicsItem *i) { + static_cast(prop->object)->setItemParent(i); + } +}; + +class QWidgetsQmlModule : public QDeclarativeExtensionPlugin +{ + Q_OBJECT +public: + virtual void registerTypes(const char *uri) + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.widgets")); + + QML_REGISTER_INTERFACE(QGraphicsLayoutItem); + QML_REGISTER_INTERFACE(QGraphicsLayout); + qmlRegisterType(uri,4,6,"QGraphicsLinearLayoutStretchItem"); + qmlRegisterType(uri,4,6,"QGraphicsLinearLayout"); + qmlRegisterType(uri,4,6,"QGraphicsGridLayout"); + qmlRegisterExtendedType(uri,4,6,"QGraphicsView"); + qmlRegisterExtendedType(uri,4,6,"QGraphicsScene"); + qmlRegisterExtendedType(uri,4,6,"QGraphicsWidget"); + QML_REGISTER_INTERFACE(QGraphicsItem); + } +}; + +QT_END_NAMESPACE + +#include "widgets.moc" + +Q_EXPORT_PLUGIN2(qtwidgetsqmlmodule, QT_PREPEND_NAMESPACE(QWidgetsQmlModule)); + diff --git a/src/imports/widgets/widgets.pro b/src/imports/widgets/widgets.pro new file mode 100644 index 0000000..b98be59 --- /dev/null +++ b/src/imports/widgets/widgets.pro @@ -0,0 +1,22 @@ +TARGET = widgets +TARGETPATH = $$[QT_INSTALL_IMPORTS]/Qt/widgets +include(../qimportbase.pri) + +QT += declarative + +SOURCES += \ + graphicslayouts.cpp \ + widgets.cpp + +HEADERS += \ + graphicswidgets_p.h \ + graphicslayouts_p.h + +QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/Qt/widgets +target.path = $$TARGETPATH + +# install qmldir file +qmldir.files += qmldir +qmldir.path = $$TARGETPATH + +INSTALLS += target qmldir diff --git a/src/src.pro b/src/src.pro index 2b9dc30..7bb731e 100644 --- a/src/src.pro +++ b/src/src.pro @@ -29,6 +29,7 @@ contains(QT_CONFIG, scripttools): SRC_SUBDIRS += src_scripttools contains(QT_CONFIG, declarative): SRC_SUBDIRS += src_declarative contains(QT_CONFIG, multimedia): SRC_SUBDIRS += src_multimedia SRC_SUBDIRS += src_plugins +contains(QT_CONFIG, declarative): SRC_SUBDIRS += src_imports src_s60main.subdir = $$QT_SOURCE_TREE/src/s60main src_s60main.target = sub-s60main @@ -70,6 +71,8 @@ src_activeqt.subdir = $$QT_SOURCE_TREE/src/activeqt src_activeqt.target = sub-activeqt src_plugins.subdir = $$QT_SOURCE_TREE/src/plugins src_plugins.target = sub-plugins +src_imports.subdir = $$QT_SOURCE_TREE/src/imports +src_imports.target = sub-imports src_testlib.subdir = $$QT_SOURCE_TREE/src/testlib src_testlib.target = sub-testlib src_javascriptcore.subdir = $$QT_SOURCE_TREE/src/3rdparty/webkit/JavaScriptCore @@ -103,11 +106,13 @@ src_declarative.target = sub-declarative src_tools_activeqt.depends = src_tools_idc src_gui src_declarative.depends = src_xml src_gui src_script src_network src_svg src_plugins.depends = src_gui src_sql src_svg src_multimedia + src_imports.depends = src_gui src_declarative 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 + src_imports.depends += webkit #exists($$QT_SOURCE_TREE/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro): src_webkit.depends += src_javascriptcore } contains(QT_CONFIG, qt3support): src_plugins.depends += src_qt3support @@ -117,6 +122,7 @@ src_declarative.target = sub-declarative } contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, opengles2): src_plugins.depends += src_opengl contains(QT_CONFIG, declarative): src_multimedia.depends += src_declarative + contains(QT_CONFIG, multimedia): src_imports += src_multimedia } !symbian { -- cgit v0.12 From 1d656b760c75de5f98ff3cf0542015a641bc692c Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Tue, 2 Mar 2010 11:00:55 -0800 Subject: Simplify DirectFB performance debugging Allow people to control whether or not to warn on/disable raster fallbacks using the following mechanism: export QT_DIRECTFB_DISABLE_RASTERFALLBACKS="draw_pixmap|draw_text" export QT_DIRECTFB_WARN_ON_RASTERFALLBACKS="draw_lines" It's still possible to define QT_DIRECTFB_WARN_ON_RASTERFALLBACKS to something for legacy reasons. The environment variable check is only available in debug mode. --- .../gfxdrivers/directfb/qdirectfbpaintengine.cpp | 103 +++++++++++++++++---- 1 file changed, 87 insertions(+), 16 deletions(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp index 023bb28..537baf5 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp @@ -167,7 +167,7 @@ struct CachedImage static QCache imageCache(4*1024*1024); // 4 MB #endif -#if defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS || defined QT_DIRECTFB_DISABLE_RASTERFALLBACKS +#if defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS || defined QT_DIRECTFB_DISABLE_RASTERFALLBACKS || defined QT_DEBUG #define VOID_ARG() static_cast(false) enum PaintOperation { DRAW_RECTS = 0x0001, DRAW_LINES = 0x0002, DRAW_IMAGE = 0x0004, @@ -177,9 +177,74 @@ enum PaintOperation { FILL_RECT = 0x1000, DRAW_COLORSPANS = 0x2000, DRAW_ROUNDED_RECT = 0x4000, ALL = 0xffff }; + +#ifdef QT_DEBUG +static void initRasterFallbacksMasks(int *warningMask, int *disableMask) +{ + struct { + const char *name; + PaintOperation operation; + } const operations[] = { + { "DRAW_RECTS", DRAW_RECTS }, + { "DRAW_LINES", DRAW_LINES }, + { "DRAW_IMAGE", DRAW_IMAGE }, + { "DRAW_PIXMAP", DRAW_PIXMAP }, + { "DRAW_TILED_PIXMAP", DRAW_TILED_PIXMAP }, + { "STROKE_PATH", STROKE_PATH }, + { "DRAW_PATH", DRAW_PATH }, + { "DRAW_POINTS", DRAW_POINTS }, + { "DRAW_ELLIPSE", DRAW_ELLIPSE }, + { "DRAW_POLYGON", DRAW_POLYGON }, + { "DRAW_TEXT", DRAW_TEXT }, + { "FILL_PATH", FILL_PATH }, + { "FILL_RECT", FILL_RECT }, + { "DRAW_COLORSPANS", DRAW_COLORSPANS }, + { "DRAW_ROUNDED_RECT", DRAW_ROUNDED_RECT }, + { "ALL", ALL }, + { 0, ALL } + }; + + const QStringList warning = QString::fromLatin1(qgetenv("QT_DIRECTFB_WARN_ON_RASTERFALLBACKS")).toUpper().split(QLatin1Char('|')); + const QStringList disable = QString::fromLatin1(qgetenv("QT_DIRECTFB_DISABLE_RASTERFALLBACKS")).toUpper().split(QLatin1Char('|')); + *warningMask = 0; + *disableMask = 0; + if (!warning.isEmpty() || !disable.isEmpty()) { + for (int i=0; operations[i].name; ++i) { + const QString name = QString::fromLatin1(operations[i].name); + if (warning.contains(name)) { + *warningMask |= operations[i].operation; + } + if (disable.contains(name)) { + *disableMask |= operations[i].operation; + } + } + } +} #endif +static inline int rasterFallbacksMask(bool warn) +{ #ifdef QT_DIRECTFB_WARN_ON_RASTERFALLBACKS + if (warn) + return QT_DIRECTFB_WARN_ON_RASTERFALLBACKS; +#endif +#ifdef QT_DIRECTFB_DISABLE_RASTERFALLBACKS + if (!warn) + return QT_DIRECTFB_DISABLE_RASTERFALLBACKS; +#endif +#ifndef QT_DEBUG + return 0; +#else + static int warnMask = -1; + static int disableMask = -1; + if (warnMask == -1) + initRasterFallbacksMasks(&warnMask, &disableMask); + return warn ? warnMask : disableMask; +#endif +} +#endif + +#if defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS || defined QT_DEBUG template static void rasterFallbackWarn(const char *msg, const char *func, const device *dev, uint transformationType, bool simplePen, @@ -189,25 +254,31 @@ static void rasterFallbackWarn(const char *msg, const char *func, const device * const char *nameThree, const T3 &three); #endif -#if defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS && defined QT_DIRECTFB_DISABLE_RASTERFALLBACKS +#if defined QT_DEBUG || (defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS && defined QT_DIRECTFB_DISABLE_RASTERFALLBACKS) #define RASTERFALLBACK(op, one, two, three) \ - if (op & (QT_DIRECTFB_WARN_ON_RASTERFALLBACKS)) \ - rasterFallbackWarn("Disabled raster engine operation", \ - __FUNCTION__, state()->painter->device(), \ - d_func()->transformationType, \ - d_func()->simplePen, \ - d_func()->clipType, \ - d_func()->compositionModeStatus, \ - #one, one, #two, two, #three, three); \ - if (op & (QT_DIRECTFB_DISABLE_RASTERFALLBACKS)) \ - return; + { \ + const bool disable = op & rasterFallbacksMask(false); \ + if (op & rasterFallbacksMask(true)) \ + rasterFallbackWarn(disable \ + ? "Disabled raster engine operation" \ + : "Falling back to raster engine for", \ + __FUNCTION__, \ + state()->painter->device(), \ + d_func()->transformationType, \ + d_func()->simplePen, \ + d_func()->clipType, \ + d_func()->compositionModeStatus, \ + #one, one, #two, two, #three, three); \ + if (disable) \ + return; \ + } #elif defined QT_DIRECTFB_DISABLE_RASTERFALLBACKS -#define RASTERFALLBACK(op, one, two, three) \ - if (op & (QT_DIRECTFB_DISABLE_RASTERFALLBACKS)) \ +#define RASTERFALLBACK(op, one, two, three) \ + if (op & rasterFallbacksMask(false)) \ return; #elif defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS #define RASTERFALLBACK(op, one, two, three) \ - if (op & (QT_DIRECTFB_WARN_ON_RASTERFALLBACKS)) \ + if (op & rasterFallbacksMask(true)) \ rasterFallbackWarn("Falling back to raster engine for", \ __FUNCTION__, state()->painter->device(), \ d_func()->transformationType, \ @@ -1267,7 +1338,7 @@ static inline void drawRects(const T *rects, int n, const QTransform &transform, } } -#ifdef QT_DIRECTFB_WARN_ON_RASTERFALLBACKS +#if defined QT_DIRECTFB_WARN_ON_RASTERFALLBACKS || defined QT_DEBUG template inline const T *ptr(const T &t) { return &t; } template <> inline const bool* ptr(const bool &) { return 0; } template -- cgit v0.12 From 0c12cec56c73342735b51e8aa21c8f0d7fe20c16 Mon Sep 17 00:00:00 2001 From: Bill King Date: Wed, 3 Mar 2010 09:17:41 +1000 Subject: Fix compile. Stupid inconsistent constness/overall api Task-number: QTBUG-6928 --- src/sql/drivers/odbc/qsql_odbc.cpp | 60 +++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp index f34aea5..e75c19d 100644 --- a/src/sql/drivers/odbc/qsql_odbc.cpp +++ b/src/sql/drivers/odbc/qsql_odbc.cpp @@ -694,9 +694,9 @@ bool QODBCDriverPrivate::setConnectionOptions(const QString& connOpts) val.utf16(); // 0 terminate r = SQLSetConnectAttr(hDbc, SQL_ATTR_CURRENT_CATALOG, #ifdef UNICODE - toSQLTCHAR(val).constData(), + toSQLTCHAR(val).data(), #else - (SQLCHAR*) val.toUtf8().constData(), + (SQLCHAR*) val.toUtf8().data(), #endif val.length()*sizeof(SQLTCHAR)); } else if (opt.toUpper() == QLatin1String("SQL_ATTR_METADATA_ID")) { @@ -716,9 +716,9 @@ bool QODBCDriverPrivate::setConnectionOptions(const QString& connOpts) val.utf16(); // 0 terminate r = SQLSetConnectAttr(hDbc, SQL_ATTR_TRACEFILE, #ifdef UNICODE - toSQLTCHAR(val).constData(), + toSQLTCHAR(val).data(), #else - (SQLCHAR*) val.toUtf8().constData(), + (SQLCHAR*) val.toUtf8().data(), #endif val.length()*sizeof(SQLTCHAR)); } else if (opt.toUpper() == QLatin1String("SQL_ATTR_TRACE")) { @@ -932,12 +932,12 @@ bool QODBCResult::reset (const QString& query) #ifdef UNICODE r = SQLExecDirect(d->hStmt, - toSQLTCHAR(query).constData(), + toSQLTCHAR(query).data(), (SQLINTEGER) query.length()); #else QByteArray query8 = query.toUtf8(); r = SQLExecDirect(d->hStmt, - (SQLCHAR*) query8.constData(), + (SQLCHAR*) query8.data(), (SQLINTEGER) query8.length()); #endif if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO && r!= SQL_NO_DATA) { @@ -1283,12 +1283,12 @@ bool QODBCResult::prepare(const QString& query) #ifdef UNICODE r = SQLPrepare(d->hStmt, - toSQLTCHAR(query).constData(), + toSQLTCHAR(query).data(), (SQLINTEGER) query.length()); #else QByteArray query8 = query.toUtf8(); r = SQLPrepare(d->hStmt, - (SQLCHAR*) query8.constData(), + (SQLCHAR*) query8.data(), (SQLINTEGER) query8.length()); #endif @@ -1849,9 +1849,9 @@ bool QODBCDriver::open(const QString & db, r = SQLDriverConnect(d->hDbc, NULL, #ifdef UNICODE - toSQLTCHAR(connQStr).constData(), + toSQLTCHAR(connQStr).data(), #else - (SQLCHAR*)connQStr.toUtf8().constData(), + (SQLCHAR*)connQStr.toUtf8().data(), #endif (SQLSMALLINT)connQStr.length(), connOut.data(), @@ -2192,9 +2192,9 @@ QStringList QODBCDriver::tables(QSql::TableType type) const NULL, 0, #ifdef UNICODE - toSQLTCHAR(joinedTableTypeString).constData(), + toSQLTCHAR(joinedTableTypeString).data(), #else - (SQLCHAR*)joinedTableTypeString.toUtf8().constData(), + (SQLCHAR*)joinedTableTypeString.toUtf8().data(), #endif joinedTableTypeString.length() /* characters, not bytes */); @@ -2271,21 +2271,21 @@ QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const SQL_IS_UINTEGER); r = SQLPrimaryKeys(hStmt, #ifdef UNICODE - catalog.length() == 0 ? NULL : toSQLTCHAR(catalog).constData(), + catalog.length() == 0 ? NULL : toSQLTCHAR(catalog).data(), #else - catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toUtf8().constData(), + catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toUtf8().data(), #endif catalog.length(), #ifdef UNICODE - schema.length() == 0 ? NULL : toSQLTCHAR(schema).constData(), + schema.length() == 0 ? NULL : toSQLTCHAR(schema).data(), #else - schema.length() == 0 ? NULL : (SQLCHAR*)schema.toUtf8().constData(), + schema.length() == 0 ? NULL : (SQLCHAR*)schema.toUtf8().data(), #endif schema.length(), #ifdef UNICODE - toSQLTCHAR(table).constData(), + toSQLTCHAR(table).data(), #else - (SQLCHAR*)table.toUtf8().constData(), + (SQLCHAR*)table.toUtf8().data(), #endif table.length() /* in characters, not in bytes */); @@ -2296,21 +2296,21 @@ QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const r = SQLSpecialColumns(hStmt, SQL_BEST_ROWID, #ifdef UNICODE - catalog.length() == 0 ? NULL : toSQLTCHAR(catalog).constData(), + catalog.length() == 0 ? NULL : toSQLTCHAR(catalog).data(), #else - catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toUtf8().constData(), + catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toUtf8().data(), #endif catalog.length(), #ifdef UNICODE - schema.length() == 0 ? NULL : toSQLTCHAR(schema).constData(), + schema.length() == 0 ? NULL : toSQLTCHAR(schema).data(), #else - schema.length() == 0 ? NULL : (SQLCHAR*)schema.toUtf8().constData(), + schema.length() == 0 ? NULL : (SQLCHAR*)schema.toUtf8().data(), #endif schema.length(), #ifdef UNICODE - toSQLTCHAR(table).constData(), + toSQLTCHAR(table).data(), #else - (SQLCHAR*)table.toUtf8().constData(), + (SQLCHAR*)table.toUtf8().data(), #endif table.length(), SQL_SCOPE_CURROW, @@ -2396,21 +2396,21 @@ QSqlRecord QODBCDriver::record(const QString& tablename) const SQL_IS_UINTEGER); r = SQLColumns(hStmt, #ifdef UNICODE - catalog.length() == 0 ? NULL : toSQLTCHAR(catalog).constData(), + catalog.length() == 0 ? NULL : toSQLTCHAR(catalog).data(), #else - catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toUtf8().constData(), + catalog.length() == 0 ? NULL : (SQLCHAR*)catalog.toUtf8().data(), #endif catalog.length(), #ifdef UNICODE - schema.length() == 0 ? NULL : toSQLTCHAR(schema).constData(), + schema.length() == 0 ? NULL : toSQLTCHAR(schema).data(), #else - schema.length() == 0 ? NULL : (SQLCHAR*)schema.toUtf8().constData(), + schema.length() == 0 ? NULL : (SQLCHAR*)schema.toUtf8().data(), #endif schema.length(), #ifdef UNICODE - toSQLTCHAR(table).constData(), + toSQLTCHAR(table).data(), #else - (SQLCHAR*)table.toUtf8().constData(), + (SQLCHAR*)table.toUtf8().data(), #endif table.length(), NULL, -- cgit v0.12 From d88f9fbe1522c48dfef153eef768f9eec123ec9e Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Wed, 3 Mar 2010 09:35:00 +1000 Subject: Make test more reliable. --- .../qdeclarativeanimations/tst_qdeclarativeanimations.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp index 0c166df..f5e15fb 100644 --- a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp +++ b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp @@ -217,11 +217,11 @@ void tst_qdeclarativeanimations::resume() animation.setProperty("x"); animation.setFrom(10); animation.setTo(200); - animation.setDuration(500); + animation.setDuration(1000); QVERIFY(animation.from() == 10); animation.start(); - QTest::qWait(200); + QTest::qWait(400); animation.pause(); qreal x = rect.x(); QVERIFY(x != qreal(200) && x != qreal(10)); @@ -231,7 +231,7 @@ void tst_qdeclarativeanimations::resume() animation.resume(); QVERIFY(animation.isRunning()); QVERIFY(!animation.isPaused()); - QTest::qWait(200); + QTest::qWait(400); animation.stop(); QVERIFY(rect.x() > x); } -- cgit v0.12 From eaf436568b2e6870a72e97baf2837d320f5d8ec8 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Wed, 3 Mar 2010 09:35:50 +1000 Subject: Initialize variable before use. --- src/declarative/util/qdeclarativeanimation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index ebf1a20..7f4f1c0 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -2225,7 +2225,7 @@ struct PropertyUpdater : public QDeclarativeBulkValueUpdater bool fromSourced; bool fromDefined; bool *wasDeleted; - PropertyUpdater() : wasDeleted(0) {} + PropertyUpdater() : prevInterpolatorType(0), wasDeleted(0) {} ~PropertyUpdater() { if (wasDeleted) *wasDeleted = true; } void setValue(qreal v) { -- cgit v0.12 From 6c44ab0f6edebce1e7190b94ac5b74c81812f482 Mon Sep 17 00:00:00 2001 From: Bill King Date: Wed, 3 Mar 2010 10:01:47 +1000 Subject: Updating SQL binding docs to reflect reality. Task-number: QTBUG-7218 Reviewed-by: Justin McPherson --- src/sql/kernel/qsqlquery.cpp | 8 ++++++++ src/sql/kernel/qsqlresult.cpp | 10 +++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp index 6c6436f..430cf1a 100644 --- a/src/sql/kernel/qsqlquery.cpp +++ b/src/sql/kernel/qsqlquery.cpp @@ -999,10 +999,18 @@ bool QSqlQuery::execBatch(BatchExecutionMode mode) must be included when specifying the placeholder name. If \a paramType is QSql::Out or QSql::InOut, the placeholder will be overwritten with data from the database after the exec() call. + In this case, sufficient space must be pre-allocated to store + the result into. To bind a NULL value, use a null QVariant; for example, use \c {QVariant(QVariant::String)} if you are binding a string. + Values cannot be bound to multiple locations in the query, eg: + \code + INSERT INTO testtable (id, name, samename) VALUES (:id, :name, :name) + \endcode + Binding to name will bind to the first :name, but not the second. + \sa addBindValue(), prepare(), exec(), boundValue() boundValues() */ void QSqlQuery::bindValue(const QString& placeholder, const QVariant& val, diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp index 3d63f88..0c0c31c 100644 --- a/src/sql/kernel/qsqlresult.cpp +++ b/src/sql/kernel/qsqlresult.cpp @@ -707,7 +707,15 @@ void QSqlResult::bindValue(int index, const QVariant& val, QSql::ParamType param Binds the value \a val of parameter type \a paramType to the \a placeholder name in the current record (row). - Note that binding an undefined placeholder will result in undefined behavior. + Values cannot be bound to multiple locations in the query, eg: + \code + INSERT INTO testtable (id, name, samename) VALUES (:id, :name, :name) + \endcode + Binding to name will bind to the first :name, but not the second. + + \note Binding an undefined placeholder will result in undefined behavior. + + \sa QSqlQuery::bindValue() */ void QSqlResult::bindValue(const QString& placeholder, const QVariant& val, QSql::ParamType paramType) -- cgit v0.12 From 398f97c90f52a8927ac1efe3d7e272da900d6be3 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 3 Mar 2010 10:08:38 +1000 Subject: /src/imports/ now also contains plugins, so treat the same. --- tests/auto/headers/tst_headers.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/auto/headers/tst_headers.cpp b/tests/auto/headers/tst_headers.cpp index 3745767..12c5843 100644 --- a/tests/auto/headers/tst_headers.cpp +++ b/tests/auto/headers/tst_headers.cpp @@ -271,6 +271,7 @@ void tst_Headers::macros() if (header.endsWith("_p.h") || header.endsWith("_pch.h") || header.contains("global/qconfig-") || header.endsWith("/qconfig.h") || header.contains("/src/tools/") || header.contains("/src/plugins/") + || header.contains("/src/imports/") || header.endsWith("/qiconset.h") || header.endsWith("/qfeatures.h") || header.endsWith("qt_windows.h")) return; -- cgit v0.12 From c131c4d922bd381b44164673085fb83547375fd0 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Wed, 3 Mar 2010 11:04:07 +1000 Subject: Add WorkerScript docs and tests. Task-number: QT-2807 --- src/declarative/qml/qdeclarativeworkerscript.cpp | 83 +++++++++- tests/auto/declarative/declarative.pro | 1 + .../qdeclarativeworkerscript/data/script.js | 5 + .../qdeclarativeworkerscript/data/worker.qml | 27 +++ .../qdeclarativeworkerscript.pro | 9 + .../tst_qdeclarativeworkerscript.cpp | 184 +++++++++++++++++++++ 6 files changed, 308 insertions(+), 1 deletion(-) create mode 100644 tests/auto/declarative/qdeclarativeworkerscript/data/script.js create mode 100644 tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml create mode 100644 tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro create mode 100644 tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp index c1d090e..784353a 100644 --- a/src/declarative/qml/qdeclarativeworkerscript.cpp +++ b/src/declarative/qml/qdeclarativeworkerscript.cpp @@ -365,6 +365,8 @@ void QDeclarativeWorkerScriptEnginePrivate::processLoad(int id, const QUrl &url) workerEngine->evaluate(script); workerEngine->popContext(); + } else { + qWarning().nospace() << "WorkerScript: Cannot find source file " << url.toString(); } } @@ -382,7 +384,7 @@ QVariant QDeclarativeWorkerScriptEnginePrivate::scriptValueToVariant(const QScri quint32 length = (quint32)value.property(QLatin1String("length")).toNumber(); for (quint32 ii = 0; ii < length; ++ii) { - QVariant v = scriptValueToVariant(ii); + QVariant v = scriptValueToVariant(value.property(ii)); list << v; } @@ -561,6 +563,65 @@ void QDeclarativeWorkerScriptEngine::run() delete d->workerEngine; d->workerEngine = 0; } + +/*! + \qmlclass WorkerScript QDeclarativeWorkerScript + \brief The WorkerScript element enables the use of threads in QML. + + Use WorkerScript to run operations in a new thread. + This is useful for running operations in the background so + that the main GUI thread is not blocked. + + Messages can be passed between the new thread and the parent thread + using sendMessage() and the onMessage() handler. + + Here is an example: + + \qml + import Qt 4.6 + + Rectangle { + width: 300 + height: 300 + + Text { + id: myText + text: 'Click anywhere' + } + + WorkerScript { + id: myWorker + source: "script.js" + + onMessage: { + myText.text = messageObject.reply + } + } + + MouseArea { + anchors.fill: parent + onClicked: myWorker.sendMessage( {'x': mouse.x, 'y': mouse.y} ); + } + } + \endqml + + The above worker script specifies a javascript file, "script.js", that handles + the operations to be performed in the new thread: + + \qml + WorkerScript.onMessage = function(message) { + // ... long-running operations and calculations are done here + WorkerScript.sendMessage( {'reply': 'Mouse is at ' + message.x + ',' + message.y} ); + } + \endqml + + When the user clicks anywhere within the rectangle, \c sendMessage() is + called, triggering the \tt WorkerScript.onMessage() handler in + \tt source.js. This in turn sends a reply message that is then received + by the \tt onMessage() handler of \tt myWorker. + + \sa WorkerListModel +*/ QDeclarativeWorkerScript::QDeclarativeWorkerScript(QObject *parent) : QObject(parent), m_engine(0), m_scriptId(-1) { @@ -571,6 +632,12 @@ QDeclarativeWorkerScript::~QDeclarativeWorkerScript() if (m_scriptId != -1) m_engine->removeWorkerScript(m_scriptId); } +/*! + \qmlproperty url WorkerScript::source + + This holds the url of the javascript file that implements the + \tt WorkerScript.onMessage() handler for threaded operations. +*/ QUrl QDeclarativeWorkerScript::source() const { return m_source; @@ -589,6 +656,13 @@ void QDeclarativeWorkerScript::setSource(const QUrl &source) emit sourceChanged(); } +/* + \qmlmethod WorkerScript::sendMessage(jsobject message) + + Sends the given \a message to a worker script handler in another + thread. The other worker script handler can receive this message + through the onMessage() handler. +*/ void QDeclarativeWorkerScript::sendMessage(const QScriptValue &message) { if (!m_engine) { @@ -616,6 +690,13 @@ void QDeclarativeWorkerScript::componentComplete() } } +/*! + \qmlsignal WorkerScript::onMessage(jsobject msg) + + This handler is called when a message \a msg is received from a worker + script in another thread through a call to sendMessage(). +*/ + bool QDeclarativeWorkerScript::event(QEvent *event) { if (event->type() == (QEvent::Type)WorkerDataEvent::WorkerData) { diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index 38c75a8..200d831 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -55,6 +55,7 @@ SUBDIRS += \ qdeclarativexmllistmodel \ # Cover qpacketprotocol \ # Cover qdeclarativerepeater \ # Cover + qdeclarativeworkerscript \ # Cover qdeclarativeworkerlistmodel \ # Cover qdeclarativevaluetypes \ # Cover qdeclarativexmlhttprequest \ # Cover diff --git a/tests/auto/declarative/qdeclarativeworkerscript/data/script.js b/tests/auto/declarative/qdeclarativeworkerscript/data/script.js new file mode 100644 index 0000000..09199de --- /dev/null +++ b/tests/auto/declarative/qdeclarativeworkerscript/data/script.js @@ -0,0 +1,5 @@ +WorkerScript.onMessage = function(msg) { + WorkerScript.sendMessage(msg) +} + + diff --git a/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml b/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml new file mode 100644 index 0000000..2982010 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml @@ -0,0 +1,27 @@ +import Qt 4.6 + +WorkerScript { + id: worker + source: "script.js" + + property bool done : false + property var response + + function testSend(value) { + worker.sendMessage(value) + } + + function testSendLiteral(value) { + eval('worker.sendMessage(' + value +')') + } + + function compareLiteralResponse(expected) { + var e = eval('(' + expected + ')') + return worker.response == e + } + + onMessage: { + worker.done = true + worker.response = messageObject + } +} diff --git a/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro b/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro new file mode 100644 index 0000000..0543ff6 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro @@ -0,0 +1,9 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative +QT += script +macx:CONFIG -= app_bundle + +SOURCES += tst_qdeclarativeworkerscript.cpp + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp new file mode 100644 index 0000000..841a0ee --- /dev/null +++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp @@ -0,0 +1,184 @@ +/**************************************************************************** +** +** 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 +#include +#include + +#include +#include +#include + +#include +#include "../../../shared/util.h" + +Q_DECLARE_METATYPE(QList) +Q_DECLARE_METATYPE(QScriptValue) + +class tst_QDeclarativeWorkerScript : public QObject +{ + Q_OBJECT +public: + tst_QDeclarativeWorkerScript() {} +private slots: + void source(); + void source_data(); + void messaging(); + void messaging_data(); + void messaging_sendQObjectList(); + void messaging_sendJsObject(); + +private: + void waitForEchoMessage(QDeclarativeWorkerScript *worker) { + const QMetaObject *mo = worker->metaObject(); + int index = mo->indexOfProperty("done"); + QVERIFY(index >= 0); + QTRY_COMPARE(mo->property(index).read(worker).toBool(), true); + QTRY_COMPARE(mo->property(mo->indexOfProperty("done")).read(worker).toBool(), true); + } + + QDeclarativeEngine m_engine; +}; + +void tst_QDeclarativeWorkerScript::source() +{ + QFETCH(QUrl, source); + QFETCH(bool, valid); + + QDeclarativeComponent component(&m_engine); + component.setData("import Qt 4.6\nWorkerScript { source: '" + source.toString().toUtf8() + "'; }", QUrl()); + + if (!valid) { + QByteArray w = "WorkerScript: Cannot find source file \"" + source.toString().toUtf8() + "\""; + QTest::ignoreMessage(QtWarningMsg, w.constData()); + } + QDeclarativeWorkerScript *item = qobject_cast(component.create()); + QVERIFY(item != 0); + + QCOMPARE(item->source(), source); + + qApp->processEvents(); +} + +void tst_QDeclarativeWorkerScript::source_data() +{ + QTest::addColumn("source"); + QTest::addColumn("valid"); + + QTest::newRow("valid") << QUrl::fromLocalFile(SRCDIR "/data/worker.qml") << true; + QTest::newRow("invalid") << QUrl("file:///asdjfk.js") << false; +} + +void tst_QDeclarativeWorkerScript::messaging() +{ + QFETCH(QVariant, value); + + QDeclarativeComponent component(&m_engine, SRCDIR "/data/worker.qml"); + QDeclarativeWorkerScript *worker = qobject_cast(component.create()); + QVERIFY(worker != 0); + + QVERIFY(QMetaObject::invokeMethod(worker, "testSend", Q_ARG(QVariant, value))); + waitForEchoMessage(worker); + + const QMetaObject *mo = worker->metaObject(); + QCOMPARE(mo->property(mo->indexOfProperty("response")).read(worker).value(), value); + + qApp->processEvents(); +} + +void tst_QDeclarativeWorkerScript::messaging_data() +{ + QTest::addColumn("value"); + + QTest::newRow("invalid") << QVariant(); + QTest::newRow("bool") << qVariantFromValue(true); + QTest::newRow("int") << qVariantFromValue(1001); + QTest::newRow("real") << qVariantFromValue(10334.323); + QTest::newRow("string") << qVariantFromValue(QString("More cheeeese, Gromit!")); + QTest::newRow("variant list") << qVariantFromValue((QVariantList() << "a" << "b" << "c")); +} + +void tst_QDeclarativeWorkerScript::messaging_sendQObjectList() +{ + // Not allowed to send QObjects other than QDeclarativeWorkerListModelAgent + // instances. If objects are sent in a list, they will be sent as 'undefined' + // js values. + + QDeclarativeComponent component(&m_engine, SRCDIR "/data/worker.qml"); + QDeclarativeWorkerScript *worker = qobject_cast(component.create()); + QVERIFY(worker != 0); + + QVariantList objects; + for (int i=0; i<3; i++) + objects << qVariantFromValue(new QObject(this)); + + QVERIFY(QMetaObject::invokeMethod(worker, "testSend", Q_ARG(QVariant, qVariantFromValue(objects)))); + waitForEchoMessage(worker); + + const QMetaObject *mo = worker->metaObject(); + QVariantList result = mo->property(mo->indexOfProperty("response")).read(worker).value(); + QCOMPARE(result, (QVariantList() << QVariant() << QVariant() << QVariant())); + + qApp->processEvents(); +} + +void tst_QDeclarativeWorkerScript::messaging_sendJsObject() +{ + QDeclarativeComponent component(&m_engine, SRCDIR "/data/worker.qml"); + QDeclarativeWorkerScript *worker = qobject_cast(component.create()); + QVERIFY(worker != 0); + + QString jsObject = "{'spell power': 3101, 'haste': 1125}"; + + QVERIFY(QMetaObject::invokeMethod(worker, "testSendLiteral", Q_ARG(QVariant, jsObject))); + waitForEchoMessage(worker); + + QVariant result = qVariantFromValue(false); + QVERIFY(QMetaObject::invokeMethod(worker, "compareLiteralResponse", Qt::DirectConnection, + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, jsObject))); + QVERIFY(result.toBool()); + + qApp->processEvents(); +} + +QTEST_MAIN(tst_QDeclarativeWorkerScript) + +#include "tst_qdeclarativeworkerscript.moc" + -- cgit v0.12 From d2f456c8e94b6c7752818a9e3c819784e18237f0 Mon Sep 17 00:00:00 2001 From: Kurt Korbatits Date: Tue, 2 Mar 2010 11:12:34 +1000 Subject: Fixed compiler warnings when compiling multimedia module. Reviewed-by:Andrew den Exter --- src/multimedia/base/qmediaserviceprovider.cpp | 14 +++++++++----- src/multimedia/qml/qsoundeffect_qsound_p.cpp | 2 +- src/multimedia/qml/wavedecoder_p.cpp | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/multimedia/base/qmediaserviceprovider.cpp b/src/multimedia/base/qmediaserviceprovider.cpp index eb6505c..d51d682 100644 --- a/src/multimedia/base/qmediaserviceprovider.cpp +++ b/src/multimedia/base/qmediaserviceprovider.cpp @@ -268,7 +268,7 @@ class QPluginServiceProvider : public QMediaServiceProvider public: QMediaService* requestService(const QByteArray &type, const QMediaServiceProviderHint &hint) { - QString key(type); + QString key(QString::fromLatin1(type.constData(),type.length())); QListplugins; foreach (QObject *obj, loader()->instances(key)) { @@ -383,7 +383,8 @@ public: const QStringList& codecs, int flags) const { - QList instances = loader()->instances(serviceType); + QList instances = loader()->instances( + QString::fromLatin1(serviceType.constData(),serviceType.length())); if (instances.isEmpty()) return QtMultimedia::NotSupported; @@ -424,7 +425,8 @@ public: QStringList supportedMimeTypes(const QByteArray &serviceType, int flags) const { - QList instances = loader()->instances(serviceType); + QList instances = loader()->instances( + QString::fromLatin1(serviceType.constData(),serviceType.length())); QStringList supportedTypes; @@ -457,7 +459,8 @@ public: { QList res; - foreach(QObject *obj, loader()->instances(serviceType)) { + foreach(QObject *obj, loader()->instances( + QString::fromLatin1(serviceType.constData(),serviceType.length()))) { QMediaServiceSupportedDevicesInterface *iface = qobject_cast(obj); @@ -471,7 +474,8 @@ public: QString deviceDescription(const QByteArray &serviceType, const QByteArray &device) { - foreach(QObject *obj, loader()->instances(serviceType)) { + foreach(QObject *obj, loader()->instances( + QString::fromLatin1(serviceType.constData(),serviceType.length()))) { QMediaServiceSupportedDevicesInterface *iface = qobject_cast(obj); diff --git a/src/multimedia/qml/qsoundeffect_qsound_p.cpp b/src/multimedia/qml/qsoundeffect_qsound_p.cpp index 0292d26..df160a9 100644 --- a/src/multimedia/qml/qsoundeffect_qsound_p.cpp +++ b/src/multimedia/qml/qsoundeffect_qsound_p.cpp @@ -157,7 +157,7 @@ void QSoundEffectPrivate::setMedia(const QMediaContent &media) { m_queued = false; - if (media.isNull() || media.canonicalUrl().scheme() != "file") { + if (media.isNull() || media.canonicalUrl().scheme() != QLatin1String("file")) { m_media = QMediaContent(); return; } diff --git a/src/multimedia/qml/wavedecoder_p.cpp b/src/multimedia/qml/wavedecoder_p.cpp index b7d6101..f2277ae 100644 --- a/src/multimedia/qml/wavedecoder_p.cpp +++ b/src/multimedia/qml/wavedecoder_p.cpp @@ -122,7 +122,7 @@ void WaveDecoder::handleData() else { int bps = qFromLittleEndian(header.wave.bitsPerSample); - format.setCodec("audio/pcm"); + format.setCodec(QLatin1String("audio/pcm")); format.setSampleType(bps == 8 ? QAudioFormat::UnSignedInt : QAudioFormat::SignedInt); format.setByteOrder(QAudioFormat::LittleEndian); format.setFrequency(qFromLittleEndian(header.wave.sampleRate)); -- cgit v0.12 From fa23a63af230f0c917cc56e6c652c01e6695ef63 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 3 Mar 2010 12:56:07 +1000 Subject: Fix mouse stealing in nested flickables. Set intent to steal mouse, but don't steal the initiating event. This allows other, higher Flickables to override lower. Task-number: QTBUG-5292 --- .../graphicsitems/qdeclarativeflickable.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index c54ddd0..2fdd720 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -682,7 +682,7 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent else rejectY = true; } - if (!rejectY) { + if (!rejectY && stealMouse) { _moveY.setValue(newY); moved = true; } @@ -709,7 +709,7 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent else rejectX = true; } - if (!rejectX) { + if (!rejectX && stealMouse) { _moveX.setValue(newX); moved = true; } @@ -752,6 +752,8 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent void QDeclarativeFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *event) { Q_Q(QDeclarativeFlickable); + stealMouse = false; + q->setKeepMouseGrab(false); pressed = false; if (lastPosTime.isNull()) return; @@ -781,7 +783,6 @@ void QDeclarativeFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEv fixupX(); } - stealMouse = false; lastPosTime = QTime(); if (!timeline.isActive()) @@ -804,6 +805,8 @@ void QDeclarativeFlickable::mouseMoveEvent(QGraphicsSceneMouseEvent *event) Q_D(QDeclarativeFlickable); if (d->interactive) { d->handleMouseMoveEvent(event); + if (d->stealMouse) + setKeepMouseGrab(true); event->accept(); } else { QDeclarativeItem::mouseMoveEvent(event); @@ -1141,7 +1144,8 @@ bool QDeclarativeFlickable::sendMouseEvent(QGraphicsSceneMouseEvent *event) QGraphicsScene *s = scene(); QDeclarativeItem *grabber = s ? qobject_cast(s->mouseGrabberItem()) : 0; - if ((d->stealMouse || myRect.contains(event->scenePos().toPoint())) && (!grabber || !grabber->keepMouseGrab())) { + bool stealThisEvent = d->stealMouse; + if ((stealThisEvent || myRect.contains(event->scenePos().toPoint())) && (!grabber || !grabber->keepMouseGrab())) { mouseEvent.setAccepted(false); for (int i = 0x1; i <= 0x10; i <<= 1) { if (event->buttons() & i) { @@ -1176,17 +1180,19 @@ bool QDeclarativeFlickable::sendMouseEvent(QGraphicsSceneMouseEvent *event) break; } grabber = qobject_cast(s->mouseGrabberItem()); - if (grabber && d->stealMouse && !grabber->keepMouseGrab() && grabber != this) { + if (grabber && stealThisEvent && !grabber->keepMouseGrab() && grabber != this) { d->clearDelayedPress(); grabMouse(); } - return d->stealMouse || d->delayedPressEvent; + return stealThisEvent || d->delayedPressEvent; } else if (!d->lastPosTime.isNull()) { d->lastPosTime = QTime(); } - if (mouseEvent.type() == QEvent::GraphicsSceneMouseRelease) + if (mouseEvent.type() == QEvent::GraphicsSceneMouseRelease) { d->clearDelayedPress(); + d->stealMouse = false; + } return false; } -- cgit v0.12 From a2bddc74ca9d0c09f7c79077e0fbd981f1e9eccb Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 3 Mar 2010 13:05:28 +1000 Subject: Ensure error is received - the root object is INITIALLY zero. --- .../auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index b677fec..dea88c4 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -663,10 +663,12 @@ void tst_qdeclarativetextedit::delegateLoading() QVERIFY(delegate); view->setSource(QUrl("http://localhost:42332/cursorHttpTestFail1.qml")); view->show(); + QTRY_VERIFY(view->status()==QDeclarativeView::Error); view->setFocus(); QTRY_VERIFY(!view->rootObject()); // there is fail item inside this test view->setSource(QUrl("http://localhost:42332/cursorHttpTestFail2.qml")); view->show(); + QTRY_VERIFY(view->status()==QDeclarativeView::Error); view->setFocus(); QTRY_VERIFY(!view->rootObject()); // there is fail item inside this test //ErrorB should get a component which is ready but component.create() returns null -- cgit v0.12 From 2623211c0cd47a08b0acbd17b5ba42c2222a9e25 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 3 Mar 2010 13:13:09 +1000 Subject: runnable from elsewhere --- .../declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp b/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp index 3a8a892..d23d74c 100644 --- a/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp +++ b/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp @@ -365,7 +365,7 @@ void tst_QDeclarativePositioners::test_grid_animated() } void tst_QDeclarativePositioners::test_propertychanges() { - QDeclarativeView *canvas = createView("data/propertychanges.qml"); + QDeclarativeView *canvas = createView(SRCDIR "/data/propertychanges.qml"); QDeclarativeGrid *grid = qobject_cast(canvas->rootObject()); QDeclarativeTransition *rowTransition = canvas->rootObject()->findChild("rowTransition"); -- cgit v0.12 From c92b1da931a56f97bf1812db922d43c8f692de8f Mon Sep 17 00:00:00 2001 From: Dmytro Poplavskiy Date: Wed, 3 Mar 2010 13:13:45 +1000 Subject: Gstreamer playback backend: Start loading media on setMedia(), without waiting for play() or pause(). To keep behaviour consisten with the rest of backends. Reviewed-by: Andrew den Exter --- .../mediaplayer/qgstreamerplayercontrol.cpp | 133 ++++++++++++++++++--- .../mediaplayer/qgstreamerplayercontrol.h | 7 ++ .../mediaplayer/qgstreamerplayersession.cpp | 94 +++++++++------ .../mediaplayer/qgstreamerplayersession.h | 11 +- 4 files changed, 186 insertions(+), 59 deletions(-) diff --git a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp index 2d7aaa8..e646693 100644 --- a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp +++ b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp @@ -59,6 +59,9 @@ QT_BEGIN_NAMESPACE QGstreamerPlayerControl::QGstreamerPlayerControl(QGstreamerPlayerSession *session, QObject *parent) : QMediaPlayerControl(parent) , m_session(session) + , m_state(QMediaPlayer::StoppedState) + , m_mediaStatus(QMediaPlayer::NoMedia) + , m_bufferProgress(-1) , m_stream(0) , m_fifoNotifier(0) , m_fifoCanWrite(false) @@ -77,11 +80,11 @@ QGstreamerPlayerControl::QGstreamerPlayerControl(QGstreamerPlayerSession *sessio connect(m_session, SIGNAL(volumeChanged(int)), this, SIGNAL(volumeChanged(int))); connect(m_session, SIGNAL(stateChanged(QMediaPlayer::State)), - this, SIGNAL(stateChanged(QMediaPlayer::State))); - connect(m_session, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), - this, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus))); + this, SLOT(updateState(QMediaPlayer::State))); connect(m_session,SIGNAL(bufferingProgressChanged(int)), - this, SIGNAL(bufferStatusChanged(int))); + this, SLOT(setBufferProgress(int))); + connect(m_session, SIGNAL(playbackFinished()), + this, SLOT(processEOS())); connect(m_session, SIGNAL(audioAvailableChanged(bool)), this, SIGNAL(audioAvailableChanged(bool))); connect(m_session, SIGNAL(videoAvailableChanged(bool)), @@ -114,17 +117,20 @@ qint64 QGstreamerPlayerControl::duration() const QMediaPlayer::State QGstreamerPlayerControl::state() const { - return m_session->state(); + return m_state; } QMediaPlayer::MediaStatus QGstreamerPlayerControl::mediaStatus() const { - return m_session->mediaStatus(); + return m_mediaStatus; } int QGstreamerPlayerControl::bufferStatus() const { - return 100; + if (m_bufferProgress == -1) { + return m_session->state() == QMediaPlayer::StoppedState ? 0 : 100; + } else + return m_bufferProgress; } int QGstreamerPlayerControl::volume() const @@ -169,23 +175,33 @@ void QGstreamerPlayerControl::setPosition(qint64 pos) void QGstreamerPlayerControl::play() { - m_session->play(); - - if (m_fifoFd[1] >= 0) { - m_fifoCanWrite = true; - - writeFifo(); + if (m_session->play()) { + if (m_state != QMediaPlayer::PlayingState) + emit stateChanged(m_state = QMediaPlayer::PlayingState); } } void QGstreamerPlayerControl::pause() { - m_session->pause(); + if (m_session->pause()) { + if (m_state != QMediaPlayer::PausedState) + emit stateChanged(m_state = QMediaPlayer::PausedState); + } } void QGstreamerPlayerControl::stop() { - m_session->stop(); + if (m_state != QMediaPlayer::StoppedState) { + m_session->pause(); + if (!m_session->seek(0)) { + m_bufferProgress = -1; + m_session->stop(); + m_session->pause(); + } + emit positionChanged(0); + if (m_state != QMediaPlayer::StoppedState) + emit stateChanged(m_state = QMediaPlayer::StoppedState); + } } void QGstreamerPlayerControl::setVolume(int volume) @@ -210,8 +226,15 @@ const QIODevice *QGstreamerPlayerControl::mediaStream() const void QGstreamerPlayerControl::setMedia(const QMediaContent &content, QIODevice *stream) { + QMediaPlayer::State oldState = m_state; + m_state = QMediaPlayer::StoppedState; m_session->stop(); + if (m_bufferProgress != -1) { + m_bufferProgress = -1; + emit bufferStatusChanged(0); + } + if (m_stream) { closeFifo(); @@ -234,7 +257,25 @@ void QGstreamerPlayerControl::setMedia(const QMediaContent &content, QIODevice * m_session->load(url); + if (m_fifoFd[1] >= 0) { + m_fifoCanWrite = true; + + writeFifo(); + } + + if (!url.isEmpty()) { + if (m_mediaStatus != QMediaPlayer::LoadingMedia) + emit mediaStatusChanged(m_mediaStatus = QMediaPlayer::LoadingMedia); + m_session->pause(); + } else { + if (m_mediaStatus != QMediaPlayer::NoMedia) + emit mediaStatusChanged(m_mediaStatus = QMediaPlayer::NoMedia); + setBufferProgress(0); + } + emit mediaChanged(m_currentResource); + if (m_state != oldState) + emit stateChanged(m_state); } void QGstreamerPlayerControl::setVideoOutput(QObject *output) @@ -252,6 +293,68 @@ bool QGstreamerPlayerControl::isVideoAvailable() const return m_session->isVideoAvailable(); } +void QGstreamerPlayerControl::updateState(QMediaPlayer::State state) +{ + QMediaPlayer::MediaStatus oldStatus = m_mediaStatus; + + switch (state) { + case QMediaPlayer::StoppedState: + if (m_state != QMediaPlayer::StoppedState) + emit stateChanged(m_state = QMediaPlayer::StoppedState); + break; + + case QMediaPlayer::PlayingState: + case QMediaPlayer::PausedState: + if (m_state == QMediaPlayer::StoppedState) + m_mediaStatus = QMediaPlayer::LoadedMedia; + else { + if (m_bufferProgress == -1) + m_mediaStatus = QMediaPlayer::BufferedMedia; + } + break; + } + + if (m_mediaStatus != oldStatus) + emit mediaStatusChanged(m_mediaStatus); +} + +void QGstreamerPlayerControl::processEOS() +{ + m_mediaStatus = QMediaPlayer::EndOfMedia; + m_state = QMediaPlayer::StoppedState; + + emit stateChanged(m_state); + emit mediaStatusChanged(m_mediaStatus); +} + +void QGstreamerPlayerControl::setBufferProgress(int progress) +{ + if (m_bufferProgress == progress || m_mediaStatus == QMediaPlayer::NoMedia) + return; + + QMediaPlayer::MediaStatus oldStatus = m_mediaStatus; + + m_bufferProgress = progress; + + if (m_state == QMediaPlayer::StoppedState) { + m_mediaStatus = QMediaPlayer::LoadedMedia; + } else { + if (m_bufferProgress < 100) { + m_mediaStatus = QMediaPlayer::StalledMedia; + m_session->pause(); + } else { + m_mediaStatus = QMediaPlayer::BufferedMedia; + if (m_state == QMediaPlayer::PlayingState) + m_session->play(); + } + } + + if (m_mediaStatus != oldStatus) + emit mediaStatusChanged(m_mediaStatus); + + emit bufferStatusChanged(m_bufferProgress); +} + void QGstreamerPlayerControl::writeFifo() { if (m_fifoCanWrite) { diff --git a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.h b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.h index ae0f8b6..0c53945 100644 --- a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.h +++ b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayercontrol.h @@ -107,11 +107,18 @@ private Q_SLOTS: void writeFifo(); void fifoReadyWrite(int socket); + void updateState(QMediaPlayer::State); + void processEOS(); + void setBufferProgress(int progress); + private: bool openFifo(); void closeFifo(); QGstreamerPlayerSession *m_session; + QMediaPlayer::State m_state; + QMediaPlayer::MediaStatus m_mediaStatus; + int m_bufferProgress; QMediaContent m_currentResource; QIODevice *m_stream; QSocketNotifier *m_fifoNotifier; diff --git a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp index 600621e..e80e820 100644 --- a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp +++ b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp @@ -57,7 +57,6 @@ QT_BEGIN_NAMESPACE QGstreamerPlayerSession::QGstreamerPlayerSession(QObject *parent) :QObject(parent), m_state(QMediaPlayer::StoppedState), - m_mediaStatus(QMediaPlayer::UnknownMediaStatus), m_busHelper(0), m_playbin(0), m_nullVideoOutput(0), @@ -115,6 +114,7 @@ QGstreamerPlayerSession::~QGstreamerPlayerSession() void QGstreamerPlayerSession::load(const QUrl &url) { m_url = url; + if (m_playbin) { m_tags.clear(); emit tagsChanged(); @@ -259,26 +259,36 @@ bool QGstreamerPlayerSession::isSeekable() const return m_seekable; } -void QGstreamerPlayerSession::play() +bool QGstreamerPlayerSession::play() { if (m_playbin) { if (gst_element_set_state(m_playbin, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE) { qWarning() << "GStreamer; Unable to play -" << m_url.toString(); - m_state = QMediaPlayer::StoppedState; - m_mediaStatus = QMediaPlayer::InvalidMedia; + m_state = QMediaPlayer::StoppedState; emit stateChanged(m_state); - emit mediaStatusChanged(m_mediaStatus); - emit error(int(QMediaPlayer::ResourceError), tr("Unable to play %1").arg(m_url.path())); - } + } else + return true; } + + return false; } -void QGstreamerPlayerSession::pause() +bool QGstreamerPlayerSession::pause() { - if (m_playbin) - gst_element_set_state(m_playbin, GST_STATE_PAUSED); + if (m_playbin) { + if (gst_element_set_state(m_playbin, GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE) { + qWarning() << "GStreamer; Unable to play -" << m_url.toString(); + m_state = QMediaPlayer::StoppedState; + + emit stateChanged(m_state); + emit error(int(QMediaPlayer::ResourceError), tr("Unable to play %1").arg(m_url.path())); + } else + return true; + } + + return false; } void QGstreamerPlayerSession::stop() @@ -292,12 +302,14 @@ void QGstreamerPlayerSession::stop() } } -void QGstreamerPlayerSession::seek(qint64 ms) +bool QGstreamerPlayerSession::seek(qint64 ms) { if (m_playbin && m_state != QMediaPlayer::StoppedState) { gint64 position = (gint64)ms * 1000000; - gst_element_seek_simple(m_playbin, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH, position); + return gst_element_seek_simple(m_playbin, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH, position); } + + return false; } void QGstreamerPlayerSession::setVolume(int volume) @@ -388,14 +400,6 @@ void QGstreamerPlayerSession::setSeekable(bool seekable) } } -void QGstreamerPlayerSession::setMediaStatus(QMediaPlayer::MediaStatus status) -{ - if (m_mediaStatus != status) { - m_mediaStatus = status; - emit mediaStatusChanged(status); - } -} - bool QGstreamerPlayerSession::processSyncMessage(const QGstreamerMessage &message) { GstMessage* gm = message.rawMessage(); @@ -440,9 +444,6 @@ void QGstreamerPlayerSession::busMessage(const QGstreamerMessage &message) if (GST_MESSAGE_SRC(gm) == GST_OBJECT_CAST(m_playbin)) { switch (GST_MESSAGE_TYPE(gm)) { - case GST_MESSAGE_DURATION: - break; - case GST_MESSAGE_STATE_CHANGED: { GstState oldState; @@ -462,24 +463,19 @@ void QGstreamerPlayerSession::busMessage(const QGstreamerMessage &message) switch (newState) { case GST_STATE_VOID_PENDING: case GST_STATE_NULL: - setMediaStatus(QMediaPlayer::UnknownMediaStatus); setSeekable(false); if (m_state != QMediaPlayer::StoppedState) emit stateChanged(m_state = QMediaPlayer::StoppedState); break; case GST_STATE_READY: - setMediaStatus(QMediaPlayer::LoadedMedia); setSeekable(false); if (m_state != QMediaPlayer::StoppedState) emit stateChanged(m_state = QMediaPlayer::StoppedState); break; case GST_STATE_PAUSED: - //don't emit state changes for intermediate states - if (m_state != QMediaPlayer::PausedState && pending == GST_STATE_VOID_PENDING) + if (m_state != QMediaPlayer::PausedState) emit stateChanged(m_state = QMediaPlayer::PausedState); - setMediaStatus(QMediaPlayer::LoadedMedia); - //check for seekable if (oldState == GST_STATE_READY) { /* @@ -513,17 +509,13 @@ void QGstreamerPlayerSession::busMessage(const QGstreamerMessage &message) if (m_state != QMediaPlayer::PlayingState) emit stateChanged(m_state = QMediaPlayer::PlayingState); + break; } } break; case GST_MESSAGE_EOS: - if (m_state != QMediaPlayer::StoppedState) - emit stateChanged(m_state = QMediaPlayer::StoppedState); - - setMediaStatus(QMediaPlayer::EndOfMedia); - emit playbackFinished(); break; @@ -546,7 +538,11 @@ void QGstreamerPlayerSession::busMessage(const QGstreamerMessage &message) case GST_MESSAGE_INFO: break; case GST_MESSAGE_BUFFERING: - setMediaStatus(QMediaPlayer::BufferingMedia); + { + int progress = 0; + gst_message_parse_buffering(gm, &progress); + emit bufferingProgressChanged(progress); + } break; case GST_MESSAGE_STATE_DIRTY: case GST_MESSAGE_STEP_DONE: @@ -556,8 +552,32 @@ void QGstreamerPlayerSession::busMessage(const QGstreamerMessage &message) case GST_MESSAGE_STRUCTURE_CHANGE: case GST_MESSAGE_APPLICATION: case GST_MESSAGE_ELEMENT: + break; case GST_MESSAGE_SEGMENT_START: + { + const GstStructure *structure = gst_message_get_structure(gm); + qint64 position = g_value_get_int64(gst_structure_get_value(structure, "position")); + position /= 1000000; + m_lastPosition = position; + emit positionChanged(position); + } + break; case GST_MESSAGE_SEGMENT_DONE: + break; + case GST_MESSAGE_DURATION: + { + GstFormat format = GST_FORMAT_TIME; + gint64 duration = 0; + + if (gst_element_query_duration(m_playbin, &format, &duration)) { + int newDuration = duration / 1000000; + if (m_duration != newDuration) { + m_duration = newDuration; + emit durationChanged(m_duration); + } + } + } + break; case GST_MESSAGE_LATENCY: #if (GST_VERSION_MAJOR >= 0) && (GST_VERSION_MINOR >= 10) && (GST_VERSION_MICRO >= 13) case GST_MESSAGE_ASYNC_START: @@ -604,7 +624,7 @@ void QGstreamerPlayerSession::getStreamsInfo() haveAudio = audioStreamsCount > 0; haveVideo = videoStreamsCount > 0; - m_playbin2StreamOffset[QMediaStreamsControl::AudioStream] = 0; + /*m_playbin2StreamOffset[QMediaStreamsControl::AudioStream] = 0; m_playbin2StreamOffset[QMediaStreamsControl::VideoStream] = audioStreamsCount; m_playbin2StreamOffset[QMediaStreamsControl::SubPictureStream] = audioStreamsCount+videoStreamsCount; @@ -648,7 +668,9 @@ void QGstreamerPlayerSession::getStreamsInfo() } m_streamProperties.append(streamProperties); + } + */ #else enum { diff --git a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.h b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.h index d650ec7..edfec5b 100644 --- a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.h +++ b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.h @@ -71,7 +71,6 @@ public: QUrl url() const; QMediaPlayer::State state() const { return m_state; } - QMediaPlayer::MediaStatus mediaStatus() const { return m_mediaStatus; } qint64 duration() const; qint64 position() const; @@ -105,11 +104,11 @@ public: public slots: void load(const QUrl &url); - void play(); - void pause(); + bool play(); + bool pause(); void stop(); - void seek(qint64 pos); + bool seek(qint64 pos); void setVolume(int volume); void setMuted(bool muted); @@ -118,7 +117,6 @@ signals: void durationChanged(qint64 duration); void positionChanged(qint64 position); void stateChanged(QMediaPlayer::State state); - void mediaStatusChanged(QMediaPlayer::MediaStatus mediaStatus); void volumeChanged(int volume); void mutedStateChanged(bool muted); void audioAvailableChanged(bool audioAvailable); @@ -137,11 +135,8 @@ private slots: void setSeekable(bool); private: - void setMediaStatus(QMediaPlayer::MediaStatus); - QUrl m_url; QMediaPlayer::State m_state; - QMediaPlayer::MediaStatus m_mediaStatus; QGstreamerBusHelper* m_busHelper; GstElement* m_playbin; GstElement* m_nullVideoOutput; -- cgit v0.12 From e6e7dd15ca71d071ad3be5a0a5b300c44ca3070a Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 3 Mar 2010 13:14:37 +1000 Subject: remove debugger --- .../qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp index f3caa7f..92f7aef 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp +++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp @@ -50,7 +50,6 @@ class tst_qdeclarativemoduleplugin : public QObject public: tst_qdeclarativemoduleplugin() { QCoreApplication::addLibraryPath(QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("plugin")); -qDebug() << QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("plugin"); } private slots: -- cgit v0.12 From 991398a5a921e1f01bb8966d3a6bf4f636a1fa62 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 3 Mar 2010 13:35:44 +1000 Subject: make runnable from elsewhere --- .../qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp b/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp index 37d48fa..7dec0ee 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp @@ -1168,7 +1168,7 @@ void tst_qdeclarativexmlhttprequest::redirects() TestHTTPServer server(SERVER_PORT); QVERIFY(server.isValid()); server.addRedirect("redirect.html", "http://127.0.0.1:14445/redirecttarget.html"); - server.serveDirectory("data"); + server.serveDirectory(SRCDIR "/data"); QDeclarativeComponent component(&engine, TEST_FILE("redirects.qml")); QObject *object = component.beginCreate(engine.rootContext()); @@ -1187,7 +1187,7 @@ void tst_qdeclarativexmlhttprequest::redirects() TestHTTPServer server(SERVER_PORT); QVERIFY(server.isValid()); server.addRedirect("redirect.html", "http://127.0.0.1:14445/redirectmissing.html"); - server.serveDirectory("data"); + server.serveDirectory(SRCDIR "/data"); QDeclarativeComponent component(&engine, TEST_FILE("redirectError.qml")); QObject *object = component.beginCreate(engine.rootContext()); @@ -1206,7 +1206,7 @@ void tst_qdeclarativexmlhttprequest::redirects() TestHTTPServer server(SERVER_PORT); QVERIFY(server.isValid()); server.addRedirect("redirect.html", "http://127.0.0.1:14445/redirect.html"); - server.serveDirectory("data"); + server.serveDirectory(SRCDIR "/data"); QDeclarativeComponent component(&engine, TEST_FILE("redirectRecur.qml")); QObject *object = component.beginCreate(engine.rootContext()); -- cgit v0.12 From fdc857a176cf86970981e6d3c814725ca674b307 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Wed, 3 Mar 2010 14:06:35 +1000 Subject: Add import Qt.widgets 4.6 to layout.qml example --- examples/declarative/layouts/layouts.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/declarative/layouts/layouts.qml b/examples/declarative/layouts/layouts.qml index accd969..4b2a3f8 100644 --- a/examples/declarative/layouts/layouts.qml +++ b/examples/declarative/layouts/layouts.qml @@ -1,5 +1,5 @@ import Qt 4.6 - +import Qt.widgets 4.6 Item { id: resizable width:400 -- cgit v0.12 From 24a695673cc53b224dd3fac44e924a41f8ea20a5 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 3 Mar 2010 14:22:45 +1000 Subject: Fix settings (was not exported type). --- src/imports/webkit/plugin.cpp | 1 + src/imports/webkit/qdeclarativewebview.cpp | 2 +- src/imports/webkit/qdeclarativewebview_p.h | 5 +++-- src/imports/webkit/qdeclarativewebview_p_p.h | 4 +++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/imports/webkit/plugin.cpp b/src/imports/webkit/plugin.cpp index 2f6205d..799fe9e 100644 --- a/src/imports/webkit/plugin.cpp +++ b/src/imports/webkit/plugin.cpp @@ -54,6 +54,7 @@ public: virtual void registerTypes(const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String("org.webkit")); + QML_REGISTER_NOCREATE_TYPE(QDeclarativeWebSettings); qmlRegisterType(uri,1,0,"WebView"); } }; diff --git a/src/imports/webkit/qdeclarativewebview.cpp b/src/imports/webkit/qdeclarativewebview.cpp index 733ac86..d78ba28 100644 --- a/src/imports/webkit/qdeclarativewebview.cpp +++ b/src/imports/webkit/qdeclarativewebview.cpp @@ -931,7 +931,7 @@ QWebPage *QDeclarativeWebView::page() const } \endqml */ -QObject *QDeclarativeWebView::settingsObject() const +QDeclarativeWebSettings *QDeclarativeWebView::settingsObject() const { Q_D(const QDeclarativeWebView); d->settings.s = page()->settings(); diff --git a/src/imports/webkit/qdeclarativewebview_p.h b/src/imports/webkit/qdeclarativewebview_p.h index 5efc3b5..145e74b 100644 --- a/src/imports/webkit/qdeclarativewebview_p.h +++ b/src/imports/webkit/qdeclarativewebview_p.h @@ -59,6 +59,7 @@ class QWebSettings; QT_BEGIN_NAMESPACE QT_MODULE(Declarative) +class QDeclarativeWebSettings; class QDeclarativeWebViewPrivate; class QNetworkRequest; class QDeclarativeWebView; @@ -113,7 +114,7 @@ class WEBKITQMLPLUGIN_EXPORT QDeclarativeWebView : public QDeclarativePaintedIte Q_PROPERTY(QAction* forward READ forwardAction CONSTANT) Q_PROPERTY(QAction* stop READ stopAction CONSTANT) - Q_PROPERTY(QObject* settings READ settingsObject CONSTANT) + Q_PROPERTY(QDeclarativeWebSettings* settings READ settingsObject CONSTANT) Q_PROPERTY(QDeclarativeListProperty javaScriptWindowObjects READ javaScriptWindowObjects CONSTANT) @@ -170,7 +171,7 @@ public: QWebHistory *history() const; QWebSettings *settings() const; - QObject *settingsObject() const; + QDeclarativeWebSettings *settingsObject() const; bool renderingEnabled() const; void setRenderingEnabled(bool); diff --git a/src/imports/webkit/qdeclarativewebview_p_p.h b/src/imports/webkit/qdeclarativewebview_p_p.h index 258b472..3ad9e9a 100644 --- a/src/imports/webkit/qdeclarativewebview_p_p.h +++ b/src/imports/webkit/qdeclarativewebview_p_p.h @@ -42,6 +42,8 @@ #ifndef QDECLARATIVEWEBVIEW_P_H #define QDECLARATIVEWEBVIEW_P_H +#include "webkitqmlplugin_export.h" + #include #include @@ -52,7 +54,7 @@ QT_BEGIN_NAMESPACE QT_MODULE(Declarative) -class QDeclarativeWebSettings : public QObject { +class WEBKITQMLPLUGIN_EXPORT QDeclarativeWebSettings : public QObject { Q_OBJECT Q_PROPERTY(QString standardFontFamily READ standardFontFamily WRITE setStandardFontFamily) -- cgit v0.12 From 0994b819f6cbf550c067146324f24489d0b4fa1d Mon Sep 17 00:00:00 2001 From: Dmytro Poplavskiy Date: Wed, 3 Mar 2010 14:22:54 +1000 Subject: Use mute property instead of setting volume to 0 if playbin2 is used. Task-number: QTMOBILITY-67 Reviewed-by: Andrew den Exter --- .../mediaplayer/qgstreamerplayersession.cpp | 28 +++++++++++++++------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp index e80e820..be2273b 100644 --- a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp +++ b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp @@ -314,21 +314,33 @@ bool QGstreamerPlayerSession::seek(qint64 ms) void QGstreamerPlayerSession::setVolume(int volume) { - m_volume = volume; - emit volumeChanged(m_volume); + if (m_volume != volume) { + m_volume = volume; - if (!m_muted && m_playbin) - g_object_set(G_OBJECT(m_playbin), "volume", m_volume/100.0, NULL); + if (m_playbin) { +#ifndef USE_PLAYBIN2 + if(!m_muted) +#endif + g_object_set(G_OBJECT(m_playbin), "volume", m_volume/100.0, NULL); + } + + emit volumeChanged(m_volume); + } } void QGstreamerPlayerSession::setMuted(bool muted) { - m_muted = muted; + if (m_muted != muted) { + m_muted = muted; - g_object_set(G_OBJECT(m_playbin), "volume", (m_muted ? 0 : m_volume/100.0), NULL); - - emit mutedStateChanged(m_muted); +#ifdef USE_PLAYBIN2 + g_object_set(G_OBJECT(m_playbin), "mute", m_muted, NULL); +#else + g_object_set(G_OBJECT(m_playbin), "volume", (m_muted ? 0 : m_volume/100.0), NULL); +#endif + emit mutedStateChanged(m_muted); + } } static void addTagToMap(const GstTagList *list, -- cgit v0.12 From 61e29b6b4b1f96fecad1ad105cd190beed6621e6 Mon Sep 17 00:00:00 2001 From: Dmytro Poplavskiy Date: Wed, 3 Mar 2010 14:24:22 +1000 Subject: Gstreamer media backend: ensure the null video output is not deleted during player session lifetime Reviewed-by: Andrew den Exter --- .../mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp index be2273b..392a7a8 100644 --- a/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp +++ b/src/plugins/mediaservices/gstreamer/mediaplayer/qgstreamerplayersession.cpp @@ -91,6 +91,7 @@ QGstreamerPlayerSession::QGstreamerPlayerSession(QObject *parent) m_busHelper->installSyncEventFilter(this); m_nullVideoOutput = gst_element_factory_make("fakesink", NULL); + gst_object_ref(GST_OBJECT(m_nullVideoOutput)); g_object_set(G_OBJECT(m_playbin), "video-sink", m_nullVideoOutput, NULL); // Initial volume @@ -108,6 +109,7 @@ QGstreamerPlayerSession::~QGstreamerPlayerSession() delete m_busHelper; gst_object_unref(GST_OBJECT(m_bus)); gst_object_unref(GST_OBJECT(m_playbin)); + gst_object_unref(GST_OBJECT(m_nullVideoOutput)); } } -- cgit v0.12 From 4e5cf3f0936ed921973e451e23414059e1a9fc6b Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Wed, 3 Mar 2010 14:36:48 +1000 Subject: add colorbrowser qml example This example shows how to use qml packages to animate between pathview, gridview and listview. --- examples/declarative/colorbrowser/colorbrowser.qml | 101 ++++++++++++++++++ .../colorbrowser/dummydata/ColorsModel.qml | 96 +++++++++++++++++ .../declarative/colorbrowser/qml/ColorDelegate.qml | 114 +++++++++++++++++++++ .../declarative/colorbrowser/qml/box-shadow.png | Bin 0 -> 871 bytes examples/declarative/colorbrowser/qml/box.png | Bin 0 -> 765 bytes 5 files changed, 311 insertions(+) create mode 100644 examples/declarative/colorbrowser/colorbrowser.qml create mode 100644 examples/declarative/colorbrowser/dummydata/ColorsModel.qml create mode 100644 examples/declarative/colorbrowser/qml/ColorDelegate.qml create mode 100644 examples/declarative/colorbrowser/qml/box-shadow.png create mode 100644 examples/declarative/colorbrowser/qml/box.png diff --git a/examples/declarative/colorbrowser/colorbrowser.qml b/examples/declarative/colorbrowser/colorbrowser.qml new file mode 100644 index 0000000..ebd49c6 --- /dev/null +++ b/examples/declarative/colorbrowser/colorbrowser.qml @@ -0,0 +1,101 @@ +import Qt 4.6 +import 'qml' + +Rectangle { + id: mainWindow + width: 800; height: 480; color: '#454545' + + VisualDataModel { id: colorsVisualModel; delegate: colorsDelegate; model: ColorsModel } + + Component { + id: colorsDelegate + Package { + + Item { + Package.name: 'grid' + GridView { + id: gridView; model: visualModel.parts.grid; width: mainWindow.width; height: mainWindow.height + cellWidth: 160; cellHeight: 160; interactive: false + onCurrentIndexChanged: listView.positionViewAtIndex(currentIndex) + } + } + + Item { + Package.name: 'fullscreen' + ListView { + id: listView; model: visualModel.parts.list; orientation: Qt.Horizontal + width: mainWindow.width; height: mainWindow.height; interactive: false + onCurrentIndexChanged: gridView.positionViewAtIndex(currentIndex) + highlightRangeMode: ListView.StrictlyEnforceRange; snapMode: ListView.SnapOneItem + } + } + + Item { + Package.name: 'stack' + id: wrapper + width: 260; height: 240 + + VisualDataModel { id: visualModel; model: colors; delegate: ColorDelegate {} } + + PathView { + id: pathView; model: visualModel.parts.stack; anchors.centerIn: parent + pathItemCount: 3 + path: Path { + PathAttribute { name: 'z'; value: 9999.0 } + PathLine { x: 1; y: 1 } + PathAttribute { name: 'z'; value: 0.0 } + } + } + + Item { + anchors.horizontalCenter: parent.horizontalCenter; anchors.bottom: parent.bottom; anchors.bottomMargin: 20 + width: albumTitle.width + 20 ; height: albumTitle.height + 4 + Text { id: albumTitle; text: name; color: 'white'; font.bold: true; anchors.centerIn: parent } + } + + MouseRegion { anchors.fill: parent; onClicked: wrapper.state = 'inGrid' } + + states: [ + State { + name: 'inGrid' + PropertyChanges { target: gridView; interactive: true } + PropertyChanges { target: shade; opacity: 1 } + }, + State { + name: 'fullscreen'; extend: 'inGrid' + PropertyChanges { target: gridView; interactive: false } + PropertyChanges { target: listView; interactive: true } + PropertyChanges { target: infobox; opacity: 1 } + } + ] + + transitions: [ + Transition { + from: ''; to: 'inGrid'; reversible: true + NumberAnimation { target: shade; properties: 'opacity'; duration: 300 } + }, + Transition { + from: 'inGrid'; to: 'fullscreen'; reversible: true + SequentialAnimation { + PauseAnimation { duration: 300 } + NumberAnimation { target: infobox; properties: 'opacity'; duration: 300 } + } + } + ] + } + } + } + + GridView { width: parent.width; height: parent.height; cellWidth: 260; cellHeight: 240; model: colorsVisualModel.parts.stack } + Rectangle { id: shade; color: '#454545'; width: parent.width; height: parent.height; opacity: 0 } + ListView { anchors.fill: parent; model: colorsVisualModel.parts.grid; interactive: false } + ListView { anchors.fill: parent; model: colorsVisualModel.parts.fullscreen; interactive: false } + Item { id: foreground; anchors.fill: parent } + + Column { + id: infobox; opacity: 0 + anchors { left: parent.left; leftMargin: 20; bottom: parent.bottom; bottomMargin: 20 } + Text { id: infoColorName; color: '#eeeeee'; style: Text.Outline; styleColor: '#222222'; font.pointSize: 18 } + Text { id: infoColorHex; color: '#eeeeee'; style: Text.Outline; styleColor: '#222222'; font.pointSize: 14 } + } +} diff --git a/examples/declarative/colorbrowser/dummydata/ColorsModel.qml b/examples/declarative/colorbrowser/dummydata/ColorsModel.qml new file mode 100644 index 0000000..eefbcfe --- /dev/null +++ b/examples/declarative/colorbrowser/dummydata/ColorsModel.qml @@ -0,0 +1,96 @@ +import Qt 4.6 + +ListModel { + id: colorsModel + + ListElement { + name: "Reds" + colors: [ + ListElement { name: "Fire Brick"; hex: "#B22222" }, + ListElement { name: "Fire Brick 1"; hex: "#FF3030" }, + ListElement { name: "Fire Brick 2"; hex: "#EE2C2C" }, + ListElement { name: "Fire Brick 3"; hex: "#CD2626" }, + ListElement { name: "Fire Brick 4"; hex: "#8B1A1A" }, + ListElement { name: "Red"; hex: "#FF0000" }, + ListElement { name: "Red 2"; hex: "#EE0000" }, + ListElement { name: "Red 3"; hex: "#CD0000" }, + ListElement { name: "Red 4"; hex: "#8B0000" }, + ListElement { name: "Tomato"; hex: "#FF6347" }, + ListElement { name: "Tomato 2"; hex: "#EE5C42" }, + ListElement { name: "Tomato 3"; hex: "#CD4F39" }, + ListElement { name: "Tomato 4"; hex: "#8B3626" }, + ListElement { name: "Orange Red"; hex: "#FF4500" }, + ListElement { name: "Orange Red 2"; hex: "#EE4000" }, + ListElement { name: "Orange Red 3"; hex: "#CD3700" }, + ListElement { name: "Orange Red 4"; hex: "#8B2500" }, + ListElement { name: "Indian Red 2"; hex: "#EE6363" }, + ListElement { name: "Indian Red 3"; hex: "#CD5555" }, + ListElement { name: "Indian Red 4"; hex: "#8B3A3A" }, + ListElement { name: "Brown"; hex: "#A52A2A" }, + ListElement { name: "Brown 1"; hex: "#FF4040" }, + ListElement { name: "Brown 2"; hex: "#EE3B3B" }, + ListElement { name: "Brown 3"; hex: "#CD3333" }, + ListElement { name: "Brown 4"; hex: "#8B2323" } + ] + } + ListElement { + name: "Greens" + colors: [ + ListElement { name: "Green"; hex: "#008000" }, + ListElement { name: "Green 2"; hex: "#00EE00" }, + ListElement { name: "Green 3"; hex: "#00CD00" }, + ListElement { name: "Green 4"; hex: "#008B00" }, + ListElement { name: "Dark Green"; hex: "#006400" }, + ListElement { name: "Sap Green"; hex: "#308014" }, + ListElement { name: "Medium Spring Green"; hex: "#00FA9A" }, + ListElement { name: "Spring Green"; hex: "#00FF7F" }, + ListElement { name: "Spring Green 1"; hex: "#00EE76" }, + ListElement { name: "Spring Green 2"; hex: "#00CD66" }, + ListElement { name: "Spring Green 3"; hex: "#008B45" }, + ListElement { name: "Medium Sea Green"; hex: "#3CB371" }, + ListElement { name: "Sea Green 1"; hex: "#54FF9F" }, + ListElement { name: "Sea Green 2"; hex: "#4EEE94" }, + ListElement { name: "Sea Green 3"; hex: "#43CD80" }, + ListElement { name: "Sea Green 4"; hex: "#2E8B57" }, + ListElement { name: "Emerald Green"; hex: "#00C957" }, + ListElement { name: "Mint"; hex: "#BDFCC9" }, + ListElement { name: "Cobalt Green"; hex: "#3D9140" }, + ListElement { name: "Dark Sea Green"; hex: "#8FBC8F" }, + ListElement { name: "Dark Sea Green 1"; hex: "#C1FFC1" }, + ListElement { name: "Dark Sea Green 2"; hex: "#B4EEB4" }, + ListElement { name: "Dark Sea Green 3"; hex: "#9BCD9B" }, + ListElement { name: "Dark Sea Green 4"; hex: "#698B69" }, + ListElement { name: "Lime Green"; hex: "#00FF00" } + ] + } + ListElement { + name: "Blues" + colors: [ + ListElement { name: "Dark Slate Blue"; hex: "#483D8B" }, + ListElement { name: "Light Slate Blue"; hex: "#8470FF" }, + ListElement { name: "Medium Slate Blue"; hex: "#7B68EE" }, + ListElement { name: "Slate Blue"; hex: "#6A5ACD" }, + ListElement { name: "Blue"; hex: "#0000FF" }, + ListElement { name: "Midnight Blue"; hex: "#191970" }, + ListElement { name: "Cobalt"; hex: "#3D59AB" }, + ListElement { name: "Royal Blue"; hex: "#4169E1" }, + ListElement { name: "Corn Flower Blue"; hex: "#6495ED" }, + ListElement { name: "Light Steel Blue"; hex: "#B0C4DE" }, + ListElement { name: "Light Steel Blue 1"; hex: "#CAE1FF" }, + ListElement { name: "Light Steel Blue 2"; hex: "#BCD2EE" }, + ListElement { name: "Light Steel Blue 3"; hex: "#A2B5CD" }, + ListElement { name: "Dodger Blue"; hex: "#1E90FF" }, + ListElement { name: "Dodger Blue 2"; hex: "#1C86EE" }, + ListElement { name: "Dodger Blue 3"; hex: "#1874CD" }, + ListElement { name: "Dodger Blue 4"; hex: "#104E8B" }, + ListElement { name: "Steel Blue"; hex: "#4682B4" }, + ListElement { name: "Light Sky Blue"; hex: "#87CEFA" }, + ListElement { name: "Sky Blue"; hex: "#87CEEB" }, + ListElement { name: "Peacock"; hex: "#33A1C9" }, + ListElement { name: "Light Blue"; hex: "#ADD8E6" }, + ListElement { name: "Powder Blue"; hex: "#B0E0E6" }, + ListElement { name: "Cadet Blue"; hex: "#5F9EA0" }, + ListElement { name: "Cyan"; hex: "#00FFFF" } + ] + } +} diff --git a/examples/declarative/colorbrowser/qml/ColorDelegate.qml b/examples/declarative/colorbrowser/qml/ColorDelegate.qml new file mode 100644 index 0000000..605e45b --- /dev/null +++ b/examples/declarative/colorbrowser/qml/ColorDelegate.qml @@ -0,0 +1,114 @@ +import Qt 4.6 + +Package { + Item { id: stack; Package.name: 'stack'; width: 110; height: 110; z: stack.PathView.z } + Item { id: list; Package.name: 'list'; width: mainWindow.width + 4; height: 110 } + Item { id: grid; Package.name: 'grid'; width: 110; height: 110 } + + Item { + id: delegate + + property double randomAngle: Math.random() * (2 * 8 + 1) - 8 + property bool open: false + + width: 110; height: 110; z: stack.PathView.z + + Image { x: -6; y: -5; source: 'box-shadow.png'; smooth: true; } + Rectangle { color: hex; anchors.fill: parent; smooth: true } + Image { id: box; source: 'box.png'; smooth: true; anchors.fill: parent } + + Binding { + target: infoColorName; property: 'text' + value: name; when: delegate.open && list.ListView.isCurrentItem + } + + Binding { + target: infoColorHex; property: 'text' + value: hex; when: delegate.open && list.ListView.isCurrentItem + } + + MouseRegion { + anchors.fill: parent + acceptedButtons: Qt.RightButton | Qt.LeftButton + onClicked: { + if (wrapper.state == 'inGrid' && mouse.button == Qt.RightButton) { + wrapper.state = '' + } else if (wrapper.state == 'inGrid') { + grid.GridView.view.currentIndex = index; + wrapper.state = 'fullscreen' + } else { + grid.GridView.view.currentIndex = index; + wrapper.state = 'inGrid' + } + } + } + + states: [ + State { + name: 'stacked'; when: wrapper.state == '' + ParentChange { target: delegate; parent: stack; x: 0; y: 0; rotation: delegate.randomAngle } + PropertyChanges { target: delegate; visible: stack.PathView.onPath ? 1.0 : 0.0 } + }, + State { + name: 'inGrid'; when: wrapper.state == 'inGrid' + ParentChange { target: delegate; parent: grid; x: 24; y: 24 } + PropertyChanges { target: delegate; open: true } + }, + State { + name: 'fullscreen'; when: wrapper.state == 'fullscreen' + ParentChange { target: delegate; parent: list; x: 0; y: 0; width: mainWindow.width; height: mainWindow.height } + PropertyChanges { target: box; opacity: 0 } + PropertyChanges { target: delegate; open: true } + } + ] + + transitions: [ + Transition { + from: 'stacked'; to: 'inGrid' + SequentialAnimation { + PauseAnimation { duration: 20 * index } + ParentAnimation { + target: delegate; via: foreground + NumberAnimation { targets: delegate; properties: 'x,y,width,height,rotation'; duration: 600; easing.type: 'OutBack' } + } + } + }, + Transition { + from: 'inGrid'; to: 'stacked' + ParentAnimation { + target: delegate; via: foreground + NumberAnimation { properties: 'x,y,width,height,rotation'; duration: 300; easing.type: 'InOutQuad' } + } + }, + Transition { + from: 'inGrid'; to: 'fullscreen' + SequentialAnimation { + PauseAnimation { duration: grid.GridView.isCurrentItem ? 0 : 300 } + ParentAnimation { + target: delegate; via: foreground + NumberAnimation { + properties: 'x,y,width,height,opacity' + duration: grid.GridView.isCurrentItem ? 300 : 1; easing.type: 'InOutQuad' + } + } + } + }, + Transition { + from: 'fullscreen'; to: 'inGrid' + SequentialAnimation { + PauseAnimation { duration: grid.GridView.isCurrentItem ? 3 : 0 } + ParallelAnimation { + ParentAnimation { + target: delegate; via: foreground + NumberAnimation { + properties: 'x,y,width,height' + duration: grid.GridView.isCurrentItem ? 300 : 1; easing.type: 'InOutQuad' + } + } + NumberAnimation { properties: 'opacity'; duration: grid.GridView.isCurrentItem ? 300 : 1; easing.type: 'InOutQuad' } + } + } + } + ] + } +} diff --git a/examples/declarative/colorbrowser/qml/box-shadow.png b/examples/declarative/colorbrowser/qml/box-shadow.png new file mode 100644 index 0000000..3281a37 Binary files /dev/null and b/examples/declarative/colorbrowser/qml/box-shadow.png differ diff --git a/examples/declarative/colorbrowser/qml/box.png b/examples/declarative/colorbrowser/qml/box.png new file mode 100644 index 0000000..86538aa Binary files /dev/null and b/examples/declarative/colorbrowser/qml/box.png differ -- cgit v0.12 From 7d4000b8df8792d286a50a3fac45ce638d943fd7 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 3 Mar 2010 14:39:17 +1000 Subject: silence debuggery --- .../qdeclarativenumberformatter/tst_qdeclarativenumberformatter.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/auto/declarative/qdeclarativenumberformatter/tst_qdeclarativenumberformatter.cpp b/tests/auto/declarative/qdeclarativenumberformatter/tst_qdeclarativenumberformatter.cpp index 26ff3d5..a9a0077 100644 --- a/tests/auto/declarative/qdeclarativenumberformatter/tst_qdeclarativenumberformatter.cpp +++ b/tests/auto/declarative/qdeclarativenumberformatter/tst_qdeclarativenumberformatter.cpp @@ -172,9 +172,11 @@ tst_qdeclarativenumberformatter::tst_qdeclarativenumberformatter() << "00,000,001.0000" << "00,000,001.0100"; // end + /* qDebug() << "strings.size()" << strings.size() << "\nformats.size()" << formats.size() << "texts.size()" << texts.size(); + */ } void tst_qdeclarativenumberformatter::text_data() -- cgit v0.12 From 6e486bdd5cc8370df7752eda2fa9f75b0a962124 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 3 Mar 2010 14:43:38 +1000 Subject: Disable until plugin objects problem resolved. --- tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp b/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp index 1d6bedc..f2ea076 100644 --- a/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp +++ b/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp @@ -181,6 +181,8 @@ void tst_qdeclarativewebview::settings() QVERIFY(wv != 0); QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + qWarning("Need to test settings"); + /* QObject *s = qvariant_cast(wv->property("settings")); // merely tests that setting gets stored (in QWebSettings) @@ -236,6 +238,7 @@ void tst_qdeclarativewebview::settings() QVERIFY(s->property("privateBrowsingEnabled") == on); QVERIFY(s->property("zoomTextOnly") == on); } + */ } void tst_qdeclarativewebview::historyNav() -- cgit v0.12 From ca88b39490ef09b56cab5f933c9e33e5a2f5a498 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Wed, 3 Mar 2010 14:46:03 +1000 Subject: fix connecting to an ID. --- src/plugins/bearer/corewlan/qcorewlanengine.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm index 598d2f0..a758a4b 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.mm +++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm @@ -170,7 +170,7 @@ void QCoreWlanEngine::connectToId(const QString &id) while ((wProfile = [enumerator nextObject])) { //CWWirelessProfile - if(id == nsstringToQString([wProfile ssid])) { + if(id == QString::number(qHash(QLatin1String("corewlan:") + nsstringToQString([wProfile ssid])))) { user8021XProfile = nil; user8021XProfile = [ wProfile user8021XProfile]; -- cgit v0.12 From a2c2a287e6c405200ef990f3dddae9d229aac722 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Wed, 3 Mar 2010 14:36:17 +1000 Subject: Fix incorrect scope resolution for script in a script block. Make sure global variables in a script file are searched before component properties. Task-number: QTBUG-8641 --- src/declarative/qml/qdeclarativecontext.cpp | 1 + .../declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/qml/qdeclarativecontext.cpp b/src/declarative/qml/qdeclarativecontext.cpp index b244cd8..57ef90c 100644 --- a/src/declarative/qml/qdeclarativecontext.cpp +++ b/src/declarative/qml/qdeclarativecontext.cpp @@ -78,6 +78,7 @@ void QDeclarativeContextPrivate::addScript(const QDeclarativeParser::Object::Scr QScriptValue scope = scriptEngine->newObject(); scriptContext->setActivationObject(scope); + scriptContext->pushScope(scope); for (int ii = 0; ii < script.codes.count(); ++ii) { scriptEngine->evaluate(script.codes.at(ii), script.files.at(ii), script.lineNumbers.at(ii)); diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 8e7944d..85a3ef3 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -1678,7 +1678,6 @@ void tst_qdeclarativeecmascript::scriptScope() MyQmlObject *object = qobject_cast(component.create()); QVERIFY(object != 0); emit object->basicSignal(); - QEXPECT_FAIL("", "QTBUG-8641", Continue); QCOMPARE(object->property("result").toString(), QLatin1String("world")); delete object; -- cgit v0.12 From a40a5fde406855473ba5f4cfa78208ee5efd9cb1 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 3 Mar 2010 14:58:55 +1000 Subject: fix crash, re-enable settings test --- .../declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp b/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp index f2ea076..b63e14b 100644 --- a/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp +++ b/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp @@ -181,9 +181,8 @@ void tst_qdeclarativewebview::settings() QVERIFY(wv != 0); QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); - qWarning("Need to test settings"); - /* - QObject *s = qvariant_cast(wv->property("settings")); + QObject *s = QDeclarativeProperty(wv,"settings").object(); + QVERIFY(s != 0); // merely tests that setting gets stored (in QWebSettings) // behavioural tests are in WebKit. @@ -238,7 +237,6 @@ void tst_qdeclarativewebview::settings() QVERIFY(s->property("privateBrowsingEnabled") == on); QVERIFY(s->property("zoomTextOnly") == on); } - */ } void tst_qdeclarativewebview::historyNav() -- cgit v0.12 From 004f77f8ab4d07499116d151d6f2b015b57effac Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 3 Mar 2010 14:59:18 +1000 Subject: OS-friendlier, less noisy. --- tests/auto/declarative/runall.sh | 81 ++++++++++++++++++++++++++-------------- 1 file changed, 52 insertions(+), 29 deletions(-) diff --git a/tests/auto/declarative/runall.sh b/tests/auto/declarative/runall.sh index 39485d3..62e03e3 100755 --- a/tests/auto/declarative/runall.sh +++ b/tests/auto/declarative/runall.sh @@ -41,37 +41,60 @@ ## ############################################################################/ -Xnest :7 2>/dev/null & -sleep 1 -trap "kill $!" EXIT -export DISPLAY=:7 +if [ "$(uname)" = Linux ] +then + Xnest :7 2>/dev/null & + sleep 1 + trap "kill $!" EXIT + export DISPLAY=:7 + export LANG=en_US + kwin 2>/dev/null & + sleep 1 +fi -( make -k -j1 install 2>&1; - for exe in $(make install | sed -n 's/^install .* "\([^"]*qt4\/tst_[^"]*\)".*/\1/p') - do - $exe - done -) | +function filter +{ + exe=$1 + skip=0 while read line do - case "$line" in - make*Error) echo "$line";; - make*Stop) echo "$line";; - make*) ;; - install*) ;; - */qmake*) ;; - */bin/moc*) ;; - *targ.debug*) ;; - g++*) ;; - cd*) ;; - PASS*) ;; - QDEBUG*) ;; - Makefile*) ;; - Config*) ;; - Totals*) ;; - \**) ;; - ./*) ;; - *) echo "$line" - esac + if [ $skip != 0 ] + then + let skip=skip-1 + else + case "$line" in + make*Error) echo "$line";; + make*Stop) echo "$line";; + /*/bin/make*) ;; + make*) ;; + install*) ;; + QDeclarativeDebugServer:*Waiting*) ;; + QDeclarativeDebugServer:*Connection*) ;; + */qmake*) ;; + */bin/moc*) ;; + *targ.debug*) ;; + g++*) ;; + cd*) ;; + XFAIL*) skip=1;; + SKIP*) skip=1;; + PASS*) ;; + QDEBUG*) ;; + Makefile*) ;; + Config*) ;; + Totals*) ;; + \**) ;; + ./*) ;; + *tst_*) echo "$line" ;; + *) echo "$exe: $line" + esac + fi done +} + +make -k -j1 install 2>&1 | filter build +for exe in $(make install | sed -n 's/^install .* "\([^"]*qt4\/tst_[^"]*\)".*/\1/p') +do + echo $exe + $exe 2>&1 | filter $exe +done -- cgit v0.12 From 2ef17050f740b4e0debc43f66f26f419b317b7ab Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Wed, 3 Mar 2010 15:15:47 +1000 Subject: QDeclarativeGuard should handle objects being deleted --- src/declarative/qml/qdeclarativedeclarativedata_p.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/declarative/qml/qdeclarativedeclarativedata_p.h b/src/declarative/qml/qdeclarativedeclarativedata_p.h index a7a73bc..ae40130 100644 --- a/src/declarative/qml/qdeclarativedeclarativedata_p.h +++ b/src/declarative/qml/qdeclarativedeclarativedata_p.h @@ -120,6 +120,11 @@ public: template void QDeclarativeGuard::addGuard() { + if (QObjectPrivate::get(o)->wasDeleted) { + if (prev) remGuard(); + return; + } + QDeclarativeDeclarativeData *data = QDeclarativeDeclarativeData::get(o, true); next = data->guards; if (next) reinterpret_cast *>(next)->prev = &next; -- cgit v0.12 From 55cec1c8e73f90f968ce181c3310e5e16f2d5bd8 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Wed, 3 Mar 2010 15:22:25 +1000 Subject: Fixed compile of some tests with `-qtnamespace' --- tests/auto/declarative/qdeclarativelanguage/testtypes.h | 3 +++ tests/auto/qmediaservice/tst_qmediaservice.cpp | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/tests/auto/declarative/qdeclarativelanguage/testtypes.h b/tests/auto/declarative/qdeclarativelanguage/testtypes.h index 8ac7aa6..09cddcb 100644 --- a/tests/auto/declarative/qdeclarativelanguage/testtypes.h +++ b/tests/auto/declarative/qdeclarativelanguage/testtypes.h @@ -62,7 +62,10 @@ public: MyInterface() : id(913) {} int id; }; + +QT_BEGIN_NAMESPACE Q_DECLARE_INTERFACE(MyInterface, "com.trolltech.Qt.Test.MyInterface"); +QT_END_NAMESPACE QML_DECLARE_INTERFACE(MyInterface); struct MyCustomVariantType diff --git a/tests/auto/qmediaservice/tst_qmediaservice.cpp b/tests/auto/qmediaservice/tst_qmediaservice.cpp index 35f661d..a0cb69d 100644 --- a/tests/auto/qmediaservice/tst_qmediaservice.cpp +++ b/tests/auto/qmediaservice/tst_qmediaservice.cpp @@ -69,7 +69,9 @@ class QtTestMediaControlA : public QMediaControl #define QtTestMediaControlA_iid "com.nokia.QtTestMediaControlA" +QT_BEGIN_NAMESPACE Q_MEDIA_DECLARE_CONTROL(QtTestMediaControlA, QtTestMediaControlA_iid) +QT_END_NAMESPACE class QtTestMediaControlB : public QMediaControl @@ -78,7 +80,9 @@ class QtTestMediaControlB : public QMediaControl }; #define QtTestMediaControlB_iid "com.nokia.QtTestMediaControlB" +QT_BEGIN_NAMESPACE Q_MEDIA_DECLARE_CONTROL(QtTestMediaControlB, QtTestMediaControlB_iid) +QT_END_NAMESPACE class QtTestMediaControlC : public QMediaControl @@ -87,7 +91,9 @@ class QtTestMediaControlC : public QMediaControl }; #define QtTestMediaControlC_iid "com.nokia.QtTestMediaControlC" +QT_BEGIN_NAMESPACE Q_MEDIA_DECLARE_CONTROL(QtTestMediaControlC, QtTestMediaControlA_iid) // Yes A. +QT_END_NAMESPACE class QtTestMediaControlD : public QMediaControl { @@ -95,7 +101,9 @@ class QtTestMediaControlD : public QMediaControl }; #define QtTestMediaControlD_iid "com.nokia.QtTestMediaControlD" +QT_BEGIN_NAMESPACE Q_MEDIA_DECLARE_CONTROL(QtTestMediaControlD, QtTestMediaControlD_iid) +QT_END_NAMESPACE class QtTestMediaControlE : public QMediaControl { -- cgit v0.12 From 0b44693aec2eed33cb54876edb7641e981aa883c Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 3 Mar 2010 16:16:43 +1000 Subject: 4.6.x compat --- src/declarative/graphicsitems/qdeclarativeparticles.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/declarative/graphicsitems/qdeclarativeparticles.cpp b/src/declarative/graphicsitems/qdeclarativeparticles.cpp index 1a58d3f..deabdd6 100644 --- a/src/declarative/graphicsitems/qdeclarativeparticles.cpp +++ b/src/declarative/graphicsitems/qdeclarativeparticles.cpp @@ -1260,7 +1260,11 @@ void QDeclarativeParticlesPainter::paint(QPainter *p, const QStyleOptionGraphics const int myX = x() + parentItem()->x(); const int myY = y() + parentItem()->y(); +#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0)) QVarLengthArray pixmapData; +#else + QVarLengthArray pixmapData; +#endif pixmapData.resize(d->particles.count()); const QRectF sourceRect = d->image.rect(); @@ -1268,20 +1272,32 @@ void QDeclarativeParticlesPainter::paint(QPainter *p, const QStyleOptionGraphics qreal halfPHeight = sourceRect.height()/2.; for (int i = 0; i < d->particles.count(); ++i) { const QDeclarativeParticle &particle = d->particles.at(i); +#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0)) pixmapData[i].x = particle.x - myX + halfPWidth; pixmapData[i].y = particle.y - myY + halfPHeight; +#else + pixmapData[i].point = QPointF(particle.x - myX + halfPWidth, particle.y - myY + halfPHeight); +#endif pixmapData[i].opacity = particle.opacity; //these never change pixmapData[i].rotation = 0; pixmapData[i].scaleX = 1; pixmapData[i].scaleY = 1; +#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0)) pixmapData[i].sourceLeft = sourceRect.left(); pixmapData[i].sourceTop = sourceRect.top(); pixmapData[i].width = sourceRect.width(); pixmapData[i].height = sourceRect.height(); +#else + pixmapData[i].source = sourceRect; +#endif } +#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0)) p->drawPixmapFragments(pixmapData.data(), d->particles.count(), d->image); +#else + qDrawPixmaps(p, pixmapData.data(), d->particles.count(), d->image); +#endif } void QDeclarativeParticles::componentComplete() -- cgit v0.12 From 7d2471e3beba5745fb5ea4dade3188e643f6b562 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 3 Mar 2010 16:25:21 +1000 Subject: Auto test for QTBUG-8677 --- .../declarative/qdeclarativelanguage/data/attachedProperties.qml | 2 ++ tests/auto/declarative/qdeclarativelanguage/testtypes.h | 7 +++++-- .../declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp | 5 +++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/tests/auto/declarative/qdeclarativelanguage/data/attachedProperties.qml b/tests/auto/declarative/qdeclarativelanguage/data/attachedProperties.qml index b46ec34..aecb3c3 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/attachedProperties.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/attachedProperties.qml @@ -3,6 +3,8 @@ import Test 1.0 as Namespace import Qt 4.6 QtObject { + property int value2: 8 MyQmlObject.value: 10 Namespace.MyQmlObject.value2: 13 + MyQmlObject.onValueChanged: value2 = MyQmlObject.value } diff --git a/tests/auto/declarative/qdeclarativelanguage/testtypes.h b/tests/auto/declarative/qdeclarativelanguage/testtypes.h index ec2c5f7..08d6d96 100644 --- a/tests/auto/declarative/qdeclarativelanguage/testtypes.h +++ b/tests/auto/declarative/qdeclarativelanguage/testtypes.h @@ -75,17 +75,20 @@ Q_DECLARE_METATYPE(MyCustomVariantType); class MyAttachedObject : public QObject { Q_OBJECT - Q_PROPERTY(int value READ value WRITE setValue) + Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged) Q_PROPERTY(int value2 READ value2 WRITE setValue2) public: MyAttachedObject(QObject *parent) : QObject(parent), m_value(0), m_value2(0) {} int value() const { return m_value; } - void setValue(int v) { m_value = v; } + void setValue(int v) { if (m_value != v) { m_value = v; emit valueChanged(); } } int value2() const { return m_value2; } void setValue2(int v) { m_value2 = v; } +signals: + void valueChanged(); + private: int m_value; int m_value2; diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index 39f5223..870f3fe 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -713,6 +713,11 @@ void tst_qdeclarativelanguage::attachedProperties() QVERIFY(attached != 0); QCOMPARE(attached->property("value"), QVariant(10)); QCOMPARE(attached->property("value2"), QVariant(13)); + + QEXPECT_FAIL("", "QTBUG-8677", Abort); + attached->setProperty("value", QVariant(12)); + int val = object->property("value2").toInt(); + QCOMPARE(val, 12); } // Tests non-static object properties -- cgit v0.12 From dba7eb104f7788fda36e8a2ecffc8f4c08ec1fae Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Wed, 3 Mar 2010 16:59:04 +1000 Subject: Add documentation for the 'when' property of Binding. --- src/declarative/util/qdeclarativebind.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/declarative/util/qdeclarativebind.cpp b/src/declarative/util/qdeclarativebind.cpp index e95a03e..26baa38 100644 --- a/src/declarative/util/qdeclarativebind.cpp +++ b/src/declarative/util/qdeclarativebind.cpp @@ -72,7 +72,7 @@ public: /*! \qmlclass Binding QDeclarativeBind - \since 4.7 + \since 4.7 \brief The Binding element allows arbitrary property bindings to be created. Sometimes it is necessary to bind to a property of an object that wasn't @@ -114,6 +114,19 @@ QDeclarativeBind::~QDeclarativeBind() { } +/*! + \qmlproperty bool Binding::when + + This property holds when the binding is active. + This should be set to an expression that evaluates to true when you want the binding to be active. + + \code + Binding { + target: contactName; property: 'text' + value: name; when: list.ListView.isCurrentItem + } + \endcode +*/ bool QDeclarativeBind::when() const { Q_D(const QDeclarativeBind); -- cgit v0.12 From f68389023cb8f0365c51fdc1fca06910f36dda2d Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Wed, 3 Mar 2010 15:07:34 +1000 Subject: Remove dependency on declarative from multimedia. Move all declarative related classes into the multimedia declarative module. Reviewed-by: Andrew den Exter --- src/multimedia/effects/effects.pri | 24 + src/multimedia/effects/qsoundeffect.cpp | 255 ++++++ src/multimedia/effects/qsoundeffect_p.h | 123 +++ src/multimedia/effects/qsoundeffect_pulse_p.cpp | 509 +++++++++++ src/multimedia/effects/qsoundeffect_pulse_p.h | 138 +++ src/multimedia/effects/qsoundeffect_qmedia_p.cpp | 167 ++++ src/multimedia/effects/qsoundeffect_qmedia_p.h | 109 +++ src/multimedia/effects/qsoundeffect_qsound_p.cpp | 225 +++++ src/multimedia/effects/qsoundeffect_qsound_p.h | 129 +++ src/multimedia/effects/wavedecoder_p.cpp | 140 +++ src/multimedia/effects/wavedecoder_p.h | 134 +++ src/multimedia/multimedia.pro | 2 +- src/multimedia/qml/multimediadeclarative.cpp | 70 -- src/multimedia/qml/multimediadeclarative.h | 60 -- src/multimedia/qml/qdeclarativeaudio.cpp | 327 ------- src/multimedia/qml/qdeclarativeaudio_p.h | 173 ---- src/multimedia/qml/qdeclarativemediabase.cpp | 413 --------- src/multimedia/qml/qdeclarativemediabase_p.h | 168 ---- src/multimedia/qml/qdeclarativevideo.cpp | 945 --------------------- src/multimedia/qml/qdeclarativevideo_p.h | 204 ----- src/multimedia/qml/qmetadatacontrolmetaobject.cpp | 362 -------- src/multimedia/qml/qmetadatacontrolmetaobject_p.h | 92 -- src/multimedia/qml/qml.pri | 37 - src/multimedia/qml/qsoundeffect.cpp | 255 ------ src/multimedia/qml/qsoundeffect_p.h | 126 --- src/multimedia/qml/qsoundeffect_pulse_p.cpp | 509 ----------- src/multimedia/qml/qsoundeffect_pulse_p.h | 138 --- src/multimedia/qml/qsoundeffect_qmedia_p.cpp | 167 ---- src/multimedia/qml/qsoundeffect_qmedia_p.h | 109 --- src/multimedia/qml/qsoundeffect_qsound_p.cpp | 225 ----- src/multimedia/qml/qsoundeffect_qsound_p.h | 129 --- src/multimedia/qml/wavedecoder_p.cpp | 140 --- src/multimedia/qml/wavedecoder_p.h | 134 --- .../qdeclarativemodules/multimedia/multimedia.cpp | 19 +- .../qdeclarativemodules/multimedia/multimedia.pro | 13 +- .../multimedia/qdeclarativeaudio.cpp | 327 +++++++ .../multimedia/qdeclarativeaudio_p.h | 173 ++++ .../multimedia/qdeclarativemediabase.cpp | 413 +++++++++ .../multimedia/qdeclarativemediabase_p.h | 168 ++++ .../multimedia/qdeclarativevideo.cpp | 945 +++++++++++++++++++++ .../multimedia/qdeclarativevideo_p.h | 204 +++++ .../multimedia/qmetadatacontrolmetaobject.cpp | 362 ++++++++ .../multimedia/qmetadatacontrolmetaobject_p.h | 92 ++ src/src.pro | 1 - tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro | 12 +- .../qdeclarativeaudio/tst_qdeclarativeaudio.cpp | 2 +- tests/auto/qdeclarativevideo/qdeclarativevideo.pro | 12 +- .../qdeclarativevideo/tst_qdeclarativevideo.cpp | 2 +- 48 files changed, 4689 insertions(+), 4794 deletions(-) create mode 100644 src/multimedia/effects/effects.pri create mode 100644 src/multimedia/effects/qsoundeffect.cpp create mode 100644 src/multimedia/effects/qsoundeffect_p.h create mode 100644 src/multimedia/effects/qsoundeffect_pulse_p.cpp create mode 100644 src/multimedia/effects/qsoundeffect_pulse_p.h create mode 100644 src/multimedia/effects/qsoundeffect_qmedia_p.cpp create mode 100644 src/multimedia/effects/qsoundeffect_qmedia_p.h create mode 100644 src/multimedia/effects/qsoundeffect_qsound_p.cpp create mode 100644 src/multimedia/effects/qsoundeffect_qsound_p.h create mode 100644 src/multimedia/effects/wavedecoder_p.cpp create mode 100644 src/multimedia/effects/wavedecoder_p.h delete mode 100644 src/multimedia/qml/multimediadeclarative.cpp delete mode 100644 src/multimedia/qml/multimediadeclarative.h delete mode 100644 src/multimedia/qml/qdeclarativeaudio.cpp delete mode 100644 src/multimedia/qml/qdeclarativeaudio_p.h delete mode 100644 src/multimedia/qml/qdeclarativemediabase.cpp delete mode 100644 src/multimedia/qml/qdeclarativemediabase_p.h delete mode 100644 src/multimedia/qml/qdeclarativevideo.cpp delete mode 100644 src/multimedia/qml/qdeclarativevideo_p.h delete mode 100644 src/multimedia/qml/qmetadatacontrolmetaobject.cpp delete mode 100644 src/multimedia/qml/qmetadatacontrolmetaobject_p.h delete mode 100644 src/multimedia/qml/qml.pri delete mode 100644 src/multimedia/qml/qsoundeffect.cpp delete mode 100644 src/multimedia/qml/qsoundeffect_p.h delete mode 100644 src/multimedia/qml/qsoundeffect_pulse_p.cpp delete mode 100644 src/multimedia/qml/qsoundeffect_pulse_p.h delete mode 100644 src/multimedia/qml/qsoundeffect_qmedia_p.cpp delete mode 100644 src/multimedia/qml/qsoundeffect_qmedia_p.h delete mode 100644 src/multimedia/qml/qsoundeffect_qsound_p.cpp delete mode 100644 src/multimedia/qml/qsoundeffect_qsound_p.h delete mode 100644 src/multimedia/qml/wavedecoder_p.cpp delete mode 100644 src/multimedia/qml/wavedecoder_p.h create mode 100644 src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio.cpp create mode 100644 src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio_p.h create mode 100644 src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase.cpp create mode 100644 src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase_p.h create mode 100644 src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo.cpp create mode 100644 src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo_p.h create mode 100644 src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject.cpp create mode 100644 src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject_p.h diff --git a/src/multimedia/effects/effects.pri b/src/multimedia/effects/effects.pri new file mode 100644 index 0000000..5edd452 --- /dev/null +++ b/src/multimedia/effects/effects.pri @@ -0,0 +1,24 @@ + + + +system(pkg-config --exists \'libpulse >= 0.9.10\') { + DEFINES += QT_MULTIMEDIA_PULSEAUDIO + HEADERS += $$PWD/qsoundeffect_pulse_p.h + SOURCES += $$PWD/qsoundeffect_pulse_p.cpp + LIBS += -lpulse +} else:x11 { + DEFINES += QT_MULTIMEDIA_QMEDIAPLAYER + HEADERS += $$PWD/qsoundeffect_qmedia_p.h + SOURCES += $$PWD/qsoundeffect_qmedia_p.cpp +} else { + HEADERS += $$PWD/qsoundeffect_qsound_p.h + SOURCES += $$PWD/qsoundeffect_qsound_p.cpp +} + +HEADERS += \ + $$PWD/qsoundeffect_p.h \ + $$PWD/wavedecoder_p.h + +SOURCES += \ + $$PWD/qsoundeffect.cpp \ + $$PWD/wavedecoder_p.cpp diff --git a/src/multimedia/effects/qsoundeffect.cpp b/src/multimedia/effects/qsoundeffect.cpp new file mode 100644 index 0000000..541e6c9 --- /dev/null +++ b/src/multimedia/effects/qsoundeffect.cpp @@ -0,0 +1,255 @@ +/**************************************************************************** +** +** 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 QtMultimedia 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 "qmediacontent.h" +#include "qmediaplayer.h" + +#include "qsoundeffect_p.h" + +#if defined(QT_MULTIMEDIA_PULSEAUDIO) +#include "qsoundeffect_pulse_p.h" +#elif(QT_MULTIMEDIA_QMEDIAPLAYER) +#include "qsoundeffect_qmedia_p.h" +#else +#include "qsoundeffect_qsound_p.h" +#endif + +QT_BEGIN_NAMESPACE + +/*! + \qmlclass SoundEffect QSoundEffect + \since 4.7 + \brief The SoundEffect element provides a way to play sound effects in qml. + + The following example plays a wav file on mouse click. + + \qml + SoundEffect { + id: playSound + source: "test.wav" + } + MouseRegion { + id: playArea + anchors.fill: parent + onPressed: { + playSound.play() + } + } + \endqml + + \sa SoundEffect +*/ + +/*! + \qmlproperty QUrl SoundEffect::source + + This property provides a way to control the sound to play. +*/ + +/*! + \qmlproperty int SoundEffect::loopCount + + This property provides a way to control the number of times to repeat the sound on each play(). +*/ + +/*! + \qmlproperty int SoundEffect::volume + + This property provides a way to control the volume for playback. +*/ + +/*! + \qmlproperty bool SoundEffect::muted + + This property provides a way to control muting. +*/ + +/*! + \qmlproperty int SoundEffect::duration + + This property holds the duration in milliseconds of the current source audio. +*/ + +/*! + \qmlsignal SoundEffect::sourceChanged() + + This handler is called when the source has changed. +*/ + +/*! + \qmlsignal SoundEffect::loopCountChanged() + + This handler is called when the number of loops has changes. +*/ + +/*! + \qmlsignal SoundEffect::volumeChanged() + + This handler is called when the volume has changed. +*/ + +/*! + \qmlsignal SoundEffect::mutedChanged() + + This handler is called when the mute state has changed. +*/ + +/*! + \qmlsignal SoundEffect::durationChanged() + + This handler is called when the duration has changed. +*/ + +QSoundEffect::QSoundEffect(QObject *parent) : + QObject(parent), + m_loopCount(1), + m_vol(100), + m_muted(false), + m_runningCount(0) +{ + d = new QSoundEffectPrivate(this); + connect(d, SIGNAL(volumeChanged(int)), SIGNAL(volumeChanged())); + connect(d, SIGNAL(mutedChanged(bool)), SIGNAL(mutedChanged())); + connect(d, SIGNAL(durationChanged(qint64)), SIGNAL(durationChanged())); + connect(d, SIGNAL(stateChanged(QMediaPlayer::State)), SLOT(repeat())); +} + +QSoundEffect::~QSoundEffect() +{ + delete d; +} + +QUrl QSoundEffect::source() const +{ + return d != 0 ? d->media().canonicalUrl() : QUrl(); +} + +void QSoundEffect::setSource(const QUrl &url) +{ + if (d != 0 && d->media().canonicalUrl() == url) + return; + + d->setVolume(m_vol); + d->setMuted(m_muted); + d->setMedia(url); + + if (url.isEmpty()) + return; + + emit sourceChanged(); +} + +int QSoundEffect::loopCount() const +{ + return m_loopCount; +} + +void QSoundEffect::setLoopCount(int loopCount) +{ + if (m_loopCount == loopCount) + return; + + m_loopCount = loopCount; + emit loopCountChanged(); +} + +int QSoundEffect::volume() const +{ + return d != 0 ? d->volume() : m_vol; +} + +void QSoundEffect::setVolume(int volume) +{ + if (m_vol == volume) + return; + + m_vol = volume; + if (d != 0) + d->setVolume(volume); + else + emit volumeChanged(); +} + +bool QSoundEffect::isMuted() const +{ + return d != 0 ? d->isMuted() : m_muted; +} + +void QSoundEffect::setMuted(bool muted) +{ + if (m_muted == muted) + return; + + m_muted = muted; + if (d != 0) + d->setMuted(muted); + else + emit mutedChanged(); +} + +int QSoundEffect::duration() const +{ + return d != 0 ? d->duration() : 0; +} + +void QSoundEffect::play() +{ + m_runningCount = 0; + + if (d != 0) + d->play(); +} + +void QSoundEffect::stop() +{ + if (d != 0) + d->stop(); +} + +void QSoundEffect::repeat() +{ + if (d->state() == QMediaPlayer::StoppedState) { + if (++m_runningCount < m_loopCount) + d->play(); + } +} + +QT_END_NAMESPACE diff --git a/src/multimedia/effects/qsoundeffect_p.h b/src/multimedia/effects/qsoundeffect_p.h new file mode 100644 index 0000000..c5554bf --- /dev/null +++ b/src/multimedia/effects/qsoundeffect_p.h @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** 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 QtMultimedia 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 QSOUNDEFFECT_H +#define QSOUNDEFFECT_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 +#include + + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QSoundEffectPrivate; +class Q_MULTIMEDIA_EXPORT QSoundEffect : public QObject +{ + Q_OBJECT + Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) + Q_PROPERTY(int loopCount READ loopCount WRITE setLoopCount NOTIFY loopCountChanged) + Q_PROPERTY(int volume READ volume WRITE setVolume NOTIFY volumeChanged) + Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) + Q_PROPERTY(int duration READ duration NOTIFY durationChanged) + +public: + explicit QSoundEffect(QObject *parent = 0); + ~QSoundEffect(); + + QUrl source() const; + void setSource(const QUrl &url); + + int loopCount() const; + void setLoopCount(int loopCount); + + int volume() const; + void setVolume(int volume); + + bool isMuted() const; + void setMuted(bool muted); + + int duration() const; + +signals: + void sourceChanged(); + void loopCountChanged(); + void volumeChanged(); + void mutedChanged(); + void durationChanged(); + +public slots: + void play(); + void stop(); + +private slots: + void repeat(); + +private: + Q_DISABLE_COPY(QSoundEffect) + + int m_loopCount; + int m_vol; + bool m_muted; + int m_runningCount; + + QSoundEffectPrivate* d; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + + +#endif // QSOUNDEFFECT_H diff --git a/src/multimedia/effects/qsoundeffect_pulse_p.cpp b/src/multimedia/effects/qsoundeffect_pulse_p.cpp new file mode 100644 index 0000000..7e9a25c --- /dev/null +++ b/src/multimedia/effects/qsoundeffect_pulse_p.cpp @@ -0,0 +1,509 @@ +/**************************************************************************** +** +** 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 QtMultimedia 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$ +** +****************************************************************************/ + +// +// 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 +#include +#include +#include + +#include "qmediacontent.h" +#include "qmediaplayer.h" +#include "qsoundeffect_p.h" + +#include "wavedecoder_p.h" + +#include "qsoundeffect_pulse_p.h" + +#if(Q_WS_MAEMO_5) +#include +#endif + +#include + +// Less than ideal +#define PA_SCACHE_ENTRY_SIZE_MAX (1024*1024*16) + +QT_BEGIN_NAMESPACE + +namespace +{ +inline pa_sample_spec audioFormatToSampleSpec(const QAudioFormat &format) +{ + pa_sample_spec spec; + + spec.rate = format.frequency(); + spec.channels = format.channels(); + + if (format.sampleSize() == 8) + spec.format = PA_SAMPLE_U8; + else if (format.sampleSize() == 16) { + switch (format.byteOrder()) { + case QAudioFormat::BigEndian: spec.format = PA_SAMPLE_S16BE; break; + case QAudioFormat::LittleEndian: spec.format = PA_SAMPLE_S16LE; break; + } + } + else if (format.sampleSize() == 32) { + switch (format.byteOrder()) { + case QAudioFormat::BigEndian: spec.format = PA_SAMPLE_S32BE; break; + case QAudioFormat::LittleEndian: spec.format = PA_SAMPLE_S32LE; break; + } + } + + return spec; +} + +class PulseDaemon +{ +public: + PulseDaemon():m_prepared(false) + { + prepare(); + } + + ~PulseDaemon() + { + if (m_prepared) + release(); + } + + inline void lock() + { + pa_threaded_mainloop_lock(m_mainLoop); + } + + inline void unlock() + { + pa_threaded_mainloop_unlock(m_mainLoop); + } + + inline pa_context *context() const + { + return m_context; + } + + int volume() + { + return m_vol; + } + +private: + void prepare() + { + m_vol = 100; + + m_mainLoop = pa_threaded_mainloop_new(); + if (m_mainLoop == 0) { + qWarning("PulseAudioService: unable to create pulseaudio mainloop"); + return; + } + + if (pa_threaded_mainloop_start(m_mainLoop) != 0) { + qWarning("PulseAudioService: unable to start pulseaudio mainloop"); + pa_threaded_mainloop_free(m_mainLoop); + return; + } + + m_mainLoopApi = pa_threaded_mainloop_get_api(m_mainLoop); + + lock(); + m_context = pa_context_new(m_mainLoopApi, QString(QLatin1String("QtPulseAudio:%1")).arg(::getpid()).toAscii().constData()); + +#if(Q_WS_MAEMO_5) + pa_context_set_state_callback(m_context, context_state_callback, this); +#endif + if (m_context == 0) { + qWarning("PulseAudioService: Unable to create new pulseaudio context"); + pa_threaded_mainloop_free(m_mainLoop); + return; + } + + if (pa_context_connect(m_context, NULL, (pa_context_flags_t)0, NULL) < 0) { + qWarning("PulseAudioService: pa_context_connect() failed"); + pa_context_unref(m_context); + pa_threaded_mainloop_free(m_mainLoop); + return; + } + unlock(); + + m_prepared = true; + } + + void release() + { + if (!m_prepared) return; + pa_threaded_mainloop_stop(m_mainLoop); + pa_threaded_mainloop_free(m_mainLoop); + m_prepared = false; + } + +#if(Q_WS_MAEMO_5) + static void context_state_callback(pa_context *c, void *userdata) + { + PulseDaemon *self = reinterpret_cast(userdata); + switch (pa_context_get_state(c)) { + case PA_CONTEXT_CONNECTING: + case PA_CONTEXT_AUTHORIZING: + case PA_CONTEXT_SETTING_NAME: + break; + case PA_CONTEXT_READY: + pa_ext_stream_restore_set_subscribe_cb(c, &stream_restore_monitor_callback, self); + pa_ext_stream_restore_subscribe(c, 1, NULL, self); + break; + default: + break; + } + } + static void stream_restore_monitor_callback(pa_context *c, void *userdata) + { + PulseDaemon *self = reinterpret_cast(userdata); + pa_ext_stream_restore2_read(c, &stream_restore_info_callback, self); + } + static void stream_restore_info_callback(pa_context *c, const pa_ext_stream_restore2_info *info, + int eol, void *userdata) + { + Q_UNUSED(c) + + PulseDaemon *self = reinterpret_cast(userdata); + + if (!eol) { + if (QString(info->name).startsWith(QLatin1String("sink-input-by-media-role:x-maemo"))) { + const unsigned str_length = 256; + char str[str_length]; + pa_cvolume_snprint(str, str_length, &info->volume); + self->m_vol = QString(str).replace(" ","").replace("%","").mid(2).toInt(); + } + } + } +#endif + + int m_vol; + bool m_prepared; + pa_context *m_context; + pa_threaded_mainloop *m_mainLoop; + pa_mainloop_api *m_mainLoopApi; +}; +} + +Q_GLOBAL_STATIC(PulseDaemon, daemon) + + +QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): + QObject(parent), + m_muted(false), + m_playQueued(false), + m_vol(100), + m_duration(0), + m_dataUploaded(0), + m_state(QMediaPlayer::StoppedState), + m_status(QMediaPlayer::NoMedia), + m_reply(0), + m_stream(0), + m_networkAccessManager(0) +{ +} + +QSoundEffectPrivate::~QSoundEffectPrivate() +{ + delete m_reply; + unloadSample(); +} + +qint64 QSoundEffectPrivate::duration() const +{ + return m_duration; +} + +int QSoundEffectPrivate::volume() const +{ + return m_vol; +} + +bool QSoundEffectPrivate::isMuted() const +{ + return m_muted; +} + +QMediaContent QSoundEffectPrivate::media() const +{ + return m_media; +} + +QMediaPlayer::State QSoundEffectPrivate::state() const +{ + return m_state; +} + +QMediaPlayer::MediaStatus QSoundEffectPrivate::mediaStatus() const +{ + return m_status; +} + +void QSoundEffectPrivate::play() +{ + if (m_status == QMediaPlayer::LoadingMedia) { + m_playQueued = true; + return; + } + + if (m_status != QMediaPlayer::BufferedMedia || + m_state == QMediaPlayer::PlayingState) + return; + + pa_volume_t m_vol = PA_VOLUME_NORM; + + daemon()->lock(); +#if(Q_WS_MAEMO_5) + m_vol = PA_VOLUME_NORM/100*((daemon()->volume()+m_vol)/2); +#endif + pa_operation_unref( + pa_context_play_sample(daemon()->context(), + m_name.constData(), + 0, + m_vol, + play_callback, + this) + ); + daemon()->unlock(); + + m_playbackTime.start(); + + emit stateChanged(m_state = QMediaPlayer::PlayingState); +} + +void QSoundEffectPrivate::stop() +{ + emit stateChanged(m_state = QMediaPlayer::StoppedState); +} + +void QSoundEffectPrivate::setVolume(int volume) +{ + m_vol = volume; +} + +void QSoundEffectPrivate::setMuted(bool muted) +{ + m_muted = muted; +} + +void QSoundEffectPrivate::setMedia(const QMediaContent &media) +{ + if (media.isNull()) { + m_media = QMediaContent(); + unloadSample(); + return; + } + if (m_media == media) + return; + m_media = media; + + if (m_networkAccessManager == 0) + m_networkAccessManager = new QNetworkAccessManager(this); + + m_stream = m_networkAccessManager->get(QNetworkRequest(m_media.canonicalUrl())); + + unloadSample(); + loadSample(); + + emit mediaChanged(m_media); +} + +void QSoundEffectPrivate::decoderReady() +{ + if (m_waveDecoder->size() >= PA_SCACHE_ENTRY_SIZE_MAX) { + m_status = QMediaPlayer::InvalidMedia; + emit mediaStatusChanged(m_status); + qWarning("QtPulseAudio: attempting to load to large a sample"); + return; + } + + if (m_name.isNull()) + m_name = QString(QLatin1String("QtPulseSample-%1-%2")).arg(::getpid()).arg(quintptr(this)).toUtf8(); + + pa_sample_spec spec = audioFormatToSampleSpec(m_waveDecoder->audioFormat()); + + daemon()->lock(); + pa_stream *stream = pa_stream_new(daemon()->context(), m_name.constData(), &spec, 0); + pa_stream_set_state_callback(stream, stream_state_callback, this); + pa_stream_set_write_callback(stream, stream_write_callback, this); + pa_stream_connect_upload(stream, (size_t)m_waveDecoder->size()); + daemon()->unlock(); +} + +void QSoundEffectPrivate::decoderError() +{ + emit mediaStatusChanged(m_status = QMediaPlayer::InvalidMedia); +} + +void QSoundEffectPrivate::checkPlayTime() +{ + int elapsed = m_playbackTime.elapsed(); + + if (elapsed >= m_duration) { + m_state = QMediaPlayer::StoppedState; + emit stateChanged(m_state); + } + else + startTimer(m_duration - elapsed); +} + +void QSoundEffectPrivate::loadSample() +{ + m_waveDecoder = new WaveDecoder(m_stream); + connect(m_waveDecoder, SIGNAL(formatKnown()), SLOT(decoderReady())); + connect(m_waveDecoder, SIGNAL(invalidFormat()), SLOT(decoderError())); + + m_status = QMediaPlayer::LoadingMedia; + emit mediaStatusChanged(m_status); +} + +void QSoundEffectPrivate::unloadSample() +{ + if (m_status != QMediaPlayer::BufferedMedia) + return; + + m_status = QMediaPlayer::NoMedia; + + daemon()->lock(); + pa_context_remove_sample(daemon()->context(), m_name.constData(), NULL, NULL); + daemon()->unlock(); + + m_duration = 0; + m_dataUploaded = 0; +} + +void QSoundEffectPrivate::timerEvent(QTimerEvent *event) +{ + if (m_state == QMediaPlayer::PlayingState) { + m_state = QMediaPlayer::StoppedState; + emit stateChanged(m_state); + } + + killTimer(event->timerId()); +} + +void QSoundEffectPrivate::stream_write_callback(pa_stream *s, size_t length, void *userdata) +{ + Q_UNUSED(length); + + QSoundEffectPrivate *self = reinterpret_cast(userdata); + + size_t bufferSize = qMin(pa_stream_writable_size(s), + size_t(self->m_waveDecoder->bytesAvailable())); + char buffer[bufferSize]; + + size_t len = 0; + while (len < length) { + qint64 read = self->m_waveDecoder->read(buffer, qMin(bufferSize, length -len)); + if (read > 0) { + if (pa_stream_write(s, buffer, size_t(read), 0, 0, PA_SEEK_RELATIVE) == 0) + len += size_t(read); + else + break; + } + } + self->m_dataUploaded += len; + + if (self->m_waveDecoder->size() == self->m_dataUploaded) { + pa_stream_finish_upload(s); + + self->m_duration = self->m_waveDecoder->duration(); + emit self->durationChanged(self->m_duration); + + self->m_status = QMediaPlayer::BufferedMedia; + emit self->mediaStatusChanged(self->m_status); + + self->m_waveDecoder->deleteLater(); + if (!self->m_media.isNull()) + self->m_stream->deleteLater(); + + if (self->m_playQueued) { + self->m_playQueued = false; + QMetaObject::invokeMethod(self, "play"); + } + } +} + +void QSoundEffectPrivate::stream_state_callback(pa_stream *s, void *userdata) +{ + QSoundEffectPrivate *self = reinterpret_cast(userdata); + + switch (pa_stream_get_state(s)) { + case PA_STREAM_CREATING: + case PA_STREAM_READY: + case PA_STREAM_TERMINATED: + break; + + case PA_STREAM_FAILED: + default: + self->m_status = QMediaPlayer::InvalidMedia; + emit self->mediaStatusChanged(self->m_status); + break; + } +} + +void QSoundEffectPrivate::play_callback(pa_context *c, int success, void *userdata) +{ + Q_UNUSED(c); + + QSoundEffectPrivate *self = reinterpret_cast(userdata); + + if (success == 1) + QMetaObject::invokeMethod(self, "checkPlayTime", Qt::QueuedConnection); + else { + self->m_state = QMediaPlayer::StoppedState; + emit self->stateChanged(self->m_state); + } +} + +QT_END_NAMESPACE + + diff --git a/src/multimedia/effects/qsoundeffect_pulse_p.h b/src/multimedia/effects/qsoundeffect_pulse_p.h new file mode 100644 index 0000000..247f8a3 --- /dev/null +++ b/src/multimedia/effects/qsoundeffect_pulse_p.h @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** 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 QtMultimedia 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 QSOUNDEFFECT_PULSE_H +#define QSOUNDEFFECT_PULSE_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 "qsoundeffect_p.h" + +#include +#include +#include +#include + + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QNetworkReply; +class QNetworkAccessManager; +class WaveDecoder; + +class QSoundEffectPrivate : public QObject +{ + Q_OBJECT +public: + explicit QSoundEffectPrivate(QObject* parent); + ~QSoundEffectPrivate(); + + qint64 duration() const; + int volume() const; + bool isMuted() const; + QMediaContent media() const; + QMediaPlayer::State state() const; + QMediaPlayer::MediaStatus mediaStatus() const; + +public Q_SLOTS: + void play(); + void stop(); + void setVolume(int volume); + void setMuted(bool muted); + void setMedia(const QMediaContent &media); + +Q_SIGNALS: + void mediaChanged(const QMediaContent &media); + void mediaStatusChanged(QMediaPlayer::MediaStatus status); + void stateChanged(QMediaPlayer::State newState); + void durationChanged(qint64 duration); + void volumeChanged(int volume); + void mutedChanged(bool muted); + void error(QMediaPlayer::Error error); + +private slots: + void decoderReady(); + void decoderError(); + void checkPlayTime(); + +private: + void loadSample(); + void unloadSample(); + + void timerEvent(QTimerEvent *event); + + static void stream_write_callback(pa_stream *s, size_t length, void *userdata); + static void stream_state_callback(pa_stream *s, void *userdata); + static void play_callback(pa_context *c, int success, void *userdata); + + bool m_muted; + bool m_playQueued; + int m_vol; + int m_duration; + int m_dataUploaded; + QTime m_playbackTime; + QMediaPlayer::State m_state; + QMediaPlayer::MediaStatus m_status; + QByteArray m_name; + QMediaContent m_media; + QNetworkReply *m_reply; + WaveDecoder *m_waveDecoder; + QIODevice *m_stream; + QNetworkAccessManager *m_networkAccessManager; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QSOUNDEFFECT_PULSE_H diff --git a/src/multimedia/effects/qsoundeffect_qmedia_p.cpp b/src/multimedia/effects/qsoundeffect_qmedia_p.cpp new file mode 100644 index 0000000..48fb257 --- /dev/null +++ b/src/multimedia/effects/qsoundeffect_qmedia_p.cpp @@ -0,0 +1,167 @@ +/**************************************************************************** +** +** 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 QtMultimedia 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$ +** +****************************************************************************/ + +// +// 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 + +#include "qmediacontent.h" +#include "qmediaplayer.h" + +#include "qsoundeffect_p.h" +#include "qsoundeffect_qmedia_p.h" + + +QT_BEGIN_NAMESPACE + +QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): + QObject(parent), + m_muted(false), + m_vol(100), + m_player(0) +{ +} + +QSoundEffectPrivate::~QSoundEffectPrivate() +{ + if (m_player) delete m_player; +} + +qint64 QSoundEffectPrivate::duration() const +{ + if (m_player) return m_player->duration(); + + return 0; +} + +int QSoundEffectPrivate::volume() const +{ + if (m_player) return m_player->volume(); + + return m_vol; +} + +bool QSoundEffectPrivate::isMuted() const +{ + if (m_player) return m_player->isMuted(); + + return m_muted; +} + +QMediaContent QSoundEffectPrivate::media() const +{ + if (m_player) return m_player->media(); + + return QMediaContent(); +} + +QMediaPlayer::State QSoundEffectPrivate::state() const +{ + if (m_player) return m_player->state(); + + return QMediaPlayer::StoppedState; +} + +QMediaPlayer::MediaStatus QSoundEffectPrivate::mediaStatus() const +{ + if (m_player) return m_player->mediaStatus(); + + return QMediaPlayer::UnknownMediaStatus; +} + +void QSoundEffectPrivate::play() +{ + if (m_player && !m_player->isMuted()) + m_player->play(); +} + +void QSoundEffectPrivate::stop() +{ + if (m_player) + m_player->stop(); +} + +void QSoundEffectPrivate::setVolume(int volume) +{ + m_vol = volume; + + if (m_player) + m_player->setVolume(volume); +} + +void QSoundEffectPrivate::setMuted(bool muted) +{ + m_muted = muted; + + if (m_player) + m_player->setMuted(muted); +} + +void QSoundEffectPrivate::setMedia(const QMediaContent &media) +{ + if (media.isNull()) + return; + + if (m_player == 0) { + m_player = new QMediaPlayer(this, QMediaPlayer::LowLatency); + m_player->setVolume(m_vol); + m_player->setMuted(m_muted); + + connect(m_player, SIGNAL(volumeChanged(int)), SIGNAL(volumeChanged(int))); + connect(m_player, SIGNAL(mutedChanged(bool)), SIGNAL(mutedChanged(bool))); + connect(m_player, SIGNAL(durationChanged(qint64)), SIGNAL(durationChanged(qint64))); + connect(m_player, SIGNAL(stateChanged(QMediaPlayer::State)), SIGNAL(stateChanged(QMediaPlayer::State))); + } + + m_player->setMedia(media.canonicalUrl()); +} + +QT_END_NAMESPACE + diff --git a/src/multimedia/effects/qsoundeffect_qmedia_p.h b/src/multimedia/effects/qsoundeffect_qmedia_p.h new file mode 100644 index 0000000..8267f79 --- /dev/null +++ b/src/multimedia/effects/qsoundeffect_qmedia_p.h @@ -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 QtMultimedia 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 QSOUNDEFFECT_QMEDIA_H +#define QSOUNDEFFECT_QMEDIA_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 +#include +#include +#include "qsoundeffect_p.h" + + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class WaveDecoder; + +class QSoundEffectPrivate : public QObject +{ + Q_OBJECT +public: + explicit QSoundEffectPrivate(QObject* parent); + ~QSoundEffectPrivate(); + + qint64 duration() const; + int volume() const; + bool isMuted() const; + QMediaContent media() const; + QMediaPlayer::State state() const; + QMediaPlayer::MediaStatus mediaStatus() const; + +public Q_SLOTS: + void play(); + void stop(); + void setVolume(int volume); + void setMuted(bool muted); + void setMedia(const QMediaContent &media); + +Q_SIGNALS: + void mediaChanged(const QMediaContent &media); + void mediaStatusChanged(QMediaPlayer::MediaStatus status); + void stateChanged(QMediaPlayer::State newState); + void durationChanged(qint64 duration); + void volumeChanged(int volume); + void mutedChanged(bool muted); + void error(QMediaPlayer::Error error); + +private: + bool m_muted; + int m_vol; + QMediaPlayer *m_player; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QSOUNDEFFECT_QMEDIA_H diff --git a/src/multimedia/effects/qsoundeffect_qsound_p.cpp b/src/multimedia/effects/qsoundeffect_qsound_p.cpp new file mode 100644 index 0000000..df160a9 --- /dev/null +++ b/src/multimedia/effects/qsoundeffect_qsound_p.cpp @@ -0,0 +1,225 @@ +/**************************************************************************** +** +** 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 QtMultimedia 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$ +** +****************************************************************************/ + +// +// 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 +#include +#include +#include +#include +#include + +#include "qmediacontent.h" +#include "qmediaplayer.h" +#include "qsoundeffect_p.h" + +#include "wavedecoder_p.h" + +#include "qsoundeffect_qsound_p.h" + +QT_BEGIN_NAMESPACE + +QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): + QObject(parent), + m_queued(false), + m_muted(false), + m_state(QMediaPlayer::StoppedState), + m_status(QMediaPlayer::NoMedia), + m_file(0), + m_sound(0) +{ + m_timer = new QTimer(this); + connect(m_timer,SIGNAL(timeout()),SLOT(checkPlayTime())); + m_media = QMediaContent(); +} + +QSoundEffectPrivate::~QSoundEffectPrivate() +{ + if (m_sound) delete m_sound; + if (m_waveDecoder) delete m_waveDecoder; + m_file->close(); +} + +qint64 QSoundEffectPrivate::duration() const +{ + if (m_waveDecoder) + return m_waveDecoder->size(); + + return 0; +} + +int QSoundEffectPrivate::volume() const +{ + return 100; +} + +bool QSoundEffectPrivate::isMuted() const +{ + return m_muted; +} + +QMediaContent QSoundEffectPrivate::media() const +{ + return m_media; +} + +QMediaPlayer::State QSoundEffectPrivate::state() const +{ + return m_state; +} + +QMediaPlayer::MediaStatus QSoundEffectPrivate::mediaStatus() const +{ + return m_status; +} + +void QSoundEffectPrivate::play() +{ + if (m_sound && !m_muted) { + m_queued = false; + m_timer->start(20); + m_playbackTime.start(); + m_sound->play(); + emit stateChanged(m_state = QMediaPlayer::PlayingState); + } else if (m_status == QMediaPlayer::LoadingMedia) + m_queued = true; +} + +void QSoundEffectPrivate::stop() +{ + m_timer->stop(); + + if (m_sound) { + m_sound->stop(); + emit stateChanged(m_state = QMediaPlayer::StoppedState); + } +} + +void QSoundEffectPrivate::setVolume(int volume) +{ + Q_UNUSED(volume) +} + +void QSoundEffectPrivate::setMuted(bool muted) +{ + m_muted = muted; +} + +void QSoundEffectPrivate::setMedia(const QMediaContent &media) +{ + m_queued = false; + + if (media.isNull() || media.canonicalUrl().scheme() != QLatin1String("file")) { + m_media = QMediaContent(); + return; + } + if (m_media == media) + return; + + m_media = media; + m_file = new QFile(m_media.canonicalUrl().toLocalFile()); + m_file->open(QIODevice::ReadOnly|QIODevice::Unbuffered); + + unloadSample(); + loadSample(); + + emit mediaChanged(m_media); +} + +void QSoundEffectPrivate::decoderReady() +{ + m_file->close(); + m_sound = new QSound(m_media.canonicalUrl().toLocalFile()); + emit mediaStatusChanged(m_status = QMediaPlayer::LoadedMedia); + + if (m_queued) + play(); +} + +void QSoundEffectPrivate::decoderError() +{ + m_file->close(); + emit mediaStatusChanged(m_status = QMediaPlayer::InvalidMedia); +} + +void QSoundEffectPrivate::checkPlayTime() +{ + if (m_sound->isFinished()) { + m_timer->stop(); + m_state = QMediaPlayer::StoppedState; + emit stateChanged(m_state); + } +} + +void QSoundEffectPrivate::loadSample() +{ + m_waveDecoder = new WaveDecoder(m_file); + connect(m_waveDecoder, SIGNAL(formatKnown()), SLOT(decoderReady())); + connect(m_waveDecoder, SIGNAL(invalidFormat()), SLOT(decoderError())); + + m_status = QMediaPlayer::LoadingMedia; + emit mediaStatusChanged(m_status); +} + +void QSoundEffectPrivate::unloadSample() +{ + if (m_sound == 0) + return; + + m_status = QMediaPlayer::NoMedia; + + if (m_sound) + delete m_sound; + + m_sound = 0; +} + +QT_END_NAMESPACE diff --git a/src/multimedia/effects/qsoundeffect_qsound_p.h b/src/multimedia/effects/qsoundeffect_qsound_p.h new file mode 100644 index 0000000..45c0888 --- /dev/null +++ b/src/multimedia/effects/qsoundeffect_qsound_p.h @@ -0,0 +1,129 @@ +/**************************************************************************** +** +** 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 QtMultimedia 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 QSOUNDEFFECT_QSOUND_H +#define QSOUNDEFFECT_QSOUND_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 +#include +#include + +#include "qsoundeffect_p.h" + + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QTimer; +class QSound; +class QFile; +class WaveDecoder; + +class QSoundEffectPrivate : public QObject +{ + Q_OBJECT +public: + explicit QSoundEffectPrivate(QObject* parent); + ~QSoundEffectPrivate(); + + qint64 duration() const; + int volume() const; + bool isMuted() const; + QMediaContent media() const; + QMediaPlayer::State state() const; + QMediaPlayer::MediaStatus mediaStatus() const; + +public Q_SLOTS: + void play(); + void stop(); + void setVolume(int volume); + void setMuted(bool muted); + void setMedia(const QMediaContent &media); + +Q_SIGNALS: + void mediaChanged(const QMediaContent &media); + void mediaStatusChanged(QMediaPlayer::MediaStatus status); + void stateChanged(QMediaPlayer::State newState); + void durationChanged(qint64 duration); + void volumeChanged(int volume); + void mutedChanged(bool muted); + void error(QMediaPlayer::Error error); + +private slots: + void decoderReady(); + void decoderError(); + void checkPlayTime(); + +private: + void loadSample(); + void unloadSample(); + + bool m_queued; + bool m_muted; + QTime m_playbackTime; + QMediaPlayer::State m_state; + QMediaPlayer::MediaStatus m_status; + QFile *m_file; + QByteArray m_name; + QMediaContent m_media; + WaveDecoder *m_waveDecoder; + QSound *m_sound; + QTimer *m_timer; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QSOUNDEFFECT_QSOUND_H diff --git a/src/multimedia/effects/wavedecoder_p.cpp b/src/multimedia/effects/wavedecoder_p.cpp new file mode 100644 index 0000000..f2277ae --- /dev/null +++ b/src/multimedia/effects/wavedecoder_p.cpp @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** 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 QtMultimedia 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 "wavedecoder_p.h" + +#include +#include + +QT_BEGIN_NAMESPACE + +WaveDecoder::WaveDecoder(QIODevice *s, QObject *parent): + QIODevice(parent), + haveFormat(false), + dataSize(0), + remaining(0), + source(s) +{ + open(QIODevice::ReadOnly | QIODevice::Unbuffered); + + if (source->bytesAvailable() >= sizeof(CombinedHeader)) + QTimer::singleShot(0, this, SLOT(handleData())); + else + connect(source, SIGNAL(readyRead()), SLOT(handleData())); +} + +WaveDecoder::~WaveDecoder() +{ +} + +QAudioFormat WaveDecoder::audioFormat() const +{ + return format; +} + +int WaveDecoder::duration() const +{ + return size() * 1000 / (format.sampleSize() / 8) / format.channels() / format.frequency(); +} + +qint64 WaveDecoder::size() const +{ + return haveFormat ? dataSize : 0; +} + +bool WaveDecoder::isSequential() const +{ + return source->isSequential(); +} + +qint64 WaveDecoder::bytesAvailable() const +{ + return haveFormat ? source->bytesAvailable() : 0; +} + +qint64 WaveDecoder::readData(char *data, qint64 maxlen) +{ + return haveFormat ? source->read(data, maxlen) : 0; +} + +qint64 WaveDecoder::writeData(const char *data, qint64 len) +{ + Q_UNUSED(data); + Q_UNUSED(len); + + return -1; +} + +void WaveDecoder::handleData() +{ + if (source->bytesAvailable() < sizeof(CombinedHeader)) + return; + + source->disconnect(SIGNAL(readyRead()), this, SLOT(handleData())); + source->read((char*)&header, sizeof(CombinedHeader)); + + if (qstrncmp(header.riff.descriptor.id, "RIFF", 4) != 0 || + qstrncmp(header.riff.type, "WAVE", 4) != 0 || + qstrncmp(header.wave.descriptor.id, "fmt ", 4) != 0 || + (header.wave.audioFormat != 0 && header.wave.audioFormat != 1) || + qstrncmp(header.data.descriptor.id, "data", 4) != 0) { + + emit invalidFormat(); + } + else { + int bps = qFromLittleEndian(header.wave.bitsPerSample); + + format.setCodec(QLatin1String("audio/pcm")); + format.setSampleType(bps == 8 ? QAudioFormat::UnSignedInt : QAudioFormat::SignedInt); + format.setByteOrder(QAudioFormat::LittleEndian); + format.setFrequency(qFromLittleEndian(header.wave.sampleRate)); + format.setSampleSize(bps); + format.setChannels(qFromLittleEndian(header.wave.numChannels)); + + dataSize = qFromLittleEndian(header.data.descriptor.size); + + haveFormat = true; + connect(source, SIGNAL(readyRead()), SIGNAL(readyRead())); + emit formatKnown(); + } +} + +QT_END_NAMESPACE diff --git a/src/multimedia/effects/wavedecoder_p.h b/src/multimedia/effects/wavedecoder_p.h new file mode 100644 index 0000000..00aa14e --- /dev/null +++ b/src/multimedia/effects/wavedecoder_p.h @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** 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 QtMultimedia 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 WAVEDECODER_H +#define WAVEDECODER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + + +class WaveDecoder : public QIODevice +{ + Q_OBJECT + +public: + explicit WaveDecoder(QIODevice *source, QObject *parent = 0); + ~WaveDecoder(); + + QAudioFormat audioFormat() const; + int duration() const; + + qint64 size() const; + bool isSequential() const; + qint64 bytesAvailable() const; + +signals: + void formatKnown(); + void invalidFormat(); + +private slots: + void handleData(); + +private: + qint64 readData(char *data, qint64 maxlen); + qint64 writeData(const char *data, qint64 len); + + struct chunk + { + char id[4]; + quint32 size; + }; + struct RIFFHeader + { + chunk descriptor; + char type[4]; + }; + struct WAVEHeader + { + chunk descriptor; + quint16 audioFormat; + quint16 numChannels; + quint32 sampleRate; + quint32 byteRate; + quint16 blockAlign; + quint16 bitsPerSample; + }; + struct DATAHeader + { + chunk descriptor; + }; + struct CombinedHeader + { + RIFFHeader riff; + WAVEHeader wave; + DATAHeader data; + }; + + bool haveFormat; + qint64 dataSize; + qint64 remaining; + QAudioFormat format; + QIODevice *source; + CombinedHeader header; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // WAVEDECODER_H diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro index 106d3ab..500aff7 100644 --- a/src/multimedia/multimedia.pro +++ b/src/multimedia/multimedia.pro @@ -12,6 +12,6 @@ include(audio/audio.pri) include(video/video.pri) include(base/base.pri) include(playback/playback.pri) -include(qml/qml.pri) +include(effects/effects.pri) symbian: TARGET.UID3 = 0x2001E627 diff --git a/src/multimedia/qml/multimediadeclarative.cpp b/src/multimedia/qml/multimediadeclarative.cpp deleted file mode 100644 index 7f5298f..0000000 --- a/src/multimedia/qml/multimediadeclarative.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 -#include -#include -#include - - -QT_BEGIN_NAMESPACE - -namespace QtMultimedia -{ - -/*! - Register the Multimedia QML elements. - \internal -*/ - -void qRegisterDeclarativeElements(const char *uri) -{ - Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.multimedia")); - - qmlRegisterType(uri, 4, 7, "SoundEffect"); - qmlRegisterType(uri, 4, 7, "Audio"); - qmlRegisterType(uri, 4, 7, "Video"); -} - -} - -QT_END_NAMESPACE - diff --git a/src/multimedia/qml/multimediadeclarative.h b/src/multimedia/qml/multimediadeclarative.h deleted file mode 100644 index 29af65a..0000000 --- a/src/multimedia/qml/multimediadeclarative.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 QTMULTIMEDIA_QML_H -#define QTMULTIMEDIA_QML_H - -#include - -QT_BEGIN_HEADER -QT_BEGIN_NAMESPACE - -QT_MODULE(Multimedia) - -namespace QtMultimedia -{ -extern void Q_MULTIMEDIA_EXPORT qRegisterDeclarativeElements(const char *uri); -} - -QT_END_NAMESPACE -QT_END_HEADER - -#endif // ifndef QTMULTIMEDIA_QML_H diff --git a/src/multimedia/qml/qdeclarativeaudio.cpp b/src/multimedia/qml/qdeclarativeaudio.cpp deleted file mode 100644 index 1cbf594..0000000 --- a/src/multimedia/qml/qdeclarativeaudio.cpp +++ /dev/null @@ -1,327 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 "qdeclarativeaudio_p.h" - -#include - -QT_BEGIN_NAMESPACE - - -/*! - \qmlclass Audio QDeclarativeAudio - \since 4.7 - \brief The Audio element allows you to add audio playback to a scene. - - \qml - Audio { source: "audio/song.mp3" } - \endqml - - \sa Video -*/ - -/*! - \internal - \class QDeclarativeAudio - \brief The QDeclarativeAudio class provides an audio item that you can add to a QDeclarativeView. -*/ - -void QDeclarativeAudio::_q_error(int errorCode, const QString &errorString) -{ - m_error = QMediaPlayer::Error(errorCode); - m_errorString = errorString; - - emit error(Error(errorCode), errorString); - emit errorChanged(); -} - - -QDeclarativeAudio::QDeclarativeAudio(QObject *parent) - : QObject(parent) -{ - setObject(this); -} - -QDeclarativeAudio::~QDeclarativeAudio() -{ - shutdown(); -} - -/*! - \qmlmethod Audio::play() - - Starts playback of the media. - - Sets the \l playing property to true, and the \l paused property to false. -*/ - -void QDeclarativeAudio::play() -{ - m_playerControl->play(); - - if (m_paused) { - m_paused = false; - emit pausedChanged(); - } -} - -/*! - \qmlmethod Audio::pause() - - Pauses playback of the media. - - Sets the \l playing and \l paused properties to true. -*/ - -void QDeclarativeAudio::pause() -{ - m_playerControl->pause(); - - if (!m_paused && m_state == QMediaPlayer::PausedState) { - m_paused = true; - emit pausedChanged(); - } -} - -/*! - \qmlmethod Audio::stop() - - Stops playback of the media. - - Sets the \l playing and \l paused properties to false. -*/ - -void QDeclarativeAudio::stop() -{ - m_playerControl->stop(); - - if (m_paused) { - m_paused = false; - emit pausedChanged(); - } -} - -/*! - \qmlproperty url Audio::source - - This property holds the source URL of the media. -*/ - -/*! - \qmlproperty bool Audio::playing - - This property holds whether the media is playing. - - Defaults to false, and can be set to true to start playback. -*/ - -/*! - \qmlproperty bool Audio::paused - - This property holds whether the media is paused. - - Defaults to false, and can be set to true to pause playback. -*/ - -/*! - \qmlsignal Audio::onStarted() - - This handler is called when playback is started. -*/ - -/*! - \qmlsignal Audio::onResumed() - - This handler is called when playback is resumed from the paused state. -*/ - -/*! - \qmlsignal Audio::onPaused() - - This handler is called when playback is paused. -*/ - -/*! - \qmlsignal Audio::onStopped() - - This handler is called when playback is stopped. -*/ - -/*! - \qmlproperty enum Audio::status - - This property holds the status of media loading. It can be one of: - - \list - \o NoMedia - no media has been set. - \o Loading - the media is currently being loaded. - \o Loaded - the media has been loaded. - \o Buffering - the media is buffering data. - \o Stalled - playback has been interrupted while the media is buffering data. - \o Buffered - the media has buffered data. - \o EndOfMedia - the media has played to the end. - \o InvalidMedia - the media cannot be played. - \o UnknownStatus - the status of the media is unknown. - \endlist -*/ - -QDeclarativeAudio::Status QDeclarativeAudio::status() const -{ - return Status(m_status); -} - -/*! - \qmlsignal Audio::onLoaded() - - This handler is called when the media source has been loaded. -*/ - -/*! - \qmlsignal Audio::onBuffering() - - This handler is called when the media starts buffering. -*/ - -/*! - \qmlsignal Audio::onStalled() - - This handler is called when playback has stalled while the media buffers. -*/ - -/*! - \qmlsignal Audio::onBuffered() - - This handler is called when the media has finished buffering. -*/ - -/*! - \qmlsignal Audio::onEndOfMedia() - - This handler is called when playback stops because end of the media has been reached. -*/ -/*! - \qmlproperty int Audio::duration - - This property holds the duration of the media in milliseconds. - - If the media doesn't have a fixed duration (a live stream for example) this will be 0. -*/ - -/*! - \qmlproperty int Audio::position - - This property holds the current playback position in milliseconds. - - If the \l seekable property is true, this property can be set to seek to a new position. -*/ - -/*! - \qmlproperty qreal Audio::volume - - This property holds the volume of the audio output, from 0.0 (silent) to 1.0 (maximum volume). -*/ - -/*! - \qmlproperty bool Audio::muted - - This property holds whether the audio output is muted. -*/ - -/*! - \qmlproperty qreal Audio::bufferProgress - - This property holds how much of the data buffer is currently filled, from 0.0 (empty) to 1.0 - (full). -*/ - -/*! - \qmlproperty bool Audio::seekable - - This property holds whether position of the audio can be changed. - - If true; setting a \l position value will cause playback to seek to the new position. -*/ - -/*! - \qmlproperty qreal Audio::playbackRate - - This property holds the rate at which audio is played at as a multiple of the normal rate. -*/ - -/*! - \qmlproperty enum Audio::error - - This property holds the error state of the audio. It can be one of: - - \list - \o NoError - there is no current error. - \o ResourceError - the audio cannot be played due to a problem allocating resources. - \o FormatError - the audio format is not supported. - \o NetworkError - the audio cannot be played due to network issues. - \o AccessDenied - the audio cannot be played due to insufficient permissions. - \o ServiceMissing - the audio cannot be played because the media service could not be - instantiated. - \endlist -*/ - -QDeclarativeAudio::Error QDeclarativeAudio::error() const -{ - return Error(m_error); -} - -/*! - \qmlproperty string Audio::errorString - - This property holds a string describing the current error condition in more detail. -*/ - -/*! - \qmlsignal Audio::onError(error, errorString) - - This handler is called when an \l {Error}{error} has occurred. The errorString parameter - may contain more detailed information about the error. -*/ - -QT_END_NAMESPACE - -#include "moc_qdeclarativeaudio_p.cpp" - - diff --git a/src/multimedia/qml/qdeclarativeaudio_p.h b/src/multimedia/qml/qdeclarativeaudio_p.h deleted file mode 100644 index d1fb275..0000000 --- a/src/multimedia/qml/qdeclarativeaudio_p.h +++ /dev/null @@ -1,173 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 QDECLARATIVEAUDIO_P_H -#define QDECLARATIVEAUDIO_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of other Qt classes. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include - -#include -#include - - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -class QTimerEvent; - -class Q_AUTOTEST_EXPORT QDeclarativeAudio : public QObject, public QDeclarativeMediaBase, public QDeclarativeParserStatus -{ - Q_OBJECT - Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) - Q_PROPERTY(bool playing READ isPlaying WRITE setPlaying NOTIFY playingChanged) - Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged) - Q_PROPERTY(Status status READ status NOTIFY statusChanged) - Q_PROPERTY(int duration READ duration NOTIFY durationChanged) - Q_PROPERTY(int position READ position WRITE setPosition NOTIFY positionChanged) - Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged) - Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) - Q_PROPERTY(int bufferProgress READ bufferProgress NOTIFY bufferProgressChanged) - Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged) - Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged) - Q_PROPERTY(Error error READ error NOTIFY errorChanged) - Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) - Q_ENUMS(Status) - Q_ENUMS(Error) - Q_INTERFACES(QDeclarativeParserStatus) -public: - enum Status - { - UnknownStatus = QMediaPlayer::UnknownMediaStatus, - NoMedia = QMediaPlayer::NoMedia, - Loading = QMediaPlayer::LoadingMedia, - Loaded = QMediaPlayer::LoadedMedia, - Stalled = QMediaPlayer::StalledMedia, - Buffering = QMediaPlayer::BufferingMedia, - Buffered = QMediaPlayer::BufferedMedia, - EndOfMedia = QMediaPlayer::EndOfMedia, - InvalidMedia = QMediaPlayer::InvalidMedia - }; - - enum Error - { - NoError = QMediaPlayer::NoError, - ResourceError = QMediaPlayer::ResourceError, - FormatError = QMediaPlayer::FormatError, - NetworkError = QMediaPlayer::NetworkError, - AccessDenied = QMediaPlayer::AccessDeniedError, - ServiceMissing = QMediaPlayer::ServiceMissingError - }; - - QDeclarativeAudio(QObject *parent = 0); - ~QDeclarativeAudio(); - - Status status() const; - Error error() const; - -public Q_SLOTS: - void play(); - void pause(); - void stop(); - -Q_SIGNALS: - void sourceChanged(); - - void playingChanged(); - void pausedChanged(); - - void started(); - void resumed(); - void paused(); - void stopped(); - - void statusChanged(); - - void loaded(); - void buffering(); - void stalled(); - void buffered(); - void endOfMedia(); - - void durationChanged(); - void positionChanged(); - - void volumeChanged(); - void mutedChanged(); - - void bufferProgressChanged(); - - void seekableChanged(); - void playbackRateChanged(); - - void errorChanged(); - void error(QDeclarativeAudio::Error error, const QString &errorString); - -private Q_SLOTS: - void _q_error(int, const QString &); - -private: - Q_DISABLE_COPY(QDeclarativeAudio) - Q_PRIVATE_SLOT(mediaBase(), void _q_stateChanged(QMediaPlayer::State)) - Q_PRIVATE_SLOT(mediaBase(), void _q_mediaStatusChanged(QMediaPlayer::MediaStatus)) - Q_PRIVATE_SLOT(mediaBase(), void _q_metaDataChanged()) - - inline QDeclarativeMediaBase *mediaBase() { return this; } -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeAudio)) - -QT_END_HEADER - -#endif diff --git a/src/multimedia/qml/qdeclarativemediabase.cpp b/src/multimedia/qml/qdeclarativemediabase.cpp deleted file mode 100644 index e054cb2..0000000 --- a/src/multimedia/qml/qdeclarativemediabase.cpp +++ /dev/null @@ -1,413 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 "QtMultimedia/private/qdeclarativemediabase_p.h" - -#include -#include - -#include -#include -#include -#include -#include - - - -QT_BEGIN_NAMESPACE - - -class QDeclarativeMediaBaseObject : public QMediaObject -{ -public: - QDeclarativeMediaBaseObject(QMediaService *service) - : QMediaObject(0, service) - { - } -}; - -class QDeclarativeMediaBasePlayerControl : public QMediaPlayerControl -{ -public: - QDeclarativeMediaBasePlayerControl(QObject *parent) - : QMediaPlayerControl(parent) - { - } - - QMediaPlayer::State state() const { return QMediaPlayer::StoppedState; } - QMediaPlayer::MediaStatus mediaStatus() const { return QMediaPlayer::NoMedia; } - - qint64 duration() const { return 0; } - qint64 position() const { return 0; } - void setPosition(qint64) {} - int volume() const { return 0; } - void setVolume(int) {} - bool isMuted() const { return false; } - void setMuted(bool) {} - int bufferStatus() const { return 0; } - bool isAudioAvailable() const { return false; } - bool isVideoAvailable() const { return false; } - bool isSeekable() const { return false; } - QMediaTimeRange availablePlaybackRanges() const { return QMediaTimeRange(); } - qreal playbackRate() const { return 1; } - void setPlaybackRate(qreal) {} - QMediaContent media() const { return QMediaContent(); } - const QIODevice *mediaStream() const { return 0; } - void setMedia(const QMediaContent &, QIODevice *) {} - - void play() {} - void pause() {} - void stop() {} -}; - -class QDeclarativeMediaBaseAnimation : public QObject -{ -public: - QDeclarativeMediaBaseAnimation(QDeclarativeMediaBase *media) - : m_media(media) - { - } - - void start() { if (!m_timer.isActive()) m_timer.start(500, this); } - void stop() { m_timer.stop(); } - -protected: - void timerEvent(QTimerEvent *event) - { - if (event->timerId() == m_timer.timerId()) { - event->accept(); - - if (m_media->m_state == QMediaPlayer::PlayingState) - emit m_media->positionChanged(); - if (m_media->m_status == QMediaPlayer::BufferingMedia || QMediaPlayer::StalledMedia) - emit m_media->bufferProgressChanged(); - } else { - QObject::timerEvent(event); - } - } - -private: - QDeclarativeMediaBase *m_media; - QBasicTimer m_timer; -}; - -void QDeclarativeMediaBase::_q_stateChanged(QMediaPlayer::State state) -{ - if (state != m_state) { - QMediaPlayer::State oldState = m_state; - - m_state = state; - - if (state == QMediaPlayer::StoppedState) { - emit stopped(); - emit playingChanged(); - } else if (oldState == QMediaPlayer::StoppedState) { - emit started(); - emit playingChanged(); - } else if (oldState == QMediaPlayer::PausedState) { - m_paused = false; - - emit resumed(); - emit pausedChanged(); - } - - if (state == m_state && state == QMediaPlayer::PausedState) { - bool wasPaused = m_paused; - - m_paused = true; - - emit paused(); - - if (!wasPaused) - emit pausedChanged(); - } - - if (m_state == QMediaPlayer::PlayingState - || m_status == QMediaPlayer::BufferingMedia - || m_status == QMediaPlayer::StalledMedia) { - m_animation->start(); - } else { - m_animation->stop(); - } - } -} - -void QDeclarativeMediaBase::_q_mediaStatusChanged(QMediaPlayer::MediaStatus status) -{ - if (status != m_status) { - m_status = status; - - switch (status) { - case QMediaPlayer::LoadedMedia: - emit loaded(); - break; - case QMediaPlayer::BufferingMedia: - emit buffering(); - break; - case QMediaPlayer::BufferedMedia: - emit buffered(); - break; - case QMediaPlayer::StalledMedia: - emit stalled(); - break; - case QMediaPlayer::EndOfMedia: - emit endOfMedia(); - break; - default: - break; - } - - emit statusChanged(); - - if (m_state == QMediaPlayer::PlayingState - || m_status == QMediaPlayer::BufferingMedia - || m_status == QMediaPlayer::StalledMedia) { - m_animation->start(); - } else { - m_animation->stop(); - } - } -} - -void QDeclarativeMediaBase::_q_metaDataChanged() -{ - m_metaObject->metaDataChanged(); -} - -QDeclarativeMediaBase::QDeclarativeMediaBase() - : m_mediaService(0) - , m_playerControl(0) - , m_mediaObject(0) - , m_mediaProvider(0) - , m_metaDataControl(0) - , m_metaObject(0) - , m_animation(0) - , m_state(QMediaPlayer::StoppedState) - , m_status(QMediaPlayer::NoMedia) - , m_error(QMediaPlayer::NoError) - , m_paused(false) -{ -} - -QDeclarativeMediaBase::~QDeclarativeMediaBase() -{ -} - -void QDeclarativeMediaBase::shutdown() -{ - delete m_metaObject; - delete m_mediaObject; - - if (m_mediaProvider) - m_mediaProvider->releaseService(m_mediaService); - - delete m_animation; - -} - -void QDeclarativeMediaBase::setObject(QObject *object) -{ - if ((m_mediaProvider = QMediaServiceProvider::defaultServiceProvider())) { - if ((m_mediaService = m_mediaProvider->requestService(Q_MEDIASERVICE_MEDIAPLAYER))) { - m_playerControl = qobject_cast( - m_mediaService->control(QMediaPlayerControl_iid)); - m_metaDataControl = qobject_cast( - m_mediaService->control(QMetaDataControl_iid)); - m_mediaObject = new QDeclarativeMediaBaseObject(m_mediaService); - } - } - - if (m_playerControl) { - QObject::connect(m_playerControl, SIGNAL(stateChanged(QMediaPlayer::State)), - object, SLOT(_q_stateChanged(QMediaPlayer::State))); - QObject::connect(m_playerControl, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), - object, SLOT(_q_mediaStatusChanged(QMediaPlayer::MediaStatus))); - QObject::connect(m_playerControl, SIGNAL(mediaChanged(QMediaContent)), - object, SIGNAL(sourceChanged())); - QObject::connect(m_playerControl, SIGNAL(durationChanged(qint64)), - object, SIGNAL(durationChanged())); - QObject::connect(m_playerControl, SIGNAL(positionChanged(qint64)), - object, SIGNAL(positionChanged())); - QObject::connect(m_playerControl, SIGNAL(volumeChanged(int)), - object, SIGNAL(volumeChanged())); - QObject::connect(m_playerControl, SIGNAL(mutedChanged(bool)), - object, SIGNAL(mutedChanged())); - QObject::connect(m_playerControl, SIGNAL(bufferStatusChanged(int)), - object, SIGNAL(bufferProgressChanged())); - QObject::connect(m_playerControl, SIGNAL(seekableChanged(bool)), - object, SIGNAL(seekableChanged())); - QObject::connect(m_playerControl, SIGNAL(playbackRateChanged(qreal)), - object, SIGNAL(playbackRateChanged())); - QObject::connect(m_playerControl, SIGNAL(error(int,QString)), - object, SLOT(_q_error(int,QString))); - - m_animation = new QDeclarativeMediaBaseAnimation(this); - } else { - m_error = QMediaPlayer::ServiceMissingError; - - m_playerControl = new QDeclarativeMediaBasePlayerControl(object); - } - - if (m_metaDataControl) { - m_metaObject = new QMetaDataControlMetaObject(m_metaDataControl, object); - - QObject::connect(m_metaDataControl, SIGNAL(metaDataChanged()), - object, SLOT(_q_metaDataChanged())); - } -} - -QUrl QDeclarativeMediaBase::source() const -{ - return m_playerControl->media().canonicalUrl(); -} - -void QDeclarativeMediaBase::setSource(const QUrl &url) -{ - if (m_error != QMediaPlayer::ServiceMissingError && m_error != QMediaPlayer::NoError) { - m_error = QMediaPlayer::NoError; - m_errorString = QString(); - - emit errorChanged(); - } - - m_playerControl->setMedia(QMediaContent(url), 0); -} - -bool QDeclarativeMediaBase::isPlaying() const -{ - return m_state != QMediaPlayer::StoppedState; -} - -void QDeclarativeMediaBase::setPlaying(bool playing) -{ - if (playing && m_state == QMediaPlayer::StoppedState) { - if (m_paused) - m_playerControl->pause(); - else - m_playerControl->play(); - } else if (!playing) { - m_playerControl->stop(); - } -} - -bool QDeclarativeMediaBase::isPaused() const -{ - return m_paused; -} - -void QDeclarativeMediaBase::setPaused(bool paused) -{ - if (m_paused != paused) { - if (paused && m_state == QMediaPlayer::PlayingState) { - m_playerControl->pause(); - } else if (!paused && m_state == QMediaPlayer::PausedState) { - m_playerControl->play(); - } else { - m_paused = paused; - - emit pausedChanged(); - } - } -} - -int QDeclarativeMediaBase::duration() const -{ - return m_playerControl->duration(); -} - -int QDeclarativeMediaBase::position() const -{ - return m_playerControl->position(); - -} - -void QDeclarativeMediaBase::setPosition(int position) -{ - m_playerControl->setPosition(position); -} - -qreal QDeclarativeMediaBase::volume() const -{ - return qreal(m_playerControl->volume()) / 100; -} - -void QDeclarativeMediaBase::setVolume(qreal volume) -{ - m_playerControl->setVolume(qRound(volume * 100)); -} - -bool QDeclarativeMediaBase::isMuted() const -{ - return m_playerControl->isMuted(); -} - -void QDeclarativeMediaBase::setMuted(bool muted) -{ - m_playerControl->setMuted(muted); -} - -qreal QDeclarativeMediaBase::bufferProgress() const -{ - return qreal(m_playerControl->bufferStatus()) / 100; -} - -bool QDeclarativeMediaBase::isSeekable() const -{ - return m_playerControl->isSeekable(); -} - -qreal QDeclarativeMediaBase::playbackRate() const -{ - return m_playerControl->playbackRate(); -} - -void QDeclarativeMediaBase::setPlaybackRate(qreal rate) -{ - m_playerControl->setPlaybackRate(rate); -} - -QString QDeclarativeMediaBase::errorString() const -{ - return m_errorString; -} - -QT_END_NAMESPACE - diff --git a/src/multimedia/qml/qdeclarativemediabase_p.h b/src/multimedia/qml/qdeclarativemediabase_p.h deleted file mode 100644 index 2fc48db..0000000 --- a/src/multimedia/qml/qdeclarativemediabase_p.h +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 QDECLARATIVEMEDIABASE_P_H -#define QDECLARATIVEMEDIABASE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of other Qt classes. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -class QMediaPlayerControl; -class QMediaService; -class QMediaServiceProvider; -class QMetaDataControl; -class QMetaDataControlMetaObject; -class QDeclarativeMediaBaseAnimation; - -class Q_AUTOTEST_EXPORT QDeclarativeMediaBase -{ -public: - QDeclarativeMediaBase(); - virtual ~QDeclarativeMediaBase(); - - QUrl source() const; - void setSource(const QUrl &url); - - bool isPlaying() const; - void setPlaying(bool playing); - - bool isPaused() const; - void setPaused(bool paused); - - int duration() const; - - int position() const; - void setPosition(int position); - - qreal volume() const; - void setVolume(qreal volume); - - bool isMuted() const; - void setMuted(bool muted); - - qreal bufferProgress() const; - - bool isSeekable() const; - - qreal playbackRate() const; - void setPlaybackRate(qreal rate); - - QString errorString() const; - - void _q_stateChanged(QMediaPlayer::State state); - void _q_mediaStatusChanged(QMediaPlayer::MediaStatus status); - - void _q_metaDataChanged(); - -protected: - void shutdown(); - - void setObject(QObject *object); - - virtual void sourceChanged() = 0; - - virtual void playingChanged() = 0; - virtual void pausedChanged() = 0; - - virtual void started() = 0; - virtual void resumed() = 0; - virtual void paused() = 0; - virtual void stopped() = 0; - - virtual void statusChanged() = 0; - - virtual void loaded() = 0; - virtual void buffering() = 0; - virtual void stalled() = 0; - virtual void buffered() = 0; - virtual void endOfMedia() = 0; - - virtual void durationChanged() = 0; - virtual void positionChanged() = 0; - - virtual void volumeChanged() = 0; - virtual void mutedChanged() = 0; - - virtual void bufferProgressChanged() = 0; - - virtual void seekableChanged() = 0; - virtual void playbackRateChanged() = 0; - - virtual void errorChanged() = 0; - - QMediaService *m_mediaService; - QMediaPlayerControl *m_playerControl; - - QMediaObject *m_mediaObject; - QMediaServiceProvider *m_mediaProvider; - QMetaDataControl *m_metaDataControl; - QMetaDataControlMetaObject *m_metaObject; - QDeclarativeMediaBaseAnimation *m_animation; - - QMediaPlayer::State m_state; - QMediaPlayer::MediaStatus m_status; - QMediaPlayer::Error m_error; - bool m_paused; - QString m_errorString; - - friend class QDeclarativeMediaBaseAnimation; -}; - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif diff --git a/src/multimedia/qml/qdeclarativevideo.cpp b/src/multimedia/qml/qdeclarativevideo.cpp deleted file mode 100644 index 7f62075..0000000 --- a/src/multimedia/qml/qdeclarativevideo.cpp +++ /dev/null @@ -1,945 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 "qdeclarativevideo_p.h" - -#include -#include -#include -#include -#include - - -QT_BEGIN_NAMESPACE - - -void QDeclarativeVideo::_q_nativeSizeChanged(const QSizeF &size) -{ - setImplicitWidth(size.width()); - setImplicitHeight(size.height()); -} - -void QDeclarativeVideo::_q_error(int errorCode, const QString &errorString) -{ - m_error = QMediaPlayer::Error(errorCode); - m_errorString = errorString; - - emit error(Error(errorCode), errorString); - emit errorChanged(); -} - - -/*! - \qmlclass Video QDeclarativeVideo - \since 4.7 - \brief The Video element allows you to add videos to a scene. - \inherits Item - - \qml - Video { source: "video/movie.mpg" } - \endqml - - The video item supports untransformed, stretched, and uniformly scaled video presentation. - For a description of stretched uniformly scaled presentation, see the \l fillMode property - description. - - The video item is only visible when the \l hasVideo property is true and the video is playing. - - \sa Audio -*/ - -/*! - \internal - \class QDeclarativeVideo - \brief The QDeclarativeVideo class provides a video item that you can add to a QDeclarativeView. -*/ - -QDeclarativeVideo::QDeclarativeVideo(QDeclarativeItem *parent) - : QDeclarativeItem(parent) - , m_graphicsItem(0) - -{ - m_graphicsItem = new QGraphicsVideoItem(this); - connect(m_graphicsItem, SIGNAL(nativeSizeChanged(QSizeF)), - this, SLOT(_q_nativeSizeChanged(QSizeF))); - - setObject(this); - - if (m_mediaService) { - connect(m_playerControl, SIGNAL(audioAvailableChanged(bool)), - this, SIGNAL(hasAudioChanged())); - connect(m_playerControl, SIGNAL(videoAvailableChanged(bool)), - this, SIGNAL(hasVideoChanged())); - - m_graphicsItem->setMediaObject(m_mediaObject); - } -} - -QDeclarativeVideo::~QDeclarativeVideo() -{ - shutdown(); - - delete m_graphicsItem; -} - -/*! - \qmlproperty url Video::source - - This property holds the source URL of the media. -*/ - -/*! - \qmlproperty bool Video::playing - - This property holds whether the media is playing. - - Defaults to false, and can be set to true to start playback. -*/ - -/*! - \qmlproperty bool Video::paused - - This property holds whether the media is paused. - - Defaults to false, and can be set to true to pause playback. -*/ - -/*! - \qmlsignal Video::onStarted() - - This handler is called when playback is started. -*/ - -/*! - \qmlsignal Video::onResumed() - - This handler is called when playback is resumed from the paused state. -*/ - -/*! - \qmlsignal Video::onPaused() - - This handler is called when playback is paused. -*/ - -/*! - \qmlsignal Video::onStopped() - - This handler is called when playback is stopped. -*/ - -/*! - \qmlproperty enum Video::status - - This property holds the status of media loading. It can be one of: - - \list - \o NoMedia - no media has been set. - \o Loading - the media is currently being loaded. - \o Loaded - the media has been loaded. - \o Buffering - the media is buffering data. - \o Stalled - playback has been interrupted while the media is buffering data. - \o Buffered - the media has buffered data. - \o EndOfMedia - the media has played to the end. - \o InvalidMedia - the media cannot be played. - \o UnknownStatus - the status of the media is cannot be determined. - \endlist -*/ - -QDeclarativeVideo::Status QDeclarativeVideo::status() const -{ - return Status(m_status); -} - -/*! - \qmlsignal Video::onLoaded() - - This handler is called when the media source has been loaded. -*/ - -/*! - \qmlsignal Video::onBuffering() - - This handler is called when the media starts buffering. -*/ - -/*! - \qmlsignal Video::onStalled() - - This handler is called when playback has stalled while the media buffers. -*/ - -/*! - \qmlsignal Video::onBuffered() - - This handler is called when the media has finished buffering. -*/ - -/*! - \qmlsignal Video::onEndOfMedia() - - This handler is called when playback stops because end of the media has been reached. -*/ - -/*! - \qmlproperty int Video::duration - - This property holds the duration of the media in milliseconds. - - If the media doesn't have a fixed duration (a live stream for example) this will be 0. -*/ - -/*! - \qmlproperty int Video::position - - This property holds the current playback position in milliseconds. -*/ - -/*! - \qmlproperty qreal Video::volume - - This property holds the volume of the audio output, from 0.0 (silent) to 1.0 (maximum volume). -*/ - -/*! - \qmlproperty bool Video::muted - - This property holds whether the audio output is muted. -*/ - -/*! - \qmlproperty bool Video::hasAudio - - This property holds whether the media contains audio. -*/ - -bool QDeclarativeVideo::hasAudio() const -{ - return m_playerControl->isAudioAvailable(); -} - -/*! - \qmlproperty bool Video::hasVideo - - This property holds whether the media contains video. -*/ - -bool QDeclarativeVideo::hasVideo() const -{ - return m_playerControl->isVideoAvailable(); -} - -/*! - \qmlproperty qreal Video::bufferProgress - - This property holds how much of the data buffer is currently filled, from 0.0 (empty) to 1.0 - (full). -*/ - -/*! - \qmlproperty bool Video::seekable - - This property holds whether position of the video can be changed. -*/ - -/*! - \qmlproperty qreal Video::playbackRate - - This property holds the rate at which video is played at as a multiple of the normal rate. -*/ - -/*! - \qmlproperty enum Video::error - - This property holds the error state of the video. It can be one of: - - \list - \o NoError - there is no current error. - \o ResourceError - the video cannot be played due to a problem allocating resources. - \o FormatError - the video format is not supported. - \o NetworkError - the video cannot be played due to network issues. - \o AccessDenied - the video cannot be played due to insufficient permissions. - \o ServiceMissing - the video cannot be played because the media service could not be - instantiated. - \endlist -*/ - - -QDeclarativeVideo::Error QDeclarativeVideo::error() const -{ - return Error(m_error); -} - -/*! - \qmlproperty string Video::errorString - - This property holds a string describing the current error condition in more detail. -*/ - -/*! - \qmlsignal Video::onError(error, errorString) - - This handler is called when an \l {Error}{error} has occurred. The errorString parameter - may contain more detailed information about the error. -*/ - -/*! - \qmlproperty enum Video::fillMode - - Set this property to define how the video is scaled to fit the target area. - - \list - \o Stretch - the video is scaled to fit. - \o PreserveAspectFit - the video is scaled uniformly to fit without cropping - \o PreserveAspectCrop - the video is scaled uniformly to fill, cropping if necessary - \endlist - - The default fill mode is PreserveAspectFit. -*/ - -QDeclarativeVideo::FillMode QDeclarativeVideo::fillMode() const -{ - return FillMode(m_graphicsItem->aspectRatioMode()); -} - -void QDeclarativeVideo::setFillMode(FillMode mode) -{ - m_graphicsItem->setAspectRatioMode(Qt::AspectRatioMode(mode)); -} - -/*! - \qmlmethod Video::play() - - Starts playback of the media. - - Sets the \l playing property to true, and the \l paused property to false. -*/ - -void QDeclarativeVideo::play() -{ - m_playerControl->play(); - - if (m_paused) { - m_paused = false; - emit pausedChanged(); - } -} - -/*! - \qmlmethod Video::pause() - - Pauses playback of the media. - - Sets the \l playing and \l paused properties to true. -*/ - -void QDeclarativeVideo::pause() -{ - m_playerControl->pause(); - - if (!m_paused && m_state == QMediaPlayer::PausedState) { - m_paused = true; - emit pausedChanged(); - } -} - -/*! - \qmlmethod Video::stop() - - Stops playback of the media. - - Sets the \l playing and \l paused properties to false. -*/ - -void QDeclarativeVideo::stop() -{ - m_playerControl->stop(); - - if (m_paused) { - m_paused = false; - emit pausedChanged(); - } -} - -void QDeclarativeVideo::paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) -{ -} - -void QDeclarativeVideo::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - m_graphicsItem->setSize(newGeometry.size()); - - QDeclarativeItem::geometryChanged(newGeometry, oldGeometry); -} - -QT_END_NAMESPACE - -// *************************************** -// Documentation for meta-data properties. -// *************************************** - -/*! - \qmlproperty variant Video::title - - This property holds the tile of the media. - - \sa {QtMultimedia::Title} -*/ - -/*! - \qmlproperty variant Video::subTitle - - This property holds the sub-title of the media. - - \sa {QtMultimedia::SubTitle} -*/ - -/*! - \qmlproperty variant Video::author - - This property holds the author of the media. - - \sa {QtMultimedia::Author} -*/ - -/*! - \qmlproperty variant Video::comment - - This property holds a user comment about the media. - - \sa {QtMultimedia::Comment} -*/ - -/*! - \qmlproperty variant Video::description - - This property holds a description of the media. - - \sa {QtMultimedia::Description} -*/ - -/*! - \qmlproperty variant Video::category - - This property holds the category of the media - - \sa {QtMultimedia::Category} -*/ - -/*! - \qmlproperty variant Video::genre - - This property holds the genre of the media. - - \sa {QtMultimedia::Genre} -*/ - -/*! - \qmlproperty variant Video::year - - This property holds the year of release of the media. - - \sa {QtMultimedia::Year} -*/ - -/*! - \qmlproperty variant Video::date - - This property holds the date of the media. - - \sa {QtMultimedia::Date} -*/ - -/*! - \qmlproperty variant Video::userRating - - This property holds a user rating of the media in the range of 0 to 100. - - \sa {QtMultimedia::UserRating} -*/ - -/*! - \qmlproperty variant Video::keywords - - This property holds a list of keywords describing the media. - - \sa {QtMultimedia::Keywords} -*/ - -/*! - \qmlproperty variant Video::language - - This property holds the language of the media, as an ISO 639-2 code. - - \sa {QtMultimedia::Language} -*/ - -/*! - \qmlproperty variant Video::publisher - - This property holds the publisher of the media. - - \sa {QtMultimedia::Publisher} -*/ - -/*! - \qmlproperty variant Video::copyright - - This property holds the media's copyright notice. - - \sa {QtMultimedia::Copyright} -*/ - -/*! - \qmlproperty variant Video::parentalRating - - This property holds the parental rating of the media. - - \sa {QtMultimedia::ParentalRating} -*/ - -/*! - \qmlproperty variant Video::ratingOrganisation - - This property holds the name of the rating organisation responsible for the - parental rating of the media. - - \sa {QtMultimedia::RatingOrganisation} -*/ - -/*! - \qmlproperty variant Video::size - - This property property holds the size of the media in bytes. - - \sa {QtMultimedia::Size} -*/ - -/*! - \qmlproperty variant Video::mediaType - - This property holds the type of the media. - - \sa {QtMultimedia::MediaType} -*/ - -/*! - \qmlproperty variant Video::audioBitRate - - This property holds the bit rate of the media's audio stream ni bits per - second. - - \sa {QtMultimedia::AudioBitRate} -*/ - -/*! - \qmlproperty variant Video::audioCodec - - This property holds the encoding of the media audio stream. - - \sa {QtMultimedia::AudioCodec} -*/ - -/*! - \qmlproperty variant Video::averageLevel - - This property holds the average volume level of the media. - - \sa {QtMultimedia::AverageLevel} -*/ - -/*! - \qmlproperty variant Video::channelCount - - This property holds the number of channels in the media's audio stream. - - \sa {QtMultimedia::ChannelCount} -*/ - -/*! - \qmlproperty variant Video::peakValue - - This property holds the peak volume of media's audio stream. - - \sa {QtMultimedia::PeakValue} -*/ - -/*! - \qmlproperty variant Video::sampleRate - - This property holds the sample rate of the media's audio stream in hertz. - - \sa {QtMultimedia::SampleRate} -*/ - -/*! - \qmlproperty variant Video::albumTitle - - This property holds the title of the album the media belongs to. - - \sa {QtMultimedia::AlbumTitle} -*/ - -/*! - \qmlproperty variant Video::albumArtist - - This property holds the name of the principal artist of the album the media - belongs to. - - \sa {QtMultimedia::AlbumArtist} -*/ - -/*! - \qmlproperty variant Video::contributingArtist - - This property holds the names of artists contributing to the media. - - \sa {QtMultimedia::ContributingArtist} -*/ - -/*! - \qmlproperty variant Video::composer - - This property holds the composer of the media. - - \sa {QtMultimedia::Composer} -*/ - -/*! - \qmlproperty variant Video::conductor - - This property holds the conductor of the media. - - \sa {QtMultimedia::Conductor} -*/ - -/*! - \qmlproperty variant Video::lyrics - - This property holds the lyrics to the media. - - \sa {QtMultimedia::Lyrics} -*/ - -/*! - \qmlproperty variant Video::mood - - This property holds the mood of the media. - - \sa {QtMultimedia::Mood} -*/ - -/*! - \qmlproperty variant Video::trackNumber - - This property holds the track number of the media. - - \sa {QtMultimedia::TrackNumber} -*/ - -/*! - \qmlproperty variant Video::trackCount - - This property holds the number of track on the album containing the media. - - \sa {QtMultimedia::TrackNumber} -*/ - -/*! - \qmlproperty variant Video::coverArtUrlSmall - - This property holds the URL of a small cover art image. - - \sa {QtMultimedia::CoverArtUrlSmall} -*/ - -/*! - \qmlproperty variant Video::coverArtUrlLarge - - This property holds the URL of a large cover art image. - - \sa {QtMultimedia::CoverArtUrlLarge} -*/ - -/*! - \qmlproperty variant Video::resolution - - This property holds the dimension of an image or video. - - \sa {QtMultimedia::Resolution} -*/ - -/*! - \qmlproperty variant Video::pixelAspectRatio - - This property holds the pixel aspect ratio of an image or video. - - \sa {QtMultimedia::PixelAspectRatio} -*/ - -/*! - \qmlproperty variant Video::videoFrameRate - - This property holds the frame rate of the media's video stream. - - \sa {QtMultimedia::VideoFrameRate} -*/ - -/*! - \qmlproperty variant Video::videoBitRate - - This property holds the bit rate of the media's video stream in bits per - second. - - \sa {QtMultimedia::VideoBitRate} -*/ - -/*! - \qmlproperty variant Video::videoCodec - - This property holds the encoding of the media's video stream. - - \sa {QtMultimedia::VideoCodec} -*/ - -/*! - \qmlproperty variant Video::posterUrl - - This property holds the URL of a poster image. - - \sa {QtMultimedia::PosterUrl} -*/ - -/*! - \qmlproperty variant Video::chapterNumber - - This property holds the chapter number of the media. - - \sa {QtMultimedia::ChapterNumber} -*/ - -/*! - \qmlproperty variant Video::director - - This property holds the director of the media. - - \sa {QtMultimedia::Director} -*/ - -/*! - \qmlproperty variant Video::leadPerformer - - This property holds the lead performer in the media. - - \sa {QtMultimedia::LeadPerformer} -*/ - -/*! - \qmlproperty variant Video::writer - - This property holds the writer of the media. - - \sa {QtMultimedia::Writer} -*/ - -// The remaining properties are related to photos, and are technically -// available but will certainly never have values. -#ifndef Q_QDOC - -/*! - \qmlproperty variant Video::cameraManufacturer - - \sa {QtMultimedia::CameraManufacturer} -*/ - -/*! - \qmlproperty variant Video::cameraModel - - \sa {QtMultimedia::CameraModel} -*/ - -/*! - \qmlproperty variant Video::event - - \sa {QtMultimedia::Event} -*/ - -/*! - \qmlproperty variant Video::subject - - \sa {QtMultimedia::Subject} -*/ - -/*! - \qmlproperty variant Video::orientation - - \sa {QtMultimedia::Orientation} -*/ - -/*! - \qmlproperty variant Video::exposureTime - - \sa {QtMultimedia::ExposureTime} -*/ - -/*! - \qmlproperty variant Video::fNumber - - \sa {QtMultimedia::FNumber} -*/ - -/*! - \qmlproperty variant Video::exposureProgram - - \sa {QtMultimedia::ExposureProgram} -*/ - -/*! - \qmlproperty variant Video::isoSpeedRatings - - \sa {QtMultimedia::ISOSpeedRatings} -*/ - -/*! - \qmlproperty variant Video::exposureBiasValue - - \sa {QtMultimedia::ExposureBiasValue} -*/ - -/*! - \qmlproperty variant Video::dateTimeDigitized - - \sa {QtMultimedia::DateTimeDigitized} -*/ - -/*! - \qmlproperty variant Video::subjectDistance - - \sa {QtMultimedia::SubjectDistance} -*/ - -/*! - \qmlproperty variant Video::meteringMode - - \sa {QtMultimedia::MeteringMode} -*/ - -/*! - \qmlproperty variant Video::lightSource - - \sa {QtMultimedia::LightSource} -*/ - -/*! - \qmlproperty variant Video::flash - - \sa {QtMultimedia::Flash} -*/ - -/*! - \qmlproperty variant Video::focalLength - - \sa {QtMultimedia::FocalLength} -*/ - -/*! - \qmlproperty variant Video::exposureMode - - \sa {QtMultimedia::ExposureMode} -*/ - -/*! - \qmlproperty variant Video::whiteBalance - - \sa {QtMultimedia::WhiteBalance} -*/ - -/*! - \qmlproperty variant Video::DigitalZoomRatio - - \sa {QtMultimedia::DigitalZoomRatio} -*/ - -/*! - \qmlproperty variant Video::focalLengthIn35mmFilm - - \sa {QtMultimedia::FocalLengthIn35mmFile} -*/ - -/*! - \qmlproperty variant Video::sceneCaptureType - - \sa {QtMultimedia::SceneCaptureType} -*/ - -/*! - \qmlproperty variant Video::gainControl - - \sa {QtMultimedia::GainControl} -*/ - -/*! - \qmlproperty variant Video::contrast - - \sa {QtMultimedia::contrast} -*/ - -/*! - \qmlproperty variant Video::saturation - - \sa {QtMultimedia::Saturation} -*/ - -/*! - \qmlproperty variant Video::sharpness - - \sa {QtMultimedia::Sharpness} -*/ - -/*! - \qmlproperty variant Video::deviceSettingDescription - - \sa {QtMultimedia::DeviceSettingDescription} -*/ - -#endif - -#include "moc_qdeclarativevideo_p.cpp" diff --git a/src/multimedia/qml/qdeclarativevideo_p.h b/src/multimedia/qml/qdeclarativevideo_p.h deleted file mode 100644 index d5ebde1..0000000 --- a/src/multimedia/qml/qdeclarativevideo_p.h +++ /dev/null @@ -1,204 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 QDECLARATIVEVIDEO_H -#define QDECLARATIVEVIDEO_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of other Qt classes. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include - -#include - -#include -#include - - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -class QTimerEvent; -class QVideoSurfaceFormat; - - -class Q_AUTOTEST_EXPORT QDeclarativeVideo : public QDeclarativeItem, public QDeclarativeMediaBase -{ - Q_OBJECT - Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) - Q_PROPERTY(bool playing READ isPlaying WRITE setPlaying NOTIFY playingChanged) - Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged) - Q_PROPERTY(Status status READ status NOTIFY statusChanged) - Q_PROPERTY(int duration READ duration NOTIFY durationChanged) - Q_PROPERTY(int position READ position WRITE setPosition NOTIFY positionChanged) - Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged) - Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) - Q_PROPERTY(bool hasAudio READ hasAudio NOTIFY hasAudioChanged) - Q_PROPERTY(bool hasVideo READ hasVideo NOTIFY hasVideoChanged) - Q_PROPERTY(int bufferProgress READ bufferProgress NOTIFY bufferProgressChanged) - Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged) - Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged) - Q_PROPERTY(Error error READ error NOTIFY errorChanged) - Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) - Q_PROPERTY(FillMode fillMode READ fillMode WRITE setFillMode) - Q_ENUMS(FillMode) - Q_ENUMS(Status) - Q_ENUMS(Error) -public: - enum FillMode - { - Stretch = Qt::IgnoreAspectRatio, - PreserveAspectFit = Qt::KeepAspectRatio, - PreserveAspectCrop = Qt::KeepAspectRatioByExpanding - }; - - enum Status - { - UnknownStatus = QMediaPlayer::UnknownMediaStatus, - NoMedia = QMediaPlayer::NoMedia, - Loading = QMediaPlayer::LoadingMedia, - Loaded = QMediaPlayer::LoadedMedia, - Stalled = QMediaPlayer::StalledMedia, - Buffering = QMediaPlayer::BufferingMedia, - Buffered = QMediaPlayer::BufferedMedia, - EndOfMedia = QMediaPlayer::EndOfMedia, - InvalidMedia = QMediaPlayer::InvalidMedia - }; - - enum Error - { - NoError = QMediaPlayer::NoError, - ResourceError = QMediaPlayer::ResourceError, - FormatError = QMediaPlayer::FormatError, - NetworkError = QMediaPlayer::NetworkError, - AccessDenied = QMediaPlayer::AccessDeniedError, - ServiceMissing = QMediaPlayer::ServiceMissingError - }; - - QDeclarativeVideo(QDeclarativeItem *parent = 0); - ~QDeclarativeVideo(); - - bool hasAudio() const; - bool hasVideo() const; - - FillMode fillMode() const; - void setFillMode(FillMode mode); - - Status status() const; - Error error() const; - - void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); - -public Q_SLOTS: - void play(); - void pause(); - void stop(); - -Q_SIGNALS: - void sourceChanged(); - - void playingChanged(); - void pausedChanged(); - - void started(); - void resumed(); - void paused(); - void stopped(); - - void statusChanged(); - - void loaded(); - void buffering(); - void stalled(); - void buffered(); - void endOfMedia(); - - void durationChanged(); - void positionChanged(); - - void volumeChanged(); - void mutedChanged(); - void hasAudioChanged(); - void hasVideoChanged(); - - void bufferProgressChanged(); - - void seekableChanged(); - void playbackRateChanged(); - - void errorChanged(); - void error(QDeclarativeVideo::Error error, const QString &errorString); - -protected: - void geometryChanged(const QRectF &geometry, const QRectF &); - -private Q_SLOTS: - void _q_nativeSizeChanged(const QSizeF &size); - void _q_error(int, const QString &); - -private: - Q_DISABLE_COPY(QDeclarativeVideo) - - QGraphicsVideoItem *m_graphicsItem; - - Q_PRIVATE_SLOT(mediaBase(), void _q_stateChanged(QMediaPlayer::State)) - Q_PRIVATE_SLOT(mediaBase(), void _q_mediaStatusChanged(QMediaPlayer::MediaStatus)) - Q_PRIVATE_SLOT(mediaBase(), void _q_metaDataChanged()) - - inline QDeclarativeMediaBase *mediaBase() { return this; } -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeVideo)) - -QT_END_HEADER - -#endif diff --git a/src/multimedia/qml/qmetadatacontrolmetaobject.cpp b/src/multimedia/qml/qmetadatacontrolmetaobject.cpp deleted file mode 100644 index 47b6382..0000000 --- a/src/multimedia/qml/qmetadatacontrolmetaobject.cpp +++ /dev/null @@ -1,362 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 -#include - - -QT_BEGIN_NAMESPACE - -// copied from qmetaobject.cpp -// do not touch without touching the moc as well -enum PropertyFlags { - Invalid = 0x00000000, - Readable = 0x00000001, - Writable = 0x00000002, - Resettable = 0x00000004, - EnumOrFlag = 0x00000008, - StdCppSet = 0x00000100, -// Override = 0x00000200, - Designable = 0x00001000, - ResolveDesignable = 0x00002000, - Scriptable = 0x00004000, - ResolveScriptable = 0x00008000, - Stored = 0x00010000, - ResolveStored = 0x00020000, - Editable = 0x00040000, - ResolveEditable = 0x00080000, - User = 0x00100000, - ResolveUser = 0x00200000, - Notify = 0x00400000, - Dynamic = 0x00800000 -}; - -enum MethodFlags { - AccessPrivate = 0x00, - AccessProtected = 0x01, - AccessPublic = 0x02, - AccessMask = 0x03, //mask - - MethodMethod = 0x00, - MethodSignal = 0x04, - MethodSlot = 0x08, - MethodConstructor = 0x0c, - MethodTypeMask = 0x0c, - - MethodCompatibility = 0x10, - MethodCloned = 0x20, - MethodScriptable = 0x40 -}; - -struct QMetaObjectPrivate -{ - int revision; - int className; - int classInfoCount, classInfoData; - int methodCount, methodData; - int propertyCount, propertyData; - int enumeratorCount, enumeratorData; - int constructorCount, constructorData; - int flags; -}; - -static inline const QMetaObjectPrivate *priv(const uint* m_data) -{ return reinterpret_cast(m_data); } -// end of copied lines from qmetaobject.cpp - -namespace -{ - struct MetaDataKey - { - QtMultimedia::MetaData key; - const char *name; - }; - - const MetaDataKey qt_metaDataKeys[] = - { - { QtMultimedia::Title, "title" }, - { QtMultimedia::SubTitle, "subTitle" }, - { QtMultimedia::Author, "author" }, - { QtMultimedia::Comment, "comment" }, - { QtMultimedia::Description, "description" }, - { QtMultimedia::Category, "category" }, - { QtMultimedia::Genre, "genre" }, - { QtMultimedia::Year, "year" }, - { QtMultimedia::Date, "date" }, - { QtMultimedia::UserRating, "userRating" }, - { QtMultimedia::Keywords, "keywords" }, - { QtMultimedia::Language, "language" }, - { QtMultimedia::Publisher, "publisher" }, - { QtMultimedia::Copyright, "copyright" }, - { QtMultimedia::ParentalRating, "parentalRating" }, - { QtMultimedia::RatingOrganisation, "ratingOrganisation" }, - - // Media - { QtMultimedia::Size, "size" }, - { QtMultimedia::MediaType, "mediaType" }, -// { QtMultimedia::Duration, "duration" }, - - // Audio - { QtMultimedia::AudioBitRate, "audioBitRate" }, - { QtMultimedia::AudioCodec, "audioCodec" }, - { QtMultimedia::AverageLevel, "averageLevel" }, - { QtMultimedia::ChannelCount, "channelCount" }, - { QtMultimedia::PeakValue, "peakValue" }, - { QtMultimedia::SampleRate, "sampleRate" }, - - // Music - { QtMultimedia::AlbumTitle, "albumTitle" }, - { QtMultimedia::AlbumArtist, "albumArtist" }, - { QtMultimedia::ContributingArtist, "contributingArtist" }, - { QtMultimedia::Composer, "composer" }, - { QtMultimedia::Conductor, "conductor" }, - { QtMultimedia::Lyrics, "lyrics" }, - { QtMultimedia::Mood, "mood" }, - { QtMultimedia::TrackNumber, "trackNumber" }, - { QtMultimedia::TrackCount, "trackCount" }, - - { QtMultimedia::CoverArtUrlSmall, "coverArtUrlSmall" }, - { QtMultimedia::CoverArtUrlLarge, "coverArtUrlLarge" }, - - // Image/Video - { QtMultimedia::Resolution, "resolution" }, - { QtMultimedia::PixelAspectRatio, "pixelAspectRatio" }, - - // Video - { QtMultimedia::VideoFrameRate, "videoFrameRate" }, - { QtMultimedia::VideoBitRate, "videoBitRate" }, - { QtMultimedia::VideoCodec, "videoCodec" }, - - { QtMultimedia::PosterUrl, "posterUrl" }, - - // Movie - { QtMultimedia::ChapterNumber, "chapterNumber" }, - { QtMultimedia::Director, "director" }, - { QtMultimedia::LeadPerformer, "leadPerformer" }, - { QtMultimedia::Writer, "writer" }, - - // Photos - { QtMultimedia::CameraManufacturer, "cameraManufacturer" }, - { QtMultimedia::CameraModel, "cameraModel" }, - { QtMultimedia::Event, "event" }, - { QtMultimedia::Subject, "subject" }, - { QtMultimedia::Orientation, "orientation" }, - { QtMultimedia::ExposureTime, "exposureTime" }, - { QtMultimedia::FNumber, "fNumber" }, - { QtMultimedia::ExposureProgram, "exposureProgram" }, - { QtMultimedia::ISOSpeedRatings, "isoSpeedRatings" }, - { QtMultimedia::ExposureBiasValue, "exposureBiasValue" }, - { QtMultimedia::DateTimeOriginal, "dateTimeOriginal" }, - { QtMultimedia::DateTimeDigitized, "dateTimeDigitized" }, - { QtMultimedia::SubjectDistance, "subjectDistance" }, - { QtMultimedia::MeteringMode, "meteringMode" }, - { QtMultimedia::LightSource, "lightSource" }, - { QtMultimedia::Flash, "flash" }, - { QtMultimedia::FocalLength, "focalLength" }, - { QtMultimedia::ExposureMode, "exposureMode" }, - { QtMultimedia::WhiteBalance, "whiteBalance" }, - { QtMultimedia::DigitalZoomRatio, "digitalZoomRatio" }, - { QtMultimedia::FocalLengthIn35mmFilm, "focalLengthIn35mmFilm" }, - { QtMultimedia::SceneCaptureType, "sceneCaptureType" }, - { QtMultimedia::GainControl, "gainControl" }, - { QtMultimedia::Contrast, "contrast" }, - { QtMultimedia::Saturation, "saturation" }, - { QtMultimedia::Sharpness, "sharpness" }, - { QtMultimedia::DeviceSettingDescription, "deviceSettingDescription" } - }; - - class QMetaDataControlObject : public QObject - { - public: - inline QObjectData *data() { return d_ptr.data(); } - }; -} - -QMetaDataControlMetaObject::QMetaDataControlMetaObject(QMetaDataControl *control, QObject *object) - : m_control(control) - , m_object(object) - , m_string(0) - , m_data(0) - , m_propertyOffset(0) - , m_signalOffset(0) -{ - const QMetaObject *superClass = m_object->metaObject(); - - const int propertyCount = sizeof(qt_metaDataKeys) / sizeof(MetaDataKey); - const int dataSize = sizeof(uint) - * (13 // QMetaObjectPrivate members. - + 5 // 5 members per signal. - + 4 * propertyCount // 3 members per property + 1 notify signal per property. - + 1); // Terminating value. - - m_data = reinterpret_cast(qMalloc(dataSize)); - - QMetaObjectPrivate *pMeta = reinterpret_cast(m_data); - - pMeta->revision = 3; - pMeta->className = 0; - pMeta->classInfoCount = 0; - pMeta->classInfoData = 0; - pMeta->methodCount = 1; - pMeta->methodData = 13; - pMeta->propertyCount = propertyCount; - pMeta->propertyData = 18; - pMeta->enumeratorCount = 0; - pMeta->enumeratorData = 0; - pMeta->constructorCount = 0; - pMeta->constructorData = 0; - pMeta->flags = 0x01; // Dynamic meta object flag. - - const int classNameSize = qstrlen(superClass->className()) + 1; - - int stringIndex = classNameSize + 1; - - // __metaDataChanged() signal. - static const char *changeSignal = "__metaDataChanged()"; - const int changeSignalSize = qstrlen(changeSignal) + 1; - - m_data[13] = stringIndex; // Signature. - m_data[14] = classNameSize; // Parameters. - m_data[15] = classNameSize; // Type. - m_data[16] = classNameSize; // Tag. - m_data[17] = MethodSignal | AccessProtected; // Flags. - - stringIndex += changeSignalSize; - - const char *qvariantName = "QVariant"; - const int qvariantSize = qstrlen(qvariantName) + 1; - const int qvariantIndex = stringIndex; - - stringIndex += qvariantSize; - - // Properties. - for (int i = 0; i < propertyCount; ++i) { - m_data[18 + 3 * i] = stringIndex; // Name. - m_data[19 + 3 * i] = qvariantIndex; // Type. - m_data[20 + 3 * i] - = Readable | Writable | Notify | Dynamic | (0xffffffff << 24); // Flags. - m_data[18 + propertyCount * 3 + i] = 0; // Notify signal. - - stringIndex += qstrlen(qt_metaDataKeys[i].name) + 1; - } - - // Terminating value. - m_data[18 + propertyCount * 4] = 0; - - // Build string. - m_string = reinterpret_cast(qMalloc(stringIndex + 1)); - - // Class name. - qMemCopy(m_string, superClass->className(), classNameSize); - - stringIndex = classNameSize; - - // Null m_string. - m_string[stringIndex] = '\0'; - stringIndex += 1; - - // __metaDataChanged() signal. - qMemCopy(m_string + stringIndex, changeSignal, changeSignalSize); - stringIndex += changeSignalSize; - - qMemCopy(m_string + stringIndex, qvariantName, qvariantSize); - stringIndex += qvariantSize; - - // Properties. - for (int i = 0; i < propertyCount; ++i) { - const int propertyNameSize = qstrlen(qt_metaDataKeys[i].name) + 1; - - qMemCopy(m_string + stringIndex, qt_metaDataKeys[i].name, propertyNameSize); - stringIndex += propertyNameSize; - } - - // Terminating character. - m_string[stringIndex] = '\0'; - - d.superdata = superClass; - d.stringdata = m_string; - d.data = m_data; - d.extradata = 0; - - static_cast(m_object)->data()->metaObject = this; - - m_propertyOffset = propertyOffset(); - m_signalOffset = methodOffset(); -} - -QMetaDataControlMetaObject::~QMetaDataControlMetaObject() -{ - static_cast(m_object)->data()->metaObject = 0; - - qFree(m_data); - qFree(m_string); -} - -int QMetaDataControlMetaObject::metaCall(QMetaObject::Call c, int id, void **a) -{ - if (c == QMetaObject::ReadProperty && id >= m_propertyOffset) { - int propId = id - m_propertyOffset; - - *reinterpret_cast(a[0]) = m_control->metaData(qt_metaDataKeys[propId].key); - - return -1; - } else if (c == QMetaObject::WriteProperty && id >= m_propertyOffset) { - int propId = id - m_propertyOffset; - - m_control->setMetaData(qt_metaDataKeys[propId].key, *reinterpret_cast(a[0])); - - return -1; - } else { - return m_object->qt_metacall(c, id, a); - } -} - -int QMetaDataControlMetaObject::createProperty(const char *, const char *) -{ - return -1; -} - -void QMetaDataControlMetaObject::metaDataChanged() -{ - activate(m_object, m_signalOffset, 0); -} - -QT_END_NAMESPACE diff --git a/src/multimedia/qml/qmetadatacontrolmetaobject_p.h b/src/multimedia/qml/qmetadatacontrolmetaobject_p.h deleted file mode 100644 index ec4df05..0000000 --- a/src/multimedia/qml/qmetadatacontrolmetaobject_p.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 QMETADATACONTROLMETAOBJECT_P_H -#define QMETADATACONTROLMETAOJBECT_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of other Qt classes. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include -#include - -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -class QMetaDataControl; - -class QMetaDataControlMetaObject : public QAbstractDynamicMetaObject -{ -public: - QMetaDataControlMetaObject(QMetaDataControl *control, QObject *object); - ~QMetaDataControlMetaObject(); - - int metaCall(QMetaObject::Call call, int _id, void **arguments); - int createProperty(const char *, const char *); - - void metaDataChanged(); - -private: - QMetaDataControl *m_control; - QObject *m_object; - char *m_string; - uint *m_data; - - int m_propertyOffset; - int m_signalOffset; -}; - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif diff --git a/src/multimedia/qml/qml.pri b/src/multimedia/qml/qml.pri deleted file mode 100644 index d0ff71d..0000000 --- a/src/multimedia/qml/qml.pri +++ /dev/null @@ -1,37 +0,0 @@ - -contains(QT_CONFIG, declarative) { - QT += declarative - - system(pkg-config --exists \'libpulse >= 0.9.10\') { - DEFINES += QT_MULTIMEDIA_PULSEAUDIO - HEADERS += $$PWD/qsoundeffect_pulse_p.h - SOURCES += $$PWD/qsoundeffect_pulse_p.cpp - LIBS += -lpulse - } else:x11 { - DEFINES += QT_MULTIMEDIA_QMEDIAPLAYER - HEADERS += $$PWD/qsoundeffect_qmedia_p.h - SOURCES += $$PWD/qsoundeffect_qmedia_p.cpp - } else { - HEADERS += $$PWD/qsoundeffect_qsound_p.h - SOURCES += $$PWD/qsoundeffect_qsound_p.cpp - } - - HEADERS += \ - $$PWD/multimediadeclarative.h \ - $$PWD/qmetadatacontrolmetaobject_p.h \ - $$PWD/qdeclarativeaudio_p.h \ - $$PWD/qdeclarativevideo_p.h \ - $$PWD/qdeclarativemediabase_p.h \ - $$PWD/qsoundeffect_p.h \ - $$PWD/wavedecoder_p.h - - SOURCES += \ - $$PWD/multimediadeclarative.cpp \ - $$PWD/qmetadatacontrolmetaobject.cpp \ - $$PWD/qdeclarativeaudio.cpp \ - $$PWD/qdeclarativevideo.cpp \ - $$PWD/qdeclarativemediabase.cpp \ - $$PWD/qsoundeffect.cpp \ - $$PWD/wavedecoder_p.cpp -} - diff --git a/src/multimedia/qml/qsoundeffect.cpp b/src/multimedia/qml/qsoundeffect.cpp deleted file mode 100644 index 541e6c9..0000000 --- a/src/multimedia/qml/qsoundeffect.cpp +++ /dev/null @@ -1,255 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 "qmediacontent.h" -#include "qmediaplayer.h" - -#include "qsoundeffect_p.h" - -#if defined(QT_MULTIMEDIA_PULSEAUDIO) -#include "qsoundeffect_pulse_p.h" -#elif(QT_MULTIMEDIA_QMEDIAPLAYER) -#include "qsoundeffect_qmedia_p.h" -#else -#include "qsoundeffect_qsound_p.h" -#endif - -QT_BEGIN_NAMESPACE - -/*! - \qmlclass SoundEffect QSoundEffect - \since 4.7 - \brief The SoundEffect element provides a way to play sound effects in qml. - - The following example plays a wav file on mouse click. - - \qml - SoundEffect { - id: playSound - source: "test.wav" - } - MouseRegion { - id: playArea - anchors.fill: parent - onPressed: { - playSound.play() - } - } - \endqml - - \sa SoundEffect -*/ - -/*! - \qmlproperty QUrl SoundEffect::source - - This property provides a way to control the sound to play. -*/ - -/*! - \qmlproperty int SoundEffect::loopCount - - This property provides a way to control the number of times to repeat the sound on each play(). -*/ - -/*! - \qmlproperty int SoundEffect::volume - - This property provides a way to control the volume for playback. -*/ - -/*! - \qmlproperty bool SoundEffect::muted - - This property provides a way to control muting. -*/ - -/*! - \qmlproperty int SoundEffect::duration - - This property holds the duration in milliseconds of the current source audio. -*/ - -/*! - \qmlsignal SoundEffect::sourceChanged() - - This handler is called when the source has changed. -*/ - -/*! - \qmlsignal SoundEffect::loopCountChanged() - - This handler is called when the number of loops has changes. -*/ - -/*! - \qmlsignal SoundEffect::volumeChanged() - - This handler is called when the volume has changed. -*/ - -/*! - \qmlsignal SoundEffect::mutedChanged() - - This handler is called when the mute state has changed. -*/ - -/*! - \qmlsignal SoundEffect::durationChanged() - - This handler is called when the duration has changed. -*/ - -QSoundEffect::QSoundEffect(QObject *parent) : - QObject(parent), - m_loopCount(1), - m_vol(100), - m_muted(false), - m_runningCount(0) -{ - d = new QSoundEffectPrivate(this); - connect(d, SIGNAL(volumeChanged(int)), SIGNAL(volumeChanged())); - connect(d, SIGNAL(mutedChanged(bool)), SIGNAL(mutedChanged())); - connect(d, SIGNAL(durationChanged(qint64)), SIGNAL(durationChanged())); - connect(d, SIGNAL(stateChanged(QMediaPlayer::State)), SLOT(repeat())); -} - -QSoundEffect::~QSoundEffect() -{ - delete d; -} - -QUrl QSoundEffect::source() const -{ - return d != 0 ? d->media().canonicalUrl() : QUrl(); -} - -void QSoundEffect::setSource(const QUrl &url) -{ - if (d != 0 && d->media().canonicalUrl() == url) - return; - - d->setVolume(m_vol); - d->setMuted(m_muted); - d->setMedia(url); - - if (url.isEmpty()) - return; - - emit sourceChanged(); -} - -int QSoundEffect::loopCount() const -{ - return m_loopCount; -} - -void QSoundEffect::setLoopCount(int loopCount) -{ - if (m_loopCount == loopCount) - return; - - m_loopCount = loopCount; - emit loopCountChanged(); -} - -int QSoundEffect::volume() const -{ - return d != 0 ? d->volume() : m_vol; -} - -void QSoundEffect::setVolume(int volume) -{ - if (m_vol == volume) - return; - - m_vol = volume; - if (d != 0) - d->setVolume(volume); - else - emit volumeChanged(); -} - -bool QSoundEffect::isMuted() const -{ - return d != 0 ? d->isMuted() : m_muted; -} - -void QSoundEffect::setMuted(bool muted) -{ - if (m_muted == muted) - return; - - m_muted = muted; - if (d != 0) - d->setMuted(muted); - else - emit mutedChanged(); -} - -int QSoundEffect::duration() const -{ - return d != 0 ? d->duration() : 0; -} - -void QSoundEffect::play() -{ - m_runningCount = 0; - - if (d != 0) - d->play(); -} - -void QSoundEffect::stop() -{ - if (d != 0) - d->stop(); -} - -void QSoundEffect::repeat() -{ - if (d->state() == QMediaPlayer::StoppedState) { - if (++m_runningCount < m_loopCount) - d->play(); - } -} - -QT_END_NAMESPACE diff --git a/src/multimedia/qml/qsoundeffect_p.h b/src/multimedia/qml/qsoundeffect_p.h deleted file mode 100644 index 51ebe52..0000000 --- a/src/multimedia/qml/qsoundeffect_p.h +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 QSOUNDEFFECT_H -#define QSOUNDEFFECT_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 -#include -#include - - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -class QSoundEffectPrivate; -class Q_AUTOTEST_EXPORT QSoundEffect : public QObject -{ - Q_OBJECT - Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) - Q_PROPERTY(int loopCount READ loopCount WRITE setLoopCount NOTIFY loopCountChanged) - Q_PROPERTY(int volume READ volume WRITE setVolume NOTIFY volumeChanged) - Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) - Q_PROPERTY(int duration READ duration NOTIFY durationChanged) - -public: - explicit QSoundEffect(QObject *parent = 0); - ~QSoundEffect(); - - QUrl source() const; - void setSource(const QUrl &url); - - int loopCount() const; - void setLoopCount(int loopCount); - - int volume() const; - void setVolume(int volume); - - bool isMuted() const; - void setMuted(bool muted); - - int duration() const; - -signals: - void sourceChanged(); - void loopCountChanged(); - void volumeChanged(); - void mutedChanged(); - void durationChanged(); - -public slots: - void play(); - void stop(); - -private slots: - void repeat(); - -private: - Q_DISABLE_COPY(QSoundEffect) - - int m_loopCount; - int m_vol; - bool m_muted; - int m_runningCount; - - QSoundEffectPrivate* d; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QSoundEffect)) - -QT_END_HEADER - - -#endif // QSOUNDEFFECT_H diff --git a/src/multimedia/qml/qsoundeffect_pulse_p.cpp b/src/multimedia/qml/qsoundeffect_pulse_p.cpp deleted file mode 100644 index 7e9a25c..0000000 --- a/src/multimedia/qml/qsoundeffect_pulse_p.cpp +++ /dev/null @@ -1,509 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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$ -** -****************************************************************************/ - -// -// 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 -#include -#include -#include - -#include "qmediacontent.h" -#include "qmediaplayer.h" -#include "qsoundeffect_p.h" - -#include "wavedecoder_p.h" - -#include "qsoundeffect_pulse_p.h" - -#if(Q_WS_MAEMO_5) -#include -#endif - -#include - -// Less than ideal -#define PA_SCACHE_ENTRY_SIZE_MAX (1024*1024*16) - -QT_BEGIN_NAMESPACE - -namespace -{ -inline pa_sample_spec audioFormatToSampleSpec(const QAudioFormat &format) -{ - pa_sample_spec spec; - - spec.rate = format.frequency(); - spec.channels = format.channels(); - - if (format.sampleSize() == 8) - spec.format = PA_SAMPLE_U8; - else if (format.sampleSize() == 16) { - switch (format.byteOrder()) { - case QAudioFormat::BigEndian: spec.format = PA_SAMPLE_S16BE; break; - case QAudioFormat::LittleEndian: spec.format = PA_SAMPLE_S16LE; break; - } - } - else if (format.sampleSize() == 32) { - switch (format.byteOrder()) { - case QAudioFormat::BigEndian: spec.format = PA_SAMPLE_S32BE; break; - case QAudioFormat::LittleEndian: spec.format = PA_SAMPLE_S32LE; break; - } - } - - return spec; -} - -class PulseDaemon -{ -public: - PulseDaemon():m_prepared(false) - { - prepare(); - } - - ~PulseDaemon() - { - if (m_prepared) - release(); - } - - inline void lock() - { - pa_threaded_mainloop_lock(m_mainLoop); - } - - inline void unlock() - { - pa_threaded_mainloop_unlock(m_mainLoop); - } - - inline pa_context *context() const - { - return m_context; - } - - int volume() - { - return m_vol; - } - -private: - void prepare() - { - m_vol = 100; - - m_mainLoop = pa_threaded_mainloop_new(); - if (m_mainLoop == 0) { - qWarning("PulseAudioService: unable to create pulseaudio mainloop"); - return; - } - - if (pa_threaded_mainloop_start(m_mainLoop) != 0) { - qWarning("PulseAudioService: unable to start pulseaudio mainloop"); - pa_threaded_mainloop_free(m_mainLoop); - return; - } - - m_mainLoopApi = pa_threaded_mainloop_get_api(m_mainLoop); - - lock(); - m_context = pa_context_new(m_mainLoopApi, QString(QLatin1String("QtPulseAudio:%1")).arg(::getpid()).toAscii().constData()); - -#if(Q_WS_MAEMO_5) - pa_context_set_state_callback(m_context, context_state_callback, this); -#endif - if (m_context == 0) { - qWarning("PulseAudioService: Unable to create new pulseaudio context"); - pa_threaded_mainloop_free(m_mainLoop); - return; - } - - if (pa_context_connect(m_context, NULL, (pa_context_flags_t)0, NULL) < 0) { - qWarning("PulseAudioService: pa_context_connect() failed"); - pa_context_unref(m_context); - pa_threaded_mainloop_free(m_mainLoop); - return; - } - unlock(); - - m_prepared = true; - } - - void release() - { - if (!m_prepared) return; - pa_threaded_mainloop_stop(m_mainLoop); - pa_threaded_mainloop_free(m_mainLoop); - m_prepared = false; - } - -#if(Q_WS_MAEMO_5) - static void context_state_callback(pa_context *c, void *userdata) - { - PulseDaemon *self = reinterpret_cast(userdata); - switch (pa_context_get_state(c)) { - case PA_CONTEXT_CONNECTING: - case PA_CONTEXT_AUTHORIZING: - case PA_CONTEXT_SETTING_NAME: - break; - case PA_CONTEXT_READY: - pa_ext_stream_restore_set_subscribe_cb(c, &stream_restore_monitor_callback, self); - pa_ext_stream_restore_subscribe(c, 1, NULL, self); - break; - default: - break; - } - } - static void stream_restore_monitor_callback(pa_context *c, void *userdata) - { - PulseDaemon *self = reinterpret_cast(userdata); - pa_ext_stream_restore2_read(c, &stream_restore_info_callback, self); - } - static void stream_restore_info_callback(pa_context *c, const pa_ext_stream_restore2_info *info, - int eol, void *userdata) - { - Q_UNUSED(c) - - PulseDaemon *self = reinterpret_cast(userdata); - - if (!eol) { - if (QString(info->name).startsWith(QLatin1String("sink-input-by-media-role:x-maemo"))) { - const unsigned str_length = 256; - char str[str_length]; - pa_cvolume_snprint(str, str_length, &info->volume); - self->m_vol = QString(str).replace(" ","").replace("%","").mid(2).toInt(); - } - } - } -#endif - - int m_vol; - bool m_prepared; - pa_context *m_context; - pa_threaded_mainloop *m_mainLoop; - pa_mainloop_api *m_mainLoopApi; -}; -} - -Q_GLOBAL_STATIC(PulseDaemon, daemon) - - -QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): - QObject(parent), - m_muted(false), - m_playQueued(false), - m_vol(100), - m_duration(0), - m_dataUploaded(0), - m_state(QMediaPlayer::StoppedState), - m_status(QMediaPlayer::NoMedia), - m_reply(0), - m_stream(0), - m_networkAccessManager(0) -{ -} - -QSoundEffectPrivate::~QSoundEffectPrivate() -{ - delete m_reply; - unloadSample(); -} - -qint64 QSoundEffectPrivate::duration() const -{ - return m_duration; -} - -int QSoundEffectPrivate::volume() const -{ - return m_vol; -} - -bool QSoundEffectPrivate::isMuted() const -{ - return m_muted; -} - -QMediaContent QSoundEffectPrivate::media() const -{ - return m_media; -} - -QMediaPlayer::State QSoundEffectPrivate::state() const -{ - return m_state; -} - -QMediaPlayer::MediaStatus QSoundEffectPrivate::mediaStatus() const -{ - return m_status; -} - -void QSoundEffectPrivate::play() -{ - if (m_status == QMediaPlayer::LoadingMedia) { - m_playQueued = true; - return; - } - - if (m_status != QMediaPlayer::BufferedMedia || - m_state == QMediaPlayer::PlayingState) - return; - - pa_volume_t m_vol = PA_VOLUME_NORM; - - daemon()->lock(); -#if(Q_WS_MAEMO_5) - m_vol = PA_VOLUME_NORM/100*((daemon()->volume()+m_vol)/2); -#endif - pa_operation_unref( - pa_context_play_sample(daemon()->context(), - m_name.constData(), - 0, - m_vol, - play_callback, - this) - ); - daemon()->unlock(); - - m_playbackTime.start(); - - emit stateChanged(m_state = QMediaPlayer::PlayingState); -} - -void QSoundEffectPrivate::stop() -{ - emit stateChanged(m_state = QMediaPlayer::StoppedState); -} - -void QSoundEffectPrivate::setVolume(int volume) -{ - m_vol = volume; -} - -void QSoundEffectPrivate::setMuted(bool muted) -{ - m_muted = muted; -} - -void QSoundEffectPrivate::setMedia(const QMediaContent &media) -{ - if (media.isNull()) { - m_media = QMediaContent(); - unloadSample(); - return; - } - if (m_media == media) - return; - m_media = media; - - if (m_networkAccessManager == 0) - m_networkAccessManager = new QNetworkAccessManager(this); - - m_stream = m_networkAccessManager->get(QNetworkRequest(m_media.canonicalUrl())); - - unloadSample(); - loadSample(); - - emit mediaChanged(m_media); -} - -void QSoundEffectPrivate::decoderReady() -{ - if (m_waveDecoder->size() >= PA_SCACHE_ENTRY_SIZE_MAX) { - m_status = QMediaPlayer::InvalidMedia; - emit mediaStatusChanged(m_status); - qWarning("QtPulseAudio: attempting to load to large a sample"); - return; - } - - if (m_name.isNull()) - m_name = QString(QLatin1String("QtPulseSample-%1-%2")).arg(::getpid()).arg(quintptr(this)).toUtf8(); - - pa_sample_spec spec = audioFormatToSampleSpec(m_waveDecoder->audioFormat()); - - daemon()->lock(); - pa_stream *stream = pa_stream_new(daemon()->context(), m_name.constData(), &spec, 0); - pa_stream_set_state_callback(stream, stream_state_callback, this); - pa_stream_set_write_callback(stream, stream_write_callback, this); - pa_stream_connect_upload(stream, (size_t)m_waveDecoder->size()); - daemon()->unlock(); -} - -void QSoundEffectPrivate::decoderError() -{ - emit mediaStatusChanged(m_status = QMediaPlayer::InvalidMedia); -} - -void QSoundEffectPrivate::checkPlayTime() -{ - int elapsed = m_playbackTime.elapsed(); - - if (elapsed >= m_duration) { - m_state = QMediaPlayer::StoppedState; - emit stateChanged(m_state); - } - else - startTimer(m_duration - elapsed); -} - -void QSoundEffectPrivate::loadSample() -{ - m_waveDecoder = new WaveDecoder(m_stream); - connect(m_waveDecoder, SIGNAL(formatKnown()), SLOT(decoderReady())); - connect(m_waveDecoder, SIGNAL(invalidFormat()), SLOT(decoderError())); - - m_status = QMediaPlayer::LoadingMedia; - emit mediaStatusChanged(m_status); -} - -void QSoundEffectPrivate::unloadSample() -{ - if (m_status != QMediaPlayer::BufferedMedia) - return; - - m_status = QMediaPlayer::NoMedia; - - daemon()->lock(); - pa_context_remove_sample(daemon()->context(), m_name.constData(), NULL, NULL); - daemon()->unlock(); - - m_duration = 0; - m_dataUploaded = 0; -} - -void QSoundEffectPrivate::timerEvent(QTimerEvent *event) -{ - if (m_state == QMediaPlayer::PlayingState) { - m_state = QMediaPlayer::StoppedState; - emit stateChanged(m_state); - } - - killTimer(event->timerId()); -} - -void QSoundEffectPrivate::stream_write_callback(pa_stream *s, size_t length, void *userdata) -{ - Q_UNUSED(length); - - QSoundEffectPrivate *self = reinterpret_cast(userdata); - - size_t bufferSize = qMin(pa_stream_writable_size(s), - size_t(self->m_waveDecoder->bytesAvailable())); - char buffer[bufferSize]; - - size_t len = 0; - while (len < length) { - qint64 read = self->m_waveDecoder->read(buffer, qMin(bufferSize, length -len)); - if (read > 0) { - if (pa_stream_write(s, buffer, size_t(read), 0, 0, PA_SEEK_RELATIVE) == 0) - len += size_t(read); - else - break; - } - } - self->m_dataUploaded += len; - - if (self->m_waveDecoder->size() == self->m_dataUploaded) { - pa_stream_finish_upload(s); - - self->m_duration = self->m_waveDecoder->duration(); - emit self->durationChanged(self->m_duration); - - self->m_status = QMediaPlayer::BufferedMedia; - emit self->mediaStatusChanged(self->m_status); - - self->m_waveDecoder->deleteLater(); - if (!self->m_media.isNull()) - self->m_stream->deleteLater(); - - if (self->m_playQueued) { - self->m_playQueued = false; - QMetaObject::invokeMethod(self, "play"); - } - } -} - -void QSoundEffectPrivate::stream_state_callback(pa_stream *s, void *userdata) -{ - QSoundEffectPrivate *self = reinterpret_cast(userdata); - - switch (pa_stream_get_state(s)) { - case PA_STREAM_CREATING: - case PA_STREAM_READY: - case PA_STREAM_TERMINATED: - break; - - case PA_STREAM_FAILED: - default: - self->m_status = QMediaPlayer::InvalidMedia; - emit self->mediaStatusChanged(self->m_status); - break; - } -} - -void QSoundEffectPrivate::play_callback(pa_context *c, int success, void *userdata) -{ - Q_UNUSED(c); - - QSoundEffectPrivate *self = reinterpret_cast(userdata); - - if (success == 1) - QMetaObject::invokeMethod(self, "checkPlayTime", Qt::QueuedConnection); - else { - self->m_state = QMediaPlayer::StoppedState; - emit self->stateChanged(self->m_state); - } -} - -QT_END_NAMESPACE - - diff --git a/src/multimedia/qml/qsoundeffect_pulse_p.h b/src/multimedia/qml/qsoundeffect_pulse_p.h deleted file mode 100644 index 247f8a3..0000000 --- a/src/multimedia/qml/qsoundeffect_pulse_p.h +++ /dev/null @@ -1,138 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 QSOUNDEFFECT_PULSE_H -#define QSOUNDEFFECT_PULSE_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 "qsoundeffect_p.h" - -#include -#include -#include -#include - - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -class QNetworkReply; -class QNetworkAccessManager; -class WaveDecoder; - -class QSoundEffectPrivate : public QObject -{ - Q_OBJECT -public: - explicit QSoundEffectPrivate(QObject* parent); - ~QSoundEffectPrivate(); - - qint64 duration() const; - int volume() const; - bool isMuted() const; - QMediaContent media() const; - QMediaPlayer::State state() const; - QMediaPlayer::MediaStatus mediaStatus() const; - -public Q_SLOTS: - void play(); - void stop(); - void setVolume(int volume); - void setMuted(bool muted); - void setMedia(const QMediaContent &media); - -Q_SIGNALS: - void mediaChanged(const QMediaContent &media); - void mediaStatusChanged(QMediaPlayer::MediaStatus status); - void stateChanged(QMediaPlayer::State newState); - void durationChanged(qint64 duration); - void volumeChanged(int volume); - void mutedChanged(bool muted); - void error(QMediaPlayer::Error error); - -private slots: - void decoderReady(); - void decoderError(); - void checkPlayTime(); - -private: - void loadSample(); - void unloadSample(); - - void timerEvent(QTimerEvent *event); - - static void stream_write_callback(pa_stream *s, size_t length, void *userdata); - static void stream_state_callback(pa_stream *s, void *userdata); - static void play_callback(pa_context *c, int success, void *userdata); - - bool m_muted; - bool m_playQueued; - int m_vol; - int m_duration; - int m_dataUploaded; - QTime m_playbackTime; - QMediaPlayer::State m_state; - QMediaPlayer::MediaStatus m_status; - QByteArray m_name; - QMediaContent m_media; - QNetworkReply *m_reply; - WaveDecoder *m_waveDecoder; - QIODevice *m_stream; - QNetworkAccessManager *m_networkAccessManager; -}; - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif // QSOUNDEFFECT_PULSE_H diff --git a/src/multimedia/qml/qsoundeffect_qmedia_p.cpp b/src/multimedia/qml/qsoundeffect_qmedia_p.cpp deleted file mode 100644 index 48fb257..0000000 --- a/src/multimedia/qml/qsoundeffect_qmedia_p.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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$ -** -****************************************************************************/ - -// -// 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 - -#include "qmediacontent.h" -#include "qmediaplayer.h" - -#include "qsoundeffect_p.h" -#include "qsoundeffect_qmedia_p.h" - - -QT_BEGIN_NAMESPACE - -QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): - QObject(parent), - m_muted(false), - m_vol(100), - m_player(0) -{ -} - -QSoundEffectPrivate::~QSoundEffectPrivate() -{ - if (m_player) delete m_player; -} - -qint64 QSoundEffectPrivate::duration() const -{ - if (m_player) return m_player->duration(); - - return 0; -} - -int QSoundEffectPrivate::volume() const -{ - if (m_player) return m_player->volume(); - - return m_vol; -} - -bool QSoundEffectPrivate::isMuted() const -{ - if (m_player) return m_player->isMuted(); - - return m_muted; -} - -QMediaContent QSoundEffectPrivate::media() const -{ - if (m_player) return m_player->media(); - - return QMediaContent(); -} - -QMediaPlayer::State QSoundEffectPrivate::state() const -{ - if (m_player) return m_player->state(); - - return QMediaPlayer::StoppedState; -} - -QMediaPlayer::MediaStatus QSoundEffectPrivate::mediaStatus() const -{ - if (m_player) return m_player->mediaStatus(); - - return QMediaPlayer::UnknownMediaStatus; -} - -void QSoundEffectPrivate::play() -{ - if (m_player && !m_player->isMuted()) - m_player->play(); -} - -void QSoundEffectPrivate::stop() -{ - if (m_player) - m_player->stop(); -} - -void QSoundEffectPrivate::setVolume(int volume) -{ - m_vol = volume; - - if (m_player) - m_player->setVolume(volume); -} - -void QSoundEffectPrivate::setMuted(bool muted) -{ - m_muted = muted; - - if (m_player) - m_player->setMuted(muted); -} - -void QSoundEffectPrivate::setMedia(const QMediaContent &media) -{ - if (media.isNull()) - return; - - if (m_player == 0) { - m_player = new QMediaPlayer(this, QMediaPlayer::LowLatency); - m_player->setVolume(m_vol); - m_player->setMuted(m_muted); - - connect(m_player, SIGNAL(volumeChanged(int)), SIGNAL(volumeChanged(int))); - connect(m_player, SIGNAL(mutedChanged(bool)), SIGNAL(mutedChanged(bool))); - connect(m_player, SIGNAL(durationChanged(qint64)), SIGNAL(durationChanged(qint64))); - connect(m_player, SIGNAL(stateChanged(QMediaPlayer::State)), SIGNAL(stateChanged(QMediaPlayer::State))); - } - - m_player->setMedia(media.canonicalUrl()); -} - -QT_END_NAMESPACE - diff --git a/src/multimedia/qml/qsoundeffect_qmedia_p.h b/src/multimedia/qml/qsoundeffect_qmedia_p.h deleted file mode 100644 index 8267f79..0000000 --- a/src/multimedia/qml/qsoundeffect_qmedia_p.h +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 QSOUNDEFFECT_QMEDIA_H -#define QSOUNDEFFECT_QMEDIA_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 -#include -#include -#include "qsoundeffect_p.h" - - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -class WaveDecoder; - -class QSoundEffectPrivate : public QObject -{ - Q_OBJECT -public: - explicit QSoundEffectPrivate(QObject* parent); - ~QSoundEffectPrivate(); - - qint64 duration() const; - int volume() const; - bool isMuted() const; - QMediaContent media() const; - QMediaPlayer::State state() const; - QMediaPlayer::MediaStatus mediaStatus() const; - -public Q_SLOTS: - void play(); - void stop(); - void setVolume(int volume); - void setMuted(bool muted); - void setMedia(const QMediaContent &media); - -Q_SIGNALS: - void mediaChanged(const QMediaContent &media); - void mediaStatusChanged(QMediaPlayer::MediaStatus status); - void stateChanged(QMediaPlayer::State newState); - void durationChanged(qint64 duration); - void volumeChanged(int volume); - void mutedChanged(bool muted); - void error(QMediaPlayer::Error error); - -private: - bool m_muted; - int m_vol; - QMediaPlayer *m_player; -}; - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif // QSOUNDEFFECT_QMEDIA_H diff --git a/src/multimedia/qml/qsoundeffect_qsound_p.cpp b/src/multimedia/qml/qsoundeffect_qsound_p.cpp deleted file mode 100644 index df160a9..0000000 --- a/src/multimedia/qml/qsoundeffect_qsound_p.cpp +++ /dev/null @@ -1,225 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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$ -** -****************************************************************************/ - -// -// 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 -#include -#include -#include -#include -#include - -#include "qmediacontent.h" -#include "qmediaplayer.h" -#include "qsoundeffect_p.h" - -#include "wavedecoder_p.h" - -#include "qsoundeffect_qsound_p.h" - -QT_BEGIN_NAMESPACE - -QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): - QObject(parent), - m_queued(false), - m_muted(false), - m_state(QMediaPlayer::StoppedState), - m_status(QMediaPlayer::NoMedia), - m_file(0), - m_sound(0) -{ - m_timer = new QTimer(this); - connect(m_timer,SIGNAL(timeout()),SLOT(checkPlayTime())); - m_media = QMediaContent(); -} - -QSoundEffectPrivate::~QSoundEffectPrivate() -{ - if (m_sound) delete m_sound; - if (m_waveDecoder) delete m_waveDecoder; - m_file->close(); -} - -qint64 QSoundEffectPrivate::duration() const -{ - if (m_waveDecoder) - return m_waveDecoder->size(); - - return 0; -} - -int QSoundEffectPrivate::volume() const -{ - return 100; -} - -bool QSoundEffectPrivate::isMuted() const -{ - return m_muted; -} - -QMediaContent QSoundEffectPrivate::media() const -{ - return m_media; -} - -QMediaPlayer::State QSoundEffectPrivate::state() const -{ - return m_state; -} - -QMediaPlayer::MediaStatus QSoundEffectPrivate::mediaStatus() const -{ - return m_status; -} - -void QSoundEffectPrivate::play() -{ - if (m_sound && !m_muted) { - m_queued = false; - m_timer->start(20); - m_playbackTime.start(); - m_sound->play(); - emit stateChanged(m_state = QMediaPlayer::PlayingState); - } else if (m_status == QMediaPlayer::LoadingMedia) - m_queued = true; -} - -void QSoundEffectPrivate::stop() -{ - m_timer->stop(); - - if (m_sound) { - m_sound->stop(); - emit stateChanged(m_state = QMediaPlayer::StoppedState); - } -} - -void QSoundEffectPrivate::setVolume(int volume) -{ - Q_UNUSED(volume) -} - -void QSoundEffectPrivate::setMuted(bool muted) -{ - m_muted = muted; -} - -void QSoundEffectPrivate::setMedia(const QMediaContent &media) -{ - m_queued = false; - - if (media.isNull() || media.canonicalUrl().scheme() != QLatin1String("file")) { - m_media = QMediaContent(); - return; - } - if (m_media == media) - return; - - m_media = media; - m_file = new QFile(m_media.canonicalUrl().toLocalFile()); - m_file->open(QIODevice::ReadOnly|QIODevice::Unbuffered); - - unloadSample(); - loadSample(); - - emit mediaChanged(m_media); -} - -void QSoundEffectPrivate::decoderReady() -{ - m_file->close(); - m_sound = new QSound(m_media.canonicalUrl().toLocalFile()); - emit mediaStatusChanged(m_status = QMediaPlayer::LoadedMedia); - - if (m_queued) - play(); -} - -void QSoundEffectPrivate::decoderError() -{ - m_file->close(); - emit mediaStatusChanged(m_status = QMediaPlayer::InvalidMedia); -} - -void QSoundEffectPrivate::checkPlayTime() -{ - if (m_sound->isFinished()) { - m_timer->stop(); - m_state = QMediaPlayer::StoppedState; - emit stateChanged(m_state); - } -} - -void QSoundEffectPrivate::loadSample() -{ - m_waveDecoder = new WaveDecoder(m_file); - connect(m_waveDecoder, SIGNAL(formatKnown()), SLOT(decoderReady())); - connect(m_waveDecoder, SIGNAL(invalidFormat()), SLOT(decoderError())); - - m_status = QMediaPlayer::LoadingMedia; - emit mediaStatusChanged(m_status); -} - -void QSoundEffectPrivate::unloadSample() -{ - if (m_sound == 0) - return; - - m_status = QMediaPlayer::NoMedia; - - if (m_sound) - delete m_sound; - - m_sound = 0; -} - -QT_END_NAMESPACE diff --git a/src/multimedia/qml/qsoundeffect_qsound_p.h b/src/multimedia/qml/qsoundeffect_qsound_p.h deleted file mode 100644 index 45c0888..0000000 --- a/src/multimedia/qml/qsoundeffect_qsound_p.h +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 QSOUNDEFFECT_QSOUND_H -#define QSOUNDEFFECT_QSOUND_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 -#include -#include - -#include "qsoundeffect_p.h" - - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -class QTimer; -class QSound; -class QFile; -class WaveDecoder; - -class QSoundEffectPrivate : public QObject -{ - Q_OBJECT -public: - explicit QSoundEffectPrivate(QObject* parent); - ~QSoundEffectPrivate(); - - qint64 duration() const; - int volume() const; - bool isMuted() const; - QMediaContent media() const; - QMediaPlayer::State state() const; - QMediaPlayer::MediaStatus mediaStatus() const; - -public Q_SLOTS: - void play(); - void stop(); - void setVolume(int volume); - void setMuted(bool muted); - void setMedia(const QMediaContent &media); - -Q_SIGNALS: - void mediaChanged(const QMediaContent &media); - void mediaStatusChanged(QMediaPlayer::MediaStatus status); - void stateChanged(QMediaPlayer::State newState); - void durationChanged(qint64 duration); - void volumeChanged(int volume); - void mutedChanged(bool muted); - void error(QMediaPlayer::Error error); - -private slots: - void decoderReady(); - void decoderError(); - void checkPlayTime(); - -private: - void loadSample(); - void unloadSample(); - - bool m_queued; - bool m_muted; - QTime m_playbackTime; - QMediaPlayer::State m_state; - QMediaPlayer::MediaStatus m_status; - QFile *m_file; - QByteArray m_name; - QMediaContent m_media; - WaveDecoder *m_waveDecoder; - QSound *m_sound; - QTimer *m_timer; -}; - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif // QSOUNDEFFECT_QSOUND_H diff --git a/src/multimedia/qml/wavedecoder_p.cpp b/src/multimedia/qml/wavedecoder_p.cpp deleted file mode 100644 index f2277ae..0000000 --- a/src/multimedia/qml/wavedecoder_p.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 "wavedecoder_p.h" - -#include -#include - -QT_BEGIN_NAMESPACE - -WaveDecoder::WaveDecoder(QIODevice *s, QObject *parent): - QIODevice(parent), - haveFormat(false), - dataSize(0), - remaining(0), - source(s) -{ - open(QIODevice::ReadOnly | QIODevice::Unbuffered); - - if (source->bytesAvailable() >= sizeof(CombinedHeader)) - QTimer::singleShot(0, this, SLOT(handleData())); - else - connect(source, SIGNAL(readyRead()), SLOT(handleData())); -} - -WaveDecoder::~WaveDecoder() -{ -} - -QAudioFormat WaveDecoder::audioFormat() const -{ - return format; -} - -int WaveDecoder::duration() const -{ - return size() * 1000 / (format.sampleSize() / 8) / format.channels() / format.frequency(); -} - -qint64 WaveDecoder::size() const -{ - return haveFormat ? dataSize : 0; -} - -bool WaveDecoder::isSequential() const -{ - return source->isSequential(); -} - -qint64 WaveDecoder::bytesAvailable() const -{ - return haveFormat ? source->bytesAvailable() : 0; -} - -qint64 WaveDecoder::readData(char *data, qint64 maxlen) -{ - return haveFormat ? source->read(data, maxlen) : 0; -} - -qint64 WaveDecoder::writeData(const char *data, qint64 len) -{ - Q_UNUSED(data); - Q_UNUSED(len); - - return -1; -} - -void WaveDecoder::handleData() -{ - if (source->bytesAvailable() < sizeof(CombinedHeader)) - return; - - source->disconnect(SIGNAL(readyRead()), this, SLOT(handleData())); - source->read((char*)&header, sizeof(CombinedHeader)); - - if (qstrncmp(header.riff.descriptor.id, "RIFF", 4) != 0 || - qstrncmp(header.riff.type, "WAVE", 4) != 0 || - qstrncmp(header.wave.descriptor.id, "fmt ", 4) != 0 || - (header.wave.audioFormat != 0 && header.wave.audioFormat != 1) || - qstrncmp(header.data.descriptor.id, "data", 4) != 0) { - - emit invalidFormat(); - } - else { - int bps = qFromLittleEndian(header.wave.bitsPerSample); - - format.setCodec(QLatin1String("audio/pcm")); - format.setSampleType(bps == 8 ? QAudioFormat::UnSignedInt : QAudioFormat::SignedInt); - format.setByteOrder(QAudioFormat::LittleEndian); - format.setFrequency(qFromLittleEndian(header.wave.sampleRate)); - format.setSampleSize(bps); - format.setChannels(qFromLittleEndian(header.wave.numChannels)); - - dataSize = qFromLittleEndian(header.data.descriptor.size); - - haveFormat = true; - connect(source, SIGNAL(readyRead()), SIGNAL(readyRead())); - emit formatKnown(); - } -} - -QT_END_NAMESPACE diff --git a/src/multimedia/qml/wavedecoder_p.h b/src/multimedia/qml/wavedecoder_p.h deleted file mode 100644 index 00aa14e..0000000 --- a/src/multimedia/qml/wavedecoder_p.h +++ /dev/null @@ -1,134 +0,0 @@ -/**************************************************************************** -** -** 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 QtMultimedia 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 WAVEDECODER_H -#define WAVEDECODER_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of other Qt classes. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include -#include - - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - - -class WaveDecoder : public QIODevice -{ - Q_OBJECT - -public: - explicit WaveDecoder(QIODevice *source, QObject *parent = 0); - ~WaveDecoder(); - - QAudioFormat audioFormat() const; - int duration() const; - - qint64 size() const; - bool isSequential() const; - qint64 bytesAvailable() const; - -signals: - void formatKnown(); - void invalidFormat(); - -private slots: - void handleData(); - -private: - qint64 readData(char *data, qint64 maxlen); - qint64 writeData(const char *data, qint64 len); - - struct chunk - { - char id[4]; - quint32 size; - }; - struct RIFFHeader - { - chunk descriptor; - char type[4]; - }; - struct WAVEHeader - { - chunk descriptor; - quint16 audioFormat; - quint16 numChannels; - quint32 sampleRate; - quint32 byteRate; - quint16 blockAlign; - quint16 bitsPerSample; - }; - struct DATAHeader - { - chunk descriptor; - }; - struct CombinedHeader - { - RIFFHeader riff; - WAVEHeader wave; - DATAHeader data; - }; - - bool haveFormat; - qint64 dataSize; - qint64 remaining; - QAudioFormat format; - QIODevice *source; - CombinedHeader header; -}; - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif // WAVEDECODER_H diff --git a/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp b/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp index 8becbf3..e03d8f3 100644 --- a/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp +++ b/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp @@ -41,17 +41,28 @@ #include #include -#include +#include + +#include "qdeclarativevideo_p.h" +#include "qdeclarativeaudio_p.h" + + QT_BEGIN_NAMESPACE -class QMultimediaQmlModule : public QDeclarativeExtensionPlugin +QML_DECLARE_TYPE(QSoundEffect) + +class QMultimediaDeclarativeModule : public QDeclarativeExtensionPlugin { Q_OBJECT public: virtual void registerTypes(const char *uri) { - QtMultimedia::qRegisterDeclarativeElements(uri); + Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.multimedia")); + + qmlRegisterType(uri, 4, 7, "SoundEffect"); + qmlRegisterType(uri, 4, 7, "Audio"); + qmlRegisterType(uri, 4, 7, "Video"); } }; @@ -59,5 +70,5 @@ QT_END_NAMESPACE #include "multimedia.moc" -Q_EXPORT_PLUGIN2(qmultimediaqmlmodule, QT_PREPEND_NAMESPACE(QMultimediaQmlModule)); +Q_EXPORT_PLUGIN2(qmultimediadeclarativemodule, QT_PREPEND_NAMESPACE(QMultimediaDeclarativeModule)); diff --git a/src/plugins/qdeclarativemodules/multimedia/multimedia.pro b/src/plugins/qdeclarativemodules/multimedia/multimedia.pro index d8ad18e..7b63e7c 100644 --- a/src/plugins/qdeclarativemodules/multimedia/multimedia.pro +++ b/src/plugins/qdeclarativemodules/multimedia/multimedia.pro @@ -3,7 +3,18 @@ include(../../qpluginbase.pri) QT += multimedia declarative -SOURCES += multimedia.cpp +HEADERS += \ + qdeclarativeaudio_p.h \ + qdeclarativemediabase_p.h \ + qdeclarativevideo_p.h \ + qmetadatacontrolmetaobject_p.h \ + +SOURCES += \ + multimedia.cpp \ + qdeclarativeaudio.cpp \ + qdeclarativemediabase.cpp \ + qdeclarativevideo.cpp \ + qmetadatacontrolmetaobject.cpp QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/Qt/multimedia target.path = $$[QT_INSTALL_IMPORTS]/Qt/multimedia diff --git a/src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio.cpp b/src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio.cpp new file mode 100644 index 0000000..df2888c --- /dev/null +++ b/src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio.cpp @@ -0,0 +1,327 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 "qdeclarativeaudio_p.h" + +#include + +QT_BEGIN_NAMESPACE + + +/*! + \qmlclass Audio QDeclarativeAudio + \since 4.7 + \brief The Audio element allows you to add audio playback to a scene. + + \qml + Audio { source: "audio/song.mp3" } + \endqml + + \sa Video +*/ + +/*! + \internal + \class QDeclarativeAudio + \brief The QDeclarativeAudio class provides an audio item that you can add to a QDeclarativeView. +*/ + +void QDeclarativeAudio::_q_error(int errorCode, const QString &errorString) +{ + m_error = QMediaPlayer::Error(errorCode); + m_errorString = errorString; + + emit error(Error(errorCode), errorString); + emit errorChanged(); +} + + +QDeclarativeAudio::QDeclarativeAudio(QObject *parent) + : QObject(parent) +{ + setObject(this); +} + +QDeclarativeAudio::~QDeclarativeAudio() +{ + shutdown(); +} + +/*! + \qmlmethod Audio::play() + + Starts playback of the media. + + Sets the \l playing property to true, and the \l paused property to false. +*/ + +void QDeclarativeAudio::play() +{ + m_playerControl->play(); + + if (m_paused) { + m_paused = false; + emit pausedChanged(); + } +} + +/*! + \qmlmethod Audio::pause() + + Pauses playback of the media. + + Sets the \l playing and \l paused properties to true. +*/ + +void QDeclarativeAudio::pause() +{ + m_playerControl->pause(); + + if (!m_paused && m_state == QMediaPlayer::PausedState) { + m_paused = true; + emit pausedChanged(); + } +} + +/*! + \qmlmethod Audio::stop() + + Stops playback of the media. + + Sets the \l playing and \l paused properties to false. +*/ + +void QDeclarativeAudio::stop() +{ + m_playerControl->stop(); + + if (m_paused) { + m_paused = false; + emit pausedChanged(); + } +} + +/*! + \qmlproperty url Audio::source + + This property holds the source URL of the media. +*/ + +/*! + \qmlproperty bool Audio::playing + + This property holds whether the media is playing. + + Defaults to false, and can be set to true to start playback. +*/ + +/*! + \qmlproperty bool Audio::paused + + This property holds whether the media is paused. + + Defaults to false, and can be set to true to pause playback. +*/ + +/*! + \qmlsignal Audio::onStarted() + + This handler is called when playback is started. +*/ + +/*! + \qmlsignal Audio::onResumed() + + This handler is called when playback is resumed from the paused state. +*/ + +/*! + \qmlsignal Audio::onPaused() + + This handler is called when playback is paused. +*/ + +/*! + \qmlsignal Audio::onStopped() + + This handler is called when playback is stopped. +*/ + +/*! + \qmlproperty enum Audio::status + + This property holds the status of media loading. It can be one of: + + \list + \o NoMedia - no media has been set. + \o Loading - the media is currently being loaded. + \o Loaded - the media has been loaded. + \o Buffering - the media is buffering data. + \o Stalled - playback has been interrupted while the media is buffering data. + \o Buffered - the media has buffered data. + \o EndOfMedia - the media has played to the end. + \o InvalidMedia - the media cannot be played. + \o UnknownStatus - the status of the media is unknown. + \endlist +*/ + +QDeclarativeAudio::Status QDeclarativeAudio::status() const +{ + return Status(m_status); +} + +/*! + \qmlsignal Audio::onLoaded() + + This handler is called when the media source has been loaded. +*/ + +/*! + \qmlsignal Audio::onBuffering() + + This handler is called when the media starts buffering. +*/ + +/*! + \qmlsignal Audio::onStalled() + + This handler is called when playback has stalled while the media buffers. +*/ + +/*! + \qmlsignal Audio::onBuffered() + + This handler is called when the media has finished buffering. +*/ + +/*! + \qmlsignal Audio::onEndOfMedia() + + This handler is called when playback stops because end of the media has been reached. +*/ +/*! + \qmlproperty int Audio::duration + + This property holds the duration of the media in milliseconds. + + If the media doesn't have a fixed duration (a live stream for example) this will be 0. +*/ + +/*! + \qmlproperty int Audio::position + + This property holds the current playback position in milliseconds. + + If the \l seekable property is true, this property can be set to seek to a new position. +*/ + +/*! + \qmlproperty qreal Audio::volume + + This property holds the volume of the audio output, from 0.0 (silent) to 1.0 (maximum volume). +*/ + +/*! + \qmlproperty bool Audio::muted + + This property holds whether the audio output is muted. +*/ + +/*! + \qmlproperty qreal Audio::bufferProgress + + This property holds how much of the data buffer is currently filled, from 0.0 (empty) to 1.0 + (full). +*/ + +/*! + \qmlproperty bool Audio::seekable + + This property holds whether position of the audio can be changed. + + If true; setting a \l position value will cause playback to seek to the new position. +*/ + +/*! + \qmlproperty qreal Audio::playbackRate + + This property holds the rate at which audio is played at as a multiple of the normal rate. +*/ + +/*! + \qmlproperty enum Audio::error + + This property holds the error state of the audio. It can be one of: + + \list + \o NoError - there is no current error. + \o ResourceError - the audio cannot be played due to a problem allocating resources. + \o FormatError - the audio format is not supported. + \o NetworkError - the audio cannot be played due to network issues. + \o AccessDenied - the audio cannot be played due to insufficient permissions. + \o ServiceMissing - the audio cannot be played because the media service could not be + instantiated. + \endlist +*/ + +QDeclarativeAudio::Error QDeclarativeAudio::error() const +{ + return Error(m_error); +} + +/*! + \qmlproperty string Audio::errorString + + This property holds a string describing the current error condition in more detail. +*/ + +/*! + \qmlsignal Audio::onError(error, errorString) + + This handler is called when an \l {Error}{error} has occurred. The errorString parameter + may contain more detailed information about the error. +*/ + +QT_END_NAMESPACE + +#include "moc_qdeclarativeaudio_p.cpp" + + diff --git a/src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio_p.h b/src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio_p.h new file mode 100644 index 0000000..9881dbc --- /dev/null +++ b/src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio_p.h @@ -0,0 +1,173 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 QDECLARATIVEAUDIO_P_H +#define QDECLARATIVEAUDIO_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qdeclarativemediabase_p.h" + +#include +#include + + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QTimerEvent; + +class QDeclarativeAudio : public QObject, public QDeclarativeMediaBase, public QDeclarativeParserStatus +{ + Q_OBJECT + Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) + Q_PROPERTY(bool playing READ isPlaying WRITE setPlaying NOTIFY playingChanged) + Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged) + Q_PROPERTY(Status status READ status NOTIFY statusChanged) + Q_PROPERTY(int duration READ duration NOTIFY durationChanged) + Q_PROPERTY(int position READ position WRITE setPosition NOTIFY positionChanged) + Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged) + Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) + Q_PROPERTY(int bufferProgress READ bufferProgress NOTIFY bufferProgressChanged) + Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged) + Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged) + Q_PROPERTY(Error error READ error NOTIFY errorChanged) + Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) + Q_ENUMS(Status) + Q_ENUMS(Error) + Q_INTERFACES(QDeclarativeParserStatus) +public: + enum Status + { + UnknownStatus = QMediaPlayer::UnknownMediaStatus, + NoMedia = QMediaPlayer::NoMedia, + Loading = QMediaPlayer::LoadingMedia, + Loaded = QMediaPlayer::LoadedMedia, + Stalled = QMediaPlayer::StalledMedia, + Buffering = QMediaPlayer::BufferingMedia, + Buffered = QMediaPlayer::BufferedMedia, + EndOfMedia = QMediaPlayer::EndOfMedia, + InvalidMedia = QMediaPlayer::InvalidMedia + }; + + enum Error + { + NoError = QMediaPlayer::NoError, + ResourceError = QMediaPlayer::ResourceError, + FormatError = QMediaPlayer::FormatError, + NetworkError = QMediaPlayer::NetworkError, + AccessDenied = QMediaPlayer::AccessDeniedError, + ServiceMissing = QMediaPlayer::ServiceMissingError + }; + + QDeclarativeAudio(QObject *parent = 0); + ~QDeclarativeAudio(); + + Status status() const; + Error error() const; + +public Q_SLOTS: + void play(); + void pause(); + void stop(); + +Q_SIGNALS: + void sourceChanged(); + + void playingChanged(); + void pausedChanged(); + + void started(); + void resumed(); + void paused(); + void stopped(); + + void statusChanged(); + + void loaded(); + void buffering(); + void stalled(); + void buffered(); + void endOfMedia(); + + void durationChanged(); + void positionChanged(); + + void volumeChanged(); + void mutedChanged(); + + void bufferProgressChanged(); + + void seekableChanged(); + void playbackRateChanged(); + + void errorChanged(); + void error(QDeclarativeAudio::Error error, const QString &errorString); + +private Q_SLOTS: + void _q_error(int, const QString &); + +private: + Q_DISABLE_COPY(QDeclarativeAudio) + Q_PRIVATE_SLOT(mediaBase(), void _q_stateChanged(QMediaPlayer::State)) + Q_PRIVATE_SLOT(mediaBase(), void _q_mediaStatusChanged(QMediaPlayer::MediaStatus)) + Q_PRIVATE_SLOT(mediaBase(), void _q_metaDataChanged()) + + inline QDeclarativeMediaBase *mediaBase() { return this; } +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeAudio)) + +QT_END_HEADER + +#endif diff --git a/src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase.cpp b/src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase.cpp new file mode 100644 index 0000000..8e87e44 --- /dev/null +++ b/src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase.cpp @@ -0,0 +1,413 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 "qdeclarativemediabase_p.h" + +#include +#include + +#include +#include +#include +#include +#include "qmetadatacontrolmetaobject_p.h" + + + +QT_BEGIN_NAMESPACE + + +class QDeclarativeMediaBaseObject : public QMediaObject +{ +public: + QDeclarativeMediaBaseObject(QMediaService *service) + : QMediaObject(0, service) + { + } +}; + +class QDeclarativeMediaBasePlayerControl : public QMediaPlayerControl +{ +public: + QDeclarativeMediaBasePlayerControl(QObject *parent) + : QMediaPlayerControl(parent) + { + } + + QMediaPlayer::State state() const { return QMediaPlayer::StoppedState; } + QMediaPlayer::MediaStatus mediaStatus() const { return QMediaPlayer::NoMedia; } + + qint64 duration() const { return 0; } + qint64 position() const { return 0; } + void setPosition(qint64) {} + int volume() const { return 0; } + void setVolume(int) {} + bool isMuted() const { return false; } + void setMuted(bool) {} + int bufferStatus() const { return 0; } + bool isAudioAvailable() const { return false; } + bool isVideoAvailable() const { return false; } + bool isSeekable() const { return false; } + QMediaTimeRange availablePlaybackRanges() const { return QMediaTimeRange(); } + qreal playbackRate() const { return 1; } + void setPlaybackRate(qreal) {} + QMediaContent media() const { return QMediaContent(); } + const QIODevice *mediaStream() const { return 0; } + void setMedia(const QMediaContent &, QIODevice *) {} + + void play() {} + void pause() {} + void stop() {} +}; + +class QDeclarativeMediaBaseAnimation : public QObject +{ +public: + QDeclarativeMediaBaseAnimation(QDeclarativeMediaBase *media) + : m_media(media) + { + } + + void start() { if (!m_timer.isActive()) m_timer.start(500, this); } + void stop() { m_timer.stop(); } + +protected: + void timerEvent(QTimerEvent *event) + { + if (event->timerId() == m_timer.timerId()) { + event->accept(); + + if (m_media->m_state == QMediaPlayer::PlayingState) + emit m_media->positionChanged(); + if (m_media->m_status == QMediaPlayer::BufferingMedia || QMediaPlayer::StalledMedia) + emit m_media->bufferProgressChanged(); + } else { + QObject::timerEvent(event); + } + } + +private: + QDeclarativeMediaBase *m_media; + QBasicTimer m_timer; +}; + +void QDeclarativeMediaBase::_q_stateChanged(QMediaPlayer::State state) +{ + if (state != m_state) { + QMediaPlayer::State oldState = m_state; + + m_state = state; + + if (state == QMediaPlayer::StoppedState) { + emit stopped(); + emit playingChanged(); + } else if (oldState == QMediaPlayer::StoppedState) { + emit started(); + emit playingChanged(); + } else if (oldState == QMediaPlayer::PausedState) { + m_paused = false; + + emit resumed(); + emit pausedChanged(); + } + + if (state == m_state && state == QMediaPlayer::PausedState) { + bool wasPaused = m_paused; + + m_paused = true; + + emit paused(); + + if (!wasPaused) + emit pausedChanged(); + } + + if (m_state == QMediaPlayer::PlayingState + || m_status == QMediaPlayer::BufferingMedia + || m_status == QMediaPlayer::StalledMedia) { + m_animation->start(); + } else { + m_animation->stop(); + } + } +} + +void QDeclarativeMediaBase::_q_mediaStatusChanged(QMediaPlayer::MediaStatus status) +{ + if (status != m_status) { + m_status = status; + + switch (status) { + case QMediaPlayer::LoadedMedia: + emit loaded(); + break; + case QMediaPlayer::BufferingMedia: + emit buffering(); + break; + case QMediaPlayer::BufferedMedia: + emit buffered(); + break; + case QMediaPlayer::StalledMedia: + emit stalled(); + break; + case QMediaPlayer::EndOfMedia: + emit endOfMedia(); + break; + default: + break; + } + + emit statusChanged(); + + if (m_state == QMediaPlayer::PlayingState + || m_status == QMediaPlayer::BufferingMedia + || m_status == QMediaPlayer::StalledMedia) { + m_animation->start(); + } else { + m_animation->stop(); + } + } +} + +void QDeclarativeMediaBase::_q_metaDataChanged() +{ + m_metaObject->metaDataChanged(); +} + +QDeclarativeMediaBase::QDeclarativeMediaBase() + : m_mediaService(0) + , m_playerControl(0) + , m_mediaObject(0) + , m_mediaProvider(0) + , m_metaDataControl(0) + , m_metaObject(0) + , m_animation(0) + , m_state(QMediaPlayer::StoppedState) + , m_status(QMediaPlayer::NoMedia) + , m_error(QMediaPlayer::NoError) + , m_paused(false) +{ +} + +QDeclarativeMediaBase::~QDeclarativeMediaBase() +{ +} + +void QDeclarativeMediaBase::shutdown() +{ + delete m_metaObject; + delete m_mediaObject; + + if (m_mediaProvider) + m_mediaProvider->releaseService(m_mediaService); + + delete m_animation; + +} + +void QDeclarativeMediaBase::setObject(QObject *object) +{ + if ((m_mediaProvider = QMediaServiceProvider::defaultServiceProvider())) { + if ((m_mediaService = m_mediaProvider->requestService(Q_MEDIASERVICE_MEDIAPLAYER))) { + m_playerControl = qobject_cast( + m_mediaService->control(QMediaPlayerControl_iid)); + m_metaDataControl = qobject_cast( + m_mediaService->control(QMetaDataControl_iid)); + m_mediaObject = new QDeclarativeMediaBaseObject(m_mediaService); + } + } + + if (m_playerControl) { + QObject::connect(m_playerControl, SIGNAL(stateChanged(QMediaPlayer::State)), + object, SLOT(_q_stateChanged(QMediaPlayer::State))); + QObject::connect(m_playerControl, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), + object, SLOT(_q_mediaStatusChanged(QMediaPlayer::MediaStatus))); + QObject::connect(m_playerControl, SIGNAL(mediaChanged(QMediaContent)), + object, SIGNAL(sourceChanged())); + QObject::connect(m_playerControl, SIGNAL(durationChanged(qint64)), + object, SIGNAL(durationChanged())); + QObject::connect(m_playerControl, SIGNAL(positionChanged(qint64)), + object, SIGNAL(positionChanged())); + QObject::connect(m_playerControl, SIGNAL(volumeChanged(int)), + object, SIGNAL(volumeChanged())); + QObject::connect(m_playerControl, SIGNAL(mutedChanged(bool)), + object, SIGNAL(mutedChanged())); + QObject::connect(m_playerControl, SIGNAL(bufferStatusChanged(int)), + object, SIGNAL(bufferProgressChanged())); + QObject::connect(m_playerControl, SIGNAL(seekableChanged(bool)), + object, SIGNAL(seekableChanged())); + QObject::connect(m_playerControl, SIGNAL(playbackRateChanged(qreal)), + object, SIGNAL(playbackRateChanged())); + QObject::connect(m_playerControl, SIGNAL(error(int,QString)), + object, SLOT(_q_error(int,QString))); + + m_animation = new QDeclarativeMediaBaseAnimation(this); + } else { + m_error = QMediaPlayer::ServiceMissingError; + + m_playerControl = new QDeclarativeMediaBasePlayerControl(object); + } + + if (m_metaDataControl) { + m_metaObject = new QMetaDataControlMetaObject(m_metaDataControl, object); + + QObject::connect(m_metaDataControl, SIGNAL(metaDataChanged()), + object, SLOT(_q_metaDataChanged())); + } +} + +QUrl QDeclarativeMediaBase::source() const +{ + return m_playerControl->media().canonicalUrl(); +} + +void QDeclarativeMediaBase::setSource(const QUrl &url) +{ + if (m_error != QMediaPlayer::ServiceMissingError && m_error != QMediaPlayer::NoError) { + m_error = QMediaPlayer::NoError; + m_errorString = QString(); + + emit errorChanged(); + } + + m_playerControl->setMedia(QMediaContent(url), 0); +} + +bool QDeclarativeMediaBase::isPlaying() const +{ + return m_state != QMediaPlayer::StoppedState; +} + +void QDeclarativeMediaBase::setPlaying(bool playing) +{ + if (playing && m_state == QMediaPlayer::StoppedState) { + if (m_paused) + m_playerControl->pause(); + else + m_playerControl->play(); + } else if (!playing) { + m_playerControl->stop(); + } +} + +bool QDeclarativeMediaBase::isPaused() const +{ + return m_paused; +} + +void QDeclarativeMediaBase::setPaused(bool paused) +{ + if (m_paused != paused) { + if (paused && m_state == QMediaPlayer::PlayingState) { + m_playerControl->pause(); + } else if (!paused && m_state == QMediaPlayer::PausedState) { + m_playerControl->play(); + } else { + m_paused = paused; + + emit pausedChanged(); + } + } +} + +int QDeclarativeMediaBase::duration() const +{ + return m_playerControl->duration(); +} + +int QDeclarativeMediaBase::position() const +{ + return m_playerControl->position(); + +} + +void QDeclarativeMediaBase::setPosition(int position) +{ + m_playerControl->setPosition(position); +} + +qreal QDeclarativeMediaBase::volume() const +{ + return qreal(m_playerControl->volume()) / 100; +} + +void QDeclarativeMediaBase::setVolume(qreal volume) +{ + m_playerControl->setVolume(qRound(volume * 100)); +} + +bool QDeclarativeMediaBase::isMuted() const +{ + return m_playerControl->isMuted(); +} + +void QDeclarativeMediaBase::setMuted(bool muted) +{ + m_playerControl->setMuted(muted); +} + +qreal QDeclarativeMediaBase::bufferProgress() const +{ + return qreal(m_playerControl->bufferStatus()) / 100; +} + +bool QDeclarativeMediaBase::isSeekable() const +{ + return m_playerControl->isSeekable(); +} + +qreal QDeclarativeMediaBase::playbackRate() const +{ + return m_playerControl->playbackRate(); +} + +void QDeclarativeMediaBase::setPlaybackRate(qreal rate) +{ + m_playerControl->setPlaybackRate(rate); +} + +QString QDeclarativeMediaBase::errorString() const +{ + return m_errorString; +} + +QT_END_NAMESPACE + diff --git a/src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase_p.h b/src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase_p.h new file mode 100644 index 0000000..b40e84e --- /dev/null +++ b/src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase_p.h @@ -0,0 +1,168 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 QDECLARATIVEMEDIABASE_P_H +#define QDECLARATIVEMEDIABASE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QMediaPlayerControl; +class QMediaService; +class QMediaServiceProvider; +class QMetaDataControl; +class QMetaDataControlMetaObject; +class QDeclarativeMediaBaseAnimation; + +class QDeclarativeMediaBase +{ +public: + QDeclarativeMediaBase(); + virtual ~QDeclarativeMediaBase(); + + QUrl source() const; + void setSource(const QUrl &url); + + bool isPlaying() const; + void setPlaying(bool playing); + + bool isPaused() const; + void setPaused(bool paused); + + int duration() const; + + int position() const; + void setPosition(int position); + + qreal volume() const; + void setVolume(qreal volume); + + bool isMuted() const; + void setMuted(bool muted); + + qreal bufferProgress() const; + + bool isSeekable() const; + + qreal playbackRate() const; + void setPlaybackRate(qreal rate); + + QString errorString() const; + + void _q_stateChanged(QMediaPlayer::State state); + void _q_mediaStatusChanged(QMediaPlayer::MediaStatus status); + + void _q_metaDataChanged(); + +protected: + void shutdown(); + + void setObject(QObject *object); + + virtual void sourceChanged() = 0; + + virtual void playingChanged() = 0; + virtual void pausedChanged() = 0; + + virtual void started() = 0; + virtual void resumed() = 0; + virtual void paused() = 0; + virtual void stopped() = 0; + + virtual void statusChanged() = 0; + + virtual void loaded() = 0; + virtual void buffering() = 0; + virtual void stalled() = 0; + virtual void buffered() = 0; + virtual void endOfMedia() = 0; + + virtual void durationChanged() = 0; + virtual void positionChanged() = 0; + + virtual void volumeChanged() = 0; + virtual void mutedChanged() = 0; + + virtual void bufferProgressChanged() = 0; + + virtual void seekableChanged() = 0; + virtual void playbackRateChanged() = 0; + + virtual void errorChanged() = 0; + + QMediaService *m_mediaService; + QMediaPlayerControl *m_playerControl; + + QMediaObject *m_mediaObject; + QMediaServiceProvider *m_mediaProvider; + QMetaDataControl *m_metaDataControl; + QMetaDataControlMetaObject *m_metaObject; + QDeclarativeMediaBaseAnimation *m_animation; + + QMediaPlayer::State m_state; + QMediaPlayer::MediaStatus m_status; + QMediaPlayer::Error m_error; + bool m_paused; + QString m_errorString; + + friend class QDeclarativeMediaBaseAnimation; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif diff --git a/src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo.cpp b/src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo.cpp new file mode 100644 index 0000000..064f242 --- /dev/null +++ b/src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo.cpp @@ -0,0 +1,945 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 "qdeclarativevideo_p.h" + +#include +#include +#include +#include +#include + + +QT_BEGIN_NAMESPACE + + +void QDeclarativeVideo::_q_nativeSizeChanged(const QSizeF &size) +{ + setImplicitWidth(size.width()); + setImplicitHeight(size.height()); +} + +void QDeclarativeVideo::_q_error(int errorCode, const QString &errorString) +{ + m_error = QMediaPlayer::Error(errorCode); + m_errorString = errorString; + + emit error(Error(errorCode), errorString); + emit errorChanged(); +} + + +/*! + \qmlclass Video QDeclarativeVideo + \since 4.7 + \brief The Video element allows you to add videos to a scene. + \inherits Item + + \qml + Video { source: "video/movie.mpg" } + \endqml + + The video item supports untransformed, stretched, and uniformly scaled video presentation. + For a description of stretched uniformly scaled presentation, see the \l fillMode property + description. + + The video item is only visible when the \l hasVideo property is true and the video is playing. + + \sa Audio +*/ + +/*! + \internal + \class QDeclarativeVideo + \brief The QDeclarativeVideo class provides a video item that you can add to a QDeclarativeView. +*/ + +QDeclarativeVideo::QDeclarativeVideo(QDeclarativeItem *parent) + : QDeclarativeItem(parent) + , m_graphicsItem(0) + +{ + m_graphicsItem = new QGraphicsVideoItem(this); + connect(m_graphicsItem, SIGNAL(nativeSizeChanged(QSizeF)), + this, SLOT(_q_nativeSizeChanged(QSizeF))); + + setObject(this); + + if (m_mediaService) { + connect(m_playerControl, SIGNAL(audioAvailableChanged(bool)), + this, SIGNAL(hasAudioChanged())); + connect(m_playerControl, SIGNAL(videoAvailableChanged(bool)), + this, SIGNAL(hasVideoChanged())); + + m_graphicsItem->setMediaObject(m_mediaObject); + } +} + +QDeclarativeVideo::~QDeclarativeVideo() +{ + shutdown(); + + delete m_graphicsItem; +} + +/*! + \qmlproperty url Video::source + + This property holds the source URL of the media. +*/ + +/*! + \qmlproperty bool Video::playing + + This property holds whether the media is playing. + + Defaults to false, and can be set to true to start playback. +*/ + +/*! + \qmlproperty bool Video::paused + + This property holds whether the media is paused. + + Defaults to false, and can be set to true to pause playback. +*/ + +/*! + \qmlsignal Video::onStarted() + + This handler is called when playback is started. +*/ + +/*! + \qmlsignal Video::onResumed() + + This handler is called when playback is resumed from the paused state. +*/ + +/*! + \qmlsignal Video::onPaused() + + This handler is called when playback is paused. +*/ + +/*! + \qmlsignal Video::onStopped() + + This handler is called when playback is stopped. +*/ + +/*! + \qmlproperty enum Video::status + + This property holds the status of media loading. It can be one of: + + \list + \o NoMedia - no media has been set. + \o Loading - the media is currently being loaded. + \o Loaded - the media has been loaded. + \o Buffering - the media is buffering data. + \o Stalled - playback has been interrupted while the media is buffering data. + \o Buffered - the media has buffered data. + \o EndOfMedia - the media has played to the end. + \o InvalidMedia - the media cannot be played. + \o UnknownStatus - the status of the media is cannot be determined. + \endlist +*/ + +QDeclarativeVideo::Status QDeclarativeVideo::status() const +{ + return Status(m_status); +} + +/*! + \qmlsignal Video::onLoaded() + + This handler is called when the media source has been loaded. +*/ + +/*! + \qmlsignal Video::onBuffering() + + This handler is called when the media starts buffering. +*/ + +/*! + \qmlsignal Video::onStalled() + + This handler is called when playback has stalled while the media buffers. +*/ + +/*! + \qmlsignal Video::onBuffered() + + This handler is called when the media has finished buffering. +*/ + +/*! + \qmlsignal Video::onEndOfMedia() + + This handler is called when playback stops because end of the media has been reached. +*/ + +/*! + \qmlproperty int Video::duration + + This property holds the duration of the media in milliseconds. + + If the media doesn't have a fixed duration (a live stream for example) this will be 0. +*/ + +/*! + \qmlproperty int Video::position + + This property holds the current playback position in milliseconds. +*/ + +/*! + \qmlproperty qreal Video::volume + + This property holds the volume of the audio output, from 0.0 (silent) to 1.0 (maximum volume). +*/ + +/*! + \qmlproperty bool Video::muted + + This property holds whether the audio output is muted. +*/ + +/*! + \qmlproperty bool Video::hasAudio + + This property holds whether the media contains audio. +*/ + +bool QDeclarativeVideo::hasAudio() const +{ + return m_playerControl->isAudioAvailable(); +} + +/*! + \qmlproperty bool Video::hasVideo + + This property holds whether the media contains video. +*/ + +bool QDeclarativeVideo::hasVideo() const +{ + return m_playerControl->isVideoAvailable(); +} + +/*! + \qmlproperty qreal Video::bufferProgress + + This property holds how much of the data buffer is currently filled, from 0.0 (empty) to 1.0 + (full). +*/ + +/*! + \qmlproperty bool Video::seekable + + This property holds whether position of the video can be changed. +*/ + +/*! + \qmlproperty qreal Video::playbackRate + + This property holds the rate at which video is played at as a multiple of the normal rate. +*/ + +/*! + \qmlproperty enum Video::error + + This property holds the error state of the video. It can be one of: + + \list + \o NoError - there is no current error. + \o ResourceError - the video cannot be played due to a problem allocating resources. + \o FormatError - the video format is not supported. + \o NetworkError - the video cannot be played due to network issues. + \o AccessDenied - the video cannot be played due to insufficient permissions. + \o ServiceMissing - the video cannot be played because the media service could not be + instantiated. + \endlist +*/ + + +QDeclarativeVideo::Error QDeclarativeVideo::error() const +{ + return Error(m_error); +} + +/*! + \qmlproperty string Video::errorString + + This property holds a string describing the current error condition in more detail. +*/ + +/*! + \qmlsignal Video::onError(error, errorString) + + This handler is called when an \l {Error}{error} has occurred. The errorString parameter + may contain more detailed information about the error. +*/ + +/*! + \qmlproperty enum Video::fillMode + + Set this property to define how the video is scaled to fit the target area. + + \list + \o Stretch - the video is scaled to fit. + \o PreserveAspectFit - the video is scaled uniformly to fit without cropping + \o PreserveAspectCrop - the video is scaled uniformly to fill, cropping if necessary + \endlist + + The default fill mode is PreserveAspectFit. +*/ + +QDeclarativeVideo::FillMode QDeclarativeVideo::fillMode() const +{ + return FillMode(m_graphicsItem->aspectRatioMode()); +} + +void QDeclarativeVideo::setFillMode(FillMode mode) +{ + m_graphicsItem->setAspectRatioMode(Qt::AspectRatioMode(mode)); +} + +/*! + \qmlmethod Video::play() + + Starts playback of the media. + + Sets the \l playing property to true, and the \l paused property to false. +*/ + +void QDeclarativeVideo::play() +{ + m_playerControl->play(); + + if (m_paused) { + m_paused = false; + emit pausedChanged(); + } +} + +/*! + \qmlmethod Video::pause() + + Pauses playback of the media. + + Sets the \l playing and \l paused properties to true. +*/ + +void QDeclarativeVideo::pause() +{ + m_playerControl->pause(); + + if (!m_paused && m_state == QMediaPlayer::PausedState) { + m_paused = true; + emit pausedChanged(); + } +} + +/*! + \qmlmethod Video::stop() + + Stops playback of the media. + + Sets the \l playing and \l paused properties to false. +*/ + +void QDeclarativeVideo::stop() +{ + m_playerControl->stop(); + + if (m_paused) { + m_paused = false; + emit pausedChanged(); + } +} + +void QDeclarativeVideo::paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) +{ +} + +void QDeclarativeVideo::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) +{ + m_graphicsItem->setSize(newGeometry.size()); + + QDeclarativeItem::geometryChanged(newGeometry, oldGeometry); +} + +QT_END_NAMESPACE + +// *************************************** +// Documentation for meta-data properties. +// *************************************** + +/*! + \qmlproperty variant Video::title + + This property holds the tile of the media. + + \sa {QtMultimedia::Title} +*/ + +/*! + \qmlproperty variant Video::subTitle + + This property holds the sub-title of the media. + + \sa {QtMultimedia::SubTitle} +*/ + +/*! + \qmlproperty variant Video::author + + This property holds the author of the media. + + \sa {QtMultimedia::Author} +*/ + +/*! + \qmlproperty variant Video::comment + + This property holds a user comment about the media. + + \sa {QtMultimedia::Comment} +*/ + +/*! + \qmlproperty variant Video::description + + This property holds a description of the media. + + \sa {QtMultimedia::Description} +*/ + +/*! + \qmlproperty variant Video::category + + This property holds the category of the media + + \sa {QtMultimedia::Category} +*/ + +/*! + \qmlproperty variant Video::genre + + This property holds the genre of the media. + + \sa {QtMultimedia::Genre} +*/ + +/*! + \qmlproperty variant Video::year + + This property holds the year of release of the media. + + \sa {QtMultimedia::Year} +*/ + +/*! + \qmlproperty variant Video::date + + This property holds the date of the media. + + \sa {QtMultimedia::Date} +*/ + +/*! + \qmlproperty variant Video::userRating + + This property holds a user rating of the media in the range of 0 to 100. + + \sa {QtMultimedia::UserRating} +*/ + +/*! + \qmlproperty variant Video::keywords + + This property holds a list of keywords describing the media. + + \sa {QtMultimedia::Keywords} +*/ + +/*! + \qmlproperty variant Video::language + + This property holds the language of the media, as an ISO 639-2 code. + + \sa {QtMultimedia::Language} +*/ + +/*! + \qmlproperty variant Video::publisher + + This property holds the publisher of the media. + + \sa {QtMultimedia::Publisher} +*/ + +/*! + \qmlproperty variant Video::copyright + + This property holds the media's copyright notice. + + \sa {QtMultimedia::Copyright} +*/ + +/*! + \qmlproperty variant Video::parentalRating + + This property holds the parental rating of the media. + + \sa {QtMultimedia::ParentalRating} +*/ + +/*! + \qmlproperty variant Video::ratingOrganisation + + This property holds the name of the rating organisation responsible for the + parental rating of the media. + + \sa {QtMultimedia::RatingOrganisation} +*/ + +/*! + \qmlproperty variant Video::size + + This property property holds the size of the media in bytes. + + \sa {QtMultimedia::Size} +*/ + +/*! + \qmlproperty variant Video::mediaType + + This property holds the type of the media. + + \sa {QtMultimedia::MediaType} +*/ + +/*! + \qmlproperty variant Video::audioBitRate + + This property holds the bit rate of the media's audio stream ni bits per + second. + + \sa {QtMultimedia::AudioBitRate} +*/ + +/*! + \qmlproperty variant Video::audioCodec + + This property holds the encoding of the media audio stream. + + \sa {QtMultimedia::AudioCodec} +*/ + +/*! + \qmlproperty variant Video::averageLevel + + This property holds the average volume level of the media. + + \sa {QtMultimedia::AverageLevel} +*/ + +/*! + \qmlproperty variant Video::channelCount + + This property holds the number of channels in the media's audio stream. + + \sa {QtMultimedia::ChannelCount} +*/ + +/*! + \qmlproperty variant Video::peakValue + + This property holds the peak volume of media's audio stream. + + \sa {QtMultimedia::PeakValue} +*/ + +/*! + \qmlproperty variant Video::sampleRate + + This property holds the sample rate of the media's audio stream in hertz. + + \sa {QtMultimedia::SampleRate} +*/ + +/*! + \qmlproperty variant Video::albumTitle + + This property holds the title of the album the media belongs to. + + \sa {QtMultimedia::AlbumTitle} +*/ + +/*! + \qmlproperty variant Video::albumArtist + + This property holds the name of the principal artist of the album the media + belongs to. + + \sa {QtMultimedia::AlbumArtist} +*/ + +/*! + \qmlproperty variant Video::contributingArtist + + This property holds the names of artists contributing to the media. + + \sa {QtMultimedia::ContributingArtist} +*/ + +/*! + \qmlproperty variant Video::composer + + This property holds the composer of the media. + + \sa {QtMultimedia::Composer} +*/ + +/*! + \qmlproperty variant Video::conductor + + This property holds the conductor of the media. + + \sa {QtMultimedia::Conductor} +*/ + +/*! + \qmlproperty variant Video::lyrics + + This property holds the lyrics to the media. + + \sa {QtMultimedia::Lyrics} +*/ + +/*! + \qmlproperty variant Video::mood + + This property holds the mood of the media. + + \sa {QtMultimedia::Mood} +*/ + +/*! + \qmlproperty variant Video::trackNumber + + This property holds the track number of the media. + + \sa {QtMultimedia::TrackNumber} +*/ + +/*! + \qmlproperty variant Video::trackCount + + This property holds the number of track on the album containing the media. + + \sa {QtMultimedia::TrackNumber} +*/ + +/*! + \qmlproperty variant Video::coverArtUrlSmall + + This property holds the URL of a small cover art image. + + \sa {QtMultimedia::CoverArtUrlSmall} +*/ + +/*! + \qmlproperty variant Video::coverArtUrlLarge + + This property holds the URL of a large cover art image. + + \sa {QtMultimedia::CoverArtUrlLarge} +*/ + +/*! + \qmlproperty variant Video::resolution + + This property holds the dimension of an image or video. + + \sa {QtMultimedia::Resolution} +*/ + +/*! + \qmlproperty variant Video::pixelAspectRatio + + This property holds the pixel aspect ratio of an image or video. + + \sa {QtMultimedia::PixelAspectRatio} +*/ + +/*! + \qmlproperty variant Video::videoFrameRate + + This property holds the frame rate of the media's video stream. + + \sa {QtMultimedia::VideoFrameRate} +*/ + +/*! + \qmlproperty variant Video::videoBitRate + + This property holds the bit rate of the media's video stream in bits per + second. + + \sa {QtMultimedia::VideoBitRate} +*/ + +/*! + \qmlproperty variant Video::videoCodec + + This property holds the encoding of the media's video stream. + + \sa {QtMultimedia::VideoCodec} +*/ + +/*! + \qmlproperty variant Video::posterUrl + + This property holds the URL of a poster image. + + \sa {QtMultimedia::PosterUrl} +*/ + +/*! + \qmlproperty variant Video::chapterNumber + + This property holds the chapter number of the media. + + \sa {QtMultimedia::ChapterNumber} +*/ + +/*! + \qmlproperty variant Video::director + + This property holds the director of the media. + + \sa {QtMultimedia::Director} +*/ + +/*! + \qmlproperty variant Video::leadPerformer + + This property holds the lead performer in the media. + + \sa {QtMultimedia::LeadPerformer} +*/ + +/*! + \qmlproperty variant Video::writer + + This property holds the writer of the media. + + \sa {QtMultimedia::Writer} +*/ + +// The remaining properties are related to photos, and are technically +// available but will certainly never have values. +#ifndef Q_QDOC + +/*! + \qmlproperty variant Video::cameraManufacturer + + \sa {QtMultimedia::CameraManufacturer} +*/ + +/*! + \qmlproperty variant Video::cameraModel + + \sa {QtMultimedia::CameraModel} +*/ + +/*! + \qmlproperty variant Video::event + + \sa {QtMultimedia::Event} +*/ + +/*! + \qmlproperty variant Video::subject + + \sa {QtMultimedia::Subject} +*/ + +/*! + \qmlproperty variant Video::orientation + + \sa {QtMultimedia::Orientation} +*/ + +/*! + \qmlproperty variant Video::exposureTime + + \sa {QtMultimedia::ExposureTime} +*/ + +/*! + \qmlproperty variant Video::fNumber + + \sa {QtMultimedia::FNumber} +*/ + +/*! + \qmlproperty variant Video::exposureProgram + + \sa {QtMultimedia::ExposureProgram} +*/ + +/*! + \qmlproperty variant Video::isoSpeedRatings + + \sa {QtMultimedia::ISOSpeedRatings} +*/ + +/*! + \qmlproperty variant Video::exposureBiasValue + + \sa {QtMultimedia::ExposureBiasValue} +*/ + +/*! + \qmlproperty variant Video::dateTimeDigitized + + \sa {QtMultimedia::DateTimeDigitized} +*/ + +/*! + \qmlproperty variant Video::subjectDistance + + \sa {QtMultimedia::SubjectDistance} +*/ + +/*! + \qmlproperty variant Video::meteringMode + + \sa {QtMultimedia::MeteringMode} +*/ + +/*! + \qmlproperty variant Video::lightSource + + \sa {QtMultimedia::LightSource} +*/ + +/*! + \qmlproperty variant Video::flash + + \sa {QtMultimedia::Flash} +*/ + +/*! + \qmlproperty variant Video::focalLength + + \sa {QtMultimedia::FocalLength} +*/ + +/*! + \qmlproperty variant Video::exposureMode + + \sa {QtMultimedia::ExposureMode} +*/ + +/*! + \qmlproperty variant Video::whiteBalance + + \sa {QtMultimedia::WhiteBalance} +*/ + +/*! + \qmlproperty variant Video::DigitalZoomRatio + + \sa {QtMultimedia::DigitalZoomRatio} +*/ + +/*! + \qmlproperty variant Video::focalLengthIn35mmFilm + + \sa {QtMultimedia::FocalLengthIn35mmFile} +*/ + +/*! + \qmlproperty variant Video::sceneCaptureType + + \sa {QtMultimedia::SceneCaptureType} +*/ + +/*! + \qmlproperty variant Video::gainControl + + \sa {QtMultimedia::GainControl} +*/ + +/*! + \qmlproperty variant Video::contrast + + \sa {QtMultimedia::contrast} +*/ + +/*! + \qmlproperty variant Video::saturation + + \sa {QtMultimedia::Saturation} +*/ + +/*! + \qmlproperty variant Video::sharpness + + \sa {QtMultimedia::Sharpness} +*/ + +/*! + \qmlproperty variant Video::deviceSettingDescription + + \sa {QtMultimedia::DeviceSettingDescription} +*/ + +#endif + +#include "moc_qdeclarativevideo_p.cpp" diff --git a/src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo_p.h b/src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo_p.h new file mode 100644 index 0000000..fb13519 --- /dev/null +++ b/src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo_p.h @@ -0,0 +1,204 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 QDECLARATIVEVIDEO_H +#define QDECLARATIVEVIDEO_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qdeclarativemediabase_p.h" + +#include + +#include +#include + + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QTimerEvent; +class QVideoSurfaceFormat; + + +class QDeclarativeVideo : public QDeclarativeItem, public QDeclarativeMediaBase +{ + Q_OBJECT + Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) + Q_PROPERTY(bool playing READ isPlaying WRITE setPlaying NOTIFY playingChanged) + Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged) + Q_PROPERTY(Status status READ status NOTIFY statusChanged) + Q_PROPERTY(int duration READ duration NOTIFY durationChanged) + Q_PROPERTY(int position READ position WRITE setPosition NOTIFY positionChanged) + Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged) + Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) + Q_PROPERTY(bool hasAudio READ hasAudio NOTIFY hasAudioChanged) + Q_PROPERTY(bool hasVideo READ hasVideo NOTIFY hasVideoChanged) + Q_PROPERTY(int bufferProgress READ bufferProgress NOTIFY bufferProgressChanged) + Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged) + Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged) + Q_PROPERTY(Error error READ error NOTIFY errorChanged) + Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) + Q_PROPERTY(FillMode fillMode READ fillMode WRITE setFillMode) + Q_ENUMS(FillMode) + Q_ENUMS(Status) + Q_ENUMS(Error) +public: + enum FillMode + { + Stretch = Qt::IgnoreAspectRatio, + PreserveAspectFit = Qt::KeepAspectRatio, + PreserveAspectCrop = Qt::KeepAspectRatioByExpanding + }; + + enum Status + { + UnknownStatus = QMediaPlayer::UnknownMediaStatus, + NoMedia = QMediaPlayer::NoMedia, + Loading = QMediaPlayer::LoadingMedia, + Loaded = QMediaPlayer::LoadedMedia, + Stalled = QMediaPlayer::StalledMedia, + Buffering = QMediaPlayer::BufferingMedia, + Buffered = QMediaPlayer::BufferedMedia, + EndOfMedia = QMediaPlayer::EndOfMedia, + InvalidMedia = QMediaPlayer::InvalidMedia + }; + + enum Error + { + NoError = QMediaPlayer::NoError, + ResourceError = QMediaPlayer::ResourceError, + FormatError = QMediaPlayer::FormatError, + NetworkError = QMediaPlayer::NetworkError, + AccessDenied = QMediaPlayer::AccessDeniedError, + ServiceMissing = QMediaPlayer::ServiceMissingError + }; + + QDeclarativeVideo(QDeclarativeItem *parent = 0); + ~QDeclarativeVideo(); + + bool hasAudio() const; + bool hasVideo() const; + + FillMode fillMode() const; + void setFillMode(FillMode mode); + + Status status() const; + Error error() const; + + void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); + +public Q_SLOTS: + void play(); + void pause(); + void stop(); + +Q_SIGNALS: + void sourceChanged(); + + void playingChanged(); + void pausedChanged(); + + void started(); + void resumed(); + void paused(); + void stopped(); + + void statusChanged(); + + void loaded(); + void buffering(); + void stalled(); + void buffered(); + void endOfMedia(); + + void durationChanged(); + void positionChanged(); + + void volumeChanged(); + void mutedChanged(); + void hasAudioChanged(); + void hasVideoChanged(); + + void bufferProgressChanged(); + + void seekableChanged(); + void playbackRateChanged(); + + void errorChanged(); + void error(QDeclarativeVideo::Error error, const QString &errorString); + +protected: + void geometryChanged(const QRectF &geometry, const QRectF &); + +private Q_SLOTS: + void _q_nativeSizeChanged(const QSizeF &size); + void _q_error(int, const QString &); + +private: + Q_DISABLE_COPY(QDeclarativeVideo) + + QGraphicsVideoItem *m_graphicsItem; + + Q_PRIVATE_SLOT(mediaBase(), void _q_stateChanged(QMediaPlayer::State)) + Q_PRIVATE_SLOT(mediaBase(), void _q_mediaStatusChanged(QMediaPlayer::MediaStatus)) + Q_PRIVATE_SLOT(mediaBase(), void _q_metaDataChanged()) + + inline QDeclarativeMediaBase *mediaBase() { return this; } +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeVideo)) + +QT_END_HEADER + +#endif diff --git a/src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject.cpp b/src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject.cpp new file mode 100644 index 0000000..e90cbd6 --- /dev/null +++ b/src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject.cpp @@ -0,0 +1,362 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 "qmetadatacontrolmetaobject_p.h" +#include + + +QT_BEGIN_NAMESPACE + +// copied from qmetaobject.cpp +// do not touch without touching the moc as well +enum PropertyFlags { + Invalid = 0x00000000, + Readable = 0x00000001, + Writable = 0x00000002, + Resettable = 0x00000004, + EnumOrFlag = 0x00000008, + StdCppSet = 0x00000100, +// Override = 0x00000200, + Designable = 0x00001000, + ResolveDesignable = 0x00002000, + Scriptable = 0x00004000, + ResolveScriptable = 0x00008000, + Stored = 0x00010000, + ResolveStored = 0x00020000, + Editable = 0x00040000, + ResolveEditable = 0x00080000, + User = 0x00100000, + ResolveUser = 0x00200000, + Notify = 0x00400000, + Dynamic = 0x00800000 +}; + +enum MethodFlags { + AccessPrivate = 0x00, + AccessProtected = 0x01, + AccessPublic = 0x02, + AccessMask = 0x03, //mask + + MethodMethod = 0x00, + MethodSignal = 0x04, + MethodSlot = 0x08, + MethodConstructor = 0x0c, + MethodTypeMask = 0x0c, + + MethodCompatibility = 0x10, + MethodCloned = 0x20, + MethodScriptable = 0x40 +}; + +struct QMetaObjectPrivate +{ + int revision; + int className; + int classInfoCount, classInfoData; + int methodCount, methodData; + int propertyCount, propertyData; + int enumeratorCount, enumeratorData; + int constructorCount, constructorData; + int flags; +}; + +static inline const QMetaObjectPrivate *priv(const uint* m_data) +{ return reinterpret_cast(m_data); } +// end of copied lines from qmetaobject.cpp + +namespace +{ + struct MetaDataKey + { + QtMultimedia::MetaData key; + const char *name; + }; + + const MetaDataKey qt_metaDataKeys[] = + { + { QtMultimedia::Title, "title" }, + { QtMultimedia::SubTitle, "subTitle" }, + { QtMultimedia::Author, "author" }, + { QtMultimedia::Comment, "comment" }, + { QtMultimedia::Description, "description" }, + { QtMultimedia::Category, "category" }, + { QtMultimedia::Genre, "genre" }, + { QtMultimedia::Year, "year" }, + { QtMultimedia::Date, "date" }, + { QtMultimedia::UserRating, "userRating" }, + { QtMultimedia::Keywords, "keywords" }, + { QtMultimedia::Language, "language" }, + { QtMultimedia::Publisher, "publisher" }, + { QtMultimedia::Copyright, "copyright" }, + { QtMultimedia::ParentalRating, "parentalRating" }, + { QtMultimedia::RatingOrganisation, "ratingOrganisation" }, + + // Media + { QtMultimedia::Size, "size" }, + { QtMultimedia::MediaType, "mediaType" }, +// { QtMultimedia::Duration, "duration" }, + + // Audio + { QtMultimedia::AudioBitRate, "audioBitRate" }, + { QtMultimedia::AudioCodec, "audioCodec" }, + { QtMultimedia::AverageLevel, "averageLevel" }, + { QtMultimedia::ChannelCount, "channelCount" }, + { QtMultimedia::PeakValue, "peakValue" }, + { QtMultimedia::SampleRate, "sampleRate" }, + + // Music + { QtMultimedia::AlbumTitle, "albumTitle" }, + { QtMultimedia::AlbumArtist, "albumArtist" }, + { QtMultimedia::ContributingArtist, "contributingArtist" }, + { QtMultimedia::Composer, "composer" }, + { QtMultimedia::Conductor, "conductor" }, + { QtMultimedia::Lyrics, "lyrics" }, + { QtMultimedia::Mood, "mood" }, + { QtMultimedia::TrackNumber, "trackNumber" }, + { QtMultimedia::TrackCount, "trackCount" }, + + { QtMultimedia::CoverArtUrlSmall, "coverArtUrlSmall" }, + { QtMultimedia::CoverArtUrlLarge, "coverArtUrlLarge" }, + + // Image/Video + { QtMultimedia::Resolution, "resolution" }, + { QtMultimedia::PixelAspectRatio, "pixelAspectRatio" }, + + // Video + { QtMultimedia::VideoFrameRate, "videoFrameRate" }, + { QtMultimedia::VideoBitRate, "videoBitRate" }, + { QtMultimedia::VideoCodec, "videoCodec" }, + + { QtMultimedia::PosterUrl, "posterUrl" }, + + // Movie + { QtMultimedia::ChapterNumber, "chapterNumber" }, + { QtMultimedia::Director, "director" }, + { QtMultimedia::LeadPerformer, "leadPerformer" }, + { QtMultimedia::Writer, "writer" }, + + // Photos + { QtMultimedia::CameraManufacturer, "cameraManufacturer" }, + { QtMultimedia::CameraModel, "cameraModel" }, + { QtMultimedia::Event, "event" }, + { QtMultimedia::Subject, "subject" }, + { QtMultimedia::Orientation, "orientation" }, + { QtMultimedia::ExposureTime, "exposureTime" }, + { QtMultimedia::FNumber, "fNumber" }, + { QtMultimedia::ExposureProgram, "exposureProgram" }, + { QtMultimedia::ISOSpeedRatings, "isoSpeedRatings" }, + { QtMultimedia::ExposureBiasValue, "exposureBiasValue" }, + { QtMultimedia::DateTimeOriginal, "dateTimeOriginal" }, + { QtMultimedia::DateTimeDigitized, "dateTimeDigitized" }, + { QtMultimedia::SubjectDistance, "subjectDistance" }, + { QtMultimedia::MeteringMode, "meteringMode" }, + { QtMultimedia::LightSource, "lightSource" }, + { QtMultimedia::Flash, "flash" }, + { QtMultimedia::FocalLength, "focalLength" }, + { QtMultimedia::ExposureMode, "exposureMode" }, + { QtMultimedia::WhiteBalance, "whiteBalance" }, + { QtMultimedia::DigitalZoomRatio, "digitalZoomRatio" }, + { QtMultimedia::FocalLengthIn35mmFilm, "focalLengthIn35mmFilm" }, + { QtMultimedia::SceneCaptureType, "sceneCaptureType" }, + { QtMultimedia::GainControl, "gainControl" }, + { QtMultimedia::Contrast, "contrast" }, + { QtMultimedia::Saturation, "saturation" }, + { QtMultimedia::Sharpness, "sharpness" }, + { QtMultimedia::DeviceSettingDescription, "deviceSettingDescription" } + }; + + class QMetaDataControlObject : public QObject + { + public: + inline QObjectData *data() { return d_ptr.data(); } + }; +} + +QMetaDataControlMetaObject::QMetaDataControlMetaObject(QMetaDataControl *control, QObject *object) + : m_control(control) + , m_object(object) + , m_string(0) + , m_data(0) + , m_propertyOffset(0) + , m_signalOffset(0) +{ + const QMetaObject *superClass = m_object->metaObject(); + + const int propertyCount = sizeof(qt_metaDataKeys) / sizeof(MetaDataKey); + const int dataSize = sizeof(uint) + * (13 // QMetaObjectPrivate members. + + 5 // 5 members per signal. + + 4 * propertyCount // 3 members per property + 1 notify signal per property. + + 1); // Terminating value. + + m_data = reinterpret_cast(qMalloc(dataSize)); + + QMetaObjectPrivate *pMeta = reinterpret_cast(m_data); + + pMeta->revision = 3; + pMeta->className = 0; + pMeta->classInfoCount = 0; + pMeta->classInfoData = 0; + pMeta->methodCount = 1; + pMeta->methodData = 13; + pMeta->propertyCount = propertyCount; + pMeta->propertyData = 18; + pMeta->enumeratorCount = 0; + pMeta->enumeratorData = 0; + pMeta->constructorCount = 0; + pMeta->constructorData = 0; + pMeta->flags = 0x01; // Dynamic meta object flag. + + const int classNameSize = qstrlen(superClass->className()) + 1; + + int stringIndex = classNameSize + 1; + + // __metaDataChanged() signal. + static const char *changeSignal = "__metaDataChanged()"; + const int changeSignalSize = qstrlen(changeSignal) + 1; + + m_data[13] = stringIndex; // Signature. + m_data[14] = classNameSize; // Parameters. + m_data[15] = classNameSize; // Type. + m_data[16] = classNameSize; // Tag. + m_data[17] = MethodSignal | AccessProtected; // Flags. + + stringIndex += changeSignalSize; + + const char *qvariantName = "QVariant"; + const int qvariantSize = qstrlen(qvariantName) + 1; + const int qvariantIndex = stringIndex; + + stringIndex += qvariantSize; + + // Properties. + for (int i = 0; i < propertyCount; ++i) { + m_data[18 + 3 * i] = stringIndex; // Name. + m_data[19 + 3 * i] = qvariantIndex; // Type. + m_data[20 + 3 * i] + = Readable | Writable | Notify | Dynamic | (0xffffffff << 24); // Flags. + m_data[18 + propertyCount * 3 + i] = 0; // Notify signal. + + stringIndex += qstrlen(qt_metaDataKeys[i].name) + 1; + } + + // Terminating value. + m_data[18 + propertyCount * 4] = 0; + + // Build string. + m_string = reinterpret_cast(qMalloc(stringIndex + 1)); + + // Class name. + qMemCopy(m_string, superClass->className(), classNameSize); + + stringIndex = classNameSize; + + // Null m_string. + m_string[stringIndex] = '\0'; + stringIndex += 1; + + // __metaDataChanged() signal. + qMemCopy(m_string + stringIndex, changeSignal, changeSignalSize); + stringIndex += changeSignalSize; + + qMemCopy(m_string + stringIndex, qvariantName, qvariantSize); + stringIndex += qvariantSize; + + // Properties. + for (int i = 0; i < propertyCount; ++i) { + const int propertyNameSize = qstrlen(qt_metaDataKeys[i].name) + 1; + + qMemCopy(m_string + stringIndex, qt_metaDataKeys[i].name, propertyNameSize); + stringIndex += propertyNameSize; + } + + // Terminating character. + m_string[stringIndex] = '\0'; + + d.superdata = superClass; + d.stringdata = m_string; + d.data = m_data; + d.extradata = 0; + + static_cast(m_object)->data()->metaObject = this; + + m_propertyOffset = propertyOffset(); + m_signalOffset = methodOffset(); +} + +QMetaDataControlMetaObject::~QMetaDataControlMetaObject() +{ + static_cast(m_object)->data()->metaObject = 0; + + qFree(m_data); + qFree(m_string); +} + +int QMetaDataControlMetaObject::metaCall(QMetaObject::Call c, int id, void **a) +{ + if (c == QMetaObject::ReadProperty && id >= m_propertyOffset) { + int propId = id - m_propertyOffset; + + *reinterpret_cast(a[0]) = m_control->metaData(qt_metaDataKeys[propId].key); + + return -1; + } else if (c == QMetaObject::WriteProperty && id >= m_propertyOffset) { + int propId = id - m_propertyOffset; + + m_control->setMetaData(qt_metaDataKeys[propId].key, *reinterpret_cast(a[0])); + + return -1; + } else { + return m_object->qt_metacall(c, id, a); + } +} + +int QMetaDataControlMetaObject::createProperty(const char *, const char *) +{ + return -1; +} + +void QMetaDataControlMetaObject::metaDataChanged() +{ + activate(m_object, m_signalOffset, 0); +} + +QT_END_NAMESPACE diff --git a/src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject_p.h b/src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject_p.h new file mode 100644 index 0000000..c381f2d --- /dev/null +++ b/src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject_p.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 QMETADATACONTROLMETAOBJECT_P_H +#define QMETADATACONTROLMETAOJBECT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QMetaDataControl; + +class QMetaDataControlMetaObject : public QAbstractDynamicMetaObject +{ +public: + QMetaDataControlMetaObject(QMetaDataControl *control, QObject *object); + ~QMetaDataControlMetaObject(); + + int metaCall(QMetaObject::Call call, int _id, void **arguments); + int createProperty(const char *, const char *); + + void metaDataChanged(); + +private: + QMetaDataControl *m_control; + QObject *m_object; + char *m_string; + uint *m_data; + + int m_propertyOffset; + int m_signalOffset; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif diff --git a/src/src.pro b/src/src.pro index 2b9dc30..ebfd44b 100644 --- a/src/src.pro +++ b/src/src.pro @@ -116,7 +116,6 @@ src_declarative.target = sub-declarative src_phonon.depends += src_dbus } contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, opengles2): src_plugins.depends += src_opengl - contains(QT_CONFIG, declarative): src_multimedia.depends += src_declarative } !symbian { diff --git a/tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro b/tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro index 13bf606..bfc2223 100644 --- a/tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro +++ b/tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro @@ -1,4 +1,14 @@ load(qttest_p4) -SOURCES += tst_qdeclarativeaudio.cpp + +HEADERS += \ + $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio_p.h \ + $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase_p.h \ + $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject_p.h + +SOURCES += \ + tst_qdeclarativeaudio.cpp \ + $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio.cpp \ + $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase.cpp \ + $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject.cpp QT += multimedia declarative diff --git a/tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp b/tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp index 11439ce..55c7135 100644 --- a/tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp +++ b/tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp @@ -41,7 +41,7 @@ #include -#include +#include "../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio_p.h" #include #include diff --git a/tests/auto/qdeclarativevideo/qdeclarativevideo.pro b/tests/auto/qdeclarativevideo/qdeclarativevideo.pro index d946bb0..497ee0e 100644 --- a/tests/auto/qdeclarativevideo/qdeclarativevideo.pro +++ b/tests/auto/qdeclarativevideo/qdeclarativevideo.pro @@ -1,4 +1,14 @@ load(qttest_p4) -SOURCES += tst_qdeclarativevideo.cpp + +HEADERS += \ + $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo_p.h \ + $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase_p.h \ + $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject_p.h + +SOURCES += \ + tst_qdeclarativevideo.cpp \ + $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo.cpp \ + $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase.cpp \ + $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject.cpp QT += multimedia declarative diff --git a/tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp b/tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp index 9fc1e70..d3bfc38 100644 --- a/tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp +++ b/tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp @@ -41,7 +41,7 @@ #include -#include +#include "../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo_p.h" #include #include -- cgit v0.12 From 399858f133819eac1d7a71029cc132c76a6e0bbc Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Wed, 3 Mar 2010 15:18:00 +1000 Subject: Undo a doc revert. Reviewed-by: Dmytro Poplavskiy --- src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp b/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp index 863b6d4..d52aa75 100644 --- a/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp +++ b/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp @@ -50,7 +50,7 @@ static int wuchi = qRegisterMetaType(); /*! - \class gstreamer::QGstreamerMessage + \class QGstreamerMessage \internal */ -- cgit v0.12 From a8d10340dce323030e6e3b197eb1849af303f4d0 Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Wed, 3 Mar 2010 16:03:26 +1000 Subject: QT7 mediaservice; Fix memory leak Reviewed-by: Dmytro Poplavskiy --- src/plugins/mediaservices/qt7/mediaplayer/qt7playermetadata.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/mediaservices/qt7/mediaplayer/qt7playermetadata.mm b/src/plugins/mediaservices/qt7/mediaplayer/qt7playermetadata.mm index b046672..59d01a2 100644 --- a/src/plugins/mediaservices/qt7/mediaplayer/qt7playermetadata.mm +++ b/src/plugins/mediaservices/qt7/mediaplayer/qt7playermetadata.mm @@ -251,6 +251,7 @@ void QT7PlayerMetaDataControl::updateTags() readFormattedData(metaDataRef, kQTMetaDataStorageFormatiTunes, metaMap); } #else + AutoReleasePool pool; NSString *name = [movie attributeForKey:@"QTMovieDisplayNameAttribute"]; metaMap.insert(QLatin1String("nam"), QString::fromUtf8([name UTF8String])); #endif // QUICKTIME_C_API_AVAILABLE -- cgit v0.12 From 4690084e9f3fbf3635aa3fb6a8025ae046672aea Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Wed, 3 Mar 2010 17:14:07 +1000 Subject: Move JS global scope to top of the QML scope chain QT-2787 --- src/declarative/qml/qdeclarativecompiler.cpp | 62 +++++++++++----------- src/declarative/qml/qdeclarativecompiler_p.h | 2 +- src/declarative/qml/qdeclarativecontext.cpp | 3 ++ src/declarative/qml/qdeclarativeexpression.cpp | 5 ++ .../qml/qdeclarativeglobalscriptclass.cpp | 15 ++++-- .../qml/qdeclarativeglobalscriptclass_p.h | 7 ++- .../qdeclarativeecmascript/data/scope.3.qml | 13 +++++ .../tst_qdeclarativeecmascript.cpp | 10 ++++ .../data/invalidID.2.errors.txt | 2 +- .../data/invalidID.6.errors.txt | 2 +- .../data/invalidID.7.errors.txt | 1 + .../qdeclarativelanguage/data/invalidID.7.qml | 5 ++ .../data/invalidID.8.errors.txt | 1 + .../qdeclarativelanguage/data/invalidID.8.qml | 5 ++ .../data/invalidID.9.errors.txt | 1 + .../qdeclarativelanguage/data/invalidID.9.qml | 5 ++ .../qdeclarativelanguage/data/invalidID.errors.txt | 2 +- .../tst_qdeclarativelanguage.cpp | 6 +-- 18 files changed, 103 insertions(+), 44 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scope.3.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.qml diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index a9809c0..1eea012 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -65,6 +65,7 @@ #include "qdeclarativescriptparser_p.h" #include "qdeclarativebinding_p.h" #include "qdeclarativecompiledbindings_p.h" +#include "qdeclarativeglobalscriptclass_p.h" #include @@ -113,32 +114,6 @@ QList QDeclarativeCompiler::errors() const } /*! - Returns true if \a val is a legal object id, false otherwise. - - Legal ids must start with a lower-case letter or underscore, and contain only - letters, numbers and underscores. -*/ -bool QDeclarativeCompiler::isValidId(const QString &val) -{ - if (val.isEmpty()) - return false; - - if (val.at(0).isLetter() && !val.at(0).isLower()) { - qWarning().nospace() << "id " << val << " is invalid: ids cannot start with uppercase letters"; - return false; - } - - QChar u(QLatin1Char('_')); - for (int ii = 0; ii < val.count(); ++ii) - if (val.at(ii) != u && - ((ii == 0 && !val.at(ii).isLetter()) || - (ii != 0 && !val.at(ii).isLetterOrNumber())) ) - return false; - - return true; -} - -/*! Returns true if \a name refers to an attached property, false otherwise. Attached property names are those that start with a capital letter. @@ -1140,10 +1115,11 @@ bool QDeclarativeCompiler::buildComponent(QDeclarativeParser::Object *obj, if (obj->properties.count()) idProp = *obj->properties.begin(); - if (idProp && (idProp->value || idProp->values.count() > 1 || !isValidId(idProp->values.first()->primitive()))) - COMPILE_EXCEPTION(idProp, QCoreApplication::translate("QDeclarativeCompiler","Invalid component id specification")); - if (idProp) { + if (idProp->value || idProp->values.count() > 1 || idProp->values.at(0)->object) + COMPILE_EXCEPTION(idProp, QCoreApplication::translate("QDeclarativeCompiler","Invalid component id specification")); + COMPILE_CHECK(checkValidId(idProp->values.first(), idProp->values.first()->primitive())); + QString idVal = idProp->values.first()->primitive(); if (compileState.ids.contains(idVal)) @@ -1726,8 +1702,7 @@ bool QDeclarativeCompiler::buildIdProperty(QDeclarativeParser::Property *prop, QDeclarativeParser::Value *idValue = prop->values.at(0); QString val = idValue->primitive(); - if (!isValidId(val)) - COMPILE_EXCEPTION(prop, QCoreApplication::translate("QDeclarativeCompiler","\"%1\" is not a valid object id").arg(val)); + COMPILE_CHECK(checkValidId(idValue, val)); // We disallow id's that conflict with import prefixes and types QDeclarativeEnginePrivate::ImportedNamespace *ns = 0; @@ -2476,6 +2451,31 @@ bool QDeclarativeCompiler::buildDynamicMeta(QDeclarativeParser::Object *obj, Dyn return true; } +bool QDeclarativeCompiler::checkValidId(QDeclarativeParser::Value *v, const QString &val) +{ + if (val.isEmpty()) + COMPILE_EXCEPTION(v, QCoreApplication::translate("QDeclarativeCompiler", "Invalid empty ID")); + + if (val.at(0).isLetter() && !val.at(0).isLower()) + COMPILE_EXCEPTION(v, QCoreApplication::translate("QDeclarativeCompiler", "IDs cannot start with an uppercase letter")); + + QChar u(QLatin1Char('_')); + for (int ii = 0; ii < val.count(); ++ii) { + + if (ii == 0 && !val.at(ii).isLetter() && val.at(ii) != u) { + COMPILE_EXCEPTION(v, QCoreApplication::translate("QDeclarativeCompiler", "IDs must start with a letter or underscore")); + } else if (ii != 0 && !val.at(ii).isLetterOrNumber() && val.at(ii) != u) { + COMPILE_EXCEPTION(v, QCoreApplication::translate("QDeclarativeCompiler", "IDs must contain only letters, numbers, and underscores")); + } + + } + + if (QDeclarativeEnginePrivate::get(engine)->globalClass->illegalNames().contains(val)) + COMPILE_EXCEPTION(v, QCoreApplication::translate("QDeclarativeCompiler", "ID illegally masks global JavaScript property")); + + return true; +} + #include static QStringList astNodeToStringList(QDeclarativeJS::AST::Node *node) diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h index 93a3f83..f8ada95 100644 --- a/src/declarative/qml/qdeclarativecompiler_p.h +++ b/src/declarative/qml/qdeclarativecompiler_p.h @@ -155,7 +155,6 @@ public: bool isError() const; QList errors() const; - static bool isValidId(const QString &); static bool isAttachedPropertyName(const QByteArray &); static bool isSignalPropertyName(const QByteArray &); @@ -247,6 +246,7 @@ private: QDeclarativeParser::Object *obj, const QDeclarativeParser::Object::DynamicProperty &); bool completeComponentBuild(); + bool checkValidId(QDeclarativeParser::Value *, const QString &); void genObject(QDeclarativeParser::Object *obj); diff --git a/src/declarative/qml/qdeclarativecontext.cpp b/src/declarative/qml/qdeclarativecontext.cpp index 57ef90c..35e7a77 100644 --- a/src/declarative/qml/qdeclarativecontext.cpp +++ b/src/declarative/qml/qdeclarativecontext.cpp @@ -47,6 +47,7 @@ #include "qdeclarativeengine.h" #include "qdeclarativecompiledbindings_p.h" #include "qdeclarativeinfo.h" +#include "qdeclarativeglobalscriptclass_p.h" #include #include @@ -74,7 +75,9 @@ void QDeclarativeContextPrivate::addScript(const QDeclarativeParser::Object::Scr QScriptEngine *scriptEngine = QDeclarativeEnginePrivate::getScriptEngine(engine); QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(scriptEngine); + scriptContext->pushScope(enginePriv->contextClass->newContext(q, scopeObject)); + scriptContext->pushScope(enginePriv->globalClass->globalObject()); QScriptValue scope = scriptEngine->newObject(); scriptContext->setActivationObject(scope); diff --git a/src/declarative/qml/qdeclarativeexpression.cpp b/src/declarative/qml/qdeclarativeexpression.cpp index ae1e790..0030615 100644 --- a/src/declarative/qml/qdeclarativeexpression.cpp +++ b/src/declarative/qml/qdeclarativeexpression.cpp @@ -46,6 +46,7 @@ #include "qdeclarativecontext_p.h" #include "qdeclarativerewrite_p.h" #include "qdeclarativecompiler_p.h" +#include "qdeclarativeglobalscriptclass_p.h" #include #include @@ -135,6 +136,7 @@ void QDeclarativeExpressionPrivate::init(QDeclarativeContext *ctxt, void *expr, if (!dd->cachedClosures.at(progIdx)) { QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(scriptEngine); scriptContext->pushScope(ep->contextClass->newSharedContext()); + scriptContext->pushScope(ep->globalClass->globalObject()); dd->cachedClosures[progIdx] = new QScriptValue(scriptEngine->evaluate(data->expression, data->url, data->line)); scriptEngine->popContext(); } @@ -169,6 +171,7 @@ QScriptValue QDeclarativeExpressionPrivate::evalInObjectScope(QDeclarativeContex QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(context->engine()); QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(&ep->scriptEngine); scriptContext->pushScope(ep->contextClass->newContext(context, object)); + scriptContext->pushScope(ep->globalClass->globalObject()); QScriptValue rv = ep->scriptEngine.evaluate(program); ep->scriptEngine.popContext(); return rv; @@ -180,6 +183,7 @@ QScriptValue QDeclarativeExpressionPrivate::evalInObjectScope(QDeclarativeContex QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(context->engine()); QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(&ep->scriptEngine); scriptContext->pushScope(ep->contextClass->newContext(context, object)); + scriptContext->pushScope(ep->globalClass->globalObject()); QScriptValue rv = ep->scriptEngine.evaluate(program); ep->scriptEngine.popContext(); return rv; @@ -335,6 +339,7 @@ QVariant QDeclarativeExpressionPrivate::evalQtScript(QObject *secondaryScope, bo QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(scriptEngine); scriptContext->pushScope(ep->contextClass->newContext(data->context(), data->me)); + scriptContext->pushScope(ep->globalClass->globalObject()); if (data->expressionRewritten) { data->expressionFunction = scriptEngine->evaluate(data->expression, diff --git a/src/declarative/qml/qdeclarativeglobalscriptclass.cpp b/src/declarative/qml/qdeclarativeglobalscriptclass.cpp index 5b06b42..9ee2fe5 100644 --- a/src/declarative/qml/qdeclarativeglobalscriptclass.cpp +++ b/src/declarative/qml/qdeclarativeglobalscriptclass.cpp @@ -53,15 +53,17 @@ QT_BEGIN_NAMESPACE QDeclarativeGlobalScriptClass::QDeclarativeGlobalScriptClass(QScriptEngine *engine) : QScriptClass(engine) { - QScriptValue v = engine->newObject(); - globalObject = engine->globalObject(); + QScriptValue globalObject = engine->globalObject(); + m_globalObject = engine->newObject(); QScriptValueIterator iter(globalObject); while (iter.hasNext()) { iter.next(); - v.setProperty(iter.scriptName(), iter.value()); + m_globalObject.setProperty(iter.scriptName(), iter.value()); + m_illegalNames.insert(iter.name()); } + QScriptValue v = engine->newObject(); v.setScriptClass(this); engine->setGlobalObject(v); } @@ -101,12 +103,14 @@ void QDeclarativeGlobalScriptClass::setProperty(QScriptValue &object, engine()->currentContext()->throwError(error); } +/* This method is for the use of tst_qdeclarativeecmascript::callQtInvokables() only */ void QDeclarativeGlobalScriptClass::explicitSetProperty(const QString &name, const QScriptValue &value) { + QScriptValue globalObject = engine()->globalObject(); + QScriptValue v = engine()->newObject(); - globalObject = engine()->globalObject(); - QScriptValueIterator iter(globalObject); + QScriptValueIterator iter(v); while (iter.hasNext()) { iter.next(); v.setProperty(iter.scriptName(), iter.value()); @@ -114,6 +118,7 @@ void QDeclarativeGlobalScriptClass::explicitSetProperty(const QString &name, con v.setProperty(name, value); v.setScriptClass(this); + engine()->setGlobalObject(v); } diff --git a/src/declarative/qml/qdeclarativeglobalscriptclass_p.h b/src/declarative/qml/qdeclarativeglobalscriptclass_p.h index a33cf5e..1b34aee 100644 --- a/src/declarative/qml/qdeclarativeglobalscriptclass_p.h +++ b/src/declarative/qml/qdeclarativeglobalscriptclass_p.h @@ -54,6 +54,7 @@ // #include +#include QT_BEGIN_NAMESPACE @@ -74,8 +75,12 @@ public: void explicitSetProperty(const QString &, const QScriptValue &); + const QScriptValue &globalObject() const { return m_globalObject; } + const QSet &illegalNames() const { return m_illegalNames; } + private: - QScriptValue globalObject; + QSet m_illegalNames; + QScriptValue m_globalObject; }; QT_END_NAMESPACE diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scope.3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scope.3.qml new file mode 100644 index 0000000..4ad7f34 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scope.3.qml @@ -0,0 +1,13 @@ +import Qt 4.6 + +Item { + id: root + + property int foo: 12 + property int console: 11 + + property bool test1: foo == 12 + property bool test2: console != 11 + property bool test3: root.console == 11 +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 85a3ef3..e45f0fa 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -729,6 +729,16 @@ void tst_qdeclarativeecmascript::scope() QCOMPARE(object->property("test5").toInt(), 24); QCOMPARE(object->property("test6").toInt(), 24); } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scope.3.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test1").toBool(), true); + QCOMPARE(object->property("test2").toBool(), true); + QCOMPARE(object->property("test3").toBool(), true); + } } /* diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.2.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.2.errors.txt index 56e3eeb..2c6b8bf 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.2.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.2.errors.txt @@ -1,2 +1,2 @@ -3:5:"" is not a valid object id +3:9:Invalid empty ID diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.6.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.6.errors.txt index 160e8b5..7251de1 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.6.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.6.errors.txt @@ -1 +1 @@ -3:5:"StartsWithUpperCase" is not a valid object id +3:9:IDs cannot start with an uppercase letter diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.errors.txt new file mode 100644 index 0000000..e4fd1db --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.errors.txt @@ -0,0 +1 @@ +3:9:ID illegally masks global JavaScript property diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.qml new file mode 100644 index 0000000..d4bc539 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.qml @@ -0,0 +1,5 @@ +import Test 1.0 +MyQmlObject { + id: gc +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.errors.txt new file mode 100644 index 0000000..b03ec6c --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.errors.txt @@ -0,0 +1 @@ +3:9:IDs must contain only letters, numbers, and underscores diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.qml new file mode 100644 index 0000000..1ea615c --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.qml @@ -0,0 +1,5 @@ +import Test 1.0 +MyQmlObject { + id: hello.world +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.errors.txt new file mode 100644 index 0000000..c010e79 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.errors.txt @@ -0,0 +1 @@ +3:9:IDs must start with a letter or underscore diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.qml new file mode 100644 index 0000000..57474b7 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.qml @@ -0,0 +1,5 @@ +import Test 1.0 +MyQmlObject { + id: "3hello" +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.errors.txt index 1ca678c..c010e79 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.errors.txt @@ -1 +1 @@ -3:5:"1" is not a valid object id +3:9:IDs must start with a letter or underscore diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index 870f3fe..5d480fa 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -232,6 +232,9 @@ void tst_qdeclarativelanguage::errors_data() QTest::newRow("invalidID.4") << "invalidID.4.qml" << "invalidID.4.errors.txt" << false; QTest::newRow("invalidID.5") << "invalidID.5.qml" << "invalidID.5.errors.txt" << false; QTest::newRow("invalidID.6") << "invalidID.6.qml" << "invalidID.6.errors.txt" << false; + QTest::newRow("invalidID.7") << "invalidID.7.qml" << "invalidID.7.errors.txt" << false; + QTest::newRow("invalidID.8") << "invalidID.8.qml" << "invalidID.8.errors.txt" << false; + QTest::newRow("invalidID.9") << "invalidID.9.qml" << "invalidID.9.errors.txt" << false; QTest::newRow("unsupportedProperty") << "unsupportedProperty.qml" << "unsupportedProperty.errors.txt" << false; QTest::newRow("nullDotProperty") << "nullDotProperty.qml" << "nullDotProperty.errors.txt" << true; @@ -327,9 +330,6 @@ void tst_qdeclarativelanguage::errors() QFETCH(QString, errorFile); QFETCH(bool, create); - if (file == "invalidID.6.qml") - QTest::ignoreMessage(QtWarningMsg, "id \"StartsWithUpperCase\" is invalid: ids cannot start with uppercase letters"); - QDeclarativeComponent component(&engine, TEST_FILE(file)); if(create) { -- cgit v0.12 From 28803715e55b3dc0b017f8e3731920516959894f Mon Sep 17 00:00:00 2001 From: Janne Anttila Date: Wed, 3 Mar 2010 09:16:15 +0200 Subject: Reduced S60 softkey flickering caused by softkey image support. EikSoftkeyImage::SetLabel call seems to clear and redraw the softkeys every time when called. This commit removes the unnecessary calls to the method if given CBA is already in text mode. Reviewed-By: Sami Merila --- src/gui/kernel/qsoftkeymanager_s60.cpp | 13 ++++++++++--- src/gui/kernel/qsoftkeymanager_s60_p.h | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qsoftkeymanager_s60.cpp b/src/gui/kernel/qsoftkeymanager_s60.cpp index dedf0a1..3a0304c 100644 --- a/src/gui/kernel/qsoftkeymanager_s60.cpp +++ b/src/gui/kernel/qsoftkeymanager_s60.cpp @@ -60,7 +60,7 @@ const int LSK_POSITION = 0; const int MSK_POSITION = 3; const int RSK_POSITION = 2; -QSoftKeyManagerPrivateS60::QSoftKeyManagerPrivateS60() +QSoftKeyManagerPrivateS60::QSoftKeyManagerPrivateS60() : cbaHasImage(4) // 4 since MSK position index is 3 { cachedCbaIconSize[0] = QSize(0,0); cachedCbaIconSize[1] = QSize(0,0); @@ -265,10 +265,14 @@ bool QSoftKeyManagerPrivateS60::setSoftkeyImage(CEikButtonGroupContainer *cba, myimage->SetPicture( nBitmap, nMask ); // nBitmap and nMask ownership transfered EikSoftkeyImage::SetImage(cba, *myimage, left); // Takes myimage ownership + cbaHasImage[position] = true; ret = true; } else { // Restore softkey to text based - EikSoftkeyImage::SetLabel(cba, left); + if (cbaHasImage[position]) { + EikSoftkeyImage::SetLabel(cba, left); + cbaHasImage[position] = false; + } } } return ret; @@ -326,7 +330,10 @@ bool QSoftKeyManagerPrivateS60::setRightSoftkey(CEikButtonGroupContainer &cba) if (windowType != Qt::Dialog && windowType != Qt::Popup) { QString text(QSoftKeyManager::tr("Exit")); TPtrC nativeText = qt_QString2TPtrC(text); - EikSoftkeyImage::SetLabel(&cba, false); + if (cbaHasImage[RSK_POSITION]) { + EikSoftkeyImage::SetLabel(&cba, false); + cbaHasImage[RSK_POSITION] = false; + } setNativeSoftkey(cba, RSK_POSITION, EAknSoftkeyExit, nativeText); return true; } diff --git a/src/gui/kernel/qsoftkeymanager_s60_p.h b/src/gui/kernel/qsoftkeymanager_s60_p.h index 823a2db..a5e5016 100644 --- a/src/gui/kernel/qsoftkeymanager_s60_p.h +++ b/src/gui/kernel/qsoftkeymanager_s60_p.h @@ -53,6 +53,7 @@ // We mean it. // +#include "qbitarray.h" #include "private/qobject_p.h" #include "private/qsoftkeymanager_common_p.h" @@ -98,6 +99,7 @@ private: private: QHash realSoftKeyActions; QSize cachedCbaIconSize[4]; + QBitArray cbaHasImage; }; -- cgit v0.12 From f7b64c3f9bb76bc8dbd96852e54e698af68331cb Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Wed, 3 Mar 2010 16:04:47 +1000 Subject: QSound OSX; Fix memory leak. Reviewed-by:Dmytro Poplavskiy --- src/gui/kernel/qsound_mac.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/kernel/qsound_mac.mm b/src/gui/kernel/qsound_mac.mm index 61e42ba..71fd663 100644 --- a/src/gui/kernel/qsound_mac.mm +++ b/src/gui/kernel/qsound_mac.mm @@ -174,6 +174,7 @@ NSSound *QAuServerMac::createNSSound(const QString &fileName, QSound *qSound) NSSound * const nsSound = [[NSSound alloc] initWithContentsOfFile: nsFileName byReference:YES]; QMacSoundDelegate * const delegate = [[QMacSoundDelegate alloc] initWithQSound:qSound:this]; [nsSound setDelegate:delegate]; + [nsFileName release]; return nsSound; } -- cgit v0.12 From e94d0397ea69573d170fd9bc5706e392d9885dbe Mon Sep 17 00:00:00 2001 From: Adrian Constantin Date: Wed, 3 Mar 2010 09:51:44 +0200 Subject: Fix build break in qapplication_x11.cpp. Reviewed-by: TrustMe --- src/gui/kernel/qapplication_x11.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index 15761f4..121e9ec 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -96,6 +96,11 @@ extern "C" { } #endif +#ifndef QT_GUI_DOUBLE_CLICK_RADIUS +#define QT_GUI_DOUBLE_CLICK_RADIUS 5 +#endif + + //#define ALIEN_DEBUG #if !defined(QT_NO_GLIB) -- cgit v0.12 From ef785f047adf6f559c282d67e627b78b75a7b9ef Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Wed, 3 Mar 2010 17:53:05 +1000 Subject: QDeclarativeProperty::read() returns a QObjectStar when accessing a QObject property QT-2793 --- src/declarative/qml/qdeclarativeproperty.cpp | 11 +++++-- .../qdeclarativeproperty/data/TestType.qml | 6 ++++ .../data/readSynthesizedObject.qml | 9 ++++++ .../qdeclarativeproperty/qdeclarativeproperty.pro | 2 ++ .../tst_qdeclarativeproperty.cpp | 37 ++++++++++++++++++++++ 5 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativeproperty/data/TestType.qml create mode 100644 tests/auto/declarative/qdeclarativeproperty/data/readSynthesizedObject.qml diff --git a/src/declarative/qml/qdeclarativeproperty.cpp b/src/declarative/qml/qdeclarativeproperty.cpp index e1ec2cd..521c241 100644 --- a/src/declarative/qml/qdeclarativeproperty.cpp +++ b/src/declarative/qml/qdeclarativeproperty.cpp @@ -793,7 +793,7 @@ QVariant QDeclarativeProperty::read(QObject *object, const QString &name, QDecla QVariant QDeclarativePropertyPrivate::readValueProperty() { - if(isValueType()) { + if (isValueType()) { QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(context); QDeclarativeValueType *valueType = 0; @@ -809,13 +809,20 @@ QVariant QDeclarativePropertyPrivate::readValueProperty() if (!ep) delete valueType; return rv; - } else if(core.flags & QDeclarativePropertyCache::Data::IsQList) { + } else if (core.flags & QDeclarativePropertyCache::Data::IsQList) { QDeclarativeListProperty prop; void *args[] = { &prop, 0 }; QMetaObject::metacall(object, QMetaObject::ReadProperty, core.coreIndex, args); return QVariant::fromValue(QDeclarativeListReferencePrivate::init(prop, core.propType, engine)); + } else if (core.flags & QDeclarativePropertyCache::Data::IsQObjectDerived) { + + QObject *rv = 0; + void *args[] = { &rv, 0 }; + QMetaObject::metacall(object, QMetaObject::ReadProperty, core.coreIndex, args); + return QVariant::fromValue(rv); + } else { return object->metaObject()->property(core.coreIndex).read(object.data()); diff --git a/tests/auto/declarative/qdeclarativeproperty/data/TestType.qml b/tests/auto/declarative/qdeclarativeproperty/data/TestType.qml new file mode 100644 index 0000000..1dfb3e1 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeproperty/data/TestType.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +QtObject { + property int a: 10 +} + diff --git a/tests/auto/declarative/qdeclarativeproperty/data/readSynthesizedObject.qml b/tests/auto/declarative/qdeclarativeproperty/data/readSynthesizedObject.qml new file mode 100644 index 0000000..8085db2 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeproperty/data/readSynthesizedObject.qml @@ -0,0 +1,9 @@ +import Qt 4.6 + +QtObject { + property TestType test + + test: TestType { + property int b: 19 + } +} diff --git a/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro b/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro index 22e50cc..af1e1b6 100644 --- a/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro +++ b/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro @@ -3,3 +3,5 @@ contains(QT_CONFIG,declarative): QT += declarative macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativeproperty.cpp + +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp index 0333d98..9b8a643 100644 --- a/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp +++ b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp @@ -46,6 +46,14 @@ #include #include #include +#include +#include + +inline QUrl TEST_FILE(const QString &filename) +{ + QFileInfo fileInfo(__FILE__); + return QUrl::fromLocalFile(fileInfo.absoluteDir().filePath(QLatin1String("data/") + filename)); +} class MyQmlObject : public QObject { @@ -181,6 +189,7 @@ class PropertyObject : public QObject Q_PROPERTY(QUrl url READ url WRITE setUrl); Q_PROPERTY(int resettableProperty READ resettableProperty WRITE setResettableProperty RESET resetProperty); Q_PROPERTY(int propertyWithNotify READ propertyWithNotify WRITE setPropertyWithNotify NOTIFY oddlyNamedNotifySignal) + Q_PROPERTY(MyQmlObject *qmlObject READ qmlObject); Q_CLASSINFO("DefaultProperty", "defaultProperty"); public: @@ -202,6 +211,7 @@ public: int propertyWithNotify() const { return m_propertyWithNotify; } void setPropertyWithNotify(int i) { m_propertyWithNotify = i; emit oddlyNamedNotifySignal(); } + MyQmlObject *qmlObject() { return &m_qmlObject; } signals: void clicked(); void oddlyNamedNotifySignal(); @@ -211,6 +221,7 @@ private: QRect m_rect; QUrl m_url; int m_propertyWithNotify; + MyQmlObject m_qmlObject; }; QML_DECLARE_TYPE(PropertyObject); @@ -953,6 +964,32 @@ void tst_qdeclarativeproperty::read() QCOMPARE(p.read(), QVariant()); } + // Object property + { + PropertyObject o; + QDeclarativeProperty p(&o, "qmlObject"); + QCOMPARE(p.propertyTypeCategory(), QDeclarativeProperty::Object); + QCOMPARE(p.propertyType(), qMetaTypeId()); + QVariant v = p.read(); + QVERIFY(v.userType() == QMetaType::QObjectStar); + QVERIFY(qvariant_cast(v) == o.qmlObject()); + } + { + QDeclarativeComponent component(&engine, TEST_FILE("readSynthesizedObject.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QDeclarativeProperty p(object, "test", &engine); + + QCOMPARE(p.propertyTypeCategory(), QDeclarativeProperty::Object); + QVERIFY(p.propertyType() != QMetaType::QObjectStar); + + QVariant v = p.read(); + QVERIFY(v.userType() == QMetaType::QObjectStar); + QCOMPARE(qvariant_cast(v)->property("a").toInt(), 10); + QCOMPARE(qvariant_cast(v)->property("b").toInt(), 19); + } + // Attached property { QDeclarativeComponent component(&engine); -- cgit v0.12 From 07bd4f61caaa61866fcfa7847eeeb905d4fa2b38 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Wed, 3 Mar 2010 17:54:43 +1000 Subject: 'on' syntax fixes --- .../graphicsitems/qdeclarativegridview.cpp | 6 ++-- .../graphicsitems/qdeclarativelistview.cpp | 2 +- src/declarative/qml/qdeclarativedom.cpp | 8 ++--- src/declarative/util/qdeclarativeanimation.cpp | 18 ++++++------ src/declarative/util/qdeclarativebehavior.cpp | 6 ++-- src/declarative/util/qdeclarativeeasefollow.cpp | 34 +++++++++++----------- src/declarative/util/qdeclarativespringfollow.cpp | 6 ++-- 7 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 090c46d..5b313be 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -744,7 +744,7 @@ QDeclarativeGridView::~QDeclarativeGridView() id: myDelegate Item { id: wrapper - GridView.onRemove: SequentialAnimation { + SequentialAnimation on GridView.onRemove { PropertyAction { target: wrapper.GridView; property: "delayRemove"; value: true } NumberAnimation { target: wrapper; property: "scale"; to: 0; duration: 250; easing: "easeInOutQuad" } PropertyAction { target: wrapper.GridView; property: "delayRemove"; value: false } @@ -989,8 +989,8 @@ void QDeclarativeGridView::setHighlight(QDeclarativeComponent *highlight) id: myHighlight Rectangle { id: wrapper; color: "lightsteelblue"; radius: 4; width: 320; height: 60 - y: SpringFollow { source: Wrapper.GridView.view.currentItem.y; spring: 3; damping: 0.2 } - x: SpringFollow { source: Wrapper.GridView.view.currentItem.x; spring: 3; damping: 0.2 } + SpringFollow on y { source: Wrapper.GridView.view.currentItem.y; spring: 3; damping: 0.2 } + SpringFollow on x { source: Wrapper.GridView.view.currentItem.x; spring: 3; damping: 0.2 } } } \endcode diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index a05e638..eb5315d 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -1431,7 +1431,7 @@ QDeclarativeListView::~QDeclarativeListView() id: myDelegate Item { id: wrapper - ListView.onRemove: SequentialAnimation { + SequentialAnimation on ListView.onRemove { PropertyAction { target: wrapper.ListView; property: "delayRemove"; value: true } NumberAnimation { target: wrapper; property: "scale"; to: 0; duration: 250; easing: "easeInOutQuad" } PropertyAction { target: wrapper.ListView; property: "delayRemove"; value: false } diff --git a/src/declarative/qml/qdeclarativedom.cpp b/src/declarative/qml/qdeclarativedom.cpp index 5b43109..cb56ead 100644 --- a/src/declarative/qml/qdeclarativedom.cpp +++ b/src/declarative/qml/qdeclarativedom.cpp @@ -374,7 +374,7 @@ QDeclarativeDomValue QDeclarativeDomProperty::value() const QDeclarativeDomValue rv; if (d->property) { rv.d->property = d->property; - if (d->property->values.count()) + if (d->property->values.count()) rv.d->value = d->property->values.at(0); else rv.d->value = d->property->onValues.at(0); @@ -508,7 +508,7 @@ int QDeclarativeDomDynamicProperty::propertyType() const QByteArray QDeclarativeDomDynamicProperty::propertyTypeName() const { - if (isValid()) + if (isValid()) return d->property.customType; return QByteArray(); @@ -1184,7 +1184,7 @@ QDeclarativeDomObject QDeclarativeDomValueValueSource::object() const \qml Rectangle { - x: Behavior { NumberAnimation { duration: 500 } } + Behavior on x { NumberAnimation { duration: 500 } } } \endqml */ @@ -1228,7 +1228,7 @@ QDeclarativeDomValueValueInterceptor &QDeclarativeDomValueValueInterceptor::oper returned. \qml Rectangle { - x: Behavior { NumberAnimation { duration: 500 } } + Behavior on x { NumberAnimation { duration: 500 } } } \endqml */ diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index 7f4f1c0..b14de19 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -110,7 +110,7 @@ QDeclarativeAbstractAnimation::QDeclarativeAbstractAnimation(QDeclarativeAbstrac \code Rectangle { width: 100; height: 100 - x: NumberAnimation { + NumberAnimation on x { running: myMouse.pressed from: 0; to: 100 } @@ -310,7 +310,7 @@ void QDeclarativeAbstractAnimation::setAlwaysRunToEnd(bool f) \code Rectangle { - rotation: NumberAnimation { running: true; repeat: true; from: 0 to: 360 } + NumberAnimation on rotation { running: true; repeat: true; from: 0 to: 360 } } \endcode */ @@ -412,7 +412,7 @@ void QDeclarativeAbstractAnimation::resume() no further influence on property values. In this example animation \code Rectangle { - x: NumberAnimation { from: 0; to: 100; duration: 500 } + NumberAnimation on x { from: 0; to: 100; duration: 500 } } \endcode was stopped at time 250ms, the \c x property will have a value of 50. @@ -450,7 +450,7 @@ void QDeclarativeAbstractAnimation::restart() its end. In the following example, \code Rectangle { - x: NumberAnimation { from: 0; to: 100; duration: 500 } + NumberAnimation on x { from: 0; to: 100; duration: 500 } } \endcode calling \c stop() at time 250ms will result in the \c x property having @@ -1292,7 +1292,7 @@ QDeclarativeVector3dAnimation::QDeclarativeVector3dAnimation(QObject *parent) Q_D(QDeclarativePropertyAnimation); d->interpolatorType = QMetaType::QVector3D; d->interpolator = QVariantAnimationPrivate::getInterpolator(d->interpolatorType); - d->defaultToInterpolatorType = true; + d->defaultToInterpolatorType = true; } QDeclarativeVector3dAnimation::~QDeclarativeVector3dAnimation() @@ -1741,7 +1741,7 @@ void QDeclarativePropertyAnimationPrivate::convertVariant(QVariant &variant, int Animate all changes to a rectangle's x property. \qml Rectangle { - x: Behavior { PropertyAnimation {} } + Behavior on x { PropertyAnimation {} } } \endqml \o As a property value source @@ -1749,7 +1749,7 @@ void QDeclarativePropertyAnimationPrivate::convertVariant(QVariant &variant, int Repeatedly animate the rectangle's x property. \qml Rectangle { - x: SequentialAnimation { + SequentialAnimation on x { repeat: true PropertyAnimation { to: 50 } PropertyAnimation { to: 0 } @@ -2140,8 +2140,8 @@ void QDeclarativePropertyAnimation::setProperties(const QString &prop) id: theRect width: 100; height: 100 color: Qt.rgba(0,0,1) - x: NumberAnimation { to: 500; repeat: true } //animate theRect's x property - y: Behavior { NumberAnimation {} } //animate theRect's y property + NumberAnimation on x { to: 500; repeat: true } //animate theRect's x property + Behavior on y { NumberAnimation {} } //animate theRect's y property } \endqml \row diff --git a/src/declarative/util/qdeclarativebehavior.cpp b/src/declarative/util/qdeclarativebehavior.cpp index 5352341..dea2c02 100644 --- a/src/declarative/util/qdeclarativebehavior.cpp +++ b/src/declarative/util/qdeclarativebehavior.cpp @@ -75,13 +75,13 @@ public: Behaviors provide one way to specify \l{qdeclarativeanimation.html}{animations} in QML. - In the example below, the rect will use a bounce easing curve over 200 millisecond for any changes to its y property: + In the example below, the rectangle will use a bounce easing curve over 200 millisecond for any changes to its y property: \code Rectangle { width: 20; height: 20 color: "#00ff00" - y: 200 //initial value - y: Behavior { + y: 200 // initial value + Behavior on y { NumberAnimation { easing: "easeOutBounce(amplitude:100)" duration: 200 diff --git a/src/declarative/util/qdeclarativeeasefollow.cpp b/src/declarative/util/qdeclarativeeasefollow.cpp index 3fa9866..ee181dd 100644 --- a/src/declarative/util/qdeclarativeeasefollow.cpp +++ b/src/declarative/util/qdeclarativeeasefollow.cpp @@ -59,10 +59,10 @@ class QDeclarativeEaseFollowPrivate : public QObjectPrivate public: QDeclarativeEaseFollowPrivate() : source(0), velocity(200), duration(-1), maximumEasingTime(-1), - reversingMode(QDeclarativeEaseFollow::Eased), initialVelocity(0), + reversingMode(QDeclarativeEaseFollow::Eased), initialVelocity(0), initialValue(0), invert(false), enabled(true), trackVelocity(0), clockOffset(0), lastTick(0), clock(this) - {} + {} qreal source; qreal velocity; @@ -173,7 +173,7 @@ bool QDeclarativeEaseFollowPrivate::recalc() } /* - qWarning() << "a:" << a << "tf:" << tf << "tp:" << tp << "vp:" + qWarning() << "a:" << a << "tf:" << tf << "tp:" << tp << "vp:" << vp << "sp:" << sp << "vi:" << vi << "invert:" << invert; */ return true; @@ -254,19 +254,19 @@ void QDeclarativeEaseFollowPrivate::tick(int t) \since 4.7 \brief The EaseFollow element allows a property to smoothly track a value. - The EaseFollow smoothly animates a property's value to a set target value + The EaseFollow smoothly animates a property's value to a set target value using an ease in/out quad easing curve. If the target value changes while - the animation is in progress, the easing curves used to animate to the old + the animation is in progress, the easing curves used to animate to the old and the new target values are spliced together to avoid any obvious visual glitches. The property animation is configured by setting the velocity at which the - animation should occur, or the duration that the animation should take. + animation should occur, or the duration that the animation should take. If both a velocity and a duration are specified, the one that results in the quickest animation is chosen for each change in the target value. For example, animating from 0 to 800 will take 4 seconds if a velocity - of 200 is set, will take 8 seconds with a duration of 8000 set, and will + of 200 is set, will take 8 seconds with a duration of 8000 set, and will take 4 seconds with both a velocity of 200 and a duration of 8000 set. Animating from 0 to 20000 will take 10 seconds if a velocity of 200 is set, will take 8 seconds with a duration of 8000 set, and will take 8 seconds @@ -283,8 +283,8 @@ Rectangle { color: "green" width: 60; height: 60; x: -5; y: -5; - x: EaseFollow { source: rect1.x - 5; velocity: 200 } - y: EaseFollow { source: rect1.y - 5; velocity: 200 } + EaseFollow on x { source: rect1.x - 5; velocity: 200 } + EaseFollow on y { source: rect1.y - 5; velocity: 200 } } Rectangle { @@ -338,8 +338,8 @@ qreal QDeclarativeEaseFollow::sourceValue() const Sets how the EaseFollow behaves if an animation direction is reversed. If reversing mode is \c Eased, the animation will smoothly decelerate, and - then reverse direction. If the reversing mode is \c Immediate, the - animation will immediately begin accelerating in the reverse direction, + then reverse direction. If the reversing mode is \c Immediate, the + animation will immediately begin accelerating in the reverse direction, begining with a velocity of 0. If the reversing mode is \c Sync, the property is immediately set to the target value. */ @@ -373,7 +373,7 @@ void QDeclarativeEaseFollowPrivate::restart() return; } - bool hasReversed = trackVelocity != 0. && + bool hasReversed = trackVelocity != 0. && ((trackVelocity > 0) == ((initialValue - source) > 0)); if (hasReversed) { @@ -440,7 +440,7 @@ void QDeclarativeEaseFollow::setDuration(qreal v) d->duration = v; d->trackVelocity = 0; - if (d->clock.state() == QAbstractAnimation::Running) + if (d->clock.state() == QAbstractAnimation::Running) d->restart(); emit durationChanged(); @@ -470,7 +470,7 @@ void QDeclarativeEaseFollow::setVelocity(qreal v) d->velocity = v; d->trackVelocity = 0; - if (d->clock.state() == QAbstractAnimation::Running) + if (d->clock.state() == QAbstractAnimation::Running) d->restart(); emit velocityChanged(); @@ -511,8 +511,8 @@ void QDeclarativeEaseFollow::setTarget(const QDeclarativeProperty &t) \qmlproperty qreal EaseFollow::maximumEasingTime This property specifies the maximum time an "eases" during the follow should take. -Setting this property causes the velocity to "level out" after at a time. Setting -a negative value reverts to the normal mode of easing over the entire animation +Setting this property causes the velocity to "level out" after at a time. Setting +a negative value reverts to the normal mode of easing over the entire animation duration. The default value is -1. @@ -528,7 +528,7 @@ void QDeclarativeEaseFollow::setMaximumEasingTime(qreal v) Q_D(QDeclarativeEaseFollow); d->maximumEasingTime = v; - if (d->clock.state() == QAbstractAnimation::Running) + if (d->clock.state() == QAbstractAnimation::Running) d->restart(); emit maximumEasingTimeChanged(); diff --git a/src/declarative/util/qdeclarativespringfollow.cpp b/src/declarative/util/qdeclarativespringfollow.cpp index 6205ab9..1d69dd3 100644 --- a/src/declarative/util/qdeclarativespringfollow.cpp +++ b/src/declarative/util/qdeclarativespringfollow.cpp @@ -222,8 +222,8 @@ void QDeclarativeSpringFollowPrivate::stop() id: rect1 width: 20; height: 20 color: "#00ff00" - y: 200 //initial value - y: SequentialAnimation { + y: 200 // initial value + SequentialAnimation on y { running: true repeat: true NumberAnimation { @@ -239,7 +239,7 @@ void QDeclarativeSpringFollowPrivate::stop() x: rect1.width width: 20; height: 20 color: "#ff0000" - y: SpringFollow { source: rect1.y; velocity: 200 } + SpringFollow on y { source: rect1.y; velocity: 200 } } \endcode -- cgit v0.12 From 9b0747af7e6c456c4215879ece86f2f0dc9b7478 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Wed, 3 Mar 2010 09:33:28 +0100 Subject: Mac: Select Carbon when using the 10.4u SDK. --- configure | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/configure b/configure index 2c7e431..5aaf347 100755 --- a/configure +++ b/configure @@ -6074,6 +6074,15 @@ if [ "$PLATFORM_MAC" = "yes" ]; then fi fi +# select Carbon when using the 10.4u SDK +if [ "$PLATFORM_MAC" = "yes" ]; then + if [ "TEST$CFG_SDK" = "TEST/Developer/SDKs/MacOSX10.4u.sdk/" ]; then + echo "Carbon on"; + CFG_MAC_COCOA="no"; + CFG_MAC_CARBON="yes"; + fi +fi + # set the global Mac deployment target. This is overridden on an arch-by-arch basis # in some cases, see code further down case "$PLATFORM,$CFG_MAC_COCOA" in -- cgit v0.12 From 64a4b25fac94fc5c9b75ab31690c658e95189797 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Wed, 3 Mar 2010 18:33:44 +1000 Subject: Save secondary scope inside the expression's scope object This prevents the secondary scope from contaminating scopes outside itself when used as a signal expression. QTBUG-8641 --- .../qml/qdeclarativecontextscriptclass.cpp | 30 ++++++++++++++-- .../qml/qdeclarativecontextscriptclass_p.h | 1 + src/declarative/qml/qdeclarativeexpression.cpp | 41 +++++++++++++--------- src/declarative/qml/qdeclarativeexpression_p.h | 5 +-- .../tst_qdeclarativeecmascript.cpp | 3 +- 5 files changed, 58 insertions(+), 22 deletions(-) diff --git a/src/declarative/qml/qdeclarativecontextscriptclass.cpp b/src/declarative/qml/qdeclarativecontextscriptclass.cpp index 7deed0b..d6305d8 100644 --- a/src/declarative/qml/qdeclarativecontextscriptclass.cpp +++ b/src/declarative/qml/qdeclarativecontextscriptclass.cpp @@ -50,10 +50,11 @@ QT_BEGIN_NAMESPACE struct ContextData : public QScriptDeclarativeClass::Object { - ContextData() : isSharedContext(true) {} - ContextData(QDeclarativeContext *c, QObject *o) : context(c), scopeObject(o), isSharedContext(false) {} + ContextData() : overrideObject(0), isSharedContext(true) {} + ContextData(QDeclarativeContext *c, QObject *o) : context(c), scopeObject(o), overrideObject(0), isSharedContext(false) {} QDeclarativeGuard context; QDeclarativeGuard scopeObject; + QObject *overrideObject; bool isSharedContext; QDeclarativeContext *getContext(QDeclarativeEngine *engine) { @@ -110,6 +111,17 @@ QDeclarativeContext *QDeclarativeContextScriptClass::contextFromValue(const QScr return data->getContext(engine); } +QObject *QDeclarativeContextScriptClass::setOverrideObject(QScriptValue &v, QObject *override) +{ + if (scriptClass(v) != this) + return 0; + + ContextData *data = (ContextData *)object(v); + QObject *rv = data->overrideObject; + data->overrideObject = override; + return rv; +} + QScriptClass::QueryFlags QDeclarativeContextScriptClass::queryProperty(Object *object, const Identifier &name, QScriptClass::QueryFlags flags) @@ -127,6 +139,20 @@ QDeclarativeContextScriptClass::queryProperty(Object *object, const Identifier & if (!bindContext) return 0; + QObject *overrideObject = ((ContextData *)object)->overrideObject; + if (overrideObject) { + QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(engine); + QScriptClass::QueryFlags rv = + ep->objectClass->queryProperty(overrideObject, name, flags, bindContext, + QDeclarativeObjectScriptClass::ImplicitObject | + QDeclarativeObjectScriptClass::SkipAttachedProperties); + if (rv) { + lastScopeObject = overrideObject; + lastContext = bindContext; + return rv; + } + } + bool includeTypes = true; while (bindContext) { QScriptClass::QueryFlags rv = diff --git a/src/declarative/qml/qdeclarativecontextscriptclass_p.h b/src/declarative/qml/qdeclarativecontextscriptclass_p.h index 26086ec..4b0dca0 100644 --- a/src/declarative/qml/qdeclarativecontextscriptclass_p.h +++ b/src/declarative/qml/qdeclarativecontextscriptclass_p.h @@ -70,6 +70,7 @@ public: QScriptValue newSharedContext(); QDeclarativeContext *contextFromValue(const QScriptValue &); + QObject *setOverrideObject(QScriptValue &, QObject *); protected: virtual QScriptClass::QueryFlags queryProperty(Object *, const Identifier &, diff --git a/src/declarative/qml/qdeclarativeexpression.cpp b/src/declarative/qml/qdeclarativeexpression.cpp index 0030615..e528e9e 100644 --- a/src/declarative/qml/qdeclarativeexpression.cpp +++ b/src/declarative/qml/qdeclarativeexpression.cpp @@ -153,9 +153,11 @@ void QDeclarativeExpressionPrivate::init(QDeclarativeContext *ctxt, void *expr, new QScriptProgram(data->expression, data->url, data->line); } - data->expressionFunction = evalInObjectScope(ctxt, me, *dd->cachedPrograms.at(progIdx)); + data->expressionFunction = evalInObjectScope(ctxt, me, *dd->cachedPrograms.at(progIdx), + &data->expressionContext); #else - data->expressionFunction = evalInObjectScope(ctxt, me, data->expression); + data->expressionFunction = evalInObjectScope(ctxt, me, data->expression, + &data->expressionContext); #endif data->expressionFunctionValid = true; @@ -166,11 +168,16 @@ void QDeclarativeExpressionPrivate::init(QDeclarativeContext *ctxt, void *expr, } QScriptValue QDeclarativeExpressionPrivate::evalInObjectScope(QDeclarativeContext *context, QObject *object, - const QString &program) + const QString &program, QScriptValue *contextObject) { QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(context->engine()); QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(&ep->scriptEngine); - scriptContext->pushScope(ep->contextClass->newContext(context, object)); + if (contextObject) { + *contextObject = ep->contextClass->newContext(context, object); + scriptContext->pushScope(*contextObject); + } else { + scriptContext->pushScope(ep->contextClass->newContext(context, object)); + } scriptContext->pushScope(ep->globalClass->globalObject()); QScriptValue rv = ep->scriptEngine.evaluate(program); ep->scriptEngine.popContext(); @@ -178,11 +185,16 @@ QScriptValue QDeclarativeExpressionPrivate::evalInObjectScope(QDeclarativeContex } QScriptValue QDeclarativeExpressionPrivate::evalInObjectScope(QDeclarativeContext *context, QObject *object, - const QScriptProgram &program) + const QScriptProgram &program, QScriptValue *contextObject) { QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(context->engine()); QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(&ep->scriptEngine); - scriptContext->pushScope(ep->contextClass->newContext(context, object)); + if (contextObject) { + *contextObject = ep->contextClass->newContext(context, object); + scriptContext->pushScope(*contextObject); + } else { + scriptContext->pushScope(ep->contextClass->newContext(context, object)); + } scriptContext->pushScope(ep->globalClass->globalObject()); QScriptValue rv = ep->scriptEngine.evaluate(program); ep->scriptEngine.popContext(); @@ -330,15 +342,13 @@ QVariant QDeclarativeExpressionPrivate::evalQtScript(QObject *secondaryScope, bo QDeclarativeEngine *engine = data->context()->engine(); QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(engine); - if (secondaryScope) - ctxtPriv->defaultObjects.append(secondaryScope); - QScriptEngine *scriptEngine = QDeclarativeEnginePrivate::getScriptEngine(engine); if (!data->expressionFunctionValid) { QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(scriptEngine); - scriptContext->pushScope(ep->contextClass->newContext(data->context(), data->me)); + data->expressionContext = ep->contextClass->newContext(data->context(), data->me); + scriptContext->pushScope(data->expressionContext); scriptContext->pushScope(ep->globalClass->globalObject()); if (data->expressionRewritten) { @@ -362,11 +372,14 @@ QVariant QDeclarativeExpressionPrivate::evalQtScript(QObject *secondaryScope, bo QDeclarativeContext *oldSharedContext = 0; QObject *oldSharedScope = 0; + QObject *oldOverride = 0; if (data->isShared) { oldSharedContext = ep->sharedContext; oldSharedScope = ep->sharedScope; ep->sharedContext = data->context(); ep->sharedScope = data->me; + } else { + oldOverride = ep->contextClass->setOverrideObject(data->expressionContext, secondaryScope); } QScriptValue svalue = data->expressionFunction.call(); @@ -374,6 +387,8 @@ QVariant QDeclarativeExpressionPrivate::evalQtScript(QObject *secondaryScope, bo if (data->isShared) { ep->sharedContext = oldSharedContext; ep->sharedScope = oldSharedScope; + } else { + ep->contextClass->setOverrideObject(data->expressionContext, oldOverride); } if (isUndefined) @@ -388,12 +403,6 @@ QVariant QDeclarativeExpressionPrivate::evalQtScript(QObject *secondaryScope, bo data->error = QDeclarativeError(); } - if (secondaryScope) { - QObject *last = ctxtPriv->defaultObjects.takeLast(); - Q_ASSERT(last == secondaryScope); - Q_UNUSED(last); - } - QVariant rv; if (svalue.isArray()) { diff --git a/src/declarative/qml/qdeclarativeexpression_p.h b/src/declarative/qml/qdeclarativeexpression_p.h index 91ac4c0..cd1729d 100644 --- a/src/declarative/qml/qdeclarativeexpression_p.h +++ b/src/declarative/qml/qdeclarativeexpression_p.h @@ -119,6 +119,7 @@ public: bool expressionFunctionValid:1; bool expressionRewritten:1; QScriptValue expressionFunction; + QScriptValue expressionContext; QObject *me; bool trackChange; @@ -180,8 +181,8 @@ public: virtual void emitValueChanged(); static void exceptionToError(QScriptEngine *, QDeclarativeError &); - static QScriptValue evalInObjectScope(QDeclarativeContext *, QObject *, const QString &); - static QScriptValue evalInObjectScope(QDeclarativeContext *, QObject *, const QScriptProgram &); + static QScriptValue evalInObjectScope(QDeclarativeContext *, QObject *, const QString &, QScriptValue * = 0); + static QScriptValue evalInObjectScope(QDeclarativeContext *, QObject *, const QScriptProgram &, QScriptValue * = 0); }; QT_END_NAMESPACE diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index e45f0fa..75ee7ce 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -1676,8 +1676,7 @@ void tst_qdeclarativeecmascript::scriptScope() MyQmlObject *object = qobject_cast(component.create()); QVERIFY(object != 0); emit object->argumentSignal(19, "Hello world!", 10.3); - QEXPECT_FAIL("", "QTBUG-8641", Continue); - QCOMPARE(object->property("result").toString(), QLatin1String("undefined")); + QCOMPARE(object->property("result").toString(), QString()); delete object; } -- cgit v0.12 From 5c1496d8839010653a9273586c10d99e0eeb66b2 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Wed, 3 Mar 2010 18:36:44 +1000 Subject: More renaming: MouseRegion -> MouseArea --- doc/src/declarative/tutorial.qdoc | 6 +++--- examples/declarative/colorbrowser/colorbrowser.qml | 2 +- examples/declarative/colorbrowser/qml/ColorDelegate.qml | 2 +- examples/declarative/package/Delegate.qml | 2 +- src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp | 10 +++++----- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/src/declarative/tutorial.qdoc b/doc/src/declarative/tutorial.qdoc index 98efe12..310b776 100644 --- a/doc/src/declarative/tutorial.qdoc +++ b/doc/src/declarative/tutorial.qdoc @@ -173,10 +173,10 @@ In this case the rectangle will have the same size as its parent (see \l{anchor- \snippet examples/declarative/tutorials/helloworld/Cell.qml 3 -In order to change the color of the text when clicking on a cell, we create a \l MouseRegion element with +In order to change the color of the text when clicking on a cell, we create a \l MouseArea element with the same size as its parent. -A \l MouseRegion defines a signal called \e clicked. +A \l MouseArea defines a signal called \e clicked. When this signal is triggered we want to emit our own \e clicked signal with the color as parameter. \section2 The main QML file @@ -214,7 +214,7 @@ Here is the QML code: \snippet examples/declarative/tutorials/helloworld/tutorial3.qml 2 First, we create a new \e down state for our text element. -This state will be activated when the \l MouseRegion is pressed, and deactivated when it is released. +This state will be activated when the \l MouseArea is pressed, and deactivated when it is released. The \e down state includes a set of property changes from our implicit \e {default state} (the items as they were initially defined in the QML). diff --git a/examples/declarative/colorbrowser/colorbrowser.qml b/examples/declarative/colorbrowser/colorbrowser.qml index ebd49c6..421ae07 100644 --- a/examples/declarative/colorbrowser/colorbrowser.qml +++ b/examples/declarative/colorbrowser/colorbrowser.qml @@ -53,7 +53,7 @@ Rectangle { Text { id: albumTitle; text: name; color: 'white'; font.bold: true; anchors.centerIn: parent } } - MouseRegion { anchors.fill: parent; onClicked: wrapper.state = 'inGrid' } + MouseArea { anchors.fill: parent; onClicked: wrapper.state = 'inGrid' } states: [ State { diff --git a/examples/declarative/colorbrowser/qml/ColorDelegate.qml b/examples/declarative/colorbrowser/qml/ColorDelegate.qml index 605e45b..c123d12 100644 --- a/examples/declarative/colorbrowser/qml/ColorDelegate.qml +++ b/examples/declarative/colorbrowser/qml/ColorDelegate.qml @@ -27,7 +27,7 @@ Package { value: hex; when: delegate.open && list.ListView.isCurrentItem } - MouseRegion { + MouseArea { anchors.fill: parent acceptedButtons: Qt.RightButton | Qt.LeftButton onClicked: { diff --git a/examples/declarative/package/Delegate.qml b/examples/declarative/package/Delegate.qml index 62198d0..f35314f 100644 --- a/examples/declarative/package/Delegate.qml +++ b/examples/declarative/package/Delegate.qml @@ -11,7 +11,7 @@ Package { color: 'lightsteelblue' Text { text: display; anchors.centerIn: parent } - MouseRegion { + MouseArea { anchors.fill: parent onClicked: { if (wrapper.state == 'inList') diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp index a0aed46..55f1c89 100644 --- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp +++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp @@ -144,7 +144,7 @@ QDeclarativeVisualItemModel::QDeclarativeVisualItemModel() QDeclarativeListProperty QDeclarativeVisualItemModel::children() { Q_D(QDeclarativeVisualItemModel); - return QDeclarativeListProperty(this, d, d->children_append, + return QDeclarativeListProperty(this, d, d->children_append, d->children_count, d->children_at); } @@ -483,7 +483,7 @@ QVariant QDeclarativeVisualDataModelDataMetaObject::initialValue(int propId) QDeclarativeVisualDataModelData::QDeclarativeVisualDataModelData(int index, QDeclarativeVisualDataModel *model) -: m_index(index), m_model(model), +: m_index(index), m_model(model), m_meta(new QDeclarativeVisualDataModelDataMetaObject(this, QDeclarativeVisualDataModelPrivate::get(model)->m_delegateDataType)) { QDeclarativeVisualDataModelPrivate *modelPriv = QDeclarativeVisualDataModelPrivate::get(model); @@ -550,7 +550,7 @@ QVariant QDeclarativeVisualDataModelPartsMetaObject::initialValue(int id) } QDeclarativeVisualDataModelParts::QDeclarativeVisualDataModelParts(QDeclarativeVisualDataModel *parent) -: QObject(parent), model(parent) +: QObject(parent), model(parent) { new QDeclarativeVisualDataModelPartsMetaObject(this); } @@ -840,7 +840,7 @@ void QDeclarativeVisualDataModel::setDelegate(QDeclarativeComponent *delegate) Rectangle { height: 25; width: 100 Text { text: path } - MouseRegion { + MouseArea { anchors.fill: parent; onClicked: myModel.setRoot(path) } @@ -969,7 +969,7 @@ QDeclarativeVisualDataModel::ReleaseFlags QDeclarativeVisualDataModel::release(Q QObject *QDeclarativeVisualDataModel::parts() { Q_D(QDeclarativeVisualDataModel); - if (!d->m_parts) + if (!d->m_parts) d->m_parts = new QDeclarativeVisualDataModelParts(this); return d->m_parts; } -- cgit v0.12 From 6e0565eaa293b84f7583947822fe5939cb47af89 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Tue, 2 Mar 2010 15:39:28 +0100 Subject: remove a warning on windows and simplify a bit the code --- src/gui/dialogs/qfontdialog.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/gui/dialogs/qfontdialog.cpp b/src/gui/dialogs/qfontdialog.cpp index a4bf15d..b987611 100644 --- a/src/gui/dialogs/qfontdialog.cpp +++ b/src/gui/dialogs/qfontdialog.cpp @@ -988,13 +988,10 @@ void QFontDialog::open(QObject *receiver, const char *member) */ void QFontDialog::setVisible(bool visible) { - Q_D(QFontDialog); - if (visible) { - if (testAttribute(Qt::WA_WState_ExplicitShowHide) && !testAttribute(Qt::WA_WState_Hidden)) - return; - } else if (testAttribute(Qt::WA_WState_ExplicitShowHide) && testAttribute(Qt::WA_WState_Hidden)) + if (testAttribute(Qt::WA_WState_ExplicitShowHide) && testAttribute(Qt::WA_WState_Hidden) != visible) return; #ifdef Q_WS_MAC + Q_D(QFontDialog); if (d->canBeNativeDialog()){ if (d->setVisible_sys(visible)){ d->nativeDialogInUse = true; -- cgit v0.12 From 60324267fbb8a8554e62aaf9ef01360709292320 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Tue, 2 Mar 2010 16:27:46 +0100 Subject: Make the sub-menu accessible via its shortcut even if it is the current Task-number: QTBUG-7411 Reviewed-by: ogoffart --- src/gui/widgets/qmenu.cpp | 12 ++---------- tests/auto/qmenu/tst_qmenu.cpp | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp index e2cf25b..5db14b8 100644 --- a/src/gui/widgets/qmenu.cpp +++ b/src/gui/widgets/qmenu.cpp @@ -487,7 +487,7 @@ void QMenuPrivate::popupAction(QAction *action, int delay, bool activateFirst) if (action && action->isEnabled()) { if (!delay) q->internalDelayedPopup(); - else + else if (!QMenuPrivate::menuDelayTimer.isActive() && (!action->menu() || !action->menu()->isVisible())) QMenuPrivate::menuDelayTimer.start(delay, q); if (activateFirst && action->menu()) action->menu()->d_func()->setFirstActionActive(); @@ -543,15 +543,6 @@ void QMenuPrivate::setCurrentAction(QAction *action, int popup, SelectionReason { Q_Q(QMenu); tearoffHighlighted = 0; - if (action == currentAction) { - if (!action || !action->menu() || action->menu() == activeMenu) { - if(QMenu *menu = qobject_cast(causedPopup.widget)) { - if(causedPopup.action && menu->d_func()->activeMenu == q) - menu->d_func()->setCurrentAction(causedPopup.action, 0, reason, false); - } - } - return; - } if (currentAction) q->update(actionRect(currentAction)); @@ -565,6 +556,7 @@ void QMenuPrivate::setCurrentAction(QAction *action, int popup, SelectionReason #ifdef QT3_SUPPORT emitHighlighted = action; #endif + currentAction = action; if (action) { if (!action->isSeparator()) { diff --git a/tests/auto/qmenu/tst_qmenu.cpp b/tests/auto/qmenu/tst_qmenu.cpp index 3559b15..e10d7ee 100644 --- a/tests/auto/qmenu/tst_qmenu.cpp +++ b/tests/auto/qmenu/tst_qmenu.cpp @@ -105,6 +105,7 @@ private slots: void deleteActionInTriggered(); void pushButtonPopulateOnAboutToShow(); void QTBUG7907_submenus_autoselect(); + void QTBUG7411_submenus_activate(); protected slots: void onActivated(QAction*); void onHighlighted(QAction*); @@ -948,6 +949,25 @@ void tst_QMenu::QTBUG7907_submenus_autoselect() QVERIFY(!subset.isVisible()); } +void tst_QMenu::QTBUG7411_submenus_activate() +{ + QMenu menu("Test Menu"); + QAction *act = menu.addAction("foo"); + QMenu sub1("&sub1"); + sub1.addAction("foo"); + sub1.setTitle("&sub1"); + QAction *act1 = menu.addMenu(&sub1); + menu.show(); + QTest::qWaitForWindowShown(&menu); + menu.setActiveAction(act); + QTest::keyPress(&menu, Qt::Key_Down); + QCOMPARE(menu.activeAction(), act1); + QVERIFY(!sub1.isVisible()); + QTest::keyPress(&menu, Qt::Key_S); + QTRY_VERIFY(sub1.isVisible()); +} + + QTEST_MAIN(tst_QMenu) #include "tst_qmenu.moc" -- cgit v0.12 From 97b8727635a73197fac4f5edb8a1122733933db4 Mon Sep 17 00:00:00 2001 From: Prasanth Ullattil Date: Tue, 2 Mar 2010 16:38:42 +0100 Subject: Application menu is not translated in Mac OS X Cocoa The application menu is loaded from the qt_menu.nib which only has English strings. These will now be translated using Qt's own translation mechanism. Every time a new translator is installed, the menu will now try to get the new string. Modification of qt_xx.ts files are done in a different patch. Task-number: QTBUG-4463 Reviewed-by: MortenS --- src/gui/kernel/qapplication.cpp | 16 ++++++++++++++++ src/gui/kernel/qcocoamenuloader_mac.mm | 20 ++++++++++++++++++++ src/gui/kernel/qcocoamenuloader_mac_p.h | 4 +++- src/gui/kernel/qt_cocoa_helpers_mac.mm | 8 ++++++++ src/gui/kernel/qt_cocoa_helpers_mac_p.h | 2 ++ src/gui/widgets/qmenu_mac.mm | 30 ++++++++++++++++++++++-------- 6 files changed, 71 insertions(+), 9 deletions(-) diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 203f637..fea8c37 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -2309,6 +2309,19 @@ static bool qt_detectRTLLanguage() " languages or to 'RTL' in right-to-left languages (such as Hebrew" " and Arabic) to get proper widget layout.") == QLatin1String("RTL")); } +#if defined(QT_MAC_USE_COCOA) +static const char *application_menu_strings[] = { + QT_TRANSLATE_NOOP("MAC_APPLICATION_MENU","Services"), + QT_TRANSLATE_NOOP("MAC_APPLICATION_MENU","Hide %1"), + QT_TRANSLATE_NOOP("MAC_APPLICATION_MENU","Hide Others"), + QT_TRANSLATE_NOOP("MAC_APPLICATION_MENU","Show All") + }; +QString qt_mac_applicationmenu_string(int type) +{ + return qApp->translate("MAC_APPLICATION_MENU", + application_menu_strings[type]); +} +#endif #endif /*!\reimp @@ -2337,6 +2350,9 @@ bool QApplication::event(QEvent *e) #ifndef QT_NO_TRANSLATION setLayoutDirection(qt_detectRTLLanguage()?Qt::RightToLeft:Qt::LeftToRight); #endif +#if defined(QT_MAC_USE_COCOA) + qt_mac_post_retranslateAppMenu(); +#endif QWidgetList list = topLevelWidgets(); for (int i = 0; i < list.size(); ++i) { QWidget *w = list.at(i); diff --git a/src/gui/kernel/qcocoamenuloader_mac.mm b/src/gui/kernel/qcocoamenuloader_mac.mm index 573b763..35d156a 100644 --- a/src/gui/kernel/qcocoamenuloader_mac.mm +++ b/src/gui/kernel/qcocoamenuloader_mac.mm @@ -48,6 +48,7 @@ #include #include #include +#include QT_FORWARD_DECLARE_CLASS(QCFString) QT_FORWARD_DECLARE_CLASS(QString) @@ -58,6 +59,10 @@ QT_USE_NAMESPACE - (void)awakeFromNib { + servicesItem = [[appMenu itemWithTitle:@"Services"] retain]; + hideAllOthersItem = [[appMenu itemWithTitle:@"Hide Others"] retain]; + showAllItem = [[appMenu itemWithTitle:@"Show All"] retain]; + // Get the names in the nib to match the app name set by Qt. NSString *appName = reinterpret_cast(QCFString::toCFStringRef(qAppName())); [quitItem setTitle:[[quitItem title] stringByReplacingOccurrencesOfString:@"NewApplication" @@ -119,6 +124,10 @@ QT_USE_NAMESPACE - (void)dealloc { + [servicesItem release]; + [hideAllOthersItem release]; + [showAllItem release]; + [lastAppSpecificItem release]; [theMenu release]; [appMenu release]; @@ -214,6 +223,17 @@ QT_USE_NAMESPACE QMenuBarPrivate::macUpdateMenuBarImmediatly(); } +- (void)qtTranslateApplicationMenu +{ +#ifndef QT_NO_TRANSLATION + extern QString qt_mac_applicationmenu_string(int type); + [servicesItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(0))]; + [hideItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(1).arg(qAppName()))]; + [hideAllOthersItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(2))]; + [showAllItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(3))]; +#endif +} + - (IBAction)qtDispatcherToQAction:(id)sender { QScopedLoopLevelCounter loopLevelCounter(QApplicationPrivate::instance()->threadData); diff --git a/src/gui/kernel/qcocoamenuloader_mac_p.h b/src/gui/kernel/qcocoamenuloader_mac_p.h index 2504b8c..a75ad0a 100644 --- a/src/gui/kernel/qcocoamenuloader_mac_p.h +++ b/src/gui/kernel/qcocoamenuloader_mac_p.h @@ -67,7 +67,9 @@ IBOutlet NSMenuItem *aboutQtItem; IBOutlet NSMenuItem *hideItem; NSMenuItem *lastAppSpecificItem; - + NSMenuItem *servicesItem; + NSMenuItem *hideAllOthersItem; + NSMenuItem *showAllItem; } - (void)ensureAppMenuInMenu:(NSMenu *)menu; - (void)removeActionsFromAppMenu; diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm index 19bae5a..4f4aec0 100644 --- a/src/gui/kernel/qt_cocoa_helpers_mac.mm +++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm @@ -1386,4 +1386,12 @@ QMacCocoaAutoReleasePool::~QMacCocoaAutoReleasePool() [(NSAutoreleasePool*)pool release]; } +void qt_mac_post_retranslateAppMenu() +{ +#ifdef QT_MAC_USE_COCOA + QMacCocoaAutoReleasePool pool; + qt_cocoaPostMessage([NSApp QT_MANGLE_NAMESPACE(qt_qcocoamenuLoader)], @selector(qtTranslateApplicationMenu)); +#endif +} + QT_END_NAMESPACE diff --git a/src/gui/kernel/qt_cocoa_helpers_mac_p.h b/src/gui/kernel/qt_cocoa_helpers_mac_p.h index c43ea55..3fd62a4 100644 --- a/src/gui/kernel/qt_cocoa_helpers_mac_p.h +++ b/src/gui/kernel/qt_cocoa_helpers_mac_p.h @@ -208,4 +208,6 @@ bool qt_cocoaPostMessage(id target, SEL selector); #endif +void qt_mac_post_retranslateAppMenu(); + QT_END_NAMESPACE diff --git a/src/gui/widgets/qmenu_mac.mm b/src/gui/widgets/qmenu_mac.mm index 99c550f..2570cb5 100644 --- a/src/gui/widgets/qmenu_mac.mm +++ b/src/gui/widgets/qmenu_mac.mm @@ -924,14 +924,27 @@ static QString qt_mac_menu_merge_text(QMacMenuAction *action) else if (action->command == kHICommandQuit) ret = QMenuBar::tr("Quit %1").arg(qAppName()); #else - else if (action->menuItem == [loader aboutMenuItem]) - ret = QMenuBar::tr("About %1").arg(qAppName()); - else if (action->menuItem == [loader aboutQtMenuItem]) - ret = QMenuBar::tr("About Qt"); - else if (action->menuItem == [loader preferencesMenuItem]) - ret = QMenuBar::tr("Preferences"); - else if (action->menuItem == [loader quitMenuItem]) - ret = QMenuBar::tr("Quit %1").arg(qAppName()); + else if (action->menuItem == [loader aboutMenuItem]) { + if (action->action->text() == QString("About %1").arg(qAppName())) + ret = QMenuBar::tr("About %1").arg(qAppName()); + else + ret = action->action->text(); + } else if (action->menuItem == [loader aboutQtMenuItem]) { + if (action->action->text() == QString("About Qt")) + ret = QMenuBar::tr("About Qt"); + else + ret = action->action->text(); + } else if (action->menuItem == [loader preferencesMenuItem]) { + if (action->action->text() == QString("Preferences")) + ret = QMenuBar::tr("Preferences"); + else + ret = action->action->text(); + } else if (action->menuItem == [loader quitMenuItem]) { + if (action->action->text() == QString("Quit %1").arg(qAppName())) + ret = QMenuBar::tr("About %1").arg(qAppName()); + else + ret = action->action->text(); + } #endif return ret; } @@ -2180,3 +2193,4 @@ static OSMenuRef qt_mac_create_menu(QWidget *w) QT_END_NAMESPACE + -- cgit v0.12 From 9b50db437abb5766751d00e5c51fadd0bc79b6d4 Mon Sep 17 00:00:00 2001 From: Carlos Manuel Duclos Vergara Date: Wed, 3 Mar 2010 11:06:17 +0100 Subject: Bug with toolbar focus on Mac Before doing anything we need to make sure that we don't leave anything in a non-consistent state. When hiding a widget we need to make sure that no mouse_down events are active, because the mouse_up event will never be received by a hidden widget or one of its descendants. The solution is simple, before going through with this we check if there are any mouse_down events in progress, if so we check if it is related to this widget or not. If so, we just reset the mouse_down and then we continue. In X11 and Windows we send a mouse_release event, however we don't do that here because we were already ignoring that from before. I.e. Carbon did not send the mouse release event, so we will not send the mouse release event. There are two ways to interpret this: 1. If we don't send the mouse release event, the widget might get into an inconsistent state, i.e. it might be waiting for a release event that will never arrive. 2. If we send the mouse release event, then the widget might decide to trigger an action that is not supposed to trigger because it is not visible. Task-number: QTBUG-8604 Reviewed-by: denis --- src/gui/kernel/qwidget.cpp | 18 ++++++++++++++++++ src/gui/kernel/qwidget_mac.mm | 6 +----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 29ae51f..66140ca 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -160,6 +160,7 @@ static inline bool hasBackingStoreSupport() extern bool qt_sendSpontaneousEvent(QObject*, QEvent*); // qapplication.cpp extern QDesktopWidget *qt_desktopWidget; // qapplication.cpp +extern QPointer qt_button_down; //qapplication_mac.cpp QWidgetPrivate::QWidgetPrivate(int version) : QObjectPrivate(version) @@ -7535,6 +7536,23 @@ void QWidgetPrivate::hideChildren(bool spontaneous) QWidget *widget = qobject_cast(childList.at(i)); if (!widget || widget->isWindow() || widget->testAttribute(Qt::WA_WState_Hidden)) continue; +#ifdef QT_MAC_USE_COCOA + // Before doing anything we need to make sure that we don't leave anything in a non-consistent state. + // When hiding a widget we need to make sure that no mouse_down events are active, because + // the mouse_up event will never be received by a hidden widget or one of its descendants. + // The solution is simple, before going through with this we check if there are any mouse_down events in + // progress, if so we check if it is related to this widget or not. If so, we just reset the mouse_down and + // then we continue. + // In X11 and Windows we send a mouse_release event, however we don't do that here because we were already + // ignoring that from before. I.e. Carbon did not send the mouse release event, so we will not send the + // mouse release event. There are two ways to interpret this: + // 1. If we don't send the mouse release event, the widget might get into an inconsistent state, i.e. it + // might be waiting for a release event that will never arrive. + // 2. If we send the mouse release event, then the widget might decide to trigger an action that is not + // supposed to trigger because it is not visible. + if(widget == qt_button_down) + qt_button_down = 0; +#endif // QT_MAC_USE_COCOA if (spontaneous) widget->setAttribute(Qt::WA_Mapped, false); else diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index c7acf69..5bce17f 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -152,6 +152,7 @@ static bool qt_mac_raise_process = true; static OSWindowRef qt_root_win = 0; QWidget *mac_mouse_grabber = 0; QWidget *mac_keyboard_grabber = 0; +extern QPointer qt_button_down; //qapplication_mac.cpp #ifndef QT_MAC_USE_COCOA #ifdef QT_NAMESPACE @@ -866,7 +867,6 @@ OSStatus QWidgetPrivate::qt_window_event(EventHandlerCallRef er, EventRef event, & ~Qt::WindowMaximized)); QApplication::sendSpontaneousEvent(widget, &e); } - extern QPointer qt_button_down; //qapplication_mac.cpp qt_button_down = 0; } else if(ekind == kEventWindowCollapsed) { if (!widget->isMinimized()) { @@ -894,7 +894,6 @@ OSStatus QWidgetPrivate::qt_window_event(EventHandlerCallRef er, EventRef event, //we send a hide to be like X11/Windows QEvent e(QEvent::Hide); QApplication::sendSpontaneousEvent(widget, &e); - extern QPointer qt_button_down; //qapplication_mac.cpp qt_button_down = 0; } else if(ekind == kEventWindowToolbarSwitchMode) { macSendToolbarChangeEvent(widget); @@ -1519,7 +1518,6 @@ OSStatus QWidgetPrivate::qt_widget_event(EventHandlerCallRef er, EventRef event, if (widget) { qt_event_request_window_change(widget); if (!HIViewIsVisible(HIViewRef(widget->winId()))) { - extern QPointer qt_button_down; //qapplication_mac.cpp if (widget == qt_button_down) qt_button_down = 0; } @@ -1528,7 +1526,6 @@ OSStatus QWidgetPrivate::qt_widget_event(EventHandlerCallRef er, EventRef event, break; } case kEventClassMouse: { bool send_to_app = false; - extern QPointer qt_button_down; //qapplication_mac.cpp if(qt_button_down) send_to_app = true; if(send_to_app) { @@ -3405,7 +3402,6 @@ void QWidgetPrivate::hide_sys() Q_Q(QWidget); if((q->windowType() == Qt::Desktop)) //you can't hide the desktop! return; - QMacCocoaAutoReleasePool pool; if(q->isWindow()) { OSWindowRef window = qt_mac_window_for(q); -- cgit v0.12 From ffc3dc445afe38d006e1fb036b9b90ff19fa204e Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 2 Mar 2010 15:20:06 +0100 Subject: Follow-up to c1b067e: fix aliasing in QReadWriteLock too. The same pattern used in QMutexLocker was used in QReadLocker and QWriteLocker. Reviewed-by: Trust Me --- src/corelib/thread/qreadwritelock.h | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/src/corelib/thread/qreadwritelock.h b/src/corelib/thread/qreadwritelock.h index 278b8d4..9521ac3 100644 --- a/src/corelib/thread/qreadwritelock.h +++ b/src/corelib/thread/qreadwritelock.h @@ -96,19 +96,19 @@ public: inline void unlock() { - if (q_lock) { + if (q_val) { if ((q_val & quintptr(1u)) == quintptr(1u)) { q_val &= ~quintptr(1u); - q_lock->unlock(); + readWriteLock()->unlock(); } } } inline void relock() { - if (q_lock) { + if (q_val) { if ((q_val & quintptr(1u)) == quintptr(0u)) { - q_lock->lockForRead(); + readWriteLock()->lockForRead(); q_val |= quintptr(1u); } } @@ -119,14 +119,11 @@ public: private: Q_DISABLE_COPY(QReadLocker) - union { - QReadWriteLock *q_lock; - quintptr q_val; - }; + quintptr q_val; }; inline QReadLocker::QReadLocker(QReadWriteLock *areadWriteLock) - : q_lock(areadWriteLock) + : q_val(reinterpret_cast(areadWriteLock)) { Q_ASSERT_X((q_val & quintptr(1u)) == quintptr(0), "QReadLocker", "QReadWriteLock pointer is misaligned"); @@ -143,19 +140,19 @@ public: inline void unlock() { - if (q_lock) { + if (q_val) { if ((q_val & quintptr(1u)) == quintptr(1u)) { q_val &= ~quintptr(1u); - q_lock->unlock(); + readWriteLock()->unlock(); } } } inline void relock() { - if (q_lock) { + if (q_val) { if ((q_val & quintptr(1u)) == quintptr(0u)) { - q_lock->lockForWrite(); + readWriteLock()->lockForWrite(); q_val |= quintptr(1u); } } @@ -167,14 +164,11 @@ public: private: Q_DISABLE_COPY(QWriteLocker) - union{ - QReadWriteLock *q_lock; - quintptr q_val; - }; + quintptr q_val; }; inline QWriteLocker::QWriteLocker(QReadWriteLock *areadWriteLock) - : q_lock(areadWriteLock) + : q_val(reinterpret_cast(areadWriteLock)) { Q_ASSERT_X((q_val & quintptr(1u)) == quintptr(0), "QWriteLocker", "QReadWriteLock pointer is misaligned"); -- cgit v0.12 From f006691acc45a57e011e5827163c0b3759864bf7 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 2 Mar 2010 17:18:26 +0100 Subject: make the fallback value of QMAKE_QMAKE absolute inspired by the pbx generator. currently this has no effect, as all generators build their own fallbacks anyway. Reviewed-by: mariusSO --- qmake/project.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qmake/project.cpp b/qmake/project.cpp index cf1c365..9e6db10 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -3139,7 +3139,8 @@ QStringList &QMakeProject::values(const QString &_var, QMap Date: Tue, 2 Mar 2010 17:10:46 +0100 Subject: don't have every generator duplicate the QMAKE_QMAKE logic Reviewed-by: mariusSO --- qmake/generators/mac/pbuilder_pbx.cpp | 4 +--- qmake/generators/makefile.cpp | 12 +++++------- qmake/generators/symbian/symmake_abld.cpp | 2 +- qmake/generators/symbian/symmake_sbsv2.cpp | 2 +- qmake/generators/unix/unixmake.cpp | 2 -- qmake/generators/unix/unixmake2.cpp | 4 ++-- qmake/generators/win32/borland_bmake.cpp | 2 -- qmake/generators/win32/mingw_make.cpp | 4 +--- qmake/generators/win32/msvc_nmake.cpp | 2 -- qmake/generators/win32/winmakefile.cpp | 3 +-- 10 files changed, 12 insertions(+), 25 deletions(-) diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp index ac9fa99..1a7391b 100644 --- a/qmake/generators/mac/pbuilder_pbx.cpp +++ b/qmake/generators/mac/pbuilder_pbx.cpp @@ -523,9 +523,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) debug_msg(1, "pbuilder: Creating file: %s", mkfile.toLatin1().constData()); QTextStream mkt(&mkf); writeHeader(mkt); - mkt << "QMAKE = " << (project->isEmpty("QMAKE_QMAKE") ? - QString((QLibraryInfo::location(QLibraryInfo::BinariesPath) + "/qmake")) : - var("QMAKE_QMAKE")) << endl; + mkt << "QMAKE = " << var("QMAKE_QMAKE") << endl; writeMakeQmake(mkt); mkt.flush(); mkf.close(); diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index a8c1c3c..b9d2445 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -806,9 +806,8 @@ MakefileGenerator::init() } // escape qmake command - if (!project->isEmpty("QMAKE_QMAKE")) { - project->values("QMAKE_QMAKE") = escapeFilePaths(project->values("QMAKE_QMAKE")); - } + QStringList &qmk = project->values("QMAKE_QMAKE"); + qmk = escapeFilePaths(qmk); } bool @@ -2097,7 +2096,7 @@ MakefileGenerator::writeExtraVariables(QTextStream &t) bool MakefileGenerator::writeStubMakefile(QTextStream &t) { - t << "QMAKE = " << (project->isEmpty("QMAKE_QMAKE") ? QString("qmake") : var("QMAKE_QMAKE")) << endl; + t << "QMAKE = " << var("QMAKE_QMAKE") << endl; QStringList &qut = project->values("QMAKE_EXTRA_TARGETS"); for(QStringList::ConstIterator it = qut.begin(); it != qut.end(); ++it) t << *it << " "; @@ -2212,8 +2211,7 @@ MakefileGenerator::writeHeader(QTextStream &t) t << "# Project: " << fileFixify(project->projectFile()) << endl; t << "# Template: " << var("TEMPLATE") << endl; if(!project->isActiveConfig("build_pass")) - t << "# Command: " << build_args().replace("$(QMAKE)", - (project->isEmpty("QMAKE_QMAKE") ? QString("qmake") : var("QMAKE_QMAKE"))) << endl; + t << "# Command: " << build_args().replace("$(QMAKE)", var("QMAKE_QMAKE")) << endl; t << "#############################################################################" << endl; t << endl; } @@ -2346,7 +2344,7 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QListisEmpty("MAKEFILE")) project->values("MAKEFILE").append("Makefile"); - if(project->isEmpty("QMAKE_QMAKE")) - project->values("QMAKE_QMAKE").append("qmake"); if(project->values("QMAKE_INTERNAL_QMAKE_DEPS").indexOf("qmake_all") == -1) project->values("QMAKE_INTERNAL_QMAKE_DEPS").append("qmake_all"); return; /* subdirs is done */ diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp index 025882e..5def030 100644 --- a/qmake/generators/unix/unixmake2.cpp +++ b/qmake/generators/unix/unixmake2.cpp @@ -81,7 +81,7 @@ UnixMakefileGenerator::writeMakefile(QTextStream &t) writeHeader(t); if(!project->values("QMAKE_FAILED_REQUIREMENTS").isEmpty()) { - t << "QMAKE = " << (project->isEmpty("QMAKE_QMAKE") ? QString("qmake") : var("QMAKE_QMAKE")) << endl; + t << "QMAKE = " << var("QMAKE_QMAKE") << endl; QStringList &qut = project->values("QMAKE_EXTRA_TARGETS"); for(QStringList::ConstIterator it = qut.begin(); it != qut.end(); ++it) t << *it << " "; @@ -154,7 +154,7 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t) t << "AR = " << var("QMAKE_AR") << endl; t << "RANLIB = " << var("QMAKE_RANLIB") << endl; - t << "QMAKE = " << (project->isEmpty("QMAKE_QMAKE") ? QString("qmake") : var("QMAKE_QMAKE")) << endl; + t << "QMAKE = " << var("QMAKE_QMAKE") << endl; t << "TAR = " << var("QMAKE_TAR") << endl; t << "COMPRESS = " << var("QMAKE_GZIP") << endl; if(project->isActiveConfig("compile_libtool")) diff --git a/qmake/generators/win32/borland_bmake.cpp b/qmake/generators/win32/borland_bmake.cpp index 9208e1d..b5c33c4 100644 --- a/qmake/generators/win32/borland_bmake.cpp +++ b/qmake/generators/win32/borland_bmake.cpp @@ -115,8 +115,6 @@ BorlandMakefileGenerator::init() project->values("QMAKE_INSTALL_DIR").append("$(COPY_DIR)"); if(project->values("MAKEFILE").isEmpty()) project->values("MAKEFILE").append("Makefile"); - if(project->values("QMAKE_QMAKE").isEmpty()) - project->values("QMAKE_QMAKE").append("qmake"); return; } diff --git a/qmake/generators/win32/mingw_make.cpp b/qmake/generators/win32/mingw_make.cpp index e1f502f..fd43145 100644 --- a/qmake/generators/win32/mingw_make.cpp +++ b/qmake/generators/win32/mingw_make.cpp @@ -143,7 +143,7 @@ bool MingwMakefileGenerator::writeMakefile(QTextStream &t) if(project->first("TEMPLATE") == "app" || project->first("TEMPLATE") == "lib") { if(Option::mkfile::do_stub_makefile) { - t << "QMAKE = " << (project->isEmpty("QMAKE_QMAKE") ? QString("qmake") : var("QMAKE_QMAKE")) << endl; + t << "QMAKE = " << var("QMAKE_QMAKE") << endl; QStringList &qut = project->values("QMAKE_EXTRA_TARGETS"); for(QStringList::ConstIterator it = qut.begin(); it != qut.end(); ++it) t << *it << " "; @@ -248,8 +248,6 @@ void MingwMakefileGenerator::init() project->values("QMAKE_INSTALL_DIR").append("$(COPY_DIR)"); if(project->values("MAKEFILE").isEmpty()) project->values("MAKEFILE").append("Makefile"); - if(project->values("QMAKE_QMAKE").isEmpty()) - project->values("QMAKE_QMAKE").append("qmake"); return; } diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp index 7566b23..92e8aeb 100644 --- a/qmake/generators/win32/msvc_nmake.cpp +++ b/qmake/generators/win32/msvc_nmake.cpp @@ -156,8 +156,6 @@ void NmakeMakefileGenerator::init() MakefileGenerator::init(); if(project->values("MAKEFILE").isEmpty()) project->values("MAKEFILE").append("Makefile"); - if(project->values("QMAKE_QMAKE").isEmpty()) - project->values("QMAKE_QMAKE").append("qmake"); if(project->isEmpty("QMAKE_COPY_FILE")) project->values("QMAKE_COPY_FILE").append("$(COPY)"); if(project->isEmpty("QMAKE_COPY_DIR")) diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index 9998c1f..44fef5d 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -591,8 +591,7 @@ void Win32MakefileGenerator::writeStandardParts(QTextStream &t) writeIncPart(t); writeLibsPart(t); - t << "QMAKE = " << (project->isEmpty("QMAKE_QMAKE") ? QString("qmake") : - Option::fixPathToTargetOS(var("QMAKE_QMAKE"), false)) << endl; + t << "QMAKE = " << var("QMAKE_QMAKE") << endl; t << "IDC = " << (project->isEmpty("QMAKE_IDC") ? QString("idc") : Option::fixPathToTargetOS(var("QMAKE_IDC"), false)) << endl; t << "IDL = " << (project->isEmpty("QMAKE_IDL") ? QString("midl") : -- cgit v0.12 From 509ac7e069bf17f2725dcebdeb8e9520b98b0e15 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Wed, 3 Mar 2010 11:35:33 +0100 Subject: qdoc3: Trying to find a bug that causes a crash. It doesn't crash on OS X, but it does on some other platforms. If you run into this crash running qdoc3, you can work around it by commenting out line 1539 in tools/qdoc3/htmlgenerator.cpp The line to comment out is: generateQmlInheritedBy(qml_cn, marker); --- tools/qdoc3/generator.cpp | 10 +++------- tools/qdoc3/node.cpp | 5 ++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp index 0ef5156..c8a39ef 100644 --- a/tools/qdoc3/generator.cpp +++ b/tools/qdoc3/generator.cpp @@ -1190,19 +1190,15 @@ void Generator::appendSortedQmlNames(Text& text, const NodeList& subs, CodeMarker *marker) { - NodeList::ConstIterator r; QMap classMap; int index = 0; qDebug() << "Generator::appendSortedQmlNames():" << base->name() << "is inherited by..."; - - r = subs.begin(); - while (r != subs.end()) { + for (int i = 0; i < subs.size(); ++i) { Text t; - qDebug() << " " << (*r)->name(); - appendFullName(t, (*r), base, marker); + qDebug() << " " << subs[i]->name(); + appendFullName(t, subs[i], base, marker); classMap[t.toString().toLower()] = t; - ++r; } QStringList names = classMap.keys(); diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp index 7dda824..5415559 100644 --- a/tools/qdoc3/node.cpp +++ b/tools/qdoc3/node.cpp @@ -1315,8 +1315,11 @@ void QmlClassNode::addInheritedBy(const QString& base, Node* sub) void QmlClassNode::subclasses(const QString& base, NodeList& subs) { subs.clear(); - if (inheritedBy.contains(base)) + if (inheritedBy.count(base) > 0) { subs = inheritedBy.values(base); + qDebug() << "QmlClassNode::subclasses():" << inheritedBy.count(base) << base + << "subs:" << subs.size(); + } } /*! -- cgit v0.12 From a4af046157c7ef94990f9520c4611597ff271c57 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Wed, 3 Mar 2010 11:42:12 +0100 Subject: fixed a memory leak when restoring a state in QMainWindow Task-number: QTBUG-8631 --- src/gui/widgets/qdockarealayout.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/widgets/qdockarealayout.cpp b/src/gui/widgets/qdockarealayout.cpp index c1b1ea3..f44858a 100644 --- a/src/gui/widgets/qdockarealayout.cpp +++ b/src/gui/widgets/qdockarealayout.cpp @@ -1985,7 +1985,10 @@ bool QDockAreaLayoutInfo::restoreState(QDataStream &stream, QList emit widget->dockLocationChanged(toDockWidgetArea(dockPos)); } } - + if (testing) { + //was it is not really added to the layout, we need to delete the object here + delete item.widgetItem; + } } } else if (nextMarker == SequenceMarker) { int dummy; -- cgit v0.12 From 24cf789b68f21b2d1ea31580e55c91a2cae25a12 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Wed, 3 Mar 2010 11:02:11 +0100 Subject: Fix compilation of Q_DECLARE_METATYPE(QVariant) by introducing QMetaType::QVariant After 03daf059647c0a0222e8774b0a083f58c8e64934 With the recent change in QMetaType, qRegisterMetaType instantiates QMetaTypeId2, which itself instantiates QMetaTypeId if T is not builtin into QMetaType. But qRegisterMetaType is called in qvariant.h which makes further call to Q_DECLARE_METATYPE(QVariant) to fail as QMetaTypeId would have been instantied before The solution is to make QVariant a builtin type. Reviewed-by: Thierry --- src/corelib/kernel/qmetatype.cpp | 15 +++++++++++++++ src/corelib/kernel/qmetatype.h | 5 ++++- src/corelib/kernel/qvariant.h | 3 +-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index be506b4..8f2d025 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -133,6 +133,7 @@ QT_BEGIN_NAMESPACE \value Float \c float \value QObjectStar QObject * \value QWidgetStar QWidget * + \value QVariant QVariant \value QColorGroup QColorGroup \value QCursor QCursor @@ -300,6 +301,7 @@ static const struct { const char * typeName; int typeNameLength; int type; } typ QT_ADD_STATIC_METATYPE("float", QMetaType::Float), QT_ADD_STATIC_METATYPE("QObject*", QMetaType::QObjectStar), QT_ADD_STATIC_METATYPE("QWidget*", QMetaType::QWidgetStar), + QT_ADD_STATIC_METATYPE("QVariant", QMetaType::QVariant), /* Type aliases - order doesn't matter */ QT_ADD_STATIC_METATYPE("unsigned long", QMetaType::ULong), @@ -686,6 +688,9 @@ bool QMetaType::save(QDataStream &stream, int type, const void *data) case QMetaType::QVariantList: stream << *static_cast(data); break; + case QMetaType::QVariant: + stream << *static_cast(data); + break; #endif case QMetaType::QByteArray: stream << *static_cast(data); @@ -888,6 +893,9 @@ bool QMetaType::load(QDataStream &stream, int type, void *data) case QMetaType::QVariantList: stream >> *static_cast< NS(QVariantList)*>(data); break; + case QMetaType::QVariant: + stream >> *static_cast< NS(QVariant)*>(data); + break; #endif case QMetaType::QByteArray: stream >> *static_cast< NS(QByteArray)*>(data); @@ -1055,6 +1063,8 @@ void *QMetaType::construct(int type, const void *copy) return new NS(QVariantHash)(*static_cast(copy)); case QMetaType::QVariantList: return new NS(QVariantList)(*static_cast(copy)); + case QMetaType::QVariant: + return new NS(QVariant)(*static_cast(copy)); #endif case QMetaType::QByteArray: return new NS(QByteArray)(*static_cast(copy)); @@ -1150,6 +1160,8 @@ void *QMetaType::construct(int type, const void *copy) return new NS(QVariantHash); case QMetaType::QVariantList: return new NS(QVariantList); + case QMetaType::QVariant: + return new NS(QVariant); #endif case QMetaType::QByteArray: return new NS(QByteArray); @@ -1291,6 +1303,9 @@ void QMetaType::destroy(int type, void *data) case QMetaType::QVariantList: delete static_cast< NS(QVariantList)* >(data); break; + case QMetaType::QVariant: + delete static_cast< NS(QVariant)* >(data); + break; #endif case QMetaType::QByteArray: delete static_cast< NS(QByteArray)* >(data); diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 2ed4a1f..98ed4bd 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -86,7 +86,8 @@ public: FirstCoreExtType = 128 /* VoidStar */, VoidStar = 128, Long = 129, Short = 130, Char = 131, ULong = 132, UShort = 133, UChar = 134, Float = 135, QObjectStar = 136, QWidgetStar = 137, - LastCoreExtType = QWidgetStar, + QVariant = 138, + LastCoreExtType = QVariant, // This logic must match the one in qglobal.h #if defined(QT_COORD_TYPE) @@ -353,6 +354,7 @@ class QVector2D; class QVector3D; class QVector4D; class QQuaternion; +class QVariant; QT_END_NAMESPACE @@ -421,6 +423,7 @@ Q_DECLARE_BUILTIN_METATYPE(QVector2D, QVector2D) Q_DECLARE_BUILTIN_METATYPE(QVector3D, QVector3D) Q_DECLARE_BUILTIN_METATYPE(QVector4D, QVector4D) Q_DECLARE_BUILTIN_METATYPE(QQuaternion, QQuaternion) +Q_DECLARE_BUILTIN_METATYPE(QVariant, QVariant) QT_END_HEADER diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 9628dbf..cb2825c 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -589,8 +589,7 @@ template inline T qvariant_cast(const QVariant &v) template<> inline QVariant qvariant_cast(const QVariant &v) { - static const int vid = qRegisterMetaType("QVariant"); - if (vid == v.userType()) + if (v.userType() == QMetaType::QVariant) return *reinterpret_cast(v.constData()); return v; } -- cgit v0.12 From 7a6f492a6dcf9140eda309dcdff6e0f8d321df19 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Wed, 3 Mar 2010 11:07:26 +0100 Subject: Fix QVariant autotest After 03daf059647c0a0222e8774b0a083f58c8e64934, typedef of int are just aliases to int, and therefor we need to use a real custom type for the test now Reviewed-by: Thierry --- tests/auto/qvariant/tst_qvariant.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tests/auto/qvariant/tst_qvariant.cpp b/tests/auto/qvariant/tst_qvariant.cpp index a316dda..1a4182f 100644 --- a/tests/auto/qvariant/tst_qvariant.cpp +++ b/tests/auto/qvariant/tst_qvariant.cpp @@ -2518,15 +2518,23 @@ void tst_QVariant::variant_to() QCOMPARE(qVariantFromValue(0.25f).toDouble(), 0.25); } +struct Blah { int i; }; + +QDataStream& operator>>(QDataStream& s, Blah& c) +{ return (s >> c.i); } + +QDataStream& operator<<(QDataStream& s, const Blah& c) +{ return (s << c.i); } + void tst_QVariant::saveLoadCustomTypes() { QByteArray data; - int i = 42; - int tp = qRegisterMetaType("Blah"); + Blah i = { 42 }; + int tp = qRegisterMetaType("Blah"); QVariant v = QVariant(tp, &i); - qRegisterMetaTypeStreamOperators("Blah"); + qRegisterMetaTypeStreamOperators("Blah"); QCOMPARE(v.userType(), tp); QVERIFY(v.type() == QVariant::UserType); -- cgit v0.12 From 9957e85e37345e946ecc67196d65fbca867a2001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Lind?= Date: Wed, 3 Mar 2010 10:34:44 +0100 Subject: Add config.test for multimedia/qml using pkg-config from pri file is not good for cross-compiling Reviewed-by: paul --- config.tests/unix/pulseaudio/pulseaudio.pro | 4 ++ config.tests/unix/pulseaudio/pulseaudiotest.cpp | 49 +++++++++++++++++++++++++ configure | 15 ++++++++ src/multimedia/qml/qml.pri | 20 +++++----- 4 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 config.tests/unix/pulseaudio/pulseaudio.pro create mode 100644 config.tests/unix/pulseaudio/pulseaudiotest.cpp diff --git a/config.tests/unix/pulseaudio/pulseaudio.pro b/config.tests/unix/pulseaudio/pulseaudio.pro new file mode 100644 index 0000000..698a35f --- /dev/null +++ b/config.tests/unix/pulseaudio/pulseaudio.pro @@ -0,0 +1,4 @@ +SOURCES = pulseaudiotest.cpp +LIBS+=-lpulse +CONFIG -= qt dylib +mac:CONFIG -= app_bundle diff --git a/config.tests/unix/pulseaudio/pulseaudiotest.cpp b/config.tests/unix/pulseaudio/pulseaudiotest.cpp new file mode 100644 index 0000000..eed88da --- /dev/null +++ b/config.tests/unix/pulseaudio/pulseaudiotest.cpp @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** 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 documentation 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 + +int main(int ,char **) +{ + pa_threaded_mainloop *mainloop = pa_threaded_mainloop_new(); + return 0; +} + diff --git a/configure b/configure index 2312165..7ac4ff0 100755 --- a/configure +++ b/configure @@ -784,6 +784,7 @@ OPT_HELP= CFG_SILENT=no CFG_GRAPHICS_SYSTEM=default CFG_ALSA=auto +CFG_PULSEAUDIO=auto CFG_NETWORKMANAGER=auto CFG_COREWLAN=auto @@ -5945,6 +5946,14 @@ if [ "$CFG_ALSA" = "auto" ]; then fi fi +if [ "$CFG_PULSEAUDIO" = "auto" ]; then + if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/pulseaudio "pulseaudio" $L_FLAGS $I_FLAGS $l_FLAGS; then + CFG_PULSEAUDIO=yes + else + CFG_PULSEAUDIO=no + fi +fi + if [ "$CFG_NETWORKMANAGER" = "auto" ]; then if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/networkmanager "NetworkManager" $L_FLAGS $I_FLAGS $l_FLAGS; then CFG_NETWORKMANAGER=yes @@ -6439,6 +6448,10 @@ if [ "$CFG_ALSA" = "yes" ]; then QT_CONFIG="$QT_CONFIG alsa" fi +if [ "$CFG_PULSEAUDIO" = "yes" ]; then + QT_CONFIG="$QT_CONFIG pulseaudio" +fi + if [ "$CFG_NETWORKMANAGER" = "yes" ]; then QT_CONFIG="$QT_CONFIG networkmanager" fi @@ -7154,6 +7167,7 @@ fi [ "$CFG_XRANDR" = "runtime" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_RUNTIME_XRANDR" [ "$CFG_XINPUT" = "runtime" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_RUNTIME_XINPUT" [ "$CFG_ALSA" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_ALSA" +[ "$CFG_PULSEAUDIO" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_PULSEAUDIO" [ "$CFG_NETWORKMANAGER" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_NETWORKMANAGER" [ "$CFG_COREWLAN" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_COREWLAN" @@ -7657,6 +7671,7 @@ elif [ "$CFG_OPENSSL" = "linked" ]; then fi echo "OpenSSL support ........ $CFG_OPENSSL $OPENSSL_LINKAGE" echo "Alsa support ........... $CFG_ALSA" +echo "Pulse Audio support .... $CFG_PULSEAUDIO" echo "NetworkManager support . $CFG_NETWORKMANAGER" if [ "$PLATFORM_MAC" = "yes" ]; then echo "CoreWlan support ....... $CFG_COREWLAN" diff --git a/src/multimedia/qml/qml.pri b/src/multimedia/qml/qml.pri index d0ff71d..d7aef1a 100644 --- a/src/multimedia/qml/qml.pri +++ b/src/multimedia/qml/qml.pri @@ -2,15 +2,17 @@ contains(QT_CONFIG, declarative) { QT += declarative - system(pkg-config --exists \'libpulse >= 0.9.10\') { - DEFINES += QT_MULTIMEDIA_PULSEAUDIO - HEADERS += $$PWD/qsoundeffect_pulse_p.h - SOURCES += $$PWD/qsoundeffect_pulse_p.cpp - LIBS += -lpulse - } else:x11 { - DEFINES += QT_MULTIMEDIA_QMEDIAPLAYER - HEADERS += $$PWD/qsoundeffect_qmedia_p.h - SOURCES += $$PWD/qsoundeffect_qmedia_p.cpp + unix { + unix:contains(QT_CONFIG, pulseaudio) { + DEFINES += QT_MULTIMEDIA_PULSEAUDIO + HEADERS += $$PWD/qsoundeffect_pulse_p.h + SOURCES += $$PWD/qsoundeffect_pulse_p.cpp + LIBS += -lpulse + } else { + DEFINES += QT_MULTIMEDIA_QMEDIAPLAYER + HEADERS += $$PWD/qsoundeffect_qmedia_p.h + SOURCES += $$PWD/qsoundeffect_qmedia_p.cpp + } } else { HEADERS += $$PWD/qsoundeffect_qsound_p.h SOURCES += $$PWD/qsoundeffect_qsound_p.cpp -- cgit v0.12 From 388bd11da343f5e7bc9928bc1151de18bc01fe7f Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Wed, 3 Mar 2010 11:56:56 +0100 Subject: Revert "Fixes crash when destroying a QGraphicsItem." The patch was wrong. The new one is pushed into 4.6. The old one is reverted to avoid merge conflicts. This reverts commit a7ef2d899d711d750238a8d69284da808188b407. --- src/gui/graphicsview/qgraphicsitem.cpp | 5 +-- tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 57 -------------------------- 2 files changed, 2 insertions(+), 60 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 5735cd6..4f06f80 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -3179,9 +3179,8 @@ void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool clim */ void QGraphicsItem::clearFocus() { - // Pass focus to the closest parent focus scope when clearing focus - // from a focus scope. - if (!d_ptr->inDestructor && (d_ptr->flags & ItemIsFocusScope)) { + // Pass focus to the closest parent focus scope. + if (!d_ptr->inDestructor) { QGraphicsItem *p = d_ptr->parent; while (p) { if (p->flags() & ItemIsFocusScope) { diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index 269ec24..7c1b97e 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -438,7 +438,6 @@ private slots: void QTBUG_6738_missingUpdateWithSetParent(); void QTBUG_7714_fullUpdateDiscardingOpacityUpdate2(); void QT_2653_fullUpdateDiscardingOpacityUpdate(); - void QT_2649_focusScope(); private: QList paintedItems; @@ -10003,61 +10002,5 @@ void tst_QGraphicsItem::QTBUG_7714_fullUpdateDiscardingOpacityUpdate2() QTRY_COMPARE(view.repaints, 1); } -void tst_QGraphicsItem::QT_2649_focusScope() -{ - QGraphicsScene *scene = new QGraphicsScene; - - QGraphicsRectItem *subFocusItem = new QGraphicsRectItem; - subFocusItem->setFlags(QGraphicsItem::ItemIsFocusable); - subFocusItem->setFocus(); - QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); - - QGraphicsRectItem *scope = new QGraphicsRectItem; - scope->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemIsFocusScope); - scope->setFocus(); - subFocusItem->setParentItem(scope); - QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); - QCOMPARE(scope->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); - - QGraphicsRectItem *rootItem = new QGraphicsRectItem; - rootItem->setFlags(QGraphicsItem::ItemIsFocusable); - scope->setParentItem(rootItem); - QCOMPARE(rootItem->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(rootItem->focusScopeItem(), (QGraphicsItem *)0); - QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); - QCOMPARE(scope->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); - - scene->addItem(rootItem); - - QEvent windowActivate(QEvent::WindowActivate); - qApp->sendEvent(scene, &windowActivate); - scene->setFocus(); - - QCOMPARE(rootItem->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(scope->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(rootItem->focusScopeItem(), (QGraphicsItem *)0); - QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); - QVERIFY(subFocusItem->hasFocus()); - - //If we hide the focusScope, the entire subFocus chain should be cleared - scope->hide(); - - QCOMPARE(rootItem->focusItem(), (QGraphicsItem *)0); - QCOMPARE(scope->focusItem(), (QGraphicsItem *)0); - QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)0); - QCOMPARE(rootItem->focusScopeItem(), (QGraphicsItem *)0); - QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); - QVERIFY(!subFocusItem->hasFocus()); - - delete scene; -} - QTEST_MAIN(tst_QGraphicsItem) #include "tst_qgraphicsitem.moc" -- cgit v0.12 From 971f19473a7e9c35f14140235c2be3b68006b5f2 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Wed, 3 Mar 2010 12:05:15 +0100 Subject: Properly fixes crash when destroying a QGraphicsItem. The focus is now properly cleared when hiding or showing focus scopes or when a child of a focus scope is destroyed. No change of behavior in how focus scope works for QML. Autotest included. Task-number: QT-2649 Reviewed-by: Andreas Aardal Hanssen --- src/gui/graphicsview/qgraphicsitem.cpp | 103 ++++++++++++++++--------- src/gui/graphicsview/qgraphicsitem_p.h | 3 +- tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 68 ++++++++++++++++ 3 files changed, 137 insertions(+), 37 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 368af58..f3c90ca 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -641,10 +641,10 @@ are children of a modal panel are not blocked. The values are: - + \value NonModal The panel is not modal and does not block input to other panels. This is the default value for panels. - + \value PanelModal The panel is modal to a single item hierarchy and blocks input to its parent pane, all grandparent panels, and all siblings of its parent and grandparent panels. @@ -2181,6 +2181,7 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo } // Certain properties are dropped as an item becomes invisible. + bool hasFocus = q_ptr->hasFocus(); if (!newVisible) { if (scene) { if (scene->d_func()->mouseGrabberItems.contains(q)) @@ -2190,7 +2191,7 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo if (q->isPanel() && panelModality != QGraphicsItem::NonModal) scene->d_func()->leaveModal(q_ptr); } - if (q_ptr->hasFocus() && scene) { + if (hasFocus && scene) { // Hiding the closest non-panel ancestor of the focus item QGraphicsItem *focusItem = scene->focusItem(); bool clear = true; @@ -2203,7 +2204,7 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo } while ((focusItem = focusItem->parentWidget()) && !focusItem->isPanel()); } if (clear) - q_ptr->clearFocus(); + clearFocusHelper(/* giveFocusToParent = */ false); } if (q_ptr->isSelected()) q_ptr->setSelected(false); @@ -2241,26 +2242,45 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo } // Enable subfocus - if (scene && newVisible) { - QGraphicsItem *p = parent; - bool done = false; - while (p) { - if (p->flags() & QGraphicsItem::ItemIsFocusScope) { - QGraphicsItem *fsi = p->d_ptr->focusScopeItem; - if (q_ptr == fsi || q_ptr->isAncestorOf(fsi)) { - done = true; - while (fsi->d_ptr->focusScopeItem && fsi->d_ptr->focusScopeItem->isVisible()) - fsi = fsi->d_ptr->focusScopeItem; - scene->setFocusItem(fsi); + if (scene) { + if (newVisible) { + // Item is shown + QGraphicsItem *p = parent; + bool done = false; + while (p) { + if (p->flags() & QGraphicsItem::ItemIsFocusScope) { + QGraphicsItem *fsi = p->d_ptr->focusScopeItem; + if (q_ptr == fsi || q_ptr->isAncestorOf(fsi)) { + done = true; + while (fsi->d_ptr->focusScopeItem && fsi->d_ptr->focusScopeItem->isVisible()) + fsi = fsi->d_ptr->focusScopeItem; + fsi->d_ptr->setFocusHelper(Qt::OtherFocusReason, /* climb = */ true, + /* focusFromShow = */ true); + } + break; } - break; + p = p->d_ptr->parent; } - p = p->d_ptr->parent; - } - if (!done) { - QGraphicsItem *fi = subFocusItem; - if (fi && fi != scene->focusItem()) { - scene->setFocusItem(fi); + if (!done) { + QGraphicsItem *fi = subFocusItem; + if (fi && fi != scene->focusItem()) { + scene->setFocusItem(fi); + } + } + } else { + // Item is hidden + if (hasFocus) { + QGraphicsItem *p = parent; + while (p) { + if (p->flags() & QGraphicsItem::ItemIsFocusScope) { + if (p->d_ptr->visible) { + p->d_ptr->setFocusHelper(Qt::OtherFocusReason, /* climb = */ true, + /* focusFromShow = */ true); + } + break; + } + p = p->d_ptr->parent; + } } } } @@ -3111,13 +3131,13 @@ bool QGraphicsItem::hasFocus() const */ void QGraphicsItem::setFocus(Qt::FocusReason focusReason) { - d_ptr->setFocusHelper(focusReason, /* climb = */ true); + d_ptr->setFocusHelper(focusReason, /* climb = */ true, /* focusFromShow = */ false); } /*! \internal */ -void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool climb) +void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool climb, bool focusFromShow) { // Disabled / unfocusable items cannot accept focus. if (!q_ptr->isEnabled() || !(flags & QGraphicsItem::ItemIsFocusable)) @@ -3137,7 +3157,7 @@ void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool clim while (p) { if (p->flags() & QGraphicsItem::ItemIsFocusScope) { p->d_ptr->focusScopeItem = q_ptr; - if (!p->focusItem()) { + if (!p->focusItem() && !focusFromShow) { // If you call setFocus on a child of a focus scope that // doesn't currently have a focus item, then stop. return; @@ -3178,24 +3198,35 @@ void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool clim */ void QGraphicsItem::clearFocus() { - // Pass focus to the closest parent focus scope. - if (!d_ptr->inDestructor) { - QGraphicsItem *p = d_ptr->parent; - while (p) { - if (p->flags() & ItemIsFocusScope) { - p->d_ptr->setFocusHelper(Qt::OtherFocusReason, /* climb = */ false); - return; + d_ptr->clearFocusHelper(/* giveFocusToParent = */ true); +} + +/*! + \internal +*/ +void QGraphicsItemPrivate::clearFocusHelper(bool giveFocusToParent) +{ + if (giveFocusToParent) { + // Pass focus to the closest parent focus scope + if (!inDestructor) { + QGraphicsItem *p = parent; + while (p) { + if (p->flags() & QGraphicsItem::ItemIsFocusScope) { + p->d_ptr->setFocusHelper(Qt::OtherFocusReason, /* climb = */ false, + /* focusFromShow = */ false); + return; + } + p = p->d_ptr->parent; } - p = p->d_ptr->parent; } } // Invisible items with focus must explicitly clear subfocus. - d_ptr->clearSubFocus(this); + clearSubFocus(q_ptr); - if (hasFocus()) { + if (q_ptr->hasFocus()) { // If this item has the scene's input focus, clear it. - d_ptr->scene->setFocusItem(0); + scene->setFocusItem(0); } } diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h index b3ca3b5..ea04e0b 100644 --- a/src/gui/graphicsview/qgraphicsitem_p.h +++ b/src/gui/graphicsview/qgraphicsitem_p.h @@ -414,7 +414,8 @@ public: inline void markParentDirty(bool updateBoundingRect = false); - void setFocusHelper(Qt::FocusReason focusReason, bool climb); + void setFocusHelper(Qt::FocusReason focusReason, bool climb, bool focusFromShow); + void clearFocusHelper(bool giveFocusToParent); void setSubFocus(QGraphicsItem *rootItem = 0); void clearSubFocus(QGraphicsItem *rootItem = 0); void resetFocusProxy(); diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index 7c1b97e..4d9f23f 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -438,6 +438,7 @@ private slots: void QTBUG_6738_missingUpdateWithSetParent(); void QTBUG_7714_fullUpdateDiscardingOpacityUpdate2(); void QT_2653_fullUpdateDiscardingOpacityUpdate(); + void QT_2649_focusScope(); private: QList paintedItems; @@ -10002,5 +10003,72 @@ void tst_QGraphicsItem::QTBUG_7714_fullUpdateDiscardingOpacityUpdate2() QTRY_COMPARE(view.repaints, 1); } +void tst_QGraphicsItem::QT_2649_focusScope() +{ + QGraphicsScene *scene = new QGraphicsScene; + + QGraphicsRectItem *subFocusItem = new QGraphicsRectItem; + subFocusItem->setFlags(QGraphicsItem::ItemIsFocusable); + subFocusItem->setFocus(); + QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); + + QGraphicsRectItem *scope = new QGraphicsRectItem; + scope->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemIsFocusScope); + scope->setFocus(); + subFocusItem->setParentItem(scope); + QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); + QCOMPARE(scope->focusItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); + + QGraphicsRectItem *rootItem = new QGraphicsRectItem; + rootItem->setFlags(QGraphicsItem::ItemIsFocusable); + scope->setParentItem(rootItem); + QCOMPARE(rootItem->focusItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(rootItem->focusScopeItem(), (QGraphicsItem *)0); + QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); + QCOMPARE(scope->focusItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); + + scene->addItem(rootItem); + + QEvent windowActivate(QEvent::WindowActivate); + qApp->sendEvent(scene, &windowActivate); + scene->setFocus(); + + QCOMPARE(rootItem->focusItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(scope->focusItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(rootItem->focusScopeItem(), (QGraphicsItem *)0); + QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); + QVERIFY(subFocusItem->hasFocus()); + + scope->hide(); + + QCOMPARE(rootItem->focusItem(), (QGraphicsItem *)0); + QCOMPARE(scope->focusItem(), (QGraphicsItem *)0); + QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)0); + QCOMPARE(rootItem->focusScopeItem(), (QGraphicsItem *)0); + QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); + QVERIFY(!subFocusItem->hasFocus()); + + scope->show(); + + QCOMPARE(rootItem->focusItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(scope->focusItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(rootItem->focusScopeItem(), (QGraphicsItem *)0); + QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); + QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); + QVERIFY(subFocusItem->hasFocus()); + + // This should not crash + scope->hide(); + delete scene; +} + QTEST_MAIN(tst_QGraphicsItem) #include "tst_qgraphicsitem.moc" -- cgit v0.12 From 4a5eaccce02dbabfd81e8809d453fc268cdba644 Mon Sep 17 00:00:00 2001 From: aavit Date: Tue, 2 Mar 2010 14:38:39 +0100 Subject: Some cleanup of outdated src/3rdparty stuff Reviewed-by: trustme --- src/3rdparty/README | 34 +- src/3rdparty/patches/freetype-2.3.5-config.patch | 265 --------------- src/3rdparty/patches/freetype-2.3.6-ascii.patch | 174 ---------- src/3rdparty/patches/freetype-2.3.6-vxworks.patch | 35 -- src/3rdparty/patches/libjpeg-6b-config.patch | 50 --- src/3rdparty/patches/libjpeg-6b-vxworks.patch | 23 -- .../patches/libpng-1.2.20-elf-visibility.patch | 17 - src/3rdparty/patches/libpng-1.2.20-vxworks.patch | 13 - src/3rdparty/patches/libtiff-3.8.2-config.patch | 374 --------------------- src/3rdparty/patches/libtiff-3.8.2-vxworks.patch | 11 - src/3rdparty/patches/sqlite-3.5.6-config.patch | 38 --- src/3rdparty/patches/sqlite-3.5.6-vxworks.patch | 68 ---- src/3rdparty/patches/sqlite-3.5.6-wince.patch | 19 -- 13 files changed, 15 insertions(+), 1106 deletions(-) delete mode 100644 src/3rdparty/patches/freetype-2.3.5-config.patch delete mode 100644 src/3rdparty/patches/freetype-2.3.6-ascii.patch delete mode 100644 src/3rdparty/patches/freetype-2.3.6-vxworks.patch delete mode 100644 src/3rdparty/patches/libjpeg-6b-config.patch delete mode 100644 src/3rdparty/patches/libjpeg-6b-vxworks.patch delete mode 100644 src/3rdparty/patches/libpng-1.2.20-elf-visibility.patch delete mode 100644 src/3rdparty/patches/libpng-1.2.20-vxworks.patch delete mode 100644 src/3rdparty/patches/libtiff-3.8.2-config.patch delete mode 100644 src/3rdparty/patches/libtiff-3.8.2-vxworks.patch delete mode 100644 src/3rdparty/patches/sqlite-3.5.6-config.patch delete mode 100644 src/3rdparty/patches/sqlite-3.5.6-vxworks.patch delete mode 100644 src/3rdparty/patches/sqlite-3.5.6-wince.patch diff --git a/src/3rdparty/README b/src/3rdparty/README index ef05674..0248db1 100644 --- a/src/3rdparty/README +++ b/src/3rdparty/README @@ -1,26 +1,22 @@ The libraries included here are the original packages, unpacked, and with their version number removed from the directory name (for version -information, see the README files in the directories). The following -have been removed: - - libjpeg - some source files, images, Makefiles, manual pages - libpng/contrib - a collection of examples and test-suite - libmng/bcb - a collection of files for the Borland compiler - libmng/contrib - a collection of projects that use libmng - libmng/special - configuration file for Mozilla integration - libtiff/contrib - a collection of additions to libtiff - libtiff/man - manual pages - libtiff/tools - a collection of command-line tools based on libtiff - zlib/contrib - a collection of non-zlib code - zlib/amiga - zlib for a platform not supported by Qt - zlib/as400 - zlib for a platform not supported by Qt - zlib/msdos - zlib for a platform not supported by Qt - zlib/old - zlib for a platform not supported by Qt - zlib/qnx - zlib packaging +information, see the README files in the directories). -Some patches are applied from time to time. Recent patches can be -found in the patches subdirectory. +Certain files and subdirectories of the original library packages that +are irrelevant to Qt may not be included here. Typically, those are +the standalone library configuration and make files, tools, test +files, contribs, documentation, and similar. +Patches may have been applied, typically for configuration and build +issues in the Qt framework. Such patches can be reviewed in the the +public git repository; they will appear in the commit logs of each +library directory, following the latest clean version update commit. + +The 'patches' subdirectory contains certain patches applied prior to +the start of the public git history, where the library has not been +updated since. + +-- The pvr2d.h & wsegl.h in the powervr directory are required for building the PowerVR plugin on Qt for Embedded Linux. These headers are for SGX diff --git a/src/3rdparty/patches/freetype-2.3.5-config.patch b/src/3rdparty/patches/freetype-2.3.5-config.patch deleted file mode 100644 index 2653467..0000000 --- a/src/3rdparty/patches/freetype-2.3.5-config.patch +++ /dev/null @@ -1,265 +0,0 @@ ---- builds/unix/ftconfig.h 1970-01-01 01:00:00.000000000 +0100 -+++ builds/unix/ftconfig.h 2007-07-15 00:00:00.000000000 +0200 -@@ -0,0 +1,262 @@ -+/* ftconfig.h. Generated by configure. */ -+/***************************************************************************/ -+/* */ -+/* ftconfig.in */ -+/* */ -+/* UNIX-specific configuration file (specification only). */ -+/* */ -+/* Copyright 1996-2000, 2002 by */ -+/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -+/* */ -+/* This file is part of the FreeType project, and may only be used, */ -+/* modified, and distributed under the terms of the FreeType project */ -+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -+/* this file you indicate that you have read the license and */ -+/* understand and accept it fully. */ -+/* */ -+/***************************************************************************/ -+ -+ -+ /*************************************************************************/ -+ /* */ -+ /* This header file contains a number of macro definitions that are used */ -+ /* by the rest of the engine. Most of the macros here are automatically */ -+ /* determined at compile time, and you should not need to change it to */ -+ /* port FreeType, except to compile the library with a non-ANSI */ -+ /* compiler. */ -+ /* */ -+ /* Note however that if some specific modifications are needed, we */ -+ /* advise you to place a modified copy in your build directory. */ -+ /* */ -+ /* The build directory is usually `freetype/builds/', and */ -+ /* contains system-specific files that are always included first when */ -+ /* building the library. */ -+ /* */ -+ /*************************************************************************/ -+ -+ -+#ifndef __FTCONFIG_H__ -+#define __FTCONFIG_H__ -+ -+#include -+#include FT_CONFIG_OPTIONS_H -+#include FT_CONFIG_STANDARD_LIBRARY_H -+ -+ -+FT_BEGIN_HEADER -+ -+ -+ /*************************************************************************/ -+ /* */ -+ /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ -+ /* */ -+ /* These macros can be toggled to suit a specific system. The current */ -+ /* ones are defaults used to compile FreeType in an ANSI C environment */ -+ /* (16bit compilers are also supported). Copy this file to your own */ -+ /* `freetype/builds/' directory, and edit it to port the engine. */ -+ /* */ -+ /*************************************************************************/ -+ -+ -+#define HAVE_UNISTD_H 1 -+#define HAVE_FCNTL_H 1 -+ -+#define SIZEOF_INT 4 -+#define SIZEOF_LONG 4 -+ -+#define FT_SIZEOF_INT SIZEOF_INT -+#define FT_SIZEOF_LONG SIZEOF_LONG -+ -+ -+ /* Preferred alignment of data */ -+#define FT_ALIGNMENT 8 -+ -+ -+ /* FT_UNUSED is a macro used to indicate that a given parameter is not */ -+ /* used -- this is only used to get rid of unpleasant compiler warnings */ -+#ifndef FT_UNUSED -+#define FT_UNUSED( arg ) ( (arg) = (arg) ) -+#endif -+ -+ -+ /*************************************************************************/ -+ /* */ -+ /* AUTOMATIC CONFIGURATION MACROS */ -+ /* */ -+ /* These macros are computed from the ones defined above. Don't touch */ -+ /* their definition, unless you know precisely what you are doing. No */ -+ /* porter should need to mess with them. */ -+ /* */ -+ /*************************************************************************/ -+ -+ -+ /*************************************************************************/ -+ /* */ -+ /* IntN types */ -+ /* */ -+ /* Used to guarantee the size of some specific integers. */ -+ /* */ -+ typedef signed short FT_Int16; -+ typedef unsigned short FT_UInt16; -+ -+#if FT_SIZEOF_INT == 4 -+ -+ typedef signed int FT_Int32; -+ typedef unsigned int FT_UInt32; -+ -+#elif FT_SIZEOF_LONG == 4 -+ -+ typedef signed long FT_Int32; -+ typedef unsigned long FT_UInt32; -+ -+#else -+#error "no 32bit type found -- please check your configuration files" -+#endif -+ -+#if FT_SIZEOF_LONG == 8 -+ -+ /* FT_LONG64 must be defined if a 64-bit type is available */ -+#define FT_LONG64 -+#define FT_INT64 long -+ -+#else -+ -+ /*************************************************************************/ -+ /* */ -+ /* Many compilers provide the non-ANSI `long long' 64-bit type. You can */ -+ /* activate it by defining the FTCALC_USE_LONG_LONG macro in */ -+ /* `ftoption.h'. */ -+ /* */ -+ /* Note that this will produce many -ansi warnings during library */ -+ /* compilation, and that in many cases, the generated code will be */ -+ /* neither smaller nor faster! */ -+ /* */ -+#ifdef FTCALC_USE_LONG_LONG -+ -+#define FT_LONG64 -+#define FT_INT64 long long -+ -+#endif /* FTCALC_USE_LONG_LONG */ -+#endif /* FT_SIZEOF_LONG == 8 */ -+ -+ -+#ifdef FT_MAKE_OPTION_SINGLE_OBJECT -+ -+#define FT_LOCAL( x ) static x -+#define FT_LOCAL_DEF( x ) static x -+ -+#else -+ -+#ifdef __cplusplus -+#define FT_LOCAL( x ) extern "C" x -+#define FT_LOCAL_DEF( x ) extern "C" x -+#else -+#define FT_LOCAL( x ) extern x -+#define FT_LOCAL_DEF( x ) extern x -+#endif -+ -+#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ -+ -+ -+#ifndef FT_BASE -+ -+#ifdef __cplusplus -+#define FT_BASE( x ) extern "C" x -+#else -+#define FT_BASE( x ) extern x -+#endif -+ -+#endif /* !FT_BASE */ -+ -+ -+#ifndef FT_BASE_DEF -+ -+#ifdef __cplusplus -+#define FT_BASE_DEF( x ) extern "C" x -+#else -+#define FT_BASE_DEF( x ) extern x -+#endif -+ -+#endif /* !FT_BASE_DEF */ -+ -+ -+#ifndef FT_EXPORT -+ -+#ifdef __cplusplus -+#define FT_EXPORT( x ) extern "C" x -+#else -+#define FT_EXPORT( x ) extern x -+#endif -+ -+#endif /* !FT_EXPORT */ -+ -+ -+#ifndef FT_EXPORT_DEF -+ -+#ifdef __cplusplus -+#define FT_EXPORT_DEF( x ) extern "C" x -+#else -+#define FT_EXPORT_DEF( x ) extern x -+#endif -+ -+#endif /* !FT_EXPORT_DEF */ -+ -+ -+#ifndef FT_EXPORT_VAR -+ -+#ifdef __cplusplus -+#define FT_EXPORT_VAR( x ) extern "C" x -+#else -+#define FT_EXPORT_VAR( x ) extern x -+#endif -+ -+#endif /* !FT_EXPORT_VAR */ -+ -+ /* The following macros are needed to compile the library with a */ -+ /* C++ compiler and with 16bit compilers. */ -+ /* */ -+ -+ /* This is special. Within C++, you must specify `extern "C"' for */ -+ /* functions which are used via function pointers, and you also */ -+ /* must do that for structures which contain function pointers to */ -+ /* assure C linkage -- it's not possible to have (local) anonymous */ -+ /* functions which are accessed by (global) function pointers. */ -+ /* */ -+ /* */ -+ /* FT_CALLBACK_DEF is used to _define_ a callback function. */ -+ /* */ -+ /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ -+ /* contains pointers to callback functions. */ -+ /* */ -+ /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ -+ /* that contains pointers to callback functions. */ -+ /* */ -+ /* */ -+ /* Some 16bit compilers have to redefine these macros to insert */ -+ /* the infamous `_cdecl' or `__fastcall' declarations. */ -+ /* */ -+#ifndef FT_CALLBACK_DEF -+#ifdef __cplusplus -+#define FT_CALLBACK_DEF( x ) extern "C" x -+#else -+#define FT_CALLBACK_DEF( x ) static x -+#endif -+#endif /* FT_CALLBACK_DEF */ -+ -+#ifndef FT_CALLBACK_TABLE -+#ifdef __cplusplus -+#define FT_CALLBACK_TABLE extern "C" -+#define FT_CALLBACK_TABLE_DEF extern "C" -+#else -+#define FT_CALLBACK_TABLE extern -+#define FT_CALLBACK_TABLE_DEF /* nothing */ -+#endif -+#endif /* FT_CALLBACK_TABLE */ -+ -+ -+FT_END_HEADER -+ -+#endif /* __FTCONFIG_H__ */ -+ -+ -+/* END */ diff --git a/src/3rdparty/patches/freetype-2.3.6-ascii.patch b/src/3rdparty/patches/freetype-2.3.6-ascii.patch deleted file mode 100644 index cc46296..0000000 --- a/src/3rdparty/patches/freetype-2.3.6-ascii.patch +++ /dev/null @@ -1,174 +0,0 @@ ---- include/freetype/ftbbox.h.orig 2007-10-20 15:27:57.000000000 +0200 -+++ include/freetype/ftbbox.h 2008-06-15 00:00:00.000000000 +0200 -@@ -61,7 +61,7 @@ - /* Computes the exact bounding box of an outline. This is slower */ - /* than computing the control box. However, it uses an advanced */ - /* algorithm which returns _very_ quickly when the two boxes */ -- /* coincide. Otherwise, the outline Bézier arcs are traversed to */ -+ /* coincide. Otherwise, the outline Bezier arcs are traversed to */ - /* extract their extrema. */ - /* */ - /* */ ---- include/freetype/ftglyph.h.orig 2008-04-13 23:58:59.000000000 +0200 -+++ include/freetype/ftglyph.h 2008-06-15 00:00:00.000000000 +0200 -@@ -354,10 +354,10 @@ - /* */ - /* */ - /* Return a glyph's `control box'. The control box encloses all the */ -- /* outline's points, including Bézier control points. Though it */ -+ /* outline's points, including Bezier control points. Though it */ - /* coincides with the exact bounding box for most glyphs, it can be */ - /* slightly larger in some situations (like when rotating an outline */ -- /* which contains Bézier outside arcs). */ -+ /* which contains Bezier outside arcs). */ - /* */ - /* Computing the control box is very fast, while getting the bounding */ - /* box can take much more time as it needs to walk over all segments */ ---- include/freetype/ftimage.h.orig 2008-05-31 08:46:38.000000000 +0200 -+++ include/freetype/ftimage.h 2008-06-15 00:00:00.000000000 +0200 -@@ -318,11 +318,11 @@ - /* */ - /* tags :: A pointer to an array of `n_points' chars, giving */ - /* each outline point's type. If bit 0 is unset, the */ -- /* point is `off' the curve, i.e., a Bézier control */ -+ /* point is `off' the curve, i.e., a Bezier control */ - /* point, while it is `on' when set. */ - /* */ - /* Bit 1 is meaningful for `off' points only. If set, */ -- /* it indicates a third-order Bézier arc control point; */ -+ /* it indicates a third-order Bezier arc control point; */ - /* and a second-order control point if unset. */ - /* */ - /* contours :: An array of `n_contours' shorts, giving the end */ -@@ -528,7 +528,7 @@ - /* A function pointer type use to describe the signature of a `conic */ - /* to' function during outline walking/decomposition. */ - /* */ -- /* A `conic to' is emitted to indicate a second-order Bézier arc in */ -+ /* A `conic to' is emitted to indicate a second-order Bezier arc in */ - /* the outline. */ - /* */ - /* */ -@@ -560,12 +560,12 @@ - /* A function pointer type used to describe the signature of a `cubic */ - /* to' function during outline walking/decomposition. */ - /* */ -- /* A `cubic to' is emitted to indicate a third-order Bézier arc. */ -+ /* A `cubic to' is emitted to indicate a third-order Bezier arc. */ - /* */ - /* */ -- /* control1 :: A pointer to the first Bézier control point. */ -+ /* control1 :: A pointer to the first Bezier control point. */ - /* */ -- /* control2 :: A pointer to the second Bézier control point. */ -+ /* control2 :: A pointer to the second Bezier control point. */ - /* */ - /* to :: A pointer to the target end point. */ - /* */ -@@ -591,7 +591,7 @@ - /* */ - /* */ - /* A structure to hold various function pointers used during outline */ -- /* decomposition in order to emit segments, conic, and cubic Béziers, */ -+ /* decomposition in order to emit segments, conic, and cubic Beziers, */ - /* as well as `move to' and `close to' operations. */ - /* */ - /* */ -@@ -599,9 +599,9 @@ - /* */ - /* line_to :: The segment emitter. */ - /* */ -- /* conic_to :: The second-order Bézier arc emitter. */ -+ /* conic_to :: The second-order Bezier arc emitter. */ - /* */ -- /* cubic_to :: The third-order Bézier arc emitter. */ -+ /* cubic_to :: The third-order Bezier arc emitter. */ - /* */ - /* shift :: The shift that is applied to coordinates before they */ - /* are sent to the emitter. */ -@@ -698,7 +698,7 @@ - /* */ - /* FT_GLYPH_FORMAT_OUTLINE :: */ - /* The glyph image is a vectorial outline made of line segments */ -- /* and Bézier arcs; it can be described as an @FT_Outline; you */ -+ /* and Bezier arcs; it can be described as an @FT_Outline; you */ - /* generally want to access the `outline' field of the */ - /* @FT_GlyphSlotRec structure to read it. */ - /* */ ---- include/freetype/ftoutln.h.orig 2008-05-29 00:05:07.000000000 +0200 -+++ include/freetype/ftoutln.h 2008-06-15 00:00:00.000000000 +0200 -@@ -85,7 +85,7 @@ - /* */ - /* */ - /* Walks over an outline's structure to decompose it into individual */ -- /* segments and Bézier arcs. This function is also able to emit */ -+ /* segments and Bezier arcs. This function is also able to emit */ - /* `move to' and `close to' operations to indicate the start and end */ - /* of new contours in the outline. */ - /* */ -@@ -213,10 +213,10 @@ - /* */ - /* */ - /* Returns an outline's `control box'. The control box encloses all */ -- /* the outline's points, including Bézier control points. Though it */ -+ /* the outline's points, including Bezier control points. Though it */ - /* coincides with the exact bounding box for most glyphs, it can be */ - /* slightly larger in some situations (like when rotating an outline */ -- /* which contains Bézier outside arcs). */ -+ /* which contains Bezier outside arcs). */ - /* */ - /* Computing the control box is very fast, while getting the bounding */ - /* box can take much more time as it needs to walk over all segments */ ---- include/freetype/ftstroke.h.orig 2008-05-29 00:06:54.000000000 +0200 -+++ include/freetype/ftstroke.h 2008-06-15 00:00:00.000000000 +0200 -@@ -407,7 +407,7 @@ - * FT_Stroker_ConicTo - * - * @description: -- * `Draw' a single quadratic Bézier in the stroker's current sub-path, -+ * `Draw' a single quadratic Bezier in the stroker's current sub-path, - * from the last position. - * - * @input: -@@ -415,7 +415,7 @@ - * The target stroker handle. - * - * control :: -- * A pointer to a Bézier control point. -+ * A pointer to a Bezier control point. - * - * to :: - * A pointer to the destination point. -@@ -439,7 +439,7 @@ - * FT_Stroker_CubicTo - * - * @description: -- * `Draw' a single cubic Bézier in the stroker's current sub-path, -+ * `Draw' a single cubic Bezier in the stroker's current sub-path, - * from the last position. - * - * @input: -@@ -447,10 +447,10 @@ - * The target stroker handle. - * - * control1 :: -- * A pointer to the first Bézier control point. -+ * A pointer to the first Bezier control point. - * - * control2 :: -- * A pointer to second Bézier control point. -+ * A pointer to second Bezier control point. - * - * to :: - * A pointer to the destination point. ---- include/freetype/ftwinfnt.h.orig 2008-05-28 23:27:19.000000000 +0200 -+++ include/freetype/ftwinfnt.h 2008-06-15 00:00:00.000000000 +0200 -@@ -77,7 +77,7 @@ - * Mac Roman encoding. - * - * FT_WinFNT_ID_OEM :: -- * From Michael Pöttgen : -+ * From Michael Poettgen : - * - * The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM - * is used for the charset of vector fonts, like `modern.fon', diff --git a/src/3rdparty/patches/freetype-2.3.6-vxworks.patch b/src/3rdparty/patches/freetype-2.3.6-vxworks.patch deleted file mode 100644 index 21e884c..0000000 --- a/src/3rdparty/patches/freetype-2.3.6-vxworks.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff --git builds/unix/ftsystem.c builds/unix/ftsystem.c -index 3a740fd..40fa8d0 100644 ---- builds/unix/ftsystem.c -+++ builds/unix/ftsystem.c -@@ -69,6 +69,9 @@ - #include - #include - -+#ifdef VXWORKS -+#include -+#endif - - /*************************************************************************/ - /* */ -@@ -238,7 +241,7 @@ - return FT_Err_Invalid_Stream_Handle; - - /* open the file */ -- file = open( filepathname, O_RDONLY ); -+ file = open( filepathname, O_RDONLY, 0); - if ( file < 0 ) - { - FT_ERROR(( "FT_Stream_Open:" )); -@@ -317,7 +320,11 @@ - - - read_count = read( file, -+#ifndef VXWORKS - stream->base + total_read_count, -+#else -+ (char *) stream->base + total_read_count, -+#endif - stream->size - total_read_count ); - - if ( read_count <= 0 ) diff --git a/src/3rdparty/patches/libjpeg-6b-config.patch b/src/3rdparty/patches/libjpeg-6b-config.patch deleted file mode 100644 index 3012b8f..0000000 --- a/src/3rdparty/patches/libjpeg-6b-config.patch +++ /dev/null @@ -1,50 +0,0 @@ ---- jconfig.h.orig 1970-01-01 01:00:00.000000000 +0100 -+++ jconfig.h 2006-06-15 00:00:00.000000000 +0200 -@@ -0,0 +1,47 @@ -+/* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 95 or NT. */ -+/* see jconfig.doc for explanations */ -+ -+#define HAVE_PROTOTYPES -+#define HAVE_UNSIGNED_CHAR -+#define HAVE_UNSIGNED_SHORT -+/* #define void char */ -+/* #define const */ -+#undef CHAR_IS_UNSIGNED -+#define HAVE_STDDEF_H -+#define HAVE_STDLIB_H -+#undef NEED_BSD_STRINGS -+#undef NEED_SYS_TYPES_H -+#undef NEED_FAR_POINTERS /* we presume a 32-bit flat memory model */ -+#undef NEED_SHORT_EXTERNAL_NAMES -+#undef INCOMPLETE_TYPES_BROKEN -+ -+#if defined(_WIN32) -+/* Define "boolean" as unsigned char, not int, per Windows custom */ -+#ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ -+typedef unsigned char boolean; -+#endif -+#define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */ -+#endif -+ -+ -+#ifdef JPEG_INTERNALS -+ -+#undef RIGHT_SHIFT_IS_UNSIGNED -+ -+#endif /* JPEG_INTERNALS */ -+ -+#ifdef JPEG_CJPEG_DJPEG -+ -+#define BMP_SUPPORTED /* BMP image file format */ -+#define GIF_SUPPORTED /* GIF image file format */ -+#define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */ -+#undef RLE_SUPPORTED /* Utah RLE image file format */ -+#define TARGA_SUPPORTED /* Targa image file format */ -+ -+#define TWO_FILE_COMMANDLINE /* optional */ -+#define USE_SETMODE /* Microsoft has setmode() */ -+#undef NEED_SIGNAL_CATCHER -+#undef DONT_USE_B_MODE -+#undef PROGRESS_REPORT /* optional */ -+ -+#endif /* JPEG_CJPEG_DJPEG */ diff --git a/src/3rdparty/patches/libjpeg-6b-vxworks.patch b/src/3rdparty/patches/libjpeg-6b-vxworks.patch deleted file mode 100644 index 263c8d0..0000000 --- a/src/3rdparty/patches/libjpeg-6b-vxworks.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git jmorecfg.h jmorecfg.h -index 54a7d1c..b0b5870 100644 ---- jmorecfg.h -+++ jmorecfg.h -@@ -157,7 +157,7 @@ typedef short INT16; - - /* INT32 must hold at least signed 32-bit values. */ - --#ifndef XMD_H /* X11/xmd.h correctly defines INT32 */ -+#if !defined(XMD_H) && !defined(VXWORKS) /* X11/xmd.h correctly defines INT32 */ - typedef long INT32; - #endif - -@@ -183,6 +183,9 @@ typedef unsigned int JDIMENSION; - /* a function called through method pointers: */ - #define METHODDEF(type) static type - /* a function used only in its module: */ -+#if defined(VXWORKS) && defined(LOCAL) -+# undef LOCAL -+#endif - #define LOCAL(type) static type - /* a function referenced thru EXTERNs: */ - #define GLOBAL(type) type diff --git a/src/3rdparty/patches/libpng-1.2.20-elf-visibility.patch b/src/3rdparty/patches/libpng-1.2.20-elf-visibility.patch deleted file mode 100644 index a374cbf..0000000 --- a/src/3rdparty/patches/libpng-1.2.20-elf-visibility.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- pngconf.h.orig 2007-09-08 05:22:56.000000000 +0200 -+++ pngconf.h 2007-09-09 00:00:00.000000000 +0200 -@@ -1375,6 +1375,14 @@ - # if 0 /* ... other platforms, with other meanings */ - # endif - # endif -+ -+# if !defined(PNG_IMPEXP) -+# include -+# if defined(QT_VISIBILITY_AVAILABLE) -+# define PNG_IMPEXP __attribute__((visibility("default"))) -+# endif -+# endif -+ - #endif - - #ifndef PNGAPI diff --git a/src/3rdparty/patches/libpng-1.2.20-vxworks.patch b/src/3rdparty/patches/libpng-1.2.20-vxworks.patch deleted file mode 100644 index 4c49b3f..0000000 --- a/src/3rdparty/patches/libpng-1.2.20-vxworks.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git pngconf.h pngconf.h -index 19e4732..8eb7d35 100644 ---- pngconf.h -+++ pngconf.h -@@ -344,7 +344,7 @@ - # endif /* __linux__ */ - #endif /* PNG_SETJMP_SUPPORTED */ - --#ifdef BSD -+#if defined(BSD) && !defined(VXWORKS) - # include - #else - # include diff --git a/src/3rdparty/patches/libtiff-3.8.2-config.patch b/src/3rdparty/patches/libtiff-3.8.2-config.patch deleted file mode 100644 index 44230ea..0000000 --- a/src/3rdparty/patches/libtiff-3.8.2-config.patch +++ /dev/null @@ -1,374 +0,0 @@ ---- libtiff/tif_config.h 1970-01-01 01:00:00.000000000 +0100 -+++ libtiff/tif_config.h 2008-05-25 00:00:00.000000000 +0200 -@@ -0,0 +1,296 @@ -+/* -+ Configuration defines by Trolltech. -+*/ -+ -+#include -+#if defined(Q_OS_WINCE) -+# include -+#endif -+ -+/* Support CCITT Group 3 & 4 algorithms */ -+#define CCITT_SUPPORT 1 -+ -+/* Pick up YCbCr subsampling info from the JPEG data stream to support files -+ lacking the tag (default enabled). */ -+#define CHECK_JPEG_YCBCR_SUBSAMPLING 1 -+ -+/* Support C++ stream API (requires C++ compiler) */ -+/* #undef CXX_SUPPORT */ -+ -+/* Treat extra sample as alpha (default enabled). The RGBA interface will -+ treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many -+ packages produce RGBA files but don't mark the alpha properly. */ -+#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1 -+ -+/* Use the Apple OpenGL framework. */ -+/* #undef HAVE_APPLE_OPENGL_FRAMEWORK */ -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_ASSERT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_DLFCN_H */ -+ -+/* Define to 1 if you have the header file. */ -+#if !defined(Q_OS_WINCE) -+#define HAVE_FCNTL_H 1 -+#endif -+ -+/* Define to 1 if you have the `floor' function. */ -+/* #undef HAVE_FLOOR */ -+ -+/* Define to 1 if you have the `getopt' function. */ -+/* #undef HAVE_GETOPT */ -+ -+/* Define as 0 or 1 according to the floating point format suported by the -+ machine */ -+#define HAVE_IEEEFP 1 -+ -+/* Define to 1 if the system has the type `int16'. */ -+/* #undef HAVE_INT16 */ -+#ifdef Q_OS_AIX -+#define HAVE_INT16 1 -+#endif -+ -+/* Define to 1 if the system has the type `int32'. */ -+/* #undef HAVE_INT32 */ -+#ifdef Q_OS_AIX -+#define HAVE_INT32 1 -+#endif -+ -+/* Define to 1 if the system has the type `int8'. */ -+/* #undef HAVE_INT8 */ -+#ifdef Q_OS_AIX -+#define HAVE_INT8 1 -+#endif -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_INTTYPES_H */ -+ -+/* Define to 1 if you have the `isascii' function. */ -+/* #undef HAVE_ISASCII */ -+ -+/* Define to 1 if you have the `lfind' function. */ -+/* #undef HAVE_LFIND */ -+ -+/* Define to 1 if you have the `c' library (-lc). */ -+/* #undef HAVE_LIBC */ -+ -+/* Define to 1 if you have the `m' library (-lm). */ -+/* #undef HAVE_LIBM */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_LIMITS_H */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_MALLOC_H */ -+ -+/* Define to 1 if you have the `memmove' function. */ -+/* #undef HAVE_MEMMOVE */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_MEMORY_H */ -+ -+/* Define to 1 if you have the `memset' function. */ -+/* #undef HAVE_MEMSET */ -+ -+/* Define to 1 if you have the `mmap' function. */ -+/* #undef HAVE_MMAP */ -+ -+/* Define to 1 if you have the `pow' function. */ -+/* #undef HAVE_POW */ -+ -+/* Define if you have POSIX threads libraries and header files. */ -+/* #undef HAVE_PTHREAD */ -+ -+/* Define to 1 if you have the header file. */ -+#if !defined(Q_OS_WINCE) -+#define HAVE_SEARCH_H 1 -+#endif -+ -+/* Define to 1 if you have the `sqrt' function. */ -+/* #undef HAVE_SQRT */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_STDINT_H */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_STDLIB_H */ -+ -+/* Define to 1 if you have the `strcasecmp' function. */ -+/* #undef HAVE_STRCASECMP */ -+ -+/* Define to 1 if you have the `strchr' function. */ -+/* #undef HAVE_STRCHR */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_STRINGS_H */ -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_STRING_H 1 -+ -+/* Define to 1 if you have the `strrchr' function. */ -+/* #undef HAVE_STRRCHR */ -+ -+/* Define to 1 if you have the `strstr' function. */ -+/* #undef HAVE_STRSTR */ -+ -+/* Define to 1 if you have the `strtol' function. */ -+/* #undef HAVE_STRTOL */ -+ -+/* Define to 1 if you have the `strtoul' function. */ -+/* #undef HAVE_STRTOUL */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_SYS_STAT_H */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_SYS_TIME_H */ -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_SYS_TYPES_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_UNISTD_H 1 -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_WINDOWS_H */ -+#ifdef Q_OS_WIN -+#define TIF_PLATFORM_CONSOLE -+#endif -+ -+/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian -+ (Intel) */ -+#if (Q_BYTE_ORDER == Q_BIG_ENDIAN) -+#define HOST_BIGENDIAN 1 -+#else -+#define HOST_BIGENDIAN 0 -+#endif -+ -+/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */ -+#define HOST_FILLORDER FILLORDER_LSB2MSB -+ -+/* Support JPEG compression (requires IJG JPEG library) */ -+/* #undef JPEG_SUPPORT */ -+ -+/* Support LogLuv high dynamic range encoding */ -+#define LOGLUV_SUPPORT 1 -+ -+/* Define to the sub-directory in which libtool stores uninstalled libraries. -+ */ -+/* #undef LT_OBJDIR */ -+ -+/* Support LZW algorithm */ -+#define LZW_SUPPORT 1 -+ -+/* Support Microsoft Document Imaging format */ -+#define MDI_SUPPORT 1 -+ -+/* Support NeXT 2-bit RLE algorithm */ -+#define NEXT_SUPPORT 1 -+ -+/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -+/* #undef NO_MINUS_C_MINUS_O */ -+ -+/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation -+ fails with unpatched IJG JPEG library) */ -+/* #undef OJPEG_SUPPORT */ -+ -+/* Name of package */ -+/* #undef PACKAGE */ -+ -+/* Define to the address where bug reports for this package should be sent. */ -+/* #undef PACKAGE_BUGREPORT */ -+ -+/* Define to the full name of this package. */ -+/* #undef PACKAGE_NAME */ -+ -+/* Define to the full name and version of this package. */ -+/* #undef PACKAGE_STRING */ -+ -+/* Define to the one symbol short name of this package. */ -+/* #undef PACKAGE_TARNAME */ -+ -+/* Define to the version of this package. */ -+/* #undef PACKAGE_VERSION */ -+ -+/* Support Macintosh PackBits algorithm */ -+#define PACKBITS_SUPPORT 1 -+ -+/* Support Pixar log-format algorithm (requires Zlib) */ -+#define PIXARLOG_SUPPORT 1 -+ -+/* Define to necessary symbol if this constant uses a non-standard name on -+ your system. */ -+/* #undef PTHREAD_CREATE_JOINABLE */ -+ -+/* The size of a `int', as computed by sizeof. */ -+#define SIZEOF_INT 4 -+ -+/* The size of a `long', as computed by sizeof. */ -+#if (QT_POINTER_SIZE == 8) && !defined(Q_OS_WIN64) -+#define SIZEOF_LONG 8 -+#else -+#define SIZEOF_LONG 4 -+#endif -+ -+/* Define to 1 if you have the ANSI C header files. */ -+/* #undef STDC_HEADERS */ -+ -+/* Support strip chopping (whether or not to convert single-strip uncompressed -+ images to mutiple strips of specified size to reduce memory usage) */ -+#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP -+ -+/* Default size of the strip in bytes (when strip chopping enabled) */ -+/* #undef STRIP_SIZE_DEFAULT */ -+ -+/* Enable SubIFD tag (330) support */ -+#define SUBIFD_SUPPORT 1 -+ -+/* Support ThunderScan 4-bit RLE algorithm */ -+#define THUNDER_SUPPORT 1 -+ -+/* Define to 1 if you can safely include both and . */ -+/* #undef TIME_WITH_SYS_TIME */ -+ -+/* Define to 1 if your declares `struct tm'. */ -+/* #undef TM_IN_SYS_TIME */ -+ -+/* Version number of package */ -+/* #undef VERSION */ -+ -+/* Define to 1 if your processor stores words with the most significant byte -+ first (like Motorola and SPARC, unlike Intel and VAX). */ -+#if (Q_BYTE_ORDER == Q_BIG_ENDIAN) -+#define WORDS_BIGENDIAN 1 -+#else -+/* #undef WORDS_BIGENDIAN */ -+#endif -+ -+/* Define to 1 if the X Window System is missing or not being used. */ -+/* #undef X_DISPLAY_MISSING */ -+ -+/* Support Deflate compression */ -+#define ZIP_SUPPORT 1 -+ -+/* Number of bits in a file offset, on hosts where this is settable. */ -+/* #undef _FILE_OFFSET_BITS */ -+ -+/* Define for large files, on AIX-style hosts. */ -+/* #undef _LARGE_FILES */ -+ -+/* Define to empty if `const' does not conform to ANSI C. */ -+/* #undef const */ -+ -+/* Define to `__inline__' or `__inline' if that's what the C compiler -+ calls it, or to nothing if 'inline' is not supported under any name. */ -+#ifndef __cplusplus -+#undef inline -+#define inline -+#endif -+ -+/* Define to `long' if does not define. */ -+/* #undef off_t */ -+ -+/* Define to `unsigned' if does not define. */ -+/* #undef size_t */ ---- libtiff/tiffconf.h 2006-03-23 15:55:22.000000000 +0100 -+++ libtiff/tiffconf.h 2008-05-25 00:00:00.000000000 +0200 -@@ -1,6 +1,5 @@ --/* libtiff/tiffconf.h. Generated by configure. */ - /* -- Configuration defines for installed libtiff. -+ Configuration defines by Trolltech. - This file maintained for backward compatibility. Do not use definitions - from this file in your programs. - */ -@@ -8,6 +7,8 @@ - #ifndef _TIFFCONF_ - #define _TIFFCONF_ - -+#include -+ - /* Define to 1 if the system has the type `int16'. */ - /* #undef HAVE_INT16 */ - -@@ -21,7 +22,11 @@ - #define SIZEOF_INT 4 - - /* The size of a `long', as computed by sizeof. */ -+#if (QT_POINTER_SIZE == 8) && !defined(Q_OS_WIN64) -+#define SIZEOF_LONG 8 -+#else - #define SIZEOF_LONG 4 -+#endif - - /* Compatibility stuff. */ - -@@ -34,13 +39,17 @@ - - /* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian - (Intel) */ -+#if (Q_BYTE_ORDER == Q_BIG_ENDIAN) -+#define HOST_BIGENDIAN 1 -+#else - #define HOST_BIGENDIAN 0 -+#endif - - /* Support CCITT Group 3 & 4 algorithms */ - #define CCITT_SUPPORT 1 - - /* Support JPEG compression (requires IJG JPEG library) */ --#define JPEG_SUPPORT 1 -+/* #undef JPEG_SUPPORT */ - - /* Support LogLuv high dynamic range encoding */ - #define LOGLUV_SUPPORT 1 ---- libtiff/tiffiop.h 2006-03-21 17:42:50.000000000 +0100 -+++ libtiff/tiffiop.h 2008-05-25 00:00:00.000000000 +0200 -@@ -37,7 +37,12 @@ - #endif - - #ifdef HAVE_SYS_TYPES_H -+#if !defined(Q_OS_WINCE) - # include -+#else -+# include -+# include -+#endif - #endif - - #ifdef HAVE_STRING_H ---- libtiff/tif_win32.c 2006-02-07 14:51:03.000000000 +0100 -+++ libtiff/tif_win32.c 2008-05-25 00:00:00.000000000 +0200 -@@ -29,6 +29,7 @@ - * Scott Wagner (wagner@itek.com), Itek Graphix, Rochester, NY USA - */ - #include "tiffiop.h" -+#include - - static tsize_t - _tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size) diff --git a/src/3rdparty/patches/libtiff-3.8.2-vxworks.patch b/src/3rdparty/patches/libtiff-3.8.2-vxworks.patch deleted file mode 100644 index b1b725e..0000000 --- a/src/3rdparty/patches/libtiff-3.8.2-vxworks.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- libtiff/tif_config.h.orig -+++ libtiff/tif_config.h -@@ -104,7 +104,7 @@ - /* #undef HAVE_PTHREAD */ - - /* Define to 1 if you have the header file. */ --#if !defined(Q_OS_WINCE) -+#if !defined(Q_OS_WINCE) && !defined(Q_OS_VXWORKS) - #define HAVE_SEARCH_H 1 - #endif - diff --git a/src/3rdparty/patches/sqlite-3.5.6-config.patch b/src/3rdparty/patches/sqlite-3.5.6-config.patch deleted file mode 100644 index cf158ea..0000000 --- a/src/3rdparty/patches/sqlite-3.5.6-config.patch +++ /dev/null @@ -1,38 +0,0 @@ ---- sqlite3.c.orig 2008-02-06 16:03:28.000000000 +0100 -+++ sqlite3.c 2008-02-13 00:00:00.000000000 +0100 -@@ -16823,6 +16823,8 @@ - */ - #if OS_UNIX /* This file is used on unix only */ - -+#include -+ - /* #define SQLITE_ENABLE_LOCKING_STYLE 0 */ - - /* -@@ -16865,7 +16867,7 @@ - ** If we are to be thread-safe, include the pthreads header and define - ** the SQLITE_UNIX_THREADS macro. - */ --#if SQLITE_THREADSAFE -+#ifndef QT_NO_THREAD - # define SQLITE_UNIX_THREADS 1 - #endif - -@@ -19739,6 +19741,8 @@ - ** desktops but not so well in embedded systems. - */ - -+#include -+ - #include - - #ifdef __CYGWIN__ -@@ -19748,7 +19752,7 @@ - /* - ** Macros used to determine whether or not to use threads. - */ --#if defined(THREADSAFE) && THREADSAFE -+#ifndef QT_NO_THREAD - # define SQLITE_W32_THREADS 1 - #endif - diff --git a/src/3rdparty/patches/sqlite-3.5.6-vxworks.patch b/src/3rdparty/patches/sqlite-3.5.6-vxworks.patch deleted file mode 100644 index 6ae65fd..0000000 --- a/src/3rdparty/patches/sqlite-3.5.6-vxworks.patch +++ /dev/null @@ -1,68 +0,0 @@ ---- sqlite3.c.orig -+++ sqlite3.c -@@ -383,7 +383,7 @@ SQLITE_PRIVATE void sqlite3Coverage(int); - ** - ** See also ticket #2741. - */ --#if !defined(_XOPEN_SOURCE) && !defined(__DARWIN__) && !defined(__APPLE__) && SQLITE_THREADSAFE -+#if !defined(_XOPEN_SOURCE) && !defined(__DARWIN__) && !defined(__APPLE__) && SQLITE_THREADSAFE && !defined(VXWORKS) - # define _XOPEN_SOURCE 500 /* Needed to enable pthread recursive mutexes */ - #endif - -@@ -440,6 +440,13 @@ SQLITE_PRIVATE void sqlite3Coverage(int); - */ - #ifndef _SQLITE3_H_ - #define _SQLITE3_H_ -+ -+#ifdef VXWORKS -+# define SQLITE_HOMEGROWN_RECURSIVE_MUTEX -+# define NO_GETTOD -+# include -+#endif -+ - #include /* Needed for the definition of va_list */ - - /* -@@ -18792,7 +18799,11 @@ SQLITE_PRIVATE sqlite3_vfs *sqlite3OsDefaultVfs(void){ - #include - #include - #include --#include -+#ifdef VXWORKS -+# include -+#else -+# include -+#endif - #include - #ifdef SQLITE_ENABLE_LOCKING_STYLE - #include -@@ -19728,7 +19739,11 @@ static int seekAndWrite(unixFile *id, i64 offset, const void *pBuf, int cnt){ - if( newOffset!=offset ){ - return -1; - } -+# ifndef VXWORKS - got = write(id->h, pBuf, cnt); -+# else -+ got = write(id->h, (char *)pBuf, cnt); -+# endif - #endif - TIMER_END; - OSTRACE5("WRITE %-3d %5d %7lld %d\n", id->h, got, offset, TIMER_ELAPSED); -@@ -21554,12 +21569,16 @@ static int unixRandomness(sqlite3_vfs *pVfs, int nBuf, char *zBuf){ - #if !defined(SQLITE_TEST) - { - int pid, fd; -- fd = open("/dev/urandom", O_RDONLY); -+ fd = open("/dev/urandom", O_RDONLY, 0); - if( fd<0 ){ - time_t t; - time(&t); - memcpy(zBuf, &t, sizeof(t)); -+#ifndef VXWORKS - pid = getpid(); -+#else -+ pid = (int)taskIdCurrent(); -+#endif - memcpy(&zBuf[sizeof(t)], &pid, sizeof(pid)); - }else{ - read(fd, zBuf, nBuf); diff --git a/src/3rdparty/patches/sqlite-3.5.6-wince.patch b/src/3rdparty/patches/sqlite-3.5.6-wince.patch deleted file mode 100644 index 02965f8..0000000 --- a/src/3rdparty/patches/sqlite-3.5.6-wince.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- sqlite3.c.orig 2008-02-06 16:03:28.000000000 +0100 -+++ sqlite3.c 2008-02-13 00:00:00.000000000 +0100 -@@ -8837,6 +8837,16 @@ - } - - /* -+** Windows CE does not declare the localtime -+** function as it is not defined anywhere. -+** Anyway we need the forward-declaration to be -+** able to define it later on. -+*/ -+#if defined(_WIN32_WCE) && (_WIN32_WCE >= 0x600) -+struct tm *__cdecl localtime(const time_t *t); -+#endif -+ -+/* - ** Compute the difference (in days) between localtime and UTC (a.k.a. GMT) - ** for the time value p where p is in UTC. - */ -- cgit v0.12 From 3335721dcf72cda957ba0e507608d795cab3f1ab Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Wed, 3 Mar 2010 12:45:14 +0100 Subject: Fix focus behavior bug on Mac OS X. With the Full Access Keyboard enabled, the focus could sometimes be stolen by the window. --- src/gui/kernel/qcocoaview_mac.mm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm index a1dcc2a..f7cb21f 100644 --- a/src/gui/kernel/qcocoaview_mac.mm +++ b/src/gui/kernel/qcocoaview_mac.mm @@ -1028,7 +1028,10 @@ static int qCocoaViewCount = 0; { if (!qwidget) return NO; - if (qwidget->isWindow()) + // Before accepting the focus for a window, we check that + // the focusWidget (if any) is not contained in the same window. + if (qwidget->isWindow() && (!qApp->focusWidget() + || qApp->focusWidget()->window() != qwidget)) return YES; // Always do it, so that windows can accept key press events. return qwidget->focusPolicy() != Qt::NoFocus; } -- cgit v0.12 From 735078c807126c0e8af382d9a60fc47766affdc7 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Wed, 3 Mar 2010 12:51:03 +0100 Subject: Fix compile Reviewed-by: cduclos --- src/gui/kernel/qwidget.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 66140ca..b5ccb3e 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -160,7 +160,6 @@ static inline bool hasBackingStoreSupport() extern bool qt_sendSpontaneousEvent(QObject*, QEvent*); // qapplication.cpp extern QDesktopWidget *qt_desktopWidget; // qapplication.cpp -extern QPointer qt_button_down; //qapplication_mac.cpp QWidgetPrivate::QWidgetPrivate(int version) : QObjectPrivate(version) -- cgit v0.12 From 66586707ae875bd1caa802fd7ca88a29727396e5 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Wed, 3 Mar 2010 13:51:35 +0100 Subject: Stabilize QWidget Fix for some corner cases observed on Maemo 5 Reviewed-by: Robert Griebl --- src/gui/kernel/qwidget.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index b19d541..7fdee2b 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -1122,7 +1122,8 @@ void QWidgetPrivate::init(QWidget *parentWidget, Qt::WindowFlags f) qFatal("QWidget: Cannot create a QWidget when no GUI is being used"); Q_ASSERT(allWidgets); - allWidgets->insert(q); + if (allWidgets) + allWidgets->insert(q); QWidget *desktopWidget = 0; if (parentWidget && parentWidget->windowType() == Qt::Desktop) { @@ -6500,7 +6501,7 @@ void QWidget::setTabOrder(QWidget* first, QWidget *second) // QWidget *fp = first->d_func()->focus_prev; QWidget *fn = first->d_func()->focus_next; - if (fn == second) + if (fn == second || first == second) return; QWidget *sp = second->d_func()->focus_prev; -- cgit v0.12 From 4db16da585655e5d832eb0e03300bd3211f1631b Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Wed, 3 Mar 2010 13:44:38 +0100 Subject: Fix runtime warning on Gtk versions < 2.16 The label property was not added until version 2.16 of Gtk+ and using it will trigger a warning on older versions. Instead we create it with the label set instead which should work for 2.0 and up. Task-number: QTBUG-8537 Reviewed-by: Harald Fernengel --- src/gui/styles/qgtkstyle_p.cpp | 17 +++++++---------- src/gui/styles/qgtkstyle_p.h | 8 ++++---- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/gui/styles/qgtkstyle_p.cpp b/src/gui/styles/qgtkstyle_p.cpp index a033407..f3c7a5b 100644 --- a/src/gui/styles/qgtkstyle_p.cpp +++ b/src/gui/styles/qgtkstyle_p.cpp @@ -91,8 +91,8 @@ Ptr_gtk_widget_set_default_direction QGtkStylePrivate::gtk_widget_set_default_di Ptr_gtk_widget_modify_color QGtkStylePrivate::gtk_widget_modify_fg = 0; Ptr_gtk_widget_modify_color QGtkStylePrivate::gtk_widget_modify_bg = 0; Ptr_gtk_arrow_new QGtkStylePrivate::gtk_arrow_new = 0; -Ptr_gtk_menu_item_new QGtkStylePrivate::gtk_menu_item_new = 0; -Ptr_gtk_check_menu_item_new QGtkStylePrivate::gtk_check_menu_item_new = 0; +Ptr_gtk_menu_item_new_with_label QGtkStylePrivate::gtk_menu_item_new_with_label = 0; +Ptr_gtk_check_menu_item_new_with_label QGtkStylePrivate::gtk_check_menu_item_new_with_label = 0; Ptr_gtk_menu_bar_new QGtkStylePrivate::gtk_menu_bar_new = 0; Ptr_gtk_menu_new QGtkStylePrivate::gtk_menu_new = 0; Ptr_gtk_button_new QGtkStylePrivate::gtk_button_new = 0; @@ -347,8 +347,8 @@ void QGtkStylePrivate::resolveGtk() const gtk_widget_modify_fg = (Ptr_gtk_widget_modify_color)libgtk.resolve("gtk_widget_modify_fg"); gtk_widget_modify_bg = (Ptr_gtk_widget_modify_color)libgtk.resolve("gtk_widget_modify_bg"); gtk_arrow_new = (Ptr_gtk_arrow_new)libgtk.resolve("gtk_arrow_new"); - gtk_menu_item_new = (Ptr_gtk_menu_item_new)libgtk.resolve("gtk_menu_item_new"); - gtk_check_menu_item_new = (Ptr_gtk_check_menu_item_new)libgtk.resolve("gtk_check_menu_item_new"); + gtk_menu_item_new_with_label = (Ptr_gtk_menu_item_new_with_label)libgtk.resolve("gtk_menu_item_new_with_label"); + gtk_check_menu_item_new_with_label = (Ptr_gtk_check_menu_item_new_with_label)libgtk.resolve("gtk_check_menu_item_new_with_label"); gtk_menu_bar_new = (Ptr_gtk_menu_bar_new)libgtk.resolve("gtk_menu_bar_new"); gtk_menu_new = (Ptr_gtk_menu_new)libgtk.resolve("gtk_menu_new"); gtk_toolbar_new = (Ptr_gtk_toolbar_new)libgtk.resolve("gtk_toolbar_new"); @@ -439,7 +439,7 @@ void QGtkStylePrivate::initGtkMenu() const GtkWidget *gtkMenuBar = QGtkStylePrivate::gtk_menu_bar_new(); setupGtkWidget(gtkMenuBar); - GtkWidget *gtkMenuBarItem = QGtkStylePrivate::gtk_menu_item_new(); + GtkWidget *gtkMenuBarItem = QGtkStylePrivate::gtk_menu_item_new_with_label("X"); gtk_menu_shell_append((GtkMenuShell*)(gtkMenuBar), gtkMenuBarItem); gtk_widget_realize(gtkMenuBarItem); @@ -448,14 +448,11 @@ void QGtkStylePrivate::initGtkMenu() const gtk_menu_item_set_submenu((GtkMenuItem*)(gtkMenuBarItem), gtkMenu); gtk_widget_realize(gtkMenu); - GtkWidget *gtkMenuItem = QGtkStylePrivate::gtk_menu_item_new(); - g_object_set(gtkMenuItem, "label", "X", NULL); - + GtkWidget *gtkMenuItem = QGtkStylePrivate::gtk_menu_item_new_with_label("X"); gtk_menu_shell_append((GtkMenuShell*)gtkMenu, gtkMenuItem); gtk_widget_realize(gtkMenuItem); - GtkWidget *gtkCheckMenuItem = QGtkStylePrivate::gtk_check_menu_item_new(); - g_object_set(gtkCheckMenuItem, "label", "X", NULL); + GtkWidget *gtkCheckMenuItem = QGtkStylePrivate::gtk_check_menu_item_new_with_label("X"); gtk_menu_shell_append((GtkMenuShell*)gtkMenu, gtkCheckMenuItem); gtk_widget_realize(gtkCheckMenuItem); diff --git a/src/gui/styles/qgtkstyle_p.h b/src/gui/styles/qgtkstyle_p.h index db5b9b9..31a16db 100644 --- a/src/gui/styles/qgtkstyle_p.h +++ b/src/gui/styles/qgtkstyle_p.h @@ -87,9 +87,9 @@ typedef void (*Ptr_gtk_widget_realize) (GtkWidget *); typedef void (*Ptr_gtk_widget_set_default_direction) (GtkTextDirection); typedef void (*Ptr_gtk_widget_modify_color)(GtkWidget *widget, GtkStateType state, const GdkColor *color); typedef GtkWidget* (*Ptr_gtk_arrow_new)(GtkArrowType, GtkShadowType); -typedef GtkWidget* (*Ptr_gtk_menu_item_new)(void); +typedef GtkWidget* (*Ptr_gtk_menu_item_new_with_label)(const gchar *); typedef GtkWidget* (*Ptr_gtk_separator_menu_item_new)(void); -typedef GtkWidget* (*Ptr_gtk_check_menu_item_new)(void); +typedef GtkWidget* (*Ptr_gtk_check_menu_item_new_with_label)(const gchar *); typedef GtkWidget* (*Ptr_gtk_menu_bar_new)(void); typedef GtkWidget* (*Ptr_gtk_menu_new)(void); typedef GtkWidget* (*Ptr_gtk_combo_box_entry_new)(void); @@ -306,9 +306,9 @@ public: static Ptr_gtk_widget_set_default_direction gtk_widget_set_default_direction; static Ptr_gtk_widget_modify_color gtk_widget_modify_fg; static Ptr_gtk_widget_modify_color gtk_widget_modify_bg; - static Ptr_gtk_menu_item_new gtk_menu_item_new; + static Ptr_gtk_menu_item_new_with_label gtk_menu_item_new_with_label; static Ptr_gtk_arrow_new gtk_arrow_new; - static Ptr_gtk_check_menu_item_new gtk_check_menu_item_new; + static Ptr_gtk_check_menu_item_new_with_label gtk_check_menu_item_new_with_label; static Ptr_gtk_menu_bar_new gtk_menu_bar_new; static Ptr_gtk_menu_new gtk_menu_new; static Ptr_gtk_expander_new gtk_expander_new; -- cgit v0.12 From af430b618a196a45e45c87afca446d60b4a3552d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Wed, 3 Mar 2010 13:29:29 +0100 Subject: Don't print a warning when passing an empty string to QColor Qt 4.6 didn't used to warn about this, and it should be a valid way of setting a color to invalid. QColor::isValidColor has been adapted to still return false when passed an empty string. Reviewed-by: Erik Verbruggen --- src/gui/painting/qcolor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/painting/qcolor.cpp b/src/gui/painting/qcolor.cpp index 0b735a2..cd448a7 100644 --- a/src/gui/painting/qcolor.cpp +++ b/src/gui/painting/qcolor.cpp @@ -548,14 +548,14 @@ void QColor::setNamedColor(const QString &name) */ bool QColor::isValidColor(const QString &name) { - return QColor().setColorFromString(name); + return !name.isEmpty() && QColor().setColorFromString(name); } bool QColor::setColorFromString(const QString &name) { if (name.isEmpty()) { invalidate(); - return false; + return true; } if (name.startsWith(QLatin1Char('#'))) { -- cgit v0.12 From 69acbc34d5413e1e7642f1d533e39a8f0137051b Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Wed, 3 Mar 2010 14:36:31 +0100 Subject: fix include --- src/gui/widgets/qlabel_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/widgets/qlabel_p.h b/src/gui/widgets/qlabel_p.h index 21eb128..fba7224 100644 --- a/src/gui/widgets/qlabel_p.h +++ b/src/gui/widgets/qlabel_p.h @@ -55,7 +55,7 @@ #include "qlabel.h" -#include "../text/qtextdocumentlayout_p.h" +#include "private/qtextdocumentlayout_p.h" #include "private/qtextcontrol_p.h" #include "qtextdocumentfragment.h" #include "qframe_p.h" -- cgit v0.12 From 6f07f0a2b9df84302348e290f22de13514f81d50 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 3 Mar 2010 14:48:37 +0100 Subject: test qlist some more --- tests/auto/qlist/tst_qlist.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/auto/qlist/tst_qlist.cpp b/tests/auto/qlist/tst_qlist.cpp index a590fca..e2944cc 100644 --- a/tests/auto/qlist/tst_qlist.cpp +++ b/tests/auto/qlist/tst_qlist.cpp @@ -60,6 +60,7 @@ private slots: void length() const; void lengthSignature() const; void append() const; + void prepend() const; void mid() const; }; @@ -130,6 +131,39 @@ void tst_QList::append() const } +void tst_QList::prepend() const +{ + QList list; + QString *str1 = new QString; + list.prepend(str1); + QVERIFY(list.size() == 1); + QVERIFY(list.at(0) == str1); + QString *str2 = new QString; + list.prepend(str2); + QVERIFY(list.size() == 2); + QVERIFY(list.at(0) == str2); + QVERIFY(list.at(1) == str1); + QString *str3 = new QString; + list.prepend(str3); + QVERIFY(list.size() == 3); + QVERIFY(list.at(0) == str3); + QVERIFY(list.at(1) == str2); + QVERIFY(list.at(2) == str1); + list.removeAll(str2); + delete str2; + QVERIFY(list.size() == 2); + QVERIFY(list.at(0) == str3); + QVERIFY(list.at(1) == str1); + QString *str4 = new QString; + list.prepend(str4); + QVERIFY(list.size() == 3); + QVERIFY(list.at(0) == str4); + QVERIFY(list.at(1) == str3); + QVERIFY(list.at(2) == str1); + qDeleteAll(list); + list.clear(); +} + void tst_QList::mid() const { QList list; -- cgit v0.12 From a1b0dba9971ef88dc1e079d1ea49230a4dd3c514 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 3 Mar 2010 14:48:27 +0100 Subject: fix qmake -project mode the mode is a big hack, and consequently needs hacks to get started as well ... Reviewed-by: mariusSO --- qmake/option.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/qmake/option.cpp b/qmake/option.cpp index 6f0f46b..b41e39d 100644 --- a/qmake/option.cpp +++ b/qmake/option.cpp @@ -525,6 +525,17 @@ Option::init(int argc, char **argv) } #endif } + } else if (Option::qmake_mode == Option::QMAKE_GENERATE_PROJECT) { +#if defined(Q_OS_MAC) + Option::host_mode = Option::HOST_MACX_MODE; + Option::target_mode = Option::TARG_MACX_MODE; +#elif defined(Q_OS_UNIX) + Option::host_mode = Option::HOST_UNIX_MODE; + Option::target_mode = Option::TARG_UNIX_MODE; +#else + Option::host_mode = Option::HOST_WIN_MODE; + Option::target_mode = Option::TARG_WIN_MODE; +#endif } //defaults for globals -- cgit v0.12 From 515f6a8c3dbe382bbb4f84f758a61c719143d8a6 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Wed, 3 Mar 2010 14:53:16 +0100 Subject: sizeHint of checkbox/radiobutton without text is not correct Reviewed-by: Jens Bache-Wiig --- src/gui/styles/qcommonstyle.cpp | 2 +- src/gui/widgets/qcheckbox.cpp | 2 +- src/gui/widgets/qradiobutton.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/styles/qcommonstyle.cpp b/src/gui/styles/qcommonstyle.cpp index f8464cc..b0e2d37 100644 --- a/src/gui/styles/qcommonstyle.cpp +++ b/src/gui/styles/qcommonstyle.cpp @@ -4760,7 +4760,7 @@ QSize QCommonStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, int margins = 0; // we add 4 pixels for label margins - if (btn->icon.isNull() || !btn->text.isEmpty()) + if (!btn->icon.isNull() || !btn->text.isEmpty()) margins = 4 + proxy()->pixelMetric(isRadio ? PM_RadioButtonLabelSpacing : PM_CheckBoxLabelSpacing, opt, widget); sz += QSize(w + margins, 4); diff --git a/src/gui/widgets/qcheckbox.cpp b/src/gui/widgets/qcheckbox.cpp index 4e0ff66..bc0900e 100644 --- a/src/gui/widgets/qcheckbox.cpp +++ b/src/gui/widgets/qcheckbox.cpp @@ -291,7 +291,7 @@ QSize QCheckBox::sizeHint() const QFontMetrics fm = fontMetrics(); QStyleOptionButton opt; initStyleOption(&opt); - QSize sz = style()->itemTextRect(fm, QRect(0, 0, 1, 1), Qt::TextShowMnemonic, false, + QSize sz = style()->itemTextRect(fm, QRect(), Qt::TextShowMnemonic, false, text()).size(); if (!opt.icon.isNull()) sz = QSize(sz.width() + opt.iconSize.width() + 4, qMax(sz.height(), opt.iconSize.height())); diff --git a/src/gui/widgets/qradiobutton.cpp b/src/gui/widgets/qradiobutton.cpp index d73ff2f..20b6c720 100644 --- a/src/gui/widgets/qradiobutton.cpp +++ b/src/gui/widgets/qradiobutton.cpp @@ -195,7 +195,7 @@ QSize QRadioButton::sizeHint() const ensurePolished(); QStyleOptionButton opt; initStyleOption(&opt); - QSize sz = style()->itemTextRect(fontMetrics(), QRect(0, 0, 1, 1), Qt::TextShowMnemonic, + QSize sz = style()->itemTextRect(fontMetrics(), QRect(), Qt::TextShowMnemonic, false, text()).size(); if (!opt.icon.isNull()) sz = QSize(sz.width() + opt.iconSize.width() + 4, qMax(sz.height(), opt.iconSize.height())); -- cgit v0.12 From 5d1735d6cf1820107145e7fdfe41ac502d0020f9 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Fri, 29 Jan 2010 16:06:06 +0100 Subject: Optimize QGtkStyle Use latin1 literals instead of QString to prevent one malloc/memcpy/free per rendered table cell. Reviewed-By: Robert Griebl --- src/gui/styles/qgtkpainter.cpp | 2 +- src/gui/styles/qgtkstyle.cpp | 203 +++++++++++++++++++++++------------------ src/gui/styles/qgtkstyle_p.cpp | 103 +++++++++++++++------ src/gui/styles/qgtkstyle_p.h | 73 +++++++++++++-- 4 files changed, 252 insertions(+), 129 deletions(-) diff --git a/src/gui/styles/qgtkpainter.cpp b/src/gui/styles/qgtkpainter.cpp index 6cc7455..1f68f2f 100644 --- a/src/gui/styles/qgtkpainter.cpp +++ b/src/gui/styles/qgtkpainter.cpp @@ -142,7 +142,7 @@ QPixmap QGtkPainter::renderTheme(uchar *bdata, uchar *wdata, const QRect &rect) } QGtkPainter::QGtkPainter(QPainter *_painter) - : m_window(QGtkStylePrivate::gtkWidget(QLatin1String("GtkWindow"))) + : m_window(QGtkStylePrivate::gtkWidget("GtkWindow")) , m_painter(_painter) , m_alpha(true) , m_hflipped(false) diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp index b5f052b..e2de43a 100644 --- a/src/gui/styles/qgtkstyle.cpp +++ b/src/gui/styles/qgtkstyle.cpp @@ -222,7 +222,7 @@ QPalette QGtkStyle::standardPalette() const QPalette palette = QCleanlooksStyle::standardPalette(); if (d->isThemeAvailable()) { GtkStyle *style = d->gtkStyle(); - GtkWidget *gtkButton = d->gtkWidget(QLS("GtkButton")); + GtkWidget *gtkButton = d->gtkWidget("GtkButton"); GtkWidget *gtkEntry = d->getTextColorWidget(); GdkColor gdkBg, gdkBase, gdkText, gdkForeground, gdkSbg, gdkSfg; @@ -253,7 +253,7 @@ QPalette QGtkStyle::standardPalette() const palette.setColor(QPalette::Base, base); QColor alternateRowColor = palette.base().color().lighter(93); // ref gtkstyle.c draw_flat_box - GtkWidget *gtkTreeView = d->gtkWidget(QLS("GtkTreeView")); + GtkWidget *gtkTreeView = d->gtkWidget("GtkTreeView"); GdkColor *gtkAltBase = NULL; d->gtk_widget_style_get(gtkTreeView, "odd-row-color", >kAltBase, NULL); if (gtkAltBase) { @@ -421,14 +421,14 @@ int QGtkStyle::pixelMetric(PixelMetric metric, return 0; case PM_ButtonShiftHorizontal: { - GtkWidget *gtkButton = d->gtkWidget(QLS("GtkButton")); + GtkWidget *gtkButton = d->gtkWidget("GtkButton"); guint horizontal_shift; d->gtk_widget_style_get(gtkButton, "child-displacement-x", &horizontal_shift, NULL); return horizontal_shift; } case PM_ButtonShiftVertical: { - GtkWidget *gtkButton = d->gtkWidget(QLS("GtkButton")); + GtkWidget *gtkButton = d->gtkWidget("GtkButton"); guint vertical_shift; d->gtk_widget_style_get(gtkButton, "child-displacement-y", &vertical_shift, NULL); return vertical_shift; @@ -438,7 +438,7 @@ int QGtkStyle::pixelMetric(PixelMetric metric, return 0; case PM_MenuPanelWidth: { - GtkWidget *gtkMenu = d->gtkWidget(QLS("GtkMenu")); + GtkWidget *gtkMenu = d->gtkWidget("GtkMenu"); guint horizontal_padding = 0; // horizontal-padding is used by Maemo to get thicker borders if (!d->gtk_check_version(2, 10, 0)) @@ -495,7 +495,7 @@ int QGtkStyle::pixelMetric(PixelMetric metric, case PM_SliderThickness: case PM_SliderControlThickness: { - GtkWidget *gtkScale = d->gtkWidget(QLS("GtkHScale")); + GtkWidget *gtkScale = d->gtkWidget("GtkHScale"); gint val; d->gtk_widget_style_get(gtkScale, "slider-width", &val, NULL); if (metric == PM_SliderControlThickness) @@ -506,7 +506,7 @@ int QGtkStyle::pixelMetric(PixelMetric metric, case PM_ScrollBarExtent: { gint sliderLength; gint trough_border; - GtkWidget *hScrollbar = d->gtkWidget(QLS("GtkHScrollbar")); + GtkWidget *hScrollbar = d->gtkWidget("GtkHScrollbar"); d->gtk_widget_style_get(hScrollbar, "trough-border", &trough_border, "slider-width", &sliderLength, @@ -519,34 +519,34 @@ int QGtkStyle::pixelMetric(PixelMetric metric, case PM_SliderLength: gint val; - d->gtk_widget_style_get(d->gtkWidget(QLS("GtkHScale")), "slider-length", &val, NULL); + d->gtk_widget_style_get(d->gtkWidget("GtkHScale"), "slider-length", &val, NULL); return val; case PM_ExclusiveIndicatorWidth: case PM_ExclusiveIndicatorHeight: case PM_IndicatorWidth: case PM_IndicatorHeight: { - GtkWidget *gtkCheckButton = d->gtkWidget(QLS("GtkCheckButton")); + GtkWidget *gtkCheckButton = d->gtkWidget("GtkCheckButton"); gint size, spacing; d->gtk_widget_style_get(gtkCheckButton, "indicator-spacing", &spacing, "indicator-size", &size, NULL); return size + 2 * spacing; } case PM_MenuBarVMargin: { - GtkWidget *gtkMenubar = d->gtkWidget(QLS("GtkMenuBar")); + GtkWidget *gtkMenubar = d->gtkWidget("GtkMenuBar"); return qMax(0, gtkMenubar->style->ythickness); } case PM_ScrollView_ScrollBarSpacing: { gint spacing = 3; - GtkWidget *gtkScrollWindow = d->gtkWidget(QLS("GtkScrolledWindow")); + GtkWidget *gtkScrollWindow = d->gtkWidget("GtkScrolledWindow"); Q_ASSERT(gtkScrollWindow); d->gtk_widget_style_get(gtkScrollWindow, "scrollbar-spacing", &spacing, NULL); return spacing; } case PM_SubMenuOverlap: { gint offset = 0; - GtkWidget *gtkMenu = d->gtkWidget(QLS("GtkMenu")); + GtkWidget *gtkMenu = d->gtkWidget("GtkMenu"); d->gtk_widget_style_get(gtkMenu, "horizontal-offset", &offset, NULL); return offset; } @@ -587,7 +587,7 @@ int QGtkStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidg { if (d->isKDE4Session()) return QCleanlooksStyle::styleHint(hint, option, widget, returnData); - GtkWidget *gtkToolbar = d->gtkWidget(QLS("GtkToolbar")); + GtkWidget *gtkToolbar = d->gtkWidget("GtkToolbar"); GtkToolbarStyle toolbar_style = GTK_TOOLBAR_ICONS; g_object_get(gtkToolbar, "toolbar-style", &toolbar_style, NULL); switch (toolbar_style) { @@ -610,7 +610,7 @@ int QGtkStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidg return int(false); case SH_ComboBox_Popup: { - GtkWidget *gtkComboBox = d->gtkWidget(QLS("GtkComboBox")); + GtkWidget *gtkComboBox = d->gtkWidget("GtkComboBox"); gboolean appears_as_list; d->gtk_widget_style_get((GtkWidget*)gtkComboBox, "appears-as-list", &appears_as_list, NULL); return appears_as_list ? 0 : 1; @@ -634,7 +634,7 @@ int QGtkStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidg if (widget && widget->isWindow()) scrollbars_within_bevel = true; else if (!d->gtk_check_version(2, 12, 0)) { - GtkWidget *gtkScrollWindow = d->gtkWidget(QLS("GtkScrolledWindow")); + GtkWidget *gtkScrollWindow = d->gtkWidget("GtkScrolledWindow"); d->gtk_widget_style_get(gtkScrollWindow, "scrollbars-within-bevel", &scrollbars_within_bevel, NULL); } return !scrollbars_within_bevel; @@ -712,7 +712,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, GtkStyle *style = d->gtk_rc_get_style_by_paths(d->gtk_settings_get_default(), "*.GtkScrolledWindow", "*.GtkScrolledWindow", d->gtk_window_get_type()); if (style) - gtkFramePainter.paintShadow(d->gtkWidget(QLS("GtkFrame")), "viewport", pmRect, + gtkFramePainter.paintShadow(d->gtkWidget("GtkFrame"), "viewport", pmRect, option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE, shadow_type, style); QPixmapCache::insert(pmKey, pixmap); @@ -739,7 +739,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, break; case PE_PanelTipLabel: { - GtkWidget *gtkWindow = d->gtkWidget(QLS("GtkWindow")); // The Murrine Engine currently assumes a widget is passed + GtkWidget *gtkWindow = d->gtkWidget("GtkWindow"); // The Murrine Engine currently assumes a widget is passed style = d->gtk_rc_get_style_by_paths(d->gtk_settings_get_default(), "gtk-tooltips", "GtkWindow", d->gtk_window_get_type()); gtkPainter.paintFlatBox(gtkWindow, "tooltip", option->rect, GTK_STATE_NORMAL, GTK_SHADOW_NONE, style); @@ -754,7 +754,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, break; } GtkShadowType shadow_type; - GtkWidget *gtkStatusbarFrame = d->gtkWidget(QLS("GtkStatusbar.GtkFrame")); + GtkWidget *gtkStatusbarFrame = d->gtkWidget("GtkStatusbar.GtkFrame"); d->gtk_widget_style_get(gtkStatusbarFrame->parent, "shadow-type", &shadow_type, NULL); gtkPainter.paintShadow(gtkStatusbarFrame, "frame", option->rect, GTK_STATE_NORMAL, shadow_type, gtkStatusbarFrame->style); @@ -763,7 +763,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, case PE_IndicatorHeaderArrow: if (const QStyleOptionHeader *header = qstyleoption_cast(option)) { - GtkWidget *gtkTreeHeader = d->gtkWidget(QLS("GtkTreeView.GtkButton")); + GtkWidget *gtkTreeHeader = d->gtkWidget("GtkTreeView.GtkButton"); GtkStateType state = gtkPainter.gtkState(option); style = gtkTreeHeader->style; GtkArrowType type = GTK_ARROW_UP; @@ -801,7 +801,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, rect.translate(2, 0); GtkExpanderStyle openState = GTK_EXPANDER_EXPANDED; GtkExpanderStyle closedState = GTK_EXPANDER_COLLAPSED; - GtkWidget *gtkTreeView = d->gtkWidget(QLS("GtkTreeView")); + GtkWidget *gtkTreeView = d->gtkWidget("GtkTreeView"); GtkStateType state = GTK_STATE_NORMAL; if (!(option->state & State_Enabled)) @@ -837,7 +837,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, case PE_IndicatorToolBarSeparator: { const int margin = 6; - GtkWidget *gtkSeparator = d->gtkWidget(QLS("GtkToolbar.GtkSeparatorToolItem")); + GtkWidget *gtkSeparator = d->gtkWidget("GtkToolbar.GtkSeparatorToolItem"); if (option->state & State_Horizontal) { const int offset = option->rect.width()/2; QRect rect = option->rect.adjusted(offset, margin, 0, -margin); @@ -857,7 +857,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, break; case PE_IndicatorToolBarHandle: { - GtkWidget *gtkToolbar = d->gtkWidget(QLS("GtkToolbar")); + GtkWidget *gtkToolbar = d->gtkWidget("GtkToolbar"); GtkShadowType shadow_type; d->gtk_widget_style_get(gtkToolbar, "shadow-type", &shadow_type, NULL); //Note when the toolbar is horizontal, the handle is vertical @@ -905,7 +905,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, GtkStateType state = gtkPainter.gtkState(option); QColor arrowColor = option->palette.buttonText().color(); - GtkWidget *gtkArrow = d->gtkWidget(QLS("GtkArrow")); + GtkWidget *gtkArrow = d->gtkWidget("GtkArrow"); GdkColor color = fromQColor(arrowColor); d->gtk_widget_modify_fg (gtkArrow, state, &color); gtkPainter.paintArrow(gtkArrow, "button", arrowRect, @@ -921,7 +921,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, break; case PE_PanelMenu: { - GtkWidget *gtkMenu = d->gtkWidget(QLS("GtkMenu")); + GtkWidget *gtkMenu = d->gtkWidget("GtkMenu"); gtkPainter.setAlphaSupport(false); // Note, alpha disabled for performance reasons gtkPainter.paintBox(gtkMenu, "menu", option->rect, GTK_STATE_NORMAL, GTK_SHADOW_OUT, gtkMenu->style, QString()); } @@ -933,7 +933,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, // This is only used by floating tool bars if (qobject_cast(widget)) { - GtkWidget *gtkMenubar = d->gtkWidget(QLS("GtkMenuBar")); + GtkWidget *gtkMenubar = d->gtkWidget("GtkMenuBar"); gtkPainter.paintBox( gtkMenubar, "toolbar", option->rect, GTK_STATE_NORMAL, GTK_SHADOW_OUT, style); gtkPainter.paintBox( gtkMenubar, "menu", option->rect, @@ -942,7 +942,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, break; case PE_FrameLineEdit: { - GtkWidget *gtkEntry = d->gtkWidget(QLS("GtkEntry")); + GtkWidget *gtkEntry = d->gtkWidget("GtkEntry"); gboolean interior_focus; @@ -976,7 +976,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, case PE_PanelLineEdit: if (const QStyleOptionFrame *panel = qstyleoption_cast(option)) { - GtkWidget *gtkEntry = d->gtkWidget(QLS("GtkEntry")); + GtkWidget *gtkEntry = d->gtkWidget("GtkEntry"); if (panel->lineWidth > 0) proxy()->drawPrimitive(PE_FrameLineEdit, option, painter, widget); uint resolve_mask = option->palette.resolve(); @@ -994,7 +994,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, case PE_FrameTabWidget: if (const QStyleOptionTabWidgetFrame *frame = qstyleoption_cast(option)) { - GtkWidget *gtkNotebook = d->gtkWidget(QLS("GtkNotebook")); + GtkWidget *gtkNotebook = d->gtkWidget("GtkNotebook"); style = gtkPainter.getStyle(gtkNotebook); gtkPainter.setAlphaSupport(false); GtkShadowType shadow = GTK_SHADOW_OUT; @@ -1042,7 +1042,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, GtkStateType state = gtkPainter.gtkState(option); if (option->state & State_On || option->state & State_Sunken) state = GTK_STATE_ACTIVE; - GtkWidget *gtkButton = d->gtkWidget(isTool ? QLS("GtkToolButton.GtkButton") : QLS("GtkButton")); + GtkWidget *gtkButton = isTool ? d->gtkWidget("GtkToolButton.GtkButton") : d->gtkWidget("GtkButton"); gint focusWidth, focusPad; gboolean interiorFocus = false; d->gtk_widget_style_get (gtkButton, @@ -1098,14 +1098,14 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, else shadow = GTK_SHADOW_OUT; - GtkWidget *gtkRadioButton = d->gtkWidget(QLS("GtkRadioButton")); + GtkWidget *gtkRadioButton = d->gtkWidget("GtkRadioButton"); gint spacing; d->gtk_widget_style_get(gtkRadioButton, "indicator-spacing", &spacing, NULL); QRect buttonRect = option->rect.adjusted(spacing, spacing, -spacing, -spacing); gtkPainter.setClipRect(option->rect); // ### 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")); + GtkWidget *gtkCheckButton = d->gtkWidget("GtkCheckButton"); QString key(QLS("radiobutton")); if (option->state & State_HasFocus) { // Themes such as Nodoka check this flag key += QLatin1Char('f'); @@ -1133,7 +1133,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, int spacing; - GtkWidget *gtkCheckButton = d->gtkWidget(QLS("GtkCheckButton")); + GtkWidget *gtkCheckButton = d->gtkWidget("GtkCheckButton"); QString key(QLS("checkbutton")); if (option->state & State_HasFocus) { // Themes such as Nodoka checks this flag key += QLatin1Char('f'); @@ -1275,7 +1275,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom if ((groupBox->subControls & QStyle::SC_GroupBoxLabel) && !groupBox->text.isEmpty()) { // Draw prelight background - GtkWidget *gtkCheckButton = d->gtkWidget(QLS("GtkCheckButton")); + GtkWidget *gtkCheckButton = d->gtkWidget("GtkCheckButton"); if (option->state & State_MouseOver) { QRect bgRect = textRect | checkBoxRect; @@ -1348,7 +1348,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom GtkShadowType shadow = (option->state & State_Sunken || option->state & State_On ) ? GTK_SHADOW_IN : GTK_SHADOW_OUT; - QString comboBoxPath = QLS(comboBox->editable ? "GtkComboBoxEntry" : "GtkComboBox"); + const QHashableLatin1Literal comboBoxPath = comboBox->editable ? QHashableLatin1Literal("GtkComboBoxEntry") : QHashableLatin1Literal("GtkComboBox"); // We use the gtk widget to position arrows and separators for us GtkWidget *gtkCombo = d->gtkWidget(comboBoxPath); @@ -1356,7 +1356,8 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom d->gtk_widget_set_direction(gtkCombo, reverse ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR); d->gtk_widget_size_allocate(gtkCombo, &geometry); - QString buttonPath = comboBoxPath + QLS(".GtkToggleButton"); + QHashableLatin1Literal buttonPath = comboBox->editable ? QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton") + : QHashableLatin1Literal("GtkComboBox.GtkToggleButton"); GtkWidget *gtkToggleButton = d->gtkWidget(buttonPath); d->gtk_widget_set_direction(gtkToggleButton, reverse ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR); if (gtkToggleButton && (appears_as_list || comboBox->editable)) { @@ -1365,7 +1366,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom // Draw the combo box as a line edit with a button next to it if (comboBox->editable || appears_as_list) { GtkStateType frameState = (state == GTK_STATE_PRELIGHT) ? GTK_STATE_NORMAL : state; - QString entryPath = QLS(comboBox->editable ? "GtkComboBoxEntry.GtkEntry" : "GtkComboBox.GtkFrame"); + QHashableLatin1Literal entryPath = comboBox->editable ? QHashableLatin1Literal("GtkComboBoxEntry.GtkEntry") : QHashableLatin1Literal("GtkComboBox.GtkFrame"); GtkWidget *gtkEntry = d->gtkWidget(entryPath); d->gtk_widget_set_direction(gtkEntry, reverse ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR); QRect frameRect = option->rect; @@ -1391,11 +1392,11 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom else { gtkCachedPainter.paintFlatBox(gtkEntry, "entry_bg", contentRect, option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE, - GTK_SHADOW_NONE, gtkEntry->style, entryPath + QString::number(focus)); + GTK_SHADOW_NONE, gtkEntry->style, entryPath.toString() + QString::number(focus)); } gtkCachedPainter.paintShadow(gtkEntry, comboBox->editable ? "entry" : "frame", frameRect, frameState, - GTK_SHADOW_IN, gtkEntry->style, entryPath + + GTK_SHADOW_IN, gtkEntry->style, entryPath.toString() + QString::number(focus) + QString::number(comboBox->editable) + QString::number(option->direction)); if (focus) @@ -1416,7 +1417,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom Q_ASSERT(gtkToggleButton); gtkCachedPainter.paintBox( gtkToggleButton, "button", arrowButtonRect, buttonState, - shadow, gtkToggleButton->style, buttonPath + + shadow, gtkToggleButton->style, buttonPath.toString() + QString::number(focus) + QString::number(option->direction)); if (focus) GTK_WIDGET_UNSET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS); @@ -1429,12 +1430,17 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom gtkCachedPainter.paintBox(gtkToggleButton, "button", buttonRect, state, shadow, gtkToggleButton->style, - buttonPath + QString::number(focus)); + buttonPath.toString() + QString::number(focus)); if (focus) GTK_WIDGET_UNSET_FLAGS(gtkToggleButton, GTK_HAS_FOCUS); + QHashableLatin1Literal buttonPath = comboBox->editable ? QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton") + : QHashableLatin1Literal("GtkComboBox.GtkToggleButton"); + // Draw the separator between label and arrows - QString vSeparatorPath = buttonPath + QLS(".GtkHBox.GtkVSeparator"); + QHashableLatin1Literal vSeparatorPath = comboBox->editable + ? QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton.GtkHBox.GtkVSeparator") + : QHashableLatin1Literal("GtkComboBox.GtkToggleButton.GtkHBox.GtkVSeparator"); if (GtkWidget *gtkVSeparator = d->gtkWidget(vSeparatorPath)) { QRect vLineRect(gtkVSeparator->allocation.x, @@ -1444,7 +1450,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom gtkCachedPainter.paintVline( gtkVSeparator, "vseparator", vLineRect, state, gtkVSeparator->style, - 0, vLineRect.height(), 0, vSeparatorPath); + 0, vLineRect.height(), 0, vSeparatorPath.toString()); gint interiorFocus = true; @@ -1469,8 +1475,18 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom else state = GTK_STATE_NORMAL; - QString arrowPath = comboBoxPath + QLS(appears_as_list ? ".GtkToggleButton.GtkArrow" - : ".GtkToggleButton.GtkHBox.GtkArrow"); + QHashableLatin1Literal arrowPath(""); + if (comboBox->editable) { + if (appears_as_list) + arrowPath = QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton.GtkArrow"); + else + arrowPath = QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton.GtkHBox.GtkArrow"); + } else { + if (appears_as_list) + arrowPath = QHashableLatin1Literal("GtkComboBox.GtkToggleButton.GtkArrow"); + else + arrowPath = QHashableLatin1Literal("GtkComboBox.GtkToggleButton.GtkHBox.GtkArrow"); + } GtkWidget *gtkArrow = d->gtkWidget(arrowPath); gfloat scale = 0.7; @@ -1497,7 +1513,11 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom if (sunken) { int xoff, yoff; - GtkWidget *gtkButton = d->gtkWidget(comboBoxPath + QLS(".GtkToggleButton")); + const QHashableLatin1Literal toggleButtonPath = comboBox->editable + ? QHashableLatin1Literal("GtkComboBoxEntry.GtkToggleButton") + : QHashableLatin1Literal("GtkComboBox.GtkToggleButton"); + + GtkWidget *gtkButton = d->gtkWidget(toggleButtonPath); d->gtk_widget_style_get(gtkButton, "child-displacement-x", &xoff, NULL); d->gtk_widget_style_get(gtkButton, "child-displacement-y", &yoff, NULL); arrowRect = arrowRect.adjusted(xoff, yoff, xoff, yoff); @@ -1509,7 +1529,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom gtkCachedPainter.setClipRect(option->rect); gtkCachedPainter.paintArrow( gtkArrow, "arrow", arrowRect, GTK_ARROW_DOWN, state, GTK_SHADOW_NONE, TRUE, - style, arrowPath + QString::number(option->direction)); + style, arrowPath.toString() + QString::number(option->direction)); } } END_STYLE_PIXMAPCACHE; @@ -1570,7 +1590,7 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom QStyleOptionToolButton label = *toolbutton; label.state = bflags; - GtkWidget *gtkButton = d->gtkWidget(QLS("GtkToolButton.GtkButton")); + GtkWidget *gtkButton = d->gtkWidget("GtkToolButton.GtkButton"); QPalette pal = toolbutton->palette; if (option->state & State_Enabled && option->state & State_MouseOver && !(widget && widget->testAttribute(Qt::WA_SetPalette))) { @@ -1605,8 +1625,8 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom case CC_ScrollBar: if (const QStyleOptionSlider *scrollBar = qstyleoption_cast(option)) { - GtkWidget *gtkHScrollBar = d->gtkWidget(QLS("GtkHScrollbar")); - GtkWidget *gtkVScrollBar = d->gtkWidget(QLS("GtkVScrollbar")); + GtkWidget *gtkHScrollBar = d->gtkWidget("GtkHScrollbar"); + GtkWidget *gtkVScrollBar = d->gtkWidget("GtkVScrollbar"); // Fill background in case the scrollbar is partially transparent painter->fillRect(option->rect, option->palette.background()); @@ -1751,10 +1771,9 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom case CC_SpinBox: if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast(option)) { - GtkWidget *gtkSpinButton = d->gtkWidget( - spinBox->buttonSymbols == QAbstractSpinBox::NoButtons ? - QLS("GtkEntry") : - QLS("GtkSpinButton")); + GtkWidget *gtkSpinButton = spinBox->buttonSymbols == QAbstractSpinBox::NoButtons + ? d->gtkWidget("GtkEntry") + : d->gtkWidget("GtkSpinButton"); bool isEnabled = (spinBox->state & State_Enabled); bool hover = isEnabled && (spinBox->state & State_MouseOver); bool sunken = (spinBox->state & State_Sunken); @@ -1906,8 +1925,8 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom case CC_Slider: if (const QStyleOptionSlider *slider = qstyleoption_cast(option)) { - GtkWidget *hScaleWidget = d->gtkWidget(QLS("GtkHScale")); - GtkWidget *vScaleWidget = d->gtkWidget(QLS("GtkVScale")); + GtkWidget *hScaleWidget = d->gtkWidget("GtkHScale"); + GtkWidget *vScaleWidget = d->gtkWidget("GtkVScale"); QRect groove = proxy()->subControlRect(CC_Slider, option, SC_SliderGroove, widget); QRect handle = proxy()->subControlRect(CC_Slider, option, SC_SliderHandle, widget); @@ -2097,7 +2116,7 @@ void QGtkStyle::drawControl(ControlElement element, switch (element) { case CE_ProgressBarLabel: if (const QStyleOptionProgressBar *bar = qstyleoption_cast(option)) { - GtkWidget *gtkProgressBar = d->gtkWidget(QLS("GtkProgressBar")); + GtkWidget *gtkProgressBar = d->gtkWidget("GtkProgressBar"); if (!gtkProgressBar) return; @@ -2200,7 +2219,7 @@ void QGtkStyle::drawControl(ControlElement element, if (button->features & QStyleOptionButton::HasMenu) ir = ir.adjusted(0, 0, -pixelMetric(PM_MenuButtonIndicator, button, widget), 0); - GtkWidget *gtkButton = d->gtkWidget(QLS("GtkButton")); + GtkWidget *gtkButton = d->gtkWidget("GtkButton"); QPalette pal = button->palette; int labelState = GTK_STATE_INSENSITIVE; if (option->state & State_Enabled) @@ -2221,7 +2240,7 @@ void QGtkStyle::drawControl(ControlElement element, bool isRadio = (element == CE_RadioButton); // Draw prelight background - GtkWidget *gtkRadioButton = d->gtkWidget(QLS("GtkRadioButton")); + GtkWidget *gtkRadioButton = d->gtkWidget("GtkRadioButton"); if (option->state & State_MouseOver) { gtkPainter.paintFlatBox(gtkRadioButton, "checkbutton", option->rect, @@ -2289,7 +2308,7 @@ void QGtkStyle::drawControl(ControlElement element, } if (!cb->currentText.isEmpty() && !cb->editable) { - GtkWidget *gtkCombo = d->gtkWidget(QLS("GtkComboBox")); + GtkWidget *gtkCombo = d->gtkWidget("GtkComboBox"); QPalette pal = cb->palette; int labelState = GTK_STATE_INSENSITIVE; @@ -2366,7 +2385,7 @@ void QGtkStyle::drawControl(ControlElement element, // Draws the header in tables. if (const QStyleOptionHeader *header = qstyleoption_cast(option)) { Q_UNUSED(header); - GtkWidget *gtkTreeView = d->gtkWidget(QLS("GtkTreeView")); + GtkWidget *gtkTreeView = d->gtkWidget("GtkTreeView"); // Get the middle column GtkTreeViewColumn *column = d->gtk_tree_view_get_column((GtkTreeView*)gtkTreeView, 1); Q_ASSERT(column); @@ -2387,7 +2406,7 @@ void QGtkStyle::drawControl(ControlElement element, #ifndef QT_NO_SIZEGRIP case CE_SizeGrip: { - GtkWidget *gtkStatusbar = d->gtkWidget(QLS("GtkStatusbar.GtkFrame")); + GtkWidget *gtkStatusbar = d->gtkWidget("GtkStatusbar.GtkFrame"); QRect gripRect = option->rect.adjusted(0, 0, -gtkStatusbar->style->xthickness, -gtkStatusbar->style->ythickness); gtkPainter.paintResizeGrip( gtkStatusbar, "statusbar", gripRect, GTK_STATE_NORMAL, GTK_SHADOW_OUT, QApplication::isRightToLeft() ? @@ -2399,7 +2418,7 @@ void QGtkStyle::drawControl(ControlElement element, #endif // QT_NO_SIZEGRIP case CE_MenuBarEmptyArea: { - GtkWidget *gtkMenubar = d->gtkWidget(QLS("GtkMenuBar")); + GtkWidget *gtkMenubar = d->gtkWidget("GtkMenuBar"); GdkColor gdkBg = gtkMenubar->style->bg[GTK_STATE_NORMAL]; // Theme can depend on transparency painter->fillRect(option->rect, QColor(gdkBg.red>>8, gdkBg.green>>8, gdkBg.blue>>8)); if (widget) { // See CE_MenuBarItem @@ -2422,8 +2441,8 @@ void QGtkStyle::drawControl(ControlElement element, painter->save(); if (const QStyleOptionMenuItem *mbi = qstyleoption_cast(option)) { - GtkWidget *gtkMenubarItem = d->gtkWidget(QLS("GtkMenuBar.GtkMenuItem")); - GtkWidget *gtkMenubar = d->gtkWidget(QLS("GtkMenuBar")); + GtkWidget *gtkMenubarItem = d->gtkWidget("GtkMenuBar.GtkMenuItem"); + GtkWidget *gtkMenubar = d->gtkWidget("GtkMenuBar"); style = gtkMenubarItem->style; @@ -2479,7 +2498,7 @@ void QGtkStyle::drawControl(ControlElement element, break; case CE_Splitter: { - GtkWidget *gtkWindow = d->gtkWidget(QLS("GtkWindow")); // The Murrine Engine currently assumes a widget is passed + GtkWidget *gtkWindow = d->gtkWidget("GtkWindow"); // The Murrine Engine currently assumes a widget is passed gtkPainter.paintHandle(gtkWindow, "splitter", option->rect, gtkPainter.gtkState(option), GTK_SHADOW_NONE, !(option->state & State_Horizontal) ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL, style); @@ -2499,7 +2518,7 @@ void QGtkStyle::drawControl(ControlElement element, if (toolbar->positionWithinLine != QStyleOptionToolBar::End) rect.adjust(0, 0, 1, 0); - GtkWidget *gtkToolbar = d->gtkWidget(QLS("GtkToolbar")); + GtkWidget *gtkToolbar = d->gtkWidget("GtkToolbar"); GtkShadowType shadow_type = GTK_SHADOW_NONE; d->gtk_widget_style_get(gtkToolbar, "shadow-type", &shadow_type, NULL); gtkPainter.paintBox( gtkToolbar, "toolbar", rect, @@ -2518,15 +2537,15 @@ void QGtkStyle::drawControl(ControlElement element, const int windowsItemHMargin = 3; // menu item hor text margin const int windowsItemVMargin = 26; // menu item ver text margin const int windowsRightBorder = 15; // right border on windows - GtkWidget *gtkMenuItem = menuItem->checked ? d->gtkWidget(QLS("GtkMenu.GtkCheckMenuItem")) : - d->gtkWidget(QLS("GtkMenu.GtkMenuItem")); + GtkWidget *gtkMenuItem = menuItem->checked ? d->gtkWidget("GtkMenu.GtkCheckMenuItem") : + d->gtkWidget("GtkMenu.GtkMenuItem"); style = gtkPainter.getStyle(gtkMenuItem); QColor borderColor = option->palette.background().color().darker(160); QColor shadow = option->palette.dark().color(); if (menuItem->menuItemType == QStyleOptionMenuItem::Separator) { - GtkWidget *gtkMenuSeparator = d->gtkWidget(QLS("GtkMenu.GtkSeparatorMenuItem")); + GtkWidget *gtkMenuSeparator = d->gtkWidget("GtkMenu.GtkSeparatorMenuItem"); painter->setPen(shadow.lighter(106)); gboolean wide_separators = 0; gint separator_height = 0; @@ -2570,7 +2589,7 @@ void QGtkStyle::drawControl(ControlElement element, bool ignoreCheckMark = false; gint checkSize; - d->gtk_widget_style_get(d->gtkWidget(QLS("GtkMenu.GtkCheckMenuItem")), "indicator-size", &checkSize, NULL); + d->gtk_widget_style_get(d->gtkWidget("GtkMenu.GtkCheckMenuItem"), "indicator-size", &checkSize, NULL); int checkcol = qMax(menuItem->maxIconWidth, qMax(20, checkSize)); @@ -2781,7 +2800,7 @@ void QGtkStyle::drawControl(ControlElement element, case CE_PushButton: if (const QStyleOptionButton *btn = qstyleoption_cast(option)) { - GtkWidget *gtkButton = d->gtkWidget(QLS("GtkButton")); + GtkWidget *gtkButton = d->gtkWidget("GtkButton"); proxy()->drawControl(CE_PushButtonBevel, btn, painter, widget); QStyleOptionButton subopt = *btn; subopt.rect = subElementRect(SE_PushButtonContents, btn, widget); @@ -2807,7 +2826,7 @@ void QGtkStyle::drawControl(ControlElement element, case CE_TabBarTabShape: if (const QStyleOptionTab *tab = qstyleoption_cast(option)) { - GtkWidget *gtkNotebook = d->gtkWidget(QLS("GtkNotebook")); + GtkWidget *gtkNotebook = d->gtkWidget("GtkNotebook"); style = gtkPainter.getStyle(gtkNotebook); QRect rect = option->rect; @@ -2874,7 +2893,7 @@ void QGtkStyle::drawControl(ControlElement element, case CE_ProgressBarGroove: if (const QStyleOptionProgressBar *bar = qstyleoption_cast(option)) { Q_UNUSED(bar); - GtkWidget *gtkProgressBar = d->gtkWidget(QLS("GtkProgressBar")); + GtkWidget *gtkProgressBar = d->gtkWidget("GtkProgressBar"); GtkStateType state = gtkPainter.gtkState(option); gtkPainter.paintBox( gtkProgressBar, "trough", option->rect, state, GTK_SHADOW_IN, gtkProgressBar->style); } @@ -2884,7 +2903,7 @@ void QGtkStyle::drawControl(ControlElement element, case CE_ProgressBarContents: if (const QStyleOptionProgressBar *bar = qstyleoption_cast(option)) { GtkStateType state = option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE; - GtkWidget *gtkProgressBar = d->gtkWidget(QLS("GtkProgressBar")); + GtkWidget *gtkProgressBar = d->gtkWidget("GtkProgressBar"); style = gtkProgressBar->style; gtkPainter.paintBox( gtkProgressBar, "trough", option->rect, state, GTK_SHADOW_IN, style); int xt = style->xthickness; @@ -3042,7 +3061,7 @@ QRect QGtkStyle::subControlRect(ComplexControl control, const QStyleOptionComple case CC_SpinBox: if (const QStyleOptionSpinBox *spinbox = qstyleoption_cast(option)) { - GtkWidget *gtkSpinButton = d->gtkWidget(QLS("GtkSpinButton")); + GtkWidget *gtkSpinButton = d->gtkWidget("GtkSpinButton"); int center = spinbox->rect.height() / 2; int xt = spinbox->frame ? gtkSpinButton->style->xthickness : 0; int yt = spinbox->frame ? gtkSpinButton->style->ythickness : 0; @@ -3096,15 +3115,19 @@ QRect QGtkStyle::subControlRect(ComplexControl control, const QStyleOptionComple if (const QStyleOptionComboBox *box = qstyleoption_cast(option)) { // We employ the gtk widget to position arrows and separators for us QString comboBoxPath = box->editable ? QLS("GtkComboBoxEntry") : QLS("GtkComboBox"); - GtkWidget *gtkCombo = d->gtkWidget(comboBoxPath); + GtkWidget *gtkCombo = box->editable ? d->gtkWidget("GtkComboBoxEntry") + : d->gtkWidget("GtkComboBox"); d->gtk_widget_set_direction(gtkCombo, (option->direction == Qt::RightToLeft) ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR); GtkAllocation geometry = {0, 0, qMax(0, option->rect.width()), qMax(0, option->rect.height())}; d->gtk_widget_size_allocate(gtkCombo, &geometry); int appears_as_list = !proxy()->styleHint(QStyle::SH_ComboBox_Popup, option, widget); - QString arrowPath = comboBoxPath + QLS(".GtkToggleButton"); - - if (!box->editable && !appears_as_list) - arrowPath += QLS(".GtkHBox.GtkArrow"); + QHashableLatin1Literal arrowPath("GtkComboBoxEntry.GtkToggleButton"); + if (!box->editable) { + if (appears_as_list) + arrowPath = "GtkComboBox.GtkToggleButton"; + else + arrowPath = "GtkComboBox.GtkToggleButton.GtkHBox.GtkArrow"; + } GtkWidget *arrowWidget = d->gtkWidget(arrowPath); if (!arrowWidget) @@ -3163,7 +3186,7 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, case CT_ToolButton: if (const QStyleOptionToolButton *toolbutton = qstyleoption_cast(option)) { - GtkWidget *gtkButton = d->gtkWidget(QLS("GtkToolButton.GtkButton")); + GtkWidget *gtkButton = d->gtkWidget("GtkToolButton.GtkButton"); newSize = size + QSize(2 * gtkButton->style->xthickness, 2 + 2 * gtkButton->style->ythickness); if (widget && qobject_cast(widget->parentWidget())) { QSize minSize(0, 25); @@ -3181,14 +3204,14 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, int textMargin = 8; if (menuItem->menuItemType == QStyleOptionMenuItem::Separator) { - GtkWidget *gtkMenuSeparator = d->gtkWidget(QLS("GtkMenu.GtkSeparatorMenuItem")); + GtkWidget *gtkMenuSeparator = d->gtkWidget("GtkMenu.GtkSeparatorMenuItem"); GtkRequisition sizeReq = {0, 0}; d->gtk_widget_size_request(gtkMenuSeparator, &sizeReq); newSize = QSize(size.width(), sizeReq.height); break; } - GtkWidget *gtkMenuItem = d->gtkWidget(QLS("GtkMenu.GtkCheckMenuItem")); + GtkWidget *gtkMenuItem = d->gtkWidget("GtkMenu.GtkCheckMenuItem"); GtkStyle* style = gtkMenuItem->style; // Note we get the perfect height for the default font since we @@ -3210,12 +3233,12 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, case CT_SpinBox: // QSpinBox does some nasty things that depends on CT_LineEdit - newSize = size + QSize(0, -d->gtkWidget(QLS("GtkSpinButton"))->style->ythickness * 2); + newSize = size + QSize(0, -d->gtkWidget("GtkSpinButton")->style->ythickness * 2); break; case CT_PushButton: if (const QStyleOptionButton *btn = qstyleoption_cast(option)) { - GtkWidget *gtkButton = d->gtkWidget(QLS("GtkButton")); + GtkWidget *gtkButton = d->gtkWidget("GtkButton"); gint focusPadding, focusWidth; d->gtk_widget_style_get(gtkButton, "focus-padding", &focusPadding, NULL); d->gtk_widget_style_get(gtkButton, "focus-line-width", &focusWidth, NULL); @@ -3223,7 +3246,7 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, newSize += QSize(2*gtkButton->style->xthickness + 4, 2*gtkButton->style->ythickness); newSize += QSize(2*(focusWidth + focusPadding + 2), 2*(focusWidth + focusPadding)); - GtkWidget *gtkButtonBox = d->gtkWidget(QLS("GtkHButtonBox")); + GtkWidget *gtkButtonBox = d->gtkWidget("GtkHButtonBox"); gint minWidth = 85, minHeight = 0; d->gtk_widget_style_get(gtkButtonBox, "child-min-width", &minWidth, "child-min-height", &minHeight, NULL); @@ -3236,13 +3259,13 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, break; case CT_Slider: { - GtkWidget *gtkSlider = d->gtkWidget(QLS("GtkHScale")); + GtkWidget *gtkSlider = d->gtkWidget("GtkHScale"); newSize = size + QSize(2*gtkSlider->style->xthickness, 2*gtkSlider->style->ythickness); } break; case CT_LineEdit: { - GtkWidget *gtkEntry = d->gtkWidget(QLS("GtkEntry")); + GtkWidget *gtkEntry = d->gtkWidget("GtkEntry"); newSize = size + QSize(2*gtkEntry->style->xthickness, 2 + 2*gtkEntry->style->ythickness); } break; @@ -3253,7 +3276,7 @@ QSize QGtkStyle::sizeFromContents(ContentsType type, const QStyleOption *option, case CT_ComboBox: if (const QStyleOptionComboBox *combo = qstyleoption_cast(option)) { - GtkWidget *gtkCombo = d->gtkWidget(QLS("GtkComboBox")); + GtkWidget *gtkCombo = d->gtkWidget("GtkComboBox"); QRect arrowButtonRect = proxy()->subControlRect(CC_ComboBox, combo, SC_ComboBoxArrow, widget); newSize = size + QSize(12 + arrowButtonRect.width() + 2*gtkCombo->style->xthickness, 4 + 2*gtkCombo->style->ythickness); @@ -3405,7 +3428,7 @@ QRect QGtkStyle::subElementRect(SubElement element, const QStyleOption *option, return option->rect; case SE_PushButtonContents: if (!d->gtk_check_version(2, 10, 0)) { - GtkWidget *gtkButton = d->gtkWidget(QLS("GtkButton")); + GtkWidget *gtkButton = d->gtkWidget("GtkButton"); GtkBorder *border = 0; d->gtk_widget_style_get(gtkButton, "inner-border", &border, NULL); if (border) { diff --git a/src/gui/styles/qgtkstyle_p.cpp b/src/gui/styles/qgtkstyle_p.cpp index a033407..6916c02 100644 --- a/src/gui/styles/qgtkstyle_p.cpp +++ b/src/gui/styles/qgtkstyle_p.cpp @@ -60,6 +60,7 @@ #include #include #include +#include #include #include @@ -233,17 +234,22 @@ static void update_toolbar_style(GtkWidget *gtkToolBar, GParamSpec *, gpointer) } } -static QString classPath(GtkWidget *widget) +static QHashableLatin1Literal classPath(GtkWidget *widget) { - char* class_path; + char *class_path; QGtkStylePrivate::gtk_widget_path (widget, NULL, &class_path, NULL); - QString path = QLS(class_path); + + char *copy = class_path; + if (strncmp(copy, "GtkWindow.", 10) == 0) + copy += 10; + if (strncmp(copy, "GtkFixed.", 9) == 0) + copy += 9; + + copy = strdup(copy); + g_free(class_path); - // Remove the prefixes - path.remove(QLS("GtkWindow.")); - path.remove(QLS("GtkFixed.")); - return path; + return QHashableLatin1Literal::fromData(copy); } @@ -261,6 +267,7 @@ bool QGtkStyleFilter::eventFilter(QObject *obj, QEvent *e) } QList QGtkStylePrivate::instances; +QGtkStylePrivate::WidgetMap *QGtkStylePrivate::widgetMap = 0; QGtkStylePrivate::QGtkStylePrivate() : QCleanlooksStylePrivate() @@ -282,7 +289,7 @@ void QGtkStylePrivate::init() qApp->installEventFilter(&filter); } -GtkWidget* QGtkStylePrivate::gtkWidget(const QString &path) +GtkWidget* QGtkStylePrivate::gtkWidget(const QHashableLatin1Literal &path) { GtkWidget *widget = gtkWidgetMap()->value(path); if (!widget) { @@ -292,10 +299,10 @@ GtkWidget* QGtkStylePrivate::gtkWidget(const QString &path) return widget; } -GtkStyle* QGtkStylePrivate::gtkStyle(const QString &path) +GtkStyle* QGtkStylePrivate::gtkStyle(const QHashableLatin1Literal &path) { - if (gtkWidgetMap()->contains(path)) - return gtkWidgetMap()->value(path)->style; + if (GtkWidget *w = gtkWidgetMap()->value(path)) + return w->style; return 0; } @@ -497,7 +504,7 @@ void QGtkStylePrivate::initGtkWidgets() const } static QString themeName; - if (!gtkWidgetMap()->contains(QLS("GtkWindow")) && themeName.isEmpty()) { + if (!gtkWidgetMap()->contains("GtkWindow") && themeName.isEmpty()) { themeName = getThemeName(); if (themeName.isEmpty()) { @@ -522,14 +529,14 @@ void QGtkStylePrivate::initGtkWidgets() const QGtkStylePrivate::gtk_widget_realize(gtkWindow); if (displayDepth == -1) displayDepth = QGtkStylePrivate::gdk_drawable_get_depth(gtkWindow->window); - gtkWidgetMap()->insert(QLS("GtkWindow"), gtkWindow); + gtkWidgetMap()->insert(QHashableLatin1Literal::fromData(strdup("GtkWindow")), gtkWindow); // Make all other widgets. respect the text direction if (qApp->layoutDirection() == Qt::RightToLeft) QGtkStylePrivate::gtk_widget_set_default_direction(GTK_TEXT_DIR_RTL); - if (!gtkWidgetMap()->contains(QLS("GtkButton"))) { + if (!gtkWidgetMap()->contains("GtkButton")) { GtkWidget *gtkButton = QGtkStylePrivate::gtk_button_new(); addWidget(gtkButton); g_signal_connect(gtkButton, "style-set", G_CALLBACK(gtkStyleSetCallback), 0); @@ -566,12 +573,12 @@ void QGtkStylePrivate::initGtkWidgets() const // When styles change subwidgets can get rearranged // as with the combo box. We need to update the widget map // to reflect this; - QHash oldMap = *gtkWidgetMap(); + QHash oldMap = *gtkWidgetMap(); gtkWidgetMap()->clear(); - QHashIterator it(oldMap); + QHashIterator it(oldMap); while (it.hasNext()) { it.next(); - if (!it.key().contains(QLatin1Char('.'))) { + if (!strchr(it.key().data(), '.')) { addAllSubWidgets(it.value()); } } @@ -586,8 +593,13 @@ void QGtkStylePrivate::initGtkWidgets() const */ void QGtkStylePrivate::cleanupGtkWidgets() { - if (gtkWidgetMap()->contains(QLS("GtkWindow"))) // Gtk will destroy all children - gtk_widget_destroy(gtkWidgetMap()->value(QLS("GtkWindow"))); + if (!widgetMap) + return; + if (widgetMap->contains("GtkWindow")) // Gtk will destroy all children + gtk_widget_destroy(widgetMap->value("GtkWindow")); + for (QHash::const_iterator it = widgetMap->constBegin(); + it != widgetMap->constEnd(); ++it) + free(const_cast(it.key().data())); } static bool resolveGConf() @@ -678,7 +690,7 @@ QString QGtkStylePrivate::getThemeName() int QGtkStylePrivate::getSpinboxArrowSize() const { const int MIN_ARROW_WIDTH = 6; - GtkWidget *spinButton = gtkWidget(QLS("GtkSpinButton")); + GtkWidget *spinButton = gtkWidget("GtkSpinButton"); GtkStyle *style = spinButton->style; gint size = pango_font_description_get_size (style->font_desc); gint arrow_size; @@ -698,17 +710,17 @@ bool QGtkStylePrivate::isKDE4Session() void QGtkStylePrivate::applyCustomPaletteHash() { - QPalette menuPal = gtkWidgetPalette(QLS("GtkMenu")); - GdkColor gdkBg = gtkWidget(QLS("GtkMenu"))->style->bg[GTK_STATE_NORMAL]; + QPalette menuPal = gtkWidgetPalette("GtkMenu"); + GdkColor gdkBg = gtkWidget("GtkMenu")->style->bg[GTK_STATE_NORMAL]; QColor bgColor(gdkBg.red>>8, gdkBg.green>>8, gdkBg.blue>>8); menuPal.setBrush(QPalette::Base, bgColor); menuPal.setBrush(QPalette::Window, bgColor); qApp->setPalette(menuPal, "QMenu"); - QPalette toolbarPal = gtkWidgetPalette(QLS("GtkToolbar")); + QPalette toolbarPal = gtkWidgetPalette("GtkToolbar"); qApp->setPalette(toolbarPal, "QToolBar"); - QPalette menuBarPal = gtkWidgetPalette(QLS("GtkMenuBar")); + QPalette menuBarPal = gtkWidgetPalette("GtkMenuBar"); qApp->setPalette(menuBarPal, "QMenuBar"); } @@ -717,7 +729,7 @@ void QGtkStylePrivate::applyCustomPaletteHash() */ GtkWidget* QGtkStylePrivate::getTextColorWidget() const { - return gtkWidget(QLS("GtkEntry")); + return gtkWidget("GtkEntry"); } void QGtkStylePrivate::setupGtkWidget(GtkWidget* widget) @@ -726,7 +738,7 @@ void QGtkStylePrivate::setupGtkWidget(GtkWidget* widget) static GtkWidget* protoLayout = 0; if (!protoLayout) { protoLayout = QGtkStylePrivate::gtk_fixed_new(); - QGtkStylePrivate::gtk_container_add((GtkContainer*)(gtkWidgetMap()->value(QLS("GtkWindow"))), protoLayout); + QGtkStylePrivate::gtk_container_add((GtkContainer*)(gtkWidgetMap()->value("GtkWindow")), protoLayout); } Q_ASSERT(protoLayout); @@ -739,8 +751,19 @@ void QGtkStylePrivate::setupGtkWidget(GtkWidget* widget) void QGtkStylePrivate::addWidgetToMap(GtkWidget *widget) { if (Q_GTK_IS_WIDGET(widget)) { - gtk_widget_realize(widget); - gtkWidgetMap()->insert(classPath(widget), widget); + gtk_widget_realize(widget); + QHashableLatin1Literal widgetPath = classPath(widget); + + WidgetMap *map = gtkWidgetMap(); + WidgetMap::iterator it = map->find(widgetPath); + if (it != map->end()) { + free(const_cast(it.key().data())); + map->erase(it); + } + map->insert(widgetPath, widget); +#ifdef DUMP_GTK_WIDGET_TREE + qWarning("Inserted Gtk Widget: %s", widgetPath.data()); +#endif } } @@ -753,7 +776,7 @@ void QGtkStylePrivate::addAllSubWidgets(GtkWidget *widget, gpointer v) } // Updates window/windowtext palette based on the indicated gtk widget -QPalette QGtkStylePrivate::gtkWidgetPalette(const QString >kWidgetName) const +QPalette QGtkStylePrivate::gtkWidgetPalette(const QHashableLatin1Literal >kWidgetName) const { GtkWidget *gtkWidget = QGtkStylePrivate::gtkWidget(gtkWidgetName); Q_ASSERT(gtkWidget); @@ -1089,6 +1112,28 @@ QIcon QGtkStylePrivate::getFilesystemIcon(const QFileInfo &info) return icon; } +bool operator==(const QHashableLatin1Literal &l1, const QHashableLatin1Literal &l2) +{ + return l1.size() == l2.size() || qstrcmp(l1.data(), l2.data()) == 0; +} + +// copied from qHash.cpp +uint qHash(const QHashableLatin1Literal &key) +{ + int n = key.size(); + const uchar *p = reinterpret_cast(key.data()); + uint h = 0; + uint g; + + while (n--) { + h = (h << 4) + *p++; + if ((g = (h & 0xf0000000)) != 0) + h ^= g >> 23; + h &= ~g; + } + return h; +} + QT_END_NAMESPACE #endif // !defined(QT_NO_STYLE_GTK) diff --git a/src/gui/styles/qgtkstyle_p.h b/src/gui/styles/qgtkstyle_p.h index db5b9b9..5ded4dd 100644 --- a/src/gui/styles/qgtkstyle_p.h +++ b/src/gui/styles/qgtkstyle_p.h @@ -56,6 +56,9 @@ #include #if !defined(QT_NO_STYLE_GTK) +#include +#include + #include #include @@ -72,6 +75,50 @@ typedef unsigned long XID; #define QLS(x) QLatin1String(x) +// ### Qt 4.7 - merge with QLatin1Literal +class QHashableLatin1Literal +{ +public: + int size() const { return m_size; } + const char *data() const { return m_data; } + + template + QHashableLatin1Literal(const char (&str)[N]) + : m_size(N - 1), m_data(str) {} + + QHashableLatin1Literal(const QHashableLatin1Literal &other) + : m_size(other.m_size), m_data(other.m_data) + {} + + QHashableLatin1Literal &operator=(const QHashableLatin1Literal &other) + { + if (this == &other) + return *this; + *const_cast(&m_size) = other.m_size; + *const_cast(&m_data) = const_cast(other.m_data); + return *this; + } + + QString toString() const { return QString::fromLatin1(m_data, m_size); } + + static QHashableLatin1Literal fromData(const char *str) + { + return QHashableLatin1Literal(str, qstrlen(str)); + } + +private: + QHashableLatin1Literal(const char *str, int length) + : m_size(length), m_data(str) + {} + + const int m_size; + const char *m_data; +}; + +bool operator==(const QHashableLatin1Literal &l1, const QHashableLatin1Literal &l2); +inline bool operator!=(const QHashableLatin1Literal &l1, const QHashableLatin1Literal &l2) { return !operator==(l1, l2); } +uint qHash(const QHashableLatin1Literal &key); + class GConf; class GConfClient; @@ -252,7 +299,6 @@ typedef char* (*Ptr_gnome_icon_lookup_sync) ( GnomeIconLookupFlags flags, GnomeIconLookupResultFlags *result); - class QGtkStylePrivate : public QCleanlooksStylePrivate { Q_DECLARE_PUBLIC(QGtkStyle) @@ -262,8 +308,8 @@ public: QGtkStyleFilter filter; - static GtkWidget* gtkWidget(const QString &path); - static GtkStyle* gtkStyle(const QString &path = QLatin1String("GtkWindow")); + static GtkWidget* gtkWidget(const QHashableLatin1Literal &path); + static GtkStyle* gtkStyle(const QHashableLatin1Literal &path = QHashableLatin1Literal("GtkWindow")); virtual void resolveGtk() const; virtual void initGtkMenu() const; @@ -418,17 +464,25 @@ public: static Ptr_gnome_icon_lookup_sync gnome_icon_lookup_sync; static Ptr_gnome_vfs_init gnome_vfs_init; - virtual QPalette gtkWidgetPalette(const QString >kWidgetName) const; + virtual QPalette gtkWidgetPalette(const QHashableLatin1Literal >kWidgetName) const; protected: - typedef QHash WidgetMap; + typedef QHash WidgetMap; + + static inline void destroyWidgetMap() + { + cleanupGtkWidgets(); + delete widgetMap; + widgetMap = 0; + } static inline WidgetMap *gtkWidgetMap() { - static WidgetMap *map = 0; - if (!map) - map = new WidgetMap(); - return map; + if (!widgetMap) { + widgetMap = new WidgetMap(); + qAddPostRoutine(destroyWidgetMap); + } + return widgetMap; } static QStringList extract_filter(const QString &rawFilter); @@ -443,6 +497,7 @@ protected: private: static QList instances; + static WidgetMap *widgetMap; friend class QGtkStyleUpdateScheduler; }; -- cgit v0.12 From aee5766de0ab6c942ae3e3747162871651a4ab74 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Thu, 11 Feb 2010 17:31:30 +0100 Subject: Speed up creation of the pixmap cache key As discussed with Jens and Joao Reviewed-by: Robert Griebl --- src/gui/styles/qstylehelper.cpp | 64 +++++++++++++++++++++++++++++++++++------ 1 file changed, 55 insertions(+), 9 deletions(-) diff --git a/src/gui/styles/qstylehelper.cpp b/src/gui/styles/qstylehelper.cpp index 071ec23..359e7e1 100644 --- a/src/gui/styles/qstylehelper.cpp +++ b/src/gui/styles/qstylehelper.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -56,22 +57,67 @@ QT_BEGIN_NAMESPACE +// internal helper. Converts an integer value to an unique string token +template +struct HexString +{ + inline HexString(const T t) + : val(t) + {} + + inline void write(QChar *&dest) const + { + const ushort hexChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + const char *c = reinterpret_cast(&val); + for (uint i = 0; i < sizeof(T); ++i) { + *dest++ = hexChars[*c & 0xf]; + *dest++ = hexChars[(*c & 0xf0) >> 4]; + ++c; + } + } + + const T val; +}; + +// specialization to enable fast concatenating of our string tokens to a string +template +struct QConcatenable > +{ + typedef HexString type; + enum { ExactSize = true }; + static int size(const HexString &str) { return sizeof(str.val) * 2; } + static inline void appendTo(const HexString &str, QChar *&out) { str.write(out); } +}; + namespace QStyleHelper { QString uniqueName(const QString &key, const QStyleOption *option, const QSize &size) { const QStyleOptionComplex *complexOption = qstyleoption_cast(option); - QString tmp = QString::fromLatin1("%1-%2-%3-%4-%5-%6x%7").arg(key).arg(uint(option->state)).arg(option->direction) - .arg(complexOption ? uint(complexOption->activeSubControls) : uint(0)) - .arg(option->palette.cacheKey()).arg(size.width()).arg(size.height()); + + QString tmp = key + % QLatin1Char('-') + % HexString(option->state) + % QLatin1Char('-') + % HexString(option->direction) + % QLatin1Char('-') + % HexString(complexOption ? uint(complexOption->activeSubControls) : 0u) + % QLatin1Char('-') + % HexString(option->palette.cacheKey()) + % QLatin1Char('-') + % HexString(size.width()) + % QLatin1Char('x') + % HexString(size.height()); + #ifndef QT_NO_SPINBOX if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast(option)) { - tmp.append(QLatin1Char('-')); - tmp.append(QString::number(spinBox->buttonSymbols)); - tmp.append(QLatin1Char('-')); - tmp.append(QString::number(spinBox->stepEnabled)); - tmp.append(QLatin1Char('-')); - tmp.append(QLatin1Char(spinBox->frame ? '1' : '0')); + tmp = tmp + % QLatin1Char('-') + % HexString(spinBox->buttonSymbols) + % QLatin1Char('-') + % HexString(spinBox->stepEnabled) + % QLatin1Char('-') + % QLatin1Char(spinBox->frame ? '1' : '0'); } #endif // QT_NO_SPINBOX return tmp; -- cgit v0.12 From d4bae0d0e96138d913bfc7ec9fa86b887043787f Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Wed, 3 Mar 2010 15:44:46 +0100 Subject: Fix for QRadioButtons and QCheckBoxes drawn incorrectly when a style sheet is set. Maemo 5 draws these controls very differently, so we can't rely on QWindowStyle handling CE_RadioButton/CE_CheckBox. Task-number: QTBUG-8356 Reviewed-by: ogoffart --- src/gui/styles/qstylesheetstyle.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/gui/styles/qstylesheetstyle.cpp b/src/gui/styles/qstylesheetstyle.cpp index bc1bece..5376386 100644 --- a/src/gui/styles/qstylesheetstyle.cpp +++ b/src/gui/styles/qstylesheetstyle.cpp @@ -3457,10 +3457,17 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q case CE_RadioButton: case CE_CheckBox: - rule.drawRule(p, opt->rect); - ParentStyle::drawControl(ce, opt, p, w); - return; - + if (rule.hasBox() || !rule.hasNativeBorder() || rule.hasDrawable() || hasStyleRule(w, PseudoElement_Indicator)) { + rule.drawRule(p, opt->rect); + ParentStyle::drawControl(ce, opt, p, w); + return; + } else if (const QStyleOptionButton *btn = qstyleoption_cast(opt)) { + QStyleOptionButton butOpt(*btn); + rule.configurePalette(&butOpt.palette, QPalette::ButtonText, QPalette::Button); + baseStyle()->drawControl(ce, &butOpt, p, w); + return; + } + break; case CE_RadioButtonLabel: case CE_CheckBoxLabel: if (const QStyleOptionButton *btn = qstyleoption_cast(opt)) { -- cgit v0.12 From 57b6629507e97c63cf2445eef12443dcb2639887 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Wed, 3 Mar 2010 15:41:38 +0100 Subject: Support keypad input with vnc driver Task-number: QT-1849 Reviewed-by: Jeremy --- src/plugins/gfxdrivers/vnc/qscreenvnc_qws.cpp | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/plugins/gfxdrivers/vnc/qscreenvnc_qws.cpp b/src/plugins/gfxdrivers/vnc/qscreenvnc_qws.cpp index 7bcb74d..e78fec1 100644 --- a/src/plugins/gfxdrivers/vnc/qscreenvnc_qws.cpp +++ b/src/plugins/gfxdrivers/vnc/qscreenvnc_qws.cpp @@ -325,6 +325,36 @@ static const struct { { 0xffe8, Qt::Key_Meta }, { 0xffe9, Qt::Key_Alt }, { 0xffea, Qt::Key_Alt }, + + { 0xffb0, Qt::Key_0 }, + { 0xffb1, Qt::Key_1 }, + { 0xffb2, Qt::Key_2 }, + { 0xffb3, Qt::Key_3 }, + { 0xffb4, Qt::Key_4 }, + { 0xffb5, Qt::Key_5 }, + { 0xffb6, Qt::Key_6 }, + { 0xffb7, Qt::Key_7 }, + { 0xffb8, Qt::Key_8 }, + { 0xffb9, Qt::Key_9 }, + + { 0xff8d, Qt::Key_Return }, + { 0xffaa, Qt::Key_Asterisk }, + { 0xffab, Qt::Key_Plus }, + { 0xffad, Qt::Key_Minus }, + { 0xffae, Qt::Key_Period }, + { 0xffaf, Qt::Key_Slash }, + + { 0xff95, Qt::Key_Home }, + { 0xff96, Qt::Key_Left }, + { 0xff97, Qt::Key_Up }, + { 0xff98, Qt::Key_Right }, + { 0xff99, Qt::Key_Down }, + { 0xff9a, Qt::Key_PageUp }, + { 0xff9b, Qt::Key_PageDown }, + { 0xff9c, Qt::Key_End }, + { 0xff9e, Qt::Key_Insert }, + { 0xff9f, Qt::Key_Delete }, + { 0, 0 } }; @@ -483,6 +513,10 @@ bool QRfbKeyEvent::read(QTcpSocket *s) keycode = keyMap[i].keycode; i++; } + + if (keycode >= ' ' && keycode <= '~') + unicode = keycode; + if (!keycode) { if (key <= 0xff) { unicode = key; -- cgit v0.12 From f3dab146f231398455e52ff99d4c6f8365c8d412 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Thu, 18 Feb 2010 16:07:27 +0100 Subject: Do not reset state too early on RMB click When long-tapping on a spin box, a context menu event would stop incrementing the spin box since we called reset() too early. Call reset only if it's clear that there's a context menu. Also don't crash if menu is 0. Reviewed-by: Robert Griebl --- src/gui/widgets/qabstractspinbox.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/widgets/qabstractspinbox.cpp b/src/gui/widgets/qabstractspinbox.cpp index 4a6235c..7e2f20d 100644 --- a/src/gui/widgets/qabstractspinbox.cpp +++ b/src/gui/widgets/qabstractspinbox.cpp @@ -1248,8 +1248,11 @@ void QAbstractSpinBox::contextMenuEvent(QContextMenuEvent *event) #else Q_D(QAbstractSpinBox); - d->reset(); QPointer menu = d->edit->createStandardContextMenu(); + if (!menu) + return; + + d->reset(); QAction *selAll = new QAction(tr("&Select All"), menu); menu->insertAction(d->edit->d_func()->selectAllAction, -- cgit v0.12 From 6ecee3c9790678d34b6d159a10d509d0f9244bc8 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Wed, 3 Mar 2010 15:38:43 +0100 Subject: Introduce a setAttribute_internal helper This allows to switch certain attributes on or off without copy/pasting lots of code. Used to switch off mutually exclusive attributes, e.g. the Mac*Size attributes, or Maemo's portrait/landscape attributes. Reviewed-by: Robert Griebl --- src/gui/kernel/qwidget.cpp | 50 +++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 7fdee2b..14fecb0 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -10294,6 +10294,29 @@ const QPixmap *QWidget::icon() const #endif // QT3_SUPPORT + /*! + \internal + + This just sets the corresponding attribute bit to 1 or 0 + */ +static void setAttribute_internal(Qt::WidgetAttribute attribute, bool on, QWidgetData *data, + QWidgetPrivate *d) +{ + if (attribute < int(8*sizeof(uint))) { + if (on) + data->widget_attributes |= (1<widget_attributes &= ~(1<high_attributes[int_off] |= (1<<(x-(int_off*8*sizeof(uint)))); + else + d->high_attributes[int_off] &= ~(1<<(x-(int_off*8*sizeof(uint)))); + } +} + /*! Sets the attribute \a attribute on this widget if \a on is true; otherwise clears the attribute. @@ -10320,19 +10343,7 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on) } #endif - if (attribute < int(8*sizeof(uint))) { - if (on) - data->widget_attributes |= (1<widget_attributes &= ~(1<high_attributes[int_off] |= (1<<(x-(int_off*8*sizeof(uint)))); - else - d->high_attributes[int_off] &= ~(1<<(x-(int_off*8*sizeof(uint)))); - } + setAttribute_internal(attribute, on, data, d); switch (attribute) { @@ -10391,14 +10402,11 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on) #ifdef Q_WS_MAC { // We can only have one of these set at a time - static const int MacSizes[] = { Qt::WA_MacNormalSize, Qt::WA_MacSmallSize, - Qt::WA_MacMiniSize, 0 }; - for (int i = 0; MacSizes[i] != 0; ++i) { - if (MacSizes[i] == attribute) - continue; - int macsize_x = MacSizes[i] - 8*sizeof(uint); - int macsize_int_off = macsize_x / (8*sizeof(uint)); - d->high_attributes[macsize_int_off] &= ~(1<<(macsize_x-(macsize_int_off*8*sizeof(uint)))); + const Qt::WidgetAttribute MacSizes[] = { Qt::WA_MacNormalSize, Qt::WA_MacSmallSize, + Qt::WA_MacMiniSize }; + for (int i = 0; i < 3; ++i) { + if (MacSizes[i] != attribute) + setAttribute_internal(MacSizes[i], false, data, d); } d->macUpdateSizeAttribute(); } -- cgit v0.12 From 4a961ad412846af126ece6d9e2385e3ebe009d72 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Wed, 16 Dec 2009 14:43:43 +0100 Subject: be more verbose when warning about incompatible libraries --- src/corelib/kernel/qobject.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 761b31f..8e4ec7c 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -132,7 +132,8 @@ QObjectPrivate::QObjectPrivate(int version) : threadData(0), connectionLists(0), senders(0), currentSender(0), currentChildBeingDeleted(0) { if (version != QObjectPrivateVersion) - qFatal("Cannot mix incompatible Qt libraries"); + qFatal("Cannot mix incompatible Qt library (version 0x%x) with this library (version 0x%x)", + version, QObjectPrivateVersion); // QObjectData initialization q_ptr = 0; -- cgit v0.12 From a2af08f9793b3884bdb770f89edd4754c0411654 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Thu, 4 Mar 2010 00:54:06 +1000 Subject: Clairify a comment in one of the auto tests. --- .../declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index dea88c4..b1935df 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -671,9 +671,9 @@ void tst_qdeclarativetextedit::delegateLoading() QTRY_VERIFY(view->status()==QDeclarativeView::Error); view->setFocus(); QTRY_VERIFY(!view->rootObject()); // there is fail item inside this test - //ErrorB should get a component which is ready but component.create() returns null + //A test should be added here with a component which is ready but component.create() returns null //Not sure how to accomplish this with QDeclarativeTextEdits cursor delegate - //###This could be a case of overzealous defensive programming + //###This was only needed for code coverage, and could be a case of overzealous defensive programming //delegate = view->rootObject()->findChild("delegateErrorB"); //QVERIFY(!delegate); } -- cgit v0.12 From 48dc16b34586f7dca8bf513f6447c97543801814 Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Wed, 3 Mar 2010 15:58:18 +0100 Subject: Block the Maemo5 window attribute values from being assigned to something else on other platforms. Reviewed-By: Harald Fernengel --- src/corelib/global/qnamespace.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index 6ee8ae9..d2546a7 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -500,6 +500,14 @@ public: WA_MergeSoftkeys = 124, WA_MergeSoftkeysRecursively = 125, +#if 0 // these values are reserved for Maemo5 - do not re-use them + WA_Maemo5NonComposited = 126, + WA_Maemo5StackedWindow = 127, + WA_Maemo5PortraitOrientation = 128, + WA_Maemo5LandscapeOrientation = 129, + WA_Maemo5AutoOrientation = 130, + WA_Maemo5ShowProgressIndicator = 131, +#endif // Add new attributes before this line WA_AttributeCount }; -- cgit v0.12 From 5b97c515ea574c1ac23c8595af34de406db2536d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Lind?= Date: Wed, 3 Mar 2010 15:58:02 +0100 Subject: Updating documentation for how to build QWS with tslib Reviewed-by: David Boddie --- doc/src/platforms/emb-pointer.qdoc | 6 +++--- doc/src/snippets/code/doc_src_emb-pointer.qdoc | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/src/platforms/emb-pointer.qdoc b/doc/src/platforms/emb-pointer.qdoc index 34510da..3c37b63 100644 --- a/doc/src/platforms/emb-pointer.qdoc +++ b/doc/src/platforms/emb-pointer.qdoc @@ -154,9 +154,9 @@ in the build environment. The tslib sources can be downloaded from \l - http://tslib.berlios.de. Use the \c configure script's -L and - -I options to explicitly specify the location of the library and - its headers: + http://tslib.berlios.de. Specify the location of the library and + its headers using -L and -I options in the \c qmake.conf file in + your \c mkspec. Also it can be helpful to add a -rpath-link: \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 7 diff --git a/doc/src/snippets/code/doc_src_emb-pointer.qdoc b/doc/src/snippets/code/doc_src_emb-pointer.qdoc index 9661ae5..0d66e18 100644 --- a/doc/src/snippets/code/doc_src_emb-pointer.qdoc +++ b/doc/src/snippets/code/doc_src_emb-pointer.qdoc @@ -77,7 +77,10 @@ export QWS_MOUSE_PROTO="Vr41xx:press=500:/dev/misc/ts" //! [7] -./configure -L -I +.... +QMAKE_CFLAGS += -I +QMAKE_LFLAGS += -L -Wl,-rpath-link= +.... //! [7] -- cgit v0.12 From be1037d7b6bcdf0ab34fe7fab00d706f8daa01b5 Mon Sep 17 00:00:00 2001 From: Adrian Constantin Date: Wed, 3 Mar 2010 17:21:37 +0200 Subject: Removed unused macro. Reviewed-by: Stefano Pironato --- src/gui/kernel/qapplication.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 6dda961..4fe3900 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -117,10 +117,6 @@ extern bool qt_wince_is_pocket_pc(); //qguifunctions_wince.cpp #include #endif -#ifndef QT_GUI_DOUBLE_CLICK_RADIUS -#define QT_GUI_DOUBLE_CLICK_RADIUS 5 -#endif - //#define ALIEN_DEBUG static void initResources() -- cgit v0.12 From 13e08bb43bc7c972e77fc7b77ae5de14235cb897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Nilsen?= Date: Wed, 3 Mar 2010 15:54:54 +0100 Subject: Fixes wrong composition mode for cached backgrounds in Graphics View. This change partially reverts commit a589005f and therefore fully reverts 68be6457. We cannot assume that only opaque pixels are painted in drawBackground(). Regression against 4.5. Auto-test included. Task-number: QTBUG-8168 Reviewed-by: trond --- src/gui/graphicsview/qgraphicsview.cpp | 6 ----- tests/auto/qgraphicsview/tst_qgraphicsview.cpp | 34 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp index 1ced3d7..a767987 100644 --- a/src/gui/graphicsview/qgraphicsview.cpp +++ b/src/gui/graphicsview/qgraphicsview.cpp @@ -3360,12 +3360,6 @@ void QGraphicsView::paintEvent(QPaintEvent *event) backgroundPainter.setClipRegion(d->backgroundPixmapExposed, Qt::ReplaceClip); if (viewTransformed) backgroundPainter.setTransform(viewTransform); -#ifdef Q_WS_X11 -#undef X11 - if (backgroundPainter.paintEngine()->type() != QPaintEngine::X11) -#define X11 qt_x11Data -#endif - backgroundPainter.setCompositionMode(QPainter::CompositionMode_Source); QRectF backgroundExposedSceneRect = mapToScene(d->backgroundPixmapExposed.boundingRect()).boundingRect(); drawBackground(&backgroundPainter, backgroundExposedSceneRect); d->backgroundPixmapExposed = QRegion(); diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp index c77f76d..1c19fab 100644 --- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp @@ -219,6 +219,7 @@ private slots: void inputMethodSensitivity(); void inputContextReset(); void indirectPainting(); + void compositionModeInDrawBackground(); // task specific tests below me void task172231_untransformableItems(); @@ -3825,6 +3826,39 @@ void tst_QGraphicsView::indirectPainting() QTRY_VERIFY(scene.drawCount > 0); } +void tst_QGraphicsView::compositionModeInDrawBackground() +{ + class MyView : public QGraphicsView + { public: + MyView(QGraphicsScene *scene) : QGraphicsView(scene), + painted(false), compositionMode(QPainter::CompositionMode_SourceOver) {} + bool painted; + QPainter::CompositionMode compositionMode; + void drawBackground(QPainter *painter, const QRectF &) + { + compositionMode = painter->compositionMode(); + painted = true; + } + }; + + QGraphicsScene dummy; + MyView view(&dummy); + view.show(); + QTest::qWaitForWindowShown(&view); + + // Make sure the painter's composition mode is SourceOver in drawBackground. + QTRY_VERIFY(view.painted); + QCOMPARE(view.compositionMode, QPainter::CompositionMode_SourceOver); + + view.painted = false; + view.setCacheMode(QGraphicsView::CacheBackground); + view.viewport()->update(); + + // Make sure the painter's composition mode is SourceOver in drawBackground + // with background cache enabled. + QTRY_VERIFY(view.painted); + QCOMPARE(view.compositionMode, QPainter::CompositionMode_SourceOver); +} void tst_QGraphicsView::task253415_reconnectUpdateSceneOnSceneChanged() { QGraphicsView view; -- cgit v0.12 From bfd0d6557dc54c0fd0270de6c138ea1031ea092c Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Wed, 3 Mar 2010 16:52:41 +0100 Subject: Fix warnings on MSVC --- src/gui/graphicsview/qgraphicslinearlayout.cpp | 2 ++ src/gui/image/qpixmapfilter.cpp | 4 ++-- src/gui/kernel/qwidget.cpp | 1 - src/gui/painting/qdrawhelper.cpp | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gui/graphicsview/qgraphicslinearlayout.cpp b/src/gui/graphicsview/qgraphicslinearlayout.cpp index 6a9eb29..9722683 100644 --- a/src/gui/graphicsview/qgraphicslinearlayout.cpp +++ b/src/gui/graphicsview/qgraphicslinearlayout.cpp @@ -554,6 +554,8 @@ void QGraphicsLinearLayout::dump(int indent) const d->orientation == Qt::Horizontal ? "Horizontal" : "Vertical"); d->engine.dump(indent + 1); } +#else + Q_UNUSED(indent); #endif } diff --git a/src/gui/image/qpixmapfilter.cpp b/src/gui/image/qpixmapfilter.cpp index 2792e45..0abf51f 100644 --- a/src/gui/image/qpixmapfilter.cpp +++ b/src/gui/image/qpixmapfilter.cpp @@ -726,7 +726,7 @@ void expblur(QImage &img, qreal radius, bool improvedQuality = false, int transp int img_height = img.height(); for (int row = 0; row < img_height; ++row) { - for (int i = 0; i <= improvedQuality; ++i) + for (int i = 0; i <= int(improvedQuality); ++i) qt_blurrow(img, row, alpha); } @@ -759,7 +759,7 @@ void expblur(QImage &img, qreal radius, bool improvedQuality = false, int transp img_height = temp.height(); for (int row = 0; row < img_height; ++row) { - for (int i = 0; i <= improvedQuality; ++i) + for (int i = 0; i <= int(improvedQuality); ++i) qt_blurrow(temp, row, alpha); } diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 2f6ec6b..aa5d259 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -5339,7 +5339,6 @@ void QWidgetPrivate::render(QPaintDevice *target, const QPoint &targetOffset, const QRegion &sourceRegion, QWidget::RenderFlags renderFlags, bool readyToRender) { - Q_Q(QWidget); if (!target) { qWarning("QWidget::render: null pointer to paint device"); return; diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 891f4c2..acd286a 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -7813,7 +7813,6 @@ static void qt_blend_color_argb_armv6(int count, const QSpan *spans, void *userD void qInitDrawhelperAsm() { - const uint features = qDetectCPUFeatures(); qt_memfill32 = qt_memfill_template; qt_memfill16 = qt_memfill_quint16; //qt_memfill_template; @@ -7822,6 +7821,7 @@ void qInitDrawhelperAsm() CompositionFunctionSolid *functionForModeSolidAsm = 0; #ifdef QT_NO_DEBUG + const uint features = qDetectCPUFeatures(); if (false) { #ifdef QT_HAVE_SSE2 } else if (features & SSE2) { -- cgit v0.12 From f57521e4c658cf239f4691efed66e49c41f22bd5 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Wed, 3 Mar 2010 17:15:47 +0100 Subject: Fix compile --- src/gui/styles/qgtkstyle_p.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/styles/qgtkstyle_p.h b/src/gui/styles/qgtkstyle_p.h index 5ded4dd..e8b0be7 100644 --- a/src/gui/styles/qgtkstyle_p.h +++ b/src/gui/styles/qgtkstyle_p.h @@ -56,6 +56,7 @@ #include #if !defined(QT_NO_STYLE_GTK) +#include #include #include -- cgit v0.12 From b489394e695f78d78db9bf08bc985219f8fb9bb2 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 3 Mar 2010 17:14:45 +0100 Subject: Fix compilation: include QString in order to use QString. It doesn't happen on my system, but the CI system complains, so I guess it's a namespace issue. --- src/gui/styles/qgtkstyle_p.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/styles/qgtkstyle_p.h b/src/gui/styles/qgtkstyle_p.h index e8b0be7..6ee7904 100644 --- a/src/gui/styles/qgtkstyle_p.h +++ b/src/gui/styles/qgtkstyle_p.h @@ -76,6 +76,8 @@ typedef unsigned long XID; #define QLS(x) QLatin1String(x) +QT_BEGIN_NAMESPACE + // ### Qt 4.7 - merge with QLatin1Literal class QHashableLatin1Literal { @@ -120,6 +122,8 @@ bool operator==(const QHashableLatin1Literal &l1, const QHashableLatin1Literal & inline bool operator!=(const QHashableLatin1Literal &l1, const QHashableLatin1Literal &l2) { return !operator==(l1, l2); } uint qHash(const QHashableLatin1Literal &key); +QT_END_NAMESPACE + class GConf; class GConfClient; -- cgit v0.12 From c7f2181a25243ed07f1406c7023dfdd5fb75d77d Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Wed, 3 Mar 2010 17:25:07 +0100 Subject: Make sure not to crash if createStandardContextMenu() returns 0 (e.g. on Maemo5) Reviewed-by: Harald Fernengel --- src/gui/widgets/qlineedit.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp index 0ba8b9f..595f552 100644 --- a/src/gui/widgets/qlineedit.cpp +++ b/src/gui/widgets/qlineedit.cpp @@ -2038,9 +2038,10 @@ void QLineEdit::dropEvent(QDropEvent* e) */ void QLineEdit::contextMenuEvent(QContextMenuEvent *event) { - QMenu *menu = createStandardContextMenu(); - menu->setAttribute(Qt::WA_DeleteOnClose); - menu->popup(event->globalPos()); + if (QMenu *menu = createStandardContextMenu()) { + menu->setAttribute(Qt::WA_DeleteOnClose); + menu->popup(event->globalPos()); + } } #if defined(Q_WS_WIN) -- cgit v0.12 From 65e7400babb0625f4d7616ec5d71490a2dcd3c6f Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Wed, 27 Jan 2010 15:54:25 +0100 Subject: Always redraw the complete control when an input event comes in. The problem here is that a pre-edit string won't be detected by updateDisplayText(), so the control thinks nothing has changed when a new pre-edit string is set. Reviewed-By: Simon Hausmann (cherry picked from commit 16f30906f6eea3e00351478555f153697a6e186d) --- src/gui/widgets/qlinecontrol.cpp | 6 +++--- src/gui/widgets/qlinecontrol_p.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/widgets/qlinecontrol.cpp b/src/gui/widgets/qlinecontrol.cpp index db099e8..9ec0feb 100644 --- a/src/gui/widgets/qlinecontrol.cpp +++ b/src/gui/widgets/qlinecontrol.cpp @@ -65,7 +65,7 @@ QT_BEGIN_NAMESPACE Updates the display text based of the current edit text If the text has changed will emit displayTextChanged() */ -void QLineControl::updateDisplayText() +void QLineControl::updateDisplayText(bool forceUpdate) { QString orig = m_textLayout.text(); QString str; @@ -102,7 +102,7 @@ void QLineControl::updateDisplayText() m_textLayout.endLayout(); m_ascent = qRound(l.ascent()); - if (str != orig) + if (str != orig || forceUpdate) emit displayTextChanged(str); } @@ -476,7 +476,7 @@ void QLineControl::processInputMethodEvent(QInputMethodEvent *event) } } m_textLayout.setAdditionalFormats(formats); - updateDisplayText(); + updateDisplayText(/*force*/ true); if (cursorPositionChanged) emitCursorPositionChanged(); if (isGettingInput) diff --git a/src/gui/widgets/qlinecontrol_p.h b/src/gui/widgets/qlinecontrol_p.h index d6f2705..3f1bc2c 100644 --- a/src/gui/widgets/qlinecontrol_p.h +++ b/src/gui/widgets/qlinecontrol_p.h @@ -239,7 +239,7 @@ private: void init(const QString &txt); void removeSelectedText(); void internalSetText(const QString &txt, int pos = -1, bool edited = true); - void updateDisplayText(); + void updateDisplayText(bool forceUpdate = false); void internalInsert(const QString &s); void internalDelete(bool wasBackspace = false); -- cgit v0.12 From e98d4aece51fa8691cf33325ab96634fcf9baa81 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Wed, 3 Mar 2010 17:37:09 +0100 Subject: Fix compositing when QWS background is completely transparent. Specifying the wrong composition mode triggered an optimization which caused uninitialized values to be blended in. Task-number: QTBUG-6625, QTBUG-6906 Reviewed-by: Samuel --- src/gui/embedded/qscreen_qws.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/embedded/qscreen_qws.cpp b/src/gui/embedded/qscreen_qws.cpp index 8eb8123..9bd73a4 100644 --- a/src/gui/embedded/qscreen_qws.cpp +++ b/src/gui/embedded/qscreen_qws.cpp @@ -2739,7 +2739,7 @@ void QScreen::compose(int level, const QRegion &exposed, QRegion &blend, default: break; } - spanData.setup(qwsServer->backgroundBrush(), 256, QPainter::CompositionMode_SourceOver); + spanData.setup(qwsServer->backgroundBrush(), 256, QPainter::CompositionMode_Source); spanData.dx = off.x(); spanData.dy = off.y(); } else if (!surface->isBuffered()) { -- cgit v0.12 From 97728e94e199017204d9c70f042ccb62e4eacc90 Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Wed, 3 Mar 2010 17:48:34 +0100 Subject: Remove the Qt 4.7 #if guards that were needed for 4.6 Reviewed-by: TrustMe --- src/gui/widgets/qlineedit.cpp | 3 --- src/gui/widgets/qlineedit.h | 6 ------ 2 files changed, 9 deletions(-) diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp index 595f552..7ccced6 100644 --- a/src/gui/widgets/qlineedit.cpp +++ b/src/gui/widgets/qlineedit.cpp @@ -383,8 +383,6 @@ void QLineEdit::setText(const QString& text) d->control->setText(text); } -// ### Qt 4.7: remove this #if guard -#if (QT_VERSION >= 0x407000) || defined(Q_WS_MAEMO_5) /*! \since 4.7 @@ -414,7 +412,6 @@ void QLineEdit::setPlaceholderText(const QString& placeholderText) update(); } } -#endif /*! \property QLineEdit::displayText diff --git a/src/gui/widgets/qlineedit.h b/src/gui/widgets/qlineedit.h index fa04bfc..94e0dbe 100644 --- a/src/gui/widgets/qlineedit.h +++ b/src/gui/widgets/qlineedit.h @@ -83,10 +83,7 @@ class Q_GUI_EXPORT QLineEdit : public QWidget Q_PROPERTY(bool undoAvailable READ isUndoAvailable) Q_PROPERTY(bool redoAvailable READ isRedoAvailable) Q_PROPERTY(bool acceptableInput READ hasAcceptableInput) -// ### Qt 4.7: remove this #if guard -#if (QT_VERSION >= 0x407000) || defined(Q_WS_MAEMO_5) Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText) -#endif public: explicit QLineEdit(QWidget* parent=0); @@ -102,11 +99,8 @@ public: QString displayText() const; -// ### Qt 4.7: remove this #if guard -#if (QT_VERSION >= 0x407000) || defined(Q_WS_MAEMO_5) QString placeholderText() const; void setPlaceholderText(const QString &); -#endif int maxLength() const; void setMaxLength(int); -- cgit v0.12 From c9c1ae3030bff8b8e64d1c4e02f28faba1a8eb68 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 3 Mar 2010 17:31:40 +0100 Subject: Avoid QString reallocation in QTextEngine::itemize() Calling QString::utf16() will cause reallocation (for null-termination) if the string was created via fromRawData(). Reviewed-by: Benjamin Poulain --- src/gui/text/qtextengine.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 02eae98..2291138 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1434,9 +1434,7 @@ void QTextEngine::itemize() const layoutData->hasBidi = bidiItemize(const_cast(this), analysis, control); } - const ushort *unicode = layoutData->string.utf16(); - // correctly assign script, isTab and isObject to the script analysis - const ushort *uc = unicode; + const ushort *uc = reinterpret_cast(layoutData->string.unicode()); const ushort *e = uc + length; int lastScript = QUnicodeTables::Common; while (uc < e) { -- cgit v0.12 From 9b60566af57543310a7b5bec03b5de1e24c7f746 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Wed, 3 Mar 2010 18:30:51 +0100 Subject: Fix source compatibility of qRegisterMetaType ActiveQt is having construct like qRegisterMetaType("Foo*", (Foo*)0 ); instead of qRegisterMetaType("Foo*"); Which the compiler could not disambiguate anymore since commit 03daf059647c0a0222e8774b0a083f58c8e64934 Reviewed-by: Thierry --- src/corelib/kernel/qmetatype.h | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 98ed4bd..2108b92 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -173,7 +173,7 @@ namespace QtPrivate { template int qRegisterMetaType(const char *typeName #ifndef qdoc - , typename QMetaTypeId2::CustomType * dummy = 0 + , T * dummy = 0 #endif ) { @@ -190,17 +190,6 @@ int qRegisterMetaType(const char *typeName reinterpret_cast(cptr)); } -template -int qRegisterMetaType(const char *typeName -#ifndef qdoc - , typename QMetaTypeId2::BuiltinType * /* dummy */ = 0 -#endif -) -{ - return QMetaType::registerTypedef(typeName, QMetaTypeId2::MetaType); -} - - #ifndef QT_NO_DATASTREAM template void qRegisterMetaTypeStreamOperators(const char *typeName @@ -229,7 +218,6 @@ struct QMetaTypeId template struct QMetaTypeId2 { - typedef T CustomType; enum { Defined = QMetaTypeId::Defined }; static inline int qt_metatype_id() { return QMetaTypeId::qt_metatype_id(); } }; @@ -297,7 +285,6 @@ inline int qRegisterMetaTypeStreamOperators() QT_BEGIN_NAMESPACE \ template<> struct QMetaTypeId2 \ { \ - typedef TYPE BuiltinType; \ enum { Defined = 1, MetaType = QMetaType::NAME }; \ static inline int qt_metatype_id() { return QMetaType::NAME; } \ }; \ -- cgit v0.12 From 1a7df5ef1fc81fbf2d548c40e3feeb8ef3bb5a8c Mon Sep 17 00:00:00 2001 From: mae Date: Wed, 3 Mar 2010 19:39:45 +0100 Subject: make example work again The code is now a bit on the imperative side, but that was the only working solution to remove the binding loops. --- examples/declarative/dynamic/qml/Sun.qml | 8 ++++---- examples/declarative/imageprovider/imageprovider.qml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/declarative/dynamic/qml/Sun.qml b/examples/declarative/dynamic/qml/Sun.qml index 796a370..81b6e9b 100644 --- a/examples/declarative/dynamic/qml/Sun.qml +++ b/examples/declarative/dynamic/qml/Sun.qml @@ -11,14 +11,14 @@ Image { //x and y get set when instantiated //head offscreen - y: NumberAnimation { - to: parent.height; - duration: 10000; + NumberAnimation on y { + to: window.height / 2; running: created + onRunningChanged: if (running) duration = (window.height - sun.y) * 10; else state = "OffScreen"; } states: State { - name: "OffScreen"; when: created && y > window.height / 2;//Below the ground + name: "OffScreen"; StateChangeScript { script: { sun.created = false; sun.destroy() } } } } diff --git a/examples/declarative/imageprovider/imageprovider.qml b/examples/declarative/imageprovider/imageprovider.qml index a1f2794..f899b1e 100644 --- a/examples/declarative/imageprovider/imageprovider.qml +++ b/examples/declarative/imageprovider/imageprovider.qml @@ -1,5 +1,5 @@ import Qt 4.6 -import ImageProviderCore 1.0 +import "ImageProviderCore" //![0] ListView { width: 100 -- cgit v0.12 From f3c016b8d69612e1e7e5c59ad66b639059c6e246 Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Wed, 3 Mar 2010 17:54:23 +0100 Subject: Disable auto-uppercasing and predictive text for password line edits. Reviewed-by: axis --- src/gui/widgets/qlineedit.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp index 7ccced6..94ee4b3 100644 --- a/src/gui/widgets/qlineedit.cpp +++ b/src/gui/widgets/qlineedit.cpp @@ -544,6 +544,11 @@ void QLineEdit::setEchoMode(EchoMode mode) } else { imHints &= ~Qt::ImhHiddenText; } + if (mode != Normal) { + imHints |= (Qt::ImhNoAutoUppercase | Qt::ImhNoPredictiveText); + } else { + imHints &= ~(Qt::ImhNoAutoUppercase | Qt::ImhNoPredictiveText); + } setInputMethodHints(imHints); d->control->setEchoMode(mode); update(); -- cgit v0.12 From a4d7572059b5b56d49d7e0c3f3466686e1dc6e16 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Wed, 3 Mar 2010 20:47:13 +0100 Subject: QVariant: Fix crash when comparing two variant with the same undefined type. If the type is the same, but not registered, the returned string could be null (or empty if a empty string was registered) In that case, QVariant compare() function would access invalid memory. Protect against that case. qstrcmp returns 0 if 0 is given as a parametter. Task-number: QTBUG-8700 Reviewed-by: Markus Goetz --- src/corelib/kernel/qvariant.cpp | 3 ++- tests/auto/qvariant/tst_qvariant.cpp | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index e1b5825..95b2352 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -466,7 +466,8 @@ static bool compare(const QVariant::Private *a, const QVariant::Private *b) * QMetaType::VoidStar, QMetaType::QObjectStar and so forth, is that it wouldn't include * user defined pointer types. */ const char *const typeName = QMetaType::typeName(a->type); - if (typeName[qstrlen(typeName) - 1] == '*') + uint typeNameLen = qstrlen(typeName); + if (typeNameLen > 0 && typeName[typeNameLen - 1] == '*') return *static_cast(a_ptr) == *static_cast(b_ptr); return a_ptr == b_ptr; diff --git a/tests/auto/qvariant/tst_qvariant.cpp b/tests/auto/qvariant/tst_qvariant.cpp index a316dda..b7e2c81 100644 --- a/tests/auto/qvariant/tst_qvariant.cpp +++ b/tests/auto/qvariant/tst_qvariant.cpp @@ -1968,6 +1968,10 @@ void tst_QVariant::operator_eq_eq_data() QTest::newRow("HashSecondLarger") << QVariant(hash1) << QVariant(hash2) << false; } + + QTest::newRow( "UserType" ) << QVariant(QVariant::UserType) << QVariant(QVariant::UserType) << false; + QVariant mUserType(QVariant::UserType); + QTest::newRow( "Shared UserType" ) << mUserType << mUserType << true; } void tst_QVariant::operator_eq_eq() -- cgit v0.12 From 24c1173aac92e9a4e14da072b5aa62c8289d810d Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 4 Mar 2010 08:54:40 +1000 Subject: Fix painting Rectangle with radius < side/2. Falls back to using standard QPainter. Also avoid painting odd width borders between pixels, i.e. pixel align painting. Task-number: QTBUG-6675, QTBUG-8317, QTBUG-6786 --- .../graphicsitems/qdeclarativerectangle.cpp | 25 ++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp index d534f21..05fe0f7 100644 --- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp +++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp @@ -393,9 +393,10 @@ void QDeclarativeRectangle::paint(QPainter *p, const QStyleOptionGraphicsItem *, void QDeclarativeRectangle::drawRect(QPainter &p) { Q_D(QDeclarativeRectangle); - if (d->gradient && d->gradient->gradient()) { + if ((d->gradient && d->gradient->gradient()) + || d->radius > width()/2 || d->radius > height()/2) { // XXX This path is still slower than the image path - // Image path won't work for gradients though + // Image path won't work for gradients or invalid radius though bool oldAA = p.testRenderHint(QPainter::Antialiasing); if (d->smooth) p.setRenderHint(QPainter::Antialiasing); @@ -405,11 +406,23 @@ void QDeclarativeRectangle::drawRect(QPainter &p) } else { p.setPen(Qt::NoPen); } - p.setBrush(*d->gradient->gradient()); - if (d->radius > 0.) - p.drawRoundedRect(0, 0, width(), height(), d->radius, d->radius); + if (d->gradient && d->gradient->gradient()) + p.setBrush(*d->gradient->gradient()); else - p.drawRect(0, 0, width(), height()); + p.setBrush(d->color); + const int pw = d->pen && d->pen->isValid() ? d->pen->width() : 0; + QRectF rect; + if (pw%2) + rect = QRectF(0.5, 0.5, width()-1, height()-1); + else + rect = QRectF(0, 0, width(), height()); + qreal radius = d->radius; + if (radius > width()/2 || radius > height()/2) + radius = qMin(width()/2, height()/2); + if (radius > 0.) + p.drawRoundedRect(rect, radius, radius); + else + p.drawRect(rect); if (d->smooth) p.setRenderHint(QPainter::Antialiasing, oldAA); } else { -- cgit v0.12 From 89e29d1f7a61f5cfa15cbce9b225a9d9ee9b4b7f Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Thu, 4 Mar 2010 08:59:06 +1000 Subject: Fix url in source() test. --- .../qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp index 841a0ee..de11fe2 100644 --- a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp +++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp @@ -103,7 +103,7 @@ void tst_QDeclarativeWorkerScript::source_data() QTest::addColumn("valid"); QTest::newRow("valid") << QUrl::fromLocalFile(SRCDIR "/data/worker.qml") << true; - QTest::newRow("invalid") << QUrl("file:///asdjfk.js") << false; + QTest::newRow("invalid") << QUrl::fromLocalFile("asdjfk.js") << false; } void tst_QDeclarativeWorkerScript::messaging() -- cgit v0.12 From 9e5cc0da3cdcf3ddddc35dc78e670994237a180f Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Thu, 4 Mar 2010 08:22:27 +1000 Subject: Move tests into separate .pro files, based on Qt module. Having the tests in separate projects allows for some optimization strategies when running the tests (e.g. start running corelib tests while the rest of Qt is still compiling), and allows developers to run only a subset of tests when appropriate. --- tests/auto/auto.pro | 604 +-------------------- tests/auto/corelib.pro | 102 ++++ tests/auto/dbus.pro | 20 + tests/auto/gui.pro | 223 ++++++++ tests/auto/host.pro | 18 + .../auto/maketestselftest/tst_maketestselftest.cpp | 33 +- tests/auto/multimedia.pro | 11 + tests/auto/network.pro | 40 ++ tests/auto/opengl.pro | 4 + tests/auto/other.pro | 58 ++ tests/auto/phonon.pro | 5 + tests/auto/qstringmatcher/qstringmatcher.pro | 2 +- tests/auto/qt3support.pro | 54 ++ tests/auto/script.pro | 16 + tests/auto/sql.pro | 14 + tests/auto/svg.pro | 6 + tests/auto/webkit.pro | 8 + tests/auto/xml.pro | 8 + tests/auto/xmlpatterns.pro | 47 ++ 19 files changed, 671 insertions(+), 602 deletions(-) create mode 100644 tests/auto/corelib.pro create mode 100644 tests/auto/dbus.pro create mode 100644 tests/auto/gui.pro create mode 100644 tests/auto/host.pro create mode 100644 tests/auto/multimedia.pro create mode 100644 tests/auto/network.pro create mode 100644 tests/auto/opengl.pro create mode 100644 tests/auto/other.pro create mode 100644 tests/auto/phonon.pro create mode 100644 tests/auto/qt3support.pro create mode 100644 tests/auto/script.pro create mode 100644 tests/auto/sql.pro create mode 100644 tests/auto/svg.pro create mode 100644 tests/auto/webkit.pro create mode 100644 tests/auto/xml.pro create mode 100644 tests/auto/xmlpatterns.pro diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index f3885a7..0d48522 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -1,592 +1,22 @@ -QT = core TEMPLATE = subdirs -# These tests use host tools and therefore can't work for cross-compiled Qt. -!cross_compile:SUBDIRS += \ - headers \ - bic \ - compiler \ - compilerwarnings \ - linguist \ - maketestselftest \ - moc \ - uic \ - guiapplauncher \ - #atwrapper \ # These tests need significant updating, - #uiloader \ # they have hardcoded machine names etc. - -Q3SUBDIRS += \ - q3accel \ - q3action \ - q3actiongroup \ - q3buttongroup \ - q3canvas \ - q3checklistitem \ - q3cstring \ - q3databrowser \ - q3dateedit \ - q3datetimeedit \ - q3deepcopy \ - q3dict \ - q3dns \ - q3dockwindow \ - q3filedialog \ - q3groupbox \ - q3hbox \ - q3header \ - q3iconview \ - q3listbox \ - q3listview \ - q3listviewitemiterator \ - q3mainwindow \ - q3popupmenu \ - q3process \ - q3progressbar \ - q3progressdialog \ - q3ptrlist \ - q3richtext \ - q3scrollview \ - q3semaphore \ - q3serversocket \ - q3socket \ - q3socketdevice \ - q3sqlcursor \ - q3sqlselectcursor \ - q3stylesheet \ - q3tabdialog \ - q3table \ - q3textbrowser \ - q3textedit \ - q3textstream \ - q3timeedit \ - q3toolbar \ - q3urloperator \ - q3valuelist \ - q3valuevector \ - q3combobox \ - q3frame \ - q3uridrag \ - q3widgetstack - -!cross_compile:Q3SUBDIRS += \ - uic3 - SUBDIRS += \ -# exceptionsafety_objects \ shouldn't enable it - languagechange \ - collections \ - exceptionsafety \ - mediaobject \ -# mediaobject_wince_ds9 \ This is Windows CE only (we test the second phonon backend ds9 here) - modeltest \ - networkselftest \ - qabstractbutton \ - qabstractitemmodel \ - qabstractitemview \ - qabstractprintdialog \ - qabstractscrollarea \ - qabstractslider \ - qabstractsocket \ - qabstractspinbox \ - qabstracttextdocumentlayout \ - qabstractvideobuffer \ - qabstractvideosurface \ - qaccessibility \ - qaction \ - qactiongroup \ - qalgorithms \ - qanimationgroup \ - qapplication \ - qatomicint \ - qatomicpointer \ - qbitarray \ - qboxlayout \ - qbrush \ - qbuffer \ - qbuttongroup \ - qbytearray \ - qcache \ - qchar \ - qcheckbox \ - qclipboard \ - qcolor \ - qcolordialog \ - qcombobox \ - qcompleter \ - qcomplextext \ - qcoreapplication \ - qcryptographichash \ - qcssparser \ - qdatastream \ - qdatawidgetmapper \ - qdate \ - qdatetime \ - qdatetimeedit \ - qdebug \ - qdesktopservices \ - qdesktopwidget \ - qdial \ - qdialog \ - qdialogbuttonbox \ - qdir \ - qdirmodel \ - qdockwidget \ - qdom \ - qdoublespinbox \ - qdoublevalidator \ - qdrag \ - qerrormessage \ - qevent \ - qeventloop \ - qexplicitlyshareddatapointer \ - qfile \ - qfiledialog \ - qfiledialog2 \ - qfileinfo \ - qfilesystemwatcher \ - qfilesystemmodel \ - qflags \ - qfocusevent \ - qfocusframe \ - qfont \ - qfontcombobox \ - qfontdatabase \ - qfontdialog \ - qfontmetrics \ - qftp \ - qgetputenv \ - qglobal \ - qgraphicseffect \ - qgraphicseffectsource \ - qgraphicsgridlayout \ - qgraphicsitem \ - qgraphicsitemanimation \ - qgraphicsanchorlayout \ - qgraphicsanchorlayout1 \ - qgraphicslayout \ - qgraphicslayoutitem \ - qgraphicslinearlayout \ - qgraphicsobject \ - qgraphicspixmapitem \ - qgraphicspolygonitem \ - qgraphicsproxywidget \ - qgraphicsscene \ - qgraphicssceneindex \ - qgraphicstransform \ - qgraphicsview \ - qgraphicswidget \ - qgridlayout \ - qgroupbox \ - qguivariant \ - qhash \ - qheaderview \ - qhelpcontentmodel \ - qhelpenginecore \ - qhelpgenerator \ - qhelpindexmodel \ - qhelpprojectdata \ - qhostaddress \ - qhostinfo \ - qhttp \ - qhttpnetworkreply \ - qhttpnetworkconnection \ - qicon \ - qicoimageformat \ - qimage \ - qimageiohandler \ - qimagereader \ - qimagewriter \ - qinputdialog \ - qintvalidator \ - qiodevice \ - qitemdelegate \ - qitemeditorfactory \ - qitemmodel \ - qitemselectionmodel \ - qitemview \ - qkeysequence \ - qlabel \ - qlayout \ - qlcdnumber \ - qlibrary \ - qline \ - qlineedit \ - qlist \ - qlistview \ - qlistwidget \ - qlocale \ - qmainwindow \ - qmake \ - qmap \ - qmath \ - qmatrixnxn \ - qmdiarea \ - qmdisubwindow \ - qmenu \ - qmenubar \ - qmessagebox \ - qmetaobject \ - qmetatype \ - qmouseevent \ - qmouseevent_modal \ - qmovie \ - qmutex \ - qmutexlocker \ - qnativesocketengine \ - qnetworkcookie \ - qnetworkcookiejar \ - qnetworkinterface \ - qnetworkproxy \ - qnetworkrequest \ - qnetworkreply \ - qnetworkaccessmanager_and_qprogressdialog \ - qnumeric \ - qobject \ - qobjectrace \ - qcontiguouscache \ - qpaintengine \ - qpainter \ - qpainterpath \ - qpalette \ - qparallelanimationgroup \ - qpauseanimation \ - qpathclipper \ - qpen \ - qpicture \ - qpixmap \ - qpixmapcache \ - qpixmapfilter \ - qplaintextedit \ - qpoint \ - qpointer \ - qpolygon \ - qprinter \ - qprinterinfo \ - qprocess \ - qprocessenvironment \ - qprogressbar \ - qprogressdialog \ - qpropertyanimation \ - qpushbutton \ - qquaternion \ - qqueue \ - qradiobutton \ - qreadlocker \ - qreadwritelock \ - qrect \ - qregexp \ - qregexpvalidator \ - qregion \ - qresourceengine \ - qringbuffer \ - qscopedpointer \ - qscrollarea \ - qsemaphore \ - qsharedpointer \ - qsharedpointer_and_qwidget \ - qsequentialanimationgroup \ - qset \ - qsettings \ - qshortcut \ - qsignalmapper \ - qsignalspy \ - qsize \ - qsizef \ - qslider \ - qsocketnotifier \ - qsocks5socketengine \ - qsortfilterproxymodel \ - qsound \ - qaudiodeviceinfo \ - qaudioformat \ - qaudiooutput \ - qaudioinput \ - qspinbox \ - qsplitter \ - qsql \ - qsqldatabase \ - qsqlerror \ - qsqlfield \ - qsqlquery \ - qsqlquerymodel \ - qsqlrecord \ - qsqlrelationaltablemodel \ - qsqltablemodel \ - qsqlthread \ - qsslcertificate \ - qsslcipher \ - qsslerror \ - qsslkey \ - qsslsocket \ - qstackedlayout \ - qstackedwidget \ - qstandarditem \ - qstandarditemmodel \ - qstate \ - qstatemachine \ - qstatusbar \ - qstl \ - qstring \ - qstringbuilder1 \ - qstringbuilder2 \ - qstringbuilder3 \ - qstringbuilder4 \ - qstringmatcher \ - qstringlist \ - qstringlistmodel \ - qstyle \ - qstyleoption \ - qstylesheetstyle \ - qsvgdevice \ - qsvggenerator \ - qsvgrenderer \ - qsyntaxhighlighter \ - qsystemtrayicon \ - qtabbar \ - qtableview \ - qtablewidget \ - qtabwidget \ - qtcpserver \ - qtcpsocket \ - qtemporaryfile \ - qtessellator \ - qtextblock \ - qtextboundaryfinder \ - qtextbrowser \ - qtextcodec \ - qtextcursor \ - qtextdocument \ - qtextdocumentfragment \ - qtextdocumentlayout \ - qtextedit \ - qtextformat \ - qtextlayout \ - qtextlist \ - qtextobject \ - qtextscriptengine \ - qtextstream \ - qtexttable \ - qthread \ - qthreadonce \ - qthreadstorage \ - qtime \ - qtimeline \ - qtimer \ - qtmd5 \ - qtoolbar \ - qtoolbox \ - qtoolbutton \ - qtooltip \ - qtranslator \ - qtransform \ - qtransformedscreen \ - qtreeview \ - qtreewidget \ - qtreewidgetitemiterator \ - qtwidgets \ - qudpsocket \ - qundogroup \ - qundostack \ - qurl \ - quuid \ - qvariant \ - qvarlengtharray \ - qvector \ - qvideoframe \ - qvideosurfaceformat \ - qvectornd \ - qwaitcondition \ - qwidget \ - qwidgetaction \ - qwindowsurface \ - qwineventnotifier \ - qwizard \ - qwmatrix \ - qworkspace \ - qwritelocker \ - qwsembedwidget \ - qwsinputmethod \ - qwswindowsystem \ - qx11info \ - qxml \ - qxmlinputsource \ - qxmlsimplereader \ - qxmlstream \ - selftests \ - symbols \ - qrand \ - utf8 \ - gestures \ - qabstractnetworkcache \ - qabstractproxymodel \ - qbytearraymatcher \ - qcalendarwidget \ - qcolumnview \ - qcommandlinkbutton \ - qdbuscontext \ - qdbusserver \ - qdbusservicewatcher \ - qdiriterator \ - qeasingcurve \ - qfileiconprovider \ - qformlayout \ - q_func_info \ - qfuture \ - qfuturewatcher \ - qguard \ - qhttpsocketengine \ - qinputcontext \ - qlocalsocket \ - qmacstyle \ - qmargins \ - qnetworkaddressentry \ - qnetworkcachemetadata \ - qnetworkdiskcache \ - qobjectperformance \ - qpainterpathstroker \ - qplugin \ - qpluginloader \ - qscrollbar \ - qsidebar \ - qsizegrip \ - qsqldriver \ - qtconcurrentfilter \ - qtconcurrentiteratekernel \ - qtconcurrentmap \ - qtconcurrentrun \ - qtconcurrentthreadengine \ - qthreadpool \ - qtipc \ - qtokenautomaton \ - qtouchevent \ - qwidget_window \ - rcc \ - windowsmobile - -contains(QT_CONFIG,opengl):SUBDIRS += qgl - -contains(QT_CONFIG,qt3support):!wince*:SUBDIRS += $$Q3SUBDIRS - -contains(QT_CONFIG, OdfWriter):SUBDIRS += qzip qtextodfwriter -mac: { - SUBDIRS += macgui \ - macplist \ - qaccessibility_mac -} - -embedded:!wince* { - SUBDIRS += qcopchannel \ - qdirectpainter \ - qmultiscreen -} -!win32: { - SUBDIRS += qtextpiecetable -} - -symbian { - SUBDIRS += qsoftkeymanager \ - qs60mainapplication -} - -# Enable the tests specific to QtXmlPatterns. If you add a test, remember to -# update runQtXmlPatternsTests.sh too. Remember that this file, auto.pro, is -# not respected by some test system, they just have a script which loop over -# the folders. -contains(QT_CONFIG, xmlpatterns) { -SUBDIRS += checkxmlfiles \ - patternistexamplefiletree \ - patternistexamples \ - patternistheaders \ - qabstractmessagehandler \ - qabstracturiresolver \ - qabstractxmlforwarditerator \ - qabstractxmlnodemodel \ - qabstractxmlreceiver \ - qapplicationargumentparser \ - qautoptr \ - qsimplexmlnodemodel \ - qsourcelocation \ - qxmlformatter \ - qxmlitem \ - qxmlname \ - qxmlnamepool \ - qxmlnodemodelindex \ - qxmlquery \ - qxmlresultitems \ - qxmlschema \ - qxmlschemavalidator \ - qxmlserializer \ - xmlpatterns \ - xmlpatternsdiagnosticsts \ - xmlpatternsschema \ - xmlpatternsschemats \ - xmlpatternssdk \ - xmlpatternsvalidator \ - xmlpatternsview \ - xmlpatternsxqts \ - xmlpatternsxslts - -xmlpatternsdiagnosticsts.depends = xmlpatternssdk -xmlpatternsview.depends = xmlpatternssdk -xmlpatternsxslts.depends = xmlpatternssdk -xmlpatternsschemats.depends = xmlpatternssdk -} - -unix:!embedded:contains(QT_CONFIG, dbus):SUBDIRS += \ - qdbusabstractadaptor \ - qdbusabstractinterface \ - qdbusconnection \ - qdbusinterface \ - qdbuslocalcalls \ - qdbusmarshall \ - qdbusmetaobject \ - qdbusmetatype \ - qdbuspendingcall \ - qdbuspendingreply \ - qdbusperformance \ - qdbusreply \ - qdbusthreading \ - qdbusxmlparser - -contains(QT_CONFIG, script): SUBDIRS += \ - qscriptable \ - qscriptclass \ - qscriptcontext \ - qscriptcontextinfo \ - qscriptengine \ - qscriptengineagent \ - qscriptextqobject \ - qscriptjstestsuite \ - qscriptv8testsuite \ - qscriptstring \ - qscriptvalue \ - qscriptvalueiterator \ - qscriptenginedebugger - -contains(QT_CONFIG, webkit): SUBDIRS += \ - qwebframe \ - qwebpage \ - qwebhistoryinterface \ - qwebelement \ - qwebhistory - -contains(QT_CONFIG, declarative): SUBDIRS += declarative + corelib.pro \ + gui.pro \ + network.pro \ + sql.pro \ + xml.pro \ + other.pro + +!cross_compile: SUBDIRS += host.pro +contains(QT_CONFIG, qt3support):!wince*: SUBDIRS += qt3support.pro +contains(QT_CONFIG, opengl): SUBDIRS += opengl.pro +contains(QT_CONFIG, xmlpatterns): SUBDIRS += xmlpatterns.pro +unix:!embedded:contains(QT_CONFIG, dbus): SUBDIRS += dbus.pro +contains(QT_CONFIG, script): SUBDIRS += script.pro +contains(QT_CONFIG, webkit): SUBDIRS += webkit.pro +contains(QT_CONFIG, multimedia): SUBDIRS += multimedia.pro +contains(QT_CONFIG, phonon): SUBDIRS += phonon.pro +contains(QT_CONFIG, svg): SUBDIRS += svg.pro -# Following tests depends on private API -!contains(QT_CONFIG, private_tests): SUBDIRS -= \ - qcssparser \ - qgraphicssceneindex \ - qhttpnetworkconnection \ - qhttpnetworkreply \ - qnativesocketengine \ - qnetworkreply \ - qpathclipper \ - qsocketnotifier \ - qsocks5socketengine \ - qstylesheetstyle \ - qtextpiecetable \ - xmlpatternsdiagnosticsts \ - xmlpatternsview \ - xmlpatternsxqts \ - xmlpatternsxslts diff --git a/tests/auto/corelib.pro b/tests/auto/corelib.pro new file mode 100644 index 0000000..c08e372 --- /dev/null +++ b/tests/auto/corelib.pro @@ -0,0 +1,102 @@ +# The tests in this .pro file _MUST_ use QtCore only (i.e. QT=core). +# The test system is allowed to run these tests before the test of Qt has +# been compiled. + +TEMPLATE=subdirs +SUBDIRS=\ + collections \ + exceptionsafety \ + q_func_info \ + qanimationgroup \ + qatomicint \ + qatomicpointer \ + qbitarray \ + qbuffer \ + qbytearray \ + qbytearraymatcher \ + qcache \ + qchar \ + qcontiguouscache \ + qcoreapplication \ + qcryptographichash \ + qdate \ + qdatetime \ + qdebug \ + qdiriterator \ + qeasingcurve \ + qevent \ + qexplicitlyshareddatapointer \ + qfileinfo \ + qfilesystemwatcher \ + qflags \ + qfuture \ + qfuturewatcher \ + qgetputenv \ + qglobal \ + qhash \ + qlibrary \ + qline \ + qmap \ + qmargins \ + qmath \ + qmetatype \ + qmutex \ + qmutexlocker \ + qnumeric \ + qobject \ + qobjectrace \ + qplugin \ + qpluginloader \ + qpoint \ + qprocessenvironment \ + qqueue \ + qrand \ + qreadlocker \ + qreadwritelock \ + qrect \ + qregexp \ + qresourceengine \ + qringbuffer \ + qscopedpointer \ + qsemaphore \ + qsequentialanimationgroup \ + qset \ + qsharedpointer \ + qsignalspy \ + qsize \ + qsizef \ + qstate \ + qstl \ + qstring \ + qstringbuilder1 \ + qstringbuilder2 \ + qstringbuilder3 \ + qstringbuilder4 \ + qstringlist \ + qstringmatcher \ + qtconcurrentfilter \ + qtconcurrentiteratekernel \ + qtconcurrentmap \ + qtconcurrentrun \ + qtconcurrentthreadengine \ + qtemporaryfile \ + qtextboundaryfinder \ + qthread \ + qthreadonce \ + qthreadpool \ + qthreadstorage \ + qtime \ + qtimeline \ + qtimer \ + qtmd5 \ + qtokenautomaton \ + qurl \ + quuid \ + qvarlengtharray \ + qvector \ + qwaitcondition \ + qwineventnotifier \ + qwritelocker \ + selftests \ + utf8 \ + diff --git a/tests/auto/dbus.pro b/tests/auto/dbus.pro new file mode 100644 index 0000000..1c808df --- /dev/null +++ b/tests/auto/dbus.pro @@ -0,0 +1,20 @@ +TEMPLATE=subdirs +SUBDIRS=\ + qdbusabstractadaptor \ + qdbusabstractinterface \ + qdbusconnection \ + qdbuscontext \ + qdbusinterface \ + qdbuslocalcalls \ + qdbusmarshall \ + qdbusmetaobject \ + qdbusmetatype \ + qdbuspendingcall \ + qdbuspendingreply \ + qdbusperformance \ + qdbusreply \ + qdbusserver \ + qdbusservicewatcher \ + qdbusthreading \ + qdbusxmlparser \ + diff --git a/tests/auto/gui.pro b/tests/auto/gui.pro new file mode 100644 index 0000000..f79420f --- /dev/null +++ b/tests/auto/gui.pro @@ -0,0 +1,223 @@ +# The tests in this .pro file _MUST_ use QtCore, QtNetwork and QtGui only +# (i.e. QT=core gui network). +# The test system is allowed to run these tests before the rest of Qt has +# been compiled. +# +TEMPLATE=subdirs +SUBDIRS=\ + gestures \ + languagechange \ + modeltest \ + qabstractbutton \ + qabstractitemmodel \ + qabstractitemview \ + qabstractprintdialog \ + qabstractproxymodel \ + qabstractscrollarea \ + qabstractslider \ + qabstractspinbox \ + qabstracttextdocumentlayout \ + qaction \ + qactiongroup \ + qapplication \ + qboxlayout \ + qbrush \ + qbuttongroup \ + qcalendarwidget \ + qcheckbox \ + qclipboard \ + qcolor \ + qcolordialog \ + qcolumnview \ + qcommandlinkbutton \ + qcompleter \ + qcomplextext \ + qdatawidgetmapper \ + qdatetimeedit \ + qdesktopservices \ + qdesktopwidget \ + qdial \ + qdialog \ + qdialogbuttonbox \ + qdirmodel \ + qdockwidget \ + qdoublespinbox \ + qdoublevalidator \ + qdrag \ + qerrormessage \ + qfile \ + qfiledialog \ + qfiledialog2 \ + qfileiconprovider \ + qfilesystemmodel \ + qfocusframe \ + qfont \ + qfontcombobox \ + qfontdatabase \ + qfontdialog \ + qfontmetrics \ + qformlayout \ + qgraphicsanchorlayout \ + qgraphicsanchorlayout1 \ + qgraphicseffect \ + qgraphicseffectsource \ + qgraphicsgridlayout \ + qgraphicsitem \ + qgraphicsitemanimation \ + qgraphicslayout \ + qgraphicslayoutitem \ + qgraphicslinearlayout \ + qgraphicsobject \ + qgraphicspixmapitem \ + qgraphicspolygonitem \ + qgraphicsproxywidget \ + qgraphicsscene \ + qgraphicssceneindex \ + qgraphicstransform \ + qgraphicsview \ + qgraphicswidget \ + qgridlayout \ + qgroupbox \ + qguard \ + qguivariant \ + qheaderview \ + qhelpcontentmodel \ + qhelpenginecore \ + qhelpgenerator \ + qhelpindexmodel \ + qhelpprojectdata \ + qicoimageformat \ + qicon \ + qimageiohandler \ + qimagereader \ + qimagewriter \ + qinputcontext \ + qinputdialog \ + qintvalidator \ + qitemdelegate \ + qitemeditorfactory \ + qitemselectionmodel \ + qitemview \ + qkeysequence \ + qlabel \ + qlcdnumber \ + qlineedit \ + qlist \ + qlistview \ + qlistwidget \ + qlocale \ + qlocalsocket \ + qmacstyle \ + qmainwindow \ + qmatrixnxn \ + qmdisubwindow \ + qmessagebox \ + qmetaobject \ + qmouseevent_modal \ + qmovie \ + qnetworkaccessmanager_and_qprogressdialog \ + qnetworkcachemetadata \ + qnetworkdiskcache \ + qnetworkreply \ + qpaintengine \ + qpainterpath \ + qpainterpathstroker \ + qpalette \ + qparallelanimationgroup \ + qpathclipper \ + qpauseanimation \ + qpen \ + qpicture \ + qpixmapcache \ + qpixmapfilter \ + qplaintextedit \ + qpointer \ + qpolygon \ + qprinterinfo \ + qprocess \ + qprogressbar \ + qprogressdialog \ + qpropertyanimation \ + qpushbutton \ + qquaternion \ + qradiobutton \ + qregexpvalidator \ + qregion \ + qscrollarea \ + qscrollbar \ + qsharedpointer_and_qwidget \ + qshortcut \ + qsidebar \ + qsignalmapper \ + qsizegrip \ + qslider \ + qsortfilterproxymodel \ + qsound \ + qspinbox \ + qstackedlayout \ + qstackedwidget \ + qstandarditem \ + qstandarditemmodel \ + qstatemachine \ + qstatusbar \ + qstringlistmodel \ + qstyle \ + qstyleoption \ + qstylesheetstyle \ + qsyntaxhighlighter \ + qsystemtrayicon \ + qtabbar \ + qtableview \ + qtablewidget \ + qtcpserver \ + qtcpsocket \ + qtessellator \ + qtextblock \ + qtextcodec \ + qtextcursor \ + qtextdocumentfragment \ + qtextdocumentlayout \ + qtextformat \ + qtextlayout \ + qtextlist \ + qtextobject \ + qtextpiecetable \ + qtextscriptengine \ + qtextstream \ + qtexttable \ + qtipc \ + qtoolbar \ + qtoolbox \ + qtooltip \ + qtouchevent \ + qtransform \ + qtransformedscreen \ + qtranslator \ + qtreeview \ + qtreewidget \ + qtreewidgetitemiterator \ + qtwidgets \ + qudpsocket \ + qundogroup \ + qundostack \ + qvectornd \ + qwidget_window \ + qwidgetaction \ + qwindowsurface \ + qwizard \ + qwmatrix \ + qwsembedwidget \ + qwsinputmethod \ + qwswindowsystem \ + qx11info \ + windowsmobile \ + +win32:SUBDIRS -= qtextpiecetable + +!contains(QT_CONFIG, private_tests): SUBDIRS -= \ + qgraphicssceneindex \ + qnetworkreply \ + qpathclipper \ + qstylesheetstyle \ + qtextpiecetable \ + diff --git a/tests/auto/host.pro b/tests/auto/host.pro new file mode 100644 index 0000000..6a7cea7 --- /dev/null +++ b/tests/auto/host.pro @@ -0,0 +1,18 @@ +TEMPLATE=subdirs +SUBDIRS=\ + headers \ + bic \ + compiler \ + compilerwarnings \ + linguist \ + maketestselftest \ + moc \ + uic \ + uic3 \ + guiapplauncher \ + qmake \ + rcc \ + symbols \ + #atwrapper \ # These tests need significant updating, + #uiloader \ # they have hardcoded machine names etc. + diff --git a/tests/auto/maketestselftest/tst_maketestselftest.cpp b/tests/auto/maketestselftest/tst_maketestselftest.cpp index 1dde44b..8264e27 100644 --- a/tests/auto/maketestselftest/tst_maketestselftest.cpp +++ b/tests/auto/maketestselftest/tst_maketestselftest.cpp @@ -50,23 +50,27 @@ class tst_MakeTestSelfTest: public QObject Q_OBJECT private slots: - void auto_dot_pro(); - void auto_dot_pro_data(); + void tests_pro_files(); + void tests_pro_files_data(); }; -/* Verify that all tests are listed somewhere in auto.pro */ -void tst_MakeTestSelfTest::auto_dot_pro() +/* Verify that all tests are listed somewhere in one of the autotest .pro files */ +void tst_MakeTestSelfTest::tests_pro_files() { static QStringList lines; if (lines.isEmpty()) { - QString filename = QString::fromLatin1(SRCDIR "/../auto.pro"); - QFile file(filename); - if (!file.open(QIODevice::ReadOnly)) { - QFAIL(qPrintable(QString("open %1: %2").arg(filename).arg(file.errorString()))); - } - while (!file.atEnd()) { - lines << file.readLine().trimmed(); + QDir dir(SRCDIR "/.."); + QStringList proFiles = dir.entryList(QStringList() << "*.pro"); + foreach (QString const& proFile, proFiles) { + QString filename = QString("%1/../%2").arg(SRCDIR).arg(proFile); + QFile file(filename); + if (!file.open(QIODevice::ReadOnly)) { + QFAIL(qPrintable(QString("open %1: %2").arg(filename).arg(file.errorString()))); + } + while (!file.atEnd()) { + lines << file.readLine().trimmed(); + } } } @@ -79,13 +83,14 @@ void tst_MakeTestSelfTest::auto_dot_pro() } QFAIL(qPrintable(QString( - "Subdir `%1' is missing from tests/auto/auto.pro\n" + "Subdir `%1' is missing from tests/auto/*.pro\n" "This means the test won't be compiled or run on any platform.\n" - "If this is intentional, please put the test name in a comment in auto.pro.").arg(subdir)) + "If this is intentional, please put the test name in a comment in one of the .pro files.").arg(subdir)) ); + } -void tst_MakeTestSelfTest::auto_dot_pro_data() +void tst_MakeTestSelfTest::tests_pro_files_data() { QTest::addColumn("subdir"); QDir dir(SRCDIR "/.."); diff --git a/tests/auto/multimedia.pro b/tests/auto/multimedia.pro new file mode 100644 index 0000000..20d1f7f --- /dev/null +++ b/tests/auto/multimedia.pro @@ -0,0 +1,11 @@ +TEMPLATE=subdirs +SUBDIRS=\ + qabstractvideobuffer \ + qabstractvideosurface \ + qaudiodeviceinfo \ + qaudioformat \ + qaudioinput \ + qaudiooutput \ + qvideoframe \ + qvideosurfaceformat \ + diff --git a/tests/auto/network.pro b/tests/auto/network.pro new file mode 100644 index 0000000..bda03d3 --- /dev/null +++ b/tests/auto/network.pro @@ -0,0 +1,40 @@ +# The tests in this .pro file _MUST_ use QtCore and QtNetwork only +# (i.e. QT=core network). +# The test system is allowed to run these tests before the rest of Qt has +# been compiled. +TEMPLATE=subdirs +SUBDIRS=\ + networkselftest \ + qabstractnetworkcache \ + qabstractsocket \ + qeventloop \ + qftp \ + qhostaddress \ + qhostinfo \ + qhttp \ + qhttpnetworkconnection \ + qhttpnetworkreply \ + qhttpsocketengine \ + qnativesocketengine \ + qnetworkaddressentry \ + qnetworkcookie \ + qnetworkcookiejar \ + qnetworkinterface \ + qnetworkproxy \ + qnetworkrequest \ + qobjectperformance \ + qsocketnotifier \ + qsocks5socketengine \ + qsslcertificate \ + qsslcipher \ + qsslerror \ + qsslkey \ + qsslsocket \ + +contains(QT_CONFIG, private_tests): SUBDIRS -= \ + qhttpnetworkconnection \ + qhttpnetworkreply \ + qnativesocketengine \ + qsocketnotifier \ + qsocks5socketengine \ + diff --git a/tests/auto/opengl.pro b/tests/auto/opengl.pro new file mode 100644 index 0000000..0d23219 --- /dev/null +++ b/tests/auto/opengl.pro @@ -0,0 +1,4 @@ +TEMPLATE=subdirs +SUBDIRS=\ + qgl \ + diff --git a/tests/auto/other.pro b/tests/auto/other.pro new file mode 100644 index 0000000..e220d1a --- /dev/null +++ b/tests/auto/other.pro @@ -0,0 +1,58 @@ +# These tests don't nicely fit into one of the other .pro files. +# They are testing too many Qt modules at the same time. + +TEMPLATE=subdirs +SUBDIRS=\ +# exceptionsafety_objects \ shouldn't enable it + qaccessibility \ + qalgorithms \ + qcombobox \ + qcssparser \ + qdatastream \ + qdir \ + qfocusevent \ + qimage \ + qiodevice \ + qitemmodel \ + qlayout \ + qmdiarea \ + qmenu \ + qmenubar \ + qmouseevent \ + qpainter \ + qpixmap \ + qprinter \ + qsettings \ + qsplitter \ + qtabwidget \ + qtextbrowser \ + qtextdocument \ + qtextedit \ + qtoolbutton \ + qvariant \ + qwidget \ + qworkspace \ + windowsmobile + +contains(QT_CONFIG, OdfWriter):SUBDIRS += qzip qtextodfwriter +mac: { + SUBDIRS += macgui \ + macplist \ + qaccessibility_mac +} + +embedded:!wince* { + SUBDIRS += qcopchannel \ + qdirectpainter \ + qmultiscreen +} + +symbian { + SUBDIRS += qsoftkeymanager \ + qs60mainapplication +} + +# Following tests depends on private API +!contains(QT_CONFIG, private_tests): SUBDIRS -= \ + qcssparser \ + diff --git a/tests/auto/phonon.pro b/tests/auto/phonon.pro new file mode 100644 index 0000000..7549428 --- /dev/null +++ b/tests/auto/phonon.pro @@ -0,0 +1,5 @@ +TEMPLATE=subdirs +SUBDIRS=\ + mediaobject \ +# mediaobject_wince_ds9 \ This is Windows CE only (we test the second phonon backend ds9 here) + diff --git a/tests/auto/qstringmatcher/qstringmatcher.pro b/tests/auto/qstringmatcher/qstringmatcher.pro index e478d4e..2c15097 100644 --- a/tests/auto/qstringmatcher/qstringmatcher.pro +++ b/tests/auto/qstringmatcher/qstringmatcher.pro @@ -1,5 +1,5 @@ load(qttest_p4) SOURCES += tst_qstringmatcher.cpp - +QT = core DEFINES += QT_NO_CAST_TO_ASCII diff --git a/tests/auto/qt3support.pro b/tests/auto/qt3support.pro new file mode 100644 index 0000000..3657cfe --- /dev/null +++ b/tests/auto/qt3support.pro @@ -0,0 +1,54 @@ +TEMPLATE=subdirs +SUBDIRS=\ + q3accel \ + q3action \ + q3actiongroup \ + q3buttongroup \ + q3canvas \ + q3checklistitem \ + q3cstring \ + q3databrowser \ + q3dateedit \ + q3datetimeedit \ + q3deepcopy \ + q3dict \ + q3dns \ + q3dockwindow \ + q3filedialog \ + q3groupbox \ + q3hbox \ + q3header \ + q3iconview \ + q3listbox \ + q3listview \ + q3listviewitemiterator \ + q3mainwindow \ + q3popupmenu \ + q3process \ + q3progressbar \ + q3progressdialog \ + q3ptrlist \ + q3richtext \ + q3scrollview \ + q3semaphore \ + q3serversocket \ + q3socket \ + q3socketdevice \ + q3sqlcursor \ + q3sqlselectcursor \ + q3stylesheet \ + q3tabdialog \ + q3table \ + q3textbrowser \ + q3textedit \ + q3textstream \ + q3timeedit \ + q3toolbar \ + q3urloperator \ + q3valuelist \ + q3valuevector \ + q3combobox \ + q3frame \ + q3uridrag \ + q3widgetstack + diff --git a/tests/auto/script.pro b/tests/auto/script.pro new file mode 100644 index 0000000..06f51b5 --- /dev/null +++ b/tests/auto/script.pro @@ -0,0 +1,16 @@ +TEMPLATE=subdirs +SUBDIRS=\ + qscriptable \ + qscriptclass \ + qscriptcontext \ + qscriptcontextinfo \ + qscriptengine \ + qscriptengineagent \ + qscriptenginedebugger \ + qscriptextqobject \ + qscriptjstestsuite \ + qscriptstring \ + qscriptv8testsuite \ + qscriptvalue \ + qscriptvalueiterator \ + diff --git a/tests/auto/sql.pro b/tests/auto/sql.pro new file mode 100644 index 0000000..7cfd137 --- /dev/null +++ b/tests/auto/sql.pro @@ -0,0 +1,14 @@ +TEMPLATE=subdirs +SUBDIRS=\ + qsql \ + qsqldatabase \ + qsqldriver \ + qsqlerror \ + qsqlfield \ + qsqlquery \ + qsqlquerymodel \ + qsqlrecord \ + qsqlrelationaltablemodel \ + qsqltablemodel \ + qsqlthread \ + diff --git a/tests/auto/svg.pro b/tests/auto/svg.pro new file mode 100644 index 0000000..cb3cccb --- /dev/null +++ b/tests/auto/svg.pro @@ -0,0 +1,6 @@ +TEMPLATE=subdirs +SUBDIRS=\ + qsvgdevice \ + qsvggenerator \ + qsvgrenderer \ + diff --git a/tests/auto/webkit.pro b/tests/auto/webkit.pro new file mode 100644 index 0000000..8c7ccba --- /dev/null +++ b/tests/auto/webkit.pro @@ -0,0 +1,8 @@ +TEMPLATE=subdirs +SUBDIRS=\ + qwebelement \ + qwebframe \ + qwebhistory \ + qwebhistoryinterface \ + qwebpage \ + diff --git a/tests/auto/xml.pro b/tests/auto/xml.pro new file mode 100644 index 0000000..76afec8 --- /dev/null +++ b/tests/auto/xml.pro @@ -0,0 +1,8 @@ +TEMPLATE=subdirs +SUBDIRS=\ + qdom \ + qxml \ + qxmlinputsource \ + qxmlsimplereader \ + qxmlstream \ + diff --git a/tests/auto/xmlpatterns.pro b/tests/auto/xmlpatterns.pro new file mode 100644 index 0000000..f670266 --- /dev/null +++ b/tests/auto/xmlpatterns.pro @@ -0,0 +1,47 @@ +TEMPLATE=subdirs +SUBDIRS=\ + checkxmlfiles \ + patternistexamplefiletree \ + patternistexamples \ + patternistheaders \ + qabstractmessagehandler \ + qabstracturiresolver \ + qabstractxmlforwarditerator \ + qabstractxmlnodemodel \ + qabstractxmlreceiver \ + qapplicationargumentparser \ + qautoptr \ + qsimplexmlnodemodel \ + qsourcelocation \ + qxmlformatter \ + qxmlitem \ + qxmlname \ + qxmlnamepool \ + qxmlnodemodelindex \ + qxmlquery \ + qxmlresultitems \ + qxmlschema \ + qxmlschemavalidator \ + qxmlserializer \ + xmlpatterns \ + xmlpatternsdiagnosticsts \ + xmlpatternsschema \ + xmlpatternsschemats \ + xmlpatternssdk \ + xmlpatternsvalidator \ + xmlpatternsview \ + xmlpatternsxqts \ + xmlpatternsxslts \ + +xmlpatternsdiagnosticsts.depends = xmlpatternssdk +xmlpatternsview.depends = xmlpatternssdk +xmlpatternsxslts.depends = xmlpatternssdk +xmlpatternsschemats.depends = xmlpatternssdk + +!contains(QT_CONFIG, private_tests): SUBDIRS -= \ + xmlpatternsdiagnosticsts \ + xmlpatternsview \ + xmlpatternssdk \ + xmlpatternsxqts \ + xmlpatternsxslts \ + -- cgit v0.12 From 60a0a4bb680d9f3780cadd25b834492171ef7d38 Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Thu, 4 Mar 2010 09:36:12 +1000 Subject: Remove vgClearPath() change to OpenVG paint engine Upon further investigation, vgClearPath() doesn't help as much on target devices as just making a new path. Revert "Improve performance of VGPath creation by reusing the same path" This reverts commit 8597e03495f54614e53c6063f1f13077a08109fd. --- src/openvg/qpaintengine_vg.cpp | 124 +++++++++++++++++++---------------------- 1 file changed, 57 insertions(+), 67 deletions(-) diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index 4192dbb..da47f06 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -131,9 +131,8 @@ public: void draw(VGPath path, const QPen& pen, const QBrush& brush, VGint rule = VG_EVEN_ODD); void stroke(VGPath path, const QPen& pen); void fill(VGPath path, const QBrush& brush, VGint rule = VG_EVEN_ODD); - inline void releasePath(VGPath path); - VGPath vectorPathToVGPath(const QVectorPath& path, bool forceNewPath = false); - VGPath painterPathToVGPath(const QPainterPath& path, bool forceNewPath = false); + VGPath vectorPathToVGPath(const QVectorPath& path); + VGPath painterPathToVGPath(const QPainterPath& path); VGPath roundedRectPath(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode); VGPaintType setBrush (VGPaint paint, const QBrush& brush, VGMatrixMode mode, @@ -179,8 +178,6 @@ public: VGPath roundRectPath; // Cached path for quick drawing of rounded rects. #endif - VGPath reusablePath; // Reusable path for vectorPathToVGPath(), etc. - QTransform transform; // Currently active transform. bool simpleTransform; // True if the transform is simple (non-projective). qreal penScale; // Pen scaling factor from "transform". @@ -353,8 +350,6 @@ void QVGPaintEnginePrivate::init() roundRectPath = 0; #endif - reusablePath = 0; - simpleTransform = true; pathTransformSet = false; penScale = 1.0; @@ -451,15 +446,6 @@ void QVGPaintEnginePrivate::initObjects() VG_PATH_CAPABILITY_ALL); vgAppendPathData(linePath, 2, segments, coords); #endif - - // This path can be reused over and over by calling vgClearPath(). - reusablePath = vgCreatePath(VG_PATH_FORMAT_STANDARD, - VG_PATH_DATATYPE_F, - 1.0f, // scale - 0.0f, // bias - 32 + 1, // segmentCapacityHint - 32 * 2, // coordCapacityHint - VG_PATH_CAPABILITY_ALL); } void QVGPaintEnginePrivate::destroy() @@ -479,8 +465,6 @@ void QVGPaintEnginePrivate::destroy() if (roundRectPath) vgDestroyPath(roundRectPath); #endif - if (reusablePath) - vgDestroyPath(reusablePath); #if !defined(QVG_NO_DRAW_GLYPHS) QVGFontCache::Iterator it; @@ -557,32 +541,19 @@ void QVGPaintEnginePrivate::updateTransform(QPaintDevice *pdev) qt_scaleForTransform(transform, &penScale); } -inline void QVGPaintEnginePrivate::releasePath(VGPath path) -{ - if (path == reusablePath) - vgClearPath(path, VG_PATH_CAPABILITY_ALL); - else - vgDestroyPath(path); -} - -VGPath QVGPaintEnginePrivate::vectorPathToVGPath(const QVectorPath& path, bool forceNewPath) +VGPath QVGPaintEnginePrivate::vectorPathToVGPath(const QVectorPath& path) { int count = path.elementCount(); const qreal *points = path.points(); const QPainterPath::ElementType *elements = path.elements(); - VGPath vgpath; - if (forceNewPath) { - vgpath = vgCreatePath(VG_PATH_FORMAT_STANDARD, - VG_PATH_DATATYPE_F, - 1.0f, // scale - 0.0f, // bias - count + 1, // segmentCapacityHint - count * 2, // coordCapacityHint - VG_PATH_CAPABILITY_ALL); - } else { - vgpath = reusablePath; - } + VGPath vgpath = vgCreatePath(VG_PATH_FORMAT_STANDARD, + VG_PATH_DATATYPE_F, + 1.0f, // scale + 0.0f, // bias + count + 1, // segmentCapacityHint + count * 2, // coordCapacityHint + VG_PATH_CAPABILITY_ALL); // Size is sufficient segments for drawRoundedRect() paths. QVarLengthArray segments; @@ -754,22 +725,17 @@ VGPath QVGPaintEnginePrivate::vectorPathToVGPath(const QVectorPath& path, bool f return vgpath; } -VGPath QVGPaintEnginePrivate::painterPathToVGPath(const QPainterPath& path, bool forceNewPath) +VGPath QVGPaintEnginePrivate::painterPathToVGPath(const QPainterPath& path) { int count = path.elementCount(); - VGPath vgpath; - if (forceNewPath) { - vgpath = vgCreatePath(VG_PATH_FORMAT_STANDARD, - VG_PATH_DATATYPE_F, - 1.0f, // scale - 0.0f, // bias - count + 1, // segmentCapacityHint - count * 2, // coordCapacityHint - VG_PATH_CAPABILITY_ALL); - } else { - vgpath = reusablePath; - } + VGPath vgpath = vgCreatePath(VG_PATH_FORMAT_STANDARD, + VG_PATH_DATATYPE_F, + 1.0f, // scale + 0.0f, // bias + count + 1, // segmentCapacityHint + count * 2, // coordCapacityHint + VG_PATH_CAPABILITY_ALL); if (count == 0) return vgpath; @@ -988,7 +954,13 @@ VGPath QVGPaintEnginePrivate::roundedRectPath(const QRectF &rect, qreal xRadius, vgModifyPathCoords(vgpath, 0, 9, pts); } #else - VGPath vgpath = reusablePath; + VGPath vgpath = vgCreatePath(VG_PATH_FORMAT_STANDARD, + VG_PATH_DATATYPE_F, + 1.0f, // scale + 0.0f, // bias + 10, // segmentCapacityHint + 17 * 2, // coordCapacityHint + VG_PATH_CAPABILITY_ALL); vgAppendPathData(vgpath, 10, roundedrect_types, pts); #endif @@ -1544,7 +1516,7 @@ void QVGPaintEngine::draw(const QVectorPath &path) d->draw(vgpath, s->pen, s->brush, VG_EVEN_ODD); else d->draw(vgpath, s->pen, s->brush, VG_NON_ZERO); - d->releasePath(vgpath); + vgDestroyPath(vgpath); } void QVGPaintEngine::fill(const QVectorPath &path, const QBrush &brush) @@ -1555,7 +1527,7 @@ void QVGPaintEngine::fill(const QVectorPath &path, const QBrush &brush) d->fill(vgpath, brush, VG_EVEN_ODD); else d->fill(vgpath, brush, VG_NON_ZERO); - d->releasePath(vgpath); + vgDestroyPath(vgpath); } void QVGPaintEngine::stroke(const QVectorPath &path, const QPen &pen) @@ -1563,7 +1535,7 @@ void QVGPaintEngine::stroke(const QVectorPath &path, const QPen &pen) Q_D(QVGPaintEngine); VGPath vgpath = d->vectorPathToVGPath(path); d->stroke(vgpath, pen); - d->releasePath(vgpath); + vgDestroyPath(vgpath); } // Determine if a co-ordinate transform is simple enough to allow @@ -1759,7 +1731,7 @@ void QVGPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op) default: break; } - d->releasePath(vgpath); + vgDestroyPath(vgpath); vgSeti(VG_MASKING, VG_TRUE); d->maskValid = true; @@ -2076,7 +2048,7 @@ void QVGPaintEngine::clip(const QPainterPath &path, Qt::ClipOperation op) default: break; } - d->releasePath(vgpath); + vgDestroyPath(vgpath); vgSeti(VG_MASKING, VG_TRUE); d->maskValid = true; @@ -2515,7 +2487,7 @@ void QVGPaintEngine::drawRoundedRect(const QRectF &rect, qreal xrad, qreal yrad, VGPath vgpath = d->roundedRectPath(rect, xrad, yrad, mode); d->draw(vgpath, s->pen, s->brush); #if defined(QVG_NO_MODIFY_PATH) - d->releasePath(vgpath); + vgDestroyPath(vgpath); #endif } else { QPaintEngineEx::drawRoundedRect(rect, xrad, yrad, mode); @@ -2664,7 +2636,13 @@ void QVGPaintEngine::drawEllipse(const QRectF &r) Q_D(QVGPaintEngine); if (d->simpleTransform) { QVGPainterState *s = state(); - VGPath path = d->reusablePath; + VGPath path = vgCreatePath(VG_PATH_FORMAT_STANDARD, + VG_PATH_DATATYPE_F, + 1.0f, // scale + 0.0f, // bias + 4, // segmentCapacityHint + 12, // coordCapacityHint + VG_PATH_CAPABILITY_ALL); static VGubyte segments[4] = { VG_MOVE_TO_ABS, VG_SCCWARC_TO_REL, @@ -2688,7 +2666,7 @@ void QVGPaintEngine::drawEllipse(const QRectF &r) coords[11] = 0.0f; vgAppendPathData(path, 4, segments, coords); d->draw(path, s->pen, s->brush); - d->releasePath(path); + vgDestroyPath(path); } else { // The projective transform version of an ellipse is difficult. // Generate a QVectorPath containing cubic curves and transform that. @@ -2712,7 +2690,7 @@ void QVGPaintEngine::drawPath(const QPainterPath &path) d->draw(vgpath, s->pen, s->brush, VG_EVEN_ODD); else d->draw(vgpath, s->pen, s->brush, VG_NON_ZERO); - d->releasePath(vgpath); + vgDestroyPath(vgpath); } void QVGPaintEngine::drawPoints(const QPointF *points, int pointCount) @@ -2787,7 +2765,13 @@ void QVGPaintEngine::drawPolygon(const QPointF *points, int pointCount, PolygonD { Q_D(QVGPaintEngine); QVGPainterState *s = state(); - VGPath path = d->reusablePath; + VGPath path = vgCreatePath(VG_PATH_FORMAT_STANDARD, + VG_PATH_DATATYPE_F, + 1.0f, // scale + 0.0f, // bias + pointCount + 1, // segmentCapacityHint + pointCount * 2, // coordCapacityHint + VG_PATH_CAPABILITY_ALL); QVarLengthArray coords; QVarLengthArray segments; for (int i = 0; i < pointCount; ++i, ++points) { @@ -2821,14 +2805,20 @@ void QVGPaintEngine::drawPolygon(const QPointF *points, int pointCount, PolygonD d->draw(path, s->pen, s->brush, VG_EVEN_ODD); break; } - d->releasePath(path); + vgDestroyPath(path); } void QVGPaintEngine::drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode) { Q_D(QVGPaintEngine); QVGPainterState *s = state(); - VGPath path = d->reusablePath; + VGPath path = vgCreatePath(VG_PATH_FORMAT_STANDARD, + VG_PATH_DATATYPE_F, + 1.0f, // scale + 0.0f, // bias + pointCount + 1, // segmentCapacityHint + pointCount * 2, // coordCapacityHint + VG_PATH_CAPABILITY_ALL); QVarLengthArray coords; QVarLengthArray segments; for (int i = 0; i < pointCount; ++i, ++points) { @@ -2862,7 +2852,7 @@ void QVGPaintEngine::drawPolygon(const QPoint *points, int pointCount, PolygonDr d->draw(path, s->pen, s->brush, VG_EVEN_ODD); break; } - d->releasePath(path); + vgDestroyPath(path); } void QVGPaintEnginePrivate::setImageOptions() @@ -3261,7 +3251,7 @@ void QVGFontGlyphCache::cacheGlyphs ti.fontEngine->getUnscaledGlyph(glyph, &path, &metrics); VGPath vgPath; if (!path.isEmpty()) { - vgPath = d->painterPathToVGPath(path, true); + vgPath = d->painterPathToVGPath(path); } else { // Probably a "space" character with no visible outline. vgPath = VG_INVALID_HANDLE; -- cgit v0.12 From f53ac4f7617bfdefcb62e9b27ee6bf1a91a7ed13 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Thu, 4 Mar 2010 09:37:04 +1000 Subject: Fix test to listen for signal instead of try-waiting for property. --- .../declarative/qdeclarativeworkerscript/data/worker.qml | 5 +++-- .../tst_qdeclarativeworkerscript.cpp | 13 ++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml b/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml index 2982010..bb4028f 100644 --- a/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml +++ b/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml @@ -4,9 +4,10 @@ WorkerScript { id: worker source: "script.js" - property bool done : false property var response + signal done() + function testSend(value) { worker.sendMessage(value) } @@ -21,7 +22,7 @@ WorkerScript { } onMessage: { - worker.done = true worker.response = messageObject + worker.done() } } diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp index 841a0ee..b0fc212 100644 --- a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp +++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp @@ -40,6 +40,7 @@ ****************************************************************************/ #include #include +#include #include #include @@ -67,11 +68,13 @@ private slots: private: void waitForEchoMessage(QDeclarativeWorkerScript *worker) { - const QMetaObject *mo = worker->metaObject(); - int index = mo->indexOfProperty("done"); - QVERIFY(index >= 0); - QTRY_COMPARE(mo->property(index).read(worker).toBool(), true); - QTRY_COMPARE(mo->property(mo->indexOfProperty("done")).read(worker).toBool(), true); + QEventLoop loop; + QVERIFY(connect(worker, SIGNAL(done()), &loop, SLOT(quit()))); + QTimer timer; + connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit())); + timer.start(1000); + loop.exec(); + QVERIFY(timer.isActive()); } QDeclarativeEngine m_engine; -- cgit v0.12 From e8916f0b69abad1de5767ac6ca1a555f40e3f675 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Thu, 4 Mar 2010 09:46:25 +1000 Subject: Increase test timer --- .../qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp index 15caea6..9957b50 100644 --- a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp +++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp @@ -71,8 +71,9 @@ private: QEventLoop loop; QVERIFY(connect(worker, SIGNAL(done()), &loop, SLOT(quit()))); QTimer timer; + timer.setSingleShot(true); connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit())); - timer.start(1000); + timer.start(10000); loop.exec(); QVERIFY(timer.isActive()); } -- cgit v0.12 From 243fa0427cfb9878c39946dcf5429aab581c47c3 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Thu, 4 Mar 2010 09:38:54 +1000 Subject: Make `make check' build the checked project. The `check' rule ought to depend on the project being built, so one can simply do `make check' instead of `make && make check'. Note that there was already an attempt to do this for the autotests, but it did not work on non-Windows platforms, because $(DESTDIR_TARGET) is only used in the Windows makefile generators. Reviewed-By: Lincoln Ramsay --- mkspecs/features/default_post.prf | 4 ++++ mkspecs/features/qttest_p4.prf | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf index 155bfc3..d844385 100644 --- a/mkspecs/features/default_post.prf +++ b/mkspecs/features/default_post.prf @@ -17,5 +17,9 @@ QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST check.recurse = $$SUBDIRS check.recurse_target = check } + # `make check' should imply building the project + else { + check.depends = first + } QMAKE_EXTRA_TARGETS += check } diff --git a/mkspecs/features/qttest_p4.prf b/mkspecs/features/qttest_p4.prf index 53c0d74..e3faef1 100644 --- a/mkspecs/features/qttest_p4.prf +++ b/mkspecs/features/qttest_p4.prf @@ -27,7 +27,7 @@ embedded: check.commands += -qws QMAKE_EXTRA_TARGETS += check !debug_and_release|build_pass { - check.depends = $(DESTDIR_TARGET) + check.depends = first } else { check.CONFIG = recursive # In debug and release mode, only run the test once. -- cgit v0.12 From 89a478c8c747b2f572deb88d028715e88c16853e Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 4 Mar 2010 09:53:28 +1000 Subject: Make sure currentIndex is updated when view is flicked. Task-number: QTBUG-8396 --- examples/declarative/parallax/qml/ParallaxView.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/declarative/parallax/qml/ParallaxView.qml b/examples/declarative/parallax/qml/ParallaxView.qml index 5e58100..08193ae 100644 --- a/examples/declarative/parallax/qml/ParallaxView.qml +++ b/examples/declarative/parallax/qml/ParallaxView.qml @@ -25,6 +25,7 @@ Item { anchors.fill: parent model: VisualItemModel { id: visualModel } + highlightRangeMode: ListView.StrictlyEnforceRange snapMode: ListView.SnapOneItem } -- cgit v0.12 From 06e61382f0d6f07798f7db3049f3e185be54efc1 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 4 Mar 2010 09:54:16 +1000 Subject: system import path not supported with Qt 4.6. --- src/declarative/qml/qdeclarativeengine.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index ecaea61..bd67b0b 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -1383,7 +1383,11 @@ public: paths += QFileInfo(base.toLocalFile()).path(); paths += importPath; paths += QDeclarativeEnginePrivate::get(engine)->environmentImportPath; +#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0)) QString builtinPath = QLibraryInfo::location(QLibraryInfo::ImportsPath); +#else + QString builtinPath; +#endif if (!builtinPath.isEmpty()) paths += builtinPath; -- cgit v0.12 From b67d5d90a306534a1ea2fcb333981c6b1126105c Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 4 Mar 2010 09:54:42 +1000 Subject: Fix visibility of classes in private headers upon which Bauhaus/Creator relies. Author: Erik Verbruggen --- src/declarative/qml/qdeclarativebinding_p.h | 4 ++-- src/declarative/qml/qdeclarativeproperty_p.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/declarative/qml/qdeclarativebinding_p.h b/src/declarative/qml/qdeclarativebinding_p.h index ec5809d..1a714f0 100644 --- a/src/declarative/qml/qdeclarativebinding_p.h +++ b/src/declarative/qml/qdeclarativebinding_p.h @@ -64,7 +64,7 @@ QT_BEGIN_NAMESPACE -class Q_AUTOTEST_EXPORT QDeclarativeAbstractBinding +class Q_DECLARATIVE_EXPORT QDeclarativeAbstractBinding { public: QDeclarativeAbstractBinding(); @@ -101,7 +101,7 @@ private: class QDeclarativeContext; class QDeclarativeBindingPrivate; -class Q_AUTOTEST_EXPORT QDeclarativeBinding : public QDeclarativeExpression, public QDeclarativeAbstractBinding +class Q_DECLARATIVE_EXPORT QDeclarativeBinding : public QDeclarativeExpression, public QDeclarativeAbstractBinding { Q_OBJECT public: diff --git a/src/declarative/qml/qdeclarativeproperty_p.h b/src/declarative/qml/qdeclarativeproperty_p.h index 1fda7f4..c31e2d3 100644 --- a/src/declarative/qml/qdeclarativeproperty_p.h +++ b/src/declarative/qml/qdeclarativeproperty_p.h @@ -65,7 +65,7 @@ QT_BEGIN_NAMESPACE class QDeclarativeContext; class QDeclarativeEnginePrivate; class QDeclarativeExpression; -class Q_AUTOTEST_EXPORT QDeclarativePropertyPrivate +class Q_DECLARATIVE_EXPORT QDeclarativePropertyPrivate { public: enum WriteFlag { BypassInterceptor = 0x01, DontRemoveBinding = 0x02 }; -- cgit v0.12 From 7ab3b4d96a0cedb50d2c1ce5bfe9eed315548c4f Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 4 Mar 2010 09:56:03 +1000 Subject: Fix Samegame. --- demos/declarative/samegame/SamegameCore/samegame.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demos/declarative/samegame/SamegameCore/samegame.js b/demos/declarative/samegame/SamegameCore/samegame.js index c0f10bd..1214b79 100755 --- a/demos/declarative/samegame/SamegameCore/samegame.js +++ b/demos/declarative/samegame/SamegameCore/samegame.js @@ -4,7 +4,7 @@ var maxX = 10;//Nums are for gameCanvas.tileSize 40 var maxY = 15; var maxIndex = maxX*maxY; var board = new Array(maxIndex); -var tileSrc = "content/BoomBlock.qml"; +var tileSrc = "SamegameCore/BoomBlock.qml"; var scoresURL = "http://qtfx-nokia.trolltech.com.au/samegame/scores.php"; var scoresURL = ""; var timer; -- cgit v0.12 From 8f031e9c1dc4dd3b8caea646c9ea108b04f36b3c Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Thu, 4 Mar 2010 10:20:21 +1000 Subject: remove non wifi interfaces from being handled. handled by generic engine. also fix release crash --- src/plugins/bearer/corewlan/qcorewlanengine.mm | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm index a758a4b..2d33d36 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.mm +++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm @@ -201,7 +201,6 @@ void QCoreWlanEngine::connectToId(const QString &id) return; } } - [apNetwork release]; } } } @@ -292,7 +291,7 @@ void QCoreWlanEngine::doRequestUpdate() if (!interface.addressEntries().isEmpty()) state = QNetworkConfiguration::Active; - if (accessPointConfigurations.contains(id)) { + if (accessPointConfigurations.contains(id)) { //handle only scanned AP's QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id); bool changed = false; @@ -319,20 +318,6 @@ void QCoreWlanEngine::doRequestUpdate() if (changed) emit configurationChanged(ptr); - } else { - QNetworkConfigurationPrivatePointer ptr(new QNetworkConfigurationPrivate); - - ptr->name = name; - ptr->isValid = true; - ptr->id = id; - ptr->state = state; - ptr->type = QNetworkConfiguration::InternetAccessPoint; - ptr->bearer = qGetInterfaceType(interface.name()); - - accessPointConfigurations.insert(id, ptr); - configurationInterface.insert(id, interface.name()); - - emit configurationAdded(ptr); } } @@ -496,12 +481,6 @@ bool QCoreWlanEngine::getAllScInterfaces() CFStringRef type = SCNetworkInterfaceGetInterfaceType((SCNetworkInterfaceRef)thisInterface); if ( CFEqual(type, kSCNetworkInterfaceTypeIEEE80211)) { typeStr = "WLAN"; -// } else if (CFEqual(type, kSCNetworkInterfaceTypeBluetooth)) { -// typeStr = "Bluetooth"; - } else if(CFEqual(type, kSCNetworkInterfaceTypeEthernet)) { - typeStr = "Ethernet"; - } else if(CFEqual(type, kSCNetworkInterfaceTypeFireWire)) { - typeStr = "Ethernet"; //ok a bit fudged } if(!networkInterfaces.contains(interfaceName) && !typeStr.isEmpty()) { networkInterfaces.insert(interfaceName,typeStr); -- cgit v0.12 From 26d28b39504d1c55690985deb52646114b6cf710 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 4 Mar 2010 10:43:33 +1000 Subject: Fix benchmarks. Get them all running again after renames, etc. --- tests/benchmarks/declarative/binding/binding.pro | 3 +++ tests/benchmarks/declarative/binding/data/idproperty.txt | 2 +- .../declarative/binding/data/objectproperty.txt | 2 +- tests/benchmarks/declarative/binding/testtypes.h | 6 +++--- tests/benchmarks/declarative/binding/tst_binding.cpp | 16 ++++++++-------- tests/benchmarks/declarative/creation/tst_creation.cpp | 5 +++-- .../qdeclarativecomponent/data/samegame/BoomBlock.qml | 6 +++--- .../qdeclarativecomponent/qdeclarativecomponent.pro | 3 +++ .../declarative/qdeclarativecomponent/testtypes.h | 6 +++--- .../qdeclarativecomponent/tst_qdeclarativecomponent.cpp | 14 +++++++------- .../qdeclarativemetaproperty.pro | 2 ++ .../tst_qdeclarativemetaproperty.cpp | 8 ++++---- tests/benchmarks/declarative/script/tst_script.cpp | 11 ++++++----- 13 files changed, 47 insertions(+), 37 deletions(-) diff --git a/tests/benchmarks/declarative/binding/binding.pro b/tests/benchmarks/declarative/binding/binding.pro index aa4cc41..5ceaf34 100644 --- a/tests/benchmarks/declarative/binding/binding.pro +++ b/tests/benchmarks/declarative/binding/binding.pro @@ -7,6 +7,9 @@ macx:CONFIG -= app_bundle SOURCES += tst_binding.cpp testtypes.cpp HEADERS += testtypes.h +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" + symbian* { data.sources = data/* data.path = data diff --git a/tests/benchmarks/declarative/binding/data/idproperty.txt b/tests/benchmarks/declarative/binding/data/idproperty.txt index 71e3c4e..4e474ba 100644 --- a/tests/benchmarks/declarative/binding/data/idproperty.txt +++ b/tests/benchmarks/declarative/binding/data/idproperty.txt @@ -1,7 +1,7 @@ import Test 1.0 MyQmlObject { - id: MyObject + id: myObject MyQmlObject { result: ### diff --git a/tests/benchmarks/declarative/binding/data/objectproperty.txt b/tests/benchmarks/declarative/binding/data/objectproperty.txt index 63fa74d..6133dd6 100644 --- a/tests/benchmarks/declarative/binding/data/objectproperty.txt +++ b/tests/benchmarks/declarative/binding/data/objectproperty.txt @@ -1,7 +1,7 @@ import Test 1.0 MyQmlObject { - id: MyObject + id: myObject result: ### } diff --git a/tests/benchmarks/declarative/binding/testtypes.h b/tests/benchmarks/declarative/binding/testtypes.h index 4b103ce..523f94d 100644 --- a/tests/benchmarks/declarative/binding/testtypes.h +++ b/tests/benchmarks/declarative/binding/testtypes.h @@ -50,7 +50,7 @@ class MyQmlObject : public QObject Q_PROPERTY(int result READ result WRITE setResult); Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged); Q_PROPERTY(MyQmlObject *object READ object WRITE setObject NOTIFY objectChanged); - Q_PROPERTY(QDeclarativeList *data READ data); + Q_PROPERTY(QDeclarativeListProperty data READ data); Q_CLASSINFO("DefaultProperty", "data"); public: MyQmlObject() : m_result(0), m_value(0), m_object(0) {} @@ -61,7 +61,7 @@ public: int value() const { return m_value; } void setValue(int v) { m_value = v; emit valueChanged(); } - QDeclarativeList *data() { return &m_data; } + QDeclarativeListProperty data() { return QDeclarativeListProperty(this, m_data); } MyQmlObject *object() const { return m_object; } void setObject(MyQmlObject *o) { m_object = o; emit objectChanged(); } @@ -71,7 +71,7 @@ signals: void objectChanged(); private: - QDeclarativeConcreteList m_data; + QList m_data; int m_result; int m_value; MyQmlObject *m_object; diff --git a/tests/benchmarks/declarative/binding/tst_binding.cpp b/tests/benchmarks/declarative/binding/tst_binding.cpp index ee529a7..dbddac3 100644 --- a/tests/benchmarks/declarative/binding/tst_binding.cpp +++ b/tests/benchmarks/declarative/binding/tst_binding.cpp @@ -103,8 +103,8 @@ void tst_binding::objectproperty_data() QTest::addColumn("file"); QTest::addColumn("binding"); - QTest::newRow("object.value") << "data/objectproperty.txt" << "object.value"; - QTest::newRow("object.value + 10") << "data/objectproperty.txt" << "object.value + 10"; + QTest::newRow("object.value") << SRCDIR "/data/objectproperty.txt" << "object.value"; + QTest::newRow("object.value + 10") << SRCDIR "/data/objectproperty.txt" << "object.value + 10"; } void tst_binding::objectproperty() @@ -132,13 +132,13 @@ void tst_binding::basicproperty_data() QTest::addColumn("file"); QTest::addColumn("binding"); - QTest::newRow("value") << "data/localproperty.txt" << "value"; - QTest::newRow("value + 10") << "data/localproperty.txt" << "value + 10"; - QTest::newRow("value + value + 10") << "data/localproperty.txt" << "value + value + 10"; + QTest::newRow("value") << SRCDIR "/data/localproperty.txt" << "value"; + QTest::newRow("value + 10") << SRCDIR "/data/localproperty.txt" << "value + 10"; + QTest::newRow("value + value + 10") << SRCDIR "/data/localproperty.txt" << "value + value + 10"; - QTest::newRow("MyObject.value") << "data/idproperty.txt" << "MyObject.value"; - QTest::newRow("MyObject.value + 10") << "data/idproperty.txt" << "MyObject.value + 10"; - QTest::newRow("MyObject.value + MyObject.value + 10") << "data/idproperty.txt" << "MyObject.value + MyObject.value + 10"; + QTest::newRow("myObject.value") << SRCDIR "/data/idproperty.txt" << "myObject.value"; + QTest::newRow("myObject.value + 10") << SRCDIR "/data/idproperty.txt" << "myObject.value + 10"; + QTest::newRow("myObject.value + myObject.value + 10") << SRCDIR "/data/idproperty.txt" << "myObject.value + myObject.value + 10"; } void tst_binding::basicproperty() diff --git a/tests/benchmarks/declarative/creation/tst_creation.cpp b/tests/benchmarks/declarative/creation/tst_creation.cpp index 9c0fd27..4319208 100644 --- a/tests/benchmarks/declarative/creation/tst_creation.cpp +++ b/tests/benchmarks/declarative/creation/tst_creation.cpp @@ -42,7 +42,7 @@ #include #include #include -#include +#include #include #include #include @@ -339,7 +339,8 @@ void tst_creation::itemtree_data_cpp() for (int i = 0; i < 30; ++i) { QDeclarativeItem *child = new QDeclarativeItem; QDeclarativeGraphics_setParent_noEvent(child,item); - item->data()->append(child); + QDeclarativeListReference ref(item, "data"); + ref.append(child); } delete item; } diff --git a/tests/benchmarks/declarative/qdeclarativecomponent/data/samegame/BoomBlock.qml b/tests/benchmarks/declarative/qdeclarativecomponent/data/samegame/BoomBlock.qml index 723e62a..e48194a 100644 --- a/tests/benchmarks/declarative/qdeclarativecomponent/data/samegame/BoomBlock.qml +++ b/tests/benchmarks/declarative/qdeclarativecomponent/data/samegame/BoomBlock.qml @@ -7,8 +7,8 @@ Item { id:block property int targetX: 0 property int targetY: 0 - x: SpringFollow { enabled: spawned; source: targetX; spring: 2; damping: 0.2 } - y: SpringFollow { source: targetY; spring: 2; damping: 0.2 } + SpringFollow on x { enabled: spawned; source: targetX; spring: 2; damping: 0.2 } + SpringFollow on y { source: targetY; spring: 2; damping: 0.2 } Image { id: img source: { @@ -21,7 +21,7 @@ Item { id:block } } opacity: 0 - opacity: Behavior { NumberAnimation { duration: 200 } } + Behavior on opacity { NumberAnimation { duration: 200 } } anchors.fill: parent } diff --git a/tests/benchmarks/declarative/qdeclarativecomponent/qdeclarativecomponent.pro b/tests/benchmarks/declarative/qdeclarativecomponent/qdeclarativecomponent.pro index 12fa9f4..30ef235 100644 --- a/tests/benchmarks/declarative/qdeclarativecomponent/qdeclarativecomponent.pro +++ b/tests/benchmarks/declarative/qdeclarativecomponent/qdeclarativecomponent.pro @@ -7,6 +7,9 @@ macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativecomponent.cpp testtypes.cpp HEADERS += testtypes.h +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" + symbian* { data.sources = data/* data.path = data diff --git a/tests/benchmarks/declarative/qdeclarativecomponent/testtypes.h b/tests/benchmarks/declarative/qdeclarativecomponent/testtypes.h index 4b103ce..523f94d 100644 --- a/tests/benchmarks/declarative/qdeclarativecomponent/testtypes.h +++ b/tests/benchmarks/declarative/qdeclarativecomponent/testtypes.h @@ -50,7 +50,7 @@ class MyQmlObject : public QObject Q_PROPERTY(int result READ result WRITE setResult); Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged); Q_PROPERTY(MyQmlObject *object READ object WRITE setObject NOTIFY objectChanged); - Q_PROPERTY(QDeclarativeList *data READ data); + Q_PROPERTY(QDeclarativeListProperty data READ data); Q_CLASSINFO("DefaultProperty", "data"); public: MyQmlObject() : m_result(0), m_value(0), m_object(0) {} @@ -61,7 +61,7 @@ public: int value() const { return m_value; } void setValue(int v) { m_value = v; emit valueChanged(); } - QDeclarativeList *data() { return &m_data; } + QDeclarativeListProperty data() { return QDeclarativeListProperty(this, m_data); } MyQmlObject *object() const { return m_object; } void setObject(MyQmlObject *o) { m_object = o; emit objectChanged(); } @@ -71,7 +71,7 @@ signals: void objectChanged(); private: - QDeclarativeConcreteList m_data; + QList m_data; int m_result; int m_value; MyQmlObject *m_object; diff --git a/tests/benchmarks/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp b/tests/benchmarks/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp index 7065303..4b1456e 100644 --- a/tests/benchmarks/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp +++ b/tests/benchmarks/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp @@ -90,13 +90,13 @@ void tst_qmlcomponent::creation_data() { QTest::addColumn("file"); - QTest::newRow("Object") << "data/object.qml"; - QTest::newRow("Object - Id") << "data/object_id.qml"; - QTest::newRow("MyQmlObject") << "data/myqmlobject.qml"; - QTest::newRow("MyQmlObject: basic binding") << "data/myqmlobject_binding.qml"; - QTest::newRow("Synthesized properties") << "data/synthesized_properties.qml"; - QTest::newRow("Synthesized properties.2") << "data/synthesized_properties.2.qml"; - QTest::newRow("SameGame - BoomBlock") << "data/samegame/BoomBlock.qml"; + QTest::newRow("Object") << SRCDIR "/data/object.qml"; + QTest::newRow("Object - Id") << SRCDIR "/data/object_id.qml"; + QTest::newRow("MyQmlObject") << SRCDIR "/data/myqmlobject.qml"; + QTest::newRow("MyQmlObject: basic binding") << SRCDIR "/data/myqmlobject_binding.qml"; + QTest::newRow("Synthesized properties") << SRCDIR "/data/synthesized_properties.qml"; + QTest::newRow("Synthesized properties.2") << SRCDIR "/data/synthesized_properties.2.qml"; + QTest::newRow("SameGame - BoomBlock") << SRCDIR "/data/samegame/BoomBlock.qml"; } void tst_qmlcomponent::creation() diff --git a/tests/benchmarks/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro b/tests/benchmarks/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro index 8070768..79fdd26 100644 --- a/tests/benchmarks/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro +++ b/tests/benchmarks/declarative/qdeclarativemetaproperty/qdeclarativemetaproperty.pro @@ -6,3 +6,5 @@ macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativemetaproperty.cpp +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/benchmarks/declarative/qdeclarativemetaproperty/tst_qdeclarativemetaproperty.cpp b/tests/benchmarks/declarative/qdeclarativemetaproperty/tst_qdeclarativemetaproperty.cpp index dae1751..8a5f4ae 100644 --- a/tests/benchmarks/declarative/qdeclarativemetaproperty/tst_qdeclarativemetaproperty.cpp +++ b/tests/benchmarks/declarative/qdeclarativemetaproperty/tst_qdeclarativemetaproperty.cpp @@ -42,7 +42,7 @@ #include #include #include -#include +#include #include #include @@ -89,8 +89,8 @@ void tst_qmlmetaproperty::lookup_data() { QTest::addColumn("file"); - QTest::newRow("Simple Object") << "data/object.qml"; - QTest::newRow("Synthesized Object") << "data/synthesized_object.qml"; + QTest::newRow("Simple Object") << SRCDIR "/data/object.qml"; + QTest::newRow("Synthesized Object") << SRCDIR "/data/synthesized_object.qml"; } void tst_qmlmetaproperty::lookup() @@ -103,7 +103,7 @@ void tst_qmlmetaproperty::lookup() QObject *obj = c.create(); QBENCHMARK { - QDeclarativeMetaProperty p(obj, "x"); + QDeclarativeProperty p(obj, "x"); } delete obj; diff --git a/tests/benchmarks/declarative/script/tst_script.cpp b/tests/benchmarks/declarative/script/tst_script.cpp index 61f5fc8..9dd4076 100644 --- a/tests/benchmarks/declarative/script/tst_script.cpp +++ b/tests/benchmarks/declarative/script/tst_script.cpp @@ -96,11 +96,6 @@ private slots: private: }; -void tst_script::initTestCase() -{ - QML_REGISTER_TYPE(Qt.test, 1, 0, TestObject, TestObject); -} - inline QUrl TEST_FILE(const QString &filename) { return QUrl::fromLocalFile(QLatin1String(SRCDIR) + QLatin1String("/data/") + filename); @@ -147,6 +142,12 @@ int TestObject::x() return m_x++; } +void tst_script::initTestCase() +{ + QML_REGISTER_TYPE(Qt.test, 1, 0, TestObject, TestObject); +} + + #define PROPERTY_PROGRAM \ "(function(testObject) { return (function() { " \ " var test = 0; " \ -- cgit v0.12 From 1c21463aca94051a5c5e293bd9d5f6da8c491bf9 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 4 Mar 2010 10:45:55 +1000 Subject: Set StrongFocus on QDeclarativeView so that elements can get focus. Task-number: QTBUG-8637 --- src/declarative/util/qdeclarativeview.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/declarative/util/qdeclarativeview.cpp b/src/declarative/util/qdeclarativeview.cpp index f08e634..cd67aeb 100644 --- a/src/declarative/util/qdeclarativeview.cpp +++ b/src/declarative/util/qdeclarativeview.cpp @@ -194,6 +194,7 @@ void QDeclarativeViewPrivate::execute() \o Initializes QGraphicsView for QML key handling: \list \o QGraphicsView::viewport()->setFocusPolicy(Qt::NoFocus); + \o QGraphicsView::setFocusPolicy(Qt::StrongFocus); \o QGraphicsScene::setStickyFocus(true); \endlist \endlist @@ -268,6 +269,7 @@ void QDeclarativeViewPrivate::init() q->setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate); scene.setItemIndexMethod(QGraphicsScene::NoIndex); q->viewport()->setFocusPolicy(Qt::NoFocus); + q->setFocusPolicy(Qt::StrongFocus); scene.setStickyFocus(true); //### needed for correct focus handling } -- cgit v0.12 From 564baee7e729f1c6f766cecabc4fcc62291e0d0f Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Thu, 4 Mar 2010 11:06:04 +1000 Subject: Removed unused variable --- src/declarative/graphicsitems/qdeclarativeflickable.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index 2fdd720..63c97e0 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -154,7 +154,6 @@ void QDeclarativeFlickablePrivate::init() */ qreal QDeclarativeFlickablePrivate::overShootDistance(qreal velocity, qreal size) { - Q_Q(QDeclarativeFlickable); if (maxVelocity <= 0) return 0.0; -- cgit v0.12 From 4f884f13a53a18d925054d3773d06cb487a7eb86 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Thu, 4 Mar 2010 12:17:16 +1000 Subject: Do not process uic3 test unless qt3support is enabled. --- tests/auto/host.pro | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/auto/host.pro b/tests/auto/host.pro index 6a7cea7..9852d91 100644 --- a/tests/auto/host.pro +++ b/tests/auto/host.pro @@ -8,7 +8,6 @@ SUBDIRS=\ maketestselftest \ moc \ uic \ - uic3 \ guiapplauncher \ qmake \ rcc \ @@ -16,3 +15,5 @@ SUBDIRS=\ #atwrapper \ # These tests need significant updating, #uiloader \ # they have hardcoded machine names etc. +contains(QT_CONFIG,qt3support):SUBDIRS+=uic3 + -- cgit v0.12 From 4164a11032b64fe5a557515f283fa0e4c6d0260d Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 4 Mar 2010 12:18:36 +1000 Subject: Fix test. --- tests/benchmarks/declarative/qdeclarativecomponent/data/object_id.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/benchmarks/declarative/qdeclarativecomponent/data/object_id.qml b/tests/benchmarks/declarative/qdeclarativecomponent/data/object_id.qml index 69114af..dc29f15 100644 --- a/tests/benchmarks/declarative/qdeclarativecomponent/data/object_id.qml +++ b/tests/benchmarks/declarative/qdeclarativecomponent/data/object_id.qml @@ -1,6 +1,6 @@ import Qt 4.6 QtObject { - id: Blah + id: blah } -- cgit v0.12 From 984625e5788900c96507b773193f519295d0be80 Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Thu, 4 Mar 2010 12:00:06 +1000 Subject: Namespace fixes. Reviewed-by: Rohan McGovern --- src/corelib/tools/qsimd_p.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 724f3e0..21f308d 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -47,9 +47,6 @@ QT_BEGIN_HEADER -QT_BEGIN_NAMESPACE - -QT_MODULE(Core) #if defined(QT_NO_MAC_XARCH) || (defined(Q_OS_DARWIN) && (defined(__ppc__) || defined(__ppc64__))) // Disable MMX and SSE on Mac/PPC builds, or if the compiler @@ -103,6 +100,10 @@ QT_MODULE(Core) #include #endif +QT_BEGIN_NAMESPACE + +QT_MODULE(Core) + enum CPUFeatures { None = 0, MMX = 0x1, -- cgit v0.12 From 6ed01163b4de5e51f760b3627a6271796cbed212 Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Thu, 4 Mar 2010 12:00:47 +1000 Subject: Cocoa namespace fixes. Reviewed-by: Rohan McGovern --- src/gui/kernel/qt_cocoa_helpers_mac.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm index 9560952..c776b2a 100644 --- a/src/gui/kernel/qt_cocoa_helpers_mac.mm +++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm @@ -373,7 +373,7 @@ QMacTabletHash *qt_mac_tablet_hash() // Clears the QWidget pointer that each QCocoaView holds. void qt_mac_clearCocoaViewQWidgetPointers(QWidget *widget) { - QCocoaView *cocoaView = reinterpret_cast(qt_mac_nativeview_for(widget)); + QT_MANGLE_NAMESPACE(QCocoaView) *cocoaView = reinterpret_cast(qt_mac_nativeview_for(widget)); if (cocoaView && [cocoaView respondsToSelector:@selector(qt_qwidget)]) { [cocoaView qt_clearQWidget]; } -- cgit v0.12 From 1cc9c745f09c3399aeccc0f9b8ca07bbbfaf143b Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Thu, 4 Mar 2010 12:01:06 +1000 Subject: Fix namespace qml decleration. Reviewed-by: Andrew den Exter --- src/plugins/qdeclarativemodules/multimedia/multimedia.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp b/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp index e03d8f3..a2e74f4 100644 --- a/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp +++ b/src/plugins/qdeclarativemodules/multimedia/multimedia.cpp @@ -47,11 +47,10 @@ #include "qdeclarativeaudio_p.h" +QML_DECLARE_TYPE(QSoundEffect) QT_BEGIN_NAMESPACE -QML_DECLARE_TYPE(QSoundEffect) - class QMultimediaDeclarativeModule : public QDeclarativeExtensionPlugin { Q_OBJECT -- cgit v0.12 From 1287332bfc1dfb85c59c309d9f2bf37b970013c9 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 4 Mar 2010 12:58:13 +1000 Subject: Document that the views do not set clip: true. Task-number: QT-2942 --- src/declarative/graphicsitems/qdeclarativegridview.cpp | 5 +++++ src/declarative/graphicsitems/qdeclarativelistview.cpp | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 5b313be..7b97dcc 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -697,6 +697,11 @@ void QDeclarativeGridViewPrivate::updateCurrent(int modelIndex) In this case ListModel is a handy way for us to test our UI. In practice the model would be implemented in C++, or perhaps via a SQL data source. + + Note that views do not enabel \e clip automatically. If the view + is not clipped by another item or the screen, it will be necessary + to set \e {clip: true} in order to have the out of view items clipped + nicely. */ QDeclarativeGridView::QDeclarativeGridView(QDeclarativeItem *parent) : QDeclarativeFlickable(*(new QDeclarativeGridViewPrivate), parent) diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index eb5315d..09f8162 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -1359,6 +1359,11 @@ void QDeclarativeListViewPrivate::flickY(qreal velocity) In this case ListModel is a handy way for us to test our UI. In practice the model would be implemented in C++, or perhaps via a SQL data source. + + Note that views do not enabel \e clip automatically. If the view + is not clipped by another item or the screen, it will be necessary + to set \e {clip: true} in order to have the out of view items clipped + nicely. */ QDeclarativeListView::QDeclarativeListView(QDeclarativeItem *parent) -- cgit v0.12 From 08cf6561c4ad2288e385e63d941b60b268cc484e Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 4 Mar 2010 13:05:17 +1000 Subject: Fix spelling. --- src/declarative/graphicsitems/qdeclarativegridview.cpp | 2 +- src/declarative/graphicsitems/qdeclarativelistview.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 7b97dcc..a6f3d8f 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -698,7 +698,7 @@ void QDeclarativeGridViewPrivate::updateCurrent(int modelIndex) In this case ListModel is a handy way for us to test our UI. In practice the model would be implemented in C++, or perhaps via a SQL data source. - Note that views do not enabel \e clip automatically. If the view + Note that views do not enable \e clip automatically. If the view is not clipped by another item or the screen, it will be necessary to set \e {clip: true} in order to have the out of view items clipped nicely. diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 09f8162..a5da424 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -1360,7 +1360,7 @@ void QDeclarativeListViewPrivate::flickY(qreal velocity) In this case ListModel is a handy way for us to test our UI. In practice the model would be implemented in C++, or perhaps via a SQL data source. - Note that views do not enabel \e clip automatically. If the view + Note that views do not enable \e clip automatically. If the view is not clipped by another item or the screen, it will be necessary to set \e {clip: true} in order to have the out of view items clipped nicely. -- cgit v0.12 From afbfc2907b417034a98cf17f5787e0dfe467f737 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 4 Mar 2010 13:29:37 +1000 Subject: Remove unnecessary additional hash of QDeclarativeGridViewAttached --- .../graphicsitems/qdeclarativegridview.cpp | 9 ++++----- .../graphicsitems/qdeclarativegridview_p.h | 19 +++---------------- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index a6f3d8f..b3c5577 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -52,8 +52,6 @@ QT_BEGIN_NAMESPACE -QHash QDeclarativeGridViewAttached::attachedProperties; - //---------------------------------------------------------------------------- @@ -61,8 +59,9 @@ class FxGridItem { public: FxGridItem(QDeclarativeItem *i, QDeclarativeGridView *v) : item(i), view(v) { - attached = QDeclarativeGridViewAttached::properties(item); - attached->m_view = view; + attached = static_cast(qmlAttachedPropertiesObject(item)); + if (attached) + attached->m_view = view; } ~FxGridItem() {} @@ -1748,7 +1747,7 @@ void QDeclarativeGridView::refill() QDeclarativeGridViewAttached *QDeclarativeGridView::qmlAttachedProperties(QObject *obj) { - return QDeclarativeGridViewAttached::properties(obj); + return new QDeclarativeGridViewAttached(obj); } QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qdeclarativegridview_p.h b/src/declarative/graphicsitems/qdeclarativegridview_p.h index d463a46..22fcef6 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview_p.h +++ b/src/declarative/graphicsitems/qdeclarativegridview_p.h @@ -167,9 +167,7 @@ class QDeclarativeGridViewAttached : public QObject public: QDeclarativeGridViewAttached(QObject *parent) : QObject(parent), m_isCurrent(false), m_delayRemove(false) {} - ~QDeclarativeGridViewAttached() { - attachedProperties.remove(parent()); - } + ~QDeclarativeGridViewAttached() {} Q_PROPERTY(QDeclarativeGridView *view READ view CONSTANT) QDeclarativeGridView *view() { return m_view; } @@ -192,15 +190,6 @@ public: } } - static QDeclarativeGridViewAttached *properties(QObject *obj) { - QDeclarativeGridViewAttached *rv = attachedProperties.value(obj); - if (!rv) { - rv = new QDeclarativeGridViewAttached(obj); - attachedProperties.insert(obj, rv); - } - return rv; - } - void emitAdd() { emit add(); } void emitRemove() { emit remove(); } @@ -212,10 +201,8 @@ Q_SIGNALS: public: QDeclarativeGridView *m_view; - bool m_isCurrent; - bool m_delayRemove; - - static QHash attachedProperties; + bool m_isCurrent : 1; + bool m_delayRemove : 1; }; -- cgit v0.12 From c425733907910ad04ed3abdefb5108d682858b12 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Thu, 4 Mar 2010 13:31:33 +1000 Subject: Fix tests failing due to javascript eval errors. --- .../qdeclarativeworkerscript/data/worker.qml | 4 ---- .../tst_qdeclarativeworkerscript.cpp | 20 +++++++++++++------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml b/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml index bb4028f..1fce155 100644 --- a/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml +++ b/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml @@ -12,10 +12,6 @@ WorkerScript { worker.sendMessage(value) } - function testSendLiteral(value) { - eval('worker.sendMessage(' + value +')') - } - function compareLiteralResponse(expected) { var e = eval('(' + expected + ')') return worker.response == e diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp index 9957b50..27ecef4 100644 --- a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp +++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp @@ -48,9 +48,9 @@ #include #include +#include #include "../../../shared/util.h" -Q_DECLARE_METATYPE(QList) Q_DECLARE_METATYPE(QScriptValue) class tst_QDeclarativeWorkerScript : public QObject @@ -86,13 +86,14 @@ void tst_QDeclarativeWorkerScript::source() QFETCH(QUrl, source); QFETCH(bool, valid); - QDeclarativeComponent component(&m_engine); - component.setData("import Qt 4.6\nWorkerScript { source: '" + source.toString().toUtf8() + "'; }", QUrl()); - if (!valid) { QByteArray w = "WorkerScript: Cannot find source file \"" + source.toString().toUtf8() + "\""; QTest::ignoreMessage(QtWarningMsg, w.constData()); } + + QDeclarativeComponent component(&m_engine); + component.setData("import Qt 4.6\nWorkerScript { source: '" + source.toString().toUtf8() + "'; }", QUrl()); + QDeclarativeWorkerScript *item = qobject_cast(component.create()); QVERIFY(item != 0); @@ -169,9 +170,15 @@ void tst_QDeclarativeWorkerScript::messaging_sendJsObject() QDeclarativeWorkerScript *worker = qobject_cast(component.create()); QVERIFY(worker != 0); - QString jsObject = "{'spell power': 3101, 'haste': 1125}"; + QString jsObject = "{'name': 'zyz', 'spell power': 3101, 'haste': 1125}"; - QVERIFY(QMetaObject::invokeMethod(worker, "testSendLiteral", Q_ARG(QVariant, jsObject))); + QScriptEngine *engine = QDeclarativeEnginePrivate::getScriptEngine(qmlEngine(worker)); + QScriptValue sv = engine->newObject(); + sv.setProperty("name", "zyz"); + sv.setProperty("spell power", 3101); + sv.setProperty("haste", 1125); + + QVERIFY(QMetaObject::invokeMethod(worker, "testSend", Q_ARG(QVariant, qVariantFromValue(sv)))); waitForEchoMessage(worker); QVariant result = qVariantFromValue(false); @@ -185,4 +192,3 @@ void tst_QDeclarativeWorkerScript::messaging_sendJsObject() QTEST_MAIN(tst_QDeclarativeWorkerScript) #include "tst_qdeclarativeworkerscript.moc" - -- cgit v0.12 From 8047d8f2e63df60b5ea3f6fd02568658c3d19fc6 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 4 Mar 2010 14:39:18 +1000 Subject: Documented view behavior when items are removed from start of view. Task-number: QTBUG-7694 --- src/declarative/graphicsitems/qdeclarativegridview.cpp | 12 ++++++++++++ src/declarative/graphicsitems/qdeclarativelistview.cpp | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index b3c5577..463b238 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -1340,6 +1340,18 @@ void QDeclarativeGridView::moveCurrentIndexRight() } } +/*! + \qmlmethod GridView::positionViewAtIndex(int index) + + Positions the view such that the \a index is at the top (or left for horizontal orientation) of the view. + If positioning the view at the index would cause empty space to be displayed at + the end of the view, the view will be positioned at the end. + + It is not recommended to use contentX or contentY to position the view + at a particular index. This is unreliable since removing items from the start + of the list does not cause all other items to be repositioned. + The correct way to bring an item into view is with positionViewAtIndex. +*/ void QDeclarativeGridView::positionViewAtIndex(int index) { Q_D(QDeclarativeGridView); diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index a5da424..32627da 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -2286,6 +2286,12 @@ void QDeclarativeListView::decrementCurrentIndex() Positions the view such that the \a index is at the top (or left for horizontal orientation) of the view. If positioning the view at the index would cause empty space to be displayed at the end of the view, the view will be positioned at the end. + + It is not recommended to use contentX or contentY to position the view + at a particular index. This is unreliable since removing items from the start + of the list does not cause all other items to be repositioned, and because + the actual start of the view can vary based on the size of the delegates. + The correct way to bring an item into view is with positionViewAtIndex. */ void QDeclarativeListView::positionViewAtIndex(int index) { -- cgit v0.12 From eda079761194a96783cdb8d49c79eb2c9c0b7dac Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 4 Mar 2010 14:49:20 +1000 Subject: Compile without QVariant::EasingCurve in Qt 4.6.2. --- src/declarative/qml/qdeclarativecompiler.cpp | 2 +- src/declarative/qml/qdeclarativeenginedebug.cpp | 4 +-- .../qml/qdeclarativeobjectscriptclass.cpp | 2 +- src/declarative/qml/qdeclarativeproperty.cpp | 6 ++-- src/declarative/qml/qdeclarativevaluetype.cpp | 41 ++++++++++++++++++++++ src/declarative/qml/qdeclarativevaluetype_p.h | 9 ++++- src/declarative/util/qdeclarativeanimation.cpp | 8 +++-- 7 files changed, 61 insertions(+), 11 deletions(-) diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 1eea012..b07a85a 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -1792,7 +1792,7 @@ bool QDeclarativeCompiler::buildGroupedProperty(QDeclarativeParser::Property *pr if (prop->values.count()) COMPILE_EXCEPTION(prop->values.first(), QCoreApplication::translate("QDeclarativeCompiler", "Invalid value in grouped property")); - if (prop->type < (int)QVariant::UserType) { + if (QDeclarativeValueTypeFactory::isValueType(prop->type)) { QDeclarativeEnginePrivate *ep = static_cast(QObjectPrivate::get(engine)); if (prop->type >= 0 /* QVariant == -1 */ && ep->valueTypes[prop->type]) { diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/qml/qdeclarativeenginedebug.cpp index 09882cb..3e4acbe 100644 --- a/src/declarative/qml/qdeclarativeenginedebug.cpp +++ b/src/declarative/qml/qdeclarativeenginedebug.cpp @@ -117,7 +117,7 @@ QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx) QVariant value = prop.read(obj); rv.value = valueContents(value); - if (QVariant::Type(prop.userType()) < QVariant::UserType) { + if (QDeclarativeValueTypeFactory::isValueType(prop.userType())) { rv.type = QDeclarativeObjectProperty::Basic; } else if (QDeclarativeMetaType::isQObject(prop.userType())) { rv.type = QDeclarativeObjectProperty::Object; @@ -131,7 +131,7 @@ QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx) QVariant QDeclarativeEngineDebugServer::valueContents(const QVariant &value) const { int userType = value.userType(); - if (QVariant::Type(userType) < QVariant::UserType) + if (QDeclarativeValueTypeFactory::isValueType(userType)) return value; /* diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp index 542f417..2e4ffa7 100644 --- a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp +++ b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp @@ -232,7 +232,7 @@ QDeclarativeObjectScriptClass::property(QObject *obj, const Identifier &name) QDeclarativeEnginePrivate::CapturedProperty(obj, lastData->coreIndex, lastData->notifyIndex); } - if ((uint)lastData->propType < QVariant::UserType) { + if (QDeclarativeValueTypeFactory::isValueType((uint)lastData->propType)) { QDeclarativeValueType *valueType = enginePriv->valueTypes[lastData->propType]; if (valueType) return Value(scriptEngine, enginePriv->valueTypeClass->newObject(obj, lastData->coreIndex, valueType)); diff --git a/src/declarative/qml/qdeclarativeproperty.cpp b/src/declarative/qml/qdeclarativeproperty.cpp index 521c241..4f73b89 100644 --- a/src/declarative/qml/qdeclarativeproperty.cpp +++ b/src/declarative/qml/qdeclarativeproperty.cpp @@ -238,10 +238,10 @@ void QDeclarativePropertyPrivate::initProperty(QObject *obj, const QString &name if (property->flags & QDeclarativePropertyCache::Data::IsFunction) return; // Not an object property - if (ii == (path.count() - 2) && property->propType < (int)QVariant::UserType) { + if (ii == (path.count() - 2) && QDeclarativeValueTypeFactory::isValueType(property->propType)) { // We're now at a value type property. We can use a global valuetypes array as we // never actually use the objects, just look up their properties. - QObject *typeObject = qmlValueTypes()->valueTypes[property->propType]; + QObject *typeObject = (*qmlValueTypes())[property->propType]; if (!typeObject) return; // Not a value type int idx = typeObject->metaObject()->indexOfProperty(path.last().toUtf8().constData()); @@ -346,7 +346,7 @@ QDeclarativePropertyPrivate::propertyTypeCategory() const int type = propertyType(); if (type == QVariant::Invalid) return QDeclarativeProperty::InvalidCategory; - else if ((uint)type < QVariant::UserType) + else if (QDeclarativeValueTypeFactory::isValueType((uint)type)) return QDeclarativeProperty::Normal; else if (core.flags & QDeclarativePropertyCache::Data::IsQObjectDerived) return QDeclarativeProperty::Object; diff --git a/src/declarative/qml/qdeclarativevaluetype.cpp b/src/declarative/qml/qdeclarativevaluetype.cpp index 01fa214..34d3795 100644 --- a/src/declarative/qml/qdeclarativevaluetype.cpp +++ b/src/declarative/qml/qdeclarativevaluetype.cpp @@ -45,19 +45,50 @@ QT_BEGIN_NAMESPACE +#if (QT_VERSION < QT_VERSION_CHECK(4,7,0)) +Q_DECLARE_METATYPE(QEasingCurve); +#endif + QDeclarativeValueTypeFactory::QDeclarativeValueTypeFactory() { // ### Optimize for (unsigned int ii = 0; ii < (QVariant::UserType - 1); ++ii) valueTypes[ii] = valueType(ii); +#if (QT_VERSION < QT_VERSION_CHECK(4,7,0)) + easingType = qMetaTypeId(); + easingValueType = valueType(easingType); +#endif } QDeclarativeValueTypeFactory::~QDeclarativeValueTypeFactory() { for (unsigned int ii = 0; ii < (QVariant::UserType - 1); ++ii) delete valueTypes[ii]; +#if (QT_VERSION < QT_VERSION_CHECK(4,7,0)) + delete easingValueType; +#endif +} + +bool QDeclarativeValueTypeFactory::isValueType(int idx) +{ + if ((uint)idx < QVariant::UserType) + return true; +#if (QT_VERSION < QT_VERSION_CHECK(4,7,0)) + if (idx == qMetaTypeId()) + return true; +#endif + return false; } +QDeclarativeValueType *QDeclarativeValueTypeFactory::operator[](int idx) const +{ +#if (QT_VERSION < QT_VERSION_CHECK(4,7,0)) + if (idx == easingType) return easingValueType; +#endif + return valueTypes[idx]; +} + + QDeclarativeValueType *QDeclarativeValueTypeFactory::valueType(int t) { switch (t) { @@ -75,11 +106,17 @@ QDeclarativeValueType *QDeclarativeValueTypeFactory::valueType(int t) return new QDeclarativeRectFValueType; case QVariant::Vector3D: return new QDeclarativeVector3DValueType; +#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0)) case QVariant::EasingCurve: return new QDeclarativeEasingValueType; +#endif case QVariant::Font: return new QDeclarativeFontValueType; default: +#if (QT_VERSION < QT_VERSION_CHECK(4,7,0)) + if (t == qMetaTypeId()) + return new QDeclarativeEasingValueType; +#endif return 0; } } @@ -495,7 +532,11 @@ void QDeclarativeEasingValueType::write(QObject *obj, int idx, QDeclarativePrope QVariant QDeclarativeEasingValueType::value() { +#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0)) return QVariant(easing); +#else + return QVariant::fromValue(easing); +#endif } void QDeclarativeEasingValueType::setValue(QVariant value) diff --git a/src/declarative/qml/qdeclarativevaluetype_p.h b/src/declarative/qml/qdeclarativevaluetype_p.h index cb153be..e69f161 100644 --- a/src/declarative/qml/qdeclarativevaluetype_p.h +++ b/src/declarative/qml/qdeclarativevaluetype_p.h @@ -81,10 +81,17 @@ class Q_DECLARATIVE_EXPORT QDeclarativeValueTypeFactory public: QDeclarativeValueTypeFactory(); ~QDeclarativeValueTypeFactory(); + static bool isValueType(int); static QDeclarativeValueType *valueType(int); + QDeclarativeValueType *operator[](int idx) const; + +private: QDeclarativeValueType *valueTypes[QVariant::UserType - 1]; - QDeclarativeValueType *operator[](int idx) const { return valueTypes[idx]; } +#if (QT_VERSION < QT_VERSION_CHECK(4,7,0)) + int easingType; + QDeclarativeValueType *easingValueType; +#endif }; class Q_AUTOTEST_EXPORT QDeclarativePointFValueType : public QDeclarativeValueType diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index b14de19..f33d7c7 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include @@ -1710,12 +1711,13 @@ void QDeclarativePropertyAnimationPrivate::convertVariant(QVariant &variant, int break; } default: - if ((uint)type >= QVariant::UserType) { + if (QDeclarativeValueTypeFactory::isValueType((uint)type)) { + variant.convert((QVariant::Type)type); + } else { QDeclarativeMetaType::StringConverter converter = QDeclarativeMetaType::customStringConverter(type); if (converter) variant = converter(variant.toString()); - } else - variant.convert((QVariant::Type)type); + } break; } } -- cgit v0.12 From c24280aef0962c4a45f9fa6c927b2df3a5f34245 Mon Sep 17 00:00:00 2001 From: Dmytro Poplavskiy Date: Thu, 4 Mar 2010 14:57:43 +1000 Subject: Added QMediaPlayer::StreamPlayback flag to query/select backend capable of playing from QIODevice based stream. --- src/multimedia/base/qmediaserviceprovider.cpp | 43 ++++++++++--- src/multimedia/base/qmediaserviceprovider.h | 3 +- src/multimedia/playback/qmediaplayer.cpp | 18 +++++- src/multimedia/playback/qmediaplayer.h | 3 +- .../tst_qmediaserviceprovider.cpp | 72 ++++++++++++++++++++++ 5 files changed, 125 insertions(+), 14 deletions(-) diff --git a/src/multimedia/base/qmediaserviceprovider.cpp b/src/multimedia/base/qmediaserviceprovider.cpp index d51d682..6e11079 100644 --- a/src/multimedia/base/qmediaserviceprovider.cpp +++ b/src/multimedia/base/qmediaserviceprovider.cpp @@ -102,6 +102,9 @@ public: \value RecordingSupport The service provides audio or video recording functions. + + \value StreamPlayback + The service is capable of playing QIODevice based streams. */ /*! @@ -396,14 +399,25 @@ public: QMediaServiceSupportedFormatsInterface *iface = qobject_cast(obj); - //if low latency playback was asked, skip services known - //not to provide low latency playback - if (flags & QMediaPlayer::LowLatency) { + + if (flags) { QMediaServiceFeaturesInterface *iface = qobject_cast(obj); - if (iface && !(iface->supportedFeatures(serviceType) & QMediaServiceProviderHint::LowLatencyPlayback)) - continue; + if (iface) { + QMediaServiceProviderHint::Features features = iface->supportedFeatures(serviceType); + + //if low latency playback was asked, skip services known + //not to provide low latency playback + if ((flags & QMediaPlayer::LowLatency) && + !(features & QMediaServiceProviderHint::LowLatencyPlayback)) + continue; + + //the same for QIODevice based streams support + if ((flags & QMediaPlayer::StreamPlayback) && + !(features & QMediaServiceProviderHint::StreamPlayback)) + continue; + } } if (iface) @@ -434,14 +448,25 @@ public: QMediaServiceSupportedFormatsInterface *iface = qobject_cast(obj); - // If low latency playback was asked for, skip MIME types from services known - // not to provide low latency playback + if (flags & QMediaPlayer::LowLatency) { QMediaServiceFeaturesInterface *iface = qobject_cast(obj); - if (iface && !(iface->supportedFeatures(serviceType) & QMediaServiceProviderHint::LowLatencyPlayback)) - continue; + if (iface) { + QMediaServiceProviderHint::Features features = iface->supportedFeatures(serviceType); + + // If low latency playback was asked for, skip MIME types from services known + // not to provide low latency playback + if ((flags & QMediaPlayer::LowLatency) && + !(features & QMediaServiceProviderHint::LowLatencyPlayback)) + continue; + + //the same for QIODevice based streams support + if ((flags & QMediaPlayer::StreamPlayback) && + !(features & QMediaServiceProviderHint::StreamPlayback)) + continue; + } } if (iface) { diff --git a/src/multimedia/base/qmediaserviceprovider.h b/src/multimedia/base/qmediaserviceprovider.h index 2ee0ae4..6e31493 100644 --- a/src/multimedia/base/qmediaserviceprovider.h +++ b/src/multimedia/base/qmediaserviceprovider.h @@ -64,7 +64,8 @@ public: enum Feature { LowLatencyPlayback = 0x01, - RecordingSupport = 0x02 + RecordingSupport = 0x02, + StreamPlayback = 0x04 }; Q_DECLARE_FLAGS(Features, Feature) diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp index 27bff02..8056878 100644 --- a/src/multimedia/playback/qmediaplayer.cpp +++ b/src/multimedia/playback/qmediaplayer.cpp @@ -243,10 +243,17 @@ void QMediaPlayerPrivate::_q_playlistDestroyed() static QMediaService *playerService(QMediaPlayer::Flags flags, QMediaServiceProvider *provider) { - if (flags && QMediaPlayer::LowLatency) + if (flags) { + QMediaServiceProviderHint::Features features = 0; + if (flags & QMediaPlayer::LowLatency) + features |= QMediaServiceProviderHint::LowLatencyPlayback; + + if (flags & QMediaPlayer::StreamPlayback) + features |= QMediaServiceProviderHint::StreamPlayback; + return provider->requestService(Q_MEDIASERVICE_MEDIAPLAYER, - QMediaServiceProviderHint(QMediaServiceProviderHint::LowLatencyPlayback)); - else + QMediaServiceProviderHint(features)); + } else return provider->requestService(Q_MEDIASERVICE_MEDIAPLAYER); } @@ -945,6 +952,11 @@ QStringList QMediaPlayer::supportedMimeTypes(Flags flags) The player is expected to be used with simple audio formats, but playback should start without significant delay. Such playback service can be used for beeps, ringtones, etc. + + \value StreamPlayback + The player is expected to play QIODevice based streams. + If passed to QMediaPlayer constructor, the service supporting + streams playback will be choosen. */ QT_END_NAMESPACE diff --git a/src/multimedia/playback/qmediaplayer.h b/src/multimedia/playback/qmediaplayer.h index 1b761ce..129b244 100644 --- a/src/multimedia/playback/qmediaplayer.h +++ b/src/multimedia/playback/qmediaplayer.h @@ -99,7 +99,8 @@ public: enum Flag { - LowLatency = 0x01 + LowLatency = 0x01, + StreamPlayback = 0x02 }; Q_DECLARE_FLAGS(Flags, Flag) diff --git a/tests/auto/qmediaserviceprovider/tst_qmediaserviceprovider.cpp b/tests/auto/qmediaserviceprovider/tst_qmediaserviceprovider.cpp index 9bca189..d839fe5 100644 --- a/tests/auto/qmediaserviceprovider/tst_qmediaserviceprovider.cpp +++ b/tests/auto/qmediaserviceprovider/tst_qmediaserviceprovider.cpp @@ -213,6 +213,57 @@ public: } }; +class MockServicePlugin4 : public QMediaServiceProviderPlugin, + public QMediaServiceSupportedFormatsInterface, + public QMediaServiceFeaturesInterface +{ + Q_OBJECT + Q_INTERFACES(QMediaServiceSupportedFormatsInterface) + Q_INTERFACES(QMediaServiceFeaturesInterface) +public: + QStringList keys() const + { + return QStringList() << QLatin1String(Q_MEDIASERVICE_MEDIAPLAYER); + } + + QMediaService* create(QString const& key) + { + if (keys().contains(key)) + return new MockMediaService("MockServicePlugin4"); + else + return 0; + } + + void release(QMediaService *service) + { + delete service; + } + + QtMultimedia::SupportEstimate hasSupport(const QString &mimeType, const QStringList& codecs) const + { + if (codecs.contains(QLatin1String("jpeg2000"))) + return QtMultimedia::NotSupported; + + if (supportedMimeTypes().contains(mimeType)) + return QtMultimedia::ProbablySupported; + + return QtMultimedia::MaybeSupported; + } + + QStringList supportedMimeTypes() const + { + return QStringList() << "video/mp4" << "video/quicktime"; + } + + QMediaServiceProviderHint::Features supportedFeatures(const QByteArray &service) const + { + if (service == QByteArray(Q_MEDIASERVICE_MEDIAPLAYER)) + return QMediaServiceProviderHint::StreamPlayback; + else + return 0; + } +}; + class MockMediaServiceProvider : public QMediaServiceProvider @@ -253,6 +304,7 @@ void tst_QMediaServiceProvider::initTestCase() plugins << new MockServicePlugin1; plugins << new MockServicePlugin2; plugins << new MockServicePlugin3; + plugins << new MockServicePlugin4; QMediaPluginLoader::setStaticPlugins(QLatin1String("/mediaservices"), plugins); } @@ -312,12 +364,32 @@ void tst_QMediaServiceProvider::testHasSupport() QCOMPARE(QMediaPlayer::hasSupport("audio/ogg"), QtMultimedia::ProbablySupported); QCOMPARE(QMediaPlayer::hasSupport("audio/wav"), QtMultimedia::ProbablySupported); + //test low latency flag support + QCOMPARE(QMediaPlayer::hasSupport("audio/wav", QStringList(), QMediaPlayer::LowLatency), + QtMultimedia::ProbablySupported); + //plugin1 probably supports audio/ogg, it checked because it doesn't provide features iface + QCOMPARE(QMediaPlayer::hasSupport("audio/ogg", QStringList(), QMediaPlayer::LowLatency), + QtMultimedia::ProbablySupported); + //Plugin4 is not checked here, sine it's known not support low latency + QCOMPARE(QMediaPlayer::hasSupport("video/quicktime", QStringList(), QMediaPlayer::LowLatency), + QtMultimedia::MaybeSupported); + + //test streaming flag support + QCOMPARE(QMediaPlayer::hasSupport("video/quicktime", QStringList(), QMediaPlayer::StreamPlayback), + QtMultimedia::ProbablySupported); + //Plugin2 is not checked here, sine it's known not support streaming + QCOMPARE(QMediaPlayer::hasSupport("audio/wav", QStringList(), QMediaPlayer::StreamPlayback), + QtMultimedia::MaybeSupported); + //ensure the correct media player plugin is choosen for mime type QMediaPlayer simplePlayer(0, QMediaPlayer::LowLatency); QCOMPARE(simplePlayer.service()->objectName(), QLatin1String("MockServicePlugin2")); QMediaPlayer mediaPlayer; QVERIFY(mediaPlayer.service()->objectName() != QLatin1String("MockServicePlugin2")); + + QMediaPlayer streamPlayer(0, QMediaPlayer::StreamPlayback); + QCOMPARE(streamPlayer.service()->objectName(), QLatin1String("MockServicePlugin4")); } void tst_QMediaServiceProvider::testSupportedMimeTypes() -- cgit v0.12 From e86dc3cbc40824353688db52d9933af26a30aaa0 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 4 Mar 2010 15:19:09 +1000 Subject: QDeclarativeContext::contextProperty() should also access ids QT-2800 --- src/declarative/qml/qdeclarativecontext.cpp | 5 ++++- .../qdeclarativecontext/tst_qdeclarativecontext.cpp | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/declarative/qml/qdeclarativecontext.cpp b/src/declarative/qml/qdeclarativecontext.cpp index 35e7a77..f70e143 100644 --- a/src/declarative/qml/qdeclarativecontext.cpp +++ b/src/declarative/qml/qdeclarativecontext.cpp @@ -484,7 +484,10 @@ QVariant QDeclarativeContext::contextProperty(const QString &name) const if (!value.isValid() && parentContext()) value = parentContext()->contextProperty(name); } else { - value = d->propertyValues[idx]; + if (idx >= d->propertyValues.count()) + value = QVariant::fromValue(d->idValues[idx - d->propertyValues.count()].data()); + else + value = d->propertyValues[idx]; } return value; diff --git a/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp b/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp index 5f03989..f0117f5 100644 --- a/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp +++ b/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp @@ -60,6 +60,7 @@ private slots: void setContextProperty(); void addDefaultObject(); void destruction(); + void idAsContextProperty(); private: QDeclarativeEngine engine; @@ -429,6 +430,25 @@ void tst_qdeclarativecontext::destruction() QCOMPARE(ctxt, expr.context()); } +void tst_qdeclarativecontext::idAsContextProperty() +{ + QDeclarativeComponent component(&engine); + component.setData("import Qt 4.6; QtObject { property var a; a: QtObject { id: myObject } }", QUrl()); + + QObject *obj = component.create(); + QVERIFY(obj); + + QVariant a = obj->property("a"); + QVERIFY(a.userType() == QMetaType::QObjectStar); + + QVariant ctxt = qmlContext(obj)->contextProperty("myObject"); + QVERIFY(ctxt.userType() == QMetaType::QObjectStar); + + QVERIFY(a == ctxt); + + delete obj; +} + QTEST_MAIN(tst_qdeclarativecontext) #include "tst_qdeclarativecontext.moc" -- cgit v0.12 From 0559b8d2af9f1f9277ff3bedd9a33cca7e255abb Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 4 Mar 2010 13:54:23 +1000 Subject: Signal handler requires exactly one value. Don't crash on invalid "PropertyAnimation on onClicked" --- src/declarative/qml/qdeclarativecompiler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index b07a85a..7a3dde9 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -1342,7 +1342,7 @@ bool QDeclarativeCompiler::buildSignal(QDeclarativeParser::Property *prop, QDecl } else { - if (prop->value || prop->values.count() > 1) + if (prop->value || prop->values.count() != 1) COMPILE_EXCEPTION(prop, QCoreApplication::translate("QDeclarativeCompiler","Incorrectly specified signal")); prop->index = sigIdx; -- cgit v0.12 From 78254634c87f8e1b9c79841d87c530d3af8c9734 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 4 Mar 2010 14:57:40 +1000 Subject: Add formatting functions to QML's global Qt object. The plan is for these to replace DateTimeFormatter. --- doc/src/declarative/globalobject.qdoc | 76 ++++++++++++++++++++++ src/declarative/qml/qdeclarativeengine.cpp | 65 ++++++++++++++++++ src/declarative/qml/qdeclarativeengine_p.h | 4 ++ .../declarative/qdeclarativeqt/data/formatting.qml | 19 ++++++ .../qdeclarativeqt/tst_qdeclarativeqt.cpp | 29 +++++++++ 5 files changed, 193 insertions(+) create mode 100644 tests/auto/declarative/qdeclarativeqt/data/formatting.qml diff --git a/doc/src/declarative/globalobject.qdoc b/doc/src/declarative/globalobject.qdoc index c718a6d..a8a07d2 100644 --- a/doc/src/declarative/globalobject.qdoc +++ b/doc/src/declarative/globalobject.qdoc @@ -87,6 +87,82 @@ This function returns a Point with the specified \c x and \c y coordinates. This function returns as Size with the specified \c width and \c height. \section3 Qt.vector3d(real x, real y, real z) This function returns a Vector3D with the specified \c x, \c y and \c z. + +\section2 Formatters +The Qt object contains several functions for formatting dates and times. + +\section3 Qt.formatDate(datetime date, variant format) +This function returns the string representation of \c date, formatted according to \c format. +\section3 Qt.formatTime(datetime time, variant format) +This function returns the string representation of \c time, formatted according to \c format. +\section3 Qt.formatDateTime(datetime dateTime, variant format) +This function returns the string representation of \c dateTime, formatted according to \c format. + +\c format for the above formatting functions can be specified as follows. + + These expressions may be used for the date: + + \table + \header \i Expression \i Output + \row \i d \i the day as number without a leading zero (1 to 31) + \row \i dd \i the day as number with a leading zero (01 to 31) + \row \i ddd + \i the abbreviated localized day name (e.g. 'Mon' to 'Sun'). + Uses QDate::shortDayName(). + \row \i dddd + \i the long localized day name (e.g. 'Monday' to 'Qt::Sunday'). + Uses QDate::longDayName(). + \row \i M \i the month as number without a leading zero (1-12) + \row \i MM \i the month as number with a leading zero (01-12) + \row \i MMM + \i the abbreviated localized month name (e.g. 'Jan' to 'Dec'). + Uses QDate::shortMonthName(). + \row \i MMMM + \i the long localized month name (e.g. 'January' to 'December'). + Uses QDate::longMonthName(). + \row \i yy \i the year as two digit number (00-99) + \row \i yyyy \i the year as four digit number + \endtable + + These expressions may be used for the time: + + \table + \header \i Expression \i Output + \row \i h + \i the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display) + \row \i hh + \i the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display) + \row \i m \i the minute without a leading zero (0 to 59) + \row \i mm \i the minute with a leading zero (00 to 59) + \row \i s \i the second without a leading zero (0 to 59) + \row \i ss \i the second with a leading zero (00 to 59) + \row \i z \i the milliseconds without leading zeroes (0 to 999) + \row \i zzz \i the milliseconds with leading zeroes (000 to 999) + \row \i AP + \i use AM/PM display. \e AP will be replaced by either "AM" or "PM". + \row \i ap + \i use am/pm display. \e ap will be replaced by either "am" or "pm". + \endtable + + All other input characters will be ignored. Any sequence of characters that + are enclosed in singlequotes will be treated as text and not be used as an + expression. Two consecutive singlequotes ("''") are replaced by a singlequote + in the output. + + Example format strings (assumed that the date and time is 21 May 2001 + 14:13:09): + + \table + \header \i Format \i Result + \row \i dd.MM.yyyy \i 21.05.2001 + \row \i ddd MMMM d yy \i Tue May 21 01 + \row \i hh:mm:ss.zzz \i 14:13:09.042 + \row \i h:m:s ap \i 2:13:9 pm + \endtable + +If no format is specified the locale's short format is used. Alternatively, you can specify +\c Qt.DefaultLocaleLongDate to get the locale's long format. + \section2 Functions The Qt object also contains the following miscellaneous functions which expose Qt functionality for use in QML. diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index bd67b0b..20bbf86 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -236,6 +236,11 @@ QDeclarativeScriptEngine::QDeclarativeScriptEngine(QDeclarativeEnginePrivate *pr qtObject.setProperty(QLatin1String("tint"), newFunction(QDeclarativeEnginePrivate::tint, 2)); } + //date/time formatting + qtObject.setProperty(QLatin1String("formatDate"),newFunction(QDeclarativeEnginePrivate::formatDate, 2)); + qtObject.setProperty(QLatin1String("formatTime"),newFunction(QDeclarativeEnginePrivate::formatTime, 2)); + qtObject.setProperty(QLatin1String("formatDateTime"),newFunction(QDeclarativeEnginePrivate::formatDateTime, 2)); + //misc methods qtObject.setProperty(QLatin1String("closestAngle"), newFunction(QDeclarativeEnginePrivate::closestAngle, 2)); qtObject.setProperty(QLatin1String("playSound"), newFunction(QDeclarativeEnginePrivate::playSound, 1)); @@ -936,6 +941,66 @@ QScriptValue QDeclarativeEnginePrivate::vector(QScriptContext *ctxt, QScriptEngi return engine->newVariant(qVariantFromValue(QVector3D(x, y, z))); } +QScriptValue QDeclarativeEnginePrivate::formatDate(QScriptContext*ctxt, QScriptEngine*engine) +{ + int argCount = ctxt->argumentCount(); + if(argCount == 0 || argCount > 2) + return engine->nullValue(); + + QDate date = ctxt->argument(0).toDateTime().date(); + Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate; + if (argCount == 2) { + if (ctxt->argument(1).isString()) { + QString format = ctxt->argument(1).toString(); + return engine->newVariant(qVariantFromValue(date.toString(format))); + } else if (ctxt->argument(1).isNumber()) { + enumFormat = Qt::DateFormat(ctxt->argument(1).toInteger()); + } else + return engine->nullValue(); + } + return engine->newVariant(qVariantFromValue(date.toString(enumFormat))); +} + +QScriptValue QDeclarativeEnginePrivate::formatTime(QScriptContext*ctxt, QScriptEngine*engine) +{ + int argCount = ctxt->argumentCount(); + if(argCount == 0 || argCount > 2) + return engine->nullValue(); + + QTime date = ctxt->argument(0).toDateTime().time(); + Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate; + if (argCount == 2) { + if (ctxt->argument(1).isString()) { + QString format = ctxt->argument(1).toString(); + return engine->newVariant(qVariantFromValue(date.toString(format))); + } else if (ctxt->argument(1).isNumber()) { + enumFormat = Qt::DateFormat(ctxt->argument(1).toInteger()); + } else + return engine->nullValue(); + } + return engine->newVariant(qVariantFromValue(date.toString(enumFormat))); +} + +QScriptValue QDeclarativeEnginePrivate::formatDateTime(QScriptContext*ctxt, QScriptEngine*engine) +{ + int argCount = ctxt->argumentCount(); + if(argCount == 0 || argCount > 2) + return engine->nullValue(); + + QDateTime date = ctxt->argument(0).toDateTime(); + Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate; + if (argCount == 2) { + if (ctxt->argument(1).isString()) { + QString format = ctxt->argument(1).toString(); + return engine->newVariant(qVariantFromValue(date.toString(format))); + } else if (ctxt->argument(1).isNumber()) { + enumFormat = Qt::DateFormat(ctxt->argument(1).toInteger()); + } else + return engine->nullValue(); + } + return engine->newVariant(qVariantFromValue(date.toString(enumFormat))); +} + QScriptValue QDeclarativeEnginePrivate::rgba(QScriptContext *ctxt, QScriptEngine *engine) { int argCount = ctxt->argumentCount(); diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h index d3eb583..a9ba73a 100644 --- a/src/declarative/qml/qdeclarativeengine_p.h +++ b/src/declarative/qml/qdeclarativeengine_p.h @@ -327,6 +327,10 @@ public: static QScriptValue consoleLog(QScriptContext*, QScriptEngine*); static QScriptValue quit(QScriptContext*, QScriptEngine*); + static QScriptValue formatDate(QScriptContext*, QScriptEngine*); + static QScriptValue formatTime(QScriptContext*, QScriptEngine*); + static QScriptValue formatDateTime(QScriptContext*, QScriptEngine*); + static QScriptEngine *getScriptEngine(QDeclarativeEngine *e) { return &e->d_func()->scriptEngine; } static QDeclarativeEngine *getEngine(QScriptEngine *e) { return static_cast(e)->p->q_func(); } static QDeclarativeEnginePrivate *get(QDeclarativeEngine *e) { return e->d_func(); } diff --git a/tests/auto/declarative/qdeclarativeqt/data/formatting.qml b/tests/auto/declarative/qdeclarativeqt/data/formatting.qml new file mode 100644 index 0000000..e62749a --- /dev/null +++ b/tests/auto/declarative/qdeclarativeqt/data/formatting.qml @@ -0,0 +1,19 @@ +import Qt 4.6 + +QtObject { + property date date1: "2008-12-24" + property string test1: Qt.formatDate(date1) + property string test2: Qt.formatDate(date1, Qt.DefaultLocaleLongDate) + property string test3: Qt.formatDate(date1, "ddd MMMM d yy") + + property var time1: new Date(0,0,0,14,15,38,200) + property string test4: Qt.formatTime(time1) + property string test5: Qt.formatTime(time1, Qt.DefaultLocaleLongDate) + property string test6: Qt.formatTime(time1, "H:m:s a") + property string test7: Qt.formatTime(time1, "hh:mm:ss.zzz") + + property var dateTime1: new Date(1978,2,4,9,13,54) + property string test8: Qt.formatDateTime(dateTime1) + property string test9: Qt.formatDateTime(dateTime1, Qt.DefaultLocaleLongDate) + property string test10: Qt.formatDateTime(dateTime1, "M/d/yy H:m:s a") +} diff --git a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp index 9ec6872..484cbd4 100644 --- a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp +++ b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp @@ -73,6 +73,7 @@ private slots: void createComponent(); void createQmlObject(); void consoleLog(); + void formatting(); private: QDeclarativeEngine engine; @@ -364,6 +365,34 @@ void tst_qdeclarativeqt::consoleLog() delete object; } +void tst_qdeclarativeqt::formatting() +{ + QDeclarativeComponent component(&engine, TEST_FILE("formatting.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QDate date1(2008,12,24); + QCOMPARE(object->property("date1").toDate(), date1); + QCOMPARE(object->property("test1").toString(), date1.toString(Qt::DefaultLocaleShortDate)); + QCOMPARE(object->property("test2").toString(), date1.toString(Qt::DefaultLocaleLongDate)); + QCOMPARE(object->property("test3").toString(), date1.toString("ddd MMMM d yy")); + + QTime time1(14,15,38,200); + QCOMPARE(object->property("time1").toTime(), time1); + QCOMPARE(object->property("test4").toString(), time1.toString(Qt::DefaultLocaleShortDate)); + QCOMPARE(object->property("test5").toString(), time1.toString(Qt::DefaultLocaleLongDate)); + QCOMPARE(object->property("test6").toString(), time1.toString("H:m:s a")); + QCOMPARE(object->property("test7").toString(), time1.toString("hh:mm:ss.zzz")); + + QDateTime dateTime1(QDate(1978,03,04),QTime(9,13,54)); + QCOMPARE(object->property("dateTime1").toDateTime(),dateTime1); + QCOMPARE(object->property("test8").toString(), dateTime1.toString(Qt::DefaultLocaleShortDate)); + QCOMPARE(object->property("test9").toString(), dateTime1.toString(Qt::DefaultLocaleLongDate)); + QCOMPARE(object->property("test10").toString(), dateTime1.toString("M/d/yy H:m:s a")); + + delete object; +} + QTEST_MAIN(tst_qdeclarativeqt) #include "tst_qdeclarativeqt.moc" -- cgit v0.12 From ce5b682b481e2da6fe12e2c57c4780edbfb2fb54 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 4 Mar 2010 15:19:45 +1000 Subject: Remove Qt.playSound() Use SoundEffect instead. --- doc/src/declarative/globalobject.qdoc | 3 --- examples/declarative/tvtennis/tvtennis.qml | 12 +++++++---- src/declarative/QmlChanges.txt | 1 + src/declarative/qml/qdeclarativeengine.cpp | 25 ---------------------- src/declarative/qml/qdeclarativeengine_p.h | 1 - .../qdeclarativeqt/tst_qdeclarativeqt.cpp | 7 ------ 6 files changed, 9 insertions(+), 40 deletions(-) diff --git a/doc/src/declarative/globalobject.qdoc b/doc/src/declarative/globalobject.qdoc index a8a07d2..4b1c7d3 100644 --- a/doc/src/declarative/globalobject.qdoc +++ b/doc/src/declarative/globalobject.qdoc @@ -195,9 +195,6 @@ while the following would rotate myItem clockwise from 350 degrees to 370 degree NumberAnimation { target: myItem; property: "rotation"; from: 350; to: Qt.closetAngle(350, 10) } \endqml -\section3 Qt.playSound(url soundLocation) -This function plays the audio file located at \c soundLocation. Only .wav files are supported. - \section3 Qt.openUrlExternally(url target) This function attempts to open the specified \c target url in an external application, based on the user's desktop preferences. It will return true if it succeeds, and false otherwise. diff --git a/examples/declarative/tvtennis/tvtennis.qml b/examples/declarative/tvtennis/tvtennis.qml index 1585c7b..6022a15 100644 --- a/examples/declarative/tvtennis/tvtennis.qml +++ b/examples/declarative/tvtennis/tvtennis.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import Qt.multimedia 4.7 Rectangle { id: page @@ -15,14 +16,17 @@ Rectangle { color: "Lime" x: 20; width: 20; height: 20; z: 1 + SoundEffect { id: paddle; source: "paddle.wav" } + SoundEffect { id: wall; source: "click.wav" } + // Move the ball to the right and back to the left repeatedly SequentialAnimation on x { repeat: true NumberAnimation { to: page.width - 40; duration: 2000 } - ScriptAction { script: Qt.playSound('paddle.wav') } + ScriptAction { script: paddle.play() } PropertyAction { target: ball; property: "direction"; value: "left" } NumberAnimation { to: 20; duration: 2000 } - ScriptAction { script: Qt.playSound('paddle.wav') } + ScriptAction { script: paddle.play() } PropertyAction { target: ball; property: "direction"; value: "right" } } @@ -32,10 +36,10 @@ Rectangle { // Detect the ball hitting the top or bottom of the view and bounce it onYChanged: { if (y <= 0) { - Qt.playSound('click.wav'); + wall.play(); targetY = page.height - 20; } else if (y >= page.height - 20) { - Qt.playSound('click.wav'); + wall.play(); targetY = 0; } } diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt index 4951cb3..6e77abf 100644 --- a/src/declarative/QmlChanges.txt +++ b/src/declarative/QmlChanges.txt @@ -6,6 +6,7 @@ Flickable: renamed viewportHeight -> contentHeight Flickable: renamed viewportX -> contentX Flickable: renamed viewportY -> contentY Removed Flickable.reportedVelocitySmoothing +Removed Qt.playSound (replaced by SoundEffect element) Renamed MouseRegion -> MouseArea Connection: syntax and rename: Connection { sender: a; signal: foo(); script: xxx } diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 20bbf86..1711cf1 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -243,7 +243,6 @@ QDeclarativeScriptEngine::QDeclarativeScriptEngine(QDeclarativeEnginePrivate *pr //misc methods qtObject.setProperty(QLatin1String("closestAngle"), newFunction(QDeclarativeEnginePrivate::closestAngle, 2)); - qtObject.setProperty(QLatin1String("playSound"), newFunction(QDeclarativeEnginePrivate::playSound, 1)); qtObject.setProperty(QLatin1String("openUrlExternally"),newFunction(QDeclarativeEnginePrivate::desktopOpenUrl, 1)); qtObject.setProperty(QLatin1String("md5"),newFunction(QDeclarativeEnginePrivate::md5, 1)); qtObject.setProperty(QLatin1String("btoa"),newFunction(QDeclarativeEnginePrivate::btoa, 1)); @@ -1105,30 +1104,6 @@ QScriptValue QDeclarativeEnginePrivate::darker(QScriptContext *ctxt, QScriptEngi return qScriptValueFromValue(engine, qVariantFromValue(color)); } -QScriptValue QDeclarativeEnginePrivate::playSound(QScriptContext *ctxt, QScriptEngine *engine) -{ - if (ctxt->argumentCount() != 1) - return engine->undefinedValue(); - - QUrl url(ctxt->argument(0).toString()); - - QDeclarativeEnginePrivate *enginePriv = QDeclarativeEnginePrivate::get(engine); - if (url.isRelative()) { - QDeclarativeContext *context = enginePriv->getContext(ctxt); - if (!context) - return engine->undefinedValue(); - - url = context->resolvedUrl(url); - } - - if (url.scheme() == QLatin1String("file")) { - - QSound::play(url.toLocalFile()); - - } - return engine->undefinedValue(); -} - QScriptValue QDeclarativeEnginePrivate::desktopOpenUrl(QScriptContext *ctxt, QScriptEngine *e) { if(ctxt->argumentCount() < 1) diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h index a9ba73a..459a325 100644 --- a/src/declarative/qml/qdeclarativeengine_p.h +++ b/src/declarative/qml/qdeclarativeengine_p.h @@ -319,7 +319,6 @@ public: static QScriptValue tint(QScriptContext*, QScriptEngine*); static QScriptValue closestAngle(QScriptContext*, QScriptEngine*); - static QScriptValue playSound(QScriptContext*, QScriptEngine*); static QScriptValue desktopOpenUrl(QScriptContext*, QScriptEngine*); static QScriptValue md5(QScriptContext*, QScriptEngine*); static QScriptValue btoa(QScriptContext*, QScriptEngine*); diff --git a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp index 484cbd4..90afd4e 100644 --- a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp +++ b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp @@ -67,7 +67,6 @@ private slots: void darker(); void tint(); void closestAngle(); - void playSound(); void openUrlExternally(); void md5(); void createComponent(); @@ -280,12 +279,6 @@ void tst_qdeclarativeqt::closestAngle() delete object; } -void tst_qdeclarativeqt::playSound() -{ - QEXPECT_FAIL("", "How do we test this?", Abort); - QVERIFY(false); -} - void tst_qdeclarativeqt::openUrlExternally() { QEXPECT_FAIL("", "How do we test this?", Abort); -- cgit v0.12 From 1e7b2415bf1bc853655e0a85a8cb21ecd24b149e Mon Sep 17 00:00:00 2001 From: Aaron McCarthy Date: Thu, 4 Mar 2010 15:22:31 +1000 Subject: Updating polling mechanism for bearer management engines. Improves the polling mechanism by sharing a single timer for all poll based engines. Updates are only performed for a poll based engine iff a QNetworkConfigurationManager object has been constructed or a QNetworkConfiguration is held externally from the engine. --- src/network/bearer/qbearerengine.cpp | 38 +++++++++ src/network/bearer/qbearerengine_p.h | 3 + src/network/bearer/qnetworkconfigmanager.cpp | 8 +- src/network/bearer/qnetworkconfigmanager_p.cpp | 90 ++++++++++++++++++++-- src/network/bearer/qnetworkconfigmanager_p.h | 15 +++- src/plugins/bearer/corewlan/qcorewlanengine.h | 3 +- src/plugins/bearer/corewlan/qcorewlanengine.mm | 10 ++- src/plugins/bearer/generic/qgenericengine.cpp | 14 ++-- src/plugins/bearer/generic/qgenericengine.h | 3 +- .../bearer/nativewifi/qnativewifiengine.cpp | 13 ++-- src/plugins/bearer/nativewifi/qnativewifiengine.h | 4 +- 11 files changed, 173 insertions(+), 28 deletions(-) diff --git a/src/network/bearer/qbearerengine.cpp b/src/network/bearer/qbearerengine.cpp index eb851cc..c42e2d2 100644 --- a/src/network/bearer/qbearerengine.cpp +++ b/src/network/bearer/qbearerengine.cpp @@ -70,6 +70,44 @@ QBearerEngine::~QBearerEngine() } } +bool QBearerEngine::requiresPolling() const +{ + return false; +} + +/* + Returns true if configurations are in use; otherwise returns false. + + If configurations are in use and requiresPolling() returns true, polling will be enabled for + this engine. +*/ +bool QBearerEngine::configurationsInUse() const +{ + QHash::ConstIterator it; + QHash::ConstIterator end; + + QMutexLocker locker(&mutex); + + for (it = accessPointConfigurations.begin(), + end = accessPointConfigurations.end(); it != end; ++it) { + if (it.value()->ref > 1) + return true; + } + + for (it = snapConfigurations.begin(), end = snapConfigurations.end(); it != end; ++it) { + if (it.value()->ref > 1) + return true; + } + + for (it = userChoiceConfigurations.begin(), + end = userChoiceConfigurations.end(); it != end; ++it) { + if (it.value()->ref > 1) + return true; + } + + return false; +} + #include "moc_qbearerengine_p.cpp" QT_END_NAMESPACE diff --git a/src/network/bearer/qbearerengine_p.h b/src/network/bearer/qbearerengine_p.h index 5e12b0f..028c174 100644 --- a/src/network/bearer/qbearerengine_p.h +++ b/src/network/bearer/qbearerengine_p.h @@ -89,6 +89,9 @@ public: virtual QNetworkConfigurationPrivatePointer defaultConfiguration() = 0; + virtual bool requiresPolling() const; + bool configurationsInUse() const; + Q_SIGNALS: void configurationAdded(QNetworkConfigurationPrivatePointer config); void configurationRemoved(QNetworkConfigurationPrivatePointer config); diff --git a/src/network/bearer/qnetworkconfigmanager.cpp b/src/network/bearer/qnetworkconfigmanager.cpp index 9ff197b..0eb9c63 100644 --- a/src/network/bearer/qnetworkconfigmanager.cpp +++ b/src/network/bearer/qnetworkconfigmanager.cpp @@ -174,7 +174,8 @@ QNetworkConfigurationManagerPrivate *qNetworkConfigurationManagerPrivate() QNetworkConfigurationManager::QNetworkConfigurationManager( QObject* parent ) : QObject(parent) { - QNetworkConfigurationManagerPrivate* priv = connManager(); + QNetworkConfigurationManagerPrivate *priv = connManager(); + connect(priv, SIGNAL(configurationAdded(QNetworkConfiguration)), this, SIGNAL(configurationAdded(QNetworkConfiguration))); connect(priv, SIGNAL(configurationRemoved(QNetworkConfiguration)), @@ -185,6 +186,8 @@ QNetworkConfigurationManager::QNetworkConfigurationManager( QObject* parent ) this, SIGNAL(onlineStateChanged(bool))); connect(priv, SIGNAL(configurationChanged(QNetworkConfiguration)), this, SIGNAL(configurationChanged(QNetworkConfiguration))); + + priv->enablePolling(); } /*! @@ -192,6 +195,9 @@ QNetworkConfigurationManager::QNetworkConfigurationManager( QObject* parent ) */ QNetworkConfigurationManager::~QNetworkConfigurationManager() { + QNetworkConfigurationManagerPrivate *priv = connManager(); + + priv->disablePolling(); } diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp index 1ac10c5..9740424 100644 --- a/src/network/bearer/qnetworkconfigmanager_p.cpp +++ b/src/network/bearer/qnetworkconfigmanager_p.cpp @@ -55,7 +55,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, (QBearerEngineFactoryInterface_iid, QLatin1String("/bearer"))) QNetworkConfigurationManagerPrivate::QNetworkConfigurationManagerPrivate() -: capFlags(0), mutex(QMutex::Recursive), firstUpdate(true) +: capFlags(0), mutex(QMutex::Recursive), pollTimer(0), forcedPolling(0), firstUpdate(true) { updateConfigurations(); @@ -82,7 +82,7 @@ void QNetworkConfigurationManagerPrivate::configurationAdded(QNetworkConfigurati } if (ptr->state == QNetworkConfiguration::Active) { - onlineConfigurations.insert(ptr); + onlineConfigurations.insert(ptr->id); if (!firstUpdate && onlineConfigurations.count() == 1) emit onlineStateChanged(true); } @@ -100,7 +100,7 @@ void QNetworkConfigurationManagerPrivate::configurationRemoved(QNetworkConfigura emit configurationRemoved(item); } - onlineConfigurations.remove(ptr); + onlineConfigurations.remove(ptr->id); if (!firstUpdate && onlineConfigurations.isEmpty()) emit onlineStateChanged(false); } @@ -118,9 +118,9 @@ void QNetworkConfigurationManagerPrivate::configurationChanged(QNetworkConfigura bool previous = !onlineConfigurations.isEmpty(); if (ptr->state == QNetworkConfiguration::Active) - onlineConfigurations.insert(ptr); + onlineConfigurations.insert(ptr->id); else - onlineConfigurations.remove(ptr); + onlineConfigurations.remove(ptr->id); bool online = !onlineConfigurations.isEmpty(); @@ -133,6 +133,9 @@ void QNetworkConfigurationManagerPrivate::updateConfigurations() QMutexLocker locker(&mutex); if (firstUpdate) { + if (sender()) + return; + updating = false; QFactoryLoader *l = loader(); @@ -161,6 +164,8 @@ void QNetworkConfigurationManagerPrivate::updateConfigurations() this, SLOT(configurationChanged(QNetworkConfigurationPrivatePointer))); capFlags |= engine->capabilities(); + + engine->requestUpdate(); } } @@ -180,6 +185,15 @@ void QNetworkConfigurationManagerPrivate::updateConfigurations() emit configurationUpdateComplete(); } + if (engine && !pollingEngines.isEmpty()) { + int index = sessionEngines.indexOf(engine); + if (index >= 0) + pollingEngines.remove(index); + + if (pollingEngines.isEmpty()) + startPolling(); + } + if (firstUpdate) firstUpdate = false; } @@ -208,4 +222,70 @@ QList QNetworkConfigurationManagerPrivate::engines() return sessionEngines; } +void QNetworkConfigurationManagerPrivate::startPolling() +{ + QMutexLocker locker(&mutex); + + bool pollingRequired = false; + + if (forcedPolling > 0) { + foreach (QBearerEngine *engine, sessionEngines) { + if (engine->requiresPolling()) { + pollingRequired = true; + break; + } + } + } + + if (!pollingRequired) { + foreach (QBearerEngine *engine, sessionEngines) { + if (engine->configurationsInUse()) { + pollingRequired = true; + break; + } + } + } + + if (pollingRequired) { + if (!pollTimer) { + pollTimer = new QTimer(this); + pollTimer->setInterval(10000); + pollTimer->setSingleShot(true); + connect(pollTimer, SIGNAL(timeout()), this, SLOT(pollEngines())); + } + + pollTimer->start(); + } +} + +void QNetworkConfigurationManagerPrivate::pollEngines() +{ + QMutexLocker locker(&mutex); + + for (int i = 0; i < sessionEngines.count(); ++i) { + if ((forcedPolling && sessionEngines.at(i)->requiresPolling()) || + sessionEngines.at(i)->configurationsInUse()) { + pollingEngines.insert(i); + sessionEngines.at(i)->requestUpdate(); + } + } +} + +void QNetworkConfigurationManagerPrivate::enablePolling() +{ + QMutexLocker locker(&mutex); + + ++forcedPolling; + + if (forcedPolling == 1) + startPolling(); +} + +void QNetworkConfigurationManagerPrivate::disablePolling() +{ + QMutexLocker locker(&mutex); + + --forcedPolling; +} + QT_END_NAMESPACE diff --git a/src/network/bearer/qnetworkconfigmanager_p.h b/src/network/bearer/qnetworkconfigmanager_p.h index c7e988e..ac8518c 100644 --- a/src/network/bearer/qnetworkconfigmanager_p.h +++ b/src/network/bearer/qnetworkconfigmanager_p.h @@ -61,6 +61,7 @@ QT_BEGIN_NAMESPACE class QBearerEngine; +class QTimer; class Q_NETWORK_EXPORT QNetworkConfigurationManagerPrivate : public QObject { @@ -77,6 +78,11 @@ public: QList engines(); + void startPolling(); + + void enablePolling(); + void disablePolling(); + public slots: void updateConfigurations(); @@ -92,19 +98,26 @@ Q_SIGNALS: private: QMutex mutex; + QTimer *pollTimer; + QList sessionEngines; - QSet onlineConfigurations; + QSet onlineConfigurations; QSet updatingEngines; bool updating; + QSet pollingEngines; + int forcedPolling; + bool firstUpdate; private Q_SLOTS: void configurationAdded(QNetworkConfigurationPrivatePointer ptr); void configurationRemoved(QNetworkConfigurationPrivatePointer ptr); void configurationChanged(QNetworkConfigurationPrivatePointer ptr); + + void pollEngines(); }; Q_NETWORK_EXPORT QNetworkConfigurationManagerPrivate *qNetworkConfigurationManagerPrivate(); diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.h b/src/plugins/bearer/corewlan/qcorewlanengine.h index cfd89e4..3289ffb 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.h +++ b/src/plugins/bearer/corewlan/qcorewlanengine.h @@ -80,13 +80,14 @@ public: bool getAllScInterfaces(); + bool requiresPolling() const; + private Q_SLOTS: void doRequestUpdate(); private: bool isWifiReady(const QString &dev); QMap configurationInterface; - QTimer pollTimer; QStringList scanForSsids(const QString &interfaceName); bool isKnownSsid(const QString &interfaceName, const QString &ssid); diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm index 598d2f0..5870b01 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.mm +++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm @@ -243,8 +243,7 @@ void QCoreWlanEngine::requestUpdate() { QMutexLocker locker(&mutex); - pollTimer.stop(); - QTimer::singleShot(0, this, SLOT(doRequestUpdate())); + doRequestUpdate(); } void QCoreWlanEngine::doRequestUpdate() @@ -343,8 +342,6 @@ void QCoreWlanEngine::doRequestUpdate() emit configurationRemoved(ptr); } - pollTimer.start(); - emit updateCompleted(); } @@ -610,4 +607,9 @@ QNetworkConfigurationPrivatePointer QCoreWlanEngine::defaultConfiguration() return QNetworkConfigurationPrivatePointer(); } +bool QCoreWlanEngine::requiresPolling() const +{ + return true; +} + QT_END_NAMESPACE diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp index e6c871d..a9e78b2 100644 --- a/src/plugins/bearer/generic/qgenericengine.cpp +++ b/src/plugins/bearer/generic/qgenericengine.cpp @@ -142,9 +142,6 @@ static QString qGetInterfaceType(const QString &interface) QGenericEngine::QGenericEngine(QObject *parent) : QBearerEngineImpl(parent) { - connect(&pollTimer, SIGNAL(timeout()), this, SLOT(doRequestUpdate())); - pollTimer.setInterval(10000); - doRequestUpdate(); } QGenericEngine::~QGenericEngine() @@ -179,8 +176,7 @@ void QGenericEngine::requestUpdate() { QMutexLocker locker(&mutex); - pollTimer.stop(); - QTimer::singleShot(0, this, SLOT(doRequestUpdate())); + doRequestUpdate(); } void QGenericEngine::doRequestUpdate() @@ -282,8 +278,6 @@ void QGenericEngine::doRequestUpdate() emit configurationRemoved(ptr); } - pollTimer.start(); - emit updateCompleted(); } @@ -328,5 +322,11 @@ QNetworkConfigurationPrivatePointer QGenericEngine::defaultConfiguration() return QNetworkConfigurationPrivatePointer(); } + +bool QGenericEngine::requiresPolling() const +{ + return true; +} + QT_END_NAMESPACE diff --git a/src/plugins/bearer/generic/qgenericengine.h b/src/plugins/bearer/generic/qgenericengine.h index cd9a976..a1b9167 100644 --- a/src/plugins/bearer/generic/qgenericengine.h +++ b/src/plugins/bearer/generic/qgenericengine.h @@ -78,12 +78,13 @@ public: QNetworkConfigurationPrivatePointer defaultConfiguration(); + bool requiresPolling() const; + private Q_SLOTS: void doRequestUpdate(); private: QMap configurationInterface; - QTimer pollTimer; }; QT_END_NAMESPACE diff --git a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp index c8015d8..ec2da00 100644 --- a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp +++ b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp @@ -95,10 +95,6 @@ QNativeWifiEngine::QNativeWifiEngine(QObject *parent) if (result != ERROR_SUCCESS) qWarning("%s: WlanRegisterNotification failed with error %ld\n", __FUNCTION__, result); - // On Windows XP SP2 and SP3 only connection and disconnection notifications are available. - // We need to poll for changes in available wireless networks. - connect(&pollTimer, SIGNAL(timeout()), this, SLOT(scanComplete())); - pollTimer.setInterval(10000); scanComplete(); } @@ -222,8 +218,6 @@ void QNativeWifiEngine::scanComplete() emit configurationRemoved(ptr); } - pollTimer.start(); - emit updateCompleted(); } @@ -492,4 +486,11 @@ QNetworkConfigurationPrivatePointer QNativeWifiEngine::defaultConfiguration() return QNetworkConfigurationPrivatePointer(); } +bool QNativeWifiEngine::requiresPolling() const +{ + // On Windows XP SP2 and SP3 only connection and disconnection notifications are available. + // We need to poll for changes in available wireless networks. + return true; +} + QT_END_NAMESPACE diff --git a/src/plugins/bearer/nativewifi/qnativewifiengine.h b/src/plugins/bearer/nativewifi/qnativewifiengine.h index a9a9375..56489b6 100644 --- a/src/plugins/bearer/nativewifi/qnativewifiengine.h +++ b/src/plugins/bearer/nativewifi/qnativewifiengine.h @@ -90,12 +90,12 @@ public: inline bool available() const { return handle != 0; } + bool requiresPolling() const; + public Q_SLOTS: void scanComplete(); private: - QTimer pollTimer; - Qt::HANDLE handle; }; -- cgit v0.12 From 84709f178dde24d4926f0222b6ce0ab692eeba67 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 4 Mar 2010 15:29:43 +1000 Subject: Fix ListView contentHeight calculation. Task-number: QT-2630 --- src/declarative/graphicsitems/qdeclarativelistview.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 32627da..18d3661 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -223,7 +223,7 @@ public: if (!visibleItems.isEmpty()) { pos = (*visibleItems.constBegin())->position(); if (visibleIndex > 0) - pos -= visibleIndex * (averageSize + spacing) - spacing; + pos -= visibleIndex * (averageSize + spacing); } return pos; } @@ -2414,7 +2414,8 @@ void QDeclarativeListView::itemsInserted(int modelIndex, int count) int i = d->visibleItems.count() - 1; while (i > 0 && d->visibleItems.at(i)->index == -1) --i; - if (d->visibleItems.at(i)->index + 1 == modelIndex) { + if (d->visibleItems.at(i)->index + 1 == modelIndex + && d->visibleItems.at(i)->endPosition() < d->buffer+d->position()+d->size()-1) { // Special case of appending an item to the model. modelIndex = d->visibleIndex + d->visibleItems.count(); } else { -- cgit v0.12 From 5599ddd113fe1385e7a6aff708e12af419b8de87 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 4 Mar 2010 15:41:00 +1000 Subject: Don't mess with highlight size if highlightFollowsCurrentItem is false. Task-number: QT-2630 --- src/declarative/graphicsitems/qdeclarativelistview.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 18d3661..cd8d143 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -799,10 +799,13 @@ void QDeclarativeListViewPrivate::createHighlight() if (item) { item->setParent(q->viewport()); highlight = new FxListItem(item, q); - if (orient == QDeclarativeListView::Vertical) - highlight->item->setHeight(currentItem->item->height()); - else - highlight->item->setWidth(currentItem->item->width()); + if (currentItem && autoHighlight) { + if (orient == QDeclarativeListView::Vertical) { + highlight->item->setHeight(currentItem->item->height()); + } else { + highlight->item->setWidth(currentItem->item->width()); + } + } const QLatin1String posProp(orient == QDeclarativeListView::Vertical ? "y" : "x"); highlightPosAnimator = new QDeclarativeEaseFollow(q); highlightPosAnimator->setTarget(QDeclarativeProperty(highlight->item, posProp)); -- cgit v0.12 From b0323ac9e117397509de898b21d63767eddfb289 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Thu, 4 Mar 2010 16:01:58 +1000 Subject: Fixed duplicate entry for windowsmobile in tests/auto/*.pro --- tests/auto/gui.pro | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/auto/gui.pro b/tests/auto/gui.pro index f79420f..a4ed04a 100644 --- a/tests/auto/gui.pro +++ b/tests/auto/gui.pro @@ -210,7 +210,6 @@ SUBDIRS=\ qwsinputmethod \ qwswindowsystem \ qx11info \ - windowsmobile \ win32:SUBDIRS -= qtextpiecetable -- cgit v0.12 From 57d68b06c15f8426c25e357f97b9154056969e0f Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 4 Mar 2010 16:04:15 +1000 Subject: Improve grouped property error messages QT-2579 --- src/declarative/qml/qdeclarativecompiler.cpp | 15 ++++++++++++--- src/declarative/qml/qdeclarativeparser.cpp | 4 ++-- src/declarative/qml/qdeclarativeparser_p.h | 7 ++++++- src/declarative/qml/qdeclarativescriptparser.cpp | 4 ++-- .../qdeclarativelanguage/data/defaultGrouped.errors.txt | 2 +- .../data/invalidGroupedProperty.10.errors.txt | 1 + .../data/invalidGroupedProperty.10.qml | 7 +++++++ .../data/invalidGroupedProperty.8.errors.txt | 1 + .../data/invalidGroupedProperty.8.qml | 6 ++++++ .../data/invalidGroupedProperty.9.errors.txt | 1 + .../data/invalidGroupedProperty.9.qml | 6 ++++++ .../qdeclarativelanguage/tst_qdeclarativelanguage.cpp | 3 +++ 12 files changed, 48 insertions(+), 9 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.qml diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 7a3dde9..32c746f 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -1789,13 +1789,19 @@ bool QDeclarativeCompiler::buildGroupedProperty(QDeclarativeParser::Property *pr Q_ASSERT(prop->type != 0); Q_ASSERT(prop->index != -1); - if (prop->values.count()) - COMPILE_EXCEPTION(prop->values.first(), QCoreApplication::translate("QDeclarativeCompiler", "Invalid value in grouped property")); - if (QDeclarativeValueTypeFactory::isValueType(prop->type)) { QDeclarativeEnginePrivate *ep = static_cast(QObjectPrivate::get(engine)); if (prop->type >= 0 /* QVariant == -1 */ && ep->valueTypes[prop->type]) { + + if (prop->values.count()) { + if (prop->values.at(0)->location < prop->value->location) { + COMPILE_EXCEPTION(prop->value, QCoreApplication::translate("QDeclarativeCompiler", "Property has already been assigned a value")); + } else { + COMPILE_EXCEPTION(prop->values.at(0), QCoreApplication::translate("QDeclarativeCompiler", "Property has already been assigned a value")); + } + } + COMPILE_CHECK(buildValueTypeProperty(ep->valueTypes[prop->type], prop->value, obj, ctxt.incr())); obj->addValueTypeProperty(prop); @@ -1810,6 +1816,9 @@ bool QDeclarativeCompiler::buildGroupedProperty(QDeclarativeParser::Property *pr if (!prop->value->metatype) COMPILE_EXCEPTION(prop, QCoreApplication::translate("QDeclarativeCompiler","Invalid grouped property access")); + if (prop->values.count()) + COMPILE_EXCEPTION(prop->values.at(0), QCoreApplication::translate("QDeclarativeCompiler", "Cannot assign a value directly to a grouped property")); + obj->addGroupedProperty(prop); COMPILE_CHECK(buildSubObject(prop->value, ctxt.incr())); diff --git a/src/declarative/qml/qdeclarativeparser.cpp b/src/declarative/qml/qdeclarativeparser.cpp index 0e3d856..b0599ad 100644 --- a/src/declarative/qml/qdeclarativeparser.cpp +++ b/src/declarative/qml/qdeclarativeparser.cpp @@ -226,9 +226,9 @@ QDeclarativeParser::Property::~Property() if (value) value->release(); } -Object *QDeclarativeParser::Property::getValue() +Object *QDeclarativeParser::Property::getValue(const LocationSpan &l) { - if (!value) value = new Object; + if (!value) { value = new Object; value->location = l; } return value; } diff --git a/src/declarative/qml/qdeclarativeparser_p.h b/src/declarative/qml/qdeclarativeparser_p.h index d0d7de1..5bf4b68 100644 --- a/src/declarative/qml/qdeclarativeparser_p.h +++ b/src/declarative/qml/qdeclarativeparser_p.h @@ -104,6 +104,11 @@ namespace QDeclarativeParser Location start; Location end; LocationRange range; + + bool operator<(LocationSpan &o) const { + return (start.line < o.start.line) || + (start.line == o.start.line && start.column < o.start.column); + } }; class Property; @@ -318,7 +323,7 @@ namespace QDeclarativeParser // The Object to which this property is attached Object *parent; - Object *getValue(); + Object *getValue(const LocationSpan &); void addValue(Value *v); void addOnValue(Value *v); diff --git a/src/declarative/qml/qdeclarativescriptparser.cpp b/src/declarative/qml/qdeclarativescriptparser.cpp index a4b3668..fe516c5 100644 --- a/src/declarative/qml/qdeclarativescriptparser.cpp +++ b/src/declarative/qml/qdeclarativescriptparser.cpp @@ -85,8 +85,8 @@ class ProcessAST: protected AST::Visitor { const State &state = top(); if (state.property) { - State s(state.property->getValue(), - state.property->getValue()->getProperty(name.toUtf8())); + State s(state.property->getValue(location), + state.property->getValue(location)->getProperty(name.toUtf8())); s.property->location = location; push(s); } else { diff --git a/tests/auto/declarative/qdeclarativelanguage/data/defaultGrouped.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/defaultGrouped.errors.txt index 945d51b..32055f6 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/defaultGrouped.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/defaultGrouped.errors.txt @@ -1 +1 @@ -7:9:Invalid value in grouped property +7:9:Cannot assign a value directly to a grouped property diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.errors.txt new file mode 100644 index 0000000..1fcb1b6 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.errors.txt @@ -0,0 +1 @@ +4:14:Cannot assign a value directly to a grouped property diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.qml new file mode 100644 index 0000000..41aa3e2 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + grouped: "10x10" + grouped.value: 10 +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.errors.txt new file mode 100644 index 0000000..fa0da21 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.errors.txt @@ -0,0 +1 @@ +5:19:Property has already been assigned a value diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.qml new file mode 100644 index 0000000..56fca9b --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + pointProperty: "10x10" + pointProperty.x: 10 +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.errors.txt new file mode 100644 index 0000000..6d837a7 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.errors.txt @@ -0,0 +1 @@ +5:20:Property has already been assigned a value diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.qml new file mode 100644 index 0000000..982ab26 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + pointProperty.x: 10 + pointProperty: "10x10" +} diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index 5d480fa..28daf29 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -255,6 +255,9 @@ void tst_qdeclarativelanguage::errors_data() QTest::newRow("invalidGroupedProperty.5") << "invalidGroupedProperty.5.qml" << "invalidGroupedProperty.5.errors.txt" << false; QTest::newRow("invalidGroupedProperty.6") << "invalidGroupedProperty.6.qml" << "invalidGroupedProperty.6.errors.txt" << false; QTest::newRow("invalidGroupedProperty.7") << "invalidGroupedProperty.7.qml" << "invalidGroupedProperty.7.errors.txt" << true; + QTest::newRow("invalidGroupedProperty.8") << "invalidGroupedProperty.8.qml" << "invalidGroupedProperty.8.errors.txt" << false; + QTest::newRow("invalidGroupedProperty.9") << "invalidGroupedProperty.9.qml" << "invalidGroupedProperty.9.errors.txt" << false; + QTest::newRow("invalidGroupedProperty.10") << "invalidGroupedProperty.10.qml" << "invalidGroupedProperty.10.errors.txt" << false; QTest::newRow("importNamespaceConflict") << "importNamespaceConflict.qml" << "importNamespaceConflict.errors.txt" << false; QTest::newRow("importVersionMissing (builtin)") << "importVersionMissingBuiltIn.qml" << "importVersionMissingBuiltIn.errors.txt" << false; -- cgit v0.12 From c329db551237906cc659f3276c679d0e573edff2 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 4 Mar 2010 16:31:06 +1000 Subject: Fix grammar stringifying "on" as "readonly" QTBUG-8676 --- src/declarative/qml/parser/qdeclarativejs.g | 2 +- src/declarative/qml/parser/qdeclarativejsgrammar.cpp | 2 +- src/declarative/qml/parser/qdeclarativejsgrammar_p.h | 4 ++-- src/declarative/qml/parser/qdeclarativejsparser.cpp | 2 +- .../qdeclarativelanguage/data/customOnProperty.qml | 7 +++++++ .../qdeclarativelanguage/tst_qdeclarativelanguage.cpp | 15 +++++++++++++++ 6 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/customOnProperty.qml diff --git a/src/declarative/qml/parser/qdeclarativejs.g b/src/declarative/qml/parser/qdeclarativejs.g index 7cf81b2..493ad25 100644 --- a/src/declarative/qml/parser/qdeclarativejs.g +++ b/src/declarative/qml/parser/qdeclarativejs.g @@ -1020,7 +1020,7 @@ case $rule_number: { JsIdentifier: T_ON ; /. case $rule_number: { - QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_READONLY]); + QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_ON]); sym(1).sval = driver->intern(s.constData(), s.length()); break; } diff --git a/src/declarative/qml/parser/qdeclarativejsgrammar.cpp b/src/declarative/qml/parser/qdeclarativejsgrammar.cpp index 0677bc5..89493ff 100644 --- a/src/declarative/qml/parser/qdeclarativejsgrammar.cpp +++ b/src/declarative/qml/parser/qdeclarativejsgrammar.cpp @@ -4,7 +4,7 @@ ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** -** This file is part of the QtDeclarative module of the Qt Toolkit. +** This file is part of the QtCore module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage diff --git a/src/declarative/qml/parser/qdeclarativejsgrammar_p.h b/src/declarative/qml/parser/qdeclarativejsgrammar_p.h index 2b2e3d1..32bb12b 100644 --- a/src/declarative/qml/parser/qdeclarativejsgrammar_p.h +++ b/src/declarative/qml/parser/qdeclarativejsgrammar_p.h @@ -4,7 +4,7 @@ ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** -** This file is part of the QtDeclarative module of the Qt Toolkit. +** This file is part of the QtCore module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage @@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE class QDeclarativeJSGrammar { public: - enum { + enum VariousConstants { EOF_SYMBOL = 0, REDUCE_HERE = 100, SHIFT_THERE = 99, diff --git a/src/declarative/qml/parser/qdeclarativejsparser.cpp b/src/declarative/qml/parser/qdeclarativejsparser.cpp index fd9e690..c86e047 100644 --- a/src/declarative/qml/parser/qdeclarativejsparser.cpp +++ b/src/declarative/qml/parser/qdeclarativejsparser.cpp @@ -516,7 +516,7 @@ case 66: { } case 67: { - QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_READONLY]); + QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_ON]); sym(1).sval = driver->intern(s.constData(), s.length()); break; } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/customOnProperty.qml b/tests/auto/declarative/qdeclarativelanguage/data/customOnProperty.qml new file mode 100644 index 0000000..7cd6a83 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/customOnProperty.qml @@ -0,0 +1,7 @@ +import Qt 4.6 + +QtObject { + property int on + + Component.onCompleted: on = 10 +} diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index 28daf29..a339a6d 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -128,6 +128,8 @@ private slots: void qmlAttachedPropertiesObjectMethod(); + void customOnProperty(); + // regression tests for crashes void crash1(); void crash2(); @@ -1397,6 +1399,19 @@ void tst_qdeclarativelanguage::crash2() QDeclarativeComponent component(&engine, TEST_FILE("crash2.qml")); } +// QTBUG-8676 +void tst_qdeclarativelanguage::customOnProperty() +{ + QDeclarativeComponent component(&engine, TEST_FILE("customOnProperty.qml")); + + VERIFY_ERRORS(0); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("on").toInt(), 10); + + delete object; +} void tst_qdeclarativelanguage::initTestCase() { -- cgit v0.12 From e3fb16c08a0b219703c6d3ca47d0c62bafdd013c Mon Sep 17 00:00:00 2001 From: Bill King Date: Thu, 4 Mar 2010 16:35:07 +1000 Subject: SqlBrowser not respecting casings. A previous fix broke assumed behaviour. Make it do the correct thing, ie we know the casing, so quote it to tell the system leave it be. Task-number: QTBUG-4001 --- demos/sqlbrowser/browser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demos/sqlbrowser/browser.cpp b/demos/sqlbrowser/browser.cpp index 6aed73a..1232428 100644 --- a/demos/sqlbrowser/browser.cpp +++ b/demos/sqlbrowser/browser.cpp @@ -146,7 +146,7 @@ void Browser::showTable(const QString &t) { QSqlTableModel *model = new QSqlTableModel(table, connectionWidget->currentDatabase()); model->setEditStrategy(QSqlTableModel::OnRowChange); - model->setTable(t); + model->setTable(connectionWidget->currentDatabase().driver()->escapeIdentifier(t, QSqlDriver::TableName)); model->select(); if (model->lastError().type() != QSqlError::NoError) emit statusMessage(model->lastError().text()); -- cgit v0.12 From ff40702d547088266a09adb2d1b5d9a270334d21 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 4 Mar 2010 16:54:38 +1000 Subject: Move the multimedia files to the correct place. --- src/imports/multimedia/qdeclarativeaudio.cpp | 327 +++++++ src/imports/multimedia/qdeclarativeaudio_p.h | 173 ++++ src/imports/multimedia/qdeclarativemediabase.cpp | 413 +++++++++ src/imports/multimedia/qdeclarativemediabase_p.h | 168 ++++ src/imports/multimedia/qdeclarativevideo.cpp | 945 +++++++++++++++++++++ src/imports/multimedia/qdeclarativevideo_p.h | 204 +++++ .../multimedia/qmetadatacontrolmetaobject.cpp | 362 ++++++++ .../multimedia/qmetadatacontrolmetaobject_p.h | 92 ++ .../multimedia/qdeclarativeaudio.cpp | 327 ------- .../multimedia/qdeclarativeaudio_p.h | 173 ---- .../multimedia/qdeclarativemediabase.cpp | 413 --------- .../multimedia/qdeclarativemediabase_p.h | 168 ---- .../multimedia/qdeclarativevideo.cpp | 945 --------------------- .../multimedia/qdeclarativevideo_p.h | 204 ----- .../multimedia/qmetadatacontrolmetaobject.cpp | 362 -------- .../multimedia/qmetadatacontrolmetaobject_p.h | 92 -- 16 files changed, 2684 insertions(+), 2684 deletions(-) create mode 100644 src/imports/multimedia/qdeclarativeaudio.cpp create mode 100644 src/imports/multimedia/qdeclarativeaudio_p.h create mode 100644 src/imports/multimedia/qdeclarativemediabase.cpp create mode 100644 src/imports/multimedia/qdeclarativemediabase_p.h create mode 100644 src/imports/multimedia/qdeclarativevideo.cpp create mode 100644 src/imports/multimedia/qdeclarativevideo_p.h create mode 100644 src/imports/multimedia/qmetadatacontrolmetaobject.cpp create mode 100644 src/imports/multimedia/qmetadatacontrolmetaobject_p.h delete mode 100644 src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio.cpp delete mode 100644 src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio_p.h delete mode 100644 src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase.cpp delete mode 100644 src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase_p.h delete mode 100644 src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo.cpp delete mode 100644 src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo_p.h delete mode 100644 src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject.cpp delete mode 100644 src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject_p.h diff --git a/src/imports/multimedia/qdeclarativeaudio.cpp b/src/imports/multimedia/qdeclarativeaudio.cpp new file mode 100644 index 0000000..df2888c --- /dev/null +++ b/src/imports/multimedia/qdeclarativeaudio.cpp @@ -0,0 +1,327 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 "qdeclarativeaudio_p.h" + +#include + +QT_BEGIN_NAMESPACE + + +/*! + \qmlclass Audio QDeclarativeAudio + \since 4.7 + \brief The Audio element allows you to add audio playback to a scene. + + \qml + Audio { source: "audio/song.mp3" } + \endqml + + \sa Video +*/ + +/*! + \internal + \class QDeclarativeAudio + \brief The QDeclarativeAudio class provides an audio item that you can add to a QDeclarativeView. +*/ + +void QDeclarativeAudio::_q_error(int errorCode, const QString &errorString) +{ + m_error = QMediaPlayer::Error(errorCode); + m_errorString = errorString; + + emit error(Error(errorCode), errorString); + emit errorChanged(); +} + + +QDeclarativeAudio::QDeclarativeAudio(QObject *parent) + : QObject(parent) +{ + setObject(this); +} + +QDeclarativeAudio::~QDeclarativeAudio() +{ + shutdown(); +} + +/*! + \qmlmethod Audio::play() + + Starts playback of the media. + + Sets the \l playing property to true, and the \l paused property to false. +*/ + +void QDeclarativeAudio::play() +{ + m_playerControl->play(); + + if (m_paused) { + m_paused = false; + emit pausedChanged(); + } +} + +/*! + \qmlmethod Audio::pause() + + Pauses playback of the media. + + Sets the \l playing and \l paused properties to true. +*/ + +void QDeclarativeAudio::pause() +{ + m_playerControl->pause(); + + if (!m_paused && m_state == QMediaPlayer::PausedState) { + m_paused = true; + emit pausedChanged(); + } +} + +/*! + \qmlmethod Audio::stop() + + Stops playback of the media. + + Sets the \l playing and \l paused properties to false. +*/ + +void QDeclarativeAudio::stop() +{ + m_playerControl->stop(); + + if (m_paused) { + m_paused = false; + emit pausedChanged(); + } +} + +/*! + \qmlproperty url Audio::source + + This property holds the source URL of the media. +*/ + +/*! + \qmlproperty bool Audio::playing + + This property holds whether the media is playing. + + Defaults to false, and can be set to true to start playback. +*/ + +/*! + \qmlproperty bool Audio::paused + + This property holds whether the media is paused. + + Defaults to false, and can be set to true to pause playback. +*/ + +/*! + \qmlsignal Audio::onStarted() + + This handler is called when playback is started. +*/ + +/*! + \qmlsignal Audio::onResumed() + + This handler is called when playback is resumed from the paused state. +*/ + +/*! + \qmlsignal Audio::onPaused() + + This handler is called when playback is paused. +*/ + +/*! + \qmlsignal Audio::onStopped() + + This handler is called when playback is stopped. +*/ + +/*! + \qmlproperty enum Audio::status + + This property holds the status of media loading. It can be one of: + + \list + \o NoMedia - no media has been set. + \o Loading - the media is currently being loaded. + \o Loaded - the media has been loaded. + \o Buffering - the media is buffering data. + \o Stalled - playback has been interrupted while the media is buffering data. + \o Buffered - the media has buffered data. + \o EndOfMedia - the media has played to the end. + \o InvalidMedia - the media cannot be played. + \o UnknownStatus - the status of the media is unknown. + \endlist +*/ + +QDeclarativeAudio::Status QDeclarativeAudio::status() const +{ + return Status(m_status); +} + +/*! + \qmlsignal Audio::onLoaded() + + This handler is called when the media source has been loaded. +*/ + +/*! + \qmlsignal Audio::onBuffering() + + This handler is called when the media starts buffering. +*/ + +/*! + \qmlsignal Audio::onStalled() + + This handler is called when playback has stalled while the media buffers. +*/ + +/*! + \qmlsignal Audio::onBuffered() + + This handler is called when the media has finished buffering. +*/ + +/*! + \qmlsignal Audio::onEndOfMedia() + + This handler is called when playback stops because end of the media has been reached. +*/ +/*! + \qmlproperty int Audio::duration + + This property holds the duration of the media in milliseconds. + + If the media doesn't have a fixed duration (a live stream for example) this will be 0. +*/ + +/*! + \qmlproperty int Audio::position + + This property holds the current playback position in milliseconds. + + If the \l seekable property is true, this property can be set to seek to a new position. +*/ + +/*! + \qmlproperty qreal Audio::volume + + This property holds the volume of the audio output, from 0.0 (silent) to 1.0 (maximum volume). +*/ + +/*! + \qmlproperty bool Audio::muted + + This property holds whether the audio output is muted. +*/ + +/*! + \qmlproperty qreal Audio::bufferProgress + + This property holds how much of the data buffer is currently filled, from 0.0 (empty) to 1.0 + (full). +*/ + +/*! + \qmlproperty bool Audio::seekable + + This property holds whether position of the audio can be changed. + + If true; setting a \l position value will cause playback to seek to the new position. +*/ + +/*! + \qmlproperty qreal Audio::playbackRate + + This property holds the rate at which audio is played at as a multiple of the normal rate. +*/ + +/*! + \qmlproperty enum Audio::error + + This property holds the error state of the audio. It can be one of: + + \list + \o NoError - there is no current error. + \o ResourceError - the audio cannot be played due to a problem allocating resources. + \o FormatError - the audio format is not supported. + \o NetworkError - the audio cannot be played due to network issues. + \o AccessDenied - the audio cannot be played due to insufficient permissions. + \o ServiceMissing - the audio cannot be played because the media service could not be + instantiated. + \endlist +*/ + +QDeclarativeAudio::Error QDeclarativeAudio::error() const +{ + return Error(m_error); +} + +/*! + \qmlproperty string Audio::errorString + + This property holds a string describing the current error condition in more detail. +*/ + +/*! + \qmlsignal Audio::onError(error, errorString) + + This handler is called when an \l {Error}{error} has occurred. The errorString parameter + may contain more detailed information about the error. +*/ + +QT_END_NAMESPACE + +#include "moc_qdeclarativeaudio_p.cpp" + + diff --git a/src/imports/multimedia/qdeclarativeaudio_p.h b/src/imports/multimedia/qdeclarativeaudio_p.h new file mode 100644 index 0000000..9881dbc --- /dev/null +++ b/src/imports/multimedia/qdeclarativeaudio_p.h @@ -0,0 +1,173 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 QDECLARATIVEAUDIO_P_H +#define QDECLARATIVEAUDIO_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qdeclarativemediabase_p.h" + +#include +#include + + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QTimerEvent; + +class QDeclarativeAudio : public QObject, public QDeclarativeMediaBase, public QDeclarativeParserStatus +{ + Q_OBJECT + Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) + Q_PROPERTY(bool playing READ isPlaying WRITE setPlaying NOTIFY playingChanged) + Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged) + Q_PROPERTY(Status status READ status NOTIFY statusChanged) + Q_PROPERTY(int duration READ duration NOTIFY durationChanged) + Q_PROPERTY(int position READ position WRITE setPosition NOTIFY positionChanged) + Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged) + Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) + Q_PROPERTY(int bufferProgress READ bufferProgress NOTIFY bufferProgressChanged) + Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged) + Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged) + Q_PROPERTY(Error error READ error NOTIFY errorChanged) + Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) + Q_ENUMS(Status) + Q_ENUMS(Error) + Q_INTERFACES(QDeclarativeParserStatus) +public: + enum Status + { + UnknownStatus = QMediaPlayer::UnknownMediaStatus, + NoMedia = QMediaPlayer::NoMedia, + Loading = QMediaPlayer::LoadingMedia, + Loaded = QMediaPlayer::LoadedMedia, + Stalled = QMediaPlayer::StalledMedia, + Buffering = QMediaPlayer::BufferingMedia, + Buffered = QMediaPlayer::BufferedMedia, + EndOfMedia = QMediaPlayer::EndOfMedia, + InvalidMedia = QMediaPlayer::InvalidMedia + }; + + enum Error + { + NoError = QMediaPlayer::NoError, + ResourceError = QMediaPlayer::ResourceError, + FormatError = QMediaPlayer::FormatError, + NetworkError = QMediaPlayer::NetworkError, + AccessDenied = QMediaPlayer::AccessDeniedError, + ServiceMissing = QMediaPlayer::ServiceMissingError + }; + + QDeclarativeAudio(QObject *parent = 0); + ~QDeclarativeAudio(); + + Status status() const; + Error error() const; + +public Q_SLOTS: + void play(); + void pause(); + void stop(); + +Q_SIGNALS: + void sourceChanged(); + + void playingChanged(); + void pausedChanged(); + + void started(); + void resumed(); + void paused(); + void stopped(); + + void statusChanged(); + + void loaded(); + void buffering(); + void stalled(); + void buffered(); + void endOfMedia(); + + void durationChanged(); + void positionChanged(); + + void volumeChanged(); + void mutedChanged(); + + void bufferProgressChanged(); + + void seekableChanged(); + void playbackRateChanged(); + + void errorChanged(); + void error(QDeclarativeAudio::Error error, const QString &errorString); + +private Q_SLOTS: + void _q_error(int, const QString &); + +private: + Q_DISABLE_COPY(QDeclarativeAudio) + Q_PRIVATE_SLOT(mediaBase(), void _q_stateChanged(QMediaPlayer::State)) + Q_PRIVATE_SLOT(mediaBase(), void _q_mediaStatusChanged(QMediaPlayer::MediaStatus)) + Q_PRIVATE_SLOT(mediaBase(), void _q_metaDataChanged()) + + inline QDeclarativeMediaBase *mediaBase() { return this; } +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeAudio)) + +QT_END_HEADER + +#endif diff --git a/src/imports/multimedia/qdeclarativemediabase.cpp b/src/imports/multimedia/qdeclarativemediabase.cpp new file mode 100644 index 0000000..8e87e44 --- /dev/null +++ b/src/imports/multimedia/qdeclarativemediabase.cpp @@ -0,0 +1,413 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 "qdeclarativemediabase_p.h" + +#include +#include + +#include +#include +#include +#include +#include "qmetadatacontrolmetaobject_p.h" + + + +QT_BEGIN_NAMESPACE + + +class QDeclarativeMediaBaseObject : public QMediaObject +{ +public: + QDeclarativeMediaBaseObject(QMediaService *service) + : QMediaObject(0, service) + { + } +}; + +class QDeclarativeMediaBasePlayerControl : public QMediaPlayerControl +{ +public: + QDeclarativeMediaBasePlayerControl(QObject *parent) + : QMediaPlayerControl(parent) + { + } + + QMediaPlayer::State state() const { return QMediaPlayer::StoppedState; } + QMediaPlayer::MediaStatus mediaStatus() const { return QMediaPlayer::NoMedia; } + + qint64 duration() const { return 0; } + qint64 position() const { return 0; } + void setPosition(qint64) {} + int volume() const { return 0; } + void setVolume(int) {} + bool isMuted() const { return false; } + void setMuted(bool) {} + int bufferStatus() const { return 0; } + bool isAudioAvailable() const { return false; } + bool isVideoAvailable() const { return false; } + bool isSeekable() const { return false; } + QMediaTimeRange availablePlaybackRanges() const { return QMediaTimeRange(); } + qreal playbackRate() const { return 1; } + void setPlaybackRate(qreal) {} + QMediaContent media() const { return QMediaContent(); } + const QIODevice *mediaStream() const { return 0; } + void setMedia(const QMediaContent &, QIODevice *) {} + + void play() {} + void pause() {} + void stop() {} +}; + +class QDeclarativeMediaBaseAnimation : public QObject +{ +public: + QDeclarativeMediaBaseAnimation(QDeclarativeMediaBase *media) + : m_media(media) + { + } + + void start() { if (!m_timer.isActive()) m_timer.start(500, this); } + void stop() { m_timer.stop(); } + +protected: + void timerEvent(QTimerEvent *event) + { + if (event->timerId() == m_timer.timerId()) { + event->accept(); + + if (m_media->m_state == QMediaPlayer::PlayingState) + emit m_media->positionChanged(); + if (m_media->m_status == QMediaPlayer::BufferingMedia || QMediaPlayer::StalledMedia) + emit m_media->bufferProgressChanged(); + } else { + QObject::timerEvent(event); + } + } + +private: + QDeclarativeMediaBase *m_media; + QBasicTimer m_timer; +}; + +void QDeclarativeMediaBase::_q_stateChanged(QMediaPlayer::State state) +{ + if (state != m_state) { + QMediaPlayer::State oldState = m_state; + + m_state = state; + + if (state == QMediaPlayer::StoppedState) { + emit stopped(); + emit playingChanged(); + } else if (oldState == QMediaPlayer::StoppedState) { + emit started(); + emit playingChanged(); + } else if (oldState == QMediaPlayer::PausedState) { + m_paused = false; + + emit resumed(); + emit pausedChanged(); + } + + if (state == m_state && state == QMediaPlayer::PausedState) { + bool wasPaused = m_paused; + + m_paused = true; + + emit paused(); + + if (!wasPaused) + emit pausedChanged(); + } + + if (m_state == QMediaPlayer::PlayingState + || m_status == QMediaPlayer::BufferingMedia + || m_status == QMediaPlayer::StalledMedia) { + m_animation->start(); + } else { + m_animation->stop(); + } + } +} + +void QDeclarativeMediaBase::_q_mediaStatusChanged(QMediaPlayer::MediaStatus status) +{ + if (status != m_status) { + m_status = status; + + switch (status) { + case QMediaPlayer::LoadedMedia: + emit loaded(); + break; + case QMediaPlayer::BufferingMedia: + emit buffering(); + break; + case QMediaPlayer::BufferedMedia: + emit buffered(); + break; + case QMediaPlayer::StalledMedia: + emit stalled(); + break; + case QMediaPlayer::EndOfMedia: + emit endOfMedia(); + break; + default: + break; + } + + emit statusChanged(); + + if (m_state == QMediaPlayer::PlayingState + || m_status == QMediaPlayer::BufferingMedia + || m_status == QMediaPlayer::StalledMedia) { + m_animation->start(); + } else { + m_animation->stop(); + } + } +} + +void QDeclarativeMediaBase::_q_metaDataChanged() +{ + m_metaObject->metaDataChanged(); +} + +QDeclarativeMediaBase::QDeclarativeMediaBase() + : m_mediaService(0) + , m_playerControl(0) + , m_mediaObject(0) + , m_mediaProvider(0) + , m_metaDataControl(0) + , m_metaObject(0) + , m_animation(0) + , m_state(QMediaPlayer::StoppedState) + , m_status(QMediaPlayer::NoMedia) + , m_error(QMediaPlayer::NoError) + , m_paused(false) +{ +} + +QDeclarativeMediaBase::~QDeclarativeMediaBase() +{ +} + +void QDeclarativeMediaBase::shutdown() +{ + delete m_metaObject; + delete m_mediaObject; + + if (m_mediaProvider) + m_mediaProvider->releaseService(m_mediaService); + + delete m_animation; + +} + +void QDeclarativeMediaBase::setObject(QObject *object) +{ + if ((m_mediaProvider = QMediaServiceProvider::defaultServiceProvider())) { + if ((m_mediaService = m_mediaProvider->requestService(Q_MEDIASERVICE_MEDIAPLAYER))) { + m_playerControl = qobject_cast( + m_mediaService->control(QMediaPlayerControl_iid)); + m_metaDataControl = qobject_cast( + m_mediaService->control(QMetaDataControl_iid)); + m_mediaObject = new QDeclarativeMediaBaseObject(m_mediaService); + } + } + + if (m_playerControl) { + QObject::connect(m_playerControl, SIGNAL(stateChanged(QMediaPlayer::State)), + object, SLOT(_q_stateChanged(QMediaPlayer::State))); + QObject::connect(m_playerControl, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), + object, SLOT(_q_mediaStatusChanged(QMediaPlayer::MediaStatus))); + QObject::connect(m_playerControl, SIGNAL(mediaChanged(QMediaContent)), + object, SIGNAL(sourceChanged())); + QObject::connect(m_playerControl, SIGNAL(durationChanged(qint64)), + object, SIGNAL(durationChanged())); + QObject::connect(m_playerControl, SIGNAL(positionChanged(qint64)), + object, SIGNAL(positionChanged())); + QObject::connect(m_playerControl, SIGNAL(volumeChanged(int)), + object, SIGNAL(volumeChanged())); + QObject::connect(m_playerControl, SIGNAL(mutedChanged(bool)), + object, SIGNAL(mutedChanged())); + QObject::connect(m_playerControl, SIGNAL(bufferStatusChanged(int)), + object, SIGNAL(bufferProgressChanged())); + QObject::connect(m_playerControl, SIGNAL(seekableChanged(bool)), + object, SIGNAL(seekableChanged())); + QObject::connect(m_playerControl, SIGNAL(playbackRateChanged(qreal)), + object, SIGNAL(playbackRateChanged())); + QObject::connect(m_playerControl, SIGNAL(error(int,QString)), + object, SLOT(_q_error(int,QString))); + + m_animation = new QDeclarativeMediaBaseAnimation(this); + } else { + m_error = QMediaPlayer::ServiceMissingError; + + m_playerControl = new QDeclarativeMediaBasePlayerControl(object); + } + + if (m_metaDataControl) { + m_metaObject = new QMetaDataControlMetaObject(m_metaDataControl, object); + + QObject::connect(m_metaDataControl, SIGNAL(metaDataChanged()), + object, SLOT(_q_metaDataChanged())); + } +} + +QUrl QDeclarativeMediaBase::source() const +{ + return m_playerControl->media().canonicalUrl(); +} + +void QDeclarativeMediaBase::setSource(const QUrl &url) +{ + if (m_error != QMediaPlayer::ServiceMissingError && m_error != QMediaPlayer::NoError) { + m_error = QMediaPlayer::NoError; + m_errorString = QString(); + + emit errorChanged(); + } + + m_playerControl->setMedia(QMediaContent(url), 0); +} + +bool QDeclarativeMediaBase::isPlaying() const +{ + return m_state != QMediaPlayer::StoppedState; +} + +void QDeclarativeMediaBase::setPlaying(bool playing) +{ + if (playing && m_state == QMediaPlayer::StoppedState) { + if (m_paused) + m_playerControl->pause(); + else + m_playerControl->play(); + } else if (!playing) { + m_playerControl->stop(); + } +} + +bool QDeclarativeMediaBase::isPaused() const +{ + return m_paused; +} + +void QDeclarativeMediaBase::setPaused(bool paused) +{ + if (m_paused != paused) { + if (paused && m_state == QMediaPlayer::PlayingState) { + m_playerControl->pause(); + } else if (!paused && m_state == QMediaPlayer::PausedState) { + m_playerControl->play(); + } else { + m_paused = paused; + + emit pausedChanged(); + } + } +} + +int QDeclarativeMediaBase::duration() const +{ + return m_playerControl->duration(); +} + +int QDeclarativeMediaBase::position() const +{ + return m_playerControl->position(); + +} + +void QDeclarativeMediaBase::setPosition(int position) +{ + m_playerControl->setPosition(position); +} + +qreal QDeclarativeMediaBase::volume() const +{ + return qreal(m_playerControl->volume()) / 100; +} + +void QDeclarativeMediaBase::setVolume(qreal volume) +{ + m_playerControl->setVolume(qRound(volume * 100)); +} + +bool QDeclarativeMediaBase::isMuted() const +{ + return m_playerControl->isMuted(); +} + +void QDeclarativeMediaBase::setMuted(bool muted) +{ + m_playerControl->setMuted(muted); +} + +qreal QDeclarativeMediaBase::bufferProgress() const +{ + return qreal(m_playerControl->bufferStatus()) / 100; +} + +bool QDeclarativeMediaBase::isSeekable() const +{ + return m_playerControl->isSeekable(); +} + +qreal QDeclarativeMediaBase::playbackRate() const +{ + return m_playerControl->playbackRate(); +} + +void QDeclarativeMediaBase::setPlaybackRate(qreal rate) +{ + m_playerControl->setPlaybackRate(rate); +} + +QString QDeclarativeMediaBase::errorString() const +{ + return m_errorString; +} + +QT_END_NAMESPACE + diff --git a/src/imports/multimedia/qdeclarativemediabase_p.h b/src/imports/multimedia/qdeclarativemediabase_p.h new file mode 100644 index 0000000..b40e84e --- /dev/null +++ b/src/imports/multimedia/qdeclarativemediabase_p.h @@ -0,0 +1,168 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 QDECLARATIVEMEDIABASE_P_H +#define QDECLARATIVEMEDIABASE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QMediaPlayerControl; +class QMediaService; +class QMediaServiceProvider; +class QMetaDataControl; +class QMetaDataControlMetaObject; +class QDeclarativeMediaBaseAnimation; + +class QDeclarativeMediaBase +{ +public: + QDeclarativeMediaBase(); + virtual ~QDeclarativeMediaBase(); + + QUrl source() const; + void setSource(const QUrl &url); + + bool isPlaying() const; + void setPlaying(bool playing); + + bool isPaused() const; + void setPaused(bool paused); + + int duration() const; + + int position() const; + void setPosition(int position); + + qreal volume() const; + void setVolume(qreal volume); + + bool isMuted() const; + void setMuted(bool muted); + + qreal bufferProgress() const; + + bool isSeekable() const; + + qreal playbackRate() const; + void setPlaybackRate(qreal rate); + + QString errorString() const; + + void _q_stateChanged(QMediaPlayer::State state); + void _q_mediaStatusChanged(QMediaPlayer::MediaStatus status); + + void _q_metaDataChanged(); + +protected: + void shutdown(); + + void setObject(QObject *object); + + virtual void sourceChanged() = 0; + + virtual void playingChanged() = 0; + virtual void pausedChanged() = 0; + + virtual void started() = 0; + virtual void resumed() = 0; + virtual void paused() = 0; + virtual void stopped() = 0; + + virtual void statusChanged() = 0; + + virtual void loaded() = 0; + virtual void buffering() = 0; + virtual void stalled() = 0; + virtual void buffered() = 0; + virtual void endOfMedia() = 0; + + virtual void durationChanged() = 0; + virtual void positionChanged() = 0; + + virtual void volumeChanged() = 0; + virtual void mutedChanged() = 0; + + virtual void bufferProgressChanged() = 0; + + virtual void seekableChanged() = 0; + virtual void playbackRateChanged() = 0; + + virtual void errorChanged() = 0; + + QMediaService *m_mediaService; + QMediaPlayerControl *m_playerControl; + + QMediaObject *m_mediaObject; + QMediaServiceProvider *m_mediaProvider; + QMetaDataControl *m_metaDataControl; + QMetaDataControlMetaObject *m_metaObject; + QDeclarativeMediaBaseAnimation *m_animation; + + QMediaPlayer::State m_state; + QMediaPlayer::MediaStatus m_status; + QMediaPlayer::Error m_error; + bool m_paused; + QString m_errorString; + + friend class QDeclarativeMediaBaseAnimation; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif diff --git a/src/imports/multimedia/qdeclarativevideo.cpp b/src/imports/multimedia/qdeclarativevideo.cpp new file mode 100644 index 0000000..064f242 --- /dev/null +++ b/src/imports/multimedia/qdeclarativevideo.cpp @@ -0,0 +1,945 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 "qdeclarativevideo_p.h" + +#include +#include +#include +#include +#include + + +QT_BEGIN_NAMESPACE + + +void QDeclarativeVideo::_q_nativeSizeChanged(const QSizeF &size) +{ + setImplicitWidth(size.width()); + setImplicitHeight(size.height()); +} + +void QDeclarativeVideo::_q_error(int errorCode, const QString &errorString) +{ + m_error = QMediaPlayer::Error(errorCode); + m_errorString = errorString; + + emit error(Error(errorCode), errorString); + emit errorChanged(); +} + + +/*! + \qmlclass Video QDeclarativeVideo + \since 4.7 + \brief The Video element allows you to add videos to a scene. + \inherits Item + + \qml + Video { source: "video/movie.mpg" } + \endqml + + The video item supports untransformed, stretched, and uniformly scaled video presentation. + For a description of stretched uniformly scaled presentation, see the \l fillMode property + description. + + The video item is only visible when the \l hasVideo property is true and the video is playing. + + \sa Audio +*/ + +/*! + \internal + \class QDeclarativeVideo + \brief The QDeclarativeVideo class provides a video item that you can add to a QDeclarativeView. +*/ + +QDeclarativeVideo::QDeclarativeVideo(QDeclarativeItem *parent) + : QDeclarativeItem(parent) + , m_graphicsItem(0) + +{ + m_graphicsItem = new QGraphicsVideoItem(this); + connect(m_graphicsItem, SIGNAL(nativeSizeChanged(QSizeF)), + this, SLOT(_q_nativeSizeChanged(QSizeF))); + + setObject(this); + + if (m_mediaService) { + connect(m_playerControl, SIGNAL(audioAvailableChanged(bool)), + this, SIGNAL(hasAudioChanged())); + connect(m_playerControl, SIGNAL(videoAvailableChanged(bool)), + this, SIGNAL(hasVideoChanged())); + + m_graphicsItem->setMediaObject(m_mediaObject); + } +} + +QDeclarativeVideo::~QDeclarativeVideo() +{ + shutdown(); + + delete m_graphicsItem; +} + +/*! + \qmlproperty url Video::source + + This property holds the source URL of the media. +*/ + +/*! + \qmlproperty bool Video::playing + + This property holds whether the media is playing. + + Defaults to false, and can be set to true to start playback. +*/ + +/*! + \qmlproperty bool Video::paused + + This property holds whether the media is paused. + + Defaults to false, and can be set to true to pause playback. +*/ + +/*! + \qmlsignal Video::onStarted() + + This handler is called when playback is started. +*/ + +/*! + \qmlsignal Video::onResumed() + + This handler is called when playback is resumed from the paused state. +*/ + +/*! + \qmlsignal Video::onPaused() + + This handler is called when playback is paused. +*/ + +/*! + \qmlsignal Video::onStopped() + + This handler is called when playback is stopped. +*/ + +/*! + \qmlproperty enum Video::status + + This property holds the status of media loading. It can be one of: + + \list + \o NoMedia - no media has been set. + \o Loading - the media is currently being loaded. + \o Loaded - the media has been loaded. + \o Buffering - the media is buffering data. + \o Stalled - playback has been interrupted while the media is buffering data. + \o Buffered - the media has buffered data. + \o EndOfMedia - the media has played to the end. + \o InvalidMedia - the media cannot be played. + \o UnknownStatus - the status of the media is cannot be determined. + \endlist +*/ + +QDeclarativeVideo::Status QDeclarativeVideo::status() const +{ + return Status(m_status); +} + +/*! + \qmlsignal Video::onLoaded() + + This handler is called when the media source has been loaded. +*/ + +/*! + \qmlsignal Video::onBuffering() + + This handler is called when the media starts buffering. +*/ + +/*! + \qmlsignal Video::onStalled() + + This handler is called when playback has stalled while the media buffers. +*/ + +/*! + \qmlsignal Video::onBuffered() + + This handler is called when the media has finished buffering. +*/ + +/*! + \qmlsignal Video::onEndOfMedia() + + This handler is called when playback stops because end of the media has been reached. +*/ + +/*! + \qmlproperty int Video::duration + + This property holds the duration of the media in milliseconds. + + If the media doesn't have a fixed duration (a live stream for example) this will be 0. +*/ + +/*! + \qmlproperty int Video::position + + This property holds the current playback position in milliseconds. +*/ + +/*! + \qmlproperty qreal Video::volume + + This property holds the volume of the audio output, from 0.0 (silent) to 1.0 (maximum volume). +*/ + +/*! + \qmlproperty bool Video::muted + + This property holds whether the audio output is muted. +*/ + +/*! + \qmlproperty bool Video::hasAudio + + This property holds whether the media contains audio. +*/ + +bool QDeclarativeVideo::hasAudio() const +{ + return m_playerControl->isAudioAvailable(); +} + +/*! + \qmlproperty bool Video::hasVideo + + This property holds whether the media contains video. +*/ + +bool QDeclarativeVideo::hasVideo() const +{ + return m_playerControl->isVideoAvailable(); +} + +/*! + \qmlproperty qreal Video::bufferProgress + + This property holds how much of the data buffer is currently filled, from 0.0 (empty) to 1.0 + (full). +*/ + +/*! + \qmlproperty bool Video::seekable + + This property holds whether position of the video can be changed. +*/ + +/*! + \qmlproperty qreal Video::playbackRate + + This property holds the rate at which video is played at as a multiple of the normal rate. +*/ + +/*! + \qmlproperty enum Video::error + + This property holds the error state of the video. It can be one of: + + \list + \o NoError - there is no current error. + \o ResourceError - the video cannot be played due to a problem allocating resources. + \o FormatError - the video format is not supported. + \o NetworkError - the video cannot be played due to network issues. + \o AccessDenied - the video cannot be played due to insufficient permissions. + \o ServiceMissing - the video cannot be played because the media service could not be + instantiated. + \endlist +*/ + + +QDeclarativeVideo::Error QDeclarativeVideo::error() const +{ + return Error(m_error); +} + +/*! + \qmlproperty string Video::errorString + + This property holds a string describing the current error condition in more detail. +*/ + +/*! + \qmlsignal Video::onError(error, errorString) + + This handler is called when an \l {Error}{error} has occurred. The errorString parameter + may contain more detailed information about the error. +*/ + +/*! + \qmlproperty enum Video::fillMode + + Set this property to define how the video is scaled to fit the target area. + + \list + \o Stretch - the video is scaled to fit. + \o PreserveAspectFit - the video is scaled uniformly to fit without cropping + \o PreserveAspectCrop - the video is scaled uniformly to fill, cropping if necessary + \endlist + + The default fill mode is PreserveAspectFit. +*/ + +QDeclarativeVideo::FillMode QDeclarativeVideo::fillMode() const +{ + return FillMode(m_graphicsItem->aspectRatioMode()); +} + +void QDeclarativeVideo::setFillMode(FillMode mode) +{ + m_graphicsItem->setAspectRatioMode(Qt::AspectRatioMode(mode)); +} + +/*! + \qmlmethod Video::play() + + Starts playback of the media. + + Sets the \l playing property to true, and the \l paused property to false. +*/ + +void QDeclarativeVideo::play() +{ + m_playerControl->play(); + + if (m_paused) { + m_paused = false; + emit pausedChanged(); + } +} + +/*! + \qmlmethod Video::pause() + + Pauses playback of the media. + + Sets the \l playing and \l paused properties to true. +*/ + +void QDeclarativeVideo::pause() +{ + m_playerControl->pause(); + + if (!m_paused && m_state == QMediaPlayer::PausedState) { + m_paused = true; + emit pausedChanged(); + } +} + +/*! + \qmlmethod Video::stop() + + Stops playback of the media. + + Sets the \l playing and \l paused properties to false. +*/ + +void QDeclarativeVideo::stop() +{ + m_playerControl->stop(); + + if (m_paused) { + m_paused = false; + emit pausedChanged(); + } +} + +void QDeclarativeVideo::paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) +{ +} + +void QDeclarativeVideo::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) +{ + m_graphicsItem->setSize(newGeometry.size()); + + QDeclarativeItem::geometryChanged(newGeometry, oldGeometry); +} + +QT_END_NAMESPACE + +// *************************************** +// Documentation for meta-data properties. +// *************************************** + +/*! + \qmlproperty variant Video::title + + This property holds the tile of the media. + + \sa {QtMultimedia::Title} +*/ + +/*! + \qmlproperty variant Video::subTitle + + This property holds the sub-title of the media. + + \sa {QtMultimedia::SubTitle} +*/ + +/*! + \qmlproperty variant Video::author + + This property holds the author of the media. + + \sa {QtMultimedia::Author} +*/ + +/*! + \qmlproperty variant Video::comment + + This property holds a user comment about the media. + + \sa {QtMultimedia::Comment} +*/ + +/*! + \qmlproperty variant Video::description + + This property holds a description of the media. + + \sa {QtMultimedia::Description} +*/ + +/*! + \qmlproperty variant Video::category + + This property holds the category of the media + + \sa {QtMultimedia::Category} +*/ + +/*! + \qmlproperty variant Video::genre + + This property holds the genre of the media. + + \sa {QtMultimedia::Genre} +*/ + +/*! + \qmlproperty variant Video::year + + This property holds the year of release of the media. + + \sa {QtMultimedia::Year} +*/ + +/*! + \qmlproperty variant Video::date + + This property holds the date of the media. + + \sa {QtMultimedia::Date} +*/ + +/*! + \qmlproperty variant Video::userRating + + This property holds a user rating of the media in the range of 0 to 100. + + \sa {QtMultimedia::UserRating} +*/ + +/*! + \qmlproperty variant Video::keywords + + This property holds a list of keywords describing the media. + + \sa {QtMultimedia::Keywords} +*/ + +/*! + \qmlproperty variant Video::language + + This property holds the language of the media, as an ISO 639-2 code. + + \sa {QtMultimedia::Language} +*/ + +/*! + \qmlproperty variant Video::publisher + + This property holds the publisher of the media. + + \sa {QtMultimedia::Publisher} +*/ + +/*! + \qmlproperty variant Video::copyright + + This property holds the media's copyright notice. + + \sa {QtMultimedia::Copyright} +*/ + +/*! + \qmlproperty variant Video::parentalRating + + This property holds the parental rating of the media. + + \sa {QtMultimedia::ParentalRating} +*/ + +/*! + \qmlproperty variant Video::ratingOrganisation + + This property holds the name of the rating organisation responsible for the + parental rating of the media. + + \sa {QtMultimedia::RatingOrganisation} +*/ + +/*! + \qmlproperty variant Video::size + + This property property holds the size of the media in bytes. + + \sa {QtMultimedia::Size} +*/ + +/*! + \qmlproperty variant Video::mediaType + + This property holds the type of the media. + + \sa {QtMultimedia::MediaType} +*/ + +/*! + \qmlproperty variant Video::audioBitRate + + This property holds the bit rate of the media's audio stream ni bits per + second. + + \sa {QtMultimedia::AudioBitRate} +*/ + +/*! + \qmlproperty variant Video::audioCodec + + This property holds the encoding of the media audio stream. + + \sa {QtMultimedia::AudioCodec} +*/ + +/*! + \qmlproperty variant Video::averageLevel + + This property holds the average volume level of the media. + + \sa {QtMultimedia::AverageLevel} +*/ + +/*! + \qmlproperty variant Video::channelCount + + This property holds the number of channels in the media's audio stream. + + \sa {QtMultimedia::ChannelCount} +*/ + +/*! + \qmlproperty variant Video::peakValue + + This property holds the peak volume of media's audio stream. + + \sa {QtMultimedia::PeakValue} +*/ + +/*! + \qmlproperty variant Video::sampleRate + + This property holds the sample rate of the media's audio stream in hertz. + + \sa {QtMultimedia::SampleRate} +*/ + +/*! + \qmlproperty variant Video::albumTitle + + This property holds the title of the album the media belongs to. + + \sa {QtMultimedia::AlbumTitle} +*/ + +/*! + \qmlproperty variant Video::albumArtist + + This property holds the name of the principal artist of the album the media + belongs to. + + \sa {QtMultimedia::AlbumArtist} +*/ + +/*! + \qmlproperty variant Video::contributingArtist + + This property holds the names of artists contributing to the media. + + \sa {QtMultimedia::ContributingArtist} +*/ + +/*! + \qmlproperty variant Video::composer + + This property holds the composer of the media. + + \sa {QtMultimedia::Composer} +*/ + +/*! + \qmlproperty variant Video::conductor + + This property holds the conductor of the media. + + \sa {QtMultimedia::Conductor} +*/ + +/*! + \qmlproperty variant Video::lyrics + + This property holds the lyrics to the media. + + \sa {QtMultimedia::Lyrics} +*/ + +/*! + \qmlproperty variant Video::mood + + This property holds the mood of the media. + + \sa {QtMultimedia::Mood} +*/ + +/*! + \qmlproperty variant Video::trackNumber + + This property holds the track number of the media. + + \sa {QtMultimedia::TrackNumber} +*/ + +/*! + \qmlproperty variant Video::trackCount + + This property holds the number of track on the album containing the media. + + \sa {QtMultimedia::TrackNumber} +*/ + +/*! + \qmlproperty variant Video::coverArtUrlSmall + + This property holds the URL of a small cover art image. + + \sa {QtMultimedia::CoverArtUrlSmall} +*/ + +/*! + \qmlproperty variant Video::coverArtUrlLarge + + This property holds the URL of a large cover art image. + + \sa {QtMultimedia::CoverArtUrlLarge} +*/ + +/*! + \qmlproperty variant Video::resolution + + This property holds the dimension of an image or video. + + \sa {QtMultimedia::Resolution} +*/ + +/*! + \qmlproperty variant Video::pixelAspectRatio + + This property holds the pixel aspect ratio of an image or video. + + \sa {QtMultimedia::PixelAspectRatio} +*/ + +/*! + \qmlproperty variant Video::videoFrameRate + + This property holds the frame rate of the media's video stream. + + \sa {QtMultimedia::VideoFrameRate} +*/ + +/*! + \qmlproperty variant Video::videoBitRate + + This property holds the bit rate of the media's video stream in bits per + second. + + \sa {QtMultimedia::VideoBitRate} +*/ + +/*! + \qmlproperty variant Video::videoCodec + + This property holds the encoding of the media's video stream. + + \sa {QtMultimedia::VideoCodec} +*/ + +/*! + \qmlproperty variant Video::posterUrl + + This property holds the URL of a poster image. + + \sa {QtMultimedia::PosterUrl} +*/ + +/*! + \qmlproperty variant Video::chapterNumber + + This property holds the chapter number of the media. + + \sa {QtMultimedia::ChapterNumber} +*/ + +/*! + \qmlproperty variant Video::director + + This property holds the director of the media. + + \sa {QtMultimedia::Director} +*/ + +/*! + \qmlproperty variant Video::leadPerformer + + This property holds the lead performer in the media. + + \sa {QtMultimedia::LeadPerformer} +*/ + +/*! + \qmlproperty variant Video::writer + + This property holds the writer of the media. + + \sa {QtMultimedia::Writer} +*/ + +// The remaining properties are related to photos, and are technically +// available but will certainly never have values. +#ifndef Q_QDOC + +/*! + \qmlproperty variant Video::cameraManufacturer + + \sa {QtMultimedia::CameraManufacturer} +*/ + +/*! + \qmlproperty variant Video::cameraModel + + \sa {QtMultimedia::CameraModel} +*/ + +/*! + \qmlproperty variant Video::event + + \sa {QtMultimedia::Event} +*/ + +/*! + \qmlproperty variant Video::subject + + \sa {QtMultimedia::Subject} +*/ + +/*! + \qmlproperty variant Video::orientation + + \sa {QtMultimedia::Orientation} +*/ + +/*! + \qmlproperty variant Video::exposureTime + + \sa {QtMultimedia::ExposureTime} +*/ + +/*! + \qmlproperty variant Video::fNumber + + \sa {QtMultimedia::FNumber} +*/ + +/*! + \qmlproperty variant Video::exposureProgram + + \sa {QtMultimedia::ExposureProgram} +*/ + +/*! + \qmlproperty variant Video::isoSpeedRatings + + \sa {QtMultimedia::ISOSpeedRatings} +*/ + +/*! + \qmlproperty variant Video::exposureBiasValue + + \sa {QtMultimedia::ExposureBiasValue} +*/ + +/*! + \qmlproperty variant Video::dateTimeDigitized + + \sa {QtMultimedia::DateTimeDigitized} +*/ + +/*! + \qmlproperty variant Video::subjectDistance + + \sa {QtMultimedia::SubjectDistance} +*/ + +/*! + \qmlproperty variant Video::meteringMode + + \sa {QtMultimedia::MeteringMode} +*/ + +/*! + \qmlproperty variant Video::lightSource + + \sa {QtMultimedia::LightSource} +*/ + +/*! + \qmlproperty variant Video::flash + + \sa {QtMultimedia::Flash} +*/ + +/*! + \qmlproperty variant Video::focalLength + + \sa {QtMultimedia::FocalLength} +*/ + +/*! + \qmlproperty variant Video::exposureMode + + \sa {QtMultimedia::ExposureMode} +*/ + +/*! + \qmlproperty variant Video::whiteBalance + + \sa {QtMultimedia::WhiteBalance} +*/ + +/*! + \qmlproperty variant Video::DigitalZoomRatio + + \sa {QtMultimedia::DigitalZoomRatio} +*/ + +/*! + \qmlproperty variant Video::focalLengthIn35mmFilm + + \sa {QtMultimedia::FocalLengthIn35mmFile} +*/ + +/*! + \qmlproperty variant Video::sceneCaptureType + + \sa {QtMultimedia::SceneCaptureType} +*/ + +/*! + \qmlproperty variant Video::gainControl + + \sa {QtMultimedia::GainControl} +*/ + +/*! + \qmlproperty variant Video::contrast + + \sa {QtMultimedia::contrast} +*/ + +/*! + \qmlproperty variant Video::saturation + + \sa {QtMultimedia::Saturation} +*/ + +/*! + \qmlproperty variant Video::sharpness + + \sa {QtMultimedia::Sharpness} +*/ + +/*! + \qmlproperty variant Video::deviceSettingDescription + + \sa {QtMultimedia::DeviceSettingDescription} +*/ + +#endif + +#include "moc_qdeclarativevideo_p.cpp" diff --git a/src/imports/multimedia/qdeclarativevideo_p.h b/src/imports/multimedia/qdeclarativevideo_p.h new file mode 100644 index 0000000..fb13519 --- /dev/null +++ b/src/imports/multimedia/qdeclarativevideo_p.h @@ -0,0 +1,204 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 QDECLARATIVEVIDEO_H +#define QDECLARATIVEVIDEO_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "qdeclarativemediabase_p.h" + +#include + +#include +#include + + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QTimerEvent; +class QVideoSurfaceFormat; + + +class QDeclarativeVideo : public QDeclarativeItem, public QDeclarativeMediaBase +{ + Q_OBJECT + Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) + Q_PROPERTY(bool playing READ isPlaying WRITE setPlaying NOTIFY playingChanged) + Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged) + Q_PROPERTY(Status status READ status NOTIFY statusChanged) + Q_PROPERTY(int duration READ duration NOTIFY durationChanged) + Q_PROPERTY(int position READ position WRITE setPosition NOTIFY positionChanged) + Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged) + Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) + Q_PROPERTY(bool hasAudio READ hasAudio NOTIFY hasAudioChanged) + Q_PROPERTY(bool hasVideo READ hasVideo NOTIFY hasVideoChanged) + Q_PROPERTY(int bufferProgress READ bufferProgress NOTIFY bufferProgressChanged) + Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged) + Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged) + Q_PROPERTY(Error error READ error NOTIFY errorChanged) + Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) + Q_PROPERTY(FillMode fillMode READ fillMode WRITE setFillMode) + Q_ENUMS(FillMode) + Q_ENUMS(Status) + Q_ENUMS(Error) +public: + enum FillMode + { + Stretch = Qt::IgnoreAspectRatio, + PreserveAspectFit = Qt::KeepAspectRatio, + PreserveAspectCrop = Qt::KeepAspectRatioByExpanding + }; + + enum Status + { + UnknownStatus = QMediaPlayer::UnknownMediaStatus, + NoMedia = QMediaPlayer::NoMedia, + Loading = QMediaPlayer::LoadingMedia, + Loaded = QMediaPlayer::LoadedMedia, + Stalled = QMediaPlayer::StalledMedia, + Buffering = QMediaPlayer::BufferingMedia, + Buffered = QMediaPlayer::BufferedMedia, + EndOfMedia = QMediaPlayer::EndOfMedia, + InvalidMedia = QMediaPlayer::InvalidMedia + }; + + enum Error + { + NoError = QMediaPlayer::NoError, + ResourceError = QMediaPlayer::ResourceError, + FormatError = QMediaPlayer::FormatError, + NetworkError = QMediaPlayer::NetworkError, + AccessDenied = QMediaPlayer::AccessDeniedError, + ServiceMissing = QMediaPlayer::ServiceMissingError + }; + + QDeclarativeVideo(QDeclarativeItem *parent = 0); + ~QDeclarativeVideo(); + + bool hasAudio() const; + bool hasVideo() const; + + FillMode fillMode() const; + void setFillMode(FillMode mode); + + Status status() const; + Error error() const; + + void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); + +public Q_SLOTS: + void play(); + void pause(); + void stop(); + +Q_SIGNALS: + void sourceChanged(); + + void playingChanged(); + void pausedChanged(); + + void started(); + void resumed(); + void paused(); + void stopped(); + + void statusChanged(); + + void loaded(); + void buffering(); + void stalled(); + void buffered(); + void endOfMedia(); + + void durationChanged(); + void positionChanged(); + + void volumeChanged(); + void mutedChanged(); + void hasAudioChanged(); + void hasVideoChanged(); + + void bufferProgressChanged(); + + void seekableChanged(); + void playbackRateChanged(); + + void errorChanged(); + void error(QDeclarativeVideo::Error error, const QString &errorString); + +protected: + void geometryChanged(const QRectF &geometry, const QRectF &); + +private Q_SLOTS: + void _q_nativeSizeChanged(const QSizeF &size); + void _q_error(int, const QString &); + +private: + Q_DISABLE_COPY(QDeclarativeVideo) + + QGraphicsVideoItem *m_graphicsItem; + + Q_PRIVATE_SLOT(mediaBase(), void _q_stateChanged(QMediaPlayer::State)) + Q_PRIVATE_SLOT(mediaBase(), void _q_mediaStatusChanged(QMediaPlayer::MediaStatus)) + Q_PRIVATE_SLOT(mediaBase(), void _q_metaDataChanged()) + + inline QDeclarativeMediaBase *mediaBase() { return this; } +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeVideo)) + +QT_END_HEADER + +#endif diff --git a/src/imports/multimedia/qmetadatacontrolmetaobject.cpp b/src/imports/multimedia/qmetadatacontrolmetaobject.cpp new file mode 100644 index 0000000..e90cbd6 --- /dev/null +++ b/src/imports/multimedia/qmetadatacontrolmetaobject.cpp @@ -0,0 +1,362 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 "qmetadatacontrolmetaobject_p.h" +#include + + +QT_BEGIN_NAMESPACE + +// copied from qmetaobject.cpp +// do not touch without touching the moc as well +enum PropertyFlags { + Invalid = 0x00000000, + Readable = 0x00000001, + Writable = 0x00000002, + Resettable = 0x00000004, + EnumOrFlag = 0x00000008, + StdCppSet = 0x00000100, +// Override = 0x00000200, + Designable = 0x00001000, + ResolveDesignable = 0x00002000, + Scriptable = 0x00004000, + ResolveScriptable = 0x00008000, + Stored = 0x00010000, + ResolveStored = 0x00020000, + Editable = 0x00040000, + ResolveEditable = 0x00080000, + User = 0x00100000, + ResolveUser = 0x00200000, + Notify = 0x00400000, + Dynamic = 0x00800000 +}; + +enum MethodFlags { + AccessPrivate = 0x00, + AccessProtected = 0x01, + AccessPublic = 0x02, + AccessMask = 0x03, //mask + + MethodMethod = 0x00, + MethodSignal = 0x04, + MethodSlot = 0x08, + MethodConstructor = 0x0c, + MethodTypeMask = 0x0c, + + MethodCompatibility = 0x10, + MethodCloned = 0x20, + MethodScriptable = 0x40 +}; + +struct QMetaObjectPrivate +{ + int revision; + int className; + int classInfoCount, classInfoData; + int methodCount, methodData; + int propertyCount, propertyData; + int enumeratorCount, enumeratorData; + int constructorCount, constructorData; + int flags; +}; + +static inline const QMetaObjectPrivate *priv(const uint* m_data) +{ return reinterpret_cast(m_data); } +// end of copied lines from qmetaobject.cpp + +namespace +{ + struct MetaDataKey + { + QtMultimedia::MetaData key; + const char *name; + }; + + const MetaDataKey qt_metaDataKeys[] = + { + { QtMultimedia::Title, "title" }, + { QtMultimedia::SubTitle, "subTitle" }, + { QtMultimedia::Author, "author" }, + { QtMultimedia::Comment, "comment" }, + { QtMultimedia::Description, "description" }, + { QtMultimedia::Category, "category" }, + { QtMultimedia::Genre, "genre" }, + { QtMultimedia::Year, "year" }, + { QtMultimedia::Date, "date" }, + { QtMultimedia::UserRating, "userRating" }, + { QtMultimedia::Keywords, "keywords" }, + { QtMultimedia::Language, "language" }, + { QtMultimedia::Publisher, "publisher" }, + { QtMultimedia::Copyright, "copyright" }, + { QtMultimedia::ParentalRating, "parentalRating" }, + { QtMultimedia::RatingOrganisation, "ratingOrganisation" }, + + // Media + { QtMultimedia::Size, "size" }, + { QtMultimedia::MediaType, "mediaType" }, +// { QtMultimedia::Duration, "duration" }, + + // Audio + { QtMultimedia::AudioBitRate, "audioBitRate" }, + { QtMultimedia::AudioCodec, "audioCodec" }, + { QtMultimedia::AverageLevel, "averageLevel" }, + { QtMultimedia::ChannelCount, "channelCount" }, + { QtMultimedia::PeakValue, "peakValue" }, + { QtMultimedia::SampleRate, "sampleRate" }, + + // Music + { QtMultimedia::AlbumTitle, "albumTitle" }, + { QtMultimedia::AlbumArtist, "albumArtist" }, + { QtMultimedia::ContributingArtist, "contributingArtist" }, + { QtMultimedia::Composer, "composer" }, + { QtMultimedia::Conductor, "conductor" }, + { QtMultimedia::Lyrics, "lyrics" }, + { QtMultimedia::Mood, "mood" }, + { QtMultimedia::TrackNumber, "trackNumber" }, + { QtMultimedia::TrackCount, "trackCount" }, + + { QtMultimedia::CoverArtUrlSmall, "coverArtUrlSmall" }, + { QtMultimedia::CoverArtUrlLarge, "coverArtUrlLarge" }, + + // Image/Video + { QtMultimedia::Resolution, "resolution" }, + { QtMultimedia::PixelAspectRatio, "pixelAspectRatio" }, + + // Video + { QtMultimedia::VideoFrameRate, "videoFrameRate" }, + { QtMultimedia::VideoBitRate, "videoBitRate" }, + { QtMultimedia::VideoCodec, "videoCodec" }, + + { QtMultimedia::PosterUrl, "posterUrl" }, + + // Movie + { QtMultimedia::ChapterNumber, "chapterNumber" }, + { QtMultimedia::Director, "director" }, + { QtMultimedia::LeadPerformer, "leadPerformer" }, + { QtMultimedia::Writer, "writer" }, + + // Photos + { QtMultimedia::CameraManufacturer, "cameraManufacturer" }, + { QtMultimedia::CameraModel, "cameraModel" }, + { QtMultimedia::Event, "event" }, + { QtMultimedia::Subject, "subject" }, + { QtMultimedia::Orientation, "orientation" }, + { QtMultimedia::ExposureTime, "exposureTime" }, + { QtMultimedia::FNumber, "fNumber" }, + { QtMultimedia::ExposureProgram, "exposureProgram" }, + { QtMultimedia::ISOSpeedRatings, "isoSpeedRatings" }, + { QtMultimedia::ExposureBiasValue, "exposureBiasValue" }, + { QtMultimedia::DateTimeOriginal, "dateTimeOriginal" }, + { QtMultimedia::DateTimeDigitized, "dateTimeDigitized" }, + { QtMultimedia::SubjectDistance, "subjectDistance" }, + { QtMultimedia::MeteringMode, "meteringMode" }, + { QtMultimedia::LightSource, "lightSource" }, + { QtMultimedia::Flash, "flash" }, + { QtMultimedia::FocalLength, "focalLength" }, + { QtMultimedia::ExposureMode, "exposureMode" }, + { QtMultimedia::WhiteBalance, "whiteBalance" }, + { QtMultimedia::DigitalZoomRatio, "digitalZoomRatio" }, + { QtMultimedia::FocalLengthIn35mmFilm, "focalLengthIn35mmFilm" }, + { QtMultimedia::SceneCaptureType, "sceneCaptureType" }, + { QtMultimedia::GainControl, "gainControl" }, + { QtMultimedia::Contrast, "contrast" }, + { QtMultimedia::Saturation, "saturation" }, + { QtMultimedia::Sharpness, "sharpness" }, + { QtMultimedia::DeviceSettingDescription, "deviceSettingDescription" } + }; + + class QMetaDataControlObject : public QObject + { + public: + inline QObjectData *data() { return d_ptr.data(); } + }; +} + +QMetaDataControlMetaObject::QMetaDataControlMetaObject(QMetaDataControl *control, QObject *object) + : m_control(control) + , m_object(object) + , m_string(0) + , m_data(0) + , m_propertyOffset(0) + , m_signalOffset(0) +{ + const QMetaObject *superClass = m_object->metaObject(); + + const int propertyCount = sizeof(qt_metaDataKeys) / sizeof(MetaDataKey); + const int dataSize = sizeof(uint) + * (13 // QMetaObjectPrivate members. + + 5 // 5 members per signal. + + 4 * propertyCount // 3 members per property + 1 notify signal per property. + + 1); // Terminating value. + + m_data = reinterpret_cast(qMalloc(dataSize)); + + QMetaObjectPrivate *pMeta = reinterpret_cast(m_data); + + pMeta->revision = 3; + pMeta->className = 0; + pMeta->classInfoCount = 0; + pMeta->classInfoData = 0; + pMeta->methodCount = 1; + pMeta->methodData = 13; + pMeta->propertyCount = propertyCount; + pMeta->propertyData = 18; + pMeta->enumeratorCount = 0; + pMeta->enumeratorData = 0; + pMeta->constructorCount = 0; + pMeta->constructorData = 0; + pMeta->flags = 0x01; // Dynamic meta object flag. + + const int classNameSize = qstrlen(superClass->className()) + 1; + + int stringIndex = classNameSize + 1; + + // __metaDataChanged() signal. + static const char *changeSignal = "__metaDataChanged()"; + const int changeSignalSize = qstrlen(changeSignal) + 1; + + m_data[13] = stringIndex; // Signature. + m_data[14] = classNameSize; // Parameters. + m_data[15] = classNameSize; // Type. + m_data[16] = classNameSize; // Tag. + m_data[17] = MethodSignal | AccessProtected; // Flags. + + stringIndex += changeSignalSize; + + const char *qvariantName = "QVariant"; + const int qvariantSize = qstrlen(qvariantName) + 1; + const int qvariantIndex = stringIndex; + + stringIndex += qvariantSize; + + // Properties. + for (int i = 0; i < propertyCount; ++i) { + m_data[18 + 3 * i] = stringIndex; // Name. + m_data[19 + 3 * i] = qvariantIndex; // Type. + m_data[20 + 3 * i] + = Readable | Writable | Notify | Dynamic | (0xffffffff << 24); // Flags. + m_data[18 + propertyCount * 3 + i] = 0; // Notify signal. + + stringIndex += qstrlen(qt_metaDataKeys[i].name) + 1; + } + + // Terminating value. + m_data[18 + propertyCount * 4] = 0; + + // Build string. + m_string = reinterpret_cast(qMalloc(stringIndex + 1)); + + // Class name. + qMemCopy(m_string, superClass->className(), classNameSize); + + stringIndex = classNameSize; + + // Null m_string. + m_string[stringIndex] = '\0'; + stringIndex += 1; + + // __metaDataChanged() signal. + qMemCopy(m_string + stringIndex, changeSignal, changeSignalSize); + stringIndex += changeSignalSize; + + qMemCopy(m_string + stringIndex, qvariantName, qvariantSize); + stringIndex += qvariantSize; + + // Properties. + for (int i = 0; i < propertyCount; ++i) { + const int propertyNameSize = qstrlen(qt_metaDataKeys[i].name) + 1; + + qMemCopy(m_string + stringIndex, qt_metaDataKeys[i].name, propertyNameSize); + stringIndex += propertyNameSize; + } + + // Terminating character. + m_string[stringIndex] = '\0'; + + d.superdata = superClass; + d.stringdata = m_string; + d.data = m_data; + d.extradata = 0; + + static_cast(m_object)->data()->metaObject = this; + + m_propertyOffset = propertyOffset(); + m_signalOffset = methodOffset(); +} + +QMetaDataControlMetaObject::~QMetaDataControlMetaObject() +{ + static_cast(m_object)->data()->metaObject = 0; + + qFree(m_data); + qFree(m_string); +} + +int QMetaDataControlMetaObject::metaCall(QMetaObject::Call c, int id, void **a) +{ + if (c == QMetaObject::ReadProperty && id >= m_propertyOffset) { + int propId = id - m_propertyOffset; + + *reinterpret_cast(a[0]) = m_control->metaData(qt_metaDataKeys[propId].key); + + return -1; + } else if (c == QMetaObject::WriteProperty && id >= m_propertyOffset) { + int propId = id - m_propertyOffset; + + m_control->setMetaData(qt_metaDataKeys[propId].key, *reinterpret_cast(a[0])); + + return -1; + } else { + return m_object->qt_metacall(c, id, a); + } +} + +int QMetaDataControlMetaObject::createProperty(const char *, const char *) +{ + return -1; +} + +void QMetaDataControlMetaObject::metaDataChanged() +{ + activate(m_object, m_signalOffset, 0); +} + +QT_END_NAMESPACE diff --git a/src/imports/multimedia/qmetadatacontrolmetaobject_p.h b/src/imports/multimedia/qmetadatacontrolmetaobject_p.h new file mode 100644 index 0000000..c381f2d --- /dev/null +++ b/src/imports/multimedia/qmetadatacontrolmetaobject_p.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the plugins 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 QMETADATACONTROLMETAOBJECT_P_H +#define QMETADATACONTROLMETAOJBECT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QMetaDataControl; + +class QMetaDataControlMetaObject : public QAbstractDynamicMetaObject +{ +public: + QMetaDataControlMetaObject(QMetaDataControl *control, QObject *object); + ~QMetaDataControlMetaObject(); + + int metaCall(QMetaObject::Call call, int _id, void **arguments); + int createProperty(const char *, const char *); + + void metaDataChanged(); + +private: + QMetaDataControl *m_control; + QObject *m_object; + char *m_string; + uint *m_data; + + int m_propertyOffset; + int m_signalOffset; +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif diff --git a/src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio.cpp b/src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio.cpp deleted file mode 100644 index df2888c..0000000 --- a/src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio.cpp +++ /dev/null @@ -1,327 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 "qdeclarativeaudio_p.h" - -#include - -QT_BEGIN_NAMESPACE - - -/*! - \qmlclass Audio QDeclarativeAudio - \since 4.7 - \brief The Audio element allows you to add audio playback to a scene. - - \qml - Audio { source: "audio/song.mp3" } - \endqml - - \sa Video -*/ - -/*! - \internal - \class QDeclarativeAudio - \brief The QDeclarativeAudio class provides an audio item that you can add to a QDeclarativeView. -*/ - -void QDeclarativeAudio::_q_error(int errorCode, const QString &errorString) -{ - m_error = QMediaPlayer::Error(errorCode); - m_errorString = errorString; - - emit error(Error(errorCode), errorString); - emit errorChanged(); -} - - -QDeclarativeAudio::QDeclarativeAudio(QObject *parent) - : QObject(parent) -{ - setObject(this); -} - -QDeclarativeAudio::~QDeclarativeAudio() -{ - shutdown(); -} - -/*! - \qmlmethod Audio::play() - - Starts playback of the media. - - Sets the \l playing property to true, and the \l paused property to false. -*/ - -void QDeclarativeAudio::play() -{ - m_playerControl->play(); - - if (m_paused) { - m_paused = false; - emit pausedChanged(); - } -} - -/*! - \qmlmethod Audio::pause() - - Pauses playback of the media. - - Sets the \l playing and \l paused properties to true. -*/ - -void QDeclarativeAudio::pause() -{ - m_playerControl->pause(); - - if (!m_paused && m_state == QMediaPlayer::PausedState) { - m_paused = true; - emit pausedChanged(); - } -} - -/*! - \qmlmethod Audio::stop() - - Stops playback of the media. - - Sets the \l playing and \l paused properties to false. -*/ - -void QDeclarativeAudio::stop() -{ - m_playerControl->stop(); - - if (m_paused) { - m_paused = false; - emit pausedChanged(); - } -} - -/*! - \qmlproperty url Audio::source - - This property holds the source URL of the media. -*/ - -/*! - \qmlproperty bool Audio::playing - - This property holds whether the media is playing. - - Defaults to false, and can be set to true to start playback. -*/ - -/*! - \qmlproperty bool Audio::paused - - This property holds whether the media is paused. - - Defaults to false, and can be set to true to pause playback. -*/ - -/*! - \qmlsignal Audio::onStarted() - - This handler is called when playback is started. -*/ - -/*! - \qmlsignal Audio::onResumed() - - This handler is called when playback is resumed from the paused state. -*/ - -/*! - \qmlsignal Audio::onPaused() - - This handler is called when playback is paused. -*/ - -/*! - \qmlsignal Audio::onStopped() - - This handler is called when playback is stopped. -*/ - -/*! - \qmlproperty enum Audio::status - - This property holds the status of media loading. It can be one of: - - \list - \o NoMedia - no media has been set. - \o Loading - the media is currently being loaded. - \o Loaded - the media has been loaded. - \o Buffering - the media is buffering data. - \o Stalled - playback has been interrupted while the media is buffering data. - \o Buffered - the media has buffered data. - \o EndOfMedia - the media has played to the end. - \o InvalidMedia - the media cannot be played. - \o UnknownStatus - the status of the media is unknown. - \endlist -*/ - -QDeclarativeAudio::Status QDeclarativeAudio::status() const -{ - return Status(m_status); -} - -/*! - \qmlsignal Audio::onLoaded() - - This handler is called when the media source has been loaded. -*/ - -/*! - \qmlsignal Audio::onBuffering() - - This handler is called when the media starts buffering. -*/ - -/*! - \qmlsignal Audio::onStalled() - - This handler is called when playback has stalled while the media buffers. -*/ - -/*! - \qmlsignal Audio::onBuffered() - - This handler is called when the media has finished buffering. -*/ - -/*! - \qmlsignal Audio::onEndOfMedia() - - This handler is called when playback stops because end of the media has been reached. -*/ -/*! - \qmlproperty int Audio::duration - - This property holds the duration of the media in milliseconds. - - If the media doesn't have a fixed duration (a live stream for example) this will be 0. -*/ - -/*! - \qmlproperty int Audio::position - - This property holds the current playback position in milliseconds. - - If the \l seekable property is true, this property can be set to seek to a new position. -*/ - -/*! - \qmlproperty qreal Audio::volume - - This property holds the volume of the audio output, from 0.0 (silent) to 1.0 (maximum volume). -*/ - -/*! - \qmlproperty bool Audio::muted - - This property holds whether the audio output is muted. -*/ - -/*! - \qmlproperty qreal Audio::bufferProgress - - This property holds how much of the data buffer is currently filled, from 0.0 (empty) to 1.0 - (full). -*/ - -/*! - \qmlproperty bool Audio::seekable - - This property holds whether position of the audio can be changed. - - If true; setting a \l position value will cause playback to seek to the new position. -*/ - -/*! - \qmlproperty qreal Audio::playbackRate - - This property holds the rate at which audio is played at as a multiple of the normal rate. -*/ - -/*! - \qmlproperty enum Audio::error - - This property holds the error state of the audio. It can be one of: - - \list - \o NoError - there is no current error. - \o ResourceError - the audio cannot be played due to a problem allocating resources. - \o FormatError - the audio format is not supported. - \o NetworkError - the audio cannot be played due to network issues. - \o AccessDenied - the audio cannot be played due to insufficient permissions. - \o ServiceMissing - the audio cannot be played because the media service could not be - instantiated. - \endlist -*/ - -QDeclarativeAudio::Error QDeclarativeAudio::error() const -{ - return Error(m_error); -} - -/*! - \qmlproperty string Audio::errorString - - This property holds a string describing the current error condition in more detail. -*/ - -/*! - \qmlsignal Audio::onError(error, errorString) - - This handler is called when an \l {Error}{error} has occurred. The errorString parameter - may contain more detailed information about the error. -*/ - -QT_END_NAMESPACE - -#include "moc_qdeclarativeaudio_p.cpp" - - diff --git a/src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio_p.h b/src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio_p.h deleted file mode 100644 index 9881dbc..0000000 --- a/src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio_p.h +++ /dev/null @@ -1,173 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 QDECLARATIVEAUDIO_P_H -#define QDECLARATIVEAUDIO_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of other Qt classes. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qdeclarativemediabase_p.h" - -#include -#include - - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -class QTimerEvent; - -class QDeclarativeAudio : public QObject, public QDeclarativeMediaBase, public QDeclarativeParserStatus -{ - Q_OBJECT - Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) - Q_PROPERTY(bool playing READ isPlaying WRITE setPlaying NOTIFY playingChanged) - Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged) - Q_PROPERTY(Status status READ status NOTIFY statusChanged) - Q_PROPERTY(int duration READ duration NOTIFY durationChanged) - Q_PROPERTY(int position READ position WRITE setPosition NOTIFY positionChanged) - Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged) - Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) - Q_PROPERTY(int bufferProgress READ bufferProgress NOTIFY bufferProgressChanged) - Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged) - Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged) - Q_PROPERTY(Error error READ error NOTIFY errorChanged) - Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) - Q_ENUMS(Status) - Q_ENUMS(Error) - Q_INTERFACES(QDeclarativeParserStatus) -public: - enum Status - { - UnknownStatus = QMediaPlayer::UnknownMediaStatus, - NoMedia = QMediaPlayer::NoMedia, - Loading = QMediaPlayer::LoadingMedia, - Loaded = QMediaPlayer::LoadedMedia, - Stalled = QMediaPlayer::StalledMedia, - Buffering = QMediaPlayer::BufferingMedia, - Buffered = QMediaPlayer::BufferedMedia, - EndOfMedia = QMediaPlayer::EndOfMedia, - InvalidMedia = QMediaPlayer::InvalidMedia - }; - - enum Error - { - NoError = QMediaPlayer::NoError, - ResourceError = QMediaPlayer::ResourceError, - FormatError = QMediaPlayer::FormatError, - NetworkError = QMediaPlayer::NetworkError, - AccessDenied = QMediaPlayer::AccessDeniedError, - ServiceMissing = QMediaPlayer::ServiceMissingError - }; - - QDeclarativeAudio(QObject *parent = 0); - ~QDeclarativeAudio(); - - Status status() const; - Error error() const; - -public Q_SLOTS: - void play(); - void pause(); - void stop(); - -Q_SIGNALS: - void sourceChanged(); - - void playingChanged(); - void pausedChanged(); - - void started(); - void resumed(); - void paused(); - void stopped(); - - void statusChanged(); - - void loaded(); - void buffering(); - void stalled(); - void buffered(); - void endOfMedia(); - - void durationChanged(); - void positionChanged(); - - void volumeChanged(); - void mutedChanged(); - - void bufferProgressChanged(); - - void seekableChanged(); - void playbackRateChanged(); - - void errorChanged(); - void error(QDeclarativeAudio::Error error, const QString &errorString); - -private Q_SLOTS: - void _q_error(int, const QString &); - -private: - Q_DISABLE_COPY(QDeclarativeAudio) - Q_PRIVATE_SLOT(mediaBase(), void _q_stateChanged(QMediaPlayer::State)) - Q_PRIVATE_SLOT(mediaBase(), void _q_mediaStatusChanged(QMediaPlayer::MediaStatus)) - Q_PRIVATE_SLOT(mediaBase(), void _q_metaDataChanged()) - - inline QDeclarativeMediaBase *mediaBase() { return this; } -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeAudio)) - -QT_END_HEADER - -#endif diff --git a/src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase.cpp b/src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase.cpp deleted file mode 100644 index 8e87e44..0000000 --- a/src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase.cpp +++ /dev/null @@ -1,413 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 "qdeclarativemediabase_p.h" - -#include -#include - -#include -#include -#include -#include -#include "qmetadatacontrolmetaobject_p.h" - - - -QT_BEGIN_NAMESPACE - - -class QDeclarativeMediaBaseObject : public QMediaObject -{ -public: - QDeclarativeMediaBaseObject(QMediaService *service) - : QMediaObject(0, service) - { - } -}; - -class QDeclarativeMediaBasePlayerControl : public QMediaPlayerControl -{ -public: - QDeclarativeMediaBasePlayerControl(QObject *parent) - : QMediaPlayerControl(parent) - { - } - - QMediaPlayer::State state() const { return QMediaPlayer::StoppedState; } - QMediaPlayer::MediaStatus mediaStatus() const { return QMediaPlayer::NoMedia; } - - qint64 duration() const { return 0; } - qint64 position() const { return 0; } - void setPosition(qint64) {} - int volume() const { return 0; } - void setVolume(int) {} - bool isMuted() const { return false; } - void setMuted(bool) {} - int bufferStatus() const { return 0; } - bool isAudioAvailable() const { return false; } - bool isVideoAvailable() const { return false; } - bool isSeekable() const { return false; } - QMediaTimeRange availablePlaybackRanges() const { return QMediaTimeRange(); } - qreal playbackRate() const { return 1; } - void setPlaybackRate(qreal) {} - QMediaContent media() const { return QMediaContent(); } - const QIODevice *mediaStream() const { return 0; } - void setMedia(const QMediaContent &, QIODevice *) {} - - void play() {} - void pause() {} - void stop() {} -}; - -class QDeclarativeMediaBaseAnimation : public QObject -{ -public: - QDeclarativeMediaBaseAnimation(QDeclarativeMediaBase *media) - : m_media(media) - { - } - - void start() { if (!m_timer.isActive()) m_timer.start(500, this); } - void stop() { m_timer.stop(); } - -protected: - void timerEvent(QTimerEvent *event) - { - if (event->timerId() == m_timer.timerId()) { - event->accept(); - - if (m_media->m_state == QMediaPlayer::PlayingState) - emit m_media->positionChanged(); - if (m_media->m_status == QMediaPlayer::BufferingMedia || QMediaPlayer::StalledMedia) - emit m_media->bufferProgressChanged(); - } else { - QObject::timerEvent(event); - } - } - -private: - QDeclarativeMediaBase *m_media; - QBasicTimer m_timer; -}; - -void QDeclarativeMediaBase::_q_stateChanged(QMediaPlayer::State state) -{ - if (state != m_state) { - QMediaPlayer::State oldState = m_state; - - m_state = state; - - if (state == QMediaPlayer::StoppedState) { - emit stopped(); - emit playingChanged(); - } else if (oldState == QMediaPlayer::StoppedState) { - emit started(); - emit playingChanged(); - } else if (oldState == QMediaPlayer::PausedState) { - m_paused = false; - - emit resumed(); - emit pausedChanged(); - } - - if (state == m_state && state == QMediaPlayer::PausedState) { - bool wasPaused = m_paused; - - m_paused = true; - - emit paused(); - - if (!wasPaused) - emit pausedChanged(); - } - - if (m_state == QMediaPlayer::PlayingState - || m_status == QMediaPlayer::BufferingMedia - || m_status == QMediaPlayer::StalledMedia) { - m_animation->start(); - } else { - m_animation->stop(); - } - } -} - -void QDeclarativeMediaBase::_q_mediaStatusChanged(QMediaPlayer::MediaStatus status) -{ - if (status != m_status) { - m_status = status; - - switch (status) { - case QMediaPlayer::LoadedMedia: - emit loaded(); - break; - case QMediaPlayer::BufferingMedia: - emit buffering(); - break; - case QMediaPlayer::BufferedMedia: - emit buffered(); - break; - case QMediaPlayer::StalledMedia: - emit stalled(); - break; - case QMediaPlayer::EndOfMedia: - emit endOfMedia(); - break; - default: - break; - } - - emit statusChanged(); - - if (m_state == QMediaPlayer::PlayingState - || m_status == QMediaPlayer::BufferingMedia - || m_status == QMediaPlayer::StalledMedia) { - m_animation->start(); - } else { - m_animation->stop(); - } - } -} - -void QDeclarativeMediaBase::_q_metaDataChanged() -{ - m_metaObject->metaDataChanged(); -} - -QDeclarativeMediaBase::QDeclarativeMediaBase() - : m_mediaService(0) - , m_playerControl(0) - , m_mediaObject(0) - , m_mediaProvider(0) - , m_metaDataControl(0) - , m_metaObject(0) - , m_animation(0) - , m_state(QMediaPlayer::StoppedState) - , m_status(QMediaPlayer::NoMedia) - , m_error(QMediaPlayer::NoError) - , m_paused(false) -{ -} - -QDeclarativeMediaBase::~QDeclarativeMediaBase() -{ -} - -void QDeclarativeMediaBase::shutdown() -{ - delete m_metaObject; - delete m_mediaObject; - - if (m_mediaProvider) - m_mediaProvider->releaseService(m_mediaService); - - delete m_animation; - -} - -void QDeclarativeMediaBase::setObject(QObject *object) -{ - if ((m_mediaProvider = QMediaServiceProvider::defaultServiceProvider())) { - if ((m_mediaService = m_mediaProvider->requestService(Q_MEDIASERVICE_MEDIAPLAYER))) { - m_playerControl = qobject_cast( - m_mediaService->control(QMediaPlayerControl_iid)); - m_metaDataControl = qobject_cast( - m_mediaService->control(QMetaDataControl_iid)); - m_mediaObject = new QDeclarativeMediaBaseObject(m_mediaService); - } - } - - if (m_playerControl) { - QObject::connect(m_playerControl, SIGNAL(stateChanged(QMediaPlayer::State)), - object, SLOT(_q_stateChanged(QMediaPlayer::State))); - QObject::connect(m_playerControl, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), - object, SLOT(_q_mediaStatusChanged(QMediaPlayer::MediaStatus))); - QObject::connect(m_playerControl, SIGNAL(mediaChanged(QMediaContent)), - object, SIGNAL(sourceChanged())); - QObject::connect(m_playerControl, SIGNAL(durationChanged(qint64)), - object, SIGNAL(durationChanged())); - QObject::connect(m_playerControl, SIGNAL(positionChanged(qint64)), - object, SIGNAL(positionChanged())); - QObject::connect(m_playerControl, SIGNAL(volumeChanged(int)), - object, SIGNAL(volumeChanged())); - QObject::connect(m_playerControl, SIGNAL(mutedChanged(bool)), - object, SIGNAL(mutedChanged())); - QObject::connect(m_playerControl, SIGNAL(bufferStatusChanged(int)), - object, SIGNAL(bufferProgressChanged())); - QObject::connect(m_playerControl, SIGNAL(seekableChanged(bool)), - object, SIGNAL(seekableChanged())); - QObject::connect(m_playerControl, SIGNAL(playbackRateChanged(qreal)), - object, SIGNAL(playbackRateChanged())); - QObject::connect(m_playerControl, SIGNAL(error(int,QString)), - object, SLOT(_q_error(int,QString))); - - m_animation = new QDeclarativeMediaBaseAnimation(this); - } else { - m_error = QMediaPlayer::ServiceMissingError; - - m_playerControl = new QDeclarativeMediaBasePlayerControl(object); - } - - if (m_metaDataControl) { - m_metaObject = new QMetaDataControlMetaObject(m_metaDataControl, object); - - QObject::connect(m_metaDataControl, SIGNAL(metaDataChanged()), - object, SLOT(_q_metaDataChanged())); - } -} - -QUrl QDeclarativeMediaBase::source() const -{ - return m_playerControl->media().canonicalUrl(); -} - -void QDeclarativeMediaBase::setSource(const QUrl &url) -{ - if (m_error != QMediaPlayer::ServiceMissingError && m_error != QMediaPlayer::NoError) { - m_error = QMediaPlayer::NoError; - m_errorString = QString(); - - emit errorChanged(); - } - - m_playerControl->setMedia(QMediaContent(url), 0); -} - -bool QDeclarativeMediaBase::isPlaying() const -{ - return m_state != QMediaPlayer::StoppedState; -} - -void QDeclarativeMediaBase::setPlaying(bool playing) -{ - if (playing && m_state == QMediaPlayer::StoppedState) { - if (m_paused) - m_playerControl->pause(); - else - m_playerControl->play(); - } else if (!playing) { - m_playerControl->stop(); - } -} - -bool QDeclarativeMediaBase::isPaused() const -{ - return m_paused; -} - -void QDeclarativeMediaBase::setPaused(bool paused) -{ - if (m_paused != paused) { - if (paused && m_state == QMediaPlayer::PlayingState) { - m_playerControl->pause(); - } else if (!paused && m_state == QMediaPlayer::PausedState) { - m_playerControl->play(); - } else { - m_paused = paused; - - emit pausedChanged(); - } - } -} - -int QDeclarativeMediaBase::duration() const -{ - return m_playerControl->duration(); -} - -int QDeclarativeMediaBase::position() const -{ - return m_playerControl->position(); - -} - -void QDeclarativeMediaBase::setPosition(int position) -{ - m_playerControl->setPosition(position); -} - -qreal QDeclarativeMediaBase::volume() const -{ - return qreal(m_playerControl->volume()) / 100; -} - -void QDeclarativeMediaBase::setVolume(qreal volume) -{ - m_playerControl->setVolume(qRound(volume * 100)); -} - -bool QDeclarativeMediaBase::isMuted() const -{ - return m_playerControl->isMuted(); -} - -void QDeclarativeMediaBase::setMuted(bool muted) -{ - m_playerControl->setMuted(muted); -} - -qreal QDeclarativeMediaBase::bufferProgress() const -{ - return qreal(m_playerControl->bufferStatus()) / 100; -} - -bool QDeclarativeMediaBase::isSeekable() const -{ - return m_playerControl->isSeekable(); -} - -qreal QDeclarativeMediaBase::playbackRate() const -{ - return m_playerControl->playbackRate(); -} - -void QDeclarativeMediaBase::setPlaybackRate(qreal rate) -{ - m_playerControl->setPlaybackRate(rate); -} - -QString QDeclarativeMediaBase::errorString() const -{ - return m_errorString; -} - -QT_END_NAMESPACE - diff --git a/src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase_p.h b/src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase_p.h deleted file mode 100644 index b40e84e..0000000 --- a/src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase_p.h +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 QDECLARATIVEMEDIABASE_P_H -#define QDECLARATIVEMEDIABASE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of other Qt classes. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -class QMediaPlayerControl; -class QMediaService; -class QMediaServiceProvider; -class QMetaDataControl; -class QMetaDataControlMetaObject; -class QDeclarativeMediaBaseAnimation; - -class QDeclarativeMediaBase -{ -public: - QDeclarativeMediaBase(); - virtual ~QDeclarativeMediaBase(); - - QUrl source() const; - void setSource(const QUrl &url); - - bool isPlaying() const; - void setPlaying(bool playing); - - bool isPaused() const; - void setPaused(bool paused); - - int duration() const; - - int position() const; - void setPosition(int position); - - qreal volume() const; - void setVolume(qreal volume); - - bool isMuted() const; - void setMuted(bool muted); - - qreal bufferProgress() const; - - bool isSeekable() const; - - qreal playbackRate() const; - void setPlaybackRate(qreal rate); - - QString errorString() const; - - void _q_stateChanged(QMediaPlayer::State state); - void _q_mediaStatusChanged(QMediaPlayer::MediaStatus status); - - void _q_metaDataChanged(); - -protected: - void shutdown(); - - void setObject(QObject *object); - - virtual void sourceChanged() = 0; - - virtual void playingChanged() = 0; - virtual void pausedChanged() = 0; - - virtual void started() = 0; - virtual void resumed() = 0; - virtual void paused() = 0; - virtual void stopped() = 0; - - virtual void statusChanged() = 0; - - virtual void loaded() = 0; - virtual void buffering() = 0; - virtual void stalled() = 0; - virtual void buffered() = 0; - virtual void endOfMedia() = 0; - - virtual void durationChanged() = 0; - virtual void positionChanged() = 0; - - virtual void volumeChanged() = 0; - virtual void mutedChanged() = 0; - - virtual void bufferProgressChanged() = 0; - - virtual void seekableChanged() = 0; - virtual void playbackRateChanged() = 0; - - virtual void errorChanged() = 0; - - QMediaService *m_mediaService; - QMediaPlayerControl *m_playerControl; - - QMediaObject *m_mediaObject; - QMediaServiceProvider *m_mediaProvider; - QMetaDataControl *m_metaDataControl; - QMetaDataControlMetaObject *m_metaObject; - QDeclarativeMediaBaseAnimation *m_animation; - - QMediaPlayer::State m_state; - QMediaPlayer::MediaStatus m_status; - QMediaPlayer::Error m_error; - bool m_paused; - QString m_errorString; - - friend class QDeclarativeMediaBaseAnimation; -}; - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif diff --git a/src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo.cpp b/src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo.cpp deleted file mode 100644 index 064f242..0000000 --- a/src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo.cpp +++ /dev/null @@ -1,945 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 "qdeclarativevideo_p.h" - -#include -#include -#include -#include -#include - - -QT_BEGIN_NAMESPACE - - -void QDeclarativeVideo::_q_nativeSizeChanged(const QSizeF &size) -{ - setImplicitWidth(size.width()); - setImplicitHeight(size.height()); -} - -void QDeclarativeVideo::_q_error(int errorCode, const QString &errorString) -{ - m_error = QMediaPlayer::Error(errorCode); - m_errorString = errorString; - - emit error(Error(errorCode), errorString); - emit errorChanged(); -} - - -/*! - \qmlclass Video QDeclarativeVideo - \since 4.7 - \brief The Video element allows you to add videos to a scene. - \inherits Item - - \qml - Video { source: "video/movie.mpg" } - \endqml - - The video item supports untransformed, stretched, and uniformly scaled video presentation. - For a description of stretched uniformly scaled presentation, see the \l fillMode property - description. - - The video item is only visible when the \l hasVideo property is true and the video is playing. - - \sa Audio -*/ - -/*! - \internal - \class QDeclarativeVideo - \brief The QDeclarativeVideo class provides a video item that you can add to a QDeclarativeView. -*/ - -QDeclarativeVideo::QDeclarativeVideo(QDeclarativeItem *parent) - : QDeclarativeItem(parent) - , m_graphicsItem(0) - -{ - m_graphicsItem = new QGraphicsVideoItem(this); - connect(m_graphicsItem, SIGNAL(nativeSizeChanged(QSizeF)), - this, SLOT(_q_nativeSizeChanged(QSizeF))); - - setObject(this); - - if (m_mediaService) { - connect(m_playerControl, SIGNAL(audioAvailableChanged(bool)), - this, SIGNAL(hasAudioChanged())); - connect(m_playerControl, SIGNAL(videoAvailableChanged(bool)), - this, SIGNAL(hasVideoChanged())); - - m_graphicsItem->setMediaObject(m_mediaObject); - } -} - -QDeclarativeVideo::~QDeclarativeVideo() -{ - shutdown(); - - delete m_graphicsItem; -} - -/*! - \qmlproperty url Video::source - - This property holds the source URL of the media. -*/ - -/*! - \qmlproperty bool Video::playing - - This property holds whether the media is playing. - - Defaults to false, and can be set to true to start playback. -*/ - -/*! - \qmlproperty bool Video::paused - - This property holds whether the media is paused. - - Defaults to false, and can be set to true to pause playback. -*/ - -/*! - \qmlsignal Video::onStarted() - - This handler is called when playback is started. -*/ - -/*! - \qmlsignal Video::onResumed() - - This handler is called when playback is resumed from the paused state. -*/ - -/*! - \qmlsignal Video::onPaused() - - This handler is called when playback is paused. -*/ - -/*! - \qmlsignal Video::onStopped() - - This handler is called when playback is stopped. -*/ - -/*! - \qmlproperty enum Video::status - - This property holds the status of media loading. It can be one of: - - \list - \o NoMedia - no media has been set. - \o Loading - the media is currently being loaded. - \o Loaded - the media has been loaded. - \o Buffering - the media is buffering data. - \o Stalled - playback has been interrupted while the media is buffering data. - \o Buffered - the media has buffered data. - \o EndOfMedia - the media has played to the end. - \o InvalidMedia - the media cannot be played. - \o UnknownStatus - the status of the media is cannot be determined. - \endlist -*/ - -QDeclarativeVideo::Status QDeclarativeVideo::status() const -{ - return Status(m_status); -} - -/*! - \qmlsignal Video::onLoaded() - - This handler is called when the media source has been loaded. -*/ - -/*! - \qmlsignal Video::onBuffering() - - This handler is called when the media starts buffering. -*/ - -/*! - \qmlsignal Video::onStalled() - - This handler is called when playback has stalled while the media buffers. -*/ - -/*! - \qmlsignal Video::onBuffered() - - This handler is called when the media has finished buffering. -*/ - -/*! - \qmlsignal Video::onEndOfMedia() - - This handler is called when playback stops because end of the media has been reached. -*/ - -/*! - \qmlproperty int Video::duration - - This property holds the duration of the media in milliseconds. - - If the media doesn't have a fixed duration (a live stream for example) this will be 0. -*/ - -/*! - \qmlproperty int Video::position - - This property holds the current playback position in milliseconds. -*/ - -/*! - \qmlproperty qreal Video::volume - - This property holds the volume of the audio output, from 0.0 (silent) to 1.0 (maximum volume). -*/ - -/*! - \qmlproperty bool Video::muted - - This property holds whether the audio output is muted. -*/ - -/*! - \qmlproperty bool Video::hasAudio - - This property holds whether the media contains audio. -*/ - -bool QDeclarativeVideo::hasAudio() const -{ - return m_playerControl->isAudioAvailable(); -} - -/*! - \qmlproperty bool Video::hasVideo - - This property holds whether the media contains video. -*/ - -bool QDeclarativeVideo::hasVideo() const -{ - return m_playerControl->isVideoAvailable(); -} - -/*! - \qmlproperty qreal Video::bufferProgress - - This property holds how much of the data buffer is currently filled, from 0.0 (empty) to 1.0 - (full). -*/ - -/*! - \qmlproperty bool Video::seekable - - This property holds whether position of the video can be changed. -*/ - -/*! - \qmlproperty qreal Video::playbackRate - - This property holds the rate at which video is played at as a multiple of the normal rate. -*/ - -/*! - \qmlproperty enum Video::error - - This property holds the error state of the video. It can be one of: - - \list - \o NoError - there is no current error. - \o ResourceError - the video cannot be played due to a problem allocating resources. - \o FormatError - the video format is not supported. - \o NetworkError - the video cannot be played due to network issues. - \o AccessDenied - the video cannot be played due to insufficient permissions. - \o ServiceMissing - the video cannot be played because the media service could not be - instantiated. - \endlist -*/ - - -QDeclarativeVideo::Error QDeclarativeVideo::error() const -{ - return Error(m_error); -} - -/*! - \qmlproperty string Video::errorString - - This property holds a string describing the current error condition in more detail. -*/ - -/*! - \qmlsignal Video::onError(error, errorString) - - This handler is called when an \l {Error}{error} has occurred. The errorString parameter - may contain more detailed information about the error. -*/ - -/*! - \qmlproperty enum Video::fillMode - - Set this property to define how the video is scaled to fit the target area. - - \list - \o Stretch - the video is scaled to fit. - \o PreserveAspectFit - the video is scaled uniformly to fit without cropping - \o PreserveAspectCrop - the video is scaled uniformly to fill, cropping if necessary - \endlist - - The default fill mode is PreserveAspectFit. -*/ - -QDeclarativeVideo::FillMode QDeclarativeVideo::fillMode() const -{ - return FillMode(m_graphicsItem->aspectRatioMode()); -} - -void QDeclarativeVideo::setFillMode(FillMode mode) -{ - m_graphicsItem->setAspectRatioMode(Qt::AspectRatioMode(mode)); -} - -/*! - \qmlmethod Video::play() - - Starts playback of the media. - - Sets the \l playing property to true, and the \l paused property to false. -*/ - -void QDeclarativeVideo::play() -{ - m_playerControl->play(); - - if (m_paused) { - m_paused = false; - emit pausedChanged(); - } -} - -/*! - \qmlmethod Video::pause() - - Pauses playback of the media. - - Sets the \l playing and \l paused properties to true. -*/ - -void QDeclarativeVideo::pause() -{ - m_playerControl->pause(); - - if (!m_paused && m_state == QMediaPlayer::PausedState) { - m_paused = true; - emit pausedChanged(); - } -} - -/*! - \qmlmethod Video::stop() - - Stops playback of the media. - - Sets the \l playing and \l paused properties to false. -*/ - -void QDeclarativeVideo::stop() -{ - m_playerControl->stop(); - - if (m_paused) { - m_paused = false; - emit pausedChanged(); - } -} - -void QDeclarativeVideo::paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) -{ -} - -void QDeclarativeVideo::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - m_graphicsItem->setSize(newGeometry.size()); - - QDeclarativeItem::geometryChanged(newGeometry, oldGeometry); -} - -QT_END_NAMESPACE - -// *************************************** -// Documentation for meta-data properties. -// *************************************** - -/*! - \qmlproperty variant Video::title - - This property holds the tile of the media. - - \sa {QtMultimedia::Title} -*/ - -/*! - \qmlproperty variant Video::subTitle - - This property holds the sub-title of the media. - - \sa {QtMultimedia::SubTitle} -*/ - -/*! - \qmlproperty variant Video::author - - This property holds the author of the media. - - \sa {QtMultimedia::Author} -*/ - -/*! - \qmlproperty variant Video::comment - - This property holds a user comment about the media. - - \sa {QtMultimedia::Comment} -*/ - -/*! - \qmlproperty variant Video::description - - This property holds a description of the media. - - \sa {QtMultimedia::Description} -*/ - -/*! - \qmlproperty variant Video::category - - This property holds the category of the media - - \sa {QtMultimedia::Category} -*/ - -/*! - \qmlproperty variant Video::genre - - This property holds the genre of the media. - - \sa {QtMultimedia::Genre} -*/ - -/*! - \qmlproperty variant Video::year - - This property holds the year of release of the media. - - \sa {QtMultimedia::Year} -*/ - -/*! - \qmlproperty variant Video::date - - This property holds the date of the media. - - \sa {QtMultimedia::Date} -*/ - -/*! - \qmlproperty variant Video::userRating - - This property holds a user rating of the media in the range of 0 to 100. - - \sa {QtMultimedia::UserRating} -*/ - -/*! - \qmlproperty variant Video::keywords - - This property holds a list of keywords describing the media. - - \sa {QtMultimedia::Keywords} -*/ - -/*! - \qmlproperty variant Video::language - - This property holds the language of the media, as an ISO 639-2 code. - - \sa {QtMultimedia::Language} -*/ - -/*! - \qmlproperty variant Video::publisher - - This property holds the publisher of the media. - - \sa {QtMultimedia::Publisher} -*/ - -/*! - \qmlproperty variant Video::copyright - - This property holds the media's copyright notice. - - \sa {QtMultimedia::Copyright} -*/ - -/*! - \qmlproperty variant Video::parentalRating - - This property holds the parental rating of the media. - - \sa {QtMultimedia::ParentalRating} -*/ - -/*! - \qmlproperty variant Video::ratingOrganisation - - This property holds the name of the rating organisation responsible for the - parental rating of the media. - - \sa {QtMultimedia::RatingOrganisation} -*/ - -/*! - \qmlproperty variant Video::size - - This property property holds the size of the media in bytes. - - \sa {QtMultimedia::Size} -*/ - -/*! - \qmlproperty variant Video::mediaType - - This property holds the type of the media. - - \sa {QtMultimedia::MediaType} -*/ - -/*! - \qmlproperty variant Video::audioBitRate - - This property holds the bit rate of the media's audio stream ni bits per - second. - - \sa {QtMultimedia::AudioBitRate} -*/ - -/*! - \qmlproperty variant Video::audioCodec - - This property holds the encoding of the media audio stream. - - \sa {QtMultimedia::AudioCodec} -*/ - -/*! - \qmlproperty variant Video::averageLevel - - This property holds the average volume level of the media. - - \sa {QtMultimedia::AverageLevel} -*/ - -/*! - \qmlproperty variant Video::channelCount - - This property holds the number of channels in the media's audio stream. - - \sa {QtMultimedia::ChannelCount} -*/ - -/*! - \qmlproperty variant Video::peakValue - - This property holds the peak volume of media's audio stream. - - \sa {QtMultimedia::PeakValue} -*/ - -/*! - \qmlproperty variant Video::sampleRate - - This property holds the sample rate of the media's audio stream in hertz. - - \sa {QtMultimedia::SampleRate} -*/ - -/*! - \qmlproperty variant Video::albumTitle - - This property holds the title of the album the media belongs to. - - \sa {QtMultimedia::AlbumTitle} -*/ - -/*! - \qmlproperty variant Video::albumArtist - - This property holds the name of the principal artist of the album the media - belongs to. - - \sa {QtMultimedia::AlbumArtist} -*/ - -/*! - \qmlproperty variant Video::contributingArtist - - This property holds the names of artists contributing to the media. - - \sa {QtMultimedia::ContributingArtist} -*/ - -/*! - \qmlproperty variant Video::composer - - This property holds the composer of the media. - - \sa {QtMultimedia::Composer} -*/ - -/*! - \qmlproperty variant Video::conductor - - This property holds the conductor of the media. - - \sa {QtMultimedia::Conductor} -*/ - -/*! - \qmlproperty variant Video::lyrics - - This property holds the lyrics to the media. - - \sa {QtMultimedia::Lyrics} -*/ - -/*! - \qmlproperty variant Video::mood - - This property holds the mood of the media. - - \sa {QtMultimedia::Mood} -*/ - -/*! - \qmlproperty variant Video::trackNumber - - This property holds the track number of the media. - - \sa {QtMultimedia::TrackNumber} -*/ - -/*! - \qmlproperty variant Video::trackCount - - This property holds the number of track on the album containing the media. - - \sa {QtMultimedia::TrackNumber} -*/ - -/*! - \qmlproperty variant Video::coverArtUrlSmall - - This property holds the URL of a small cover art image. - - \sa {QtMultimedia::CoverArtUrlSmall} -*/ - -/*! - \qmlproperty variant Video::coverArtUrlLarge - - This property holds the URL of a large cover art image. - - \sa {QtMultimedia::CoverArtUrlLarge} -*/ - -/*! - \qmlproperty variant Video::resolution - - This property holds the dimension of an image or video. - - \sa {QtMultimedia::Resolution} -*/ - -/*! - \qmlproperty variant Video::pixelAspectRatio - - This property holds the pixel aspect ratio of an image or video. - - \sa {QtMultimedia::PixelAspectRatio} -*/ - -/*! - \qmlproperty variant Video::videoFrameRate - - This property holds the frame rate of the media's video stream. - - \sa {QtMultimedia::VideoFrameRate} -*/ - -/*! - \qmlproperty variant Video::videoBitRate - - This property holds the bit rate of the media's video stream in bits per - second. - - \sa {QtMultimedia::VideoBitRate} -*/ - -/*! - \qmlproperty variant Video::videoCodec - - This property holds the encoding of the media's video stream. - - \sa {QtMultimedia::VideoCodec} -*/ - -/*! - \qmlproperty variant Video::posterUrl - - This property holds the URL of a poster image. - - \sa {QtMultimedia::PosterUrl} -*/ - -/*! - \qmlproperty variant Video::chapterNumber - - This property holds the chapter number of the media. - - \sa {QtMultimedia::ChapterNumber} -*/ - -/*! - \qmlproperty variant Video::director - - This property holds the director of the media. - - \sa {QtMultimedia::Director} -*/ - -/*! - \qmlproperty variant Video::leadPerformer - - This property holds the lead performer in the media. - - \sa {QtMultimedia::LeadPerformer} -*/ - -/*! - \qmlproperty variant Video::writer - - This property holds the writer of the media. - - \sa {QtMultimedia::Writer} -*/ - -// The remaining properties are related to photos, and are technically -// available but will certainly never have values. -#ifndef Q_QDOC - -/*! - \qmlproperty variant Video::cameraManufacturer - - \sa {QtMultimedia::CameraManufacturer} -*/ - -/*! - \qmlproperty variant Video::cameraModel - - \sa {QtMultimedia::CameraModel} -*/ - -/*! - \qmlproperty variant Video::event - - \sa {QtMultimedia::Event} -*/ - -/*! - \qmlproperty variant Video::subject - - \sa {QtMultimedia::Subject} -*/ - -/*! - \qmlproperty variant Video::orientation - - \sa {QtMultimedia::Orientation} -*/ - -/*! - \qmlproperty variant Video::exposureTime - - \sa {QtMultimedia::ExposureTime} -*/ - -/*! - \qmlproperty variant Video::fNumber - - \sa {QtMultimedia::FNumber} -*/ - -/*! - \qmlproperty variant Video::exposureProgram - - \sa {QtMultimedia::ExposureProgram} -*/ - -/*! - \qmlproperty variant Video::isoSpeedRatings - - \sa {QtMultimedia::ISOSpeedRatings} -*/ - -/*! - \qmlproperty variant Video::exposureBiasValue - - \sa {QtMultimedia::ExposureBiasValue} -*/ - -/*! - \qmlproperty variant Video::dateTimeDigitized - - \sa {QtMultimedia::DateTimeDigitized} -*/ - -/*! - \qmlproperty variant Video::subjectDistance - - \sa {QtMultimedia::SubjectDistance} -*/ - -/*! - \qmlproperty variant Video::meteringMode - - \sa {QtMultimedia::MeteringMode} -*/ - -/*! - \qmlproperty variant Video::lightSource - - \sa {QtMultimedia::LightSource} -*/ - -/*! - \qmlproperty variant Video::flash - - \sa {QtMultimedia::Flash} -*/ - -/*! - \qmlproperty variant Video::focalLength - - \sa {QtMultimedia::FocalLength} -*/ - -/*! - \qmlproperty variant Video::exposureMode - - \sa {QtMultimedia::ExposureMode} -*/ - -/*! - \qmlproperty variant Video::whiteBalance - - \sa {QtMultimedia::WhiteBalance} -*/ - -/*! - \qmlproperty variant Video::DigitalZoomRatio - - \sa {QtMultimedia::DigitalZoomRatio} -*/ - -/*! - \qmlproperty variant Video::focalLengthIn35mmFilm - - \sa {QtMultimedia::FocalLengthIn35mmFile} -*/ - -/*! - \qmlproperty variant Video::sceneCaptureType - - \sa {QtMultimedia::SceneCaptureType} -*/ - -/*! - \qmlproperty variant Video::gainControl - - \sa {QtMultimedia::GainControl} -*/ - -/*! - \qmlproperty variant Video::contrast - - \sa {QtMultimedia::contrast} -*/ - -/*! - \qmlproperty variant Video::saturation - - \sa {QtMultimedia::Saturation} -*/ - -/*! - \qmlproperty variant Video::sharpness - - \sa {QtMultimedia::Sharpness} -*/ - -/*! - \qmlproperty variant Video::deviceSettingDescription - - \sa {QtMultimedia::DeviceSettingDescription} -*/ - -#endif - -#include "moc_qdeclarativevideo_p.cpp" diff --git a/src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo_p.h b/src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo_p.h deleted file mode 100644 index fb13519..0000000 --- a/src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo_p.h +++ /dev/null @@ -1,204 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 QDECLARATIVEVIDEO_H -#define QDECLARATIVEVIDEO_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of other Qt classes. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qdeclarativemediabase_p.h" - -#include - -#include -#include - - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -class QTimerEvent; -class QVideoSurfaceFormat; - - -class QDeclarativeVideo : public QDeclarativeItem, public QDeclarativeMediaBase -{ - Q_OBJECT - Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) - Q_PROPERTY(bool playing READ isPlaying WRITE setPlaying NOTIFY playingChanged) - Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged) - Q_PROPERTY(Status status READ status NOTIFY statusChanged) - Q_PROPERTY(int duration READ duration NOTIFY durationChanged) - Q_PROPERTY(int position READ position WRITE setPosition NOTIFY positionChanged) - Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged) - Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) - Q_PROPERTY(bool hasAudio READ hasAudio NOTIFY hasAudioChanged) - Q_PROPERTY(bool hasVideo READ hasVideo NOTIFY hasVideoChanged) - Q_PROPERTY(int bufferProgress READ bufferProgress NOTIFY bufferProgressChanged) - Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged) - Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged) - Q_PROPERTY(Error error READ error NOTIFY errorChanged) - Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) - Q_PROPERTY(FillMode fillMode READ fillMode WRITE setFillMode) - Q_ENUMS(FillMode) - Q_ENUMS(Status) - Q_ENUMS(Error) -public: - enum FillMode - { - Stretch = Qt::IgnoreAspectRatio, - PreserveAspectFit = Qt::KeepAspectRatio, - PreserveAspectCrop = Qt::KeepAspectRatioByExpanding - }; - - enum Status - { - UnknownStatus = QMediaPlayer::UnknownMediaStatus, - NoMedia = QMediaPlayer::NoMedia, - Loading = QMediaPlayer::LoadingMedia, - Loaded = QMediaPlayer::LoadedMedia, - Stalled = QMediaPlayer::StalledMedia, - Buffering = QMediaPlayer::BufferingMedia, - Buffered = QMediaPlayer::BufferedMedia, - EndOfMedia = QMediaPlayer::EndOfMedia, - InvalidMedia = QMediaPlayer::InvalidMedia - }; - - enum Error - { - NoError = QMediaPlayer::NoError, - ResourceError = QMediaPlayer::ResourceError, - FormatError = QMediaPlayer::FormatError, - NetworkError = QMediaPlayer::NetworkError, - AccessDenied = QMediaPlayer::AccessDeniedError, - ServiceMissing = QMediaPlayer::ServiceMissingError - }; - - QDeclarativeVideo(QDeclarativeItem *parent = 0); - ~QDeclarativeVideo(); - - bool hasAudio() const; - bool hasVideo() const; - - FillMode fillMode() const; - void setFillMode(FillMode mode); - - Status status() const; - Error error() const; - - void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); - -public Q_SLOTS: - void play(); - void pause(); - void stop(); - -Q_SIGNALS: - void sourceChanged(); - - void playingChanged(); - void pausedChanged(); - - void started(); - void resumed(); - void paused(); - void stopped(); - - void statusChanged(); - - void loaded(); - void buffering(); - void stalled(); - void buffered(); - void endOfMedia(); - - void durationChanged(); - void positionChanged(); - - void volumeChanged(); - void mutedChanged(); - void hasAudioChanged(); - void hasVideoChanged(); - - void bufferProgressChanged(); - - void seekableChanged(); - void playbackRateChanged(); - - void errorChanged(); - void error(QDeclarativeVideo::Error error, const QString &errorString); - -protected: - void geometryChanged(const QRectF &geometry, const QRectF &); - -private Q_SLOTS: - void _q_nativeSizeChanged(const QSizeF &size); - void _q_error(int, const QString &); - -private: - Q_DISABLE_COPY(QDeclarativeVideo) - - QGraphicsVideoItem *m_graphicsItem; - - Q_PRIVATE_SLOT(mediaBase(), void _q_stateChanged(QMediaPlayer::State)) - Q_PRIVATE_SLOT(mediaBase(), void _q_mediaStatusChanged(QMediaPlayer::MediaStatus)) - Q_PRIVATE_SLOT(mediaBase(), void _q_metaDataChanged()) - - inline QDeclarativeMediaBase *mediaBase() { return this; } -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeVideo)) - -QT_END_HEADER - -#endif diff --git a/src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject.cpp b/src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject.cpp deleted file mode 100644 index e90cbd6..0000000 --- a/src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject.cpp +++ /dev/null @@ -1,362 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 "qmetadatacontrolmetaobject_p.h" -#include - - -QT_BEGIN_NAMESPACE - -// copied from qmetaobject.cpp -// do not touch without touching the moc as well -enum PropertyFlags { - Invalid = 0x00000000, - Readable = 0x00000001, - Writable = 0x00000002, - Resettable = 0x00000004, - EnumOrFlag = 0x00000008, - StdCppSet = 0x00000100, -// Override = 0x00000200, - Designable = 0x00001000, - ResolveDesignable = 0x00002000, - Scriptable = 0x00004000, - ResolveScriptable = 0x00008000, - Stored = 0x00010000, - ResolveStored = 0x00020000, - Editable = 0x00040000, - ResolveEditable = 0x00080000, - User = 0x00100000, - ResolveUser = 0x00200000, - Notify = 0x00400000, - Dynamic = 0x00800000 -}; - -enum MethodFlags { - AccessPrivate = 0x00, - AccessProtected = 0x01, - AccessPublic = 0x02, - AccessMask = 0x03, //mask - - MethodMethod = 0x00, - MethodSignal = 0x04, - MethodSlot = 0x08, - MethodConstructor = 0x0c, - MethodTypeMask = 0x0c, - - MethodCompatibility = 0x10, - MethodCloned = 0x20, - MethodScriptable = 0x40 -}; - -struct QMetaObjectPrivate -{ - int revision; - int className; - int classInfoCount, classInfoData; - int methodCount, methodData; - int propertyCount, propertyData; - int enumeratorCount, enumeratorData; - int constructorCount, constructorData; - int flags; -}; - -static inline const QMetaObjectPrivate *priv(const uint* m_data) -{ return reinterpret_cast(m_data); } -// end of copied lines from qmetaobject.cpp - -namespace -{ - struct MetaDataKey - { - QtMultimedia::MetaData key; - const char *name; - }; - - const MetaDataKey qt_metaDataKeys[] = - { - { QtMultimedia::Title, "title" }, - { QtMultimedia::SubTitle, "subTitle" }, - { QtMultimedia::Author, "author" }, - { QtMultimedia::Comment, "comment" }, - { QtMultimedia::Description, "description" }, - { QtMultimedia::Category, "category" }, - { QtMultimedia::Genre, "genre" }, - { QtMultimedia::Year, "year" }, - { QtMultimedia::Date, "date" }, - { QtMultimedia::UserRating, "userRating" }, - { QtMultimedia::Keywords, "keywords" }, - { QtMultimedia::Language, "language" }, - { QtMultimedia::Publisher, "publisher" }, - { QtMultimedia::Copyright, "copyright" }, - { QtMultimedia::ParentalRating, "parentalRating" }, - { QtMultimedia::RatingOrganisation, "ratingOrganisation" }, - - // Media - { QtMultimedia::Size, "size" }, - { QtMultimedia::MediaType, "mediaType" }, -// { QtMultimedia::Duration, "duration" }, - - // Audio - { QtMultimedia::AudioBitRate, "audioBitRate" }, - { QtMultimedia::AudioCodec, "audioCodec" }, - { QtMultimedia::AverageLevel, "averageLevel" }, - { QtMultimedia::ChannelCount, "channelCount" }, - { QtMultimedia::PeakValue, "peakValue" }, - { QtMultimedia::SampleRate, "sampleRate" }, - - // Music - { QtMultimedia::AlbumTitle, "albumTitle" }, - { QtMultimedia::AlbumArtist, "albumArtist" }, - { QtMultimedia::ContributingArtist, "contributingArtist" }, - { QtMultimedia::Composer, "composer" }, - { QtMultimedia::Conductor, "conductor" }, - { QtMultimedia::Lyrics, "lyrics" }, - { QtMultimedia::Mood, "mood" }, - { QtMultimedia::TrackNumber, "trackNumber" }, - { QtMultimedia::TrackCount, "trackCount" }, - - { QtMultimedia::CoverArtUrlSmall, "coverArtUrlSmall" }, - { QtMultimedia::CoverArtUrlLarge, "coverArtUrlLarge" }, - - // Image/Video - { QtMultimedia::Resolution, "resolution" }, - { QtMultimedia::PixelAspectRatio, "pixelAspectRatio" }, - - // Video - { QtMultimedia::VideoFrameRate, "videoFrameRate" }, - { QtMultimedia::VideoBitRate, "videoBitRate" }, - { QtMultimedia::VideoCodec, "videoCodec" }, - - { QtMultimedia::PosterUrl, "posterUrl" }, - - // Movie - { QtMultimedia::ChapterNumber, "chapterNumber" }, - { QtMultimedia::Director, "director" }, - { QtMultimedia::LeadPerformer, "leadPerformer" }, - { QtMultimedia::Writer, "writer" }, - - // Photos - { QtMultimedia::CameraManufacturer, "cameraManufacturer" }, - { QtMultimedia::CameraModel, "cameraModel" }, - { QtMultimedia::Event, "event" }, - { QtMultimedia::Subject, "subject" }, - { QtMultimedia::Orientation, "orientation" }, - { QtMultimedia::ExposureTime, "exposureTime" }, - { QtMultimedia::FNumber, "fNumber" }, - { QtMultimedia::ExposureProgram, "exposureProgram" }, - { QtMultimedia::ISOSpeedRatings, "isoSpeedRatings" }, - { QtMultimedia::ExposureBiasValue, "exposureBiasValue" }, - { QtMultimedia::DateTimeOriginal, "dateTimeOriginal" }, - { QtMultimedia::DateTimeDigitized, "dateTimeDigitized" }, - { QtMultimedia::SubjectDistance, "subjectDistance" }, - { QtMultimedia::MeteringMode, "meteringMode" }, - { QtMultimedia::LightSource, "lightSource" }, - { QtMultimedia::Flash, "flash" }, - { QtMultimedia::FocalLength, "focalLength" }, - { QtMultimedia::ExposureMode, "exposureMode" }, - { QtMultimedia::WhiteBalance, "whiteBalance" }, - { QtMultimedia::DigitalZoomRatio, "digitalZoomRatio" }, - { QtMultimedia::FocalLengthIn35mmFilm, "focalLengthIn35mmFilm" }, - { QtMultimedia::SceneCaptureType, "sceneCaptureType" }, - { QtMultimedia::GainControl, "gainControl" }, - { QtMultimedia::Contrast, "contrast" }, - { QtMultimedia::Saturation, "saturation" }, - { QtMultimedia::Sharpness, "sharpness" }, - { QtMultimedia::DeviceSettingDescription, "deviceSettingDescription" } - }; - - class QMetaDataControlObject : public QObject - { - public: - inline QObjectData *data() { return d_ptr.data(); } - }; -} - -QMetaDataControlMetaObject::QMetaDataControlMetaObject(QMetaDataControl *control, QObject *object) - : m_control(control) - , m_object(object) - , m_string(0) - , m_data(0) - , m_propertyOffset(0) - , m_signalOffset(0) -{ - const QMetaObject *superClass = m_object->metaObject(); - - const int propertyCount = sizeof(qt_metaDataKeys) / sizeof(MetaDataKey); - const int dataSize = sizeof(uint) - * (13 // QMetaObjectPrivate members. - + 5 // 5 members per signal. - + 4 * propertyCount // 3 members per property + 1 notify signal per property. - + 1); // Terminating value. - - m_data = reinterpret_cast(qMalloc(dataSize)); - - QMetaObjectPrivate *pMeta = reinterpret_cast(m_data); - - pMeta->revision = 3; - pMeta->className = 0; - pMeta->classInfoCount = 0; - pMeta->classInfoData = 0; - pMeta->methodCount = 1; - pMeta->methodData = 13; - pMeta->propertyCount = propertyCount; - pMeta->propertyData = 18; - pMeta->enumeratorCount = 0; - pMeta->enumeratorData = 0; - pMeta->constructorCount = 0; - pMeta->constructorData = 0; - pMeta->flags = 0x01; // Dynamic meta object flag. - - const int classNameSize = qstrlen(superClass->className()) + 1; - - int stringIndex = classNameSize + 1; - - // __metaDataChanged() signal. - static const char *changeSignal = "__metaDataChanged()"; - const int changeSignalSize = qstrlen(changeSignal) + 1; - - m_data[13] = stringIndex; // Signature. - m_data[14] = classNameSize; // Parameters. - m_data[15] = classNameSize; // Type. - m_data[16] = classNameSize; // Tag. - m_data[17] = MethodSignal | AccessProtected; // Flags. - - stringIndex += changeSignalSize; - - const char *qvariantName = "QVariant"; - const int qvariantSize = qstrlen(qvariantName) + 1; - const int qvariantIndex = stringIndex; - - stringIndex += qvariantSize; - - // Properties. - for (int i = 0; i < propertyCount; ++i) { - m_data[18 + 3 * i] = stringIndex; // Name. - m_data[19 + 3 * i] = qvariantIndex; // Type. - m_data[20 + 3 * i] - = Readable | Writable | Notify | Dynamic | (0xffffffff << 24); // Flags. - m_data[18 + propertyCount * 3 + i] = 0; // Notify signal. - - stringIndex += qstrlen(qt_metaDataKeys[i].name) + 1; - } - - // Terminating value. - m_data[18 + propertyCount * 4] = 0; - - // Build string. - m_string = reinterpret_cast(qMalloc(stringIndex + 1)); - - // Class name. - qMemCopy(m_string, superClass->className(), classNameSize); - - stringIndex = classNameSize; - - // Null m_string. - m_string[stringIndex] = '\0'; - stringIndex += 1; - - // __metaDataChanged() signal. - qMemCopy(m_string + stringIndex, changeSignal, changeSignalSize); - stringIndex += changeSignalSize; - - qMemCopy(m_string + stringIndex, qvariantName, qvariantSize); - stringIndex += qvariantSize; - - // Properties. - for (int i = 0; i < propertyCount; ++i) { - const int propertyNameSize = qstrlen(qt_metaDataKeys[i].name) + 1; - - qMemCopy(m_string + stringIndex, qt_metaDataKeys[i].name, propertyNameSize); - stringIndex += propertyNameSize; - } - - // Terminating character. - m_string[stringIndex] = '\0'; - - d.superdata = superClass; - d.stringdata = m_string; - d.data = m_data; - d.extradata = 0; - - static_cast(m_object)->data()->metaObject = this; - - m_propertyOffset = propertyOffset(); - m_signalOffset = methodOffset(); -} - -QMetaDataControlMetaObject::~QMetaDataControlMetaObject() -{ - static_cast(m_object)->data()->metaObject = 0; - - qFree(m_data); - qFree(m_string); -} - -int QMetaDataControlMetaObject::metaCall(QMetaObject::Call c, int id, void **a) -{ - if (c == QMetaObject::ReadProperty && id >= m_propertyOffset) { - int propId = id - m_propertyOffset; - - *reinterpret_cast(a[0]) = m_control->metaData(qt_metaDataKeys[propId].key); - - return -1; - } else if (c == QMetaObject::WriteProperty && id >= m_propertyOffset) { - int propId = id - m_propertyOffset; - - m_control->setMetaData(qt_metaDataKeys[propId].key, *reinterpret_cast(a[0])); - - return -1; - } else { - return m_object->qt_metacall(c, id, a); - } -} - -int QMetaDataControlMetaObject::createProperty(const char *, const char *) -{ - return -1; -} - -void QMetaDataControlMetaObject::metaDataChanged() -{ - activate(m_object, m_signalOffset, 0); -} - -QT_END_NAMESPACE diff --git a/src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject_p.h b/src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject_p.h deleted file mode 100644 index c381f2d..0000000 --- a/src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject_p.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the plugins 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 QMETADATACONTROLMETAOBJECT_P_H -#define QMETADATACONTROLMETAOJBECT_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of other Qt classes. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include -#include - -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -class QMetaDataControl; - -class QMetaDataControlMetaObject : public QAbstractDynamicMetaObject -{ -public: - QMetaDataControlMetaObject(QMetaDataControl *control, QObject *object); - ~QMetaDataControlMetaObject(); - - int metaCall(QMetaObject::Call call, int _id, void **arguments); - int createProperty(const char *, const char *); - - void metaDataChanged(); - -private: - QMetaDataControl *m_control; - QObject *m_object; - char *m_string; - uint *m_data; - - int m_propertyOffset; - int m_signalOffset; -}; - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif -- cgit v0.12 From 372f474d97f2169597f994ee80e6c3d5b7f6d7bf Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 4 Mar 2010 17:16:54 +1000 Subject: Mark QGraphicsItem position properties as FINAL Some of these properties were already final, so this improves the consistency. QTBUG-7948. --- src/gui/graphicsview/qgraphicsitem.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsitem.h b/src/gui/graphicsview/qgraphicsitem.h index d72833b..56f94a2 100644 --- a/src/gui/graphicsview/qgraphicsitem.h +++ b/src/gui/graphicsview/qgraphicsitem.h @@ -540,10 +540,10 @@ class Q_GUI_EXPORT QGraphicsObject : public QObject, public QGraphicsItem Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged FINAL) Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged) Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) - Q_PROPERTY(QPointF pos READ pos WRITE setPos) - Q_PROPERTY(qreal x READ x WRITE setX NOTIFY xChanged) - Q_PROPERTY(qreal y READ y WRITE setY NOTIFY yChanged) - Q_PROPERTY(qreal z READ zValue WRITE setZValue NOTIFY zChanged) + Q_PROPERTY(QPointF pos READ pos WRITE setPos FINAL) + Q_PROPERTY(qreal x READ x WRITE setX NOTIFY xChanged FINAL) + Q_PROPERTY(qreal y READ y WRITE setY NOTIFY yChanged FINAL) + Q_PROPERTY(qreal z READ zValue WRITE setZValue NOTIFY zChanged FINAL) Q_PROPERTY(qreal rotation READ rotation WRITE setRotation NOTIFY rotationChanged) Q_PROPERTY(qreal scale READ scale WRITE setScale NOTIFY scaleChanged) Q_PROPERTY(QPointF transformOriginPoint READ transformOriginPoint WRITE setTransformOriginPoint) -- cgit v0.12 From 4802116c73c0b9ee80dddc8ef4720bfdbde4e885 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Thu, 4 Mar 2010 17:20:52 +1000 Subject: Add support for tab and backtab in KeyNavigation Task-number: QT-3046 --- src/declarative/graphicsitems/qdeclarativeitem.cpp | 88 ++++++++++++++++++---- src/declarative/graphicsitems/qdeclarativeitem_p.h | 13 +++- 2 files changed, 87 insertions(+), 14 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index 5014fd8..3bee5b8 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -498,6 +498,32 @@ void QDeclarativeKeyNavigationAttached::setDown(QDeclarativeItem *i) emit changed(); } +QDeclarativeItem *QDeclarativeKeyNavigationAttached::tab() const +{ + Q_D(const QDeclarativeKeyNavigationAttached); + return d->tab; +} + +void QDeclarativeKeyNavigationAttached::setTab(QDeclarativeItem *i) +{ + Q_D(QDeclarativeKeyNavigationAttached); + d->tab = i; + emit changed(); +} + +QDeclarativeItem *QDeclarativeKeyNavigationAttached::backtab() const +{ + Q_D(const QDeclarativeKeyNavigationAttached); + return d->backtab; +} + +void QDeclarativeKeyNavigationAttached::setBacktab(QDeclarativeItem *i) +{ + Q_D(QDeclarativeKeyNavigationAttached); + d->backtab = i; + emit changed(); +} + void QDeclarativeKeyNavigationAttached::keyPressed(QKeyEvent *event) { Q_D(QDeclarativeKeyNavigationAttached); @@ -529,6 +555,18 @@ void QDeclarativeKeyNavigationAttached::keyPressed(QKeyEvent *event) event->accept(); } break; + case Qt::Key_Tab: + if (d->tab) { + d->tab->setFocus(true); + event->accept(); + } + break; + case Qt::Key_Backtab: + if (d->backtab) { + d->backtab->setFocus(true); + event->accept(); + } + break; default: break; } @@ -563,6 +601,16 @@ void QDeclarativeKeyNavigationAttached::keyReleased(QKeyEvent *event) event->accept(); } break; + case Qt::Key_Tab: + if (d->tab) { + event->accept(); + } + break; + case Qt::Key_Backtab: + if (d->backtab) { + event->accept(); + } + break; default: break; } @@ -902,6 +950,8 @@ const QDeclarativeKeysAttached::SigMap QDeclarativeKeysAttached::sigMap[] = { { Qt::Key_Right, "rightPressed" }, { Qt::Key_Up, "upPressed" }, { Qt::Key_Down, "downPressed" }, + { Qt::Key_Tab, "tabPressed" }, + { Qt::Key_Backtab, "backtabPressed" }, { Qt::Key_Asterisk, "asteriskPressed" }, { Qt::Key_NumberSign, "numberSignPressed" }, { Qt::Key_Escape, "escapePressed" }, @@ -1440,7 +1490,7 @@ QDeclarativeAnchors *QDeclarativeItem::anchors() void QDeclarativeItemPrivate::data_append(QDeclarativeListProperty *prop, QObject *o) { QDeclarativeItem *i = qobject_cast(o); - if (i) + if (i) i->setParentItem(static_cast(prop->object)); else o->setParent(static_cast(prop->object)); @@ -1568,7 +1618,7 @@ void QDeclarativeItemPrivate::transform_clear(QDeclarativeListProperty QDeclarativeItem::data() +QDeclarativeListProperty QDeclarativeItem::data() { return QDeclarativeListProperty(this, 0, QDeclarativeItemPrivate::data_append); } @@ -2179,16 +2229,16 @@ void QDeclarativeItem::focusChanged(bool flag) QDeclarativeListProperty QDeclarativeItem::fxChildren() { return QDeclarativeListProperty(this, 0, QDeclarativeItemPrivate::children_append, - QDeclarativeItemPrivate::children_count, - QDeclarativeItemPrivate::children_at); + QDeclarativeItemPrivate::children_count, + QDeclarativeItemPrivate::children_at); } /*! \internal */ QDeclarativeListProperty QDeclarativeItem::resources() { - return QDeclarativeListProperty(this, 0, QDeclarativeItemPrivate::resources_append, - QDeclarativeItemPrivate::resources_count, - QDeclarativeItemPrivate::resources_at); + return QDeclarativeListProperty(this, 0, QDeclarativeItemPrivate::resources_append, + QDeclarativeItemPrivate::resources_count, + QDeclarativeItemPrivate::resources_at); } /*! @@ -2465,14 +2515,26 @@ QPointF QDeclarativeItemPrivate::computeTransformOrigin() const /*! \internal */ bool QDeclarativeItem::sceneEvent(QEvent *event) { - bool rv = QGraphicsItem::sceneEvent(event); + if (event->type() == QEvent::KeyPress) { + QKeyEvent *k = static_cast(event); - if (event->type() == QEvent::FocusIn || - event->type() == QEvent::FocusOut) { - focusChanged(hasFocus()); - } + if ((k->key() == Qt::Key_Tab || k->key() == Qt::Key_Backtab) && + !(k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) { + keyPressEvent(static_cast(event)); + if (!event->isAccepted()) + QGraphicsItem::sceneEvent(event); + } else { + QGraphicsItem::sceneEvent(event); + } + } else { + bool rv = QGraphicsItem::sceneEvent(event); - return rv; + if (event->type() == QEvent::FocusIn || + event->type() == QEvent::FocusOut) { + focusChanged(hasFocus()); + } + return rv; + } } /*! \internal */ diff --git a/src/declarative/graphicsitems/qdeclarativeitem_p.h b/src/declarative/graphicsitems/qdeclarativeitem_p.h index 4b4917e..e424970 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem_p.h +++ b/src/declarative/graphicsitems/qdeclarativeitem_p.h @@ -289,12 +289,14 @@ class QDeclarativeKeyNavigationAttachedPrivate : public QObjectPrivate { public: QDeclarativeKeyNavigationAttachedPrivate() - : QObjectPrivate(), left(0), right(0), up(0), down(0) {} + : QObjectPrivate(), left(0), right(0), up(0), down(0), tab(0), backtab(0) {} QDeclarativeItem *left; QDeclarativeItem *right; QDeclarativeItem *up; QDeclarativeItem *down; + QDeclarativeItem *tab; + QDeclarativeItem *backtab; }; class QDeclarativeKeyNavigationAttached : public QObject, public QDeclarativeItemKeyFilter @@ -306,6 +308,9 @@ class QDeclarativeKeyNavigationAttached : public QObject, public QDeclarativeIte Q_PROPERTY(QDeclarativeItem *right READ right WRITE setRight NOTIFY changed) Q_PROPERTY(QDeclarativeItem *up READ up WRITE setUp NOTIFY changed) Q_PROPERTY(QDeclarativeItem *down READ down WRITE setDown NOTIFY changed) + Q_PROPERTY(QDeclarativeItem *tab READ tab WRITE setTab NOTIFY changed) + Q_PROPERTY(QDeclarativeItem *backtab READ backtab WRITE setBacktab NOTIFY changed) + public: QDeclarativeKeyNavigationAttached(QObject * = 0); @@ -317,6 +322,10 @@ public: void setUp(QDeclarativeItem *); QDeclarativeItem *down() const; void setDown(QDeclarativeItem *); + QDeclarativeItem *tab() const; + void setTab(QDeclarativeItem *); + QDeclarativeItem *backtab() const; + void setBacktab(QDeclarativeItem *); static QDeclarativeKeyNavigationAttached *qmlAttachedProperties(QObject *); @@ -407,6 +416,8 @@ Q_SIGNALS: void rightPressed(QDeclarativeKeyEvent *event); void upPressed(QDeclarativeKeyEvent *event); void downPressed(QDeclarativeKeyEvent *event); + void tabPressed(QDeclarativeKeyEvent *event); + void backtabPressed(QDeclarativeKeyEvent *event); void asteriskPressed(QDeclarativeKeyEvent *event); void numberSignPressed(QDeclarativeKeyEvent *event); -- cgit v0.12 From 787da2f188c34fd932662ee0229908bec8c4c91a Mon Sep 17 00:00:00 2001 From: Dmytro Poplavskiy Date: Thu, 4 Mar 2010 17:21:33 +1000 Subject: Added playlist playback modes combo box to player demo Reviewed-by: Justin McPherson --- demos/multimedia/player/player.cpp | 28 +++++++++++++++++++++++++++- demos/multimedia/player/player.h | 3 +++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/demos/multimedia/player/player.cpp b/demos/multimedia/player/player.cpp index 49d18cb..af30a97 100644 --- a/demos/multimedia/player/player.cpp +++ b/demos/multimedia/player/player.cpp @@ -81,6 +81,22 @@ Player::Player(QWidget *parent) connect(playlistView, SIGNAL(activated(QModelIndex)), this, SLOT(jump(QModelIndex))); + playbackModeBox = new QComboBox; + playbackModeBox->addItem(tr("Linear"), + QVariant::fromValue(QMediaPlaylist::Linear)); + playbackModeBox->addItem(tr("Loop"), + QVariant::fromValue(QMediaPlaylist::Loop)); + playbackModeBox->addItem(tr("Random"), + QVariant::fromValue(QMediaPlaylist::Random)); + playbackModeBox->addItem(tr("Current Item Once"), + QVariant::fromValue(QMediaPlaylist::CurrentItemOnce)); + playbackModeBox->addItem(tr("Current Item In Loop"), + QVariant::fromValue(QMediaPlaylist::CurrentItemInLoop)); + playbackModeBox->setCurrentIndex(0); + + connect(playbackModeBox, SIGNAL(activated(int)), SLOT(updatePlaybackMode())); + updatePlaybackMode(); + slider = new QSlider(Qt::Horizontal); slider->setRange(0, player->duration() / 1000); @@ -126,12 +142,16 @@ Player::Player(QWidget *parent) else colorButton->setEnabled(false); + QBoxLayout *playlistLayout = new QVBoxLayout; + playlistLayout->addWidget(playlistView); + playlistLayout->addWidget(playbackModeBox); + QBoxLayout *displayLayout = new QHBoxLayout; if (videoWidget) displayLayout->addWidget(videoWidget, 2); else displayLayout->addWidget(coverLabel, 2); - displayLayout->addWidget(playlistView); + displayLayout->addLayout(playlistLayout); QBoxLayout *controlLayout = new QHBoxLayout; controlLayout->setMargin(0); @@ -333,3 +353,9 @@ void Player::showColorDialog() } colorDialog->show(); } + +void Player::updatePlaybackMode() +{ + playlist->setPlaybackMode( + playbackModeBox->itemData(playbackModeBox->currentIndex()).value()); +} diff --git a/demos/multimedia/player/player.h b/demos/multimedia/player/player.h index 1de8b1a..cda3eb9 100644 --- a/demos/multimedia/player/player.h +++ b/demos/multimedia/player/player.h @@ -57,6 +57,7 @@ class QAbstractItemView; class QLabel; class QModelIndex; class QSlider; +class QComboBox; class QMediaPlayer; class QVideoWidget; class PlaylistModel; @@ -87,6 +88,7 @@ private slots: void bufferingProgress(int progress); void showColorDialog(); + void updatePlaybackMode(); private: void setTrackInfo(const QString &info); @@ -97,6 +99,7 @@ private: QVideoWidget *videoWidget; QLabel *coverLabel; QSlider *slider; + QComboBox *playbackModeBox; PlaylistModel *playlistModel; QAbstractItemView *playlistView; QDialog *colorDialog; -- cgit v0.12 From c871d201a65b1524c0590e2d6ad77b8666338b08 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 4 Mar 2010 17:23:09 +1000 Subject: Fixup test --- tests/auto/declarative/qdeclarativeecmascript/data/methods.5.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/methods.5.qml b/tests/auto/declarative/qdeclarativeecmascript/data/methods.5.qml index 3d45b15..5ba324a 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/methods.5.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/methods.5.qml @@ -1,7 +1,7 @@ import Qt 4.6 Item { - property alias x: item.x + property alias blah: item.x Item { id: item } function testFunction() { return 9; } -- cgit v0.12 From 53af250a5366b4259bfb97a6b3c29c31e0aa10e0 Mon Sep 17 00:00:00 2001 From: Dmytro Poplavskiy Date: Thu, 4 Mar 2010 17:23:22 +1000 Subject: Debug media player status and media state changes. Disabled by default. Reviewed-by: Justin McPherson --- src/multimedia/playback/qmediaplayer.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp index 8056878..9466cad 100644 --- a/src/multimedia/playback/qmediaplayer.cpp +++ b/src/multimedia/playback/qmediaplayer.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include @@ -55,6 +56,7 @@ #include #include +//#define DEBUG_PLAYER_STATE QT_BEGIN_HEADER @@ -152,10 +154,16 @@ public: void _q_playlistDestroyed(); }; +#define ENUM_NAME(c,e,v) (c::staticMetaObject.enumerator(c::staticMetaObject.indexOfEnumerator(e)).valueToKey((v))) + void QMediaPlayerPrivate::_q_stateChanged(QMediaPlayer::State ps) { Q_Q(QMediaPlayer); +#ifdef DEBUG_PLAYER_STATE + qDebug() << "State changed:" << ENUM_NAME(QMediaPlayer, "State", ps) << (filterStates ? "(filtered)" : ""); +#endif + if (filterStates) return; @@ -183,6 +191,10 @@ void QMediaPlayerPrivate::_q_mediaStatusChanged(QMediaPlayer::MediaStatus status { Q_Q(QMediaPlayer); +#ifdef DEBUG_PLAYER_STATE + qDebug() << "MediaStatus changed:" << ENUM_NAME(QMediaPlayer, "MediaStatus", status); +#endif + switch (status) { case QMediaPlayer::StalledMedia: case QMediaPlayer::BufferingMedia: @@ -230,8 +242,12 @@ void QMediaPlayerPrivate::_q_updateMedia(const QMediaContent &media) state = control->state(); - if (state != currentState) + if (state != currentState) { +#ifdef DEBUG_PLAYER_STATE + qDebug() << "State changed:" << ENUM_NAME(QMediaPlayer, "State", state); +#endif emit q_func()->stateChanged(state); + } } void QMediaPlayerPrivate::_q_playlistDestroyed() -- cgit v0.12 From 5a3b9d3daf64ea686427478391d3773c5a1e024e Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Thu, 4 Mar 2010 17:26:19 +1000 Subject: WaveDecoder; be more permissive in handling of wave file formats. Reviewed-by: Dmytro Poplavskiy --- src/multimedia/effects/wavedecoder_p.cpp | 21 ++++++++++++++++----- src/multimedia/effects/wavedecoder_p.h | 1 - 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/multimedia/effects/wavedecoder_p.cpp b/src/multimedia/effects/wavedecoder_p.cpp index f2277ae..b534ded 100644 --- a/src/multimedia/effects/wavedecoder_p.cpp +++ b/src/multimedia/effects/wavedecoder_p.cpp @@ -55,7 +55,7 @@ WaveDecoder::WaveDecoder(QIODevice *s, QObject *parent): { open(QIODevice::ReadOnly | QIODevice::Unbuffered); - if (source->bytesAvailable() >= sizeof(CombinedHeader)) + if (source->bytesAvailable() >= qint64(sizeof(CombinedHeader) + sizeof(DATAHeader) + sizeof(quint16))) QTimer::singleShot(0, this, SLOT(handleData())); else connect(source, SIGNAL(readyRead()), SLOT(handleData())); @@ -105,7 +105,7 @@ qint64 WaveDecoder::writeData(const char *data, qint64 len) void WaveDecoder::handleData() { - if (source->bytesAvailable() < sizeof(CombinedHeader)) + if (source->bytesAvailable() < qint64(sizeof(CombinedHeader) + sizeof(DATAHeader) + sizeof(quint16))) return; source->disconnect(SIGNAL(readyRead()), this, SLOT(handleData())); @@ -114,12 +114,23 @@ void WaveDecoder::handleData() if (qstrncmp(header.riff.descriptor.id, "RIFF", 4) != 0 || qstrncmp(header.riff.type, "WAVE", 4) != 0 || qstrncmp(header.wave.descriptor.id, "fmt ", 4) != 0 || - (header.wave.audioFormat != 0 && header.wave.audioFormat != 1) || - qstrncmp(header.data.descriptor.id, "data", 4) != 0) { + (header.wave.audioFormat != 0 && header.wave.audioFormat != 1)) { emit invalidFormat(); } else { + DATAHeader dataHeader; + + if (qFromLittleEndian(header.wave.descriptor.size) > sizeof(WAVEHeader)) { + // Extended data available + quint16 extraFormatBytes; + source->peek((char*)&extraFormatBytes, sizeof(quint16)); + extraFormatBytes = qFromLittleEndian(extraFormatBytes); + source->read(sizeof(quint16) + extraFormatBytes); // dump it all + } + + source->read((char*)&dataHeader, sizeof(DATAHeader)); + int bps = qFromLittleEndian(header.wave.bitsPerSample); format.setCodec(QLatin1String("audio/pcm")); @@ -129,7 +140,7 @@ void WaveDecoder::handleData() format.setSampleSize(bps); format.setChannels(qFromLittleEndian(header.wave.numChannels)); - dataSize = qFromLittleEndian(header.data.descriptor.size); + dataSize = qFromLittleEndian(dataHeader.descriptor.size); haveFormat = true; connect(source, SIGNAL(readyRead()), SIGNAL(readyRead())); diff --git a/src/multimedia/effects/wavedecoder_p.h b/src/multimedia/effects/wavedecoder_p.h index 00aa14e..fa1f77e 100644 --- a/src/multimedia/effects/wavedecoder_p.h +++ b/src/multimedia/effects/wavedecoder_p.h @@ -116,7 +116,6 @@ private: { RIFFHeader riff; WAVEHeader wave; - DATAHeader data; }; bool haveFormat; -- cgit v0.12 From 445ae84fbd7d5ef04a426f8c32a79a369fed70eb Mon Sep 17 00:00:00 2001 From: Aaron McCarthy Date: Thu, 4 Mar 2010 17:33:43 +1000 Subject: Prefer ethernet over wlan. Change how the defaultConfiguration is calculated when one is not provided by an engine. --- src/network/bearer/qnetworkconfigmanager.cpp | 69 ++++++++++++++++++++-------- 1 file changed, 51 insertions(+), 18 deletions(-) diff --git a/src/network/bearer/qnetworkconfigmanager.cpp b/src/network/bearer/qnetworkconfigmanager.cpp index 0eb9c63..b631cf1 100644 --- a/src/network/bearer/qnetworkconfigmanager.cpp +++ b/src/network/bearer/qnetworkconfigmanager.cpp @@ -227,7 +227,7 @@ QNetworkConfiguration QNetworkConfigurationManager::defaultConfiguration() const // Engines don't have a default configuration. // Return first active snap - QNetworkConfigurationPrivatePointer firstDiscovered; + QNetworkConfigurationPrivatePointer defaultConfiguration; foreach (QBearerEngine *engine, conPriv->engines()) { QHash::Iterator it; @@ -242,22 +242,35 @@ QNetworkConfiguration QNetworkConfigurationManager::defaultConfiguration() const QNetworkConfiguration config; config.d = it.value(); return config; - } else if ((it.value()->state & QNetworkConfiguration::Discovered) == - QNetworkConfiguration::Discovered) { - firstDiscovered = it.value(); + } else if (!defaultConfiguration) { + if ((it.value()->state & QNetworkConfiguration::Discovered) == + QNetworkConfiguration::Discovered) { + defaultConfiguration = it.value(); + } } } } // No Active SNAPs return first Discovered SNAP. - if (firstDiscovered) { + if (defaultConfiguration) { QNetworkConfiguration config; - config.d = firstDiscovered; + config.d = defaultConfiguration; return config; } - // No Active or Discovered SNAPs, do same for InternetAccessPoints. - firstDiscovered.reset(); + /* + No Active or Discovered SNAPs, find the perferred access point. + The following priority order is used: + + 1. Active Ethernet + 2. Active WLAN + 3. Active Other + 4. Discovered Ethernet + 5. Discovered WLAN + 6. Discovered Other + */ + + defaultConfiguration.reset(); foreach (QBearerEngine *engine, conPriv->engines()) { QHash::Iterator it; @@ -267,22 +280,42 @@ QNetworkConfiguration QNetworkConfigurationManager::defaultConfiguration() const for (it = engine->accessPointConfigurations.begin(), end = engine->accessPointConfigurations.end(); it != end; ++it) { - if ((it.value()->state & QNetworkConfiguration::Active) == - QNetworkConfiguration::Active) { - QNetworkConfiguration config; - config.d = it.value(); - return config; - } else if ((it.value()->state & QNetworkConfiguration::Discovered) == - QNetworkConfiguration::Discovered) { - firstDiscovered = it.value(); + + if ((it.value()->state & QNetworkConfiguration::Discovered) == + QNetworkConfiguration::Discovered) { + if (!defaultConfiguration) { + defaultConfiguration = it.value(); + } else { + if (defaultConfiguration->state == it.value()->state) { + if (defaultConfiguration->bearerName() == QLatin1String("Ethernet")) { + // do nothing + } else if (defaultConfiguration->bearerName() == QLatin1String("WLAN")) { + // ethernet beats wlan + if (it.value()->bearerName() == QLatin1String("Ethernet")) + defaultConfiguration = it.value(); + } else { + // ethernet and wlan beats other + if (it.value()->bearerName() == QLatin1String("Ethernet") || + it.value()->bearerName() == QLatin1String("WLAN")) { + defaultConfiguration = it.value(); + } + } + } else { + // active beats discovered + if ((defaultConfiguration->state & QNetworkConfiguration::Active) != + QNetworkConfiguration::Active) { + defaultConfiguration = it.value(); + } + } + } } } } // No Active InternetAccessPoint return first Discovered InternetAccessPoint. - if (firstDiscovered) { + if (defaultConfiguration) { QNetworkConfiguration config; - config.d = firstDiscovered; + config.d = defaultConfiguration; return config; } -- cgit v0.12 From 6633234f5f19899dc54510b2bddb2ae1afd38318 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 4 Mar 2010 18:12:45 +1000 Subject: Run signal expressions on attached property objects in correct scope QTBUG-8677 --- src/declarative/qml/qdeclarativecompiler.cpp | 13 +++++++++---- src/declarative/qml/qdeclarativecompiler_p.h | 1 + src/declarative/qml/qdeclarativeinstruction_p.h | 1 + src/declarative/qml/qdeclarativevme.cpp | 8 ++++---- .../data/attachedPropertyScope.qml | 9 +++++++++ .../declarative/qdeclarativeecmascript/testtypes.h | 13 ++++++++++++- .../tst_qdeclarativeecmascript.cpp | 21 +++++++++++++++++++++ .../data/attachedProperties.qml | 2 -- .../tst_qdeclarativelanguage.cpp | 5 ----- 9 files changed, 57 insertions(+), 16 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/attachedPropertyScope.qml diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 32c746f..5a2f3b5 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -983,12 +983,15 @@ void QDeclarativeCompiler::genObjectBody(QDeclarativeParser::Object *obj) } else if (v->type == Value::SignalExpression) { + BindingContext ctxt = compileState.signalExpressions.value(v); + QDeclarativeInstruction store; store.type = QDeclarativeInstruction::StoreSignal; store.line = v->location.start.line; store.storeSignal.signalIndex = prop->index; store.storeSignal.value = output->indexForString(v->value.asScript().trimmed()); + store.storeSignal.context = ctxt.stack; output->bytecode << store; } @@ -1321,7 +1324,7 @@ QMetaMethod QDeclarativeCompiler::findSignalByName(const QMetaObject *mo, const } bool QDeclarativeCompiler::buildSignal(QDeclarativeParser::Property *prop, QDeclarativeParser::Object *obj, - const BindingContext &ctxt) + const BindingContext &ctxt) { Q_ASSERT(obj->metaObject()); Q_ASSERT(!prop->isEmpty()); @@ -1357,6 +1360,8 @@ bool QDeclarativeCompiler::buildSignal(QDeclarativeParser::Property *prop, QDecl QString script = prop->values.at(0)->value.asScript().trimmed(); if (script.isEmpty()) COMPILE_EXCEPTION(prop, QCoreApplication::translate("QDeclarativeCompiler","Empty signal assignment")); + + compileState.signalExpressions.insert(prop->values.at(0), ctxt); } } @@ -2608,9 +2613,9 @@ bool QDeclarativeCompiler::buildBinding(QDeclarativeParser::Value *value, } void QDeclarativeCompiler::genBindingAssignment(QDeclarativeParser::Value *binding, - QDeclarativeParser::Property *prop, - QDeclarativeParser::Object *obj, - QDeclarativeParser::Property *valueTypeProperty) + QDeclarativeParser::Property *prop, + QDeclarativeParser::Object *obj, + QDeclarativeParser::Property *valueTypeProperty) { Q_UNUSED(obj); Q_ASSERT(compileState.bindings.contains(binding)); diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h index f8ada95..cca42e2 100644 --- a/src/declarative/qml/qdeclarativecompiler_p.h +++ b/src/declarative/qml/qdeclarativecompiler_p.h @@ -307,6 +307,7 @@ private: QByteArray compiledBindingData; QHash bindings; + QHash signalExpressions; QList aliasingObjects; QDeclarativeParser::Object *root; }; diff --git a/src/declarative/qml/qdeclarativeinstruction_p.h b/src/declarative/qml/qdeclarativeinstruction_p.h index d8af6a7..c41b14f 100644 --- a/src/declarative/qml/qdeclarativeinstruction_p.h +++ b/src/declarative/qml/qdeclarativeinstruction_p.h @@ -293,6 +293,7 @@ public: struct { int signalIndex; int value; + int context; } storeSignal; struct { int signal; diff --git a/src/declarative/qml/qdeclarativevme.cpp b/src/declarative/qml/qdeclarativevme.cpp index fc3722d..6a08674 100644 --- a/src/declarative/qml/qdeclarativevme.cpp +++ b/src/declarative/qml/qdeclarativevme.cpp @@ -538,13 +538,13 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack &stack, QDeclarati case QDeclarativeInstruction::StoreSignal: { QObject *target = stack.top(); - // XXX scope - QMetaMethod signal = - target->metaObject()->method(instr.storeSignal.signalIndex); + QObject *context = stack.at(stack.count() - 1 - instr.assignBinding.context); + + QMetaMethod signal = target->metaObject()->method(instr.storeSignal.signalIndex); QDeclarativeBoundSignal *bs = new QDeclarativeBoundSignal(target, signal, target); QDeclarativeExpression *expr = - new QDeclarativeExpression(ctxt, primitives.at(instr.storeSignal.value), target); + new QDeclarativeExpression(ctxt, primitives.at(instr.storeSignal.value), context); expr->setSourceLocation(comp->name, instr.line); bs->setExpression(expr); } diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/attachedPropertyScope.qml b/tests/auto/declarative/qdeclarativeecmascript/data/attachedPropertyScope.qml new file mode 100644 index 0000000..4b5464d --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/attachedPropertyScope.qml @@ -0,0 +1,9 @@ +import Qt 4.6 +import Qt.test 1.0 + +QtObject { + property int value: 9 + property int value2 + + MyQmlObject.onMySignal: value2 = value +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h index 8fbd071..a283e3f 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h +++ b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h @@ -60,10 +60,21 @@ class MyQmlAttachedObject : public QObject { Q_OBJECT Q_PROPERTY(int value READ value CONSTANT) + Q_PROPERTY(int value2 READ value2 WRITE setValue2) public: - MyQmlAttachedObject(QObject *parent) : QObject(parent) {} + MyQmlAttachedObject(QObject *parent) : QObject(parent), m_value2(0) {} int value() const { return 19; } + int value2() const { return m_value2; } + void setValue2(int v) { m_value2 = v; } + + void emitMySignal() { emit mySignal(); } + +signals: + void mySignal(); + +private: + int m_value2; }; class MyQmlObject : public QObject diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 75ee7ce..2e00e10 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -123,6 +123,7 @@ private slots: void multiEngineObject(); void deletedObject(); void scriptScope(); + void attachedPropertyScope(); void bug1(); @@ -1693,6 +1694,26 @@ void tst_qdeclarativeecmascript::scriptScope() } } +void tst_qdeclarativeecmascript::attachedPropertyScope() +{ + QDeclarativeComponent component(&engine, TEST_FILE("attachedPropertyScope.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + MyQmlAttachedObject *attached = + qobject_cast(qmlAttachedPropertiesObject(object)); + QVERIFY(attached != 0); + + QCOMPARE(object->property("value2").toInt(), 0); + + attached->emitMySignal(); + + QCOMPARE(object->property("value2").toInt(), 9); + + delete object; +} + QTEST_MAIN(tst_qdeclarativeecmascript) #include "tst_qdeclarativeecmascript.moc" diff --git a/tests/auto/declarative/qdeclarativelanguage/data/attachedProperties.qml b/tests/auto/declarative/qdeclarativelanguage/data/attachedProperties.qml index aecb3c3..b46ec34 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/attachedProperties.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/attachedProperties.qml @@ -3,8 +3,6 @@ import Test 1.0 as Namespace import Qt 4.6 QtObject { - property int value2: 8 MyQmlObject.value: 10 Namespace.MyQmlObject.value2: 13 - MyQmlObject.onValueChanged: value2 = MyQmlObject.value } diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index a339a6d..3ce15cb 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -718,11 +718,6 @@ void tst_qdeclarativelanguage::attachedProperties() QVERIFY(attached != 0); QCOMPARE(attached->property("value"), QVariant(10)); QCOMPARE(attached->property("value2"), QVariant(13)); - - QEXPECT_FAIL("", "QTBUG-8677", Abort); - attached->setProperty("value", QVariant(12)); - int val = object->property("value2").toInt(); - QCOMPARE(val, 12); } // Tests non-static object properties -- cgit v0.12 From a65e37f0fd48158403296d5ca9ffa0f0feae2940 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Thu, 4 Mar 2010 18:17:24 +1000 Subject: Add autotests for tab and backtab in Keys and KeyNavigation. --- .../qdeclarativeitem/data/keynavigation.qml | 8 +++++ .../declarative/qdeclarativeitem/data/keys.qml | 2 ++ .../qdeclarativeitem/tst_qdeclarativeitem.cpp | 38 ++++++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/tests/auto/declarative/qdeclarativeitem/data/keynavigation.qml b/tests/auto/declarative/qdeclarativeitem/data/keynavigation.qml index 9281a17..08da901 100644 --- a/tests/auto/declarative/qdeclarativeitem/data/keynavigation.qml +++ b/tests/auto/declarative/qdeclarativeitem/data/keynavigation.qml @@ -11,6 +11,8 @@ Grid { color: focus ? "red" : "lightgray" KeyNavigation.right: item2 KeyNavigation.down: item3 + KeyNavigation.tab: item2 + KeyNavigation.backtab: item4 } Rectangle { id: item2 @@ -19,6 +21,8 @@ Grid { color: focus ? "red" : "lightgray" KeyNavigation.left: item1 KeyNavigation.down: item4 + KeyNavigation.tab: item3 + KeyNavigation.backtab: item1 } Rectangle { id: item3 @@ -27,6 +31,8 @@ Grid { color: focus ? "red" : "lightgray" KeyNavigation.right: item4 KeyNavigation.up: item1 + KeyNavigation.tab: item4 + KeyNavigation.backtab: item2 } Rectangle { id: item4 @@ -35,5 +41,7 @@ Grid { color: focus ? "red" : "lightgray" KeyNavigation.left: item3 KeyNavigation.up: item2 + KeyNavigation.tab: item1 + KeyNavigation.backtab: item3 } } diff --git a/tests/auto/declarative/qdeclarativeitem/data/keys.qml b/tests/auto/declarative/qdeclarativeitem/data/keys.qml index f3c1f7b..7d34fc8 100644 --- a/tests/auto/declarative/qdeclarativeitem/data/keys.qml +++ b/tests/auto/declarative/qdeclarativeitem/data/keys.qml @@ -7,6 +7,8 @@ Item { Keys.onReturnPressed: keysTestObject.keyPress(event.key, "Return", event.modifiers) Keys.onDigit0Pressed: keysTestObject.keyPress(event.key, event.text, event.modifiers) Keys.onDigit9Pressed: { event.accepted = false; keysTestObject.keyPress(event.key, event.text, event.modifiers) } + Keys.onTabPressed: keysTestObject.keyPress(event.key, "Tab", event.modifiers) + Keys.onBacktabPressed: keysTestObject.keyPress(event.key, "Backtab", event.modifiers) Keys.forwardTo: [ item2 ] Keys.enabled: enableKeyHanding diff --git a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp index 36dcf1f..dbcba16 100644 --- a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp +++ b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp @@ -176,6 +176,26 @@ void tst_QDeclarativeItem::keys() testObject->reset(); + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QCOMPARE(testObject->mKey, int(Qt::Key_Tab)); + QCOMPARE(testObject->mForwardedKey, int(Qt::Key_Tab)); + QCOMPARE(testObject->mText, QLatin1String("Tab")); + QVERIFY(testObject->mModifiers == Qt::NoModifier); + QVERIFY(key.isAccepted()); + + testObject->reset(); + + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Backtab, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QCOMPARE(testObject->mKey, int(Qt::Key_Backtab)); + QCOMPARE(testObject->mForwardedKey, int(Qt::Key_Backtab)); + QCOMPARE(testObject->mText, QLatin1String("Backtab")); + QVERIFY(testObject->mModifiers == Qt::NoModifier); + QVERIFY(key.isAccepted()); + + testObject->reset(); + canvas->rootContext()->setContextProperty("enableKeyHanding", QVariant(false)); key = QKeyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier, "", false, 1); @@ -240,6 +260,24 @@ void tst_QDeclarativeItem::keyNavigation() item = findItem(canvas->rootObject(), "item1"); QVERIFY(item); QVERIFY(item->hasFocus()); + + // tab + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QVERIFY(key.isAccepted()); + + item = findItem(canvas->rootObject(), "item2"); + QVERIFY(item); + QVERIFY(item->hasFocus()); + + // backtab + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Backtab, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QVERIFY(key.isAccepted()); + + item = findItem(canvas->rootObject(), "item1"); + QVERIFY(item); + QVERIFY(item->hasFocus()); } void tst_QDeclarativeItem::smooth() -- cgit v0.12 From 83cbbd6c4c9ff2f00651c31af0d52845b2e98390 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 4 Mar 2010 18:22:49 +1000 Subject: Add testcase for QTBUG-7730 --- .../declarative/qdeclarativeecmascript/data/scope.4.qml | 12 ++++++++++++ .../tst_qdeclarativeecmascript.cpp | 17 +++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scope.4.qml diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scope.4.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scope.4.qml new file mode 100644 index 0000000..d65b6e7 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scope.4.qml @@ -0,0 +1,12 @@ +import Qt.test 1.0 + +MyQmlObject { + id: a + property int b: 9 + + property int test + property string test2 + + // Should resolve to signal arguments, not to other elements in the file + onArgumentSignal: { test = a; test2 = b; } +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 2e00e10..b5649cb 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -740,6 +740,23 @@ void tst_qdeclarativeecmascript::scope() QCOMPARE(object->property("test2").toBool(), true); QCOMPARE(object->property("test3").toBool(), true); } + + // Signal argument scope + { + QDeclarativeComponent component(&engine, TEST_FILE("scope.4.qml")); + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toInt(), 0); + QCOMPARE(object->property("test2").toString(), QString()); + + emit object->argumentSignal(13, "Argument Scope", 9); + + QCOMPARE(object->property("test").toInt(), 13); + QCOMPARE(object->property("test2").toString(), QString("Argument Scope")); + + delete object; + } } /* -- cgit v0.12 From 8d6b5483e34d27f1ee45af9d9fadb87525c9f915 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 4 Mar 2010 09:23:53 +0100 Subject: Make QLabel::text a reloadable property In this way we can correctly load / reload a label in case it contains a rich text with a reference to the image taken from resources. Since QLabel::setText() ignores the call in case we try to set the same text, we force the reload by setting the empty string in between. For performance reasons we do it only in cases when the text value contains :/ (only in this case it might have a reference to the resources). Reviewed-by: Friedemann Kleint Task-number: QTBUG-8347 --- tools/designer/src/lib/shared/formwindowbase.cpp | 12 +++++++++++- tools/designer/src/lib/shared/qdesigner_propertysheet.cpp | 2 ++ tools/designer/src/lib/shared/qdesigner_propertysheet_p.h | 3 ++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/tools/designer/src/lib/shared/formwindowbase.cpp b/tools/designer/src/lib/shared/formwindowbase.cpp index 2c5efbf..b57e9d7 100644 --- a/tools/designer/src/lib/shared/formwindowbase.cpp +++ b/tools/designer/src/lib/shared/formwindowbase.cpp @@ -181,7 +181,17 @@ void FormWindowBase::reloadProperties() QMapIterator itIndex(itSheet.value()); while (itIndex.hasNext()) { const int index = itIndex.next().key(); - sheet->setProperty(index, sheet->property(index)); + const QVariant newValue = sheet->property(index); + if (qobject_cast(sheet->object()) && sheet->propertyName(index) == QLatin1String("text")) { + const PropertySheetStringValue newString = qVariantValue(newValue); + // optimize a bit, reset only if the text value might contain a reference to qt resources + // (however reloading of icons other than taken from resources might not work here) + if (newString.value().contains(QLatin1String(":/"))) { + const QVariant resetValue = qVariantFromValue(PropertySheetStringValue()); + sheet->setProperty(index, resetValue); + } + } + sheet->setProperty(index, newValue); } if (QTabWidget *tabWidget = qobject_cast(sheet->object())) { const int count = tabWidget->count(); diff --git a/tools/designer/src/lib/shared/qdesigner_propertysheet.cpp b/tools/designer/src/lib/shared/qdesigner_propertysheet.cpp index 13bb1d7..77ab2a6 100644 --- a/tools/designer/src/lib/shared/qdesigner_propertysheet.cpp +++ b/tools/designer/src/lib/shared/qdesigner_propertysheet.cpp @@ -271,6 +271,7 @@ bool QDesignerPropertySheetPrivate::isReloadableProperty(int index) const { return isResourceProperty(index) || propertyType(index) == QDesignerPropertySheet::PropertyStyleSheet + || propertyType(index) == QDesignerPropertySheet::PropertyText || q->property(index).type() == QVariant::Url; } @@ -549,6 +550,7 @@ QDesignerPropertySheet::PropertyType QDesignerPropertySheet::propertyTypeFromNam propertyTypeHash.insert(QLatin1String("windowModality"), PropertyWindowModality); propertyTypeHash.insert(QLatin1String("windowModified"), PropertyWindowModified); propertyTypeHash.insert(QLatin1String("styleSheet"), PropertyStyleSheet); + propertyTypeHash.insert(QLatin1String("text"), PropertyText); } return propertyTypeHash.value(name, PropertyNone); } diff --git a/tools/designer/src/lib/shared/qdesigner_propertysheet_p.h b/tools/designer/src/lib/shared/qdesigner_propertysheet_p.h index 9db7367..0105eac 100644 --- a/tools/designer/src/lib/shared/qdesigner_propertysheet_p.h +++ b/tools/designer/src/lib/shared/qdesigner_propertysheet_p.h @@ -176,7 +176,8 @@ public: PropertyWindowIconText, PropertyWindowModality, PropertyWindowModified, - PropertyStyleSheet + PropertyStyleSheet, + PropertyText }; enum ObjectType { ObjectNone, ObjectLabel, ObjectLayout, ObjectLayoutWidget, ObjectQ3GroupBox }; -- cgit v0.12 From a63dc3b837fbabafcd8ccdc6c30e304f69b278da Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 4 Mar 2010 09:59:24 +0100 Subject: Avoid QString reallocation for smallcaps fonts in Itemizer::generate() Reviewed-by: Simon Hausmann --- src/gui/text/qtextengine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 2291138..b826588 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -81,7 +81,7 @@ public: void generate(int start, int length, QFont::Capitalization caps) { if ((int)caps == (int)QFont::SmallCaps) - generateScriptItemsSmallCaps(m_string.utf16(), start, length); + generateScriptItemsSmallCaps(reinterpret_cast(m_string.unicode()), start, length); else if(caps == QFont::Capitalize) generateScriptItemsCapitalize(start, length); else if(caps != QFont::MixedCase) { -- cgit v0.12 From fa882a7cb91aca4574f0e939068fd37716a923c7 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 4 Mar 2010 09:58:56 +0100 Subject: Avoid QString reallocation in QTextEngine Calling QString::utf16() will cause reallocation (for null-termination) if the string was created via fromRawData(). Reviewed-by: Benjamin Poulain Reviewed-by: Simon Hausmann --- src/gui/text/qtextengine.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 02eae98..b826588 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -81,7 +81,7 @@ public: void generate(int start, int length, QFont::Capitalization caps) { if ((int)caps == (int)QFont::SmallCaps) - generateScriptItemsSmallCaps(m_string.utf16(), start, length); + generateScriptItemsSmallCaps(reinterpret_cast(m_string.unicode()), start, length); else if(caps == QFont::Capitalize) generateScriptItemsCapitalize(start, length); else if(caps != QFont::MixedCase) { @@ -1434,9 +1434,7 @@ void QTextEngine::itemize() const layoutData->hasBidi = bidiItemize(const_cast(this), analysis, control); } - const ushort *unicode = layoutData->string.utf16(); - // correctly assign script, isTab and isObject to the script analysis - const ushort *uc = unicode; + const ushort *uc = reinterpret_cast(layoutData->string.unicode()); const ushort *e = uc + length; int lastScript = QUnicodeTables::Common; while (uc < e) { -- cgit v0.12 From 7d7a85fa16b28fdba257bb466be5a6d2b4bf5d2f Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Thu, 4 Mar 2010 10:01:56 +0100 Subject: Enable two fast path for blend_tiled_rgb565 Blending ARGB8565 and RGB16 on top of RGB16 is common on system with 16 bits color depth. The faster blending functions can be used instead of blend_tiled_generic. Reviewed-by: Tom Cooksey --- src/gui/painting/qdrawhelper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 891f4c2..8d2da69 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -5072,7 +5072,7 @@ static void blend_tiled_argb8565(int count, const QSpan *spans, void *userData) static void blend_tiled_rgb565(int count, const QSpan *spans, void *userData) { -#if defined(QT_QWS_DEPTH_16) +#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) -- cgit v0.12 From c7fec28e7b2f7192c6589c37f3db3e0b4ee85460 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 4 Mar 2010 10:21:06 +0100 Subject: Fixes tst_QScriptExtQObject::connectAndDisconnect Now that QVariant is known to QMetaType, it has an ID. This is much more robust as before. This would have fail if QVariant, would have been registered by the user. Reviewed-by: Kent Hansen --- src/script/bridge/qscriptqobject.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/script/bridge/qscriptqobject.cpp b/src/script/bridge/qscriptqobject.cpp index 8d111f9..39ba935 100644 --- a/src/script/bridge/qscriptqobject.cpp +++ b/src/script/bridge/qscriptqobject.cpp @@ -2174,14 +2174,12 @@ void QObjectConnectionManager::execute(int slotIndex, void **argv) QByteArray typeName = parameterTypes.at(i); int argType = QMetaType::type(parameterTypes.at(i)); if (!argType) { - if (typeName == "QVariant") { - actual = QScriptEnginePrivate::jscValueFromVariant(exec, *reinterpret_cast(arg)); - } else { - qWarning("QScriptEngine: Unable to handle unregistered datatype '%s' " - "when invoking handler of signal %s::%s", - typeName.constData(), meta->className(), method.signature()); - actual = JSC::jsUndefined(); - } + qWarning("QScriptEngine: Unable to handle unregistered datatype '%s' " + "when invoking handler of signal %s::%s", + typeName.constData(), meta->className(), method.signature()); + actual = JSC::jsUndefined(); + } else if (argType == QMetaType::QVariant) { + actual = QScriptEnginePrivate::jscValueFromVariant(exec, *reinterpret_cast(arg)); } else { actual = QScriptEnginePrivate::create(exec, argType, arg); } -- cgit v0.12 From a99fe8624a25f8a09fe9b3234306a4d8b3a3f38e Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 4 Mar 2010 10:47:36 +0100 Subject: QScript: Test against QMetaType::QVariant instead of against the string now that QVariant is known to QMetaType, we can test for the metatype id instead of doing string comparison Reviewed-by: Kent Hansen --- src/script/api/qscriptengine.cpp | 11 ++++++----- src/script/bridge/qscriptqobject.cpp | 37 ++++++++++++++---------------------- 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index 9cd5c63..47c5262 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -2901,6 +2901,9 @@ JSC::JSValue QScriptEnginePrivate::create(JSC::ExecState *exec, int type, const result = eng->newQObject(*reinterpret_cast(ptr)); break; #endif + case QMetaType::QVariant: + result = jscValueFromVariant(exec, *reinterpret_cast(ptr)); + break; default: if (type == qMetaTypeId()) { result = eng->scriptValueToJSCValue(*reinterpret_cast(ptr)); @@ -2922,8 +2925,6 @@ JSC::JSValue QScriptEnginePrivate::create(JSC::ExecState *exec, int type, const else { QByteArray typeName = QMetaType::typeName(type); - if (typeName == "QVariant") - result = jscValueFromVariant(exec, *reinterpret_cast(ptr)); if (typeName.endsWith('*') && !*reinterpret_cast(ptr)) return JSC::jsNull(); else @@ -3046,6 +3047,9 @@ bool QScriptEnginePrivate::convertValue(JSC::ExecState *exec, JSC::JSValue value *reinterpret_cast(ptr) = variantMapFromObject(exec, value); return true; } break; + case QMetaType::QVariant: + *reinterpret_cast(ptr) = toVariant(exec, value); + return true; default: ; } @@ -3096,9 +3100,6 @@ bool QScriptEnginePrivate::convertValue(JSC::ExecState *exec, JSC::JSValue value return false; *reinterpret_cast(ptr) = eng->scriptValueFromJSCValue(value); return true; - } else if (name == "QVariant") { - *reinterpret_cast(ptr) = toVariant(exec, value); - return true; } // lazy registration of some common list types diff --git a/src/script/bridge/qscriptqobject.cpp b/src/script/bridge/qscriptqobject.cpp index 39ba935..91636da 100644 --- a/src/script/bridge/qscriptqobject.cpp +++ b/src/script/bridge/qscriptqobject.cpp @@ -523,19 +523,15 @@ static JSC::JSValue callQtMethod(JSC::ExecState *exec, QMetaMethod::MethodType c QByteArray returnTypeName = method.typeName(); int rtype = QMetaType::type(returnTypeName); if ((rtype == 0) && !returnTypeName.isEmpty()) { - if (returnTypeName == "QVariant") { - types.append(QScriptMetaType::variant()); - } else { - int enumIndex = indexOfMetaEnum(meta, returnTypeName); - if (enumIndex != -1) - types.append(QScriptMetaType::metaEnum(enumIndex, returnTypeName)); - else - types.append(QScriptMetaType::unresolved(returnTypeName)); - } + int enumIndex = indexOfMetaEnum(meta, returnTypeName); + if (enumIndex != -1) + types.append(QScriptMetaType::metaEnum(enumIndex, returnTypeName)); + else + types.append(QScriptMetaType::unresolved(returnTypeName)); } else { if (callType == QMetaMethod::Constructor) types.append(QScriptMetaType::metaType(QMetaType::QObjectStar, "QObject*")); - else if (returnTypeName == "QVariant") + else if (rtype == QMetaType::QVariant) types.append(QScriptMetaType::variant()); else types.append(QScriptMetaType::metaType(rtype, returnTypeName)); @@ -547,20 +543,15 @@ static JSC::JSValue callQtMethod(JSC::ExecState *exec, QMetaMethod::MethodType c QByteArray argTypeName = parameterTypeNames.at(i); int atype = QMetaType::type(argTypeName); if (atype == 0) { - if (argTypeName == "QVariant") { - types.append(QScriptMetaType::variant()); - } else { - int enumIndex = indexOfMetaEnum(meta, argTypeName); - if (enumIndex != -1) - types.append(QScriptMetaType::metaEnum(enumIndex, argTypeName)); - else - types.append(QScriptMetaType::unresolved(argTypeName)); - } - } else { - if (argTypeName == "QVariant") - types.append(QScriptMetaType::variant()); + int enumIndex = indexOfMetaEnum(meta, argTypeName); + if (enumIndex != -1) + types.append(QScriptMetaType::metaEnum(enumIndex, argTypeName)); else - types.append(QScriptMetaType::metaType(atype, argTypeName)); + types.append(QScriptMetaType::unresolved(argTypeName)); + } else if (atype == QMetaType::QVariant) { + types.append(QScriptMetaType::variant()); + } else { + types.append(QScriptMetaType::metaType(atype, argTypeName)); } } -- cgit v0.12 From 625f6b92a08d8ef2a1e5697fce28ca39d29917fe Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Thu, 4 Mar 2010 10:57:15 +0100 Subject: Fixes QMenu to only have static POD members This also fixes the autotests --- src/gui/widgets/qmenu.cpp | 24 ++++++++++++------------ src/gui/widgets/qmenu_p.h | 6 +++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp index 5db14b8..9a4916e 100644 --- a/src/gui/widgets/qmenu.cpp +++ b/src/gui/widgets/qmenu.cpp @@ -85,9 +85,8 @@ QT_BEGIN_NAMESPACE -QPointer QMenuPrivate::mouseDown; -QBasicTimer QMenuPrivate::menuDelayTimer; -QBasicTimer QMenuPrivate::sloppyDelayTimer; +QMenu *QMenuPrivate::mouseDown = 0; +int QMenuPrivate::sloppyDelayTimer = 0; /* QMenu code */ // internal class used for the torn off popup @@ -487,8 +486,8 @@ void QMenuPrivate::popupAction(QAction *action, int delay, bool activateFirst) if (action && action->isEnabled()) { if (!delay) q->internalDelayedPopup(); - else if (!QMenuPrivate::menuDelayTimer.isActive() && (!action->menu() || !action->menu()->isVisible())) - QMenuPrivate::menuDelayTimer.start(delay, q); + else if (!menuDelayTimer.isActive() && (!action->menu() || !action->menu()->isVisible())) + menuDelayTimer.start(delay, q); if (activateFirst && action->menu()) action->menu()->d_func()->setFirstActionActive(); } else if (QMenu *menu = activeMenu) { //hide the current item @@ -2375,8 +2374,8 @@ QMenu::event(QEvent *e) } } break; case QEvent::ContextMenu: - if(QMenuPrivate::menuDelayTimer.isActive()) { - QMenuPrivate::menuDelayTimer.stop(); + if(d->menuDelayTimer.isActive()) { + d->menuDelayTimer.stop(); internalDelayedPopup(); } break; @@ -2809,7 +2808,7 @@ void QMenu::mouseMoveEvent(QMouseEvent *e) } if (d->sloppyRegion.contains(e->pos())) { d->sloppyAction = action; - QMenuPrivate::sloppyDelayTimer.start(style()->styleHint(QStyle::SH_Menu_SubMenuPopupDelay, 0, this)*6, this); + QMenuPrivate::sloppyDelayTimer = startTimer(style()->styleHint(QStyle::SH_Menu_SubMenuPopupDelay, 0, this)*6); } else { d->setCurrentAction(action, style()->styleHint(QStyle::SH_Menu_SubMenuPopupDelay, 0, this)); } @@ -2847,11 +2846,12 @@ QMenu::timerEvent(QTimerEvent *e) d->scrollMenu((QMenuPrivate::QMenuScroller::ScrollDirection)d->scroll->scrollDirection); if (d->scroll->scrollFlags == QMenuPrivate::QMenuScroller::ScrollNone) d->scroll->scrollTimer.stop(); - } else if(QMenuPrivate::menuDelayTimer.timerId() == e->timerId()) { - QMenuPrivate::menuDelayTimer.stop(); + } else if(d->menuDelayTimer.timerId() == e->timerId()) { + d->menuDelayTimer.stop(); internalDelayedPopup(); - } else if(QMenuPrivate::sloppyDelayTimer.timerId() == e->timerId()) { - QMenuPrivate::sloppyDelayTimer.stop(); + } else if(QMenuPrivate::sloppyDelayTimer == e->timerId()) { + killTimer(QMenuPrivate::sloppyDelayTimer); + QMenuPrivate::sloppyDelayTimer = 0; internalSetSloppyAction(); } else if(d->searchBufferTimer.timerId() == e->timerId()) { d->searchBuffer.clear(); diff --git a/src/gui/widgets/qmenu_p.h b/src/gui/widgets/qmenu_p.h index aaed6b1..276ffe6 100644 --- a/src/gui/widgets/qmenu_p.h +++ b/src/gui/widgets/qmenu_p.h @@ -202,7 +202,7 @@ public: bool activationRecursionGuard; //selection - static QPointer mouseDown; + static QMenu *mouseDown; QPoint mousePopupPos; uint hasHadMouse : 1; uint aboutToHide : 1; @@ -212,7 +212,7 @@ public: QAction *selectAction; QAction *cancelAction; #endif - static QBasicTimer menuDelayTimer; + QBasicTimer menuDelayTimer; enum SelectionReason { SelectedFromKeyboard, SelectedFromElsewhere @@ -272,7 +272,7 @@ public: mutable bool hasCheckableItems; //sloppy selection - static QBasicTimer sloppyDelayTimer; + static int sloppyDelayTimer; mutable QAction *sloppyAction; QRegion sloppyRegion; -- cgit v0.12 From 6f974452ec60ec03fd64bb2d12be6544435ae6be Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 4 Mar 2010 11:11:16 +0100 Subject: Doc: document what the timeout of -1 means in D-Bus Task-number: QTBUG-8729 --- src/dbus/qdbusconnection.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp index ce3e1a0..abaa486 100644 --- a/src/dbus/qdbusconnection.cpp +++ b/src/dbus/qdbusconnection.cpp @@ -491,6 +491,12 @@ bool QDBusConnection::callWithCallback(const QDBusMessage &message, QObject *rec its return value, which will be either of type QDBusMessage::ReplyMessage or QDBusMessage::ErrorMessage. + If no reply is received within \a timeout milliseconds, an automatic + error will be delivered indicating the expiration of the call. + The default \a timeout is -1, which will be replaced with an + implementation-defined value that is suitable for inter-process + communications (generally, 25 seconds). + See the QDBusInterface::call() function for a more friendly way of placing calls. @@ -526,9 +532,14 @@ QDBusMessage QDBusConnection::call(const QDBusMessage &message, QDBus::CallMode Sends the \a message over this connection and returns immediately. This function is suitable for method calls only. It returns an object of type QDBusPendingCall which can be used to - track the status of the reply. The \a timeout parameter is used to - determine when an auto-generated error reply may be emitted and is - also the upper limit for waiting in QDBusPendingCall::waitForFinished(). + track the status of the reply. + + If no reply is received within \a timeout milliseconds, an automatic + error will be delivered indicating the expiration of the call. The + default \a timeout is -1, which will be replaced with an + implementation-defined value that is suitable for inter-process + communications (generally, 25 seconds). This timeout is also the + upper limit for waiting in QDBusPendingCall::waitForFinished(). See the QDBusInterface::asyncCall() function for a more friendly way of placing calls. -- cgit v0.12 From e53480370409b96d24d3f53513e8b2019a398e70 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 4 Mar 2010 11:12:44 +0100 Subject: Finish to resolve merge conflict. Move the change that were made in commit 9957e85e37345e946ecc67196d65fbca867a2001 from src/multimedia/qml/qml.pri to src/multimedia/effects/effects.pri --- src/multimedia/effects/effects.pri | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/multimedia/effects/effects.pri b/src/multimedia/effects/effects.pri index 5edd452..ff762e8 100644 --- a/src/multimedia/effects/effects.pri +++ b/src/multimedia/effects/effects.pri @@ -1,15 +1,16 @@ - -system(pkg-config --exists \'libpulse >= 0.9.10\') { - DEFINES += QT_MULTIMEDIA_PULSEAUDIO - HEADERS += $$PWD/qsoundeffect_pulse_p.h - SOURCES += $$PWD/qsoundeffect_pulse_p.cpp - LIBS += -lpulse -} else:x11 { - DEFINES += QT_MULTIMEDIA_QMEDIAPLAYER - HEADERS += $$PWD/qsoundeffect_qmedia_p.h - SOURCES += $$PWD/qsoundeffect_qmedia_p.cpp +unix { + unix:contains(QT_CONFIG, pulseaudio) { + DEFINES += QT_MULTIMEDIA_PULSEAUDIO + HEADERS += $$PWD/qsoundeffect_pulse_p.h + SOURCES += $$PWD/qsoundeffect_pulse_p.cpp + LIBS += -lpulse + } else { + DEFINES += QT_MULTIMEDIA_QMEDIAPLAYER + HEADERS += $$PWD/qsoundeffect_qmedia_p.h + SOURCES += $$PWD/qsoundeffect_qmedia_p.cpp + } } else { HEADERS += $$PWD/qsoundeffect_qsound_p.h SOURCES += $$PWD/qsoundeffect_qsound_p.cpp -- cgit v0.12 From 7727a4355876607a1a022ff54e2570dae883f79c Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Thu, 4 Mar 2010 11:16:16 +0100 Subject: Do not crash when loading themed icons statically We do not officially support static loading of icons. In fact they still crash for simple png cases due to missing X11 resources. But since we lazily create themed icons we can certainly avoid the crash in this case. You will not be able to use fallbacks here though, since we cannot know if a fallback should be used or not in this case. Reviewed-by: ogoffart Task-number: QTBUG-8666 --- src/gui/image/qicon.cpp | 4 +++- src/gui/image/qiconloader.cpp | 32 +++++++++++++++++++++++--------- src/gui/image/qiconloader_p.h | 2 ++ tests/auto/qicon/tst_qicon.cpp | 6 ++++++ 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index bf6eb8d..fad51f4 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -982,7 +982,9 @@ QIcon QIcon::fromTheme(const QString &name, const QIcon &fallback) icon = *cachedIcon; } - if (icon.availableSizes().isEmpty()) + // Note the qapp check is to allow lazy loading of static icons + // Supporting fallbacks will not work for this case. + if (qApp && icon.availableSizes().isEmpty()) return fallback; return icon; diff --git a/src/gui/image/qiconloader.cpp b/src/gui/image/qiconloader.cpp index b35e80a..72ec2e8 100644 --- a/src/gui/image/qiconloader.cpp +++ b/src/gui/image/qiconloader.cpp @@ -85,19 +85,30 @@ static QString fallbackTheme() } QIconLoader::QIconLoader() : - m_themeKey(1), m_supportsSvg(false) + m_themeKey(1), m_supportsSvg(false), m_initialized(false) { - m_systemTheme = qt_guiPlatformPlugin()->systemIconThemeName(); - if (m_systemTheme.isEmpty()) - m_systemTheme = fallbackTheme(); +} + +// We lazily initialize the loader to make static icons +// work. Though we do not officially support this. +void QIconLoader::ensureInitialized() +{ + if (!m_initialized) { + m_initialized = true; + + Q_ASSERT(qApp); + m_systemTheme = qt_guiPlatformPlugin()->systemIconThemeName(); + if (m_systemTheme.isEmpty()) + m_systemTheme = fallbackTheme(); #ifndef QT_NO_LIBRARY - QFactoryLoader iconFactoryLoader(QIconEngineFactoryInterfaceV2_iid, - QLatin1String("/iconengines"), - Qt::CaseInsensitive); - if (iconFactoryLoader.keys().contains(QLatin1String("svg"))) - m_supportsSvg = true; + QFactoryLoader iconFactoryLoader(QIconEngineFactoryInterfaceV2_iid, + QLatin1String("/iconengines"), + Qt::CaseInsensitive); + if (iconFactoryLoader.keys().contains(QLatin1String("svg"))) + m_supportsSvg = true; #endif //QT_NO_LIBRARY + } } QIconLoader *QIconLoader::instance() @@ -339,6 +350,9 @@ bool QIconLoaderEngine::hasIcon() const // Lazily load the icon void QIconLoaderEngine::ensureLoaded() { + + iconLoaderInstance()->ensureInitialized(); + if (!(iconLoaderInstance()->themeKey() == m_key)) { while (!m_entries.isEmpty()) diff --git a/src/gui/image/qiconloader_p.h b/src/gui/image/qiconloader_p.h index 19f2dda..a6b5f5b 100644 --- a/src/gui/image/qiconloader_p.h +++ b/src/gui/image/qiconloader_p.h @@ -169,6 +169,7 @@ public: static QIconLoader *instance(); void updateSystemTheme(); void invalidateKey() { m_themeKey++; } + void ensureInitialized(); private: QThemeIconEntries findIconHelper(const QString &themeName, @@ -176,6 +177,7 @@ private: QStringList &visited) const; uint m_themeKey; bool m_supportsSvg; + bool m_initialized; mutable QString m_userTheme; mutable QString m_systemTheme; diff --git a/tests/auto/qicon/tst_qicon.cpp b/tests/auto/qicon/tst_qicon.cpp index f861e40..fae9cc0 100644 --- a/tests/auto/qicon/tst_qicon.cpp +++ b/tests/auto/qicon/tst_qicon.cpp @@ -86,8 +86,14 @@ private slots: private: QString oldCurrentDir; + + const static QIcon staticIcon; }; +// Creating an icon statically should not cause a crash. +// But we do not officially support this. See QTBUG-8666 +const QIcon tst_QIcon::staticIcon = QIcon::fromTheme("edit-find"); + void tst_QIcon::init() { QString srcdir(QLatin1String(SRCDIR)); -- cgit v0.12 From 24c56ac5309150cf7ba42cd974df4e98d97ebb81 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Thu, 4 Mar 2010 11:21:37 +0100 Subject: Build fix for Sun Studio Task-number: QTBUG-8192 --- src/gui/widgets/qcombobox.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/widgets/qcombobox.h b/src/gui/widgets/qcombobox.h index 9b19a66..fb9af9f 100644 --- a/src/gui/widgets/qcombobox.h +++ b/src/gui/widgets/qcombobox.h @@ -111,10 +111,10 @@ public: bool hasFrame() const; inline int findText(const QString &text, - Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const + Qt::MatchFlags flags = static_cast(Qt::MatchExactly|Qt::MatchCaseSensitive)) const { return findData(text, Qt::DisplayRole, flags); } int findData(const QVariant &data, int role = Qt::UserRole, - Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const; + Qt::MatchFlags flags = static_cast(Qt::MatchExactly|Qt::MatchCaseSensitive)) const; enum InsertPolicy { NoInsert, -- cgit v0.12 From 52da988db3a03bce5513bc5e2efa3d69f3664f24 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 4 Mar 2010 11:47:36 +0100 Subject: qmake/MinGw: Link statically for Qt Creator to be able to detect it. Qt Creator detects Qt versions by running qmake. This fails if no MinGw setup is in the path as is usually the case when starting it from the menu. Make it possible to run qmake without setup. Strip executable. Reviewed-by: Thierry Bastian Reviewed-by: mariusSO --- qmake/Makefile.win32-g++ | 2 +- qmake/Makefile.win32-g++-sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qmake/Makefile.win32-g++ b/qmake/Makefile.win32-g++ index d4d6e0e..27ae27b 100644 --- a/qmake/Makefile.win32-g++ +++ b/qmake/Makefile.win32-g++ @@ -27,7 +27,7 @@ CFLAGS = -c -o$@ -O \ -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \ -DQT_BOOTSTRAPPED CXXFLAGS = $(CFLAGS) -LFLAGS = +LFLAGS = -static-libgcc -s LIBS = -lole32 -luuid LINKQMAKE = g++ $(LFLAGS) -o qmake.exe $(OBJS) $(QTOBJS) $(LIBS) ADDCLEAN = diff --git a/qmake/Makefile.win32-g++-sh b/qmake/Makefile.win32-g++-sh index 5061089..f7b486f 100644 --- a/qmake/Makefile.win32-g++-sh +++ b/qmake/Makefile.win32-g++-sh @@ -27,7 +27,7 @@ CFLAGS = -c -o$@ -O \ -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \ -DQT_BOOTSTRAPPED CXXFLAGS = $(CFLAGS) -LFLAGS = +LFLAGS = -static-libgcc -s LIBS = -lole32 -luuid LINKQMAKE = g++ $(LFLAGS) -o qmake.exe $(OBJS) $(QTOBJS) $(LIBS) ADDCLEAN = -- cgit v0.12 From 2aaf4d1a35792ba7d0d0f217dbda1c1297389f3e Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 4 Mar 2010 11:55:46 +0100 Subject: Fix tst_QVariant::operator_eq_eq(UserType) It was comparing uninitialized memory. Reviewed-by: Thierry --- src/corelib/kernel/qvariant.cpp | 3 +++ tests/auto/qvariant/tst_qvariant.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 95b2352..9a278bd 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -470,6 +470,9 @@ static bool compare(const QVariant::Private *a, const QVariant::Private *b) if (typeNameLen > 0 && typeName[typeNameLen - 1] == '*') return *static_cast(a_ptr) == *static_cast(b_ptr); + if (a->is_null && b->is_null) + return true; + return a_ptr == b_ptr; } diff --git a/tests/auto/qvariant/tst_qvariant.cpp b/tests/auto/qvariant/tst_qvariant.cpp index b7e2c81..1fd6564 100644 --- a/tests/auto/qvariant/tst_qvariant.cpp +++ b/tests/auto/qvariant/tst_qvariant.cpp @@ -1969,7 +1969,7 @@ void tst_QVariant::operator_eq_eq_data() QTest::newRow("HashSecondLarger") << QVariant(hash1) << QVariant(hash2) << false; } - QTest::newRow( "UserType" ) << QVariant(QVariant::UserType) << QVariant(QVariant::UserType) << false; + QTest::newRow( "UserType" ) << QVariant(QVariant::UserType) << QVariant(QVariant::UserType) << true; QVariant mUserType(QVariant::UserType); QTest::newRow( "Shared UserType" ) << mUserType << mUserType << true; } -- cgit v0.12 From a9bf9766f18e15fbecf53ac1cc9cf57c9dba259c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Thu, 4 Mar 2010 12:06:19 +0100 Subject: Fixed an exit crash that could occur in the GL 2 engine under X11. The global destructor for the clean up hooks might be called before the global destructor for QPixmap objects. We shouldn't leave pixmaps around that is destroyed after the QApplication destructor is called. Task-number: QTBUG-8681 Reviewed-by: Tom Cooksey --- src/gui/image/qimagepixmapcleanuphooks.cpp | 10 ++++++++++ src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp | 1 + 2 files changed, 11 insertions(+) diff --git a/src/gui/image/qimagepixmapcleanuphooks.cpp b/src/gui/image/qimagepixmapcleanuphooks.cpp index 517fcb0..521e348 100644 --- a/src/gui/image/qimagepixmapcleanuphooks.cpp +++ b/src/gui/image/qimagepixmapcleanuphooks.cpp @@ -96,6 +96,11 @@ void QImagePixmapCleanupHooks::removeImageHook(_qt_image_cleanup_hook_64 hook) void QImagePixmapCleanupHooks::executePixmapDataModificationHooks(QPixmapData* pmd) { QImagePixmapCleanupHooks *h = qt_image_and_pixmap_cleanup_hooks(); + // the global destructor for the pixmap and image hooks might have + // been called already if the app is "leaking" global + // pixmaps/images + if (!h) + return; for (int i = 0; i < h->pixmapModificationHooks.count(); ++i) h->pixmapModificationHooks[i](pmd); @@ -106,6 +111,11 @@ void QImagePixmapCleanupHooks::executePixmapDataModificationHooks(QPixmapData* p void QImagePixmapCleanupHooks::executePixmapDataDestructionHooks(QPixmapData* pmd) { QImagePixmapCleanupHooks *h = qt_image_and_pixmap_cleanup_hooks(); + // the global destructor for the pixmap and image hooks might have + // been called already if the app is "leaking" global + // pixmaps/images + if (!h) + return; for (int i = 0; i < h->pixmapDestructionHooks.count(); ++i) h->pixmapDestructionHooks[i](pmd); diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index c08d04a..2b8e097 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -1597,6 +1597,7 @@ bool QGL2PaintEngineEx::end() delete d->shaderManager; d->shaderManager = 0; + d->currentBrush = QBrush(); #ifdef QT_OPENGL_CACHE_AS_VBOS if (!d->unusedVBOSToClean.isEmpty()) { -- cgit v0.12 From 4574b342ebb8800ba50ca23f154c20b3e8a239af Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 4 Mar 2010 11:55:01 +0100 Subject: Fix compile Missing header added --- tools/designer/src/lib/shared/formwindowbase.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/designer/src/lib/shared/formwindowbase.cpp b/tools/designer/src/lib/shared/formwindowbase.cpp index b57e9d7..5292f5f 100644 --- a/tools/designer/src/lib/shared/formwindowbase.cpp +++ b/tools/designer/src/lib/shared/formwindowbase.cpp @@ -72,6 +72,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE -- cgit v0.12 From 8c8e9ffb60c244462f615f510bc71d4010cf8faf Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Thu, 4 Mar 2010 11:47:45 +0100 Subject: Remove the OBJECTS_DIR variable assignment from some projets in Qt. This prevent debug and release object file to be mixed up when linking these application in a debug_and_release configured Qt. Reviewed-by: Marius Storm-Olsen --- demos/qtdemo/qtdemo.pro | 2 -- examples/threads/waitconditions/waitconditions.pro | 2 -- src/tools/moc/util/generate_keywords.pro | 1 - .../auto/qapplication/desktopsettingsaware/desktopsettingsaware.pro | 5 ----- tools/qev/qev.pro | 2 -- 5 files changed, 12 deletions(-) diff --git a/demos/qtdemo/qtdemo.pro b/demos/qtdemo/qtdemo.pro index 011ea0c..2a776ac 100644 --- a/demos/qtdemo/qtdemo.pro +++ b/demos/qtdemo/qtdemo.pro @@ -3,8 +3,6 @@ TARGET = qtdemo DEMO_DESTDIR = $$QT_BUILD_TREE isEmpty(DEMO_DESTDIR):DEMO_DESTDIR=../.. DESTDIR = $$DEMO_DESTDIR/bin -OBJECTS_DIR = .obj -MOC_DIR = .moc INSTALLS += target sources diff --git a/examples/threads/waitconditions/waitconditions.pro b/examples/threads/waitconditions/waitconditions.pro index b07b413..c2be6cd 100644 --- a/examples/threads/waitconditions/waitconditions.pro +++ b/examples/threads/waitconditions/waitconditions.pro @@ -10,8 +10,6 @@ INCLUDEPATH += . # Input SOURCES += waitconditions.cpp CONFIG += qt warn_on create_prl link_prl console -OBJECTS_DIR=obj/debug-shared -MOC_DIR=moc/debug-shared # install target.path = $$[QT_INSTALL_EXAMPLES]/threads/waitconditions diff --git a/src/tools/moc/util/generate_keywords.pro b/src/tools/moc/util/generate_keywords.pro index 8dff744..eb04409 100644 --- a/src/tools/moc/util/generate_keywords.pro +++ b/src/tools/moc/util/generate_keywords.pro @@ -10,4 +10,3 @@ INCLUDEPATH += . # Input SOURCES += generate_keywords.cpp CONFIG += qt create_prl link_prl -OBJECTS_DIR=.obj/debug-shared diff --git a/tests/auto/qapplication/desktopsettingsaware/desktopsettingsaware.pro b/tests/auto/qapplication/desktopsettingsaware/desktopsettingsaware.pro index 93a03db..e8b1ce9 100644 --- a/tests/auto/qapplication/desktopsettingsaware/desktopsettingsaware.pro +++ b/tests/auto/qapplication/desktopsettingsaware/desktopsettingsaware.pro @@ -13,8 +13,3 @@ wince*|symbian*:TARGET = ../desktopsettingsaware SOURCES += main.cpp CONFIG += qt warn_on create_prl link_prl CONFIG -= app_bundle - -!symbian*: { -OBJECTS_DIR=.obj/debug-shared -MOC_DIR=.moc/debug-shared -} diff --git a/tools/qev/qev.pro b/tools/qev/qev.pro index 28383c6..962b9fa 100644 --- a/tools/qev/qev.pro +++ b/tools/qev/qev.pro @@ -9,5 +9,3 @@ INCLUDEPATH += . # Input SOURCES += qev.cpp CONFIG += qt warn_on create_prl link_prl -OBJECTS_DIR=.obj/debug-shared -MOC_DIR=.moc/debug-shared -- cgit v0.12 From a3bc8b9ac990cf07b2b9775a1e281a10a9804086 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Thu, 4 Mar 2010 12:18:58 +0100 Subject: Do not use realpath() with uclibc Task-number: QTBUG-8365 Reviewed-by: denis --- src/corelib/io/qfsfileengine.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp index c842e49..eeee970 100644 --- a/src/corelib/io/qfsfileengine.cpp +++ b/src/corelib/io/qfsfileengine.cpp @@ -145,6 +145,8 @@ QString QFSFileEnginePrivate::canonicalized(const QString &path) #endif // Mac OS X 10.5.x doesn't support the realpath(X,0) extenstion we use here. #if defined(Q_OS_LINUX) || defined(Q_OS_SYMBIAN) + // ... but Linux with uClibc does not have it +#if !defined(__UCLIBC__) char *ret = realpath(path.toLocal8Bit().constData(), (char*)0); if (ret) { QString canonicalPath = QDir::cleanPath(QString::fromLocal8Bit(ret)); @@ -152,6 +154,7 @@ QString QFSFileEnginePrivate::canonicalized(const QString &path) return canonicalPath; } #endif +#endif QFileInfo fi; const QChar slash(QLatin1Char('/')); -- cgit v0.12 From 05f6f721408930381eafd02fa4274080694d57e9 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Thu, 4 Mar 2010 12:34:09 +0100 Subject: Fix atk warning on startup in Qt apps wit QGtkStyle While this is acknowledged as a bug in Gtk+ and confirmed fixed upstream, since some distros such as Ubuntu are not backporting this fix and it is easy to work around we should simply fix this for 4.6.3 instead. The problem is simply that atk assumes the button has a label or a labeled icon and spits out a warning if it does not. Additional info can be found here: https://bugs.launchpad.net/ubuntu/+source/gtk+2.0/+bug/484182 Reviewed-by:thorbjorn Task-number: QTBUG-8425 --- src/gui/styles/qgtkstyle_p.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/styles/qgtkstyle_p.cpp b/src/gui/styles/qgtkstyle_p.cpp index f3c7a5b..ad6746f 100644 --- a/src/gui/styles/qgtkstyle_p.cpp +++ b/src/gui/styles/qgtkstyle_p.cpp @@ -530,7 +530,7 @@ void QGtkStylePrivate::initGtkWidgets() const GtkWidget *gtkButton = QGtkStylePrivate::gtk_button_new(); addWidget(gtkButton); g_signal_connect(gtkButton, "style-set", G_CALLBACK(gtkStyleSetCallback), 0); - addWidget(QGtkStylePrivate::gtk_tool_button_new(NULL, NULL)); + addWidget(QGtkStylePrivate::gtk_tool_button_new(NULL, "Qt")); addWidget(QGtkStylePrivate::gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_NONE)); addWidget(QGtkStylePrivate::gtk_hbutton_box_new()); addWidget(QGtkStylePrivate::gtk_check_button_new()); -- cgit v0.12 From cd2afafbc9c29393a80d415145c49eb5f439da55 Mon Sep 17 00:00:00 2001 From: Pierre Rossi Date: Fri, 26 Feb 2010 16:57:38 +0100 Subject: Delay the resize section for better performance. This was particularly unusable when combining a QSortFilterProxyModel with resize mode ResizeToContents. Task-number: QTBUG-8540 Reviewed-by: Thierry --- src/gui/itemviews/qheaderview.cpp | 4 ++-- src/gui/itemviews/qtableview.cpp | 7 +------ src/gui/itemviews/qtreeview.cpp | 6 ++---- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/gui/itemviews/qheaderview.cpp b/src/gui/itemviews/qheaderview.cpp index 5128b64..eb3db21 100644 --- a/src/gui/itemviews/qheaderview.cpp +++ b/src/gui/itemviews/qheaderview.cpp @@ -2037,7 +2037,7 @@ bool QHeaderView::event(QEvent *e) updateSection(d->hover); } break; } - case QEvent::Timer: { // ### reimplement timerEvent() instead ? + case QEvent::Timer: { QTimerEvent *te = static_cast(e); if (te->timerId() == d->delayedResize.timerId()) { d->delayedResize.stop(); @@ -2610,7 +2610,7 @@ void QHeaderView::updateGeometries() Q_D(QHeaderView); d->layoutChildren(); if (d->hasAutoResizeSections()) - resizeSections(); + d->doDelayedResizeSections(); } /*! diff --git a/src/gui/itemviews/qtableview.cpp b/src/gui/itemviews/qtableview.cpp index 3111896..bdc1205 100644 --- a/src/gui/itemviews/qtableview.cpp +++ b/src/gui/itemviews/qtableview.cpp @@ -1960,12 +1960,7 @@ QModelIndexList QTableView::selectedIndexes() const void QTableView::rowCountChanged(int /*oldCount*/, int /*newCount*/ ) { Q_D(QTableView); - updateGeometries(); - if (verticalScrollMode() == QAbstractItemView::ScrollPerItem) - d->verticalHeader->setOffsetToSectionPosition(verticalScrollBar()->value()); - else - d->verticalHeader->setOffset(verticalScrollBar()->value()); - d->viewport->update(); + d->doDelayedItemsLayout(); } /*! diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp index 37168eb..1145235 100644 --- a/src/gui/itemviews/qtreeview.cpp +++ b/src/gui/itemviews/qtreeview.cpp @@ -2524,8 +2524,7 @@ void QTreeView::rowsInserted(const QModelIndex &parent, int start, int end) d->viewItems[parentItem].hasChildren = true; d->updateChildCount(parentItem, delta); - updateGeometries(); - viewport()->update(); + d->doDelayedItemsLayout(); } else if ((parentItem != -1) && d->viewItems.at(parentItem).expanded) { d->doDelayedItemsLayout(); } else if (parentItem != -1 && (d->model->rowCount(parent) == end - start + 1)) { @@ -3780,8 +3779,7 @@ void QTreeViewPrivate::rowsRemoved(const QModelIndex &parent, } } if (after) { - q->updateGeometries(); - viewport->update(); + doDelayedItemsLayout(); } else { //we have removed items: we should at least update the scroll bar values. // They are used to determine the item geometry. -- cgit v0.12 From 6f09fc3a475eb2e1c843f4aebe7ea0d15182ac1d Mon Sep 17 00:00:00 2001 From: Leonardo Sobral Cunha Date: Thu, 4 Mar 2010 12:49:56 +0100 Subject: Update QML PropertyAnimation::easing docs Task-number: QTBUG-8726 --- src/declarative/util/qdeclarativeanimation.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index f33d7c7..76b6a58 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -1736,7 +1736,7 @@ void QDeclarativePropertyAnimationPrivate::convertVariant(QVariant &variant, int Animate any objects that have changed their x or y properties in the target state using an InOutQuad easing curve: \qml - Transition { PropertyAnimation { properties: "x,y"; easing: "InOutQuad" } } + Transition { PropertyAnimation { properties: "x,y"; easing.type: "InOutQuad" } } \endqml \o In a Behavior @@ -1877,7 +1877,13 @@ void QDeclarativePropertyAnimation::setTo(const QVariant &t) \qmlproperty QEasingCurve PropertyAnimation::easing \brief the easing curve used for the transition. - Available values are: + For the easing you can specify the following parameters: type, amplitude, period and overshoot. + + \qml + PropertyAnimation { properties: "y"; easing.type: "InOutElastc"; easing.amplitude: 2.0; easing.period: 1.5 } + \endqml + + Available types are: \table \row @@ -2048,6 +2054,15 @@ void QDeclarativePropertyAnimation::setTo(const QVariant &t) \o \inlineimage qeasingcurve-outinbounce.png \endtable + easing.amplitude is not applicable for all curve types. It is only applicable for bounce and elastic curves (curves of type + QEasingCurve::InBounce, QEasingCurve::OutBounce, QEasingCurve::InOutBounce, QEasingCurve::OutInBounce, QEasingCurve::InElastic, + QEasingCurve::OutElastic, QEasingCurve::InOutElastic or QEasingCurve::OutInElastic). + + easing.overshoot is not applicable for all curve types. It is only applicable if type is: QEasingCurve::InBack, QEasingCurve::OutBack, + QEasingCurve::InOutBack or QEasingCurve::OutInBack. + + easing.period is not applicable for all curve types. It is only applicable if type is: QEasingCurve::InElastic, QEasingCurve::OutElastic, + QEasingCurve::InOutElastic or QEasingCurve::OutInElastic. */ QEasingCurve QDeclarativePropertyAnimation::easing() const { -- cgit v0.12 From 17c5b2620178ce59d0d85d91c03880fc8b0d9992 Mon Sep 17 00:00:00 2001 From: Carlos Manuel Duclos Vergara Date: Thu, 4 Mar 2010 11:38:48 +0100 Subject: showFullscreen() broken if UnifiedTitleAndToolBarOnMac is enabled The problem here is caused by the fix to QTBUG-6200. For this fix we removed the lines that deleted the item because the iterator might be invalid at that point. However, we still need to delete the iterator. The solution is to not use the iterator and ask the hash to delete the item, since the remove function will not crash if the item is invalid. Task-number: QTBUG-8633 Reviewed-by: Prasanth --- src/gui/widgets/qmainwindowlayout_mac.mm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/widgets/qmainwindowlayout_mac.mm b/src/gui/widgets/qmainwindowlayout_mac.mm index d92168a..9527057 100644 --- a/src/gui/widgets/qmainwindowlayout_mac.mm +++ b/src/gui/widgets/qmainwindowlayout_mac.mm @@ -463,6 +463,8 @@ void QMainWindowLayout::removeFromMacToolbar(QToolBar *toolbar) NSToolbarItem *item = static_cast(it.key()); [[qt_mac_window_for(layoutState.mainWindow->window()) toolbar] removeItemAtIndex:toolbarItemsCopy.indexOf(item)]; + unifiedToolbarHash.remove(item); + qtoolbarsInUnifiedToolbarList.removeAll(toolbar); #endif break; } -- cgit v0.12 From 8327f68945134b8057b0ade7d19897e226d3a7b5 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Wed, 24 Feb 2010 17:53:07 +0100 Subject: Dont use gestures if there is no touch screen. If there is no touch input device attached on Windows7, we shouldn't even bother subscribing to native gesture events. Task-number: QTBUG-6007 Reviewed-by: Thierry Reviewed-by: Prasanth --- src/gui/kernel/qapplication_p.h | 1 + src/gui/kernel/qapplication_win.cpp | 35 ++++++++++++++++++++++ src/gui/kernel/qgesturemanager.cpp | 4 ++- src/gui/kernel/qwidget_win.cpp | 2 ++ .../kernel/qwinnativepangesturerecognizer_win_p.h | 32 ++++++++++++++++++++ 5 files changed, 73 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qapplication_p.h b/src/gui/kernel/qapplication_p.h index b3ec732..ce39334 100644 --- a/src/gui/kernel/qapplication_p.h +++ b/src/gui/kernel/qapplication_p.h @@ -530,6 +530,7 @@ public: const QList &touchPoints); #if defined(Q_WS_WIN) + static bool HasTouchSupport; static PtrRegisterTouchWindow RegisterTouchWindow; static PtrGetTouchInputInfo GetTouchInputInfo; static PtrCloseTouchInputHandle CloseTouchInputHandle; diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp index da6869d..49cb0f2 100644 --- a/src/gui/kernel/qapplication_win.cpp +++ b/src/gui/kernel/qapplication_win.cpp @@ -115,6 +115,8 @@ extern void qt_wince_hide_taskbar(HWND hwnd); //defined in qguifunctions_wince.c # include #endif +#include "private/qwinnativepangesturerecognizer_win_p.h" + #ifndef WM_TOUCH # define WM_TOUCH 0x0240 @@ -4000,12 +4002,45 @@ void QSessionManager::cancel() #endif //QT_NO_SESSIONMANAGER +bool QApplicationPrivate::HasTouchSupport = false; PtrRegisterTouchWindow QApplicationPrivate::RegisterTouchWindow = 0; PtrGetTouchInputInfo QApplicationPrivate::GetTouchInputInfo = 0; PtrCloseTouchInputHandle QApplicationPrivate::CloseTouchInputHandle = 0; void QApplicationPrivate::initializeMultitouch_sys() { + static const IID QT_IID_IInkTablets = {0x112086D9, 0x7779, 0x4535, {0xA6, 0x99, 0x86, 0x2B, 0x43, 0xAC, 0x18, 0x63} }; + static const IID QT_IID_IInkTablet2 = {0x90c91ad2, 0xfa36, 0x49d6, {0x95, 0x16, 0xce, 0x8d, 0x57, 0x0f, 0x6f, 0x85} }; + static const CLSID QT_CLSID_InkTablets = {0x6E4FCB12, 0x510A, 0x4d40, {0x93, 0x04, 0x1D, 0xA1, 0x0A, 0xE9, 0x14, 0x7C} }; + + IInkTablets *iInkTablets = 0; + HRESULT hr = CoCreateInstance(QT_CLSID_InkTablets, NULL, CLSCTX_ALL, QT_IID_IInkTablets, (void**)&iInkTablets); + if (SUCCEEDED(hr)) { + long count = 0; + iInkTablets->get_Count(&count); + for (long i = 0; i < count; ++i) { + IInkTablet *iInkTablet = 0; + hr = iInkTablets->Item(i, &iInkTablet); + if (FAILED(hr)) + continue; + IInkTablet2 *iInkTablet2 = 0; + hr = iInkTablet->QueryInterface(QT_IID_IInkTablet2, (void**)&iInkTablet2); + iInkTablet->Release(); + if (FAILED(hr)) + continue; + TabletDeviceKind kind; + hr = iInkTablet2->get_DeviceKind(&kind); + iInkTablet2->Release(); + if (FAILED(hr)) + continue; + if (kind == TDK_Touch) { + QApplicationPrivate::HasTouchSupport = true; + break; + } + } + iInkTablets->Release(); + } + QLibrary library(QLatin1String("user32")); // MinGW (g++ 3.4.5) accepts only C casts. RegisterTouchWindow = (PtrRegisterTouchWindow)(library.resolve("RegisterTouchWindow")); diff --git a/src/gui/kernel/qgesturemanager.cpp b/src/gui/kernel/qgesturemanager.cpp index 89ad94d..aa6720e 100644 --- a/src/gui/kernel/qgesturemanager.cpp +++ b/src/gui/kernel/qgesturemanager.cpp @@ -45,6 +45,7 @@ #include "private/qgesture_p.h" #include "private/qgraphicsitem_p.h" #include "private/qevent_p.h" +#include "private/qapplication_p.h" #include "qgesture.h" #include "qevent.h" #include "qgraphicsitem.h" @@ -86,7 +87,8 @@ QGestureManager::QGestureManager(QObject *parent) #endif #if defined(Q_OS_WIN) #if !defined(QT_NO_NATIVE_GESTURES) - registerGestureRecognizer(new QWinNativePanGestureRecognizer); + if (QApplicationPrivate::HasTouchSupport) + registerGestureRecognizer(new QWinNativePanGestureRecognizer); #endif #else registerGestureRecognizer(new QTapAndHoldGestureRecognizer); diff --git a/src/gui/kernel/qwidget_win.cpp b/src/gui/kernel/qwidget_win.cpp index 10522ed..9acfb70 100644 --- a/src/gui/kernel/qwidget_win.cpp +++ b/src/gui/kernel/qwidget_win.cpp @@ -2052,6 +2052,8 @@ void QWidgetPrivate::winSetupGestures() if (!q || !q->isVisible() || !nativeGesturePanEnabled) return; + if (!QApplicationPrivate::HasTouchSupport) + return; QApplicationPrivate *qAppPriv = QApplicationPrivate::instance(); if (!qAppPriv->SetGestureConfig) return; diff --git a/src/gui/kernel/qwinnativepangesturerecognizer_win_p.h b/src/gui/kernel/qwinnativepangesturerecognizer_win_p.h index c65fa50..146b067 100644 --- a/src/gui/kernel/qwinnativepangesturerecognizer_win_p.h +++ b/src/gui/kernel/qwinnativepangesturerecognizer_win_p.h @@ -54,6 +54,38 @@ // #include +#include + +class IInkRectangle; +class TabletHardwareCapabilities; +class TabletPropertyMetricUnit; +DECLARE_INTERFACE_(IInkTablet, IDispatch) +{ + STDMETHOD(get_Name)(THIS_ BSTR *Name) PURE; + STDMETHOD(get_PlugAndPlayId)(THIS_ BSTR *Id) PURE; + STDMETHOD(get_MaximumInputRectangle)(THIS_ IInkRectangle **Rectangle) PURE; + STDMETHOD(get_HardwareCapabilities)(THIS_ TabletHardwareCapabilities *Capabilities) PURE; + STDMETHOD(IsPacketPropertySupported)(THIS_ BSTR packetPropertyName) PURE; + STDMETHOD(GetPropertyMetrics)(THIS_ BSTR propertyName, long *Minimum, long *Maximum, TabletPropertyMetricUnit *Units, float *Resolution) PURE; +}; +enum TabletDeviceKind +{ + TDK_Mouse = 0, + TDK_Pen = 1, + TDK_Touch = 2 +}; +DECLARE_INTERFACE_(IInkTablet2, IDispatch) +{ + STDMETHOD(get_DeviceKind)(THIS_ TabletDeviceKind *Kind) PURE; +}; +DECLARE_INTERFACE_(IInkTablets, IDispatch) +{ + STDMETHOD(get_Count)(THIS_ long *Count) PURE; + STDMETHOD(get__NewEnum)(THIS_ IUnknown **_NewEnum) PURE; + STDMETHOD(get_DefaultTablet)(THIS_ IInkTablet **DefaultTablet) PURE; + STDMETHOD(Item)(THIS_ long Index, IInkTablet **Tablet) PURE; + STDMETHOD(IsPacketPropertySupported)(THIS_ BSTR packetPropertyName, VARIANT_BOOL *Supported) PURE; +}; QT_BEGIN_NAMESPACE -- cgit v0.12 From edb37d5ab12c061b6085d0a84fcf075faf2dba54 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Tue, 2 Mar 2010 14:12:32 +0100 Subject: Added a documentation for the new enum value in gesture api. Task-number: QTBUG-7400 Reviewed-by: David Boddie --- src/corelib/global/qnamespace.qdoc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index db910ce..c5b5998 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -2978,6 +2978,11 @@ the Qt::GestureStarted state and ending with a gesture in the Qt::GestureFinished or Qt::GestureCanceled states. + \value IgnoredGesturesPropagateToParent Since Qt 4.7, this flag allows you + to fine-tune gesture event propagation. By setting the flag when + \l{QGraphicsObject::grabGesture}{grabbing} a gesture all ignored partial + gestures will propagate to their parent items. + \sa QWidget::grabGesture(), QGraphicsObject::grabGesture() */ -- cgit v0.12 From 1a666089d84cb85ec8e2bda3fe0fff6f2ec2ec4a Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Tue, 2 Mar 2010 15:00:55 +0100 Subject: Allow building documentation without all of Qt added a new make target 'sub-qdoc3' which builds qdoc3 and it's dependencies only, so that when running "make docs" we don't build all of sub-tools (including declarative module), but qdoc3 only Reviewed-by: David Boddie Reviewed-by: Joao --- doc/doc.pri | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/doc.pri b/doc/doc.pri index aea5b08..3d04049 100644 --- a/doc/doc.pri +++ b/doc/doc.pri @@ -43,11 +43,11 @@ win32-g++:isEmpty(QMAKE_SH) { # Build rules: adp_docs.commands = ($$QDOC $$ADP_DOCS_QDOCCONF_FILE) -adp_docs.depends += sub-tools # qdoc3 +adp_docs.depends += sub-qdoc3 # qdoc3 qch_docs.commands = $$QT_DOCUMENTATION -qch_docs.depends += sub-tools +qch_docs.depends += sub-qdoc3 -docs.depends = adp_docs qch_docs +docs.depends = sub-qdoc3 adp_docs qch_docs docs_zh_CN.depends = docs docs_zh_CN.commands = $$QT_ZH_CN_DOCUMENTATION @@ -64,5 +64,8 @@ qchdocs.CONFIG += no_check_exist docimages.files = $$QT_BUILD_TREE/doc/src/images docimages.path = $$[QT_INSTALL_DOCS]/src -QMAKE_EXTRA_TARGETS += qdoc adp_docs qch_docs docs docs_zh_CN +sub-qdoc3.depends = sub-corelib sub-xml +sub-qdoc3.commands += (cd tools/qdoc3 && $(MAKE)) + +QMAKE_EXTRA_TARGETS += sub-qdoc3 adp_docs qch_docs docs docs_zh_CN INSTALLS += htmldocs qchdocs docimages -- cgit v0.12 From f1e39e7dea8634695263435f0bf912ce19c43195 Mon Sep 17 00:00:00 2001 From: Thomas Zander Date: Thu, 4 Mar 2010 13:16:09 +0100 Subject: Make tablet detection work with new wacom drivers wacom driver fixed a bug in assigning atom names where it messed up the device names. Their solution apparently renamed the atoms The type names used now are "STYLUS", "CURSOR", "ERASER", "PAD" and "TOUCH" for each respective device. This change detects those as our tablet input devices. Reviewed-by: Benjamin Poulain Task-number: QTBUG-8599 --- src/gui/kernel/qapplication_x11.cpp | 9 +++++++-- src/gui/kernel/qt_x11_p.h | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index 121e9ec..25a7750 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -320,9 +320,14 @@ static const char * x11_atomnames = { "_XEMBED\0" "_XEMBED_INFO\0" + // Wacom old. (before version 0.10) "Wacom Stylus\0" "Wacom Cursor\0" "Wacom Eraser\0" + + // Tablet + "STYLUS\0" + "ERASER\0" }; Q_GUI_EXPORT QX11Data *qt_x11Data = 0; @@ -2366,12 +2371,12 @@ void qt_init(QApplicationPrivate *priv, int, gotStylus = true; } #else - if (devs->type == ATOM(XWacomStylus)) { + if (devs->type == ATOM(XWacomStylus) || devs->type == ATOM(XTabletStylus)) { deviceType = QTabletEvent::Stylus; if (wacomDeviceName()->isEmpty()) wacomDeviceName()->append(devs->name); gotStylus = true; - } else if (devs->type == ATOM(XWacomEraser)) { + } else if (devs->type == ATOM(XWacomEraser) || devs->type == ATOM(XTabletEraser)) { deviceType = QTabletEvent::XFreeEraser; gotEraser = true; } diff --git a/src/gui/kernel/qt_x11_p.h b/src/gui/kernel/qt_x11_p.h index d110084..14e04bb 100644 --- a/src/gui/kernel/qt_x11_p.h +++ b/src/gui/kernel/qt_x11_p.h @@ -675,6 +675,9 @@ struct QX11Data XWacomCursor, XWacomEraser, + XTabletStylus, + XTabletEraser, + NPredefinedAtoms, _QT_SETTINGS_TIMESTAMP = NPredefinedAtoms, -- cgit v0.12 From d644fcf668203a6d2f4af8fee350c672196ad11b Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Thu, 4 Mar 2010 13:20:06 +0100 Subject: tst_qftp: Do not use 1.2.3.4 as IP Believe it or not, that IP is reachable on port 21. Reviewed-by: TrustMe --- tests/auto/qftp/tst_qftp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/qftp/tst_qftp.cpp b/tests/auto/qftp/tst_qftp.cpp index 240885d..638c810 100644 --- a/tests/auto/qftp/tst_qftp.cpp +++ b/tests/auto/qftp/tst_qftp.cpp @@ -308,7 +308,7 @@ void tst_QFtp::connectToUnresponsiveHost() if (setProxy) QSKIP( "This test takes too long if we test with proxies too", SkipSingle ); - QString host = "1.2.3.4"; + QString host = "192.0.2.42"; // IP out of TEST-NET, should be unreachable uint port = 21; ftp = newFtp(); -- cgit v0.12 From ed1f672efb19932fe279a3ebfedb973c02c4fee4 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Thu, 4 Mar 2010 13:03:51 +0100 Subject: Fix build on EGL implementations where EGLConfig is a pointer EGLConfig is an opaque type which we really shouldn't cast to an int. Instead, we get the config id for the EGLConfig. Reviewed-By: TrustMe --- src/gui/egl/qegl_x11.cpp | 19 +++++++++++-------- src/opengl/qgl_x11egl.cpp | 5 ++--- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index 339bd57..483c01d 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -149,6 +149,9 @@ VisualID QEgl::getCompatibleVisualId(EGLConfig config) eglGetConfigAttrib(display(), config, EGL_BUFFER_SIZE, &eglValue); int configBitDepth = eglValue; + eglGetConfigAttrib(display(), config, EGL_CONFIG_ID, &eglValue); + int configId = eglValue; + // See if EGL provided a valid VisualID: eglGetConfigAttrib(display(), config, EGL_NATIVE_VISUAL_ID, &eglValue); visualId = (VisualID)eglValue; @@ -170,14 +173,14 @@ VisualID QEgl::getCompatibleVisualId(EGLConfig config) format = XRenderFindVisualFormat(X11->display, chosenVisualInfo->visual); if (!format || (format->type != PictTypeDirect) || (!format->direct.alphaMask)) { qWarning("Warning: EGL suggested using X visual ID %d for config %d, but this is not ARGB", - (int)visualId, (int)config); + (int)visualId, configId); visualId = 0; } } #endif } else { qWarning("Warning: EGL suggested using X visual ID %d (%d bpp) for config %d (%d bpp), but the depths do not match!", - (int)visualId, chosenVisualInfo->depth, (int)config, configBitDepth); + (int)visualId, chosenVisualInfo->depth, configId, configBitDepth); visualId = 0; } } @@ -187,9 +190,9 @@ VisualID QEgl::getCompatibleVisualId(EGLConfig config) if (visualId) { #ifdef QT_DEBUG_X11_VISUAL_SELECTION if (configAlphaSize > 0) - qDebug("Using ARGB Visual ID %d provided by EGL for config %d", (int)visualId, (int)config); + qDebug("Using ARGB Visual ID %d provided by EGL for config %d", (int)visualId, configId); else - qDebug("Using Opaque Visual ID %d provided by EGL for config %d", (int)visualId, (int)config); + qDebug("Using Opaque Visual ID %d provided by EGL for config %d", (int)visualId, configId); #endif return visualId; } @@ -232,9 +235,9 @@ VisualID QEgl::getCompatibleVisualId(EGLConfig config) if (visualId) { # ifdef QT_DEBUG_X11_VISUAL_SELECTION if (configAlphaSize > 0) - qDebug("Using ARGB Visual ID %d provided by XRender for EGL config %d", (int)visualId, (int)config); + qDebug("Using ARGB Visual ID %d provided by XRender for EGL config %d", (int)visualId, configId); else - qDebug("Using Opaque Visual ID %d provided by XRender for EGL config %d", (int)visualId, (int)config); + qDebug("Using Opaque Visual ID %d provided by XRender for EGL config %d", (int)visualId, configId); # endif // QT_DEBUG_X11_VISUAL_SELECTION return visualId; } @@ -263,12 +266,12 @@ VisualID QEgl::getCompatibleVisualId(EGLConfig config) if (visualId) { #ifdef QT_DEBUG_X11_VISUAL_SELECTION - qDebug("Using Visual ID %d provided by XGetVisualInfo for EGL config %d", (int)visualId, (int)config); + qDebug("Using Visual ID %d provided by XGetVisualInfo for EGL config %d", (int)visualId, configId); #endif return visualId; } - qWarning("Unable to find an X11 visual which matches EGL config %d", (int)config); + qWarning("Unable to find an X11 visual which matches EGL config %d", configId); return (VisualID)0; } diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index ba05e72..123bbdd 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -404,7 +404,7 @@ EGLConfig Q_OPENGL_EXPORT qt_chooseEGLConfigForPixmap(bool hasAlpha, bool readOn if (configCount > 0) { // Got one qDebug() << "Found an" << (hasAlpha ? "ARGB" : "RGB") << (readOnly ? "readonly" : "target" ) - << "config (" << int(*targetConfig) << ") to create a pixmap surface:"; + << "config to create a pixmap surface:"; // QEglProperties configProps(*targetConfig); // qDebug() << configProps.toString(); @@ -446,8 +446,7 @@ bool Q_OPENGL_EXPORT qt_createEGLSurfaceForPixmap(QPixmapData* pmd, bool readOnl // qDebug("qt_createEGLSurfaceForPixmap() created surface 0x%x for pixmap 0x%x", // pixmapSurface, pixmapData->handle()); if (pixmapSurface == EGL_NO_SURFACE) { - qWarning() << "Failed to create a pixmap surface using config" << (int)pixmapConfig - << ":" << QEgl::errorString(); + qWarning() << "Failed to create a pixmap surface:" << QEgl::errorString(); return false; } -- cgit v0.12 From c5264c89b7710dc2f2d8c7c604f0b23852cb2eef Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Thu, 4 Mar 2010 13:08:32 +0100 Subject: Fix build when egl.h includes X11 headers & pollutes namespace At some point we should fix the include order in all the .cpp files, however #udef'ing the defines we use elsewhere seems to work for now. Reviewed-By: TrustMe --- src/gui/egl/qegl_p.h | 2 ++ src/opengl/qgl_p.h | 8 +------- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/gui/egl/qegl_p.h b/src/gui/egl/qegl_p.h index aa89772..ffb45aa 100644 --- a/src/gui/egl/qegl_p.h +++ b/src/gui/egl/qegl_p.h @@ -77,6 +77,8 @@ QT_BEGIN_INCLUDE_NAMESPACE #undef Type #undef FontChange #undef CursorShape +#undef Unsorted +#undef GrayScale #endif // Internally we use the EGL-prefixed native types which are used in EGL >= 1.3. diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index b828bea..c142715 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -65,13 +65,7 @@ #include "qglpaintdevice_p.h" #ifdef QT_OPENGL_ES -QT_BEGIN_INCLUDE_NAMESPACE -#if defined(QT_OPENGL_ES_2) -#include -#else -#include -#endif -QT_END_INCLUDE_NAMESPACE +#include #endif QT_BEGIN_NAMESPACE -- cgit v0.12 From 7b923d14c0e8d8f84c71e8d636a0632f4566f00a Mon Sep 17 00:00:00 2001 From: aavit Date: Thu, 4 Mar 2010 13:34:27 +0100 Subject: Added QImage::bitPlaneCount(). When the image format contains unused bits (e.g. Format_RGB32), depth() does not give the true number of bits of color information per pixel. This new function does. Task-number: QTBUG-7982 Reviewed-by: Trond --- src/gui/image/qimage.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++----- src/gui/image/qimage.h | 1 + 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index 6bcf72b..94307de 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -480,9 +480,12 @@ bool QImageData::checkForAlphaPixels() const \row \o Low-level information \o + The depth() function returns the depth of the image. The supported - depths are 1 (monochrome), 8 and 32 (for more information see the - \l {QImage#Image Formats}{Image Formats} section). + depths are 1 (monochrome), 8, 16, 24 and 32 bits. The + bitPlaneCount() function tells how many of those bits that are + used. For more information see the + \l {QImage#Image Formats}{Image Formats} section. The format(), bytesPerLine(), and byteCount() functions provide low-level information about the data stored in the image. @@ -707,7 +710,7 @@ bool QImageData::checkForAlphaPixels() const packed with the less significant bit (LSB) first. \value Format_Indexed8 The image is stored using 8-bit indexes - into a colormap. + into a colormap. \value Format_RGB32 The image is stored using a 32-bit RGB format (0xffRRGGBB). @@ -1580,12 +1583,12 @@ QRect QImage::rect() const /*! Returns the depth of the image. - The image depth is the number of bits used to encode a single + The image depth is the number of bits used to store a single pixel, also called bits per pixel (bpp). The supported depths are 1, 8, 16, 24 and 32. - \sa convertToFormat(), {QImage#Image Formats}{Image Formats}, + \sa bitPlaneCount(), convertToFormat(), {QImage#Image Formats}{Image Formats}, {QImage#Image Information}{Image Information} */ @@ -5848,6 +5851,48 @@ bool QImage::hasAlphaChannel() const } +/*! + \since 4.7 + Returns the number of bit planes in the image. + + The number of bit planes is the number of bits of color and + transparency information for each pixel. This is different from + (i.e. smaller than) the depth when the image format contains + unused bits. + + \sa depth(), format(), {QImage#Image Formats}{Image Formats} +*/ +int QImage::bitPlaneCount() const +{ + if (!d) + return 0; + int bpc = 0; + switch (d->format) { + case QImage::Format_Invalid: + break; + case QImage::Format_RGB32: + bpc = 24; + break; + case QImage::Format_RGB666: + bpc = 18; + break; + case QImage::Format_RGB555: + bpc = 15; + break; + case QImage::Format_ARGB8555_Premultiplied: + bpc = 23; + break; + case QImage::Format_RGB444: + bpc = 12; + break; + default: + bpc = depthForFormat(d->format); + break; + } + return bpc; +} + + #ifdef QT3_SUPPORT #if defined(Q_WS_X11) QT_BEGIN_INCLUDE_NAMESPACE diff --git a/src/gui/image/qimage.h b/src/gui/image/qimage.h index dd13782..896061f 100644 --- a/src/gui/image/qimage.h +++ b/src/gui/image/qimage.h @@ -169,6 +169,7 @@ public: QT_DEPRECATED int numColors() const; #endif int colorCount() const; + int bitPlaneCount() const; QRgb color(int i) const; void setColor(int i, QRgb c); -- cgit v0.12 From ce7f914e8db0cad698d934569f1c323e5b231bc9 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Thu, 4 Mar 2010 13:52:03 +0100 Subject: qhostinfo benchmark: Benchmark the with-cache and without-cache Reviewed-by: joao --- tests/benchmarks/network/kernel/qhostinfo/main.cpp | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/benchmarks/network/kernel/qhostinfo/main.cpp b/tests/benchmarks/network/kernel/qhostinfo/main.cpp index 0ae1b7f..ebdea5e 100644 --- a/tests/benchmarks/network/kernel/qhostinfo/main.cpp +++ b/tests/benchmarks/network/kernel/qhostinfo/main.cpp @@ -48,9 +48,14 @@ #include #include +#include "private/qhostinfo_p.h" + class tst_qhostinfo : public QObject { Q_OBJECT +public slots: + void initTestCase(); + void init(); private slots: void lookupSpeed(); }; @@ -70,14 +75,38 @@ public slots: } }; +void tst_qhostinfo::initTestCase() +{ + // run each testcase with and without cache enabled + QTest::addColumn("cache"); + QTest::newRow("WithCache") << true; + QTest::newRow("WithoutCache") << false; +} + +void tst_qhostinfo::init() +{ + // delete the cache so inidividual testcase results are independant from each other + qt_qhostinfo_clear_cache(); + + QFETCH_GLOBAL(bool, cache); + qt_qhostinfo_enable_cache(cache); +} + + void tst_qhostinfo::lookupSpeed() { + QFETCH_GLOBAL(bool, cache); + qDebug() << "Cache enabled:" << cache; + QStringList hostnameList; hostnameList << "www.ovi.com" << "www.nokia.com" << "qt.nokia.com" << "www.trolltech.com" << "troll.no" << "www.qtcentre.org" << "forum.nokia.com" << "www.forum.nokia.com" << "wiki.forum.nokia.com" << "www.nokia.no" << "nokia.de" << "127.0.0.1" << "----"; // also add some duplicates: hostnameList << "www.nokia.com" << "127.0.0.1" << "www.trolltech.com"; + // and some more + hostnameList << hostnameList; + const int COUNT = hostnameList.size(); SignalReceiver receiver(COUNT); -- cgit v0.12 From d38158bbba32ce6a80b4443ca92f37f485ebfa93 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Thu, 4 Mar 2010 14:23:51 +0100 Subject: DNS Cache: Also check inside the DNS threads Reviewed-by: joao --- src/network/kernel/qhostinfo.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index a65ca50..9c559ec 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -435,12 +435,24 @@ void QHostInfoRunnable::run() return; } - // if not in cache: OS lookup - QHostInfo hostInfo = QHostInfoAgent::fromName(toBeLookedUp); - - // save to cache - if (manager->cache.isEnabled()) - manager->cache.put(toBeLookedUp, hostInfo); + QHostInfo hostInfo; + + // QHostInfo::lookupHost already checks the cache. However we need to check + // it here too because it might have been cache saved by another QHostInfoRunnable + // in the meanwhile while this QHostInfoRunnable was scheduled but not running + if (manager->cache.isEnabled()) { + // check the cache first + bool valid = false; + hostInfo = manager->cache.get(toBeLookedUp, &valid); + if (!valid) { + // not in cache, we need to do the lookup and store the result in the cache + hostInfo = QHostInfoAgent::fromName(toBeLookedUp); + manager->cache.put(toBeLookedUp, hostInfo); + } + } else { + // cache is not enabled, just do the lookup and continue + hostInfo = QHostInfoAgent::fromName(toBeLookedUp); + } // check aborted again if (manager->wasAborted(id)) { -- cgit v0.12 From a0cb1ae902dce0c00dc2de8b92229d66945054c8 Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Thu, 4 Mar 2010 14:26:24 +0100 Subject: Setting ImhHiddenText for NoEcho line edits is not 100% correct, but still way better than fully visible text. Reviewed-by: axis --- src/gui/widgets/qlineedit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp index 94ee4b3..817547c 100644 --- a/src/gui/widgets/qlineedit.cpp +++ b/src/gui/widgets/qlineedit.cpp @@ -539,7 +539,7 @@ void QLineEdit::setEchoMode(EchoMode mode) if (mode == (EchoMode)d->control->echoMode()) return; Qt::InputMethodHints imHints = inputMethodHints(); - if (mode == Password) { + if (mode == Password || mode == NoEcho) { imHints |= Qt::ImhHiddenText; } else { imHints &= ~Qt::ImhHiddenText; -- cgit v0.12 From f68597ee9f63d3a7c5254062b752e8a91b816919 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Thu, 4 Mar 2010 15:03:10 +0100 Subject: qhostinfo benchmark: Use local _data instead of _global Qt's benchmark lib does not support global data tags yet. --- tests/benchmarks/network/kernel/qhostinfo/main.cpp | 23 +++++++++------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/tests/benchmarks/network/kernel/qhostinfo/main.cpp b/tests/benchmarks/network/kernel/qhostinfo/main.cpp index ebdea5e..f4648d6 100644 --- a/tests/benchmarks/network/kernel/qhostinfo/main.cpp +++ b/tests/benchmarks/network/kernel/qhostinfo/main.cpp @@ -54,9 +54,9 @@ class tst_qhostinfo : public QObject { Q_OBJECT public slots: - void initTestCase(); void init(); private slots: + void lookupSpeed_data(); void lookupSpeed(); }; @@ -75,28 +75,23 @@ public slots: } }; -void tst_qhostinfo::initTestCase() -{ - // run each testcase with and without cache enabled - QTest::addColumn("cache"); - QTest::newRow("WithCache") << true; - QTest::newRow("WithoutCache") << false; -} - void tst_qhostinfo::init() { // delete the cache so inidividual testcase results are independant from each other qt_qhostinfo_clear_cache(); - - QFETCH_GLOBAL(bool, cache); - qt_qhostinfo_enable_cache(cache); } +void tst_qhostinfo::lookupSpeed_data() +{ + QTest::addColumn("cache"); + QTest::newRow("WithCache") << true; + QTest::newRow("WithoutCache") << false; +} void tst_qhostinfo::lookupSpeed() { - QFETCH_GLOBAL(bool, cache); - qDebug() << "Cache enabled:" << cache; + QFETCH(bool, cache); + qt_qhostinfo_enable_cache(cache); QStringList hostnameList; hostnameList << "www.ovi.com" << "www.nokia.com" << "qt.nokia.com" << "www.trolltech.com" << "troll.no" -- cgit v0.12 From d998a761e35bb53f29477e3956421de38c9cf641 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Thu, 4 Mar 2010 15:07:30 +0100 Subject: tst_qhostinfo: Mixed up descriptions for test case data --- tests/auto/qhostinfo/tst_qhostinfo.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/qhostinfo/tst_qhostinfo.cpp b/tests/auto/qhostinfo/tst_qhostinfo.cpp index cbadcf5..ae4ffde 100644 --- a/tests/auto/qhostinfo/tst_qhostinfo.cpp +++ b/tests/auto/qhostinfo/tst_qhostinfo.cpp @@ -213,8 +213,8 @@ void tst_QHostInfo::initTestCase() // run each testcase with and without test enabled QTest::addColumn("cache"); - QTest::newRow("WithCache") << false; - QTest::newRow("WithoutCache") << true; + QTest::newRow("WithCache") << true; + QTest::newRow("WithoutCache") << false; } void tst_QHostInfo::init() -- cgit v0.12 From 4b3953678983b3da925066f464b55340fab3503c Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Thu, 4 Mar 2010 15:12:49 +0100 Subject: doc: Fixed some qdoc errors. The QtMultimedia module needed to have its own \page unique name so that the QtMultimedia \module would not conflict with the QtMultimedia \namespace. --- doc/src/modules.qdoc | 1 + tools/qdoc3/cppcodeparser.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/src/modules.qdoc b/doc/src/modules.qdoc index 9e1d340..76a52b4 100644 --- a/doc/src/modules.qdoc +++ b/doc/src/modules.qdoc @@ -130,6 +130,7 @@ /*! \module QtMultimedia + \page qtmultimedia-module.html \title QtMultimedia Module \contentspage All Qt Modules \previouspage QtCore diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp index fef3c14..6884781 100644 --- a/tools/qdoc3/cppcodeparser.cpp +++ b/tools/qdoc3/cppcodeparser.cpp @@ -47,6 +47,7 @@ #include #include +#include #include "codechunk.h" #include "config.h" @@ -1650,8 +1651,9 @@ bool CppCodeParser::matchNamespaceDecl(InnerNode *parent) */ QString namespaceName = previousLexeme(); NamespaceNode *namespasse = 0; - if (parent) + if (parent) { namespasse = static_cast(parent->findNode(namespaceName, Node::Namespace)); + } if (!namespasse) { namespasse = new NamespaceNode(parent, namespaceName); namespasse->setAccess(access); -- cgit v0.12 From 4984b36c73fb59006a28051ea82bdca0b7aeb457 Mon Sep 17 00:00:00 2001 From: John Layt Date: Tue, 16 Feb 2010 01:13:13 +0000 Subject: QPrinter: Add Current Page print range support Support the selection of Current Page option in the print dialog by activating a new QPrintDialog::PrintDialogOption. If selected the PrintRange is set to CurrentPage. It is the responsibility of the application to read the PrintRange and apply the Current Page selection when rendering the pages. Merge-request: 2311 Reviewed-by: Trond --- src/gui/dialogs/qabstractprintdialog.cpp | 7 +- src/gui/dialogs/qabstractprintdialog.h | 6 +- src/gui/dialogs/qprintdialog_qws.cpp | 11 ++ src/gui/dialogs/qprintdialog_unix.cpp | 11 +- src/gui/dialogs/qprintdialog_win.cpp | 16 +- src/gui/dialogs/qprintsettingsoutput.ui | 246 +++++++++++++++---------------- src/gui/painting/qprinter.cpp | 3 + src/gui/painting/qprinter.h | 2 +- tests/auto/qprinter/tst_qprinter.cpp | 23 +++ 9 files changed, 186 insertions(+), 139 deletions(-) diff --git a/src/gui/dialogs/qabstractprintdialog.cpp b/src/gui/dialogs/qabstractprintdialog.cpp index 4523433..25d9ebb 100644 --- a/src/gui/dialogs/qabstractprintdialog.cpp +++ b/src/gui/dialogs/qabstractprintdialog.cpp @@ -76,6 +76,7 @@ class QPrintDialogPrivate : public QAbstractPrintDialogPrivate \value AllPages All pages should be printed. \value Selection Only the selection should be printed. \value PageRange The specified page range should be printed. + \value CurrentPage Only the currently visible page should be printed. \sa QPrinter::PrintRange */ @@ -89,7 +90,9 @@ class QPrintDialogPrivate : public QAbstractPrintDialogPrivate \value PrintToFile The print to file option is enabled. \value PrintSelection The print selection option is enabled. \value PrintPageRange The page range selection option is enabled. - \value PrintCollateCopies + \value PrintShowPageSize Show the page size + margins page only if this is enabled. + \value PrintCollateCopies The collate copies option is enabled + \value PrintCurrentPage The print current page option is enabled This value is obsolete and does nothing since Qt 4.5: @@ -97,8 +100,6 @@ class QPrintDialogPrivate : public QAbstractPrintDialogPrivate would create a sheet by default the dialog was given a parent. This is no longer supported in Qt 4.5. If you want to use sheets, use QPrintDialog::open() instead. - - \value PrintShowPageSize Show the page size + margins page only if this is enabled. */ /*! diff --git a/src/gui/dialogs/qabstractprintdialog.h b/src/gui/dialogs/qabstractprintdialog.h index 4d867f6..82e3df8 100644 --- a/src/gui/dialogs/qabstractprintdialog.h +++ b/src/gui/dialogs/qabstractprintdialog.h @@ -65,7 +65,8 @@ public: enum PrintRange { AllPages, Selection, - PageRange + PageRange, + CurrentPage }; enum PrintDialogOption { @@ -75,7 +76,8 @@ public: PrintPageRange = 0x0004, PrintShowPageSize = 0x0008, PrintCollateCopies = 0x0010, - DontUseSheet = 0x0020 + DontUseSheet = 0x0020, + PrintCurrentPage = 0x0040 }; Q_DECLARE_FLAGS(PrintDialogOptions, PrintDialogOption) diff --git a/src/gui/dialogs/qprintdialog_qws.cpp b/src/gui/dialogs/qprintdialog_qws.cpp index 1336c04..b071427 100644 --- a/src/gui/dialogs/qprintdialog_qws.cpp +++ b/src/gui/dialogs/qprintdialog_qws.cpp @@ -178,6 +178,10 @@ void QPrintDialogPrivate::_q_okClicked() q->setPrintRange(QPrintDialog::PageRange); q->setFromTo(firstPage->value(), lastPage->value()); break; + case (int)QPrintDialog::CurrentPage: + q->setPrintRange(QPrintDialog::CurrentPage); + q->setFromTo(0, 0); + break; } q->accept(); } @@ -375,6 +379,7 @@ void QPrintDialogPrivate::setupOptions() rangeCombo->addItem(QPrintDialog::tr("Print all"), QPrintDialog::AllPages); rangeCombo->addItem(QPrintDialog::tr("Print selection"), QPrintDialog::Selection); rangeCombo->addItem(QPrintDialog::tr("Print range"), QPrintDialog::PageRange); + rangeCombo->addItem(QPrintDialog::tr("Print current page"), QPrintDialog::CurrentPage); QObject::connect(rangeCombo, SIGNAL(activated(int)), q, SLOT(_q_printRangeSelected(int))); @@ -490,6 +495,9 @@ void QPrintDialogPrivate::setPrinter(QPrinter *p, bool pickUpSettings) if (!q->isOptionEnabled(QPrintDialog::PrintPageRange) && rangeCombo->findData(QPrintDialog::PageRange) > 0) rangeCombo->removeItem(rangeCombo->findData(QPrintDialog::PageRange)); + if (!q->isOptionEnabled(QPrintDialog::PrintCurrentPage) + && rangeCombo->findData(QPrintDialog::CurrentPage) > 0) + rangeCombo->removeItem(rangeCombo->findData(QPrintDialog::CurrentPage)); switch (q->printRange()) { case QPrintDialog::AllPages: @@ -501,6 +509,9 @@ void QPrintDialogPrivate::setPrinter(QPrinter *p, bool pickUpSettings) case QPrintDialog::PageRange: rangeCombo->setCurrentIndex((int)(QPrintDialog::PageRange)); break; + case QPrintDialog::CurrentPage: + rangeCombo->setCurrentIndex((int)(QPrintDialog::CurrentPage)); + break; } } diff --git a/src/gui/dialogs/qprintdialog_unix.cpp b/src/gui/dialogs/qprintdialog_unix.cpp index 2d169cf..0487f23 100644 --- a/src/gui/dialogs/qprintdialog_unix.cpp +++ b/src/gui/dialogs/qprintdialog_unix.cpp @@ -502,6 +502,9 @@ void QPrintDialogPrivate::setupPrinter() } else if (options.printSelection->isChecked()) { p->setPrintRange(QPrinter::Selection); p->setFromTo(0,0); + } else if (options.printCurrentPage->isChecked()) { + p->setPrintRange(QPrinter::CurrentPage); + p->setFromTo(0,0); } else if (options.printRange->isChecked()) { p->setPrintRange(QPrinter::PageRange); p->setFromTo(options.from->value(), qMax(options.from->value(), options.to->value())); @@ -518,10 +521,12 @@ void QPrintDialogPrivate::updateWidgets() { Q_Q(QPrintDialog); options.gbPrintRange->setVisible(q->isOptionEnabled(QPrintDialog::PrintPageRange) || - q->isOptionEnabled(QPrintDialog::PrintSelection)); + q->isOptionEnabled(QPrintDialog::PrintSelection) || + q->isOptionEnabled(QPrintDialog::PrintCurrentPage)); options.printRange->setEnabled(q->isOptionEnabled(QPrintDialog::PrintPageRange)); options.printSelection->setVisible(q->isOptionEnabled(QPrintDialog::PrintSelection)); + options.printCurrentPage->setVisible(q->isOptionEnabled(QPrintDialog::PrintCurrentPage)); options.collate->setVisible(q->isOptionEnabled(QPrintDialog::PrintCollateCopies)); switch (q->printRange()) { @@ -534,6 +539,10 @@ void QPrintDialogPrivate::updateWidgets() case QPrintDialog::PageRange: options.printRange->setChecked(true); break; + case QPrintDialog::CurrentPage: + if (q->isOptionEnabled(QPrintDialog::PrintCurrentPage)) + options.printCurrentPage->setChecked(true); + break; default: break; } diff --git a/src/gui/dialogs/qprintdialog_win.cpp b/src/gui/dialogs/qprintdialog_win.cpp index fa0c99f..1061660 100644 --- a/src/gui/dialogs/qprintdialog_win.cpp +++ b/src/gui/dialogs/qprintdialog_win.cpp @@ -128,11 +128,14 @@ static void qt_win_setup_PRINTDLGEX(PRINTDLGEX *pd, QWidget *parent, if (pd->nMinPage==0 && pd->nMaxPage==0) pd->Flags |= PD_NOPAGENUMS; - // we don't have a 'current page' notion in the QPrinter API yet. - // Neither do we support more than one page range, so limit those - // options - pd->Flags |= PD_NOCURRENTPAGE; + // Disable Current Page option if not required as default is Enabled + if (!pdlg->isOptionEnabled(QPrintDialog::PrintCurrentPage)) + pd->Flags |= PD_NOCURRENTPAGE; + + // Default to showing the General tab first pd->nStartPage = START_PAGE_GENERAL; + + // We don't support more than one page range in the QPrinter API yet. pd->nPageRanges = 1; pd->nMaxPageRanges = 1; @@ -153,7 +156,10 @@ static void qt_win_read_back_PRINTDLGEX(PRINTDLGEX *pd, QPrintDialog *pdlg, QPri } else if (pd->Flags & PD_PAGENUMS) { pdlg->setPrintRange(QPrintDialog::PageRange); pdlg->setFromTo(pd->lpPageRanges[0].nFromPage, pd->lpPageRanges[0].nToPage); - } else { + } else if (pd->Flags & PD_CURRENTPAGE) { + pdlg->setPrintRange(QPrintDialog::CurrentPage); + pdlg->setFromTo(0, 0); + } else { // PD_ALLPAGES pdlg->setPrintRange(QPrintDialog::AllPages); pdlg->setFromTo(0, 0); } diff --git a/src/gui/dialogs/qprintsettingsoutput.ui b/src/gui/dialogs/qprintsettingsoutput.ui index fc57e86..be91679 100644 --- a/src/gui/dialogs/qprintsettingsoutput.ui +++ b/src/gui/dialogs/qprintsettingsoutput.ui @@ -1,121 +1,114 @@ - + + QPrintSettingsOutput - - + + 0 0 - 416 - 166 + 426 + 171 - + Form - - + + 0 - - + + 0 - - - - 0 - 0 - 412 - 139 - - - + + Copies - + - - - + + + 0 0 - + Print range - - + + 4 - + 6 - - + + Print all - + true - - + + 6 - + 0 - - + + Pages from - - + + false - + 1 - + 999 - - + + to - - + + false - + 1 - + 999 - + Qt::Horizontal - + 0 20 @@ -126,18 +119,25 @@ - - + + + Current Page + + + + + + Selection - - + + Qt::Vertical - + 1 1 @@ -149,37 +149,37 @@ - - + + Output Settings - - - - + + + + Copies: - + copies - - - + + + 1 - + 999 - - - + + + Qt::Horizontal - + 91 20 @@ -187,36 +187,36 @@ - - - + + + Collate - - - - + + + + 0 0 - - - + + + Reverse - - - + + + Qt::Vertical - + 0 1 @@ -229,31 +229,23 @@ - - - - 0 - 0 - 412 - 139 - - - + + Options - - - - + + + + Color Mode - - - - + + + + Qt::Vertical - + 1 0 @@ -261,19 +253,19 @@ - - - + + + Color - - + + - - - + + + Grayscale @@ -281,42 +273,42 @@ - - - + + + Duplex Printing - + - - + + None - + true - - + + Long side - - + + Short side - - + + Qt::Vertical - + 1 0 @@ -341,11 +333,11 @@ from setEnabled(bool) - + 76 59 - + 122 57 @@ -357,11 +349,11 @@ to setEnabled(bool) - + 69 67 - + 215 67 diff --git a/src/gui/painting/qprinter.cpp b/src/gui/painting/qprinter.cpp index edf224d..ae21416 100644 --- a/src/gui/painting/qprinter.cpp +++ b/src/gui/painting/qprinter.cpp @@ -382,6 +382,7 @@ void QPrinterPrivate::addToManualSetList(QPrintEngine::PrintEnginePropertyKey ke \value AllPages All pages should be printed. \value Selection Only the selection should be printed. \value PageRange The specified page range should be printed. + \value CurrentPage Only the current page should be printed. \sa QAbstractPrintDialog::PrintRange */ @@ -571,6 +572,7 @@ void QPrinterPrivate::addToManualSetList(QPrintEngine::PrintEnginePropertyKey ke \value AllPages All the pages should be printed. \value Selection Only the selection should be printed. \value PageRange Print according to the from page and to page options. + \value CurrentPage Only the current page should be printed. \sa setPrintRange(), printRange() */ @@ -586,6 +588,7 @@ void QPrinterPrivate::addToManualSetList(QPrintEngine::PrintEnginePropertyKey ke \value PrintSelection Describes if printing selections should be enabled. \value PrintPageRange Describes if printing page ranges (from, to) should be enabled + \value PrintCurrentPage if Print Current Page option should be enabled \sa setOptionEnabled(), isOptionEnabled() */ diff --git a/src/gui/painting/qprinter.h b/src/gui/painting/qprinter.h index 6636179..996a954 100644 --- a/src/gui/painting/qprinter.h +++ b/src/gui/painting/qprinter.h @@ -124,7 +124,7 @@ public: enum OutputFormat { NativeFormat, PdfFormat, PostScriptFormat }; // ### Qt 5: Merge with QAbstractPrintDialog::PrintRange - enum PrintRange { AllPages, Selection, PageRange }; + enum PrintRange { AllPages, Selection, PageRange, CurrentPage }; enum Unit { Millimeter, diff --git a/tests/auto/qprinter/tst_qprinter.cpp b/tests/auto/qprinter/tst_qprinter.cpp index 7e8ce84..49bddb2 100644 --- a/tests/auto/qprinter/tst_qprinter.cpp +++ b/tests/auto/qprinter/tst_qprinter.cpp @@ -107,6 +107,7 @@ private slots: void printDialogCompleter(); void testCopyCount(); + void testCurrentPage(); void taskQTBUG4497_reusePrinterOnDifferentFiles(); @@ -1005,5 +1006,27 @@ void tst_QPrinter::taskQTBUG4497_reusePrinterOnDifferentFiles() QCOMPARE(file1.readAll(), file2.readAll()); } +void tst_QPrinter::testCurrentPage() +{ + QPrinter printer; + printer.setFromTo(1, 10); + + // Test set print range + printer.setPrintRange(QPrinter::CurrentPage); + QCOMPARE(printer.printRange(), QPrinter::CurrentPage); + QCOMPARE(printer.fromPage(), 1); + QCOMPARE(printer.toPage(), 10); + + QPrintDialog dialog(&printer); + + // Test default Current Page option to off + QCOMPARE(dialog.isOptionEnabled(QPrintDialog::PrintCurrentPage), false); + + // Test enable Current Page option + dialog.setOption(QPrintDialog::PrintCurrentPage); + QCOMPARE(dialog.isOptionEnabled(QPrintDialog::PrintCurrentPage), true); + +} + QTEST_MAIN(tst_QPrinter) #include "tst_qprinter.moc" -- cgit v0.12 From bd8c5da79174d18422d9db55c18d8f11ad41e27f Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Thu, 4 Mar 2010 15:28:27 +0100 Subject: Document some stuff in QHostInfo and QAbstractSocket --- src/network/kernel/qhostinfo.cpp | 7 +++++++ src/network/socket/qabstractsocket.cpp | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp index 9c559ec..9092ad6 100644 --- a/src/network/kernel/qhostinfo.cpp +++ b/src/network/kernel/qhostinfo.cpp @@ -112,6 +112,13 @@ Q_GLOBAL_STATIC(QHostInfoLookupManager, theHostInfoLookupManager) To retrieve the name of the local host, use the static QHostInfo::localHostName() function. + \note Since Qt 4.6.1 QHostInfo is using multiple threads for DNS lookup + instead of one dedicated DNS thread. This improves performance, + but also changes the order of signal emissions when using lookupHost() + compared to previous versions of Qt. + \note Since Qt 4.6.3 QHostInfo is using a small internal 60 second DNS cache + for performance improvements. + \sa QAbstractSocket, {http://www.rfc-editor.org/rfc/rfc3492.txt}{RFC 3492} */ diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index d990448..95721ee 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -172,6 +172,10 @@ This signal is emitted after connectToHost() has been called and the host lookup has succeeded. + \note Since Qt 4.6.3 QAbstractSocket may emit hostFound() + directly from the connectToHost() call since a DNS result could have been + cached. + \sa connected() */ @@ -181,6 +185,10 @@ This signal is emitted after connectToHost() has been called and a connection has been successfully established. + \note On some operating systems the connected() signal may + be directly emitted from the connectToHost() call for connections + to the localhost. + \sa connectToHost(), disconnected() */ -- cgit v0.12 From f2ff0521dfae47f63c9334cbc78b4070aa9c9d7d Mon Sep 17 00:00:00 2001 From: kh1 Date: Thu, 4 Mar 2010 16:38:38 +0100 Subject: Set database write behavior to synchronous=OFF and increase page cache. This improves the INSERT performance dramatically, since we won't wait anymore until all data is written back to the database. Should not have any impact on the database consistency in case of an app crash, only in case the whole OS crashes, but then you might be in trouble anyway. Reviewed-by: ck --- tools/assistant/lib/qhelpcollectionhandler.cpp | 8 ++++++++ tools/assistant/lib/qhelpgenerator.cpp | 3 +++ 2 files changed, 11 insertions(+) diff --git a/tools/assistant/lib/qhelpcollectionhandler.cpp b/tools/assistant/lib/qhelpcollectionhandler.cpp index 235f737..bd8dc20 100644 --- a/tools/assistant/lib/qhelpcollectionhandler.cpp +++ b/tools/assistant/lib/qhelpcollectionhandler.cpp @@ -114,6 +114,9 @@ bool QHelpCollectionHandler::openCollectionFile() return false; } + m_query.exec(QLatin1String("PRAGMA synchronous=OFF")); + m_query.exec(QLatin1String("PRAGMA cache_size=3000")); + m_query.exec(QLatin1String("SELECT COUNT(*) FROM sqlite_master WHERE TYPE=\'table\'" "AND Name=\'NamespaceTable\'")); m_query.next(); @@ -163,6 +166,9 @@ bool QHelpCollectionHandler::copyCollectionFile(const QString &fileName) return false; } + copyQuery->exec(QLatin1String("PRAGMA synchronous=OFF")); + copyQuery->exec(QLatin1String("PRAGMA cache_size=3000")); + if (!createTables(copyQuery)) { emit error(tr("Cannot copy collection file: %1").arg(colFile)); return false; @@ -582,6 +588,8 @@ void QHelpCollectionHandler::optimizeDatabase(const QString &fileName) } QSqlQuery query(db); + db.exec(QLatin1String("PRAGMA synchronous=OFF")); + db.exec(QLatin1String("PRAGMA cache_size=3000")); db.exec(QLatin1String("CREATE INDEX IF NOT EXISTS NameIndex ON IndexTable(Name)")); db.exec(QLatin1String("CREATE INDEX IF NOT EXISTS FileNameIndex ON FileNameTable(Name)")); db.exec(QLatin1String("CREATE INDEX IF NOT EXISTS FileIdIndex ON FileNameTable(FileId)")); diff --git a/tools/assistant/lib/qhelpgenerator.cpp b/tools/assistant/lib/qhelpgenerator.cpp index 783f016..85bdd75 100644 --- a/tools/assistant/lib/qhelpgenerator.cpp +++ b/tools/assistant/lib/qhelpgenerator.cpp @@ -191,6 +191,9 @@ bool QHelpGenerator::generate(QHelpDataInterface *helpData, return false; } + d->query->exec(QLatin1String("PRAGMA synchronous=OFF")); + d->query->exec(QLatin1String("PRAGMA cache_size=3000")); + addProgress(1.0); createTables(); insertFileNotFoundFile(); -- cgit v0.12 From 22a54680149d8fe5170f16e6aba7aff645b43da2 Mon Sep 17 00:00:00 2001 From: Jedrzej Nowacki Date: Thu, 4 Mar 2010 15:27:06 +0200 Subject: Optimize QScriptValue autotest generator. QScriptValue autotest suite compile 24 minutes on MSVS2008 which is unacceptable. Modification tries to reduce the compilation time. Temples were changed to use static arrays of data; instead of inserting values directly, they are inserted in a loop (less code to optimize). Generated code were separated into several files (better usage of distributed compiling). Reviewed-by: Kent Hansen --- tests/auto/qscriptvalue/testgen/main.cpp | 2 +- tests/auto/qscriptvalue/testgen/testgenerator.cpp | 401 +++++++++++++--------- tests/auto/qscriptvalue/testgen/testgenerator.h | 15 +- 3 files changed, 245 insertions(+), 173 deletions(-) diff --git a/tests/auto/qscriptvalue/testgen/main.cpp b/tests/auto/qscriptvalue/testgen/main.cpp index fe35de9..0672635 100644 --- a/tests/auto/qscriptvalue/testgen/main.cpp +++ b/tests/auto/qscriptvalue/testgen/main.cpp @@ -50,7 +50,7 @@ int main(int argc, char *argv[]) QCoreApplication a(argc, argv); if (argc != 2) { - qWarning() << "./prog outputfile"; + qWarning() << "./prog outputdir"; exit(1); } diff --git a/tests/auto/qscriptvalue/testgen/testgenerator.cpp b/tests/auto/qscriptvalue/testgen/testgenerator.cpp index 4376c42..a291110 100644 --- a/tests/auto/qscriptvalue/testgen/testgenerator.cpp +++ b/tests/auto/qscriptvalue/testgen/testgenerator.cpp @@ -50,10 +50,17 @@ #include #include -void TestGenerator::save(const QString& data) +void TestGenerator::save(const QHash& data) { - QTextStream out(&m_ofile); - out << data; + foreach(const QString& name, data.keys()) { + QFile ofile(m_opath + "tst_qscriptvalue_generated_" + name + ".cpp"); + if (!ofile.open(QIODevice::WriteOnly | QIODevice::Text)) { + qWarning() << "Can't open output file: " << ofile.fileName(); + exit(2); + } + QTextStream out(&ofile); + out << data[name]; + } } static QString escape(QString txt) @@ -98,6 +105,55 @@ QString typeName() {return "bool";} template<> QString typeName() {return "QString";} +static QString generateLicence() +{ + return "/****************************************************************************\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"\ + "/****************************************************************************\n"\ + "*************** This file has been generated. DO NOT MODIFY! ****************\n" + "****************************************************************************/\n\n"\ + "#include \"tst_qscriptvalue.h\"\n\n"; +} + static QString generateIsXXXDef(const QString& name, const QList& list) { static const QString templ("void tst_QScriptValue::%1_initData()\n"\ @@ -106,11 +162,14 @@ static QString generateIsXXXDef(const QString& name, const QList& list) " initScriptValues();\n"\ "}\n"\ "\n"\ + "static QString %1_array [] = {%2};\n\n"\ "void tst_QScriptValue::%1_makeData(const char* expr)\n"\ "{\n"\ " static QSet %1;\n"\ " if (%1.isEmpty()) {\n"\ - " %1%2\n"\ + " %1.reserve(%3);\n"\ + " for (unsigned i = 0; i < %3; ++i)\n"\ + " %1.insert(%1_array[i]);\n"\ " }\n"\ " newRow(expr) << %1.contains(expr);\n"\ "}\n"\ @@ -132,16 +191,14 @@ static QString generateIsXXXDef(const QString& name, const QList& list) 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.reserve(3 * list.count()); + foreach(const QString& t, list) { + set.append("\n \""); + set.append(escape(t)); + set.append("\","); } - set.append(";"); - return result.arg(name, set.join(QString())); + + return result.arg(name, set.join(QString()), QString::number(list.count())); } template @@ -154,11 +211,15 @@ static QString generateToXXXDef(const QString& name, const QList %1;\n"\ " if (%1.isEmpty()) {\n"\ - "%3"\ + " %1.reserve(%3);\n"\ + " for (unsigned i = 0; i < %3; ++i)\n"\ + " %1.insert(%1_tagArray[i], %1_valueArray[i]);\n"\ " }\n"\ " newRow(expr) << %1.value(expr);\n"\ "}\n"\ @@ -174,19 +235,26 @@ static QString generateToXXXDef(const QString& name, const QList >::const_iterator i = list.constBegin(); - QStringList set; + QStringList tagSet, valueSet; + tagSet.reserve(list.count()); + valueSet.reserve(list.count()); + int tmp = -1; for(; i != list.constEnd(); ++i) { QPair 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.second)); - set.append(QString::fromAscii(");\n")); + tagSet.append(QString("\n \"")); + tagSet.append(t.first); + tagSet.append(QString::fromAscii("\",")); + if (!((++tmp)%2)) + valueSet.append(QString("\n ")); + valueSet.append(prepareToInsert(t.second)); + valueSet.append(QString::fromAscii(", ")); } - return result.arg(name, typeName(), set.join(QString())); + return result.arg(name, + typeName(), + QString::number(list.count()), + tagSet.join(QString()), + valueSet.join(QString())); } @@ -200,11 +268,15 @@ QString generateToXXXDef(const QString& name, const QList %1;\n"\ " if (%1.isEmpty()) {\n"\ - "%3"\ + " %1.reserve(%5);\n"\ + " for (unsigned i = 0; i < %5; ++i)\n"\ + " %1.insert(%1_tagArray[i], %1_valueArray[i]);\n"\ " }\n"\ " newRow(expr) << %1.value(expr);\n"\ "}\n"\ @@ -226,17 +298,20 @@ QString generateToXXXDef(const QString& name, const QList >::const_iterator i = list.constBegin(); - QStringList set; + QStringList tagSet, valueSet; + tagSet.reserve(list.count()); + valueSet.reserve(list.count()); + int tmp = -1; for(; i != list.constEnd(); ++i) { QPair 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.second)); - set.append(QString::fromAscii(");\n")); + tagSet.append(QString("\n \"")); + tagSet.append(t.first); + tagSet.append(QString::fromAscii("\",")); + if (!((++tmp)%10)) + valueSet.append(QString("\n ")); + valueSet.append(prepareToInsert(t.second)); + valueSet.append(QString::fromAscii(", ")); } // toInteger shouldn't return NaN, so it would be nice to catch the case. QString hook; @@ -247,105 +322,129 @@ QString generateToXXXDef(const QString& name, const QList(), set.join(QString()), hook); + return result.arg(name, + typeName(), + tagSet.join(QString()), + valueSet.join(QString()), + QString::number(list.count()), + hook); } template static QString generateCastDef(const QList >& list) { static const QString templ = "\n"\ - "void tst_QScriptValue::qscriptvalue_cast%2_initData()\n"\ + "void tst_QScriptValue::qscriptvalue_cast%1_initData()\n"\ "{\n"\ - " QTest::addColumn<%2>(\"expected\");\n"\ + " QTest::addColumn<%1>(\"expected\");\n"\ " initScriptValues();\n"\ "}\n"\ "\n"\ - "void tst_QScriptValue::qscriptvalue_cast%2_makeData(const char* expr)\n"\ + "static QString qscriptvalue_cast%1_tagArray [] = {%2};\n"\ + "static %1 qscriptvalue_cast%1_valueArray [] = {%3};\n"\ + "void tst_QScriptValue::qscriptvalue_cast%1_makeData(const char* expr)\n"\ "{\n"\ - " static QHash value;\n"\ + " static QHash value;\n"\ " if (value.isEmpty()) {\n"\ - "%3"\ + " value.reserve(%4);\n"\ + " for (unsigned i = 0; i < %4; ++i)\n"\ + " value.insert(qscriptvalue_cast%1_tagArray[i], qscriptvalue_cast%1_valueArray[i]);\n"\ " }\n"\ " newRow(expr) << value.value(expr);\n"\ "}\n"\ "\n"\ - "void tst_QScriptValue::qscriptvalue_cast%2_test(const char*, const QScriptValue& value)\n"\ + "void tst_QScriptValue::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\ "{\n"\ - " QFETCH(%2, expected);\n"\ - " QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\ - " QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\ + " QFETCH(%1, expected);\n"\ + " QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\ + " QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\ "}\n"\ "\n"\ - "DEFINE_TEST_FUNCTION(qscriptvalue_cast%2)\n"; + "DEFINE_TEST_FUNCTION(qscriptvalue_cast%1)\n"; QString result = templ; typename QList >::const_iterator i = list.constBegin(); - QStringList set; + QStringList tagSet, valueSet; + tagSet.reserve(list.count()); + valueSet.reserve(list.count()); + int tmp = -1; for(; i != list.constEnd(); ++i) { QPair 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.second)); - set.append(QString::fromAscii(");\n")); + tagSet.append(QString("\n \"")); + tagSet.append(t.first); + tagSet.append(QString::fromAscii("\",")); + if (!((++tmp)%2)) + valueSet.append(QString("\n ")); + valueSet.append(prepareToInsert(t.second)); + valueSet.append(QString::fromAscii(", ")); } - return result.arg(typeName(), set.join(QString())); + return result.arg(typeName(), tagSet.join(QString()), valueSet.join(QString()), QString::number(list.count())); } template<> QString generateCastDef(const QList >& list) { static const QString templ = "\n"\ - "void tst_QScriptValue::qscriptvalue_cast%2_initData()\n"\ + "void tst_QScriptValue::qscriptvalue_cast%1_initData()\n"\ "{\n"\ - " QTest::addColumn<%2>(\"expected\");\n"\ + " QTest::addColumn<%1>(\"expected\");\n"\ " initScriptValues();\n"\ "}\n"\ "\n"\ - "void tst_QScriptValue::qscriptvalue_cast%2_makeData(const char* expr)\n"\ + "static QString qscriptvalue_cast%1_tagArray [] = {%2};\n"\ + "static %1 qscriptvalue_cast%1_valueArray [] = {%3};\n"\ + "void tst_QScriptValue::qscriptvalue_cast%1_makeData(const char* expr)\n"\ "{\n"\ - " static QHash value;\n"\ + " static QHash value;\n"\ " if (value.isEmpty()) {\n"\ - "%3"\ + " value.reserve(%4);\n"\ + " for (unsigned i = 0; i < %4; ++i)\n"\ + " value.insert(qscriptvalue_cast%1_tagArray[i], qscriptvalue_cast%1_valueArray[i]);\n"\ " }\n"\ " newRow(expr) << value.value(expr);\n"\ "}\n"\ "\n"\ - "void tst_QScriptValue::qscriptvalue_cast%2_test(const char*, const QScriptValue& value)\n"\ + "void tst_QScriptValue::qscriptvalue_cast%1_test(const char*, const QScriptValue& value)\n"\ "{\n"\ - " QFETCH(%2, expected);\n"\ + " QFETCH(%1, expected);\n"\ " if (qIsNaN(expected)) {\n" - " QVERIFY(qIsNaN(qscriptvalue_cast<%2>(value)));\n" - " QVERIFY(qIsNaN(qscriptvalue_cast<%2>(value)));\n" + " QVERIFY(qIsNaN(qscriptvalue_cast<%1>(value)));\n" + " QVERIFY(qIsNaN(qscriptvalue_cast<%1>(value)));\n" " return;\n" " }\n"\ " if (qIsInf(expected)) {\n" - " QVERIFY(qIsInf(qscriptvalue_cast<%2>(value)));\n" - " QVERIFY(qIsInf(qscriptvalue_cast<%2>(value)));\n" + " QVERIFY(qIsInf(qscriptvalue_cast<%1>(value)));\n" + " QVERIFY(qIsInf(qscriptvalue_cast<%1>(value)));\n" " return;\n" " }\n" - " QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\ - " QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\ + " QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\ + " QCOMPARE(qscriptvalue_cast<%1>(value), expected);\n"\ "}\n"\ "\n"\ - "DEFINE_TEST_FUNCTION(qscriptvalue_cast%2)\n"; + "DEFINE_TEST_FUNCTION(qscriptvalue_cast%1)\n"; QString result = templ; QList >::const_iterator i = list.constBegin(); - QStringList set; + QStringList tagSet, valueSet; + tagSet.reserve(list.count()); + valueSet.reserve(list.count()); + int tmp = -1; for(; i != list.constEnd(); ++i) { QPair 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.second)); - set.append(QString::fromAscii(");\n")); + tagSet.append(QString("\n \"")); + tagSet.append(t.first); + tagSet.append(QString::fromAscii("\",")); + if (!((++tmp)%10)) + valueSet.append(QString("\n ")); + valueSet.append(prepareToInsert(t.second)); + valueSet.append(QString::fromAscii(", ")); } - return result.arg(typeName(), set.join(QString())); + return result.arg(typeName(), + tagSet.join(QString()), + valueSet.join(QString()), + QString::number(list.count())); } static QString generateCompareDef(const QString& comparisionType, const QList tags) @@ -358,11 +457,14 @@ static QString generateCompareDef(const QString& comparisionType, const QList equals;\n"\ " if (equals.isEmpty()) {\n"\ - "%2\n"\ + " equals.reserve(%3);\n"\ + " for (unsigned i = 0; i < %3; ++i)\n"\ + " equals.insert(%1_array[i]);\n"\ " }\n"\ " QHash::const_iterator it;\n"\ " for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {\n"\ @@ -386,59 +488,16 @@ static QString generateCompareDef(const QString& comparisionType, const QList& 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"\ + static const QString templ = "void tst_QScriptValue::initScriptValues()\n"\ "{\n"\ " m_values.clear();\n"\ " if (engine) \n"\ @@ -463,7 +522,7 @@ static void squashTags(QString dataTag, const QVector& results, QList TestGenerator::generateTest() { // All data tags keept in one place. QVector dataTags; @@ -643,47 +702,63 @@ QString TestGenerator::generateTest() 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("toString", toStringList)); - result.append(generateToXXXDef("toNumber", toNumberList)); - result.append(generateToXXXDef("toBool", toBoolList)); - result.append(generateToXXXDef("toBoolean", toBooleanList)); - result.append(generateToXXXDef("toInteger", toIntegerList)); - result.append(generateToXXXDef("toInt32", toInt32List)); - result.append(generateToXXXDef("toUInt32", toUInt32List)); - result.append(generateToXXXDef("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"); + QHash result; + QStringList tmp; + tmp.append(generateLicence()); + tmp.append(generateInitDef(dataTags)); + result.insert("init", tmp.join("\n")); + tmp.clear(); + + tmp.append(generateLicence()); + tmp.append(generateIsXXXDef("isValid", isValidList)); + tmp.append(generateIsXXXDef("isBool", isBoolList)); + tmp.append(generateIsXXXDef("isBoolean", isBooleanList)); + tmp.append(generateIsXXXDef("isNumber", isNumberList)); + tmp.append(generateIsXXXDef("isFunction", isFunctionList)); + tmp.append(generateIsXXXDef("isNull", isNullList)); + tmp.append(generateIsXXXDef("isString", isStringList)); + tmp.append(generateIsXXXDef("isUndefined", isUndefinedList)); + tmp.append(generateIsXXXDef("isVariant", isVariantList)); + tmp.append(generateIsXXXDef("isQObject", isQObjectList)); + tmp.append(generateIsXXXDef("isQMetaObject", isQMetaObjectList)); + tmp.append(generateIsXXXDef("isObject", isObjectList)); + tmp.append(generateIsXXXDef("isDate", isDateList)); + tmp.append(generateIsXXXDef("isRegExp", isRegExpList)); + tmp.append(generateIsXXXDef("isArray", isArrayList)); + tmp.append(generateIsXXXDef("isError", isErrorList)); + result.insert("isXXX", tmp.join("\n")); + tmp.clear(); + + tmp.append(generateLicence()); + tmp.append(generateToXXXDef("toString", toStringList)); + tmp.append(generateToXXXDef("toNumber", toNumberList)); + tmp.append(generateToXXXDef("toBool", toBoolList)); + tmp.append(generateToXXXDef("toBoolean", toBooleanList)); + tmp.append(generateToXXXDef("toInteger", toIntegerList)); + tmp.append(generateToXXXDef("toInt32", toInt32List)); + tmp.append(generateToXXXDef("toUInt32", toUInt32List)); + tmp.append(generateToXXXDef("toUInt16", toUInt16List)); + result.insert("toXXX", tmp.join("\n")); + tmp.clear(); + + tmp.append(generateLicence()); + tmp.append(generateCompareDef("equals", equalsList)); + tmp.append(generateCompareDef("strictlyEquals", strictlyEqualsList)); + tmp.append(generateCompareDef("lessThan", lessThanList)); + tmp.append(generateCompareDef("instanceOf", instanceOfList)); + result.insert("comparison", tmp.join("\n")); + tmp.clear(); + + tmp.append(generateLicence()); + tmp.append(generateCastDef(castStringList)); + tmp.append(generateCastDef(castSRealList)); + tmp.append(generateCastDef(castBoolList)); + tmp.append(generateCastDef(castInt32List)); + tmp.append(generateCastDef(castUInt32List)); + tmp.append(generateCastDef(castUInt16List)); + result.insert("cast", tmp.join("\n")); + + return result; } diff --git a/tests/auto/qscriptvalue/testgen/testgenerator.h b/tests/auto/qscriptvalue/testgen/testgenerator.h index 8f4a357..1c61fc5 100644 --- a/tests/auto/qscriptvalue/testgen/testgenerator.h +++ b/tests/auto/qscriptvalue/testgen/testgenerator.h @@ -49,13 +49,10 @@ class TestGenerator { public: TestGenerator(QString& outputpath) - : m_ofile(outputpath) + : m_opath(outputpath) { - // Open output file - if (!m_ofile.open(QIODevice::WriteOnly | QIODevice::Text)) { - qWarning() << "Can't open output file: " << outputpath; - exit(2); - } + if (!m_opath.endsWith('/')) + m_opath.append('/'); m_tempFile.open(); } @@ -67,10 +64,10 @@ public: } void prepareData(); - QString generateTest(); - void save(const QString& data); + QHash generateTest(); + void save(const QHash& data); private: - QFile m_ofile; + QString m_opath; QTemporaryFile m_tempFile; }; -- cgit v0.12 From c5d04bb263528e665ed0423a27af3cc4bd40e9f2 Mon Sep 17 00:00:00 2001 From: Jedrzej Nowacki Date: Thu, 4 Mar 2010 16:19:58 +0200 Subject: Reduce compiling time of QScriptValue autotest suite on Windows. The QScriptValue autotest suite compiles about 24 min with MSVS2008, which is unacceptable. Tests were splited into a few files for better use of distributed compilation. Repeated calls to insert() and operator<<() where replaced by loops, that should reduce time of code optimizing. Reviewed-by: Kent Hansen --- tests/auto/qscriptvalue/qscriptvalue.pro | 8 +- tests/auto/qscriptvalue/tst_qscriptvalue.h | 2 + .../qscriptvalue/tst_qscriptvalue_generated.cpp | 10221 ------------------- .../tst_qscriptvalue_generated_cast.cpp | 1453 +++ .../tst_qscriptvalue_generated_comparison.cpp | 7026 +++++++++++++ .../tst_qscriptvalue_generated_init.cpp | 198 + .../tst_qscriptvalue_generated_isXXX.cpp | 830 ++ .../tst_qscriptvalue_generated_toXXX.cpp | 1897 ++++ 8 files changed, 11412 insertions(+), 10223 deletions(-) delete mode 100644 tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp create mode 100644 tests/auto/qscriptvalue/tst_qscriptvalue_generated_cast.cpp create mode 100644 tests/auto/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp create mode 100644 tests/auto/qscriptvalue/tst_qscriptvalue_generated_init.cpp create mode 100644 tests/auto/qscriptvalue/tst_qscriptvalue_generated_isXXX.cpp create mode 100644 tests/auto/qscriptvalue/tst_qscriptvalue_generated_toXXX.cpp diff --git a/tests/auto/qscriptvalue/qscriptvalue.pro b/tests/auto/qscriptvalue/qscriptvalue.pro index 191cd4a..c3e9912 100644 --- a/tests/auto/qscriptvalue/qscriptvalue.pro +++ b/tests/auto/qscriptvalue/qscriptvalue.pro @@ -4,8 +4,12 @@ SOURCES += tst_qscriptvalue.cpp HEADERS += tst_qscriptvalue.h # Generated by testgen -SOURCES += tst_qscriptvalue_generated.cpp - +SOURCES += \ + tst_qscriptvalue_generated_init.cpp \ + tst_qscriptvalue_generated_cast.cpp \ + tst_qscriptvalue_generated_comparison.cpp \ + tst_qscriptvalue_generated_isXXX.cpp \ + tst_qscriptvalue_generated_toXXX.cpp win32-msvc* { # With -O2, MSVC takes up to 24 minutes to compile this test! diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.h b/tests/auto/qscriptvalue/tst_qscriptvalue.h index a5c7b45..aae35b2 100644 --- a/tests/auto/qscriptvalue/tst_qscriptvalue.h +++ b/tests/auto/qscriptvalue/tst_qscriptvalue.h @@ -49,6 +49,8 @@ #include #include +#define DEFINE_TEST_VALUE(expr) m_values.insert(QString::fromLatin1(#expr), expr) + Q_DECLARE_METATYPE(QVariant) Q_DECLARE_METATYPE(QScriptValue) diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp deleted file mode 100644 index a07ff4b..0000000 --- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp +++ /dev/null @@ -1,10221 +0,0 @@ -/**************************************************************************** -** -** 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()")); - DEFINE_TEST_VALUE(engine->evaluate("a = new Object(); a.foo = 22; a.foo")); - DEFINE_TEST_VALUE(engine->evaluate("Undefined")); - DEFINE_TEST_VALUE(engine->evaluate("Null")); - DEFINE_TEST_VALUE(engine->evaluate("True")); - DEFINE_TEST_VALUE(engine->evaluate("False")); - DEFINE_TEST_VALUE(engine->evaluate("undefined")); - DEFINE_TEST_VALUE(engine->evaluate("null")); - DEFINE_TEST_VALUE(engine->evaluate("true")); - DEFINE_TEST_VALUE(engine->evaluate("false")); - DEFINE_TEST_VALUE(engine->evaluate("122")); - DEFINE_TEST_VALUE(engine->evaluate("124")); - DEFINE_TEST_VALUE(engine->evaluate("0")); - DEFINE_TEST_VALUE(engine->evaluate("0.0")); - DEFINE_TEST_VALUE(engine->evaluate("123.0")); - DEFINE_TEST_VALUE(engine->evaluate("6.37e-8")); - DEFINE_TEST_VALUE(engine->evaluate("-6.37e-8")); - DEFINE_TEST_VALUE(engine->evaluate("0x43211234")); - DEFINE_TEST_VALUE(engine->evaluate("0x10000")); - DEFINE_TEST_VALUE(engine->evaluate("0x10001")); - DEFINE_TEST_VALUE(engine->evaluate("NaN")); - DEFINE_TEST_VALUE(engine->evaluate("Infinity")); - DEFINE_TEST_VALUE(engine->evaluate("-Infinity")); - DEFINE_TEST_VALUE(engine->evaluate("'ciao'")); - DEFINE_TEST_VALUE(engine->evaluate("''")); - DEFINE_TEST_VALUE(engine->evaluate("'0'")); - DEFINE_TEST_VALUE(engine->evaluate("'123'")); - DEFINE_TEST_VALUE(engine->evaluate("'12.4'")); - DEFINE_TEST_VALUE(engine->nullValue()); - DEFINE_TEST_VALUE(engine->undefinedValue()); - DEFINE_TEST_VALUE(engine->newObject()); - DEFINE_TEST_VALUE(engine->newArray()); - DEFINE_TEST_VALUE(engine->newArray(10)); - DEFINE_TEST_VALUE(engine->newDate(QDateTime())); - DEFINE_TEST_VALUE(engine->newQMetaObject(&QObject::staticMetaObject)); - DEFINE_TEST_VALUE(engine->newVariant(QVariant())); - DEFINE_TEST_VALUE(engine->newVariant(QVariant(123))); - DEFINE_TEST_VALUE(engine->newVariant(QVariant(false))); - DEFINE_TEST_VALUE(engine->newQObject(0)); - DEFINE_TEST_VALUE(engine->newQObject(engine)); -} - - -void tst_QScriptValue::isValid_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isValid_makeData(const char* expr) -{ - static QSet 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()\")" - << "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")" - << "engine->evaluate(\"Undefined\")" - << "engine->evaluate(\"Null\")" - << "engine->evaluate(\"True\")" - << "engine->evaluate(\"False\")" - << "engine->evaluate(\"undefined\")" - << "engine->evaluate(\"null\")" - << "engine->evaluate(\"true\")" - << "engine->evaluate(\"false\")" - << "engine->evaluate(\"122\")" - << "engine->evaluate(\"124\")" - << "engine->evaluate(\"0\")" - << "engine->evaluate(\"0.0\")" - << "engine->evaluate(\"123.0\")" - << "engine->evaluate(\"6.37e-8\")" - << "engine->evaluate(\"-6.37e-8\")" - << "engine->evaluate(\"0x43211234\")" - << "engine->evaluate(\"0x10000\")" - << "engine->evaluate(\"0x10001\")" - << "engine->evaluate(\"NaN\")" - << "engine->evaluate(\"Infinity\")" - << "engine->evaluate(\"-Infinity\")" - << "engine->evaluate(\"'ciao'\")" - << "engine->evaluate(\"''\")" - << "engine->evaluate(\"'0'\")" - << "engine->evaluate(\"'123'\")" - << "engine->evaluate(\"'12.4'\")" - << "engine->nullValue()" - << "engine->undefinedValue()" - << "engine->newObject()" - << "engine->newArray()" - << "engine->newArray(10)" - << "engine->newDate(QDateTime())" - << "engine->newQMetaObject(&QObject::staticMetaObject)" - << "engine->newVariant(QVariant())" - << "engine->newVariant(QVariant(123))" - << "engine->newVariant(QVariant(false))" - << "engine->newQObject(0)" - << "engine->newQObject(engine)" - ; - } - newRow(expr) << isValid.contains(expr); -} - -void tst_QScriptValue::isValid_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isValid(), expected); - QCOMPARE(value.isValid(), expected); -} - -DEFINE_TEST_FUNCTION(isValid) - - -void tst_QScriptValue::isBool_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isBool_makeData(const char* expr) -{ - static QSet isBool; - if (isBool.isEmpty()) { - isBool << "QScriptValue(true)" - << "QScriptValue(false)" - << "QScriptValue(0, true)" - << "QScriptValue(0, false)" - << "QScriptValue(engine, true)" - << "QScriptValue(engine, false)" - << "engine->evaluate(\"true\")" - << "engine->evaluate(\"false\")" - ; - } - newRow(expr) << isBool.contains(expr); -} - -void tst_QScriptValue::isBool_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isBool(), expected); - QCOMPARE(value.isBool(), expected); -} - -DEFINE_TEST_FUNCTION(isBool) - - -void tst_QScriptValue::isBoolean_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isBoolean_makeData(const char* expr) -{ - static QSet isBoolean; - if (isBoolean.isEmpty()) { - isBoolean << "QScriptValue(true)" - << "QScriptValue(false)" - << "QScriptValue(0, true)" - << "QScriptValue(0, false)" - << "QScriptValue(engine, true)" - << "QScriptValue(engine, false)" - << "engine->evaluate(\"true\")" - << "engine->evaluate(\"false\")" - ; - } - newRow(expr) << isBoolean.contains(expr); -} - -void tst_QScriptValue::isBoolean_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isBoolean(), expected); - QCOMPARE(value.isBoolean(), expected); -} - -DEFINE_TEST_FUNCTION(isBoolean) - - -void tst_QScriptValue::isNumber_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isNumber_makeData(const char* expr) -{ - static QSet 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())" - << "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")" - << "engine->evaluate(\"122\")" - << "engine->evaluate(\"124\")" - << "engine->evaluate(\"0\")" - << "engine->evaluate(\"0.0\")" - << "engine->evaluate(\"123.0\")" - << "engine->evaluate(\"6.37e-8\")" - << "engine->evaluate(\"-6.37e-8\")" - << "engine->evaluate(\"0x43211234\")" - << "engine->evaluate(\"0x10000\")" - << "engine->evaluate(\"0x10001\")" - << "engine->evaluate(\"NaN\")" - << "engine->evaluate(\"Infinity\")" - << "engine->evaluate(\"-Infinity\")" - ; - } - newRow(expr) << isNumber.contains(expr); -} - -void tst_QScriptValue::isNumber_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isNumber(), expected); - QCOMPARE(value.isNumber(), expected); -} - -DEFINE_TEST_FUNCTION(isNumber) - - -void tst_QScriptValue::isFunction_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isFunction_makeData(const char* expr) -{ - static QSet 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/\")" - << "engine->newQMetaObject(&QObject::staticMetaObject)" - ; - } - newRow(expr) << isFunction.contains(expr); -} - -void tst_QScriptValue::isFunction_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isFunction(), expected); - QCOMPARE(value.isFunction(), expected); -} - -DEFINE_TEST_FUNCTION(isFunction) - - -void tst_QScriptValue::isNull_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isNull_makeData(const char* expr) -{ - static QSet isNull; - if (isNull.isEmpty()) { - isNull << "QScriptValue(QScriptValue::NullValue)" - << "QScriptValue(0, QScriptValue::NullValue)" - << "QScriptValue(engine, QScriptValue::NullValue)" - << "engine->evaluate(\"null\")" - << "engine->nullValue()" - << "engine->newQObject(0)" - ; - } - newRow(expr) << isNull.contains(expr); -} - -void tst_QScriptValue::isNull_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isNull(), expected); - QCOMPARE(value.isNull(), expected); -} - -DEFINE_TEST_FUNCTION(isNull) - - -void tst_QScriptValue::isString_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isString_makeData(const char* expr) -{ - static QSet 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\"))" - << "engine->evaluate(\"'ciao'\")" - << "engine->evaluate(\"''\")" - << "engine->evaluate(\"'0'\")" - << "engine->evaluate(\"'123'\")" - << "engine->evaluate(\"'12.4'\")" - ; - } - newRow(expr) << isString.contains(expr); -} - -void tst_QScriptValue::isString_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isString(), expected); - QCOMPARE(value.isString(), expected); -} - -DEFINE_TEST_FUNCTION(isString) - - -void tst_QScriptValue::isUndefined_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isUndefined_makeData(const char* expr) -{ - static QSet isUndefined; - if (isUndefined.isEmpty()) { - isUndefined << "QScriptValue(QScriptValue::UndefinedValue)" - << "QScriptValue(0, QScriptValue::UndefinedValue)" - << "QScriptValue(engine, QScriptValue::UndefinedValue)" - << "engine->evaluate(\"{}\")" - << "engine->evaluate(\"undefined\")" - << "engine->undefinedValue()" - ; - } - newRow(expr) << isUndefined.contains(expr); -} - -void tst_QScriptValue::isUndefined_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isUndefined(), expected); - QCOMPARE(value.isUndefined(), expected); -} - -DEFINE_TEST_FUNCTION(isUndefined) - - -void tst_QScriptValue::isVariant_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isVariant_makeData(const char* expr) -{ - static QSet isVariant; - if (isVariant.isEmpty()) { - isVariant << "engine->newVariant(QVariant())" - << "engine->newVariant(QVariant(123))" - << "engine->newVariant(QVariant(false))" - ; - } - newRow(expr) << isVariant.contains(expr); -} - -void tst_QScriptValue::isVariant_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isVariant(), expected); - QCOMPARE(value.isVariant(), expected); -} - -DEFINE_TEST_FUNCTION(isVariant) - - -void tst_QScriptValue::isQObject_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isQObject_makeData(const char* expr) -{ - static QSet isQObject; - if (isQObject.isEmpty()) { - isQObject << "engine->newQObject(engine)" - ; - } - newRow(expr) << isQObject.contains(expr); -} - -void tst_QScriptValue::isQObject_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isQObject(), expected); - QCOMPARE(value.isQObject(), expected); -} - -DEFINE_TEST_FUNCTION(isQObject) - - -void tst_QScriptValue::isQMetaObject_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isQMetaObject_makeData(const char* expr) -{ - static QSet isQMetaObject; - if (isQMetaObject.isEmpty()) { - isQMetaObject << "engine->newQMetaObject(&QObject::staticMetaObject)" - ; - } - newRow(expr) << isQMetaObject.contains(expr); -} - -void tst_QScriptValue::isQMetaObject_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isQMetaObject(), expected); - QCOMPARE(value.isQMetaObject(), expected); -} - -DEFINE_TEST_FUNCTION(isQMetaObject) - - -void tst_QScriptValue::isObject_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isObject_makeData(const char* expr) -{ - static QSet 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()\")" - << "engine->evaluate(\"Undefined\")" - << "engine->evaluate(\"Null\")" - << "engine->evaluate(\"True\")" - << "engine->evaluate(\"False\")" - << "engine->newObject()" - << "engine->newArray()" - << "engine->newArray(10)" - << "engine->newDate(QDateTime())" - << "engine->newQMetaObject(&QObject::staticMetaObject)" - << "engine->newVariant(QVariant())" - << "engine->newVariant(QVariant(123))" - << "engine->newVariant(QVariant(false))" - << "engine->newQObject(engine)" - ; - } - newRow(expr) << isObject.contains(expr); -} - -void tst_QScriptValue::isObject_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isObject(), expected); - QCOMPARE(value.isObject(), expected); -} - -DEFINE_TEST_FUNCTION(isObject) - - -void tst_QScriptValue::isDate_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isDate_makeData(const char* expr) -{ - static QSet isDate; - if (isDate.isEmpty()) { - isDate << "engine->evaluate(\"Date.prototype\")" - << "engine->newDate(QDateTime())" - ; - } - newRow(expr) << isDate.contains(expr); -} - -void tst_QScriptValue::isDate_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isDate(), expected); - QCOMPARE(value.isDate(), expected); -} - -DEFINE_TEST_FUNCTION(isDate) - - -void tst_QScriptValue::isRegExp_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isRegExp_makeData(const char* expr) -{ - static QSet 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); - QCOMPARE(value.isRegExp(), expected); -} - -DEFINE_TEST_FUNCTION(isRegExp) - - -void tst_QScriptValue::isArray_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isArray_makeData(const char* expr) -{ - static QSet isArray; - if (isArray.isEmpty()) { - isArray << "engine->evaluate(\"[]\")" - << "engine->evaluate(\"Array.prototype\")" - << "engine->evaluate(\"new Array()\")" - << "engine->newArray()" - << "engine->newArray(10)" - ; - } - newRow(expr) << isArray.contains(expr); -} - -void tst_QScriptValue::isArray_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isArray(), expected); - QCOMPARE(value.isArray(), expected); -} - -DEFINE_TEST_FUNCTION(isArray) - - -void tst_QScriptValue::isError_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::isError_makeData(const char* expr) -{ - static QSet isError; - if (isError.isEmpty()) { - isError << "engine->evaluate(\"Error.prototype\")" - << "engine->evaluate(\"new Error()\")" - << "engine->evaluate(\"Undefined\")" - << "engine->evaluate(\"Null\")" - << "engine->evaluate(\"True\")" - << "engine->evaluate(\"False\")" - ; - } - newRow(expr) << isError.contains(expr); -} - -void tst_QScriptValue::isError_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.isError(), expected); - QCOMPARE(value.isError(), expected); -} - -DEFINE_TEST_FUNCTION(isError) - - - -void tst_QScriptValue::toString_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::toString_makeData(const char* expr) -{ - static QHash 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"); - toString.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", "22"); - toString.insert("engine->evaluate(\"Undefined\")", "ReferenceError: Can't find variable: Undefined"); - toString.insert("engine->evaluate(\"Null\")", "ReferenceError: Can't find variable: Null"); - toString.insert("engine->evaluate(\"True\")", "ReferenceError: Can't find variable: True"); - toString.insert("engine->evaluate(\"False\")", "ReferenceError: Can't find variable: False"); - toString.insert("engine->evaluate(\"undefined\")", "undefined"); - toString.insert("engine->evaluate(\"null\")", "null"); - toString.insert("engine->evaluate(\"true\")", "true"); - toString.insert("engine->evaluate(\"false\")", "false"); - toString.insert("engine->evaluate(\"122\")", "122"); - toString.insert("engine->evaluate(\"124\")", "124"); - toString.insert("engine->evaluate(\"0\")", "0"); - toString.insert("engine->evaluate(\"0.0\")", "0"); - toString.insert("engine->evaluate(\"123.0\")", "123"); - toString.insert("engine->evaluate(\"6.37e-8\")", "6.37e-8"); - toString.insert("engine->evaluate(\"-6.37e-8\")", "-6.37e-8"); - toString.insert("engine->evaluate(\"0x43211234\")", "1126240820"); - toString.insert("engine->evaluate(\"0x10000\")", "65536"); - toString.insert("engine->evaluate(\"0x10001\")", "65537"); - toString.insert("engine->evaluate(\"NaN\")", "NaN"); - toString.insert("engine->evaluate(\"Infinity\")", "Infinity"); - toString.insert("engine->evaluate(\"-Infinity\")", "-Infinity"); - toString.insert("engine->evaluate(\"'ciao'\")", "ciao"); - toString.insert("engine->evaluate(\"''\")", ""); - toString.insert("engine->evaluate(\"'0'\")", "0"); - toString.insert("engine->evaluate(\"'123'\")", "123"); - toString.insert("engine->evaluate(\"'12.4'\")", "12.4"); - toString.insert("engine->nullValue()", "null"); - toString.insert("engine->undefinedValue()", "undefined"); - toString.insert("engine->newObject()", "[object Object]"); - toString.insert("engine->newArray()", ""); - toString.insert("engine->newArray(10)", ",,,,,,,,,"); - toString.insert("engine->newDate(QDateTime())", "Invalid Date"); - toString.insert("engine->newQMetaObject(&QObject::staticMetaObject)", "[object QMetaObject]"); - toString.insert("engine->newVariant(QVariant())", "undefined"); - toString.insert("engine->newVariant(QVariant(123))", "123"); - toString.insert("engine->newVariant(QVariant(false))", "false"); - toString.insert("engine->newQObject(0)", "null"); - toString.insert("engine->newQObject(engine)", "QScriptEngine(name = \"\")"); - } - newRow(expr) << toString.value(expr); -} - -void tst_QScriptValue::toString_test(const char*, const QScriptValue& value) -{ - QFETCH(QString, expected); - QCOMPARE(value.toString(), expected); - QCOMPARE(value.toString(), expected); -} - -DEFINE_TEST_FUNCTION(toString) - - -void tst_QScriptValue::toNumber_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::toNumber_makeData(const char* expr) -{ - static QHash 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()); - toNumber.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22); - toNumber.insert("engine->evaluate(\"Undefined\")", qQNaN()); - toNumber.insert("engine->evaluate(\"Null\")", qQNaN()); - toNumber.insert("engine->evaluate(\"True\")", qQNaN()); - toNumber.insert("engine->evaluate(\"False\")", qQNaN()); - toNumber.insert("engine->evaluate(\"undefined\")", qQNaN()); - toNumber.insert("engine->evaluate(\"null\")", 0); - toNumber.insert("engine->evaluate(\"true\")", 1); - toNumber.insert("engine->evaluate(\"false\")", 0); - toNumber.insert("engine->evaluate(\"122\")", 122); - toNumber.insert("engine->evaluate(\"124\")", 124); - toNumber.insert("engine->evaluate(\"0\")", 0); - toNumber.insert("engine->evaluate(\"0.0\")", 0); - toNumber.insert("engine->evaluate(\"123.0\")", 123); - toNumber.insert("engine->evaluate(\"6.37e-8\")", 6.369999999999999e-08); - toNumber.insert("engine->evaluate(\"-6.37e-8\")", -6.369999999999999e-08); - toNumber.insert("engine->evaluate(\"0x43211234\")", 1126240820); - toNumber.insert("engine->evaluate(\"0x10000\")", 65536); - toNumber.insert("engine->evaluate(\"0x10001\")", 65537); - toNumber.insert("engine->evaluate(\"NaN\")", qQNaN()); - toNumber.insert("engine->evaluate(\"Infinity\")", qInf()); - toNumber.insert("engine->evaluate(\"-Infinity\")", qInf()); - toNumber.insert("engine->evaluate(\"'ciao'\")", qQNaN()); - toNumber.insert("engine->evaluate(\"''\")", 0); - toNumber.insert("engine->evaluate(\"'0'\")", 0); - toNumber.insert("engine->evaluate(\"'123'\")", 123); - toNumber.insert("engine->evaluate(\"'12.4'\")", 12.4); - toNumber.insert("engine->nullValue()", 0); - toNumber.insert("engine->undefinedValue()", qQNaN()); - toNumber.insert("engine->newObject()", qQNaN()); - toNumber.insert("engine->newArray()", 0); - toNumber.insert("engine->newArray(10)", qQNaN()); - toNumber.insert("engine->newDate(QDateTime())", qQNaN()); - toNumber.insert("engine->newQMetaObject(&QObject::staticMetaObject)", qQNaN()); - toNumber.insert("engine->newVariant(QVariant())", qQNaN()); - toNumber.insert("engine->newVariant(QVariant(123))", 123); - toNumber.insert("engine->newVariant(QVariant(false))", 0); - toNumber.insert("engine->newQObject(0)", 0); - toNumber.insert("engine->newQObject(engine)", 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())); - QVERIFY(qIsInf(value.toNumber())); - return; - } - QCOMPARE(value.toNumber(), expected); - QCOMPARE(value.toNumber(), expected); -} - -DEFINE_TEST_FUNCTION(toNumber) - - -void tst_QScriptValue::toBool_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::toBool_makeData(const char* expr) -{ - static QHash 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); - toBool.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true); - toBool.insert("engine->evaluate(\"Undefined\")", true); - toBool.insert("engine->evaluate(\"Null\")", true); - toBool.insert("engine->evaluate(\"True\")", true); - toBool.insert("engine->evaluate(\"False\")", true); - toBool.insert("engine->evaluate(\"undefined\")", false); - toBool.insert("engine->evaluate(\"null\")", false); - toBool.insert("engine->evaluate(\"true\")", true); - toBool.insert("engine->evaluate(\"false\")", false); - toBool.insert("engine->evaluate(\"122\")", true); - toBool.insert("engine->evaluate(\"124\")", true); - toBool.insert("engine->evaluate(\"0\")", false); - toBool.insert("engine->evaluate(\"0.0\")", false); - toBool.insert("engine->evaluate(\"123.0\")", true); - toBool.insert("engine->evaluate(\"6.37e-8\")", true); - toBool.insert("engine->evaluate(\"-6.37e-8\")", true); - toBool.insert("engine->evaluate(\"0x43211234\")", true); - toBool.insert("engine->evaluate(\"0x10000\")", true); - toBool.insert("engine->evaluate(\"0x10001\")", true); - toBool.insert("engine->evaluate(\"NaN\")", false); - toBool.insert("engine->evaluate(\"Infinity\")", true); - toBool.insert("engine->evaluate(\"-Infinity\")", true); - toBool.insert("engine->evaluate(\"'ciao'\")", true); - toBool.insert("engine->evaluate(\"''\")", false); - toBool.insert("engine->evaluate(\"'0'\")", true); - toBool.insert("engine->evaluate(\"'123'\")", true); - toBool.insert("engine->evaluate(\"'12.4'\")", true); - toBool.insert("engine->nullValue()", false); - toBool.insert("engine->undefinedValue()", false); - toBool.insert("engine->newObject()", true); - toBool.insert("engine->newArray()", true); - toBool.insert("engine->newArray(10)", true); - toBool.insert("engine->newDate(QDateTime())", true); - toBool.insert("engine->newQMetaObject(&QObject::staticMetaObject)", true); - toBool.insert("engine->newVariant(QVariant())", true); - toBool.insert("engine->newVariant(QVariant(123))", true); - toBool.insert("engine->newVariant(QVariant(false))", true); - toBool.insert("engine->newQObject(0)", false); - toBool.insert("engine->newQObject(engine)", true); - } - newRow(expr) << toBool.value(expr); -} - -void tst_QScriptValue::toBool_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.toBool(), expected); - QCOMPARE(value.toBool(), expected); -} - -DEFINE_TEST_FUNCTION(toBool) - - -void tst_QScriptValue::toBoolean_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::toBoolean_makeData(const char* expr) -{ - static QHash 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); - toBoolean.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true); - toBoolean.insert("engine->evaluate(\"Undefined\")", true); - toBoolean.insert("engine->evaluate(\"Null\")", true); - toBoolean.insert("engine->evaluate(\"True\")", true); - toBoolean.insert("engine->evaluate(\"False\")", true); - toBoolean.insert("engine->evaluate(\"undefined\")", false); - toBoolean.insert("engine->evaluate(\"null\")", false); - toBoolean.insert("engine->evaluate(\"true\")", true); - toBoolean.insert("engine->evaluate(\"false\")", false); - toBoolean.insert("engine->evaluate(\"122\")", true); - toBoolean.insert("engine->evaluate(\"124\")", true); - toBoolean.insert("engine->evaluate(\"0\")", false); - toBoolean.insert("engine->evaluate(\"0.0\")", false); - toBoolean.insert("engine->evaluate(\"123.0\")", true); - toBoolean.insert("engine->evaluate(\"6.37e-8\")", true); - toBoolean.insert("engine->evaluate(\"-6.37e-8\")", true); - toBoolean.insert("engine->evaluate(\"0x43211234\")", true); - toBoolean.insert("engine->evaluate(\"0x10000\")", true); - toBoolean.insert("engine->evaluate(\"0x10001\")", true); - toBoolean.insert("engine->evaluate(\"NaN\")", false); - toBoolean.insert("engine->evaluate(\"Infinity\")", true); - toBoolean.insert("engine->evaluate(\"-Infinity\")", true); - toBoolean.insert("engine->evaluate(\"'ciao'\")", true); - toBoolean.insert("engine->evaluate(\"''\")", false); - toBoolean.insert("engine->evaluate(\"'0'\")", true); - toBoolean.insert("engine->evaluate(\"'123'\")", true); - toBoolean.insert("engine->evaluate(\"'12.4'\")", true); - toBoolean.insert("engine->nullValue()", false); - toBoolean.insert("engine->undefinedValue()", false); - toBoolean.insert("engine->newObject()", true); - toBoolean.insert("engine->newArray()", true); - toBoolean.insert("engine->newArray(10)", true); - toBoolean.insert("engine->newDate(QDateTime())", true); - toBoolean.insert("engine->newQMetaObject(&QObject::staticMetaObject)", true); - toBoolean.insert("engine->newVariant(QVariant())", true); - toBoolean.insert("engine->newVariant(QVariant(123))", true); - toBoolean.insert("engine->newVariant(QVariant(false))", true); - toBoolean.insert("engine->newQObject(0)", false); - toBoolean.insert("engine->newQObject(engine)", true); - } - newRow(expr) << toBoolean.value(expr); -} - -void tst_QScriptValue::toBoolean_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(value.toBoolean(), expected); - QCOMPARE(value.toBoolean(), expected); -} - -DEFINE_TEST_FUNCTION(toBoolean) - - -void tst_QScriptValue::toInteger_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::toInteger_makeData(const char* expr) -{ - static QHash 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); - toInteger.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22); - toInteger.insert("engine->evaluate(\"Undefined\")", 0); - toInteger.insert("engine->evaluate(\"Null\")", 0); - toInteger.insert("engine->evaluate(\"True\")", 0); - toInteger.insert("engine->evaluate(\"False\")", 0); - toInteger.insert("engine->evaluate(\"undefined\")", 0); - toInteger.insert("engine->evaluate(\"null\")", 0); - toInteger.insert("engine->evaluate(\"true\")", 1); - toInteger.insert("engine->evaluate(\"false\")", 0); - toInteger.insert("engine->evaluate(\"122\")", 122); - toInteger.insert("engine->evaluate(\"124\")", 124); - toInteger.insert("engine->evaluate(\"0\")", 0); - toInteger.insert("engine->evaluate(\"0.0\")", 0); - toInteger.insert("engine->evaluate(\"123.0\")", 123); - toInteger.insert("engine->evaluate(\"6.37e-8\")", 0); - toInteger.insert("engine->evaluate(\"-6.37e-8\")", 0); - toInteger.insert("engine->evaluate(\"0x43211234\")", 1126240820); - toInteger.insert("engine->evaluate(\"0x10000\")", 65536); - toInteger.insert("engine->evaluate(\"0x10001\")", 65537); - toInteger.insert("engine->evaluate(\"NaN\")", 0); - toInteger.insert("engine->evaluate(\"Infinity\")", qInf()); - toInteger.insert("engine->evaluate(\"-Infinity\")", qInf()); - toInteger.insert("engine->evaluate(\"'ciao'\")", 0); - toInteger.insert("engine->evaluate(\"''\")", 0); - toInteger.insert("engine->evaluate(\"'0'\")", 0); - toInteger.insert("engine->evaluate(\"'123'\")", 123); - toInteger.insert("engine->evaluate(\"'12.4'\")", 12); - toInteger.insert("engine->nullValue()", 0); - toInteger.insert("engine->undefinedValue()", 0); - toInteger.insert("engine->newObject()", 0); - toInteger.insert("engine->newArray()", 0); - toInteger.insert("engine->newArray(10)", 0); - toInteger.insert("engine->newDate(QDateTime())", 0); - toInteger.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0); - toInteger.insert("engine->newVariant(QVariant())", 0); - toInteger.insert("engine->newVariant(QVariant(123))", 123); - toInteger.insert("engine->newVariant(QVariant(false))", 0); - toInteger.insert("engine->newQObject(0)", 0); - toInteger.insert("engine->newQObject(engine)", 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())); - QVERIFY(qIsInf(value.toInteger())); - return; - } - QCOMPARE(value.toInteger(), expected); - QCOMPARE(value.toInteger(), expected); -} - -DEFINE_TEST_FUNCTION(toInteger) - - -void tst_QScriptValue::toInt32_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::toInt32_makeData(const char* expr) -{ - static QHash 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); - toInt32.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22); - toInt32.insert("engine->evaluate(\"Undefined\")", 0); - toInt32.insert("engine->evaluate(\"Null\")", 0); - toInt32.insert("engine->evaluate(\"True\")", 0); - toInt32.insert("engine->evaluate(\"False\")", 0); - toInt32.insert("engine->evaluate(\"undefined\")", 0); - toInt32.insert("engine->evaluate(\"null\")", 0); - toInt32.insert("engine->evaluate(\"true\")", 1); - toInt32.insert("engine->evaluate(\"false\")", 0); - toInt32.insert("engine->evaluate(\"122\")", 122); - toInt32.insert("engine->evaluate(\"124\")", 124); - toInt32.insert("engine->evaluate(\"0\")", 0); - toInt32.insert("engine->evaluate(\"0.0\")", 0); - toInt32.insert("engine->evaluate(\"123.0\")", 123); - toInt32.insert("engine->evaluate(\"6.37e-8\")", 0); - toInt32.insert("engine->evaluate(\"-6.37e-8\")", 0); - toInt32.insert("engine->evaluate(\"0x43211234\")", 1126240820); - toInt32.insert("engine->evaluate(\"0x10000\")", 65536); - toInt32.insert("engine->evaluate(\"0x10001\")", 65537); - toInt32.insert("engine->evaluate(\"NaN\")", 0); - toInt32.insert("engine->evaluate(\"Infinity\")", 0); - toInt32.insert("engine->evaluate(\"-Infinity\")", 0); - toInt32.insert("engine->evaluate(\"'ciao'\")", 0); - toInt32.insert("engine->evaluate(\"''\")", 0); - toInt32.insert("engine->evaluate(\"'0'\")", 0); - toInt32.insert("engine->evaluate(\"'123'\")", 123); - toInt32.insert("engine->evaluate(\"'12.4'\")", 12); - toInt32.insert("engine->nullValue()", 0); - toInt32.insert("engine->undefinedValue()", 0); - toInt32.insert("engine->newObject()", 0); - toInt32.insert("engine->newArray()", 0); - toInt32.insert("engine->newArray(10)", 0); - toInt32.insert("engine->newDate(QDateTime())", 0); - toInt32.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0); - toInt32.insert("engine->newVariant(QVariant())", 0); - toInt32.insert("engine->newVariant(QVariant(123))", 123); - toInt32.insert("engine->newVariant(QVariant(false))", 0); - toInt32.insert("engine->newQObject(0)", 0); - toInt32.insert("engine->newQObject(engine)", 0); - } - newRow(expr) << toInt32.value(expr); -} - -void tst_QScriptValue::toInt32_test(const char*, const QScriptValue& value) -{ - QFETCH(qint32, expected); - QCOMPARE(value.toInt32(), expected); - QCOMPARE(value.toInt32(), expected); -} - -DEFINE_TEST_FUNCTION(toInt32) - - -void tst_QScriptValue::toUInt32_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::toUInt32_makeData(const char* expr) -{ - static QHash 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); - toUInt32.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22); - toUInt32.insert("engine->evaluate(\"Undefined\")", 0); - toUInt32.insert("engine->evaluate(\"Null\")", 0); - toUInt32.insert("engine->evaluate(\"True\")", 0); - toUInt32.insert("engine->evaluate(\"False\")", 0); - toUInt32.insert("engine->evaluate(\"undefined\")", 0); - toUInt32.insert("engine->evaluate(\"null\")", 0); - toUInt32.insert("engine->evaluate(\"true\")", 1); - toUInt32.insert("engine->evaluate(\"false\")", 0); - toUInt32.insert("engine->evaluate(\"122\")", 122); - toUInt32.insert("engine->evaluate(\"124\")", 124); - toUInt32.insert("engine->evaluate(\"0\")", 0); - toUInt32.insert("engine->evaluate(\"0.0\")", 0); - toUInt32.insert("engine->evaluate(\"123.0\")", 123); - toUInt32.insert("engine->evaluate(\"6.37e-8\")", 0); - toUInt32.insert("engine->evaluate(\"-6.37e-8\")", 0); - toUInt32.insert("engine->evaluate(\"0x43211234\")", 1126240820); - toUInt32.insert("engine->evaluate(\"0x10000\")", 65536); - toUInt32.insert("engine->evaluate(\"0x10001\")", 65537); - toUInt32.insert("engine->evaluate(\"NaN\")", 0); - toUInt32.insert("engine->evaluate(\"Infinity\")", 0); - toUInt32.insert("engine->evaluate(\"-Infinity\")", 0); - toUInt32.insert("engine->evaluate(\"'ciao'\")", 0); - toUInt32.insert("engine->evaluate(\"''\")", 0); - toUInt32.insert("engine->evaluate(\"'0'\")", 0); - toUInt32.insert("engine->evaluate(\"'123'\")", 123); - toUInt32.insert("engine->evaluate(\"'12.4'\")", 12); - toUInt32.insert("engine->nullValue()", 0); - toUInt32.insert("engine->undefinedValue()", 0); - toUInt32.insert("engine->newObject()", 0); - toUInt32.insert("engine->newArray()", 0); - toUInt32.insert("engine->newArray(10)", 0); - toUInt32.insert("engine->newDate(QDateTime())", 0); - toUInt32.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0); - toUInt32.insert("engine->newVariant(QVariant())", 0); - toUInt32.insert("engine->newVariant(QVariant(123))", 123); - toUInt32.insert("engine->newVariant(QVariant(false))", 0); - toUInt32.insert("engine->newQObject(0)", 0); - toUInt32.insert("engine->newQObject(engine)", 0); - } - newRow(expr) << toUInt32.value(expr); -} - -void tst_QScriptValue::toUInt32_test(const char*, const QScriptValue& value) -{ - QFETCH(quint32, expected); - QCOMPARE(value.toUInt32(), expected); - QCOMPARE(value.toUInt32(), expected); -} - -DEFINE_TEST_FUNCTION(toUInt32) - - -void tst_QScriptValue::toUInt16_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::toUInt16_makeData(const char* expr) -{ - static QHash 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); - toUInt16.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22); - toUInt16.insert("engine->evaluate(\"Undefined\")", 0); - toUInt16.insert("engine->evaluate(\"Null\")", 0); - toUInt16.insert("engine->evaluate(\"True\")", 0); - toUInt16.insert("engine->evaluate(\"False\")", 0); - toUInt16.insert("engine->evaluate(\"undefined\")", 0); - toUInt16.insert("engine->evaluate(\"null\")", 0); - toUInt16.insert("engine->evaluate(\"true\")", 1); - toUInt16.insert("engine->evaluate(\"false\")", 0); - toUInt16.insert("engine->evaluate(\"122\")", 122); - toUInt16.insert("engine->evaluate(\"124\")", 124); - toUInt16.insert("engine->evaluate(\"0\")", 0); - toUInt16.insert("engine->evaluate(\"0.0\")", 0); - toUInt16.insert("engine->evaluate(\"123.0\")", 123); - toUInt16.insert("engine->evaluate(\"6.37e-8\")", 0); - toUInt16.insert("engine->evaluate(\"-6.37e-8\")", 0); - toUInt16.insert("engine->evaluate(\"0x43211234\")", 4660); - toUInt16.insert("engine->evaluate(\"0x10000\")", 0); - toUInt16.insert("engine->evaluate(\"0x10001\")", 1); - toUInt16.insert("engine->evaluate(\"NaN\")", 0); - toUInt16.insert("engine->evaluate(\"Infinity\")", 0); - toUInt16.insert("engine->evaluate(\"-Infinity\")", 0); - toUInt16.insert("engine->evaluate(\"'ciao'\")", 0); - toUInt16.insert("engine->evaluate(\"''\")", 0); - toUInt16.insert("engine->evaluate(\"'0'\")", 0); - toUInt16.insert("engine->evaluate(\"'123'\")", 123); - toUInt16.insert("engine->evaluate(\"'12.4'\")", 12); - toUInt16.insert("engine->nullValue()", 0); - toUInt16.insert("engine->undefinedValue()", 0); - toUInt16.insert("engine->newObject()", 0); - toUInt16.insert("engine->newArray()", 0); - toUInt16.insert("engine->newArray(10)", 0); - toUInt16.insert("engine->newDate(QDateTime())", 0); - toUInt16.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0); - toUInt16.insert("engine->newVariant(QVariant())", 0); - toUInt16.insert("engine->newVariant(QVariant(123))", 123); - toUInt16.insert("engine->newVariant(QVariant(false))", 0); - toUInt16.insert("engine->newQObject(0)", 0); - toUInt16.insert("engine->newQObject(engine)", 0); - } - newRow(expr) << toUInt16.value(expr); -} - -void tst_QScriptValue::toUInt16_test(const char*, const QScriptValue& value) -{ - QFETCH(quint16, expected); - QCOMPARE(value.toUInt16(), expected); - QCOMPARE(value.toUInt16(), expected); -} - -DEFINE_TEST_FUNCTION(toUInt16) - - -void tst_QScriptValue::equals_initData() -{ - QTest::addColumn("other"); - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::equals_makeData(const char *expr) -{ - static QSet 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::UndefinedValue) <=> engine->evaluate(\"undefined\")"); - equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->nullValue()"); - equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()"); - equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->newQObject(0)"); - 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(QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->undefinedValue()"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)"); - equals.insert("QScriptValue(true) <=> QScriptValue(true)"); - equals.insert("QScriptValue(true) <=> QScriptValue(0, true)"); - equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)"); - equals.insert("QScriptValue(true) <=> engine->evaluate(\"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(false) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(false) <=> engine->newArray()"); - equals.insert("QScriptValue(false) <=> engine->newVariant(QVariant(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(int(122)) <=> engine->evaluate(\"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(uint(124)) <=> engine->evaluate(\"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) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(0) <=> engine->newArray()"); - equals.insert("QScriptValue(0) <=> engine->newVariant(QVariant(false))"); - 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) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(0.0) <=> engine->newArray()"); - equals.insert("QScriptValue(0.0) <=> engine->newVariant(QVariant(false))"); - 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(123.0) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(123.0) <=> engine->newVariant(QVariant(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) <=> engine->evaluate(\"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(-6.37e-8) <=> engine->evaluate(\"-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(0x43211234) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)"); - equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)"); - equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)"); - equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)"); - equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)"); - equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)"); - equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"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()) <=> engine->evaluate(\"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(-qInf()) <=> engine->evaluate(\"-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\") <=> engine->evaluate(\"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(\"-Infinity\") <=> engine->evaluate(\"-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(\"ciao\") <=> engine->evaluate(\"'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::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'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(\"\")) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->newArray()"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(false))"); - 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()) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(QString()) <=> engine->newArray()"); - equals.insert("QScriptValue(QString()) <=> engine->newVariant(QVariant(false))"); - 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(\"0\")) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(false))"); - 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(\"123\")) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'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::UndefinedValue) <=> engine->evaluate(\"undefined\")"); - equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->nullValue()"); - equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()"); - equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->newQObject(0)"); - 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, QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->undefinedValue()"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)"); - 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, true) <=> engine->evaluate(\"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, false) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(0, false) <=> engine->newArray()"); - equals.insert("QScriptValue(0, false) <=> engine->newVariant(QVariant(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, int(122)) <=> engine->evaluate(\"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, uint(124)) <=> engine->evaluate(\"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) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(0, 0) <=> engine->newArray()"); - equals.insert("QScriptValue(0, 0) <=> engine->newVariant(QVariant(false))"); - 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, 0.0) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->newArray()"); - equals.insert("QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(false))"); - 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, 123.0) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, 123.0) <=> engine->newVariant(QVariant(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) <=> engine->evaluate(\"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, -6.37e-8) <=> engine->evaluate(\"-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, 0x43211234) <=> engine->evaluate(\"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, 0x10000) <=> engine->evaluate(\"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, 0x10001) <=> engine->evaluate(\"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()) <=> engine->evaluate(\"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, -qInf()) <=> engine->evaluate(\"-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\") <=> engine->evaluate(\"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, \"-Infinity\") <=> engine->evaluate(\"-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, \"ciao\") <=> engine->evaluate(\"'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::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'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(\"\")) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newArray()"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(false))"); - 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()) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->newArray()"); - equals.insert("QScriptValue(0, QString()) <=> engine->newVariant(QVariant(false))"); - 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(\"0\")) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(false))"); - 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(\"123\")) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newVariant(QVariant(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::UndefinedValue) <=> engine->evaluate(\"undefined\")"); - equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->nullValue()"); - equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()"); - equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->newQObject(0)"); - 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, QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->undefinedValue()"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)"); - 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, true) <=> engine->evaluate(\"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, false) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(engine, false) <=> engine->newArray()"); - equals.insert("QScriptValue(engine, false) <=> engine->newVariant(QVariant(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, int(122)) <=> engine->evaluate(\"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, uint(124)) <=> engine->evaluate(\"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) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->newArray()"); - equals.insert("QScriptValue(engine, 0) <=> engine->newVariant(QVariant(false))"); - 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, 0.0) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->newArray()"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(false))"); - 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, 123.0) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, 123.0) <=> engine->newVariant(QVariant(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) <=> engine->evaluate(\"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, -6.37e-8) <=> engine->evaluate(\"-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, 0x43211234) <=> engine->evaluate(\"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, 0x10000) <=> engine->evaluate(\"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, 0x10001) <=> engine->evaluate(\"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()) <=> engine->evaluate(\"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, -qInf()) <=> engine->evaluate(\"-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\") <=> engine->evaluate(\"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, \"-Infinity\") <=> engine->evaluate(\"-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, \"ciao\") <=> engine->evaluate(\"'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::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'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(\"\")) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newArray()"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(false))"); - 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()) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->newArray()"); - equals.insert("QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(false))"); - 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(\"0\")) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(false))"); - 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(\"123\")) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newVariant(QVariant(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(\"[]\") <=> engine->evaluate(\"false\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0.0\")"); - 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(\"{}\") <=> engine->evaluate(\"undefined\")"); - equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"null\")"); - equals.insert("engine->evaluate(\"{}\") <=> engine->nullValue()"); - equals.insert("engine->evaluate(\"{}\") <=> engine->undefinedValue()"); - equals.insert("engine->evaluate(\"{}\") <=> engine->newQObject(0)"); - 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(\"Array.prototype\") <=> engine->evaluate(\"false\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"''\")"); - 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 Array()\") <=> engine->evaluate(\"false\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"''\")"); - equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"False\")"); - equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)"); - equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)"); - equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)"); - equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")"); - equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")"); - equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"null\")"); - equals.insert("engine->evaluate(\"undefined\") <=> engine->nullValue()"); - equals.insert("engine->evaluate(\"undefined\") <=> engine->undefinedValue()"); - equals.insert("engine->evaluate(\"undefined\") <=> engine->newQObject(0)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::UndefinedValue)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::UndefinedValue)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"{}\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"undefined\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"null\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->nullValue()"); - equals.insert("engine->evaluate(\"null\") <=> engine->undefinedValue()"); - equals.insert("engine->evaluate(\"null\") <=> engine->newQObject(0)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(true)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, true)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, true)"); - equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(false)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0.0)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"\"))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString())"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"0\"))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, false)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0.0)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"\"))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString())"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"0\"))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, false)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0.0)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"\"))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString())"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"0\"))"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"[]\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"Array.prototype\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"new Array()\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"false\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"''\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->newArray()"); - equals.insert("engine->evaluate(\"false\") <=> engine->newVariant(QVariant(false))"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(false)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0.0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"\"))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString())"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"0\"))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, false)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"\"))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString())"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"0\"))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, false)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"\"))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString())"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"0\"))"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"[]\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"Array.prototype\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"new Array()\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"false\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"''\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->newArray()"); - equals.insert("engine->evaluate(\"0\") <=> engine->newVariant(QVariant(false))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(false)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0.0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"\"))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString())"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"0\"))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, false)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"\"))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString())"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"0\"))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, false)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"\"))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString())"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"0\"))"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"[]\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"Array.prototype\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Array()\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"false\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"''\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->newArray()"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(false))"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"123.0\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")"); - equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(\"-Infinity\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")"); - 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(\"''\") <=> engine->evaluate(\"Array.prototype\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"new Array()\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"false\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"''\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->newArray()"); - equals.insert("engine->evaluate(\"''\") <=> engine->newVariant(QVariant(false))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(false)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0.0)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, false)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0.0)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, false)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0.0)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"false\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(false))"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::UndefinedValue)"); - equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)"); - equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)"); - equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"{}\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"undefined\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"null\")"); - equals.insert("engine->nullValue() <=> engine->nullValue()"); - equals.insert("engine->nullValue() <=> engine->undefinedValue()"); - equals.insert("engine->nullValue() <=> engine->newQObject(0)"); - equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)"); - equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::NullValue)"); - equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)"); - equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::NullValue)"); - equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)"); - equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::NullValue)"); - equals.insert("engine->undefinedValue() <=> engine->evaluate(\"{}\")"); - equals.insert("engine->undefinedValue() <=> engine->evaluate(\"undefined\")"); - equals.insert("engine->undefinedValue() <=> engine->evaluate(\"null\")"); - equals.insert("engine->undefinedValue() <=> engine->nullValue()"); - equals.insert("engine->undefinedValue() <=> engine->undefinedValue()"); - equals.insert("engine->undefinedValue() <=> engine->newQObject(0)"); - equals.insert("engine->newObject() <=> engine->newObject()"); - equals.insert("engine->newArray() <=> QScriptValue(false)"); - equals.insert("engine->newArray() <=> QScriptValue(0)"); - equals.insert("engine->newArray() <=> QScriptValue(0.0)"); - equals.insert("engine->newArray() <=> QScriptValue(QString(\"\"))"); - equals.insert("engine->newArray() <=> QScriptValue(QString())"); - equals.insert("engine->newArray() <=> QScriptValue(0, false)"); - equals.insert("engine->newArray() <=> QScriptValue(0, 0)"); - equals.insert("engine->newArray() <=> QScriptValue(0, 0.0)"); - equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"\"))"); - equals.insert("engine->newArray() <=> QScriptValue(0, QString())"); - equals.insert("engine->newArray() <=> QScriptValue(engine, false)"); - equals.insert("engine->newArray() <=> QScriptValue(engine, 0)"); - equals.insert("engine->newArray() <=> QScriptValue(engine, 0.0)"); - equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"\"))"); - equals.insert("engine->newArray() <=> QScriptValue(engine, QString())"); - equals.insert("engine->newArray() <=> engine->evaluate(\"false\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"0\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"''\")"); - equals.insert("engine->newArray() <=> engine->newArray()"); - equals.insert("engine->newArray(10) <=> engine->newArray(10)"); - equals.insert("engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(123.0)"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 123.0)"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(false)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0.0)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"\"))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString())"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"0\"))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, false)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0.0)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"\"))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString())"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"0\"))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, false)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0.0)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"\"))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString())"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"0\"))"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"false\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"''\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(QScriptValue::UndefinedValue)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, QScriptValue::UndefinedValue)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::UndefinedValue)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"{}\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"undefined\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"null\")"); - equals.insert("engine->newQObject(0) <=> engine->nullValue()"); - equals.insert("engine->newQObject(0) <=> engine->undefinedValue()"); - equals.insert("engine->newQObject(0) <=> engine->newQObject(0)"); - equals.insert("engine->newQObject(engine) <=> engine->newQObject(engine)"); - } - QHash::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("other"); - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::strictlyEquals_makeData(const char *expr) -{ - static QSet 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::UndefinedValue) <=> engine->evaluate(\"undefined\")"); - equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()"); - 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(QScriptValue::NullValue) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)"); - equals.insert("QScriptValue(true) <=> QScriptValue(true)"); - equals.insert("QScriptValue(true) <=> QScriptValue(0, true)"); - equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)"); - equals.insert("QScriptValue(true) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(false) <=> QScriptValue(false)"); - equals.insert("QScriptValue(false) <=> QScriptValue(0, false)"); - equals.insert("QScriptValue(false) <=> QScriptValue(engine, false)"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"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(int(122)) <=> engine->evaluate(\"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(uint(124)) <=> engine->evaluate(\"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) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"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(0.0) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"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(123.0) <=> engine->evaluate(\"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) <=> engine->evaluate(\"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(-6.37e-8) <=> engine->evaluate(\"-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(0x43211234) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)"); - equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)"); - equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)"); - equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)"); - equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)"); - equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)"); - equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"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()) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-qInf())"); - equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())"); - equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"-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(\"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(\"ciao\") <=> engine->evaluate(\"'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::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'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(\"\")) <=> engine->evaluate(\"''\")"); - 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()) <=> engine->evaluate(\"''\")"); - 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(\"0\")) <=> engine->evaluate(\"'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(\"123\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'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::UndefinedValue) <=> engine->evaluate(\"undefined\")"); - equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()"); - 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, QScriptValue::NullValue) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)"); - 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, true) <=> engine->evaluate(\"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, false) <=> engine->evaluate(\"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, int(122)) <=> engine->evaluate(\"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, uint(124)) <=> engine->evaluate(\"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) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"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, 0.0) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"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, 123.0) <=> engine->evaluate(\"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) <=> engine->evaluate(\"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, -6.37e-8) <=> engine->evaluate(\"-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, 0x43211234) <=> engine->evaluate(\"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, 0x10000) <=> engine->evaluate(\"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, 0x10001) <=> engine->evaluate(\"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()) <=> engine->evaluate(\"Infinity\")"); - 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()) <=> engine->evaluate(\"-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(\"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, \"ciao\") <=> engine->evaluate(\"'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::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'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(\"\")) <=> engine->evaluate(\"''\")"); - 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()) <=> engine->evaluate(\"''\")"); - 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(\"0\")) <=> engine->evaluate(\"'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(\"123\")) <=> engine->evaluate(\"'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::UndefinedValue) <=> engine->evaluate(\"undefined\")"); - equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()"); - 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, QScriptValue::NullValue) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)"); - 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, true) <=> engine->evaluate(\"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, false) <=> engine->evaluate(\"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, int(122)) <=> engine->evaluate(\"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, uint(124)) <=> engine->evaluate(\"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) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"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, 0.0) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"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, 123.0) <=> engine->evaluate(\"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) <=> engine->evaluate(\"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, -6.37e-8) <=> engine->evaluate(\"-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, 0x43211234) <=> engine->evaluate(\"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, 0x10000) <=> engine->evaluate(\"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, 0x10001) <=> engine->evaluate(\"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()) <=> engine->evaluate(\"Infinity\")"); - 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()) <=> engine->evaluate(\"-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(\"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, \"ciao\") <=> engine->evaluate(\"'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::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'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(\"\")) <=> engine->evaluate(\"''\")"); - 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()) <=> engine->evaluate(\"''\")"); - 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(\"0\")) <=> engine->evaluate(\"'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(\"123\")) <=> engine->evaluate(\"'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(\"{}\") <=> engine->evaluate(\"undefined\")"); - equals.insert("engine->evaluate(\"{}\") <=> engine->undefinedValue()"); - 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()\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"False\")"); - equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)"); - equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)"); - equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)"); - equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")"); - equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")"); - equals.insert("engine->evaluate(\"undefined\") <=> engine->undefinedValue()"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"null\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->nullValue()"); - equals.insert("engine->evaluate(\"null\") <=> engine->newQObject(0)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(true)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, true)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, true)"); - equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(false)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, false)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, false)"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"false\")"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0.0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0.0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")"); - equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString(\"\"))"); - equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString())"); - equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"\"))"); - equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString())"); - equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"\"))"); - equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString())"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"''\")"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)"); - equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"null\")"); - equals.insert("engine->nullValue() <=> engine->nullValue()"); - equals.insert("engine->nullValue() <=> engine->newQObject(0)"); - equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)"); - equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)"); - equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)"); - equals.insert("engine->undefinedValue() <=> engine->evaluate(\"{}\")"); - equals.insert("engine->undefinedValue() <=> engine->evaluate(\"undefined\")"); - equals.insert("engine->undefinedValue() <=> engine->undefinedValue()"); - equals.insert("engine->newObject() <=> engine->newObject()"); - equals.insert("engine->newArray() <=> engine->newArray()"); - equals.insert("engine->newArray(10) <=> engine->newArray(10)"); - equals.insert("engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())"); - equals.insert("engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"null\")"); - equals.insert("engine->newQObject(0) <=> engine->nullValue()"); - equals.insert("engine->newQObject(0) <=> engine->newQObject(0)"); - equals.insert("engine->newQObject(engine) <=> engine->newQObject(engine)"); - } - QHash::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("other"); - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::lessThan_makeData(const char *expr) -{ - static QSet 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(QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))"); - 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(true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(true) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(true) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(true) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(true) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(true) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(true) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(true) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(true) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(true) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(true) <=> engine->newVariant(QVariant(123))"); - 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(false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(false) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(false) <=> engine->newVariant(QVariant(123))"); - 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(int(122)) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(int(122)) <=> engine->newVariant(QVariant(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(uint(124)) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0) <=> engine->newVariant(QVariant(123))"); - 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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0.0) <=> engine->newVariant(QVariant(123))"); - 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(123.0) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(6.37e-8) <=> engine->newVariant(QVariant(123))"); - 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(-6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->nullValue()"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->newArray()"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(false))"); - equals.insert("QScriptValue(-6.37e-8) <=> engine->newQObject(0)"); - 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(0x43211234) <=> engine->evaluate(\"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(0x10000) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"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(0x10001) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"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(-qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"-6.37e-8\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(-qInf()) <=> engine->nullValue()"); - equals.insert("QScriptValue(-qInf()) <=> engine->newArray()"); - equals.insert("QScriptValue(-qInf()) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(-qInf()) <=> engine->newVariant(QVariant(false))"); - equals.insert("QScriptValue(-qInf()) <=> engine->newQObject(0)"); - 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(\"NaN\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(\"NaN\") <=> engine->newObject()"); - equals.insert("QScriptValue(\"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(\"NaN\") <=> engine->newQObject(engine)"); - 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\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(\"Infinity\") <=> engine->newObject()"); - equals.insert("QScriptValue(\"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(\"Infinity\") <=> engine->newQObject(engine)"); - 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(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->nullValue()"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->newObject()"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(false))"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->newQObject(0)"); - equals.insert("QScriptValue(\"-Infinity\") <=> engine->newQObject(engine)"); - 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(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->newObject()"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->newArray(10)"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(QString(\"\")) <=> engine->newQObject(engine)"); - 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()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(QString()) <=> engine->newObject()"); - equals.insert("QScriptValue(QString()) <=> engine->newArray(10)"); - equals.insert("QScriptValue(QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(QString()) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(QString()) <=> engine->newQObject(engine)"); - 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(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->newObject()"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(QString(\"0\")) <=> engine->newQObject(engine)"); - 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(\"123\")) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->newObject()"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(QString(\"123\")) <=> engine->newQObject(engine)"); - 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(QString(\"12.4\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newObject()"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newQObject(engine)"); - 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, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))"); - 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, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, true) <=> engine->newVariant(QVariant(123))"); - 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, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, false) <=> engine->newVariant(QVariant(123))"); - 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, int(122)) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, int(122)) <=> engine->newVariant(QVariant(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, uint(124)) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, 0) <=> engine->newVariant(QVariant(123))"); - 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, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(123))"); - 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, 123.0) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, 6.37e-8) <=> engine->newVariant(QVariant(123))"); - 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, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->nullValue()"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newArray()"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(false))"); - equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newQObject(0)"); - 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, 0x43211234) <=> engine->evaluate(\"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, 0x10000) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"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, 0x10001) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, 0x10001) <=> engine->evaluate(\"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, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"-6.37e-8\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->nullValue()"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->newArray()"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(false))"); - equals.insert("QScriptValue(0, -qInf()) <=> engine->newQObject(0)"); - 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, \"NaN\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(0, \"NaN\") <=> engine->newObject()"); - equals.insert("QScriptValue(0, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(0, \"NaN\") <=> engine->newQObject(engine)"); - 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\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(0, \"Infinity\") <=> engine->newObject()"); - equals.insert("QScriptValue(0, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(0, \"Infinity\") <=> engine->newQObject(engine)"); - 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, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->nullValue()"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newObject()"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(false))"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newQObject(0)"); - equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newQObject(engine)"); - 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(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newObject()"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newArray(10)"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newQObject(engine)"); - 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()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, QString()) <=> engine->newObject()"); - equals.insert("QScriptValue(0, QString()) <=> engine->newArray(10)"); - equals.insert("QScriptValue(0, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(0, QString()) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(0, QString()) <=> engine->newQObject(engine)"); - 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(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newObject()"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newQObject(engine)"); - 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(\"123\")) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newObject()"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newQObject(engine)"); - 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(0, QString(\"12.3\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newObject()"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newQObject(engine)"); - 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, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))"); - 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, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, true) <=> engine->newVariant(QVariant(123))"); - 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, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, false) <=> engine->newVariant(QVariant(123))"); - 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, int(122)) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, int(122)) <=> engine->newVariant(QVariant(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, uint(124)) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, 0) <=> engine->newVariant(QVariant(123))"); - 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, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(123))"); - 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, 123.0) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"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) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->newVariant(QVariant(123))"); - 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, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->nullValue()"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newArray()"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(false))"); - equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newQObject(0)"); - 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, 0x43211234) <=> engine->evaluate(\"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, 0x10000) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"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, 0x10001) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, 0x10001) <=> engine->evaluate(\"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, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-6.37e-8\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"''\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->nullValue()"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->newArray()"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(false))"); - equals.insert("QScriptValue(engine, -qInf()) <=> engine->newQObject(0)"); - 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, \"NaN\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(engine, \"NaN\") <=> engine->newObject()"); - equals.insert("QScriptValue(engine, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(engine, \"NaN\") <=> engine->newQObject(engine)"); - 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\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->newObject()"); - equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->newQObject(engine)"); - 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, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"null\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"false\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0.0\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->nullValue()"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newObject()"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(false))"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(0)"); - equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(engine)"); - 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(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newObject()"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newArray(10)"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newQObject(engine)"); - 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()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'0'\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, QString()) <=> engine->newObject()"); - equals.insert("QScriptValue(engine, QString()) <=> engine->newArray(10)"); - equals.insert("QScriptValue(engine, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(engine, QString()) <=> engine->newQObject(engine)"); - 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(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"true\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newObject()"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newQObject(engine)"); - 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(\"123\")) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newObject()"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newQObject(engine)"); - 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("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Undefined\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Null\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"True\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"False\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"122\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"124\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"123.0\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10000\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10001\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Infinity\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'123'\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newObject()"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newVariant(QVariant(123))"); - equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newQObject(engine)"); - 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(\"[]\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"False\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"[]\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"[]\") <=> engine->newArray(10)"); - equals.insert("engine->evaluate(\"[]\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"[]\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"[]\") <=> engine->newQObject(engine)"); - 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(\"Object.prototype\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - 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(\"Array.prototype\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"False\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newArray(10)"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newQObject(engine)"); - 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(\"Error.prototype\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"False\")"); - equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->newQObject(engine)"); - 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(\"/foo/\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"False\")"); - equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"/foo/\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"/foo/\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"/foo/\") <=> engine->newQObject(engine)"); - 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 Object()\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"new Object()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - 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 Array()\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"False\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->newArray(10)"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"new Array()\") <=> engine->newQObject(engine)"); - 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()\")"); - equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"False\")"); - equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"new Error()\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"new Error()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"new Error()\") <=> engine->newQObject(engine)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(\"ciao\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object.prototype\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Array\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Number\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"new Object()\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(\"ciao\")"); - equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Object.prototype\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Array\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Number\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Function\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"new Object()\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"Null\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"True\") <=> QScriptValue(\"ciao\")"); - equals.insert("engine->evaluate(\"True\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"True\") <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->evaluate(\"True\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"True\") <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->evaluate(\"True\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Object.prototype\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Array\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Number\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Function\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"new Object()\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"True\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"False\") <=> QScriptValue(\"ciao\")"); - equals.insert("engine->evaluate(\"False\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"False\") <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->evaluate(\"False\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"False\") <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->evaluate(\"False\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Object.prototype\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Array\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Number\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Function\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"new Object()\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"False\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(true)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(6.37e-8)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, true)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, true)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"null\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"true\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(true)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(6.37e-8)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, true)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, true)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"false\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"122\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(true)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(6.37e-8)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, true)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, true)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"0\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(true)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(6.37e-8)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, true)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, true)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(true)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, true)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, true)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(true)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(false)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0.0)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(6.37e-8)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"\"))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString())"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"0\"))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, true)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, false)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0.0)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"\"))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString())"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"0\"))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, true)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, false)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0.0)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"\"))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString())"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"0\"))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"[]\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Array.prototype\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Array()\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"null\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"false\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"''\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->nullValue()"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newArray()"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(false))"); - equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newQObject(0)"); - equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(true)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(false)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0.0)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(6.37e-8)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(-6.37e-8)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"\"))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString())"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"0\"))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, true)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, false)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0.0)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"\"))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString())"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, true)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, false)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0.0)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"\"))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString())"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"[]\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Array.prototype\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Array()\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"null\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"false\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0.0\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"''\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->nullValue()"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newArray()"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(false))"); - equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newQObject(0)"); - equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Object\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Array\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Number\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - 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(\"''\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"False\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"''\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"''\") <=> engine->newArray(10)"); - equals.insert("engine->evaluate(\"''\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"''\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"''\") <=> engine->newQObject(engine)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(true)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(6.37e-8)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(\"NaN\")"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(\"ciao\")"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, true)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, \"NaN\")"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, true)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"NaN\")"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object.prototype\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Error.prototype\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Array\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Number\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Object()\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Error()\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"False\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"true\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"'0'\") <=> engine->newQObject(engine)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(\"NaN\")"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(\"ciao\")"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, \"NaN\")"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"NaN\")"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object.prototype\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Error.prototype\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Array\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Number\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Object()\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Error()\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"False\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"'123'\") <=> engine->newQObject(engine)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(int(122))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(uint(124))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(123.0)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0x43211234)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10000)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10001)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(qInf())"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(\"NaN\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(\"ciao\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, int(122))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, uint(124))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 123.0)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, qInf())"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"NaN\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, int(122))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, qInf())"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"NaN\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object.prototype\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Error.prototype\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Array\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Number\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Object()\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Error()\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Null\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"True\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"False\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"122\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"124\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newObject()"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newQObject(engine)"); - equals.insert("engine->nullValue() <=> QScriptValue(true)"); - equals.insert("engine->nullValue() <=> QScriptValue(int(122))"); - equals.insert("engine->nullValue() <=> QScriptValue(uint(124))"); - equals.insert("engine->nullValue() <=> QScriptValue(123.0)"); - equals.insert("engine->nullValue() <=> QScriptValue(6.37e-8)"); - equals.insert("engine->nullValue() <=> QScriptValue(0x43211234)"); - equals.insert("engine->nullValue() <=> QScriptValue(0x10000)"); - equals.insert("engine->nullValue() <=> QScriptValue(0x10001)"); - equals.insert("engine->nullValue() <=> QScriptValue(qInf())"); - equals.insert("engine->nullValue() <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->nullValue() <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->nullValue() <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->nullValue() <=> QScriptValue(0, true)"); - equals.insert("engine->nullValue() <=> QScriptValue(0, int(122))"); - equals.insert("engine->nullValue() <=> QScriptValue(0, uint(124))"); - equals.insert("engine->nullValue() <=> QScriptValue(0, 123.0)"); - equals.insert("engine->nullValue() <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->nullValue() <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->nullValue() <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->nullValue() <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->nullValue() <=> QScriptValue(0, qInf())"); - equals.insert("engine->nullValue() <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->nullValue() <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->nullValue() <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, true)"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, int(122))"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, qInf())"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->nullValue() <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"true\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"122\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"124\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->nullValue() <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->nullValue() <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->newObject() <=> QScriptValue(\"ciao\")"); - equals.insert("engine->newObject() <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newObject() <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->newObject() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newObject() <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->newObject() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newObject() <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->newObject() <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newObject() <=> engine->evaluate(\"Array\")"); - equals.insert("engine->newObject() <=> engine->evaluate(\"Number\")"); - equals.insert("engine->newObject() <=> engine->evaluate(\"Function\")"); - equals.insert("engine->newObject() <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->newObject() <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->newObject() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - equals.insert("engine->newObject() <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->newObject() <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->newArray() <=> QScriptValue(true)"); - equals.insert("engine->newArray() <=> QScriptValue(int(122))"); - equals.insert("engine->newArray() <=> QScriptValue(uint(124))"); - equals.insert("engine->newArray() <=> QScriptValue(123.0)"); - equals.insert("engine->newArray() <=> QScriptValue(6.37e-8)"); - equals.insert("engine->newArray() <=> QScriptValue(0x43211234)"); - equals.insert("engine->newArray() <=> QScriptValue(0x10000)"); - equals.insert("engine->newArray() <=> QScriptValue(0x10001)"); - equals.insert("engine->newArray() <=> QScriptValue(qInf())"); - equals.insert("engine->newArray() <=> QScriptValue(\"NaN\")"); - equals.insert("engine->newArray() <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->newArray() <=> QScriptValue(\"-Infinity\")"); - equals.insert("engine->newArray() <=> QScriptValue(\"ciao\")"); - equals.insert("engine->newArray() <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newArray() <=> QScriptValue(QString(\"0\"))"); - equals.insert("engine->newArray() <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->newArray() <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->newArray() <=> QScriptValue(0, true)"); - equals.insert("engine->newArray() <=> QScriptValue(0, int(122))"); - equals.insert("engine->newArray() <=> QScriptValue(0, uint(124))"); - equals.insert("engine->newArray() <=> QScriptValue(0, 123.0)"); - equals.insert("engine->newArray() <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->newArray() <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->newArray() <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->newArray() <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->newArray() <=> QScriptValue(0, qInf())"); - equals.insert("engine->newArray() <=> QScriptValue(0, \"NaN\")"); - equals.insert("engine->newArray() <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->newArray() <=> QScriptValue(0, \"-Infinity\")"); - equals.insert("engine->newArray() <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->newArray() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"0\"))"); - equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->newArray() <=> QScriptValue(engine, true)"); - equals.insert("engine->newArray() <=> QScriptValue(engine, int(122))"); - equals.insert("engine->newArray() <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->newArray() <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->newArray() <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->newArray() <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->newArray() <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->newArray() <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->newArray() <=> QScriptValue(engine, qInf())"); - equals.insert("engine->newArray() <=> QScriptValue(engine, \"NaN\")"); - equals.insert("engine->newArray() <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->newArray() <=> QScriptValue(engine, \"-Infinity\")"); - equals.insert("engine->newArray() <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->newArray() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"0\"))"); - equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->newArray() <=> engine->evaluate(\"Object.prototype\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"Error.prototype\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"Array\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"Number\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"Function\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"/foo/\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"new Object()\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"new Error()\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"Null\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"True\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"False\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"true\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"122\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"124\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->newArray() <=> engine->newObject()"); - equals.insert("engine->newArray() <=> engine->newArray(10)"); - equals.insert("engine->newArray() <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->newArray() <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->newArray() <=> engine->newQObject(engine)"); - equals.insert("engine->newArray(10) <=> QScriptValue(\"NaN\")"); - equals.insert("engine->newArray(10) <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->newArray(10) <=> QScriptValue(\"-Infinity\")"); - equals.insert("engine->newArray(10) <=> QScriptValue(\"ciao\")"); - equals.insert("engine->newArray(10) <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newArray(10) <=> QScriptValue(QString(\"0\"))"); - equals.insert("engine->newArray(10) <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->newArray(10) <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->newArray(10) <=> QScriptValue(0, \"NaN\")"); - equals.insert("engine->newArray(10) <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->newArray(10) <=> QScriptValue(0, \"-Infinity\")"); - equals.insert("engine->newArray(10) <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->newArray(10) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newArray(10) <=> QScriptValue(0, QString(\"0\"))"); - equals.insert("engine->newArray(10) <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->newArray(10) <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"NaN\")"); - equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"-Infinity\")"); - equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString(\"0\"))"); - equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"Object.prototype\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"Error.prototype\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"Array\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"Number\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"Function\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"/foo/\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"new Object()\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"new Error()\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"Null\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"True\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"False\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"'0'\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->newArray(10) <=> engine->newObject()"); - equals.insert("engine->newArray(10) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - equals.insert("engine->newArray(10) <=> engine->newQObject(engine)"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(\"ciao\")"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Array\")"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Number\")"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function\")"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(uint(124))"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0x43211234)"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0x10000)"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0x10001)"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(qInf())"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, uint(124))"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, qInf())"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, qInf())"); - equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"124\")"); - equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(true)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(int(122))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(uint(124))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(123.0)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(6.37e-8)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0x43211234)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0x10000)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0x10001)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(qInf())"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, true)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, int(122))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, uint(124))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 123.0)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, qInf())"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, true)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, int(122))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, qInf())"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"true\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"122\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"124\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(true)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(int(122))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(uint(124))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(123.0)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(6.37e-8)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0x43211234)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0x10000)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0x10001)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(qInf())"); - equals.insert("engine->newQObject(0) <=> QScriptValue(\"Infinity\")"); - equals.insert("engine->newQObject(0) <=> QScriptValue(QString(\"123\"))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(QString(\"12.4\"))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, true)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, int(122))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, uint(124))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, 123.0)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, 6.37e-8)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, 0x43211234)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, 0x10000)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, 0x10001)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, qInf())"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, \"Infinity\")"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, QString(\"123\"))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(0, QString(\"12.3\"))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, true)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, int(122))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, uint(124))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 123.0)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 6.37e-8)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 0x43211234)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 0x10000)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 0x10001)"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, qInf())"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, \"Infinity\")"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QString(\"123\"))"); - equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QString(\"1.23\"))"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"true\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"122\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"124\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"123.0\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"6.37e-8\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"0x43211234\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"0x10000\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"0x10001\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"Infinity\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"'123'\")"); - equals.insert("engine->newQObject(0) <=> engine->evaluate(\"'12.4'\")"); - equals.insert("engine->newQObject(0) <=> engine->newVariant(QVariant(123))"); - equals.insert("engine->newQObject(engine) <=> QScriptValue(\"ciao\")"); - equals.insert("engine->newQObject(engine) <=> QScriptValue(QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newQObject(engine) <=> QScriptValue(0, \"ciao\")"); - equals.insert("engine->newQObject(engine) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newQObject(engine) <=> QScriptValue(engine, \"ciao\")"); - equals.insert("engine->newQObject(engine) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Object.prototype\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Function.prototype\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Array\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Number\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Function\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 1; })\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 'ciao'; })\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"new Object()\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Undefined\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Null\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"True\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"False\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"'ciao'\")"); - equals.insert("engine->newQObject(engine) <=> engine->newObject()"); - equals.insert("engine->newQObject(engine) <=> engine->newQMetaObject(&QObject::staticMetaObject)"); - } - QHash::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("other"); - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::instanceOf_makeData(const char *expr) -{ - static QSet 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\")"); - equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")"); - equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")"); - equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")"); - equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newObject() <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newArray() <=> engine->evaluate(\"Array\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newArray(10) <=> engine->evaluate(\"Array\")"); - equals.insert("engine->newDate(QDateTime()) <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newVariant(QVariant()) <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Object\")"); - equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Object\")"); - } - QHash::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("expected"); - initScriptValues(); -} - -void tst_QScriptValue::qscriptvalue_castQString_makeData(const char* expr) -{ - static QHash 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"); - value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", "22"); - value.insert("engine->evaluate(\"Undefined\")", "ReferenceError: Can't find variable: Undefined"); - value.insert("engine->evaluate(\"Null\")", "ReferenceError: Can't find variable: Null"); - value.insert("engine->evaluate(\"True\")", "ReferenceError: Can't find variable: True"); - value.insert("engine->evaluate(\"False\")", "ReferenceError: Can't find variable: False"); - value.insert("engine->evaluate(\"undefined\")", ""); - value.insert("engine->evaluate(\"null\")", ""); - value.insert("engine->evaluate(\"true\")", "true"); - value.insert("engine->evaluate(\"false\")", "false"); - value.insert("engine->evaluate(\"122\")", "122"); - value.insert("engine->evaluate(\"124\")", "124"); - value.insert("engine->evaluate(\"0\")", "0"); - value.insert("engine->evaluate(\"0.0\")", "0"); - value.insert("engine->evaluate(\"123.0\")", "123"); - value.insert("engine->evaluate(\"6.37e-8\")", "6.37e-8"); - value.insert("engine->evaluate(\"-6.37e-8\")", "-6.37e-8"); - value.insert("engine->evaluate(\"0x43211234\")", "1126240820"); - value.insert("engine->evaluate(\"0x10000\")", "65536"); - value.insert("engine->evaluate(\"0x10001\")", "65537"); - value.insert("engine->evaluate(\"NaN\")", "NaN"); - value.insert("engine->evaluate(\"Infinity\")", "Infinity"); - value.insert("engine->evaluate(\"-Infinity\")", "-Infinity"); - value.insert("engine->evaluate(\"'ciao'\")", "ciao"); - value.insert("engine->evaluate(\"''\")", ""); - value.insert("engine->evaluate(\"'0'\")", "0"); - value.insert("engine->evaluate(\"'123'\")", "123"); - value.insert("engine->evaluate(\"'12.4'\")", "12.4"); - value.insert("engine->nullValue()", ""); - value.insert("engine->undefinedValue()", ""); - value.insert("engine->newObject()", "[object Object]"); - value.insert("engine->newArray()", ""); - value.insert("engine->newArray(10)", ",,,,,,,,,"); - value.insert("engine->newDate(QDateTime())", "Invalid Date"); - value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", "[object QMetaObject]"); - value.insert("engine->newVariant(QVariant())", "undefined"); - value.insert("engine->newVariant(QVariant(123))", "123"); - value.insert("engine->newVariant(QVariant(false))", "false"); - value.insert("engine->newQObject(0)", ""); - value.insert("engine->newQObject(engine)", "QScriptEngine(name = \"\")"); - } - newRow(expr) << value.value(expr); -} - -void tst_QScriptValue::qscriptvalue_castQString_test(const char*, const QScriptValue& value) -{ - QFETCH(QString, expected); - QCOMPARE(qscriptvalue_cast(value), expected); - QCOMPARE(qscriptvalue_cast(value), expected); -} - -DEFINE_TEST_FUNCTION(qscriptvalue_castQString) - - -void tst_QScriptValue::qscriptvalue_castqsreal_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::qscriptvalue_castqsreal_makeData(const char* expr) -{ - static QHash 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()); - value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22); - value.insert("engine->evaluate(\"Undefined\")", qQNaN()); - value.insert("engine->evaluate(\"Null\")", qQNaN()); - value.insert("engine->evaluate(\"True\")", qQNaN()); - value.insert("engine->evaluate(\"False\")", qQNaN()); - value.insert("engine->evaluate(\"undefined\")", qQNaN()); - value.insert("engine->evaluate(\"null\")", 0); - value.insert("engine->evaluate(\"true\")", 1); - value.insert("engine->evaluate(\"false\")", 0); - value.insert("engine->evaluate(\"122\")", 122); - value.insert("engine->evaluate(\"124\")", 124); - value.insert("engine->evaluate(\"0\")", 0); - value.insert("engine->evaluate(\"0.0\")", 0); - value.insert("engine->evaluate(\"123.0\")", 123); - value.insert("engine->evaluate(\"6.37e-8\")", 6.369999999999999e-08); - value.insert("engine->evaluate(\"-6.37e-8\")", -6.369999999999999e-08); - value.insert("engine->evaluate(\"0x43211234\")", 1126240820); - value.insert("engine->evaluate(\"0x10000\")", 65536); - value.insert("engine->evaluate(\"0x10001\")", 65537); - value.insert("engine->evaluate(\"NaN\")", qQNaN()); - value.insert("engine->evaluate(\"Infinity\")", qInf()); - value.insert("engine->evaluate(\"-Infinity\")", qInf()); - value.insert("engine->evaluate(\"'ciao'\")", qQNaN()); - value.insert("engine->evaluate(\"''\")", 0); - value.insert("engine->evaluate(\"'0'\")", 0); - value.insert("engine->evaluate(\"'123'\")", 123); - value.insert("engine->evaluate(\"'12.4'\")", 12.4); - value.insert("engine->nullValue()", 0); - value.insert("engine->undefinedValue()", qQNaN()); - value.insert("engine->newObject()", qQNaN()); - value.insert("engine->newArray()", 0); - value.insert("engine->newArray(10)", qQNaN()); - value.insert("engine->newDate(QDateTime())", qQNaN()); - value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", qQNaN()); - value.insert("engine->newVariant(QVariant())", qQNaN()); - value.insert("engine->newVariant(QVariant(123))", 123); - value.insert("engine->newVariant(QVariant(false))", 0); - value.insert("engine->newQObject(0)", 0); - value.insert("engine->newQObject(engine)", 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(value))); - QVERIFY(qIsNaN(qscriptvalue_cast(value))); - return; - } - if (qIsInf(expected)) { - QVERIFY(qIsInf(qscriptvalue_cast(value))); - QVERIFY(qIsInf(qscriptvalue_cast(value))); - return; - } - QCOMPARE(qscriptvalue_cast(value), expected); - QCOMPARE(qscriptvalue_cast(value), expected); -} - -DEFINE_TEST_FUNCTION(qscriptvalue_castqsreal) - - -void tst_QScriptValue::qscriptvalue_castbool_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::qscriptvalue_castbool_makeData(const char* expr) -{ - static QHash 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); - value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true); - value.insert("engine->evaluate(\"Undefined\")", true); - value.insert("engine->evaluate(\"Null\")", true); - value.insert("engine->evaluate(\"True\")", true); - value.insert("engine->evaluate(\"False\")", true); - value.insert("engine->evaluate(\"undefined\")", false); - value.insert("engine->evaluate(\"null\")", false); - value.insert("engine->evaluate(\"true\")", true); - value.insert("engine->evaluate(\"false\")", false); - value.insert("engine->evaluate(\"122\")", true); - value.insert("engine->evaluate(\"124\")", true); - value.insert("engine->evaluate(\"0\")", false); - value.insert("engine->evaluate(\"0.0\")", false); - value.insert("engine->evaluate(\"123.0\")", true); - value.insert("engine->evaluate(\"6.37e-8\")", true); - value.insert("engine->evaluate(\"-6.37e-8\")", true); - value.insert("engine->evaluate(\"0x43211234\")", true); - value.insert("engine->evaluate(\"0x10000\")", true); - value.insert("engine->evaluate(\"0x10001\")", true); - value.insert("engine->evaluate(\"NaN\")", false); - value.insert("engine->evaluate(\"Infinity\")", true); - value.insert("engine->evaluate(\"-Infinity\")", true); - value.insert("engine->evaluate(\"'ciao'\")", true); - value.insert("engine->evaluate(\"''\")", false); - value.insert("engine->evaluate(\"'0'\")", true); - value.insert("engine->evaluate(\"'123'\")", true); - value.insert("engine->evaluate(\"'12.4'\")", true); - value.insert("engine->nullValue()", false); - value.insert("engine->undefinedValue()", false); - value.insert("engine->newObject()", true); - value.insert("engine->newArray()", true); - value.insert("engine->newArray(10)", true); - value.insert("engine->newDate(QDateTime())", true); - value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", true); - value.insert("engine->newVariant(QVariant())", true); - value.insert("engine->newVariant(QVariant(123))", true); - value.insert("engine->newVariant(QVariant(false))", true); - value.insert("engine->newQObject(0)", false); - value.insert("engine->newQObject(engine)", true); - } - newRow(expr) << value.value(expr); -} - -void tst_QScriptValue::qscriptvalue_castbool_test(const char*, const QScriptValue& value) -{ - QFETCH(bool, expected); - QCOMPARE(qscriptvalue_cast(value), expected); - QCOMPARE(qscriptvalue_cast(value), expected); -} - -DEFINE_TEST_FUNCTION(qscriptvalue_castbool) - - -void tst_QScriptValue::qscriptvalue_castqint32_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::qscriptvalue_castqint32_makeData(const char* expr) -{ - static QHash 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); - value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22); - value.insert("engine->evaluate(\"Undefined\")", 0); - value.insert("engine->evaluate(\"Null\")", 0); - value.insert("engine->evaluate(\"True\")", 0); - value.insert("engine->evaluate(\"False\")", 0); - value.insert("engine->evaluate(\"undefined\")", 0); - value.insert("engine->evaluate(\"null\")", 0); - value.insert("engine->evaluate(\"true\")", 1); - value.insert("engine->evaluate(\"false\")", 0); - value.insert("engine->evaluate(\"122\")", 122); - value.insert("engine->evaluate(\"124\")", 124); - value.insert("engine->evaluate(\"0\")", 0); - value.insert("engine->evaluate(\"0.0\")", 0); - value.insert("engine->evaluate(\"123.0\")", 123); - value.insert("engine->evaluate(\"6.37e-8\")", 0); - value.insert("engine->evaluate(\"-6.37e-8\")", 0); - value.insert("engine->evaluate(\"0x43211234\")", 1126240820); - value.insert("engine->evaluate(\"0x10000\")", 65536); - value.insert("engine->evaluate(\"0x10001\")", 65537); - value.insert("engine->evaluate(\"NaN\")", 0); - value.insert("engine->evaluate(\"Infinity\")", 0); - value.insert("engine->evaluate(\"-Infinity\")", 0); - value.insert("engine->evaluate(\"'ciao'\")", 0); - value.insert("engine->evaluate(\"''\")", 0); - value.insert("engine->evaluate(\"'0'\")", 0); - value.insert("engine->evaluate(\"'123'\")", 123); - value.insert("engine->evaluate(\"'12.4'\")", 12); - value.insert("engine->nullValue()", 0); - value.insert("engine->undefinedValue()", 0); - value.insert("engine->newObject()", 0); - value.insert("engine->newArray()", 0); - value.insert("engine->newArray(10)", 0); - value.insert("engine->newDate(QDateTime())", 0); - value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0); - value.insert("engine->newVariant(QVariant())", 0); - value.insert("engine->newVariant(QVariant(123))", 123); - value.insert("engine->newVariant(QVariant(false))", 0); - value.insert("engine->newQObject(0)", 0); - value.insert("engine->newQObject(engine)", 0); - } - newRow(expr) << value.value(expr); -} - -void tst_QScriptValue::qscriptvalue_castqint32_test(const char*, const QScriptValue& value) -{ - QFETCH(qint32, expected); - QCOMPARE(qscriptvalue_cast(value), expected); - QCOMPARE(qscriptvalue_cast(value), expected); -} - -DEFINE_TEST_FUNCTION(qscriptvalue_castqint32) - - -void tst_QScriptValue::qscriptvalue_castquint32_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::qscriptvalue_castquint32_makeData(const char* expr) -{ - static QHash 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); - value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22); - value.insert("engine->evaluate(\"Undefined\")", 0); - value.insert("engine->evaluate(\"Null\")", 0); - value.insert("engine->evaluate(\"True\")", 0); - value.insert("engine->evaluate(\"False\")", 0); - value.insert("engine->evaluate(\"undefined\")", 0); - value.insert("engine->evaluate(\"null\")", 0); - value.insert("engine->evaluate(\"true\")", 1); - value.insert("engine->evaluate(\"false\")", 0); - value.insert("engine->evaluate(\"122\")", 122); - value.insert("engine->evaluate(\"124\")", 124); - value.insert("engine->evaluate(\"0\")", 0); - value.insert("engine->evaluate(\"0.0\")", 0); - value.insert("engine->evaluate(\"123.0\")", 123); - value.insert("engine->evaluate(\"6.37e-8\")", 0); - value.insert("engine->evaluate(\"-6.37e-8\")", 0); - value.insert("engine->evaluate(\"0x43211234\")", 1126240820); - value.insert("engine->evaluate(\"0x10000\")", 65536); - value.insert("engine->evaluate(\"0x10001\")", 65537); - value.insert("engine->evaluate(\"NaN\")", 0); - value.insert("engine->evaluate(\"Infinity\")", 0); - value.insert("engine->evaluate(\"-Infinity\")", 0); - value.insert("engine->evaluate(\"'ciao'\")", 0); - value.insert("engine->evaluate(\"''\")", 0); - value.insert("engine->evaluate(\"'0'\")", 0); - value.insert("engine->evaluate(\"'123'\")", 123); - value.insert("engine->evaluate(\"'12.4'\")", 12); - value.insert("engine->nullValue()", 0); - value.insert("engine->undefinedValue()", 0); - value.insert("engine->newObject()", 0); - value.insert("engine->newArray()", 0); - value.insert("engine->newArray(10)", 0); - value.insert("engine->newDate(QDateTime())", 0); - value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0); - value.insert("engine->newVariant(QVariant())", 0); - value.insert("engine->newVariant(QVariant(123))", 123); - value.insert("engine->newVariant(QVariant(false))", 0); - value.insert("engine->newQObject(0)", 0); - value.insert("engine->newQObject(engine)", 0); - } - newRow(expr) << value.value(expr); -} - -void tst_QScriptValue::qscriptvalue_castquint32_test(const char*, const QScriptValue& value) -{ - QFETCH(quint32, expected); - QCOMPARE(qscriptvalue_cast(value), expected); - QCOMPARE(qscriptvalue_cast(value), expected); -} - -DEFINE_TEST_FUNCTION(qscriptvalue_castquint32) - - -void tst_QScriptValue::qscriptvalue_castquint16_initData() -{ - QTest::addColumn("expected"); - initScriptValues(); -} - -void tst_QScriptValue::qscriptvalue_castquint16_makeData(const char* expr) -{ - static QHash 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); - value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22); - value.insert("engine->evaluate(\"Undefined\")", 0); - value.insert("engine->evaluate(\"Null\")", 0); - value.insert("engine->evaluate(\"True\")", 0); - value.insert("engine->evaluate(\"False\")", 0); - value.insert("engine->evaluate(\"undefined\")", 0); - value.insert("engine->evaluate(\"null\")", 0); - value.insert("engine->evaluate(\"true\")", 1); - value.insert("engine->evaluate(\"false\")", 0); - value.insert("engine->evaluate(\"122\")", 122); - value.insert("engine->evaluate(\"124\")", 124); - value.insert("engine->evaluate(\"0\")", 0); - value.insert("engine->evaluate(\"0.0\")", 0); - value.insert("engine->evaluate(\"123.0\")", 123); - value.insert("engine->evaluate(\"6.37e-8\")", 0); - value.insert("engine->evaluate(\"-6.37e-8\")", 0); - value.insert("engine->evaluate(\"0x43211234\")", 4660); - value.insert("engine->evaluate(\"0x10000\")", 0); - value.insert("engine->evaluate(\"0x10001\")", 1); - value.insert("engine->evaluate(\"NaN\")", 0); - value.insert("engine->evaluate(\"Infinity\")", 0); - value.insert("engine->evaluate(\"-Infinity\")", 0); - value.insert("engine->evaluate(\"'ciao'\")", 0); - value.insert("engine->evaluate(\"''\")", 0); - value.insert("engine->evaluate(\"'0'\")", 0); - value.insert("engine->evaluate(\"'123'\")", 123); - value.insert("engine->evaluate(\"'12.4'\")", 12); - value.insert("engine->nullValue()", 0); - value.insert("engine->undefinedValue()", 0); - value.insert("engine->newObject()", 0); - value.insert("engine->newArray()", 0); - value.insert("engine->newArray(10)", 0); - value.insert("engine->newDate(QDateTime())", 0); - value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0); - value.insert("engine->newVariant(QVariant())", 0); - value.insert("engine->newVariant(QVariant(123))", 123); - value.insert("engine->newVariant(QVariant(false))", 0); - value.insert("engine->newQObject(0)", 0); - value.insert("engine->newQObject(engine)", 0); - } - newRow(expr) << value.value(expr); -} - -void tst_QScriptValue::qscriptvalue_castquint16_test(const char*, const QScriptValue& value) -{ - QFETCH(quint16, expected); - QCOMPARE(qscriptvalue_cast(value), expected); - QCOMPARE(qscriptvalue_cast(value), expected); -} - -DEFINE_TEST_FUNCTION(qscriptvalue_castquint16) diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_cast.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_cast.cpp new file mode 100644 index 0000000..e651810 --- /dev/null +++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_cast.cpp @@ -0,0 +1,1453 @@ +/**************************************************************************** +** +** 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 has been generated. DO NOT MODIFY! **************** +****************************************************************************/ + +#include "tst_qscriptvalue.h" + + + +void tst_QScriptValue::qscriptvalue_castQString_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString qscriptvalue_castQString_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; +static QString qscriptvalue_castQString_valueArray [] = { + "", "", + "", "true", + "false", "122", + "124", "0", + "0", "123", + "6.37e-8", "-6.37e-8", + "1126240820", "65536", + "65537", "NaN", + "NaN", "Infinity", + "-Infinity", "NaN", + "Infinity", "-Infinity", + "ciao", "ciao", + "", "", + "0", "123", + "12.4", "", + "", "true", + "false", "122", + "124", "0", + "0", "123", + "6.37e-8", "-6.37e-8", + "1126240820", "65536", + "65537", "NaN", + "NaN", "Infinity", + "-Infinity", "NaN", + "Infinity", "-Infinity", + "ciao", "ciao", + "", "", + "0", "123", + "12.3", "", + "", "true", + "false", "122", + "124", "0", + "0", "123", + "6.37e-8", "-6.37e-8", + "1126240820", "65536", + "65537", "NaN", + "NaN", "Infinity", + "-Infinity", "NaN", + "Infinity", "-Infinity", + "ciao", "ciao", + "", "", + "0", "123", + "1.23", "", + "", "[object Object]", + "Invalid Date", "", + "function () {\n [native code]\n}", "Error: Unknown error", + "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}", + "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}", + "function () { return 1; }", "function () { return 'ciao'; }", + "function () { throw new Error('foo'); }", "/foo/", + "[object Object]", "", + "Error: Unknown error", "22", + "ReferenceError: Can't find variable: Undefined", "ReferenceError: Can't find variable: Null", + "ReferenceError: Can't find variable: True", "ReferenceError: Can't find variable: False", + "", "", + "true", "false", + "122", "124", + "0", "0", + "123", "6.37e-8", + "-6.37e-8", "1126240820", + "65536", "65537", + "NaN", "Infinity", + "-Infinity", "ciao", + "", "0", + "123", "12.4", + "", "", + "[object Object]", "", + ",,,,,,,,,", "Invalid Date", + "[object QMetaObject]", "undefined", + "123", "false", + "", "QScriptEngine(name = \"\")", }; +void tst_QScriptValue::qscriptvalue_castQString_makeData(const char* expr) +{ + static QHash value; + if (value.isEmpty()) { + value.reserve(142); + for (unsigned i = 0; i < 142; ++i) + value.insert(qscriptvalue_castQString_tagArray[i], qscriptvalue_castQString_valueArray[i]); + } + newRow(expr) << value.value(expr); +} + +void tst_QScriptValue::qscriptvalue_castQString_test(const char*, const QScriptValue& value) +{ + QFETCH(QString, expected); + QCOMPARE(qscriptvalue_cast(value), expected); + QCOMPARE(qscriptvalue_cast(value), expected); +} + +DEFINE_TEST_FUNCTION(qscriptvalue_castQString) + + +void tst_QScriptValue::qscriptvalue_castqsreal_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString qscriptvalue_castqsreal_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; +static qsreal qscriptvalue_castqsreal_valueArray [] = { + 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123, + 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), + qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(), + 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, + 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), + qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1, + 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, + 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(), + 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0, + qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), + qQNaN(), 0, qQNaN(), 22, qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0, + 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, + 65536, 65537, qQNaN(), qInf(), qInf(), qQNaN(), 0, 0, 123, 12.4, + 0, qQNaN(), qQNaN(), 0, qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0, + 0, qQNaN(), }; +void tst_QScriptValue::qscriptvalue_castqsreal_makeData(const char* expr) +{ + static QHash value; + if (value.isEmpty()) { + value.reserve(142); + for (unsigned i = 0; i < 142; ++i) + value.insert(qscriptvalue_castqsreal_tagArray[i], qscriptvalue_castqsreal_valueArray[i]); + } + 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(value))); + QVERIFY(qIsNaN(qscriptvalue_cast(value))); + return; + } + if (qIsInf(expected)) { + QVERIFY(qIsInf(qscriptvalue_cast(value))); + QVERIFY(qIsInf(qscriptvalue_cast(value))); + return; + } + QCOMPARE(qscriptvalue_cast(value), expected); + QCOMPARE(qscriptvalue_cast(value), expected); +} + +DEFINE_TEST_FUNCTION(qscriptvalue_castqsreal) + + +void tst_QScriptValue::qscriptvalue_castbool_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString qscriptvalue_castbool_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; +static bool qscriptvalue_castbool_valueArray [] = { + false, false, + false, true, + false, true, + true, false, + false, true, + true, true, + true, true, + true, false, + false, true, + true, true, + true, true, + true, true, + false, false, + true, true, + true, false, + false, true, + false, true, + true, false, + false, true, + true, true, + true, true, + true, false, + false, true, + true, true, + true, true, + true, true, + false, false, + true, true, + true, false, + false, true, + false, true, + true, false, + false, true, + true, true, + true, true, + true, false, + false, true, + true, true, + true, true, + true, true, + false, false, + true, true, + true, true, + false, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + false, false, + true, false, + true, true, + false, false, + true, true, + true, true, + true, true, + false, true, + true, true, + false, true, + true, true, + false, false, + true, true, + true, true, + true, true, + true, true, + false, true, }; +void tst_QScriptValue::qscriptvalue_castbool_makeData(const char* expr) +{ + static QHash value; + if (value.isEmpty()) { + value.reserve(142); + for (unsigned i = 0; i < 142; ++i) + value.insert(qscriptvalue_castbool_tagArray[i], qscriptvalue_castbool_valueArray[i]); + } + newRow(expr) << value.value(expr); +} + +void tst_QScriptValue::qscriptvalue_castbool_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(qscriptvalue_cast(value), expected); + QCOMPARE(qscriptvalue_cast(value), expected); +} + +DEFINE_TEST_FUNCTION(qscriptvalue_castbool) + + +void tst_QScriptValue::qscriptvalue_castqint32_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString qscriptvalue_castqint32_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; +static qint32 qscriptvalue_castqint32_valueArray [] = { + 0, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 1126240820, 65536, + 65537, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 12, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 1126240820, 65536, + 65537, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 12, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 1126240820, 65536, + 65537, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 1, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 22, + 0, 0, + 0, 0, + 0, 0, + 1, 0, + 122, 124, + 0, 0, + 123, 0, + 0, 1126240820, + 65536, 65537, + 0, 0, + 0, 0, + 0, 0, + 123, 12, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 123, 0, + 0, 0, }; +void tst_QScriptValue::qscriptvalue_castqint32_makeData(const char* expr) +{ + static QHash value; + if (value.isEmpty()) { + value.reserve(142); + for (unsigned i = 0; i < 142; ++i) + value.insert(qscriptvalue_castqint32_tagArray[i], qscriptvalue_castqint32_valueArray[i]); + } + newRow(expr) << value.value(expr); +} + +void tst_QScriptValue::qscriptvalue_castqint32_test(const char*, const QScriptValue& value) +{ + QFETCH(qint32, expected); + QCOMPARE(qscriptvalue_cast(value), expected); + QCOMPARE(qscriptvalue_cast(value), expected); +} + +DEFINE_TEST_FUNCTION(qscriptvalue_castqint32) + + +void tst_QScriptValue::qscriptvalue_castquint32_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString qscriptvalue_castquint32_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; +static quint32 qscriptvalue_castquint32_valueArray [] = { + 0, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 1126240820, 65536, + 65537, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 12, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 1126240820, 65536, + 65537, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 12, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 1126240820, 65536, + 65537, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 1, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 22, + 0, 0, + 0, 0, + 0, 0, + 1, 0, + 122, 124, + 0, 0, + 123, 0, + 0, 1126240820, + 65536, 65537, + 0, 0, + 0, 0, + 0, 0, + 123, 12, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 123, 0, + 0, 0, }; +void tst_QScriptValue::qscriptvalue_castquint32_makeData(const char* expr) +{ + static QHash value; + if (value.isEmpty()) { + value.reserve(142); + for (unsigned i = 0; i < 142; ++i) + value.insert(qscriptvalue_castquint32_tagArray[i], qscriptvalue_castquint32_valueArray[i]); + } + newRow(expr) << value.value(expr); +} + +void tst_QScriptValue::qscriptvalue_castquint32_test(const char*, const QScriptValue& value) +{ + QFETCH(quint32, expected); + QCOMPARE(qscriptvalue_cast(value), expected); + QCOMPARE(qscriptvalue_cast(value), expected); +} + +DEFINE_TEST_FUNCTION(qscriptvalue_castquint32) + + +void tst_QScriptValue::qscriptvalue_castquint16_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString qscriptvalue_castquint16_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; +static quint16 qscriptvalue_castquint16_valueArray [] = { + 0, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 4660, 0, + 1, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 12, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 4660, 0, + 1, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 12, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 4660, 0, + 1, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 1, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 22, + 0, 0, + 0, 0, + 0, 0, + 1, 0, + 122, 124, + 0, 0, + 123, 0, + 0, 4660, + 0, 1, + 0, 0, + 0, 0, + 0, 0, + 123, 12, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 123, 0, + 0, 0, }; +void tst_QScriptValue::qscriptvalue_castquint16_makeData(const char* expr) +{ + static QHash value; + if (value.isEmpty()) { + value.reserve(142); + for (unsigned i = 0; i < 142; ++i) + value.insert(qscriptvalue_castquint16_tagArray[i], qscriptvalue_castquint16_valueArray[i]); + } + newRow(expr) << value.value(expr); +} + +void tst_QScriptValue::qscriptvalue_castquint16_test(const char*, const QScriptValue& value) +{ + QFETCH(quint16, expected); + QCOMPARE(qscriptvalue_cast(value), expected); + QCOMPARE(qscriptvalue_cast(value), expected); +} + +DEFINE_TEST_FUNCTION(qscriptvalue_castquint16) diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp new file mode 100644 index 0000000..6e1f8ee --- /dev/null +++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_comparison.cpp @@ -0,0 +1,7026 @@ +/**************************************************************************** +** +** 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 has been generated. DO NOT MODIFY! **************** +****************************************************************************/ + +#include "tst_qscriptvalue.h" + + + +void tst_QScriptValue::equals_initData() +{ + QTest::addColumn("other"); + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString equals_array [] = { + "QScriptValue() <=> QScriptValue()", + "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)", + "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")", + "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")", + "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")", + "QScriptValue(QScriptValue::UndefinedValue) <=> engine->nullValue()", + "QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()", + "QScriptValue(QScriptValue::UndefinedValue) <=> engine->newQObject(0)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"{}\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"null\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()", + "QScriptValue(QScriptValue::NullValue) <=> engine->undefinedValue()", + "QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)", + "QScriptValue(true) <=> QScriptValue(true)", + "QScriptValue(true) <=> QScriptValue(0, true)", + "QScriptValue(true) <=> QScriptValue(engine, true)", + "QScriptValue(true) <=> engine->evaluate(\"true\")", + "QScriptValue(false) <=> QScriptValue(false)", + "QScriptValue(false) <=> QScriptValue(0)", + "QScriptValue(false) <=> QScriptValue(0.0)", + "QScriptValue(false) <=> QScriptValue(QString(\"\"))", + "QScriptValue(false) <=> QScriptValue(QString())", + "QScriptValue(false) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(false) <=> QScriptValue(0, false)", + "QScriptValue(false) <=> QScriptValue(0, 0)", + "QScriptValue(false) <=> QScriptValue(0, 0.0)", + "QScriptValue(false) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(false) <=> QScriptValue(0, QString())", + "QScriptValue(false) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(false) <=> QScriptValue(engine, false)", + "QScriptValue(false) <=> QScriptValue(engine, 0)", + "QScriptValue(false) <=> QScriptValue(engine, 0.0)", + "QScriptValue(false) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(false) <=> QScriptValue(engine, QString())", + "QScriptValue(false) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(false) <=> engine->evaluate(\"[]\")", + "QScriptValue(false) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(false) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(false) <=> engine->evaluate(\"false\")", + "QScriptValue(false) <=> engine->evaluate(\"0\")", + "QScriptValue(false) <=> engine->evaluate(\"0.0\")", + "QScriptValue(false) <=> engine->evaluate(\"''\")", + "QScriptValue(false) <=> engine->evaluate(\"'0'\")", + "QScriptValue(false) <=> engine->newArray()", + "QScriptValue(false) <=> engine->newVariant(QVariant(false))", + "QScriptValue(int(122)) <=> QScriptValue(int(122))", + "QScriptValue(int(122)) <=> QScriptValue(0, int(122))", + "QScriptValue(int(122)) <=> QScriptValue(engine, int(122))", + "QScriptValue(int(122)) <=> engine->evaluate(\"122\")", + "QScriptValue(uint(124)) <=> QScriptValue(uint(124))", + "QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))", + "QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))", + "QScriptValue(uint(124)) <=> engine->evaluate(\"124\")", + "QScriptValue(0) <=> QScriptValue(false)", + "QScriptValue(0) <=> QScriptValue(0)", + "QScriptValue(0) <=> QScriptValue(0.0)", + "QScriptValue(0) <=> QScriptValue(QString(\"\"))", + "QScriptValue(0) <=> QScriptValue(QString())", + "QScriptValue(0) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(0) <=> QScriptValue(0, false)", + "QScriptValue(0) <=> QScriptValue(0, 0)", + "QScriptValue(0) <=> QScriptValue(0, 0.0)", + "QScriptValue(0) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(0) <=> QScriptValue(0, QString())", + "QScriptValue(0) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(0) <=> QScriptValue(engine, false)", + "QScriptValue(0) <=> QScriptValue(engine, 0)", + "QScriptValue(0) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(0) <=> QScriptValue(engine, QString())", + "QScriptValue(0) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(0) <=> engine->evaluate(\"[]\")", + "QScriptValue(0) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(0) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(0) <=> engine->evaluate(\"false\")", + "QScriptValue(0) <=> engine->evaluate(\"0\")", + "QScriptValue(0) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0) <=> engine->evaluate(\"''\")", + "QScriptValue(0) <=> engine->evaluate(\"'0'\")", + "QScriptValue(0) <=> engine->newArray()", + "QScriptValue(0) <=> engine->newVariant(QVariant(false))", + "QScriptValue(0.0) <=> QScriptValue(false)", + "QScriptValue(0.0) <=> QScriptValue(0)", + "QScriptValue(0.0) <=> QScriptValue(0.0)", + "QScriptValue(0.0) <=> QScriptValue(QString(\"\"))", + "QScriptValue(0.0) <=> QScriptValue(QString())", + "QScriptValue(0.0) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(0.0) <=> QScriptValue(0, false)", + "QScriptValue(0.0) <=> QScriptValue(0, 0)", + "QScriptValue(0.0) <=> QScriptValue(0, 0.0)", + "QScriptValue(0.0) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(0.0) <=> QScriptValue(0, QString())", + "QScriptValue(0.0) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(0.0) <=> QScriptValue(engine, false)", + "QScriptValue(0.0) <=> QScriptValue(engine, 0)", + "QScriptValue(0.0) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0.0) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(0.0) <=> QScriptValue(engine, QString())", + "QScriptValue(0.0) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(0.0) <=> engine->evaluate(\"[]\")", + "QScriptValue(0.0) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(0.0) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(0.0) <=> engine->evaluate(\"false\")", + "QScriptValue(0.0) <=> engine->evaluate(\"0\")", + "QScriptValue(0.0) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0.0) <=> engine->evaluate(\"''\")", + "QScriptValue(0.0) <=> engine->evaluate(\"'0'\")", + "QScriptValue(0.0) <=> engine->newArray()", + "QScriptValue(0.0) <=> engine->newVariant(QVariant(false))", + "QScriptValue(123.0) <=> QScriptValue(123.0)", + "QScriptValue(123.0) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(123.0) <=> QScriptValue(0, 123.0)", + "QScriptValue(123.0) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(123.0) <=> QScriptValue(engine, 123.0)", + "QScriptValue(123.0) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(123.0) <=> engine->evaluate(\"123.0\")", + "QScriptValue(123.0) <=> engine->evaluate(\"'123'\")", + "QScriptValue(123.0) <=> engine->newVariant(QVariant(123))", + "QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)", + "QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"-6.37e-8\")", + "QScriptValue(0x43211234) <=> QScriptValue(0x43211234)", + "QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0x43211234) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0x10000) <=> QScriptValue(0x10000)", + "QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0x10001) <=> QScriptValue(0x10001)", + "QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0x10001) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(qInf()) <=> QScriptValue(qInf())", + "QScriptValue(qInf()) <=> QScriptValue(\"Infinity\")", + "QScriptValue(qInf()) <=> QScriptValue(0, qInf())", + "QScriptValue(qInf()) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(qInf()) <=> QScriptValue(engine, qInf())", + "QScriptValue(qInf()) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(qInf()) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(-qInf()) <=> QScriptValue(-qInf())", + "QScriptValue(-qInf()) <=> QScriptValue(\"-Infinity\")", + "QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())", + "QScriptValue(-qInf()) <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())", + "QScriptValue(-qInf()) <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"-Infinity\")", + "QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")", + "QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")", + "QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(\"Infinity\") <=> QScriptValue(qInf())", + "QScriptValue(\"Infinity\") <=> QScriptValue(\"Infinity\")", + "QScriptValue(\"Infinity\") <=> QScriptValue(0, qInf())", + "QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(\"Infinity\") <=> QScriptValue(engine, qInf())", + "QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Infinity\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(-qInf())", + "QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, -qInf())", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -qInf())", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")", + "QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")", + "QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"ciao\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(false)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0.0)", + "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(QString())", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, false)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0.0)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, false)", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0)", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0.0)", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"[]\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"false\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0.0\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"''\")", + "QScriptValue(QString(\"\")) <=> engine->newArray()", + "QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(false))", + "QScriptValue(QString()) <=> QScriptValue(false)", + "QScriptValue(QString()) <=> QScriptValue(0)", + "QScriptValue(QString()) <=> QScriptValue(0.0)", + "QScriptValue(QString()) <=> QScriptValue(QString(\"\"))", + "QScriptValue(QString()) <=> QScriptValue(QString())", + "QScriptValue(QString()) <=> QScriptValue(0, false)", + "QScriptValue(QString()) <=> QScriptValue(0, 0)", + "QScriptValue(QString()) <=> QScriptValue(0, 0.0)", + "QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(QString()) <=> QScriptValue(0, QString())", + "QScriptValue(QString()) <=> QScriptValue(engine, false)", + "QScriptValue(QString()) <=> QScriptValue(engine, 0)", + "QScriptValue(QString()) <=> QScriptValue(engine, 0.0)", + "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(QString()) <=> QScriptValue(engine, QString())", + "QScriptValue(QString()) <=> engine->evaluate(\"[]\")", + "QScriptValue(QString()) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(QString()) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(QString()) <=> engine->evaluate(\"false\")", + "QScriptValue(QString()) <=> engine->evaluate(\"0\")", + "QScriptValue(QString()) <=> engine->evaluate(\"0.0\")", + "QScriptValue(QString()) <=> engine->evaluate(\"''\")", + "QScriptValue(QString()) <=> engine->newArray()", + "QScriptValue(QString()) <=> engine->newVariant(QVariant(false))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(false)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0.0)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, false)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0.0)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, false)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0.0)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"false\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0.0\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'0'\")", + "QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(false))", + "QScriptValue(QString(\"123\")) <=> QScriptValue(123.0)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0, 123.0)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 123.0)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"123.0\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(QString(\"123\")) <=> engine->newVariant(QVariant(123))", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->nullValue()", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->newQObject(0)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"null\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->undefinedValue()", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)", + "QScriptValue(0, true) <=> QScriptValue(true)", + "QScriptValue(0, true) <=> QScriptValue(0, true)", + "QScriptValue(0, true) <=> QScriptValue(engine, true)", + "QScriptValue(0, true) <=> engine->evaluate(\"true\")", + "QScriptValue(0, false) <=> QScriptValue(false)", + "QScriptValue(0, false) <=> QScriptValue(0)", + "QScriptValue(0, false) <=> QScriptValue(0.0)", + "QScriptValue(0, false) <=> QScriptValue(QString(\"\"))", + "QScriptValue(0, false) <=> QScriptValue(QString())", + "QScriptValue(0, false) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(0, false) <=> QScriptValue(0, false)", + "QScriptValue(0, false) <=> QScriptValue(0, 0)", + "QScriptValue(0, false) <=> QScriptValue(0, 0.0)", + "QScriptValue(0, false) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(0, false) <=> QScriptValue(0, QString())", + "QScriptValue(0, false) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(0, false) <=> QScriptValue(engine, false)", + "QScriptValue(0, false) <=> QScriptValue(engine, 0)", + "QScriptValue(0, false) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0, false) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(0, false) <=> QScriptValue(engine, QString())", + "QScriptValue(0, false) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(0, false) <=> engine->evaluate(\"[]\")", + "QScriptValue(0, false) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(0, false) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(0, false) <=> engine->evaluate(\"false\")", + "QScriptValue(0, false) <=> engine->evaluate(\"0\")", + "QScriptValue(0, false) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0, false) <=> engine->evaluate(\"''\")", + "QScriptValue(0, false) <=> engine->evaluate(\"'0'\")", + "QScriptValue(0, false) <=> engine->newArray()", + "QScriptValue(0, false) <=> engine->newVariant(QVariant(false))", + "QScriptValue(0, int(122)) <=> QScriptValue(int(122))", + "QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))", + "QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, int(122)) <=> engine->evaluate(\"122\")", + "QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))", + "QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, uint(124)) <=> engine->evaluate(\"124\")", + "QScriptValue(0, 0) <=> QScriptValue(false)", + "QScriptValue(0, 0) <=> QScriptValue(0)", + "QScriptValue(0, 0) <=> QScriptValue(0.0)", + "QScriptValue(0, 0) <=> QScriptValue(QString(\"\"))", + "QScriptValue(0, 0) <=> QScriptValue(QString())", + "QScriptValue(0, 0) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(0, 0) <=> QScriptValue(0, false)", + "QScriptValue(0, 0) <=> QScriptValue(0, 0)", + "QScriptValue(0, 0) <=> QScriptValue(0, 0.0)", + "QScriptValue(0, 0) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(0, 0) <=> QScriptValue(0, QString())", + "QScriptValue(0, 0) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(0, 0) <=> QScriptValue(engine, false)", + "QScriptValue(0, 0) <=> QScriptValue(engine, 0)", + "QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(0, 0) <=> QScriptValue(engine, QString())", + "QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(0, 0) <=> engine->evaluate(\"[]\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"false\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"0\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"''\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"'0'\")", + "QScriptValue(0, 0) <=> engine->newArray()", + "QScriptValue(0, 0) <=> engine->newVariant(QVariant(false))", + "QScriptValue(0, 0.0) <=> QScriptValue(false)", + "QScriptValue(0, 0.0) <=> QScriptValue(0)", + "QScriptValue(0, 0.0) <=> QScriptValue(0.0)", + "QScriptValue(0, 0.0) <=> QScriptValue(QString(\"\"))", + "QScriptValue(0, 0.0) <=> QScriptValue(QString())", + "QScriptValue(0, 0.0) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(0, 0.0) <=> QScriptValue(0, false)", + "QScriptValue(0, 0.0) <=> QScriptValue(0, 0)", + "QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)", + "QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(0, 0.0) <=> QScriptValue(0, QString())", + "QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, false)", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString())", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"[]\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"false\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"''\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"'0'\")", + "QScriptValue(0, 0.0) <=> engine->newArray()", + "QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(false))", + "QScriptValue(0, 123.0) <=> QScriptValue(123.0)", + "QScriptValue(0, 123.0) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, 123.0) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, 123.0) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, 123.0) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, 123.0) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, 123.0) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")", + "QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)", + "QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, 0x43211234) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)", + "QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)", + "QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, qInf()) <=> QScriptValue(qInf())", + "QScriptValue(0, qInf()) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())", + "QScriptValue(0, qInf()) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, qInf()) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, qInf()) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())", + "QScriptValue(0, -qInf()) <=> QScriptValue(\"-Infinity\")", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"-Infinity\")", + "QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")", + "QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")", + "QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(qInf())", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, qInf())", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, qInf())", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(-qInf())", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -qInf())", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -qInf())", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"-Infinity\")", + "QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")", + "QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(false)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0.0)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, false)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0.0)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, false)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"[]\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"false\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"''\")", + "QScriptValue(0, QString(\"\")) <=> engine->newArray()", + "QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(false))", + "QScriptValue(0, QString()) <=> QScriptValue(false)", + "QScriptValue(0, QString()) <=> QScriptValue(0)", + "QScriptValue(0, QString()) <=> QScriptValue(0.0)", + "QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))", + "QScriptValue(0, QString()) <=> QScriptValue(QString())", + "QScriptValue(0, QString()) <=> QScriptValue(0, false)", + "QScriptValue(0, QString()) <=> QScriptValue(0, 0)", + "QScriptValue(0, QString()) <=> QScriptValue(0, 0.0)", + "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(0, QString()) <=> QScriptValue(0, QString())", + "QScriptValue(0, QString()) <=> QScriptValue(engine, false)", + "QScriptValue(0, QString()) <=> QScriptValue(engine, 0)", + "QScriptValue(0, QString()) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(0, QString()) <=> QScriptValue(engine, QString())", + "QScriptValue(0, QString()) <=> engine->evaluate(\"[]\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"false\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"0\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"''\")", + "QScriptValue(0, QString()) <=> engine->newArray()", + "QScriptValue(0, QString()) <=> engine->newVariant(QVariant(false))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(false)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0.0)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, false)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0.0)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, false)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"false\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'0'\")", + "QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(false))", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(123.0)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, QString(\"123\")) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->nullValue()", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->newQObject(0)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"null\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->undefinedValue()", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)", + "QScriptValue(engine, true) <=> QScriptValue(true)", + "QScriptValue(engine, true) <=> QScriptValue(0, true)", + "QScriptValue(engine, true) <=> QScriptValue(engine, true)", + "QScriptValue(engine, true) <=> engine->evaluate(\"true\")", + "QScriptValue(engine, false) <=> QScriptValue(false)", + "QScriptValue(engine, false) <=> QScriptValue(0)", + "QScriptValue(engine, false) <=> QScriptValue(0.0)", + "QScriptValue(engine, false) <=> QScriptValue(QString(\"\"))", + "QScriptValue(engine, false) <=> QScriptValue(QString())", + "QScriptValue(engine, false) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(engine, false) <=> QScriptValue(0, false)", + "QScriptValue(engine, false) <=> QScriptValue(0, 0)", + "QScriptValue(engine, false) <=> QScriptValue(0, 0.0)", + "QScriptValue(engine, false) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(engine, false) <=> QScriptValue(0, QString())", + "QScriptValue(engine, false) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(engine, false) <=> QScriptValue(engine, false)", + "QScriptValue(engine, false) <=> QScriptValue(engine, 0)", + "QScriptValue(engine, false) <=> QScriptValue(engine, 0.0)", + "QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(engine, false) <=> QScriptValue(engine, QString())", + "QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(engine, false) <=> engine->evaluate(\"[]\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"false\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"0\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"0.0\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"''\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"'0'\")", + "QScriptValue(engine, false) <=> engine->newArray()", + "QScriptValue(engine, false) <=> engine->newVariant(QVariant(false))", + "QScriptValue(engine, int(122)) <=> QScriptValue(int(122))", + "QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, int(122)) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))", + "QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, 0) <=> QScriptValue(false)", + "QScriptValue(engine, 0) <=> QScriptValue(0)", + "QScriptValue(engine, 0) <=> QScriptValue(0.0)", + "QScriptValue(engine, 0) <=> QScriptValue(QString(\"\"))", + "QScriptValue(engine, 0) <=> QScriptValue(QString())", + "QScriptValue(engine, 0) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(engine, 0) <=> QScriptValue(0, false)", + "QScriptValue(engine, 0) <=> QScriptValue(0, 0)", + "QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)", + "QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(engine, 0) <=> QScriptValue(0, QString())", + "QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(engine, 0) <=> QScriptValue(engine, false)", + "QScriptValue(engine, 0) <=> QScriptValue(engine, 0)", + "QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)", + "QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(engine, 0) <=> QScriptValue(engine, QString())", + "QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(engine, 0) <=> engine->evaluate(\"[]\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"false\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"0\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"''\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"'0'\")", + "QScriptValue(engine, 0) <=> engine->newArray()", + "QScriptValue(engine, 0) <=> engine->newVariant(QVariant(false))", + "QScriptValue(engine, 0.0) <=> QScriptValue(false)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0.0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"\"))", + "QScriptValue(engine, 0.0) <=> QScriptValue(QString())", + "QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, false)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString())", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, false)", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString())", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"[]\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"false\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"''\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"'0'\")", + "QScriptValue(engine, 0.0) <=> engine->newArray()", + "QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(false))", + "QScriptValue(engine, 123.0) <=> QScriptValue(123.0)", + "QScriptValue(engine, 123.0) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, 123.0) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, 123.0) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, 123.0) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, 123.0) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, 123.0) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")", + "QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)", + "QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)", + "QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, qInf()) <=> QScriptValue(qInf())", + "QScriptValue(engine, qInf()) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, qInf()) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, qInf()) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, qInf()) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())", + "QScriptValue(engine, -qInf()) <=> QScriptValue(\"-Infinity\")", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-Infinity\")", + "QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")", + "QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")", + "QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(qInf())", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, qInf())", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-qInf())", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -qInf())", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -qInf())", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"-Infinity\")", + "QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")", + "QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(false)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0.0)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, false)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0.0)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, false)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0.0)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"[]\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"false\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0.0\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"''\")", + "QScriptValue(engine, QString(\"\")) <=> engine->newArray()", + "QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(false))", + "QScriptValue(engine, QString()) <=> QScriptValue(false)", + "QScriptValue(engine, QString()) <=> QScriptValue(0)", + "QScriptValue(engine, QString()) <=> QScriptValue(0.0)", + "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(QString())", + "QScriptValue(engine, QString()) <=> QScriptValue(0, false)", + "QScriptValue(engine, QString()) <=> QScriptValue(0, 0)", + "QScriptValue(engine, QString()) <=> QScriptValue(0, 0.0)", + "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(0, QString())", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, false)", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0)", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0.0)", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"[]\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"false\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"0\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"0.0\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"''\")", + "QScriptValue(engine, QString()) <=> engine->newArray()", + "QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(false))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(false)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0.0)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, false)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0.0)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, false)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0.0)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"false\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0.0\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'0'\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(false))", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(123.0)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(false)", + "engine->evaluate(\"[]\") <=> QScriptValue(0)", + "engine->evaluate(\"[]\") <=> QScriptValue(0.0)", + "engine->evaluate(\"[]\") <=> QScriptValue(QString(\"\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(QString())", + "engine->evaluate(\"[]\") <=> QScriptValue(0, false)", + "engine->evaluate(\"[]\") <=> QScriptValue(0, 0)", + "engine->evaluate(\"[]\") <=> QScriptValue(0, 0.0)", + "engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(0, QString())", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, false)", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0)", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0.0)", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString())", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"false\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"0\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"0.0\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"''\")", + "engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)", + "engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::NullValue)", + "engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::NullValue)", + "engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::NullValue)", + "engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")", + "engine->evaluate(\"{}\") <=> engine->evaluate(\"undefined\")", + "engine->evaluate(\"{}\") <=> engine->evaluate(\"null\")", + "engine->evaluate(\"{}\") <=> engine->nullValue()", + "engine->evaluate(\"{}\") <=> engine->undefinedValue()", + "engine->evaluate(\"{}\") <=> engine->newQObject(0)", + "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(false)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0.0)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString())", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, false)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0.0)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString())", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, false)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0.0)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString())", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"false\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0.0\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"''\")", + "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")", + "engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Array\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"Number\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"/foo/\")", + "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(false)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0.0)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(QString())", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, false)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0.0)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString())", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, false)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0.0)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString())", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"false\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0.0\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"''\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)", + "engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::NullValue)", + "engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::NullValue)", + "engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::NullValue)", + "engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")", + "engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")", + "engine->evaluate(\"undefined\") <=> engine->evaluate(\"null\")", + "engine->evaluate(\"undefined\") <=> engine->nullValue()", + "engine->evaluate(\"undefined\") <=> engine->undefinedValue()", + "engine->evaluate(\"undefined\") <=> engine->newQObject(0)", + "engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::UndefinedValue)", + "engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)", + "engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)", + "engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)", + "engine->evaluate(\"null\") <=> engine->evaluate(\"{}\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"null\")", + "engine->evaluate(\"null\") <=> engine->nullValue()", + "engine->evaluate(\"null\") <=> engine->undefinedValue()", + "engine->evaluate(\"null\") <=> engine->newQObject(0)", + "engine->evaluate(\"true\") <=> QScriptValue(true)", + "engine->evaluate(\"true\") <=> QScriptValue(0, true)", + "engine->evaluate(\"true\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"true\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"false\") <=> QScriptValue(false)", + "engine->evaluate(\"false\") <=> QScriptValue(0)", + "engine->evaluate(\"false\") <=> QScriptValue(0.0)", + "engine->evaluate(\"false\") <=> QScriptValue(QString(\"\"))", + "engine->evaluate(\"false\") <=> QScriptValue(QString())", + "engine->evaluate(\"false\") <=> QScriptValue(QString(\"0\"))", + "engine->evaluate(\"false\") <=> QScriptValue(0, false)", + "engine->evaluate(\"false\") <=> QScriptValue(0, 0)", + "engine->evaluate(\"false\") <=> QScriptValue(0, 0.0)", + "engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"\"))", + "engine->evaluate(\"false\") <=> QScriptValue(0, QString())", + "engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"0\"))", + "engine->evaluate(\"false\") <=> QScriptValue(engine, false)", + "engine->evaluate(\"false\") <=> QScriptValue(engine, 0)", + "engine->evaluate(\"false\") <=> QScriptValue(engine, 0.0)", + "engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"\"))", + "engine->evaluate(\"false\") <=> QScriptValue(engine, QString())", + "engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"0\"))", + "engine->evaluate(\"false\") <=> engine->evaluate(\"[]\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"Array.prototype\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"new Array()\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"false\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"0\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"0.0\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"''\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"'0'\")", + "engine->evaluate(\"false\") <=> engine->newArray()", + "engine->evaluate(\"false\") <=> engine->newVariant(QVariant(false))", + "engine->evaluate(\"122\") <=> QScriptValue(int(122))", + "engine->evaluate(\"122\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"122\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"124\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"124\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"0\") <=> QScriptValue(false)", + "engine->evaluate(\"0\") <=> QScriptValue(0)", + "engine->evaluate(\"0\") <=> QScriptValue(0.0)", + "engine->evaluate(\"0\") <=> QScriptValue(QString(\"\"))", + "engine->evaluate(\"0\") <=> QScriptValue(QString())", + "engine->evaluate(\"0\") <=> QScriptValue(QString(\"0\"))", + "engine->evaluate(\"0\") <=> QScriptValue(0, false)", + "engine->evaluate(\"0\") <=> QScriptValue(0, 0)", + "engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)", + "engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"\"))", + "engine->evaluate(\"0\") <=> QScriptValue(0, QString())", + "engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"0\"))", + "engine->evaluate(\"0\") <=> QScriptValue(engine, false)", + "engine->evaluate(\"0\") <=> QScriptValue(engine, 0)", + "engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)", + "engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"\"))", + "engine->evaluate(\"0\") <=> QScriptValue(engine, QString())", + "engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"0\"))", + "engine->evaluate(\"0\") <=> engine->evaluate(\"[]\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"Array.prototype\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"new Array()\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"false\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"0\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"''\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"'0'\")", + "engine->evaluate(\"0\") <=> engine->newArray()", + "engine->evaluate(\"0\") <=> engine->newVariant(QVariant(false))", + "engine->evaluate(\"0.0\") <=> QScriptValue(false)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0.0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"\"))", + "engine->evaluate(\"0.0\") <=> QScriptValue(QString())", + "engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"0\"))", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, false)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"\"))", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString())", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"0\"))", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, false)", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"\"))", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString())", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"0\"))", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"[]\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"Array.prototype\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Array()\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"false\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"''\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"'0'\")", + "engine->evaluate(\"0.0\") <=> engine->newArray()", + "engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(false))", + "engine->evaluate(\"123.0\") <=> QScriptValue(123.0)", + "engine->evaluate(\"123.0\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"123.0\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"123.0\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"123.0\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"123.0\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())", + "engine->evaluate(\"Infinity\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"Infinity\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(\"-Infinity\")", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\") <=> QScriptValue(false)", + "engine->evaluate(\"''\") <=> QScriptValue(0)", + "engine->evaluate(\"''\") <=> QScriptValue(0.0)", + "engine->evaluate(\"''\") <=> QScriptValue(QString(\"\"))", + "engine->evaluate(\"''\") <=> QScriptValue(QString())", + "engine->evaluate(\"''\") <=> QScriptValue(0, false)", + "engine->evaluate(\"''\") <=> QScriptValue(0, 0)", + "engine->evaluate(\"''\") <=> QScriptValue(0, 0.0)", + "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"\"))", + "engine->evaluate(\"''\") <=> QScriptValue(0, QString())", + "engine->evaluate(\"''\") <=> QScriptValue(engine, false)", + "engine->evaluate(\"''\") <=> QScriptValue(engine, 0)", + "engine->evaluate(\"''\") <=> QScriptValue(engine, 0.0)", + "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"\"))", + "engine->evaluate(\"''\") <=> QScriptValue(engine, QString())", + "engine->evaluate(\"''\") <=> engine->evaluate(\"[]\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"Array.prototype\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"new Array()\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"false\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"0\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"0.0\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"''\")", + "engine->evaluate(\"''\") <=> engine->newArray()", + "engine->evaluate(\"''\") <=> engine->newVariant(QVariant(false))", + "engine->evaluate(\"'0'\") <=> QScriptValue(false)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0.0)", + "engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, false)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0.0)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, false)", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0)", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0.0)", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"false\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0.0\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")", + "engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(false))", + "engine->evaluate(\"'123'\") <=> QScriptValue(123.0)", + "engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"'123'\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"'123'\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"'123'\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")", + "engine->nullValue() <=> QScriptValue(QScriptValue::UndefinedValue)", + "engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)", + "engine->nullValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)", + "engine->nullValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)", + "engine->nullValue() <=> engine->evaluate(\"{}\")", + "engine->nullValue() <=> engine->evaluate(\"undefined\")", + "engine->nullValue() <=> engine->evaluate(\"null\")", + "engine->nullValue() <=> engine->nullValue()", + "engine->nullValue() <=> engine->undefinedValue()", + "engine->nullValue() <=> engine->newQObject(0)", + "engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)", + "engine->undefinedValue() <=> QScriptValue(QScriptValue::NullValue)", + "engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "engine->undefinedValue() <=> QScriptValue(0, QScriptValue::NullValue)", + "engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::NullValue)", + "engine->undefinedValue() <=> engine->evaluate(\"{}\")", + "engine->undefinedValue() <=> engine->evaluate(\"undefined\")", + "engine->undefinedValue() <=> engine->evaluate(\"null\")", + "engine->undefinedValue() <=> engine->nullValue()", + "engine->undefinedValue() <=> engine->undefinedValue()", + "engine->undefinedValue() <=> engine->newQObject(0)", + "engine->newObject() <=> engine->newObject()", + "engine->newArray() <=> QScriptValue(false)", + "engine->newArray() <=> QScriptValue(0)", + "engine->newArray() <=> QScriptValue(0.0)", + "engine->newArray() <=> QScriptValue(QString(\"\"))", + "engine->newArray() <=> QScriptValue(QString())", + "engine->newArray() <=> QScriptValue(0, false)", + "engine->newArray() <=> QScriptValue(0, 0)", + "engine->newArray() <=> QScriptValue(0, 0.0)", + "engine->newArray() <=> QScriptValue(0, QString(\"\"))", + "engine->newArray() <=> QScriptValue(0, QString())", + "engine->newArray() <=> QScriptValue(engine, false)", + "engine->newArray() <=> QScriptValue(engine, 0)", + "engine->newArray() <=> QScriptValue(engine, 0.0)", + "engine->newArray() <=> QScriptValue(engine, QString(\"\"))", + "engine->newArray() <=> QScriptValue(engine, QString())", + "engine->newArray() <=> engine->evaluate(\"false\")", + "engine->newArray() <=> engine->evaluate(\"0\")", + "engine->newArray() <=> engine->evaluate(\"0.0\")", + "engine->newArray() <=> engine->evaluate(\"''\")", + "engine->newArray() <=> engine->newArray()", + "engine->newArray(10) <=> engine->newArray(10)", + "engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123)) <=> QScriptValue(123.0)", + "engine->newVariant(QVariant(123)) <=> QScriptValue(QString(\"123\"))", + "engine->newVariant(QVariant(123)) <=> QScriptValue(0, 123.0)", + "engine->newVariant(QVariant(123)) <=> QScriptValue(0, QString(\"123\"))", + "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 123.0)", + "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, QString(\"123\"))", + "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"123.0\")", + "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"'123'\")", + "engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(false)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0.0)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"\"))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(QString())", + "engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"0\"))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, false)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0.0)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"\"))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString())", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"0\"))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, false)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0.0)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"\"))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString())", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"0\"))", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"false\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0.0\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"''\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'0'\")", + "engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))", + "engine->newQObject(0) <=> QScriptValue(QScriptValue::UndefinedValue)", + "engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)", + "engine->newQObject(0) <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)", + "engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)", + "engine->newQObject(0) <=> engine->evaluate(\"{}\")", + "engine->newQObject(0) <=> engine->evaluate(\"undefined\")", + "engine->newQObject(0) <=> engine->evaluate(\"null\")", + "engine->newQObject(0) <=> engine->nullValue()", + "engine->newQObject(0) <=> engine->undefinedValue()", + "engine->newQObject(0) <=> engine->newQObject(0)", + "engine->newQObject(engine) <=> engine->newQObject(engine)",}; + +void tst_QScriptValue::equals_makeData(const char *expr) +{ + static QSet equals; + if (equals.isEmpty()) { + equals.reserve(1217); + for (unsigned i = 0; i < 1217; ++i) + equals.insert(equals_array[i]); + } + QHash::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("other"); + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString strictlyEquals_array [] = { + "QScriptValue() <=> QScriptValue()", + "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)", + "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")", + "QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")", + "QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"null\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()", + "QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)", + "QScriptValue(true) <=> QScriptValue(true)", + "QScriptValue(true) <=> QScriptValue(0, true)", + "QScriptValue(true) <=> QScriptValue(engine, true)", + "QScriptValue(true) <=> engine->evaluate(\"true\")", + "QScriptValue(false) <=> QScriptValue(false)", + "QScriptValue(false) <=> QScriptValue(0, false)", + "QScriptValue(false) <=> QScriptValue(engine, false)", + "QScriptValue(false) <=> engine->evaluate(\"false\")", + "QScriptValue(int(122)) <=> QScriptValue(int(122))", + "QScriptValue(int(122)) <=> QScriptValue(0, int(122))", + "QScriptValue(int(122)) <=> QScriptValue(engine, int(122))", + "QScriptValue(int(122)) <=> engine->evaluate(\"122\")", + "QScriptValue(uint(124)) <=> QScriptValue(uint(124))", + "QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))", + "QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))", + "QScriptValue(uint(124)) <=> engine->evaluate(\"124\")", + "QScriptValue(0) <=> QScriptValue(0)", + "QScriptValue(0) <=> QScriptValue(0.0)", + "QScriptValue(0) <=> QScriptValue(0, 0)", + "QScriptValue(0) <=> QScriptValue(0, 0.0)", + "QScriptValue(0) <=> QScriptValue(engine, 0)", + "QScriptValue(0) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0) <=> engine->evaluate(\"0\")", + "QScriptValue(0) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0.0) <=> QScriptValue(0)", + "QScriptValue(0.0) <=> QScriptValue(0.0)", + "QScriptValue(0.0) <=> QScriptValue(0, 0)", + "QScriptValue(0.0) <=> QScriptValue(0, 0.0)", + "QScriptValue(0.0) <=> QScriptValue(engine, 0)", + "QScriptValue(0.0) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0.0) <=> engine->evaluate(\"0\")", + "QScriptValue(0.0) <=> engine->evaluate(\"0.0\")", + "QScriptValue(123.0) <=> QScriptValue(123.0)", + "QScriptValue(123.0) <=> QScriptValue(0, 123.0)", + "QScriptValue(123.0) <=> QScriptValue(engine, 123.0)", + "QScriptValue(123.0) <=> engine->evaluate(\"123.0\")", + "QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)", + "QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"-6.37e-8\")", + "QScriptValue(0x43211234) <=> QScriptValue(0x43211234)", + "QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0x43211234) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0x10000) <=> QScriptValue(0x10000)", + "QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0x10001) <=> QScriptValue(0x10001)", + "QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0x10001) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(qInf()) <=> QScriptValue(qInf())", + "QScriptValue(qInf()) <=> QScriptValue(0, qInf())", + "QScriptValue(qInf()) <=> QScriptValue(engine, qInf())", + "QScriptValue(qInf()) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(-qInf()) <=> QScriptValue(-qInf())", + "QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())", + "QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())", + "QScriptValue(-qInf()) <=> engine->evaluate(\"-Infinity\")", + "QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")", + "QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")", + "QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(\"Infinity\") <=> QScriptValue(\"Infinity\")", + "QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")", + "QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"ciao\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(QString())", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"''\")", + "QScriptValue(QString()) <=> QScriptValue(QString(\"\"))", + "QScriptValue(QString()) <=> QScriptValue(QString())", + "QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(QString()) <=> QScriptValue(0, QString())", + "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(QString()) <=> QScriptValue(engine, QString())", + "QScriptValue(QString()) <=> engine->evaluate(\"''\")", + "QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'0'\")", + "QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")", + "QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"null\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)", + "QScriptValue(0, true) <=> QScriptValue(true)", + "QScriptValue(0, true) <=> QScriptValue(0, true)", + "QScriptValue(0, true) <=> QScriptValue(engine, true)", + "QScriptValue(0, true) <=> engine->evaluate(\"true\")", + "QScriptValue(0, false) <=> QScriptValue(false)", + "QScriptValue(0, false) <=> QScriptValue(0, false)", + "QScriptValue(0, false) <=> QScriptValue(engine, false)", + "QScriptValue(0, false) <=> engine->evaluate(\"false\")", + "QScriptValue(0, int(122)) <=> QScriptValue(int(122))", + "QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))", + "QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, int(122)) <=> engine->evaluate(\"122\")", + "QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))", + "QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, uint(124)) <=> engine->evaluate(\"124\")", + "QScriptValue(0, 0) <=> QScriptValue(0)", + "QScriptValue(0, 0) <=> QScriptValue(0.0)", + "QScriptValue(0, 0) <=> QScriptValue(0, 0)", + "QScriptValue(0, 0) <=> QScriptValue(0, 0.0)", + "QScriptValue(0, 0) <=> QScriptValue(engine, 0)", + "QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0, 0) <=> engine->evaluate(\"0\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0, 0.0) <=> QScriptValue(0)", + "QScriptValue(0, 0.0) <=> QScriptValue(0.0)", + "QScriptValue(0, 0.0) <=> QScriptValue(0, 0)", + "QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0, 123.0) <=> QScriptValue(123.0)", + "QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, 123.0) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")", + "QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)", + "QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, 0x43211234) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)", + "QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)", + "QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, qInf()) <=> QScriptValue(qInf())", + "QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())", + "QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, qInf()) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"-Infinity\")", + "QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")", + "QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")", + "QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")", + "QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"''\")", + "QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))", + "QScriptValue(0, QString()) <=> QScriptValue(QString())", + "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(0, QString()) <=> QScriptValue(0, QString())", + "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(0, QString()) <=> QScriptValue(engine, QString())", + "QScriptValue(0, QString()) <=> engine->evaluate(\"''\")", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'0'\")", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")", + "QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"null\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)", + "QScriptValue(engine, true) <=> QScriptValue(true)", + "QScriptValue(engine, true) <=> QScriptValue(0, true)", + "QScriptValue(engine, true) <=> QScriptValue(engine, true)", + "QScriptValue(engine, true) <=> engine->evaluate(\"true\")", + "QScriptValue(engine, false) <=> QScriptValue(false)", + "QScriptValue(engine, false) <=> QScriptValue(0, false)", + "QScriptValue(engine, false) <=> QScriptValue(engine, false)", + "QScriptValue(engine, false) <=> engine->evaluate(\"false\")", + "QScriptValue(engine, int(122)) <=> QScriptValue(int(122))", + "QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, int(122)) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))", + "QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, 0) <=> QScriptValue(0)", + "QScriptValue(engine, 0) <=> QScriptValue(0.0)", + "QScriptValue(engine, 0) <=> QScriptValue(0, 0)", + "QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)", + "QScriptValue(engine, 0) <=> QScriptValue(engine, 0)", + "QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)", + "QScriptValue(engine, 0) <=> engine->evaluate(\"0\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")", + "QScriptValue(engine, 0.0) <=> QScriptValue(0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0.0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")", + "QScriptValue(engine, 123.0) <=> QScriptValue(123.0)", + "QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, 123.0) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")", + "QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)", + "QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)", + "QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, qInf()) <=> QScriptValue(qInf())", + "QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, qInf()) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-Infinity\")", + "QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")", + "QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")", + "QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")", + "QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"''\")", + "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(QString())", + "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(0, QString())", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"''\")", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'0'\")", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")", + "engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)", + "engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")", + "engine->evaluate(\"{}\") <=> engine->evaluate(\"undefined\")", + "engine->evaluate(\"{}\") <=> engine->undefinedValue()", + "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")", + "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")", + "engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Array\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"Number\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"/foo/\")", + "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)", + "engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")", + "engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")", + "engine->evaluate(\"undefined\") <=> engine->undefinedValue()", + "engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)", + "engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)", + "engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)", + "engine->evaluate(\"null\") <=> engine->evaluate(\"null\")", + "engine->evaluate(\"null\") <=> engine->nullValue()", + "engine->evaluate(\"null\") <=> engine->newQObject(0)", + "engine->evaluate(\"true\") <=> QScriptValue(true)", + "engine->evaluate(\"true\") <=> QScriptValue(0, true)", + "engine->evaluate(\"true\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"true\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"false\") <=> QScriptValue(false)", + "engine->evaluate(\"false\") <=> QScriptValue(0, false)", + "engine->evaluate(\"false\") <=> QScriptValue(engine, false)", + "engine->evaluate(\"false\") <=> engine->evaluate(\"false\")", + "engine->evaluate(\"122\") <=> QScriptValue(int(122))", + "engine->evaluate(\"122\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"122\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"124\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"124\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"0\") <=> QScriptValue(0)", + "engine->evaluate(\"0\") <=> QScriptValue(0.0)", + "engine->evaluate(\"0\") <=> QScriptValue(0, 0)", + "engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)", + "engine->evaluate(\"0\") <=> QScriptValue(engine, 0)", + "engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)", + "engine->evaluate(\"0\") <=> engine->evaluate(\"0\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")", + "engine->evaluate(\"0.0\") <=> QScriptValue(0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0.0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\") <=> QScriptValue(123.0)", + "engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())", + "engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\") <=> QScriptValue(QString(\"\"))", + "engine->evaluate(\"''\") <=> QScriptValue(QString())", + "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"\"))", + "engine->evaluate(\"''\") <=> QScriptValue(0, QString())", + "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"\"))", + "engine->evaluate(\"''\") <=> QScriptValue(engine, QString())", + "engine->evaluate(\"''\") <=> engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")", + "engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)", + "engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)", + "engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)", + "engine->nullValue() <=> engine->evaluate(\"null\")", + "engine->nullValue() <=> engine->nullValue()", + "engine->nullValue() <=> engine->newQObject(0)", + "engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)", + "engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)", + "engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)", + "engine->undefinedValue() <=> engine->evaluate(\"{}\")", + "engine->undefinedValue() <=> engine->evaluate(\"undefined\")", + "engine->undefinedValue() <=> engine->undefinedValue()", + "engine->newObject() <=> engine->newObject()", + "engine->newArray() <=> engine->newArray()", + "engine->newArray(10) <=> engine->newArray(10)", + "engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))", + "engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)", + "engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)", + "engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)", + "engine->newQObject(0) <=> engine->evaluate(\"null\")", + "engine->newQObject(0) <=> engine->nullValue()", + "engine->newQObject(0) <=> engine->newQObject(0)", + "engine->newQObject(engine) <=> engine->newQObject(engine)",}; + +void tst_QScriptValue::strictlyEquals_makeData(const char *expr) +{ + static QSet equals; + if (equals.isEmpty()) { + equals.reserve(523); + for (unsigned i = 0; i < 523; ++i) + equals.insert(strictlyEquals_array[i]); + } + QHash::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("other"); + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString lessThan_array [] = { + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(true)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(int(122))", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(uint(124))", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(123.0)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(6.37e-8)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x43211234)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x10000)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x10001)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(qInf())", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, true)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, int(122))", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, uint(124))", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 123.0)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, qInf())", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, true)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, int(122))", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, qInf())", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"true\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"122\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"124\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))", + "QScriptValue(true) <=> QScriptValue(int(122))", + "QScriptValue(true) <=> QScriptValue(uint(124))", + "QScriptValue(true) <=> QScriptValue(123.0)", + "QScriptValue(true) <=> QScriptValue(0x43211234)", + "QScriptValue(true) <=> QScriptValue(0x10000)", + "QScriptValue(true) <=> QScriptValue(0x10001)", + "QScriptValue(true) <=> QScriptValue(qInf())", + "QScriptValue(true) <=> QScriptValue(\"Infinity\")", + "QScriptValue(true) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(true) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(true) <=> QScriptValue(0, int(122))", + "QScriptValue(true) <=> QScriptValue(0, uint(124))", + "QScriptValue(true) <=> QScriptValue(0, 123.0)", + "QScriptValue(true) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(true) <=> QScriptValue(0, 0x10000)", + "QScriptValue(true) <=> QScriptValue(0, 0x10001)", + "QScriptValue(true) <=> QScriptValue(0, qInf())", + "QScriptValue(true) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(true) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(true) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(true) <=> QScriptValue(engine, int(122))", + "QScriptValue(true) <=> QScriptValue(engine, uint(124))", + "QScriptValue(true) <=> QScriptValue(engine, 123.0)", + "QScriptValue(true) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(true) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(true) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(true) <=> QScriptValue(engine, qInf())", + "QScriptValue(true) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(true) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(true) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(true) <=> engine->evaluate(\"122\")", + "QScriptValue(true) <=> engine->evaluate(\"124\")", + "QScriptValue(true) <=> engine->evaluate(\"123.0\")", + "QScriptValue(true) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(true) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(true) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(true) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(true) <=> engine->evaluate(\"'123'\")", + "QScriptValue(true) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(true) <=> engine->newVariant(QVariant(123))", + "QScriptValue(false) <=> QScriptValue(true)", + "QScriptValue(false) <=> QScriptValue(int(122))", + "QScriptValue(false) <=> QScriptValue(uint(124))", + "QScriptValue(false) <=> QScriptValue(123.0)", + "QScriptValue(false) <=> QScriptValue(6.37e-8)", + "QScriptValue(false) <=> QScriptValue(0x43211234)", + "QScriptValue(false) <=> QScriptValue(0x10000)", + "QScriptValue(false) <=> QScriptValue(0x10001)", + "QScriptValue(false) <=> QScriptValue(qInf())", + "QScriptValue(false) <=> QScriptValue(\"Infinity\")", + "QScriptValue(false) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(false) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(false) <=> QScriptValue(0, true)", + "QScriptValue(false) <=> QScriptValue(0, int(122))", + "QScriptValue(false) <=> QScriptValue(0, uint(124))", + "QScriptValue(false) <=> QScriptValue(0, 123.0)", + "QScriptValue(false) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(false) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(false) <=> QScriptValue(0, 0x10000)", + "QScriptValue(false) <=> QScriptValue(0, 0x10001)", + "QScriptValue(false) <=> QScriptValue(0, qInf())", + "QScriptValue(false) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(false) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(false) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(false) <=> QScriptValue(engine, true)", + "QScriptValue(false) <=> QScriptValue(engine, int(122))", + "QScriptValue(false) <=> QScriptValue(engine, uint(124))", + "QScriptValue(false) <=> QScriptValue(engine, 123.0)", + "QScriptValue(false) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(false) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(false) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(false) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(false) <=> QScriptValue(engine, qInf())", + "QScriptValue(false) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(false) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(false) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(false) <=> engine->evaluate(\"true\")", + "QScriptValue(false) <=> engine->evaluate(\"122\")", + "QScriptValue(false) <=> engine->evaluate(\"124\")", + "QScriptValue(false) <=> engine->evaluate(\"123.0\")", + "QScriptValue(false) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(false) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(false) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(false) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(false) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(false) <=> engine->evaluate(\"'123'\")", + "QScriptValue(false) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(false) <=> engine->newVariant(QVariant(123))", + "QScriptValue(int(122)) <=> QScriptValue(uint(124))", + "QScriptValue(int(122)) <=> QScriptValue(123.0)", + "QScriptValue(int(122)) <=> QScriptValue(0x43211234)", + "QScriptValue(int(122)) <=> QScriptValue(0x10000)", + "QScriptValue(int(122)) <=> QScriptValue(0x10001)", + "QScriptValue(int(122)) <=> QScriptValue(qInf())", + "QScriptValue(int(122)) <=> QScriptValue(\"Infinity\")", + "QScriptValue(int(122)) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(int(122)) <=> QScriptValue(0, uint(124))", + "QScriptValue(int(122)) <=> QScriptValue(0, 123.0)", + "QScriptValue(int(122)) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(int(122)) <=> QScriptValue(0, 0x10000)", + "QScriptValue(int(122)) <=> QScriptValue(0, 0x10001)", + "QScriptValue(int(122)) <=> QScriptValue(0, qInf())", + "QScriptValue(int(122)) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(int(122)) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(int(122)) <=> QScriptValue(engine, uint(124))", + "QScriptValue(int(122)) <=> QScriptValue(engine, 123.0)", + "QScriptValue(int(122)) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(int(122)) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(int(122)) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(int(122)) <=> QScriptValue(engine, qInf())", + "QScriptValue(int(122)) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(int(122)) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(int(122)) <=> engine->evaluate(\"124\")", + "QScriptValue(int(122)) <=> engine->evaluate(\"123.0\")", + "QScriptValue(int(122)) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(int(122)) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(int(122)) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(int(122)) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(int(122)) <=> engine->evaluate(\"'123'\")", + "QScriptValue(int(122)) <=> engine->newVariant(QVariant(123))", + "QScriptValue(uint(124)) <=> QScriptValue(0x43211234)", + "QScriptValue(uint(124)) <=> QScriptValue(0x10000)", + "QScriptValue(uint(124)) <=> QScriptValue(0x10001)", + "QScriptValue(uint(124)) <=> QScriptValue(qInf())", + "QScriptValue(uint(124)) <=> QScriptValue(\"Infinity\")", + "QScriptValue(uint(124)) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(uint(124)) <=> QScriptValue(0, 0x10000)", + "QScriptValue(uint(124)) <=> QScriptValue(0, 0x10001)", + "QScriptValue(uint(124)) <=> QScriptValue(0, qInf())", + "QScriptValue(uint(124)) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(uint(124)) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(uint(124)) <=> QScriptValue(engine, qInf())", + "QScriptValue(uint(124)) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(uint(124)) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(uint(124)) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(uint(124)) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(uint(124)) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0) <=> QScriptValue(true)", + "QScriptValue(0) <=> QScriptValue(int(122))", + "QScriptValue(0) <=> QScriptValue(uint(124))", + "QScriptValue(0) <=> QScriptValue(123.0)", + "QScriptValue(0) <=> QScriptValue(6.37e-8)", + "QScriptValue(0) <=> QScriptValue(0x43211234)", + "QScriptValue(0) <=> QScriptValue(0x10000)", + "QScriptValue(0) <=> QScriptValue(0x10001)", + "QScriptValue(0) <=> QScriptValue(qInf())", + "QScriptValue(0) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0) <=> QScriptValue(0, true)", + "QScriptValue(0) <=> QScriptValue(0, int(122))", + "QScriptValue(0) <=> QScriptValue(0, uint(124))", + "QScriptValue(0) <=> QScriptValue(0, 123.0)", + "QScriptValue(0) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0) <=> QScriptValue(0, qInf())", + "QScriptValue(0) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0) <=> QScriptValue(engine, true)", + "QScriptValue(0) <=> QScriptValue(engine, int(122))", + "QScriptValue(0) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0) <=> QScriptValue(engine, qInf())", + "QScriptValue(0) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0) <=> engine->evaluate(\"true\")", + "QScriptValue(0) <=> engine->evaluate(\"122\")", + "QScriptValue(0) <=> engine->evaluate(\"124\")", + "QScriptValue(0) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0.0) <=> QScriptValue(true)", + "QScriptValue(0.0) <=> QScriptValue(int(122))", + "QScriptValue(0.0) <=> QScriptValue(uint(124))", + "QScriptValue(0.0) <=> QScriptValue(123.0)", + "QScriptValue(0.0) <=> QScriptValue(6.37e-8)", + "QScriptValue(0.0) <=> QScriptValue(0x43211234)", + "QScriptValue(0.0) <=> QScriptValue(0x10000)", + "QScriptValue(0.0) <=> QScriptValue(0x10001)", + "QScriptValue(0.0) <=> QScriptValue(qInf())", + "QScriptValue(0.0) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0.0) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0.0) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0.0) <=> QScriptValue(0, true)", + "QScriptValue(0.0) <=> QScriptValue(0, int(122))", + "QScriptValue(0.0) <=> QScriptValue(0, uint(124))", + "QScriptValue(0.0) <=> QScriptValue(0, 123.0)", + "QScriptValue(0.0) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0.0) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0.0) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0.0) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0.0) <=> QScriptValue(0, qInf())", + "QScriptValue(0.0) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0.0) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0.0) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0.0) <=> QScriptValue(engine, true)", + "QScriptValue(0.0) <=> QScriptValue(engine, int(122))", + "QScriptValue(0.0) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0.0) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0.0) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0.0) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0.0) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0.0) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0.0) <=> QScriptValue(engine, qInf())", + "QScriptValue(0.0) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0.0) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0.0) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0.0) <=> engine->evaluate(\"true\")", + "QScriptValue(0.0) <=> engine->evaluate(\"122\")", + "QScriptValue(0.0) <=> engine->evaluate(\"124\")", + "QScriptValue(0.0) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0.0) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0.0) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0.0) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0.0) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0.0) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0.0) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0.0) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0.0) <=> engine->newVariant(QVariant(123))", + "QScriptValue(123.0) <=> QScriptValue(uint(124))", + "QScriptValue(123.0) <=> QScriptValue(0x43211234)", + "QScriptValue(123.0) <=> QScriptValue(0x10000)", + "QScriptValue(123.0) <=> QScriptValue(0x10001)", + "QScriptValue(123.0) <=> QScriptValue(qInf())", + "QScriptValue(123.0) <=> QScriptValue(\"Infinity\")", + "QScriptValue(123.0) <=> QScriptValue(0, uint(124))", + "QScriptValue(123.0) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(123.0) <=> QScriptValue(0, 0x10000)", + "QScriptValue(123.0) <=> QScriptValue(0, 0x10001)", + "QScriptValue(123.0) <=> QScriptValue(0, qInf())", + "QScriptValue(123.0) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(123.0) <=> QScriptValue(engine, uint(124))", + "QScriptValue(123.0) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(123.0) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(123.0) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(123.0) <=> QScriptValue(engine, qInf())", + "QScriptValue(123.0) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(123.0) <=> engine->evaluate(\"124\")", + "QScriptValue(123.0) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(123.0) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(123.0) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(123.0) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(6.37e-8) <=> QScriptValue(true)", + "QScriptValue(6.37e-8) <=> QScriptValue(int(122))", + "QScriptValue(6.37e-8) <=> QScriptValue(uint(124))", + "QScriptValue(6.37e-8) <=> QScriptValue(123.0)", + "QScriptValue(6.37e-8) <=> QScriptValue(0x43211234)", + "QScriptValue(6.37e-8) <=> QScriptValue(0x10000)", + "QScriptValue(6.37e-8) <=> QScriptValue(0x10001)", + "QScriptValue(6.37e-8) <=> QScriptValue(qInf())", + "QScriptValue(6.37e-8) <=> QScriptValue(\"Infinity\")", + "QScriptValue(6.37e-8) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(6.37e-8) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(6.37e-8) <=> QScriptValue(0, true)", + "QScriptValue(6.37e-8) <=> QScriptValue(0, int(122))", + "QScriptValue(6.37e-8) <=> QScriptValue(0, uint(124))", + "QScriptValue(6.37e-8) <=> QScriptValue(0, 123.0)", + "QScriptValue(6.37e-8) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(6.37e-8) <=> QScriptValue(0, 0x10000)", + "QScriptValue(6.37e-8) <=> QScriptValue(0, 0x10001)", + "QScriptValue(6.37e-8) <=> QScriptValue(0, qInf())", + "QScriptValue(6.37e-8) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(6.37e-8) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, true)", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, int(122))", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, uint(124))", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, 123.0)", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, qInf())", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"true\")", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"122\")", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"124\")", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"123.0\")", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"'123'\")", + "QScriptValue(6.37e-8) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(6.37e-8) <=> engine->newVariant(QVariant(123))", + "QScriptValue(-6.37e-8) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(-6.37e-8) <=> QScriptValue(true)", + "QScriptValue(-6.37e-8) <=> QScriptValue(false)", + "QScriptValue(-6.37e-8) <=> QScriptValue(int(122))", + "QScriptValue(-6.37e-8) <=> QScriptValue(uint(124))", + "QScriptValue(-6.37e-8) <=> QScriptValue(0)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0.0)", + "QScriptValue(-6.37e-8) <=> QScriptValue(123.0)", + "QScriptValue(-6.37e-8) <=> QScriptValue(6.37e-8)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0x43211234)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0x10000)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0x10001)", + "QScriptValue(-6.37e-8) <=> QScriptValue(qInf())", + "QScriptValue(-6.37e-8) <=> QScriptValue(\"Infinity\")", + "QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"\"))", + "QScriptValue(-6.37e-8) <=> QScriptValue(QString())", + "QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, true)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, false)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, int(122))", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, uint(124))", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0.0)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, 123.0)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x10000)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x10001)", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, qInf())", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString())", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, true)", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, false)", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, int(122))", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, uint(124))", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0)", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0.0)", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 123.0)", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, qInf())", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString())", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"[]\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"null\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"true\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"false\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"122\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"124\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0.0\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"123.0\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"''\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"'0'\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"'123'\")", + "QScriptValue(-6.37e-8) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(-6.37e-8) <=> engine->nullValue()", + "QScriptValue(-6.37e-8) <=> engine->newArray()", + "QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(123))", + "QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(false))", + "QScriptValue(-6.37e-8) <=> engine->newQObject(0)", + "QScriptValue(0x43211234) <=> QScriptValue(qInf())", + "QScriptValue(0x43211234) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0x43211234) <=> QScriptValue(0, qInf())", + "QScriptValue(0x43211234) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0x43211234) <=> QScriptValue(engine, qInf())", + "QScriptValue(0x43211234) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0x43211234) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0x10000) <=> QScriptValue(0x43211234)", + "QScriptValue(0x10000) <=> QScriptValue(0x10001)", + "QScriptValue(0x10000) <=> QScriptValue(qInf())", + "QScriptValue(0x10000) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0x10000) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0x10000) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0x10000) <=> QScriptValue(0, qInf())", + "QScriptValue(0x10000) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0x10000) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0x10000) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0x10000) <=> QScriptValue(engine, qInf())", + "QScriptValue(0x10000) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0x10000) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0x10000) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0x10000) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0x10001) <=> QScriptValue(0x43211234)", + "QScriptValue(0x10001) <=> QScriptValue(qInf())", + "QScriptValue(0x10001) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0x10001) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0x10001) <=> QScriptValue(0, qInf())", + "QScriptValue(0x10001) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0x10001) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0x10001) <=> QScriptValue(engine, qInf())", + "QScriptValue(0x10001) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0x10001) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0x10001) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(-qInf()) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(-qInf()) <=> QScriptValue(true)", + "QScriptValue(-qInf()) <=> QScriptValue(false)", + "QScriptValue(-qInf()) <=> QScriptValue(int(122))", + "QScriptValue(-qInf()) <=> QScriptValue(uint(124))", + "QScriptValue(-qInf()) <=> QScriptValue(0)", + "QScriptValue(-qInf()) <=> QScriptValue(0.0)", + "QScriptValue(-qInf()) <=> QScriptValue(123.0)", + "QScriptValue(-qInf()) <=> QScriptValue(6.37e-8)", + "QScriptValue(-qInf()) <=> QScriptValue(-6.37e-8)", + "QScriptValue(-qInf()) <=> QScriptValue(0x43211234)", + "QScriptValue(-qInf()) <=> QScriptValue(0x10000)", + "QScriptValue(-qInf()) <=> QScriptValue(0x10001)", + "QScriptValue(-qInf()) <=> QScriptValue(qInf())", + "QScriptValue(-qInf()) <=> QScriptValue(\"Infinity\")", + "QScriptValue(-qInf()) <=> QScriptValue(QString(\"\"))", + "QScriptValue(-qInf()) <=> QScriptValue(QString())", + "QScriptValue(-qInf()) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(-qInf()) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(-qInf()) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(-qInf()) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(-qInf()) <=> QScriptValue(0, true)", + "QScriptValue(-qInf()) <=> QScriptValue(0, false)", + "QScriptValue(-qInf()) <=> QScriptValue(0, int(122))", + "QScriptValue(-qInf()) <=> QScriptValue(0, uint(124))", + "QScriptValue(-qInf()) <=> QScriptValue(0, 0)", + "QScriptValue(-qInf()) <=> QScriptValue(0, 0.0)", + "QScriptValue(-qInf()) <=> QScriptValue(0, 123.0)", + "QScriptValue(-qInf()) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(-qInf()) <=> QScriptValue(0, -6.37e-8)", + "QScriptValue(-qInf()) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(-qInf()) <=> QScriptValue(0, 0x10000)", + "QScriptValue(-qInf()) <=> QScriptValue(0, 0x10001)", + "QScriptValue(-qInf()) <=> QScriptValue(0, qInf())", + "QScriptValue(-qInf()) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(-qInf()) <=> QScriptValue(0, QString())", + "QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(-qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(-qInf()) <=> QScriptValue(engine, true)", + "QScriptValue(-qInf()) <=> QScriptValue(engine, false)", + "QScriptValue(-qInf()) <=> QScriptValue(engine, int(122))", + "QScriptValue(-qInf()) <=> QScriptValue(engine, uint(124))", + "QScriptValue(-qInf()) <=> QScriptValue(engine, 0)", + "QScriptValue(-qInf()) <=> QScriptValue(engine, 0.0)", + "QScriptValue(-qInf()) <=> QScriptValue(engine, 123.0)", + "QScriptValue(-qInf()) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(-qInf()) <=> QScriptValue(engine, -6.37e-8)", + "QScriptValue(-qInf()) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(-qInf()) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(-qInf()) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(-qInf()) <=> QScriptValue(engine, qInf())", + "QScriptValue(-qInf()) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(-qInf()) <=> QScriptValue(engine, QString())", + "QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(-qInf()) <=> engine->evaluate(\"[]\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"null\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"true\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"false\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"122\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"124\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"0\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"0.0\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"123.0\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"-6.37e-8\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"''\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"'0'\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"'123'\")", + "QScriptValue(-qInf()) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(-qInf()) <=> engine->nullValue()", + "QScriptValue(-qInf()) <=> engine->newArray()", + "QScriptValue(-qInf()) <=> engine->newVariant(QVariant(123))", + "QScriptValue(-qInf()) <=> engine->newVariant(QVariant(false))", + "QScriptValue(-qInf()) <=> engine->newQObject(0)", + "QScriptValue(\"NaN\") <=> QScriptValue(\"ciao\")", + "QScriptValue(\"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"NaN\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(\"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"NaN\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(\"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"Object\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"Array\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"Number\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"Function\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"new Object()\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"Undefined\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"Null\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"True\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"False\")", + "QScriptValue(\"NaN\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(\"NaN\") <=> engine->newObject()", + "QScriptValue(\"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(\"NaN\") <=> engine->newQObject(engine)", + "QScriptValue(\"Infinity\") <=> QScriptValue(\"NaN\")", + "QScriptValue(\"Infinity\") <=> QScriptValue(\"ciao\")", + "QScriptValue(\"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"Infinity\") <=> QScriptValue(0, \"NaN\")", + "QScriptValue(\"Infinity\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(\"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(\"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Object\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Array\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Number\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Function\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"new Object()\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Undefined\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"Null\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"True\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"False\")", + "QScriptValue(\"Infinity\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(\"Infinity\") <=> engine->newObject()", + "QScriptValue(\"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(\"Infinity\") <=> engine->newQObject(engine)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(true)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(false)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(int(122))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(uint(124))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0.0)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(123.0)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(6.37e-8)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(-6.37e-8)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0x43211234)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0x10000)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0x10001)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(qInf())", + "QScriptValue(\"-Infinity\") <=> QScriptValue(\"NaN\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(\"Infinity\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(\"ciao\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"0\"))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"123\"))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, true)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, false)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, int(122))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, uint(124))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0.0)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 123.0)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x43211234)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x10000)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x10001)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, qInf())", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"NaN\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, true)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, false)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, int(122))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, uint(124))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0.0)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 123.0)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x10000)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x10001)", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, qInf())", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Object\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Array\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Number\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Function\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"/foo/\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Object()\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Error()\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Undefined\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Null\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"True\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"False\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"null\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"true\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"false\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"122\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"124\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0.0\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"123.0\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10000\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10001\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Infinity\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'0'\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'123'\")", + "QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(\"-Infinity\") <=> engine->nullValue()", + "QScriptValue(\"-Infinity\") <=> engine->newObject()", + "QScriptValue(\"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(123))", + "QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(false))", + "QScriptValue(\"-Infinity\") <=> engine->newQObject(0)", + "QScriptValue(\"-Infinity\") <=> engine->newQObject(engine)", + "QScriptValue(\"ciao\") <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(\"ciao\") <=> engine->evaluate(\"Object\")", + "QScriptValue(\"ciao\") <=> engine->evaluate(\"Array\")", + "QScriptValue(\"ciao\") <=> engine->evaluate(\"Number\")", + "QScriptValue(\"ciao\") <=> engine->evaluate(\"Function\")", + "QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(true)", + "QScriptValue(QString(\"\")) <=> QScriptValue(int(122))", + "QScriptValue(QString(\"\")) <=> QScriptValue(uint(124))", + "QScriptValue(QString(\"\")) <=> QScriptValue(123.0)", + "QScriptValue(QString(\"\")) <=> QScriptValue(6.37e-8)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0x43211234)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0x10000)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0x10001)", + "QScriptValue(QString(\"\")) <=> QScriptValue(qInf())", + "QScriptValue(QString(\"\")) <=> QScriptValue(\"NaN\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(\"Infinity\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(\"-Infinity\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, true)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, int(122))", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, uint(124))", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, 123.0)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x10000)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x10001)", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, qInf())", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, true)", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, int(122))", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, uint(124))", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 123.0)", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, qInf())", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"/foo/\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Null\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"True\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"False\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"true\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"122\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"124\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"123.0\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"'0'\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(QString(\"\")) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(QString(\"\")) <=> engine->newObject()", + "QScriptValue(QString(\"\")) <=> engine->newArray(10)", + "QScriptValue(QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(123))", + "QScriptValue(QString(\"\")) <=> engine->newQObject(engine)", + "QScriptValue(QString()) <=> QScriptValue(true)", + "QScriptValue(QString()) <=> QScriptValue(int(122))", + "QScriptValue(QString()) <=> QScriptValue(uint(124))", + "QScriptValue(QString()) <=> QScriptValue(123.0)", + "QScriptValue(QString()) <=> QScriptValue(6.37e-8)", + "QScriptValue(QString()) <=> QScriptValue(0x43211234)", + "QScriptValue(QString()) <=> QScriptValue(0x10000)", + "QScriptValue(QString()) <=> QScriptValue(0x10001)", + "QScriptValue(QString()) <=> QScriptValue(qInf())", + "QScriptValue(QString()) <=> QScriptValue(\"NaN\")", + "QScriptValue(QString()) <=> QScriptValue(\"Infinity\")", + "QScriptValue(QString()) <=> QScriptValue(\"-Infinity\")", + "QScriptValue(QString()) <=> QScriptValue(\"ciao\")", + "QScriptValue(QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString()) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(QString()) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(QString()) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(QString()) <=> QScriptValue(0, true)", + "QScriptValue(QString()) <=> QScriptValue(0, int(122))", + "QScriptValue(QString()) <=> QScriptValue(0, uint(124))", + "QScriptValue(QString()) <=> QScriptValue(0, 123.0)", + "QScriptValue(QString()) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(QString()) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(QString()) <=> QScriptValue(0, 0x10000)", + "QScriptValue(QString()) <=> QScriptValue(0, 0x10001)", + "QScriptValue(QString()) <=> QScriptValue(0, qInf())", + "QScriptValue(QString()) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(QString()) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(QString()) <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(QString()) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString()) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(QString()) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(QString()) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(QString()) <=> QScriptValue(engine, true)", + "QScriptValue(QString()) <=> QScriptValue(engine, int(122))", + "QScriptValue(QString()) <=> QScriptValue(engine, uint(124))", + "QScriptValue(QString()) <=> QScriptValue(engine, 123.0)", + "QScriptValue(QString()) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(QString()) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(QString()) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(QString()) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(QString()) <=> QScriptValue(engine, qInf())", + "QScriptValue(QString()) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(QString()) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(QString()) <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(QString()) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(QString()) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(QString()) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(QString()) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(QString()) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(QString()) <=> engine->evaluate(\"Object\")", + "QScriptValue(QString()) <=> engine->evaluate(\"Array\")", + "QScriptValue(QString()) <=> engine->evaluate(\"Number\")", + "QScriptValue(QString()) <=> engine->evaluate(\"Function\")", + "QScriptValue(QString()) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(QString()) <=> engine->evaluate(\"/foo/\")", + "QScriptValue(QString()) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(QString()) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(QString()) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(QString()) <=> engine->evaluate(\"Null\")", + "QScriptValue(QString()) <=> engine->evaluate(\"True\")", + "QScriptValue(QString()) <=> engine->evaluate(\"False\")", + "QScriptValue(QString()) <=> engine->evaluate(\"true\")", + "QScriptValue(QString()) <=> engine->evaluate(\"122\")", + "QScriptValue(QString()) <=> engine->evaluate(\"124\")", + "QScriptValue(QString()) <=> engine->evaluate(\"123.0\")", + "QScriptValue(QString()) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(QString()) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(QString()) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(QString()) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(QString()) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(QString()) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(QString()) <=> engine->evaluate(\"'0'\")", + "QScriptValue(QString()) <=> engine->evaluate(\"'123'\")", + "QScriptValue(QString()) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(QString()) <=> engine->newObject()", + "QScriptValue(QString()) <=> engine->newArray(10)", + "QScriptValue(QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(QString()) <=> engine->newVariant(QVariant(123))", + "QScriptValue(QString()) <=> engine->newQObject(engine)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(true)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(int(122))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(uint(124))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(123.0)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(6.37e-8)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0x43211234)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0x10000)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0x10001)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(qInf())", + "QScriptValue(QString(\"0\")) <=> QScriptValue(\"NaN\")", + "QScriptValue(QString(\"0\")) <=> QScriptValue(\"Infinity\")", + "QScriptValue(QString(\"0\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, true)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, int(122))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, uint(124))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 123.0)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x10000)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x10001)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, qInf())", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, true)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, int(122))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, uint(124))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 123.0)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, qInf())", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Null\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"True\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"False\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"true\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"122\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"124\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"123.0\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(QString(\"0\")) <=> engine->newObject()", + "QScriptValue(QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(123))", + "QScriptValue(QString(\"0\")) <=> engine->newQObject(engine)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(uint(124))", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0x43211234)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0x10000)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0x10001)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(qInf())", + "QScriptValue(QString(\"123\")) <=> QScriptValue(\"NaN\")", + "QScriptValue(QString(\"123\")) <=> QScriptValue(\"Infinity\")", + "QScriptValue(QString(\"123\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0, uint(124))", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x10000)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x10001)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0, qInf())", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, uint(124))", + "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, qInf())", + "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Null\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"True\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"False\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"124\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(QString(\"123\")) <=> engine->newObject()", + "QScriptValue(QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(QString(\"123\")) <=> engine->newQObject(engine)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(int(122))", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(uint(124))", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(123.0)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x43211234)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x10000)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x10001)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(qInf())", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"NaN\")", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"Infinity\")", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, int(122))", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, uint(124))", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 123.0)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x10000)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x10001)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, qInf())", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, int(122))", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, uint(124))", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 123.0)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, qInf())", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Null\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"True\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"False\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"122\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"124\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"123.0\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(QString(\"12.4\")) <=> engine->newObject()", + "QScriptValue(QString(\"12.4\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(QString(\"12.4\")) <=> engine->newVariant(QVariant(123))", + "QScriptValue(QString(\"12.4\")) <=> engine->newQObject(engine)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(true)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(int(122))", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(uint(124))", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(123.0)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(6.37e-8)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x43211234)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x10000)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x10001)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(qInf())", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, true)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, int(122))", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, qInf())", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, true)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"true\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"122\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"124\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, true) <=> QScriptValue(int(122))", + "QScriptValue(0, true) <=> QScriptValue(uint(124))", + "QScriptValue(0, true) <=> QScriptValue(123.0)", + "QScriptValue(0, true) <=> QScriptValue(0x43211234)", + "QScriptValue(0, true) <=> QScriptValue(0x10000)", + "QScriptValue(0, true) <=> QScriptValue(0x10001)", + "QScriptValue(0, true) <=> QScriptValue(qInf())", + "QScriptValue(0, true) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, true) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, true) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, true) <=> QScriptValue(0, int(122))", + "QScriptValue(0, true) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, true) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, true) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, true) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, true) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, true) <=> QScriptValue(0, qInf())", + "QScriptValue(0, true) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, true) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, true) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0, true) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, true) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, true) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, true) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, true) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, true) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, true) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, true) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, true) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, true) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, true) <=> engine->evaluate(\"122\")", + "QScriptValue(0, true) <=> engine->evaluate(\"124\")", + "QScriptValue(0, true) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, true) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, true) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, true) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, true) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, true) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, true) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, true) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, false) <=> QScriptValue(true)", + "QScriptValue(0, false) <=> QScriptValue(int(122))", + "QScriptValue(0, false) <=> QScriptValue(uint(124))", + "QScriptValue(0, false) <=> QScriptValue(123.0)", + "QScriptValue(0, false) <=> QScriptValue(6.37e-8)", + "QScriptValue(0, false) <=> QScriptValue(0x43211234)", + "QScriptValue(0, false) <=> QScriptValue(0x10000)", + "QScriptValue(0, false) <=> QScriptValue(0x10001)", + "QScriptValue(0, false) <=> QScriptValue(qInf())", + "QScriptValue(0, false) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, false) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, false) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, false) <=> QScriptValue(0, true)", + "QScriptValue(0, false) <=> QScriptValue(0, int(122))", + "QScriptValue(0, false) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, false) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, false) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0, false) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, false) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, false) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, false) <=> QScriptValue(0, qInf())", + "QScriptValue(0, false) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, false) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, false) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0, false) <=> QScriptValue(engine, true)", + "QScriptValue(0, false) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, false) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, false) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, false) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0, false) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, false) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, false) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, false) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, false) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, false) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, false) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, false) <=> engine->evaluate(\"true\")", + "QScriptValue(0, false) <=> engine->evaluate(\"122\")", + "QScriptValue(0, false) <=> engine->evaluate(\"124\")", + "QScriptValue(0, false) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, false) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0, false) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, false) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, false) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, false) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, false) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, false) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, false) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, int(122)) <=> QScriptValue(uint(124))", + "QScriptValue(0, int(122)) <=> QScriptValue(123.0)", + "QScriptValue(0, int(122)) <=> QScriptValue(0x43211234)", + "QScriptValue(0, int(122)) <=> QScriptValue(0x10000)", + "QScriptValue(0, int(122)) <=> QScriptValue(0x10001)", + "QScriptValue(0, int(122)) <=> QScriptValue(qInf())", + "QScriptValue(0, int(122)) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, int(122)) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, int(122)) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, int(122)) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, int(122)) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, int(122)) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, int(122)) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, int(122)) <=> QScriptValue(0, qInf())", + "QScriptValue(0, int(122)) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, int(122)) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, int(122)) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, int(122)) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, int(122)) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, int(122)) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, int(122)) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, int(122)) <=> engine->evaluate(\"124\")", + "QScriptValue(0, int(122)) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, int(122)) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, int(122)) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, int(122)) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, int(122)) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, uint(124)) <=> QScriptValue(0x43211234)", + "QScriptValue(0, uint(124)) <=> QScriptValue(0x10000)", + "QScriptValue(0, uint(124)) <=> QScriptValue(0x10001)", + "QScriptValue(0, uint(124)) <=> QScriptValue(qInf())", + "QScriptValue(0, uint(124)) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, uint(124)) <=> QScriptValue(0, qInf())", + "QScriptValue(0, uint(124)) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, uint(124)) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, uint(124)) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, uint(124)) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, 0) <=> QScriptValue(true)", + "QScriptValue(0, 0) <=> QScriptValue(int(122))", + "QScriptValue(0, 0) <=> QScriptValue(uint(124))", + "QScriptValue(0, 0) <=> QScriptValue(123.0)", + "QScriptValue(0, 0) <=> QScriptValue(6.37e-8)", + "QScriptValue(0, 0) <=> QScriptValue(0x43211234)", + "QScriptValue(0, 0) <=> QScriptValue(0x10000)", + "QScriptValue(0, 0) <=> QScriptValue(0x10001)", + "QScriptValue(0, 0) <=> QScriptValue(qInf())", + "QScriptValue(0, 0) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, 0) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, 0) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, 0) <=> QScriptValue(0, true)", + "QScriptValue(0, 0) <=> QScriptValue(0, int(122))", + "QScriptValue(0, 0) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, 0) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, 0) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0, 0) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, 0) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, 0) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, 0) <=> QScriptValue(0, qInf())", + "QScriptValue(0, 0) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, 0) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, 0) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0, 0) <=> QScriptValue(engine, true)", + "QScriptValue(0, 0) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, 0) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, 0) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, 0) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0, 0) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, 0) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, 0) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, 0) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, 0) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"true\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"122\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"124\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, 0) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, 0) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, 0.0) <=> QScriptValue(true)", + "QScriptValue(0, 0.0) <=> QScriptValue(int(122))", + "QScriptValue(0, 0.0) <=> QScriptValue(uint(124))", + "QScriptValue(0, 0.0) <=> QScriptValue(123.0)", + "QScriptValue(0, 0.0) <=> QScriptValue(6.37e-8)", + "QScriptValue(0, 0.0) <=> QScriptValue(0x43211234)", + "QScriptValue(0, 0.0) <=> QScriptValue(0x10000)", + "QScriptValue(0, 0.0) <=> QScriptValue(0x10001)", + "QScriptValue(0, 0.0) <=> QScriptValue(qInf())", + "QScriptValue(0, 0.0) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, 0.0) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, 0.0) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, 0.0) <=> QScriptValue(0, true)", + "QScriptValue(0, 0.0) <=> QScriptValue(0, int(122))", + "QScriptValue(0, 0.0) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, 0.0) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, 0.0) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0, 0.0) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, 0.0) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, 0.0) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, 0.0) <=> QScriptValue(0, qInf())", + "QScriptValue(0, 0.0) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, true)", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"true\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"122\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"124\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, 0.0) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, 123.0) <=> QScriptValue(uint(124))", + "QScriptValue(0, 123.0) <=> QScriptValue(0x43211234)", + "QScriptValue(0, 123.0) <=> QScriptValue(0x10000)", + "QScriptValue(0, 123.0) <=> QScriptValue(0x10001)", + "QScriptValue(0, 123.0) <=> QScriptValue(qInf())", + "QScriptValue(0, 123.0) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, 123.0) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, 123.0) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, 123.0) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, 123.0) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, 123.0) <=> QScriptValue(0, qInf())", + "QScriptValue(0, 123.0) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, 123.0) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, 123.0) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, 123.0) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, 123.0) <=> engine->evaluate(\"124\")", + "QScriptValue(0, 123.0) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, 123.0) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(true)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(int(122))", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(uint(124))", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(123.0)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0x43211234)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0x10000)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0x10001)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(qInf())", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, true)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, int(122))", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, qInf())", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, true)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"true\")", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"122\")", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"124\")", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, 6.37e-8) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(true)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(false)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(int(122))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(uint(124))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0.0)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(123.0)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(6.37e-8)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0x43211234)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0x10000)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0x10001)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(qInf())", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"\"))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString())", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, true)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, false)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, int(122))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0.0)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, qInf())", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString())", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, true)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, false)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString())", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"[]\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"null\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"true\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"false\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"122\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"124\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"''\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'0'\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, -6.37e-8) <=> engine->nullValue()", + "QScriptValue(0, -6.37e-8) <=> engine->newArray()", + "QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(false))", + "QScriptValue(0, -6.37e-8) <=> engine->newQObject(0)", + "QScriptValue(0, 0x43211234) <=> QScriptValue(qInf())", + "QScriptValue(0, 0x43211234) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, 0x43211234) <=> QScriptValue(0, qInf())", + "QScriptValue(0, 0x43211234) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, 0x43211234) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, 0x43211234) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, 0x43211234) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, 0x10000) <=> QScriptValue(0x43211234)", + "QScriptValue(0, 0x10000) <=> QScriptValue(0x10001)", + "QScriptValue(0, 0x10000) <=> QScriptValue(qInf())", + "QScriptValue(0, 0x10000) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, 0x10000) <=> QScriptValue(0, qInf())", + "QScriptValue(0, 0x10000) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, 0x10000) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, 0x10000) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, 0x10000) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, 0x10001) <=> QScriptValue(0x43211234)", + "QScriptValue(0, 0x10001) <=> QScriptValue(qInf())", + "QScriptValue(0, 0x10001) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, 0x10001) <=> QScriptValue(0, qInf())", + "QScriptValue(0, 0x10001) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, 0x10001) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, 0x10001) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, 0x10001) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, -qInf()) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(0, -qInf()) <=> QScriptValue(true)", + "QScriptValue(0, -qInf()) <=> QScriptValue(false)", + "QScriptValue(0, -qInf()) <=> QScriptValue(int(122))", + "QScriptValue(0, -qInf()) <=> QScriptValue(uint(124))", + "QScriptValue(0, -qInf()) <=> QScriptValue(0)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0.0)", + "QScriptValue(0, -qInf()) <=> QScriptValue(123.0)", + "QScriptValue(0, -qInf()) <=> QScriptValue(6.37e-8)", + "QScriptValue(0, -qInf()) <=> QScriptValue(-6.37e-8)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0x43211234)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0x10000)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0x10001)", + "QScriptValue(0, -qInf()) <=> QScriptValue(qInf())", + "QScriptValue(0, -qInf()) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"\"))", + "QScriptValue(0, -qInf()) <=> QScriptValue(QString())", + "QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, true)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, false)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, int(122))", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0.0)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, -6.37e-8)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, qInf())", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString())", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, true)", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, false)", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0)", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0.0)", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, -6.37e-8)", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString())", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"[]\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"null\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"true\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"false\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"122\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"124\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0.0\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"-6.37e-8\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"''\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"'0'\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, -qInf()) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, -qInf()) <=> engine->nullValue()", + "QScriptValue(0, -qInf()) <=> engine->newArray()", + "QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(false))", + "QScriptValue(0, -qInf()) <=> engine->newQObject(0)", + "QScriptValue(0, \"NaN\") <=> QScriptValue(\"ciao\")", + "QScriptValue(0, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(0, \"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(0, \"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Object\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Array\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Number\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Function\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new Object()\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Undefined\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Null\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"True\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"False\")", + "QScriptValue(0, \"NaN\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(0, \"NaN\") <=> engine->newObject()", + "QScriptValue(0, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(0, \"NaN\") <=> engine->newQObject(engine)", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(\"NaN\")", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(\"ciao\")", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"NaN\")", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Object\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Array\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Number\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Function\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new Object()\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Undefined\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Null\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"True\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"False\")", + "QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(0, \"Infinity\") <=> engine->newObject()", + "QScriptValue(0, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(0, \"Infinity\") <=> engine->newQObject(engine)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(true)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(false)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(int(122))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(uint(124))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0.0)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(123.0)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(6.37e-8)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(-6.37e-8)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x43211234)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x10000)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x10001)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(qInf())", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"NaN\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"ciao\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"0\"))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, true)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, false)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, int(122))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, uint(124))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0.0)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 123.0)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -6.37e-8)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, qInf())", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"NaN\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, true)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, false)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, int(122))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0.0)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -6.37e-8)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, qInf())", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Object\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Array\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Number\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Function\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"/foo/\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Object()\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Error()\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Undefined\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Null\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"True\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"False\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"null\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"true\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"false\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"122\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"124\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0.0\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'0'\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, \"-Infinity\") <=> engine->nullValue()", + "QScriptValue(0, \"-Infinity\") <=> engine->newObject()", + "QScriptValue(0, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(false))", + "QScriptValue(0, \"-Infinity\") <=> engine->newQObject(0)", + "QScriptValue(0, \"-Infinity\") <=> engine->newQObject(engine)", + "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Object\")", + "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Array\")", + "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Number\")", + "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function\")", + "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(true)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(int(122))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(uint(124))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(123.0)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(6.37e-8)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0x43211234)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0x10000)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0x10001)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(qInf())", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(\"NaN\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(\"-Infinity\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, true)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, int(122))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, qInf())", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, true)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"/foo/\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Null\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"True\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"False\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"true\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"122\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"124\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'0'\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, QString(\"\")) <=> engine->newObject()", + "QScriptValue(0, QString(\"\")) <=> engine->newArray(10)", + "QScriptValue(0, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, QString(\"\")) <=> engine->newQObject(engine)", + "QScriptValue(0, QString()) <=> QScriptValue(true)", + "QScriptValue(0, QString()) <=> QScriptValue(int(122))", + "QScriptValue(0, QString()) <=> QScriptValue(uint(124))", + "QScriptValue(0, QString()) <=> QScriptValue(123.0)", + "QScriptValue(0, QString()) <=> QScriptValue(6.37e-8)", + "QScriptValue(0, QString()) <=> QScriptValue(0x43211234)", + "QScriptValue(0, QString()) <=> QScriptValue(0x10000)", + "QScriptValue(0, QString()) <=> QScriptValue(0x10001)", + "QScriptValue(0, QString()) <=> QScriptValue(qInf())", + "QScriptValue(0, QString()) <=> QScriptValue(\"NaN\")", + "QScriptValue(0, QString()) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, QString()) <=> QScriptValue(\"-Infinity\")", + "QScriptValue(0, QString()) <=> QScriptValue(\"ciao\")", + "QScriptValue(0, QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString()) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(0, QString()) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, QString()) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, QString()) <=> QScriptValue(0, true)", + "QScriptValue(0, QString()) <=> QScriptValue(0, int(122))", + "QScriptValue(0, QString()) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, QString()) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, QString()) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0, QString()) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, QString()) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, QString()) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, QString()) <=> QScriptValue(0, qInf())", + "QScriptValue(0, QString()) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(0, QString()) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, QString()) <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(0, QString()) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(0, QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0, QString()) <=> QScriptValue(engine, true)", + "QScriptValue(0, QString()) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, QString()) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, QString()) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, QString()) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0, QString()) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, QString()) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, QString()) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, QString()) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, QString()) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(0, QString()) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, QString()) <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(0, QString()) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(0, QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0, QString()) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"Object\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"Array\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"Number\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"Function\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"/foo/\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"Null\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"True\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"False\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"true\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"122\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"124\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"'0'\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, QString()) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, QString()) <=> engine->newObject()", + "QScriptValue(0, QString()) <=> engine->newArray(10)", + "QScriptValue(0, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(0, QString()) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, QString()) <=> engine->newQObject(engine)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(true)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(int(122))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(uint(124))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(123.0)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(6.37e-8)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x43211234)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x10000)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x10001)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(qInf())", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"NaN\")", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, true)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, int(122))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, qInf())", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, true)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Null\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"True\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"False\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"true\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"122\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"124\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, QString(\"0\")) <=> engine->newObject()", + "QScriptValue(0, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, QString(\"0\")) <=> engine->newQObject(engine)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(uint(124))", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x43211234)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10000)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10001)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(qInf())", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"NaN\")", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, qInf())", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Null\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"True\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"False\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"124\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(0, QString(\"123\")) <=> engine->newObject()", + "QScriptValue(0, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(0, QString(\"123\")) <=> engine->newQObject(engine)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(int(122))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(uint(124))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(123.0)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x43211234)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x10000)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x10001)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(qInf())", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"NaN\")", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"Infinity\")", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, int(122))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, uint(124))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 123.0)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x10000)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x10001)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, qInf())", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, int(122))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, uint(124))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 123.0)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, qInf())", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Null\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"True\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"False\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"122\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"124\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"123.0\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(0, QString(\"12.3\")) <=> engine->newObject()", + "QScriptValue(0, QString(\"12.3\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(0, QString(\"12.3\")) <=> engine->newVariant(QVariant(123))", + "QScriptValue(0, QString(\"12.3\")) <=> engine->newQObject(engine)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(true)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(int(122))", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(uint(124))", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(123.0)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(6.37e-8)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x10000)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x10001)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(qInf())", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, true)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, true)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"true\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, true) <=> QScriptValue(int(122))", + "QScriptValue(engine, true) <=> QScriptValue(uint(124))", + "QScriptValue(engine, true) <=> QScriptValue(123.0)", + "QScriptValue(engine, true) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, true) <=> QScriptValue(0x10000)", + "QScriptValue(engine, true) <=> QScriptValue(0x10001)", + "QScriptValue(engine, true) <=> QScriptValue(qInf())", + "QScriptValue(engine, true) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, true) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, true) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, true) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, true) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, true) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, true) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, true) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, true) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, true) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, true) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, true) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, true) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, true) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, true) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, true) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, true) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, true) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, true) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, true) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, true) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(engine, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, true) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, true) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, true) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, true) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, true) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, true) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, true) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, true) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, true) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, true) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, false) <=> QScriptValue(true)", + "QScriptValue(engine, false) <=> QScriptValue(int(122))", + "QScriptValue(engine, false) <=> QScriptValue(uint(124))", + "QScriptValue(engine, false) <=> QScriptValue(123.0)", + "QScriptValue(engine, false) <=> QScriptValue(6.37e-8)", + "QScriptValue(engine, false) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, false) <=> QScriptValue(0x10000)", + "QScriptValue(engine, false) <=> QScriptValue(0x10001)", + "QScriptValue(engine, false) <=> QScriptValue(qInf())", + "QScriptValue(engine, false) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, false) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, false) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, false) <=> QScriptValue(0, true)", + "QScriptValue(engine, false) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, false) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, false) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, false) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(engine, false) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, false) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, false) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, false) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, false) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, false) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, false) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, false) <=> QScriptValue(engine, true)", + "QScriptValue(engine, false) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, false) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, false) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, false) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(engine, false) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, false) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, false) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, false) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, false) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(engine, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"true\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, false) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, false) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, int(122)) <=> QScriptValue(uint(124))", + "QScriptValue(engine, int(122)) <=> QScriptValue(123.0)", + "QScriptValue(engine, int(122)) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, int(122)) <=> QScriptValue(0x10000)", + "QScriptValue(engine, int(122)) <=> QScriptValue(0x10001)", + "QScriptValue(engine, int(122)) <=> QScriptValue(qInf())", + "QScriptValue(engine, int(122)) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, int(122)) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, int(122)) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, int(122)) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, int(122)) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, int(122)) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, int(122)) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, int(122)) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, int(122)) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, int(122)) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, int(122)) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, int(122)) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, int(122)) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, int(122)) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, int(122)) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, int(122)) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, int(122)) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, uint(124)) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, uint(124)) <=> QScriptValue(0x10000)", + "QScriptValue(engine, uint(124)) <=> QScriptValue(0x10001)", + "QScriptValue(engine, uint(124)) <=> QScriptValue(qInf())", + "QScriptValue(engine, uint(124)) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, uint(124)) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, uint(124)) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, uint(124)) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, uint(124)) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, 0) <=> QScriptValue(true)", + "QScriptValue(engine, 0) <=> QScriptValue(int(122))", + "QScriptValue(engine, 0) <=> QScriptValue(uint(124))", + "QScriptValue(engine, 0) <=> QScriptValue(123.0)", + "QScriptValue(engine, 0) <=> QScriptValue(6.37e-8)", + "QScriptValue(engine, 0) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, 0) <=> QScriptValue(0x10000)", + "QScriptValue(engine, 0) <=> QScriptValue(0x10001)", + "QScriptValue(engine, 0) <=> QScriptValue(qInf())", + "QScriptValue(engine, 0) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, 0) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, 0) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, 0) <=> QScriptValue(0, true)", + "QScriptValue(engine, 0) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, 0) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, 0) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, 0) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(engine, 0) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, 0) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, 0) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, 0) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, 0) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, 0) <=> QScriptValue(engine, true)", + "QScriptValue(engine, 0) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, 0) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, 0) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, 0) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(engine, 0) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, 0) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, 0) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, 0) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, 0) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(engine, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"true\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, 0) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, 0) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, 0.0) <=> QScriptValue(true)", + "QScriptValue(engine, 0.0) <=> QScriptValue(int(122))", + "QScriptValue(engine, 0.0) <=> QScriptValue(uint(124))", + "QScriptValue(engine, 0.0) <=> QScriptValue(123.0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(6.37e-8)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0x10000)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0x10001)", + "QScriptValue(engine, 0.0) <=> QScriptValue(qInf())", + "QScriptValue(engine, 0.0) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, true)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, true)", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"true\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, 0.0) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, 123.0) <=> QScriptValue(uint(124))", + "QScriptValue(engine, 123.0) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, 123.0) <=> QScriptValue(0x10000)", + "QScriptValue(engine, 123.0) <=> QScriptValue(0x10001)", + "QScriptValue(engine, 123.0) <=> QScriptValue(qInf())", + "QScriptValue(engine, 123.0) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, 123.0) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, 123.0) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, 123.0) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, 123.0) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, 123.0) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, 123.0) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, 123.0) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, 123.0) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(true)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(int(122))", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(uint(124))", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(123.0)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x10000)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x10001)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(qInf())", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, true)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, true)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"true\")", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, 6.37e-8) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(true)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(false)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(int(122))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(uint(124))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0.0)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(123.0)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(6.37e-8)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x10000)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x10001)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(qInf())", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"\"))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString())", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, true)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, false)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0.0)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString())", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, true)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, false)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0.0)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString())", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"[]\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"null\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"true\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"false\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0.0\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"''\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'0'\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, -6.37e-8) <=> engine->nullValue()", + "QScriptValue(engine, -6.37e-8) <=> engine->newArray()", + "QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(false))", + "QScriptValue(engine, -6.37e-8) <=> engine->newQObject(0)", + "QScriptValue(engine, 0x43211234) <=> QScriptValue(qInf())", + "QScriptValue(engine, 0x43211234) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, 0x43211234) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, 0x43211234) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, 0x10000) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, 0x10000) <=> QScriptValue(0x10001)", + "QScriptValue(engine, 0x10000) <=> QScriptValue(qInf())", + "QScriptValue(engine, 0x10000) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, 0x10000) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, 0x10000) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, 0x10000) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, 0x10000) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, 0x10001) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, 0x10001) <=> QScriptValue(qInf())", + "QScriptValue(engine, 0x10001) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, 0x10001) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, 0x10001) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, 0x10001) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, 0x10001) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, -qInf()) <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(true)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(false)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(int(122))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(uint(124))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0.0)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(123.0)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(6.37e-8)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(-6.37e-8)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0x10000)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0x10001)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(qInf())", + "QScriptValue(engine, -qInf()) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"\"))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(QString())", + "QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, true)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, false)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0.0)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, -6.37e-8)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"\"))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString())", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, true)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, false)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0.0)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -6.37e-8)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"\"))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString())", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"[]\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Array.prototype\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Array()\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"null\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"true\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"false\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0.0\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-6.37e-8\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"''\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'0'\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, -qInf()) <=> engine->nullValue()", + "QScriptValue(engine, -qInf()) <=> engine->newArray()", + "QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(false))", + "QScriptValue(engine, -qInf()) <=> engine->newQObject(0)", + "QScriptValue(engine, \"NaN\") <=> QScriptValue(\"ciao\")", + "QScriptValue(engine, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(engine, \"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Object\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Array\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Number\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Function\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new Object()\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Undefined\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Null\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"True\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"False\")", + "QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(engine, \"NaN\") <=> engine->newObject()", + "QScriptValue(engine, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(engine, \"NaN\") <=> engine->newQObject(engine)", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"NaN\")", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"ciao\")", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"NaN\")", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Object\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Array\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Number\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Function\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new Object()\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Undefined\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Null\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"True\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"False\")", + "QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(engine, \"Infinity\") <=> engine->newObject()", + "QScriptValue(engine, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(engine, \"Infinity\") <=> engine->newQObject(engine)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(true)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(false)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(int(122))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(uint(124))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0.0)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(123.0)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(6.37e-8)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-6.37e-8)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x43211234)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x10000)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x10001)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(qInf())", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"NaN\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"ciao\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"0\"))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, true)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, false)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, int(122))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0.0)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -6.37e-8)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, qInf())", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"NaN\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"ciao\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, true)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, false)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0.0)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -6.37e-8)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Object\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Array\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Number\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Function\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"/foo/\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Object()\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Error()\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Undefined\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Null\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"True\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"False\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"null\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"true\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"false\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"122\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"124\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0.0\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'0'\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, \"-Infinity\") <=> engine->nullValue()", + "QScriptValue(engine, \"-Infinity\") <=> engine->newObject()", + "QScriptValue(engine, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(false))", + "QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(0)", + "QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(engine)", + "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Object\")", + "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Array\")", + "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Number\")", + "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function\")", + "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(true)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(int(122))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(uint(124))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(123.0)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(6.37e-8)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x10000)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x10001)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(qInf())", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"NaN\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"-Infinity\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, true)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, true)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"/foo/\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Null\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"True\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"False\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"true\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'0'\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, QString(\"\")) <=> engine->newObject()", + "QScriptValue(engine, QString(\"\")) <=> engine->newArray(10)", + "QScriptValue(engine, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, QString(\"\")) <=> engine->newQObject(engine)", + "QScriptValue(engine, QString()) <=> QScriptValue(true)", + "QScriptValue(engine, QString()) <=> QScriptValue(int(122))", + "QScriptValue(engine, QString()) <=> QScriptValue(uint(124))", + "QScriptValue(engine, QString()) <=> QScriptValue(123.0)", + "QScriptValue(engine, QString()) <=> QScriptValue(6.37e-8)", + "QScriptValue(engine, QString()) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, QString()) <=> QScriptValue(0x10000)", + "QScriptValue(engine, QString()) <=> QScriptValue(0x10001)", + "QScriptValue(engine, QString()) <=> QScriptValue(qInf())", + "QScriptValue(engine, QString()) <=> QScriptValue(\"NaN\")", + "QScriptValue(engine, QString()) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, QString()) <=> QScriptValue(\"-Infinity\")", + "QScriptValue(engine, QString()) <=> QScriptValue(\"ciao\")", + "QScriptValue(engine, QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"0\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(0, true)", + "QScriptValue(engine, QString()) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, QString()) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, QString()) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, QString()) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(engine, QString()) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, QString()) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, QString()) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, QString()) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, QString()) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(engine, QString()) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, QString()) <=> QScriptValue(0, \"-Infinity\")", + "QScriptValue(engine, QString()) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(engine, QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"0\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, true)", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, \"-Infinity\")", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"0\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"Object\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"Array\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"Number\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"Function\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"/foo/\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"Null\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"True\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"False\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"true\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"'0'\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, QString()) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, QString()) <=> engine->newObject()", + "QScriptValue(engine, QString()) <=> engine->newArray(10)", + "QScriptValue(engine, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, QString()) <=> engine->newQObject(engine)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(true)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(int(122))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(uint(124))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(123.0)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(6.37e-8)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x10000)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x10001)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(qInf())", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"NaN\")", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, true)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 6.37e-8)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, true)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Null\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"True\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"False\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"true\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, QString(\"0\")) <=> engine->newObject()", + "QScriptValue(engine, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, QString(\"0\")) <=> engine->newQObject(engine)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(uint(124))", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10000)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10001)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(qInf())", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"NaN\")", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Null\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"True\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"False\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(engine, QString(\"123\")) <=> engine->newObject()", + "QScriptValue(engine, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(engine, QString(\"123\")) <=> engine->newQObject(engine)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(int(122))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(uint(124))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(123.0)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x43211234)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x10000)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x10001)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(qInf())", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"NaN\")", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"Infinity\")", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"ciao\")", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString(\"123\"))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString(\"12.4\"))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, int(122))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, uint(124))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 123.0)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x43211234)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x10000)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x10001)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, qInf())", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"NaN\")", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"Infinity\")", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"ciao\")", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString(\"123\"))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString(\"12.3\"))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, int(122))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, uint(124))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 123.0)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x43211234)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x10000)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x10001)", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, qInf())", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"NaN\")", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"Infinity\")", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"ciao\")", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"123\"))", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Object.prototype\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Function.prototype\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Error.prototype\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Object\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Array\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Number\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Function\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { return 1; })\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Object()\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Error()\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Undefined\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Null\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"True\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"False\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"122\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"124\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"123.0\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x43211234\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10000\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10001\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Infinity\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'ciao'\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'123'\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'12.4'\")", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->newObject()", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->newVariant(QVariant(123))", + "QScriptValue(engine, QString(\"1.23\")) <=> engine->newQObject(engine)", + "engine->evaluate(\"[]\") <=> QScriptValue(true)", + "engine->evaluate(\"[]\") <=> QScriptValue(int(122))", + "engine->evaluate(\"[]\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"[]\") <=> QScriptValue(123.0)", + "engine->evaluate(\"[]\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"[]\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"[]\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"[]\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"[]\") <=> QScriptValue(qInf())", + "engine->evaluate(\"[]\") <=> QScriptValue(\"NaN\")", + "engine->evaluate(\"[]\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"[]\") <=> QScriptValue(\"-Infinity\")", + "engine->evaluate(\"[]\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"[]\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(QString(\"0\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(0, true)", + "engine->evaluate(\"[]\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"[]\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"[]\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"[]\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"[]\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"[]\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"[]\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"[]\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"[]\") <=> QScriptValue(0, \"NaN\")", + "engine->evaluate(\"[]\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"[]\") <=> QScriptValue(0, \"-Infinity\")", + "engine->evaluate(\"[]\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"[]\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"0\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, \"NaN\")", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, \"-Infinity\")", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"0\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"Error.prototype\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"/foo/\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"new Error()\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"False\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"'0'\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"[]\") <=> engine->newObject()", + "engine->evaluate(\"[]\") <=> engine->newArray(10)", + "engine->evaluate(\"[]\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"[]\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"[]\") <=> engine->newQObject(engine)", + "engine->evaluate(\"Object.prototype\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"Object.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Object.prototype\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"Object.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"Object.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(true)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(int(122))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(123.0)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(qInf())", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"NaN\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"-Infinity\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"0\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, true)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"NaN\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"-Infinity\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"0\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"NaN\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"-Infinity\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"0\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Error.prototype\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"/foo/\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Error()\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"False\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'0'\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"Array.prototype\") <=> engine->newObject()", + "engine->evaluate(\"Array.prototype\") <=> engine->newArray(10)", + "engine->evaluate(\"Array.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"Array.prototype\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"Array.prototype\") <=> engine->newQObject(engine)", + "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"NaN\")", + "engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"Error.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"NaN\")", + "engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"NaN\")", + "engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"False\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"Error.prototype\") <=> engine->newObject()", + "engine->evaluate(\"Error.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"Error.prototype\") <=> engine->newQObject(engine)", + "engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Array\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"Number\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Function\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Function\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"/foo/\") <=> QScriptValue(\"NaN\")", + "engine->evaluate(\"/foo/\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"/foo/\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"/foo/\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"0\"))", + "engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"NaN\")", + "engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"0\"))", + "engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"NaN\")", + "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"0\"))", + "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Error.prototype\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Error()\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"False\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'0'\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"/foo/\") <=> engine->newObject()", + "engine->evaluate(\"/foo/\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"/foo/\") <=> engine->newQObject(engine)", + "engine->evaluate(\"new Object()\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"new Object()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"new Object()\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"new Object()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"new Object()\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"new Object()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"new Object()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(true)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(int(122))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(123.0)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(qInf())", + "engine->evaluate(\"new Array()\") <=> QScriptValue(\"NaN\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(\"-Infinity\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"0\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, true)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"NaN\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"-Infinity\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"0\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"NaN\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"-Infinity\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"0\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Error.prototype\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"/foo/\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Error()\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"False\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'0'\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"new Array()\") <=> engine->newObject()", + "engine->evaluate(\"new Array()\") <=> engine->newArray(10)", + "engine->evaluate(\"new Array()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"new Array()\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"new Array()\") <=> engine->newQObject(engine)", + "engine->evaluate(\"new Error()\") <=> QScriptValue(\"NaN\")", + "engine->evaluate(\"new Error()\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"new Error()\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"new Error()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"NaN\")", + "engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"new Error()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"NaN\")", + "engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"new Error()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"False\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"new Error()\") <=> engine->newObject()", + "engine->evaluate(\"new Error()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"new Error()\") <=> engine->newQObject(engine)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(int(122))", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(123.0)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(qInf())", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"Undefined\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"Undefined\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Undefined\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"Undefined\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Undefined\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"Undefined\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"Undefined\") <=> engine->newObject()", + "engine->evaluate(\"Undefined\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"Null\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"Null\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Null\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"Null\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Null\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"Null\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"Null\") <=> engine->newObject()", + "engine->evaluate(\"Null\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"True\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"True\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"True\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"True\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"True\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"True\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"True\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"True\") <=> engine->newObject()", + "engine->evaluate(\"True\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"False\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"False\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"False\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"False\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"False\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"False\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"False\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"False\") <=> engine->newObject()", + "engine->evaluate(\"False\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"null\") <=> QScriptValue(true)", + "engine->evaluate(\"null\") <=> QScriptValue(int(122))", + "engine->evaluate(\"null\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"null\") <=> QScriptValue(123.0)", + "engine->evaluate(\"null\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"null\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"null\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"null\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"null\") <=> QScriptValue(qInf())", + "engine->evaluate(\"null\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"null\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"null\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"null\") <=> QScriptValue(0, true)", + "engine->evaluate(\"null\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"null\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"null\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"null\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"null\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"null\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"null\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"null\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"null\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"null\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"null\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"null\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"null\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"null\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"null\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"null\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"null\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"null\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"null\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"null\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"true\") <=> QScriptValue(int(122))", + "engine->evaluate(\"true\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"true\") <=> QScriptValue(123.0)", + "engine->evaluate(\"true\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"true\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"true\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"true\") <=> QScriptValue(qInf())", + "engine->evaluate(\"true\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"true\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"true\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"true\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"true\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"true\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"true\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"true\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"true\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"true\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"true\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"true\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"true\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"true\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"true\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"true\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"true\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"true\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"true\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"true\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"true\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"true\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"true\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"true\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"true\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"true\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"true\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"true\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"false\") <=> QScriptValue(true)", + "engine->evaluate(\"false\") <=> QScriptValue(int(122))", + "engine->evaluate(\"false\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"false\") <=> QScriptValue(123.0)", + "engine->evaluate(\"false\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"false\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"false\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"false\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"false\") <=> QScriptValue(qInf())", + "engine->evaluate(\"false\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"false\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"false\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"false\") <=> QScriptValue(0, true)", + "engine->evaluate(\"false\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"false\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"false\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"false\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"false\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"false\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"false\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"false\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"false\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"false\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"false\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"false\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"false\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"false\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"false\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"false\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"false\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"false\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"false\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"false\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"122\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"122\") <=> QScriptValue(123.0)", + "engine->evaluate(\"122\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"122\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"122\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"122\") <=> QScriptValue(qInf())", + "engine->evaluate(\"122\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"122\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"122\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"122\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"122\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"122\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"122\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"122\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"122\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"122\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"122\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"122\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"122\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"122\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"122\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"122\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"122\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"122\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"122\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"122\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"122\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"122\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"122\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"122\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"124\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"124\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"124\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"124\") <=> QScriptValue(qInf())", + "engine->evaluate(\"124\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"124\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"124\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"124\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"124\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"124\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"124\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"124\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"124\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"124\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"124\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"124\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"124\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"0\") <=> QScriptValue(true)", + "engine->evaluate(\"0\") <=> QScriptValue(int(122))", + "engine->evaluate(\"0\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"0\") <=> QScriptValue(123.0)", + "engine->evaluate(\"0\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"0\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"0\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"0\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"0\") <=> QScriptValue(qInf())", + "engine->evaluate(\"0\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"0\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"0\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"0\") <=> QScriptValue(0, true)", + "engine->evaluate(\"0\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"0\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"0\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"0\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"0\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"0\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"0\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"0\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"0\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"0\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"0\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"0\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"0\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"0\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"0\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"0\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"0\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"0\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"0\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"0.0\") <=> QScriptValue(true)", + "engine->evaluate(\"0.0\") <=> QScriptValue(int(122))", + "engine->evaluate(\"0.0\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"0.0\") <=> QScriptValue(123.0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"0.0\") <=> QScriptValue(qInf())", + "engine->evaluate(\"0.0\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, true)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"0.0\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"123.0\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"123.0\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"123.0\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"123.0\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"123.0\") <=> QScriptValue(qInf())", + "engine->evaluate(\"123.0\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"123.0\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"123.0\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"123.0\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"123.0\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"123.0\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"123.0\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"123.0\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"123.0\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(true)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(int(122))", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(123.0)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(qInf())", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, true)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"6.37e-8\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QScriptValue::NullValue)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(true)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(false)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(int(122))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0.0)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(123.0)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(qInf())", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"\"))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString())", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"0\"))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QScriptValue::NullValue)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, true)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, false)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0.0)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"\"))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString())", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"0\"))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QScriptValue::NullValue)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, false)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0.0)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"\"))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString())", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"0\"))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"[]\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Array.prototype\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Array()\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"null\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"false\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0.0\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"''\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'0'\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"-6.37e-8\") <=> engine->nullValue()", + "engine->evaluate(\"-6.37e-8\") <=> engine->newArray()", + "engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(false))", + "engine->evaluate(\"-6.37e-8\") <=> engine->newQObject(0)", + "engine->evaluate(\"0x43211234\") <=> QScriptValue(qInf())", + "engine->evaluate(\"0x43211234\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"0x43211234\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"0x43211234\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"0x10000\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"0x10000\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"0x10000\") <=> QScriptValue(qInf())", + "engine->evaluate(\"0x10000\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"0x10000\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"0x10000\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"0x10000\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"0x10000\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"0x10001\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"0x10001\") <=> QScriptValue(qInf())", + "engine->evaluate(\"0x10001\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"0x10001\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"0x10001\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"0x10001\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10001\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(true)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(false)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(int(122))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0.0)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(123.0)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(-6.37e-8)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(qInf())", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"\"))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString())", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"0\"))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, true)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, false)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0.0)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"\"))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString())", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, false)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0.0)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"\"))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString())", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"[]\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Array.prototype\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Array()\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"null\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"false\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0.0\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"''\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'0'\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"-Infinity\") <=> engine->nullValue()", + "engine->evaluate(\"-Infinity\") <=> engine->newArray()", + "engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(false))", + "engine->evaluate(\"-Infinity\") <=> engine->newQObject(0)", + "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"''\") <=> QScriptValue(true)", + "engine->evaluate(\"''\") <=> QScriptValue(int(122))", + "engine->evaluate(\"''\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"''\") <=> QScriptValue(123.0)", + "engine->evaluate(\"''\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"''\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"''\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"''\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"''\") <=> QScriptValue(qInf())", + "engine->evaluate(\"''\") <=> QScriptValue(\"NaN\")", + "engine->evaluate(\"''\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"''\") <=> QScriptValue(\"-Infinity\")", + "engine->evaluate(\"''\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"''\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"''\") <=> QScriptValue(QString(\"0\"))", + "engine->evaluate(\"''\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"''\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"''\") <=> QScriptValue(0, true)", + "engine->evaluate(\"''\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"''\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"''\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"''\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"''\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"''\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"''\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"''\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"''\") <=> QScriptValue(0, \"NaN\")", + "engine->evaluate(\"''\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"''\") <=> QScriptValue(0, \"-Infinity\")", + "engine->evaluate(\"''\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"''\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"0\"))", + "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"''\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"''\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"''\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"''\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"''\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"''\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"''\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"''\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"''\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"''\") <=> QScriptValue(engine, \"NaN\")", + "engine->evaluate(\"''\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"''\") <=> QScriptValue(engine, \"-Infinity\")", + "engine->evaluate(\"''\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"''\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"0\"))", + "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"''\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"Error.prototype\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"/foo/\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"new Error()\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"False\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"'0'\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"''\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"''\") <=> engine->newObject()", + "engine->evaluate(\"''\") <=> engine->newArray(10)", + "engine->evaluate(\"''\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"''\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"''\") <=> engine->newQObject(engine)", + "engine->evaluate(\"'0'\") <=> QScriptValue(true)", + "engine->evaluate(\"'0'\") <=> QScriptValue(int(122))", + "engine->evaluate(\"'0'\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"'0'\") <=> QScriptValue(123.0)", + "engine->evaluate(\"'0'\") <=> QScriptValue(6.37e-8)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"'0'\") <=> QScriptValue(qInf())", + "engine->evaluate(\"'0'\") <=> QScriptValue(\"NaN\")", + "engine->evaluate(\"'0'\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"'0'\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"'0'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"12.4\"))", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, true)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, 6.37e-8)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, \"NaN\")", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"12.3\"))", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, true)", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 6.37e-8)", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"NaN\")", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Error.prototype\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Error()\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"False\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"true\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"'0'\") <=> engine->evaluate(\"'12.4'\")", + "engine->evaluate(\"'0'\") <=> engine->newObject()", + "engine->evaluate(\"'0'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"'0'\") <=> engine->newQObject(engine)", + "engine->evaluate(\"'123'\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"'123'\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"'123'\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"'123'\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"'123'\") <=> QScriptValue(qInf())", + "engine->evaluate(\"'123'\") <=> QScriptValue(\"NaN\")", + "engine->evaluate(\"'123'\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"'123'\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"'123'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'123'\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"'123'\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"'123'\") <=> QScriptValue(0, \"NaN\")", + "engine->evaluate(\"'123'\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"'123'\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"'123'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'123'\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"'123'\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"NaN\")", + "engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Error.prototype\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Error()\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"False\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"'123'\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"'123'\") <=> engine->newObject()", + "engine->evaluate(\"'123'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"'123'\") <=> engine->newQObject(engine)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(int(122))", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(uint(124))", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(123.0)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0x43211234)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10000)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10001)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(qInf())", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(\"NaN\")", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(\"Infinity\")", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(\"ciao\")", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"123\"))", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, int(122))", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, uint(124))", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 123.0)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x43211234)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10000)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10001)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, qInf())", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"NaN\")", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"Infinity\")", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"ciao\")", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString(\"123\"))", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, int(122))", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, uint(124))", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 123.0)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x43211234)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10000)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10001)", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, qInf())", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"NaN\")", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"Infinity\")", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"ciao\")", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString(\"123\"))", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object.prototype\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function.prototype\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Error.prototype\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Number\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Object()\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Error()\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Undefined\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Null\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"True\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"False\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"122\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"124\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"123.0\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10000\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10001\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Infinity\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\") <=> engine->newObject()", + "engine->evaluate(\"'12.4'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->evaluate(\"'12.4'\") <=> engine->newVariant(QVariant(123))", + "engine->evaluate(\"'12.4'\") <=> engine->newQObject(engine)", + "engine->nullValue() <=> QScriptValue(true)", + "engine->nullValue() <=> QScriptValue(int(122))", + "engine->nullValue() <=> QScriptValue(uint(124))", + "engine->nullValue() <=> QScriptValue(123.0)", + "engine->nullValue() <=> QScriptValue(6.37e-8)", + "engine->nullValue() <=> QScriptValue(0x43211234)", + "engine->nullValue() <=> QScriptValue(0x10000)", + "engine->nullValue() <=> QScriptValue(0x10001)", + "engine->nullValue() <=> QScriptValue(qInf())", + "engine->nullValue() <=> QScriptValue(\"Infinity\")", + "engine->nullValue() <=> QScriptValue(QString(\"123\"))", + "engine->nullValue() <=> QScriptValue(QString(\"12.4\"))", + "engine->nullValue() <=> QScriptValue(0, true)", + "engine->nullValue() <=> QScriptValue(0, int(122))", + "engine->nullValue() <=> QScriptValue(0, uint(124))", + "engine->nullValue() <=> QScriptValue(0, 123.0)", + "engine->nullValue() <=> QScriptValue(0, 6.37e-8)", + "engine->nullValue() <=> QScriptValue(0, 0x43211234)", + "engine->nullValue() <=> QScriptValue(0, 0x10000)", + "engine->nullValue() <=> QScriptValue(0, 0x10001)", + "engine->nullValue() <=> QScriptValue(0, qInf())", + "engine->nullValue() <=> QScriptValue(0, \"Infinity\")", + "engine->nullValue() <=> QScriptValue(0, QString(\"123\"))", + "engine->nullValue() <=> QScriptValue(0, QString(\"12.3\"))", + "engine->nullValue() <=> QScriptValue(engine, true)", + "engine->nullValue() <=> QScriptValue(engine, int(122))", + "engine->nullValue() <=> QScriptValue(engine, uint(124))", + "engine->nullValue() <=> QScriptValue(engine, 123.0)", + "engine->nullValue() <=> QScriptValue(engine, 6.37e-8)", + "engine->nullValue() <=> QScriptValue(engine, 0x43211234)", + "engine->nullValue() <=> QScriptValue(engine, 0x10000)", + "engine->nullValue() <=> QScriptValue(engine, 0x10001)", + "engine->nullValue() <=> QScriptValue(engine, qInf())", + "engine->nullValue() <=> QScriptValue(engine, \"Infinity\")", + "engine->nullValue() <=> QScriptValue(engine, QString(\"123\"))", + "engine->nullValue() <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->nullValue() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->nullValue() <=> engine->evaluate(\"true\")", + "engine->nullValue() <=> engine->evaluate(\"122\")", + "engine->nullValue() <=> engine->evaluate(\"124\")", + "engine->nullValue() <=> engine->evaluate(\"123.0\")", + "engine->nullValue() <=> engine->evaluate(\"6.37e-8\")", + "engine->nullValue() <=> engine->evaluate(\"0x43211234\")", + "engine->nullValue() <=> engine->evaluate(\"0x10000\")", + "engine->nullValue() <=> engine->evaluate(\"0x10001\")", + "engine->nullValue() <=> engine->evaluate(\"Infinity\")", + "engine->nullValue() <=> engine->evaluate(\"'123'\")", + "engine->nullValue() <=> engine->evaluate(\"'12.4'\")", + "engine->nullValue() <=> engine->newVariant(QVariant(123))", + "engine->newObject() <=> QScriptValue(\"ciao\")", + "engine->newObject() <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->newObject() <=> QScriptValue(0, \"ciao\")", + "engine->newObject() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->newObject() <=> QScriptValue(engine, \"ciao\")", + "engine->newObject() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->newObject() <=> engine->evaluate(\"Function.prototype\")", + "engine->newObject() <=> engine->evaluate(\"Object\")", + "engine->newObject() <=> engine->evaluate(\"Array\")", + "engine->newObject() <=> engine->evaluate(\"Number\")", + "engine->newObject() <=> engine->evaluate(\"Function\")", + "engine->newObject() <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->newObject() <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->newObject() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->newObject() <=> engine->evaluate(\"'ciao'\")", + "engine->newObject() <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newArray() <=> QScriptValue(true)", + "engine->newArray() <=> QScriptValue(int(122))", + "engine->newArray() <=> QScriptValue(uint(124))", + "engine->newArray() <=> QScriptValue(123.0)", + "engine->newArray() <=> QScriptValue(6.37e-8)", + "engine->newArray() <=> QScriptValue(0x43211234)", + "engine->newArray() <=> QScriptValue(0x10000)", + "engine->newArray() <=> QScriptValue(0x10001)", + "engine->newArray() <=> QScriptValue(qInf())", + "engine->newArray() <=> QScriptValue(\"NaN\")", + "engine->newArray() <=> QScriptValue(\"Infinity\")", + "engine->newArray() <=> QScriptValue(\"-Infinity\")", + "engine->newArray() <=> QScriptValue(\"ciao\")", + "engine->newArray() <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->newArray() <=> QScriptValue(QString(\"0\"))", + "engine->newArray() <=> QScriptValue(QString(\"123\"))", + "engine->newArray() <=> QScriptValue(QString(\"12.4\"))", + "engine->newArray() <=> QScriptValue(0, true)", + "engine->newArray() <=> QScriptValue(0, int(122))", + "engine->newArray() <=> QScriptValue(0, uint(124))", + "engine->newArray() <=> QScriptValue(0, 123.0)", + "engine->newArray() <=> QScriptValue(0, 6.37e-8)", + "engine->newArray() <=> QScriptValue(0, 0x43211234)", + "engine->newArray() <=> QScriptValue(0, 0x10000)", + "engine->newArray() <=> QScriptValue(0, 0x10001)", + "engine->newArray() <=> QScriptValue(0, qInf())", + "engine->newArray() <=> QScriptValue(0, \"NaN\")", + "engine->newArray() <=> QScriptValue(0, \"Infinity\")", + "engine->newArray() <=> QScriptValue(0, \"-Infinity\")", + "engine->newArray() <=> QScriptValue(0, \"ciao\")", + "engine->newArray() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->newArray() <=> QScriptValue(0, QString(\"0\"))", + "engine->newArray() <=> QScriptValue(0, QString(\"123\"))", + "engine->newArray() <=> QScriptValue(0, QString(\"12.3\"))", + "engine->newArray() <=> QScriptValue(engine, true)", + "engine->newArray() <=> QScriptValue(engine, int(122))", + "engine->newArray() <=> QScriptValue(engine, uint(124))", + "engine->newArray() <=> QScriptValue(engine, 123.0)", + "engine->newArray() <=> QScriptValue(engine, 6.37e-8)", + "engine->newArray() <=> QScriptValue(engine, 0x43211234)", + "engine->newArray() <=> QScriptValue(engine, 0x10000)", + "engine->newArray() <=> QScriptValue(engine, 0x10001)", + "engine->newArray() <=> QScriptValue(engine, qInf())", + "engine->newArray() <=> QScriptValue(engine, \"NaN\")", + "engine->newArray() <=> QScriptValue(engine, \"Infinity\")", + "engine->newArray() <=> QScriptValue(engine, \"-Infinity\")", + "engine->newArray() <=> QScriptValue(engine, \"ciao\")", + "engine->newArray() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->newArray() <=> QScriptValue(engine, QString(\"0\"))", + "engine->newArray() <=> QScriptValue(engine, QString(\"123\"))", + "engine->newArray() <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->newArray() <=> engine->evaluate(\"Object.prototype\")", + "engine->newArray() <=> engine->evaluate(\"Function.prototype\")", + "engine->newArray() <=> engine->evaluate(\"Error.prototype\")", + "engine->newArray() <=> engine->evaluate(\"Object\")", + "engine->newArray() <=> engine->evaluate(\"Array\")", + "engine->newArray() <=> engine->evaluate(\"Number\")", + "engine->newArray() <=> engine->evaluate(\"Function\")", + "engine->newArray() <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->newArray() <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->newArray() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->newArray() <=> engine->evaluate(\"/foo/\")", + "engine->newArray() <=> engine->evaluate(\"new Object()\")", + "engine->newArray() <=> engine->evaluate(\"new Error()\")", + "engine->newArray() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->newArray() <=> engine->evaluate(\"Undefined\")", + "engine->newArray() <=> engine->evaluate(\"Null\")", + "engine->newArray() <=> engine->evaluate(\"True\")", + "engine->newArray() <=> engine->evaluate(\"False\")", + "engine->newArray() <=> engine->evaluate(\"true\")", + "engine->newArray() <=> engine->evaluate(\"122\")", + "engine->newArray() <=> engine->evaluate(\"124\")", + "engine->newArray() <=> engine->evaluate(\"123.0\")", + "engine->newArray() <=> engine->evaluate(\"6.37e-8\")", + "engine->newArray() <=> engine->evaluate(\"0x43211234\")", + "engine->newArray() <=> engine->evaluate(\"0x10000\")", + "engine->newArray() <=> engine->evaluate(\"0x10001\")", + "engine->newArray() <=> engine->evaluate(\"Infinity\")", + "engine->newArray() <=> engine->evaluate(\"'ciao'\")", + "engine->newArray() <=> engine->evaluate(\"'0'\")", + "engine->newArray() <=> engine->evaluate(\"'123'\")", + "engine->newArray() <=> engine->evaluate(\"'12.4'\")", + "engine->newArray() <=> engine->newObject()", + "engine->newArray() <=> engine->newArray(10)", + "engine->newArray() <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newArray() <=> engine->newVariant(QVariant(123))", + "engine->newArray() <=> engine->newQObject(engine)", + "engine->newArray(10) <=> QScriptValue(\"NaN\")", + "engine->newArray(10) <=> QScriptValue(\"Infinity\")", + "engine->newArray(10) <=> QScriptValue(\"-Infinity\")", + "engine->newArray(10) <=> QScriptValue(\"ciao\")", + "engine->newArray(10) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->newArray(10) <=> QScriptValue(QString(\"0\"))", + "engine->newArray(10) <=> QScriptValue(QString(\"123\"))", + "engine->newArray(10) <=> QScriptValue(QString(\"12.4\"))", + "engine->newArray(10) <=> QScriptValue(0, \"NaN\")", + "engine->newArray(10) <=> QScriptValue(0, \"Infinity\")", + "engine->newArray(10) <=> QScriptValue(0, \"-Infinity\")", + "engine->newArray(10) <=> QScriptValue(0, \"ciao\")", + "engine->newArray(10) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->newArray(10) <=> QScriptValue(0, QString(\"0\"))", + "engine->newArray(10) <=> QScriptValue(0, QString(\"123\"))", + "engine->newArray(10) <=> QScriptValue(0, QString(\"12.3\"))", + "engine->newArray(10) <=> QScriptValue(engine, \"NaN\")", + "engine->newArray(10) <=> QScriptValue(engine, \"Infinity\")", + "engine->newArray(10) <=> QScriptValue(engine, \"-Infinity\")", + "engine->newArray(10) <=> QScriptValue(engine, \"ciao\")", + "engine->newArray(10) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->newArray(10) <=> QScriptValue(engine, QString(\"0\"))", + "engine->newArray(10) <=> QScriptValue(engine, QString(\"123\"))", + "engine->newArray(10) <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->newArray(10) <=> engine->evaluate(\"Object.prototype\")", + "engine->newArray(10) <=> engine->evaluate(\"Function.prototype\")", + "engine->newArray(10) <=> engine->evaluate(\"Error.prototype\")", + "engine->newArray(10) <=> engine->evaluate(\"Object\")", + "engine->newArray(10) <=> engine->evaluate(\"Array\")", + "engine->newArray(10) <=> engine->evaluate(\"Number\")", + "engine->newArray(10) <=> engine->evaluate(\"Function\")", + "engine->newArray(10) <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->newArray(10) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->newArray(10) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->newArray(10) <=> engine->evaluate(\"/foo/\")", + "engine->newArray(10) <=> engine->evaluate(\"new Object()\")", + "engine->newArray(10) <=> engine->evaluate(\"new Error()\")", + "engine->newArray(10) <=> engine->evaluate(\"Undefined\")", + "engine->newArray(10) <=> engine->evaluate(\"Null\")", + "engine->newArray(10) <=> engine->evaluate(\"True\")", + "engine->newArray(10) <=> engine->evaluate(\"False\")", + "engine->newArray(10) <=> engine->evaluate(\"'ciao'\")", + "engine->newArray(10) <=> engine->evaluate(\"'0'\")", + "engine->newArray(10) <=> engine->evaluate(\"'123'\")", + "engine->newArray(10) <=> engine->evaluate(\"'12.4'\")", + "engine->newArray(10) <=> engine->newObject()", + "engine->newArray(10) <=> engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newArray(10) <=> engine->newQObject(engine)", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(\"ciao\")", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, \"ciao\")", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, \"ciao\")", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function.prototype\")", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Array\")", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Number\")", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function\")", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"'ciao'\")", + "engine->newVariant(QVariant(123)) <=> QScriptValue(uint(124))", + "engine->newVariant(QVariant(123)) <=> QScriptValue(0x43211234)", + "engine->newVariant(QVariant(123)) <=> QScriptValue(0x10000)", + "engine->newVariant(QVariant(123)) <=> QScriptValue(0x10001)", + "engine->newVariant(QVariant(123)) <=> QScriptValue(qInf())", + "engine->newVariant(QVariant(123)) <=> QScriptValue(\"Infinity\")", + "engine->newVariant(QVariant(123)) <=> QScriptValue(0, uint(124))", + "engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x43211234)", + "engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10000)", + "engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10001)", + "engine->newVariant(QVariant(123)) <=> QScriptValue(0, qInf())", + "engine->newVariant(QVariant(123)) <=> QScriptValue(0, \"Infinity\")", + "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, uint(124))", + "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x43211234)", + "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10000)", + "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10001)", + "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, qInf())", + "engine->newVariant(QVariant(123)) <=> QScriptValue(engine, \"Infinity\")", + "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"124\")", + "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x43211234\")", + "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10000\")", + "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10001\")", + "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Infinity\")", + "engine->newVariant(QVariant(false)) <=> QScriptValue(true)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(int(122))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(uint(124))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(123.0)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(6.37e-8)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0x43211234)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0x10000)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0x10001)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(qInf())", + "engine->newVariant(QVariant(false)) <=> QScriptValue(\"Infinity\")", + "engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"123\"))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"12.4\"))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, true)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, int(122))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, uint(124))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 123.0)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 6.37e-8)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x43211234)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10000)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10001)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, qInf())", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, \"Infinity\")", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"123\"))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"12.3\"))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, true)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, int(122))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, uint(124))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 123.0)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 6.37e-8)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x43211234)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10000)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10001)", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, qInf())", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, \"Infinity\")", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"123\"))", + "engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"true\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"122\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"124\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"123.0\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"6.37e-8\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x43211234\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10000\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10001\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Infinity\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'123'\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'12.4'\")", + "engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(123))", + "engine->newQObject(0) <=> QScriptValue(true)", + "engine->newQObject(0) <=> QScriptValue(int(122))", + "engine->newQObject(0) <=> QScriptValue(uint(124))", + "engine->newQObject(0) <=> QScriptValue(123.0)", + "engine->newQObject(0) <=> QScriptValue(6.37e-8)", + "engine->newQObject(0) <=> QScriptValue(0x43211234)", + "engine->newQObject(0) <=> QScriptValue(0x10000)", + "engine->newQObject(0) <=> QScriptValue(0x10001)", + "engine->newQObject(0) <=> QScriptValue(qInf())", + "engine->newQObject(0) <=> QScriptValue(\"Infinity\")", + "engine->newQObject(0) <=> QScriptValue(QString(\"123\"))", + "engine->newQObject(0) <=> QScriptValue(QString(\"12.4\"))", + "engine->newQObject(0) <=> QScriptValue(0, true)", + "engine->newQObject(0) <=> QScriptValue(0, int(122))", + "engine->newQObject(0) <=> QScriptValue(0, uint(124))", + "engine->newQObject(0) <=> QScriptValue(0, 123.0)", + "engine->newQObject(0) <=> QScriptValue(0, 6.37e-8)", + "engine->newQObject(0) <=> QScriptValue(0, 0x43211234)", + "engine->newQObject(0) <=> QScriptValue(0, 0x10000)", + "engine->newQObject(0) <=> QScriptValue(0, 0x10001)", + "engine->newQObject(0) <=> QScriptValue(0, qInf())", + "engine->newQObject(0) <=> QScriptValue(0, \"Infinity\")", + "engine->newQObject(0) <=> QScriptValue(0, QString(\"123\"))", + "engine->newQObject(0) <=> QScriptValue(0, QString(\"12.3\"))", + "engine->newQObject(0) <=> QScriptValue(engine, true)", + "engine->newQObject(0) <=> QScriptValue(engine, int(122))", + "engine->newQObject(0) <=> QScriptValue(engine, uint(124))", + "engine->newQObject(0) <=> QScriptValue(engine, 123.0)", + "engine->newQObject(0) <=> QScriptValue(engine, 6.37e-8)", + "engine->newQObject(0) <=> QScriptValue(engine, 0x43211234)", + "engine->newQObject(0) <=> QScriptValue(engine, 0x10000)", + "engine->newQObject(0) <=> QScriptValue(engine, 0x10001)", + "engine->newQObject(0) <=> QScriptValue(engine, qInf())", + "engine->newQObject(0) <=> QScriptValue(engine, \"Infinity\")", + "engine->newQObject(0) <=> QScriptValue(engine, QString(\"123\"))", + "engine->newQObject(0) <=> QScriptValue(engine, QString(\"1.23\"))", + "engine->newQObject(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->newQObject(0) <=> engine->evaluate(\"true\")", + "engine->newQObject(0) <=> engine->evaluate(\"122\")", + "engine->newQObject(0) <=> engine->evaluate(\"124\")", + "engine->newQObject(0) <=> engine->evaluate(\"123.0\")", + "engine->newQObject(0) <=> engine->evaluate(\"6.37e-8\")", + "engine->newQObject(0) <=> engine->evaluate(\"0x43211234\")", + "engine->newQObject(0) <=> engine->evaluate(\"0x10000\")", + "engine->newQObject(0) <=> engine->evaluate(\"0x10001\")", + "engine->newQObject(0) <=> engine->evaluate(\"Infinity\")", + "engine->newQObject(0) <=> engine->evaluate(\"'123'\")", + "engine->newQObject(0) <=> engine->evaluate(\"'12.4'\")", + "engine->newQObject(0) <=> engine->newVariant(QVariant(123))", + "engine->newQObject(engine) <=> QScriptValue(\"ciao\")", + "engine->newQObject(engine) <=> QScriptValue(QString::fromLatin1(\"ciao\"))", + "engine->newQObject(engine) <=> QScriptValue(0, \"ciao\")", + "engine->newQObject(engine) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))", + "engine->newQObject(engine) <=> QScriptValue(engine, \"ciao\")", + "engine->newQObject(engine) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))", + "engine->newQObject(engine) <=> engine->evaluate(\"Object.prototype\")", + "engine->newQObject(engine) <=> engine->evaluate(\"Function.prototype\")", + "engine->newQObject(engine) <=> engine->evaluate(\"Object\")", + "engine->newQObject(engine) <=> engine->evaluate(\"Array\")", + "engine->newQObject(engine) <=> engine->evaluate(\"Number\")", + "engine->newQObject(engine) <=> engine->evaluate(\"Function\")", + "engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 1; })\")", + "engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 'ciao'; })\")", + "engine->newQObject(engine) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")", + "engine->newQObject(engine) <=> engine->evaluate(\"new Object()\")", + "engine->newQObject(engine) <=> engine->evaluate(\"Undefined\")", + "engine->newQObject(engine) <=> engine->evaluate(\"Null\")", + "engine->newQObject(engine) <=> engine->evaluate(\"True\")", + "engine->newQObject(engine) <=> engine->evaluate(\"False\")", + "engine->newQObject(engine) <=> engine->evaluate(\"'ciao'\")", + "engine->newQObject(engine) <=> engine->newObject()", + "engine->newQObject(engine) <=> engine->newQMetaObject(&QObject::staticMetaObject)",}; + +void tst_QScriptValue::lessThan_makeData(const char *expr) +{ + static QSet equals; + if (equals.isEmpty()) { + equals.reserve(5063); + for (unsigned i = 0; i < 5063; ++i) + equals.insert(lessThan_array[i]); + } + QHash::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("other"); + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString instanceOf_array [] = { + "engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Object\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"Number\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Number\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"Function\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Function\")", + "engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")", + "engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")", + "engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")", + "engine->newObject() <=> engine->evaluate(\"Object\")", + "engine->newArray() <=> engine->evaluate(\"Object\")", + "engine->newArray() <=> engine->evaluate(\"Array\")", + "engine->newArray(10) <=> engine->evaluate(\"Object\")", + "engine->newArray(10) <=> engine->evaluate(\"Array\")", + "engine->newDate(QDateTime()) <=> engine->evaluate(\"Object\")", + "engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")", + "engine->newVariant(QVariant()) <=> engine->evaluate(\"Object\")", + "engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Object\")", + "engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Object\")", + "engine->newQObject(engine) <=> engine->evaluate(\"Object\")",}; + +void tst_QScriptValue::instanceOf_makeData(const char *expr) +{ + static QSet equals; + if (equals.isEmpty()) { + equals.reserve(40); + for (unsigned i = 0; i < 40; ++i) + equals.insert(instanceOf_array[i]); + } + QHash::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) diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_init.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_init.cpp new file mode 100644 index 0000000..a9eb2ca --- /dev/null +++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_init.cpp @@ -0,0 +1,198 @@ +/**************************************************************************** +** +** 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 has been generated. DO NOT MODIFY! **************** +****************************************************************************/ + +#include "tst_qscriptvalue.h" + + +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()")); + DEFINE_TEST_VALUE(engine->evaluate("a = new Object(); a.foo = 22; a.foo")); + DEFINE_TEST_VALUE(engine->evaluate("Undefined")); + DEFINE_TEST_VALUE(engine->evaluate("Null")); + DEFINE_TEST_VALUE(engine->evaluate("True")); + DEFINE_TEST_VALUE(engine->evaluate("False")); + DEFINE_TEST_VALUE(engine->evaluate("undefined")); + DEFINE_TEST_VALUE(engine->evaluate("null")); + DEFINE_TEST_VALUE(engine->evaluate("true")); + DEFINE_TEST_VALUE(engine->evaluate("false")); + DEFINE_TEST_VALUE(engine->evaluate("122")); + DEFINE_TEST_VALUE(engine->evaluate("124")); + DEFINE_TEST_VALUE(engine->evaluate("0")); + DEFINE_TEST_VALUE(engine->evaluate("0.0")); + DEFINE_TEST_VALUE(engine->evaluate("123.0")); + DEFINE_TEST_VALUE(engine->evaluate("6.37e-8")); + DEFINE_TEST_VALUE(engine->evaluate("-6.37e-8")); + DEFINE_TEST_VALUE(engine->evaluate("0x43211234")); + DEFINE_TEST_VALUE(engine->evaluate("0x10000")); + DEFINE_TEST_VALUE(engine->evaluate("0x10001")); + DEFINE_TEST_VALUE(engine->evaluate("NaN")); + DEFINE_TEST_VALUE(engine->evaluate("Infinity")); + DEFINE_TEST_VALUE(engine->evaluate("-Infinity")); + DEFINE_TEST_VALUE(engine->evaluate("'ciao'")); + DEFINE_TEST_VALUE(engine->evaluate("''")); + DEFINE_TEST_VALUE(engine->evaluate("'0'")); + DEFINE_TEST_VALUE(engine->evaluate("'123'")); + DEFINE_TEST_VALUE(engine->evaluate("'12.4'")); + DEFINE_TEST_VALUE(engine->nullValue()); + DEFINE_TEST_VALUE(engine->undefinedValue()); + DEFINE_TEST_VALUE(engine->newObject()); + DEFINE_TEST_VALUE(engine->newArray()); + DEFINE_TEST_VALUE(engine->newArray(10)); + DEFINE_TEST_VALUE(engine->newDate(QDateTime())); + DEFINE_TEST_VALUE(engine->newQMetaObject(&QObject::staticMetaObject)); + DEFINE_TEST_VALUE(engine->newVariant(QVariant())); + DEFINE_TEST_VALUE(engine->newVariant(QVariant(123))); + DEFINE_TEST_VALUE(engine->newVariant(QVariant(false))); + DEFINE_TEST_VALUE(engine->newQObject(0)); + DEFINE_TEST_VALUE(engine->newQObject(engine)); +} + diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_isXXX.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_isXXX.cpp new file mode 100644 index 0000000..106043b --- /dev/null +++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_isXXX.cpp @@ -0,0 +1,830 @@ +/**************************************************************************** +** +** 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 has been generated. DO NOT MODIFY! **************** +****************************************************************************/ + +#include "tst_qscriptvalue.h" + + +void tst_QScriptValue::isValid_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isValid_array [] = { + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; + +void tst_QScriptValue::isValid_makeData(const char* expr) +{ + static QSet isValid; + if (isValid.isEmpty()) { + isValid.reserve(141); + for (unsigned i = 0; i < 141; ++i) + isValid.insert(isValid_array[i]); + } + newRow(expr) << isValid.contains(expr); +} + +void tst_QScriptValue::isValid_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isValid(), expected); + QCOMPARE(value.isValid(), expected); +} + +DEFINE_TEST_FUNCTION(isValid) + + +void tst_QScriptValue::isBool_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isBool_array [] = { + "QScriptValue(true)", + "QScriptValue(false)", + "QScriptValue(0, true)", + "QScriptValue(0, false)", + "QScriptValue(engine, true)", + "QScriptValue(engine, false)", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")",}; + +void tst_QScriptValue::isBool_makeData(const char* expr) +{ + static QSet isBool; + if (isBool.isEmpty()) { + isBool.reserve(8); + for (unsigned i = 0; i < 8; ++i) + isBool.insert(isBool_array[i]); + } + newRow(expr) << isBool.contains(expr); +} + +void tst_QScriptValue::isBool_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isBool(), expected); + QCOMPARE(value.isBool(), expected); +} + +DEFINE_TEST_FUNCTION(isBool) + + +void tst_QScriptValue::isBoolean_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isBoolean_array [] = { + "QScriptValue(true)", + "QScriptValue(false)", + "QScriptValue(0, true)", + "QScriptValue(0, false)", + "QScriptValue(engine, true)", + "QScriptValue(engine, false)", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")",}; + +void tst_QScriptValue::isBoolean_makeData(const char* expr) +{ + static QSet isBoolean; + if (isBoolean.isEmpty()) { + isBoolean.reserve(8); + for (unsigned i = 0; i < 8; ++i) + isBoolean.insert(isBoolean_array[i]); + } + newRow(expr) << isBoolean.contains(expr); +} + +void tst_QScriptValue::isBoolean_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isBoolean(), expected); + QCOMPARE(value.isBoolean(), expected); +} + +DEFINE_TEST_FUNCTION(isBoolean) + + +void tst_QScriptValue::isNumber_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isNumber_array [] = { + "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())", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")",}; + +void tst_QScriptValue::isNumber_makeData(const char* expr) +{ + static QSet isNumber; + if (isNumber.isEmpty()) { + isNumber.reserve(56); + for (unsigned i = 0; i < 56; ++i) + isNumber.insert(isNumber_array[i]); + } + newRow(expr) << isNumber.contains(expr); +} + +void tst_QScriptValue::isNumber_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isNumber(), expected); + QCOMPARE(value.isNumber(), expected); +} + +DEFINE_TEST_FUNCTION(isNumber) + + +void tst_QScriptValue::isFunction_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isFunction_array [] = { + "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/\")", + "engine->newQMetaObject(&QObject::staticMetaObject)",}; + +void tst_QScriptValue::isFunction_makeData(const char* expr) +{ + static QSet isFunction; + if (isFunction.isEmpty()) { + isFunction.reserve(10); + for (unsigned i = 0; i < 10; ++i) + isFunction.insert(isFunction_array[i]); + } + newRow(expr) << isFunction.contains(expr); +} + +void tst_QScriptValue::isFunction_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isFunction(), expected); + QCOMPARE(value.isFunction(), expected); +} + +DEFINE_TEST_FUNCTION(isFunction) + + +void tst_QScriptValue::isNull_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isNull_array [] = { + "QScriptValue(QScriptValue::NullValue)", + "QScriptValue(0, QScriptValue::NullValue)", + "QScriptValue(engine, QScriptValue::NullValue)", + "engine->evaluate(\"null\")", + "engine->nullValue()", + "engine->newQObject(0)",}; + +void tst_QScriptValue::isNull_makeData(const char* expr) +{ + static QSet isNull; + if (isNull.isEmpty()) { + isNull.reserve(6); + for (unsigned i = 0; i < 6; ++i) + isNull.insert(isNull_array[i]); + } + newRow(expr) << isNull.contains(expr); +} + +void tst_QScriptValue::isNull_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isNull(), expected); + QCOMPARE(value.isNull(), expected); +} + +DEFINE_TEST_FUNCTION(isNull) + + +void tst_QScriptValue::isString_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isString_array [] = { + "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\"))", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")",}; + +void tst_QScriptValue::isString_makeData(const char* expr) +{ + static QSet isString; + if (isString.isEmpty()) { + isString.reserve(35); + for (unsigned i = 0; i < 35; ++i) + isString.insert(isString_array[i]); + } + newRow(expr) << isString.contains(expr); +} + +void tst_QScriptValue::isString_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isString(), expected); + QCOMPARE(value.isString(), expected); +} + +DEFINE_TEST_FUNCTION(isString) + + +void tst_QScriptValue::isUndefined_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isUndefined_array [] = { + "QScriptValue(QScriptValue::UndefinedValue)", + "QScriptValue(0, QScriptValue::UndefinedValue)", + "QScriptValue(engine, QScriptValue::UndefinedValue)", + "engine->evaluate(\"{}\")", + "engine->evaluate(\"undefined\")", + "engine->undefinedValue()",}; + +void tst_QScriptValue::isUndefined_makeData(const char* expr) +{ + static QSet isUndefined; + if (isUndefined.isEmpty()) { + isUndefined.reserve(6); + for (unsigned i = 0; i < 6; ++i) + isUndefined.insert(isUndefined_array[i]); + } + newRow(expr) << isUndefined.contains(expr); +} + +void tst_QScriptValue::isUndefined_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isUndefined(), expected); + QCOMPARE(value.isUndefined(), expected); +} + +DEFINE_TEST_FUNCTION(isUndefined) + + +void tst_QScriptValue::isVariant_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isVariant_array [] = { + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))",}; + +void tst_QScriptValue::isVariant_makeData(const char* expr) +{ + static QSet isVariant; + if (isVariant.isEmpty()) { + isVariant.reserve(3); + for (unsigned i = 0; i < 3; ++i) + isVariant.insert(isVariant_array[i]); + } + newRow(expr) << isVariant.contains(expr); +} + +void tst_QScriptValue::isVariant_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isVariant(), expected); + QCOMPARE(value.isVariant(), expected); +} + +DEFINE_TEST_FUNCTION(isVariant) + + +void tst_QScriptValue::isQObject_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isQObject_array [] = { + "engine->newQObject(engine)",}; + +void tst_QScriptValue::isQObject_makeData(const char* expr) +{ + static QSet isQObject; + if (isQObject.isEmpty()) { + isQObject.reserve(1); + for (unsigned i = 0; i < 1; ++i) + isQObject.insert(isQObject_array[i]); + } + newRow(expr) << isQObject.contains(expr); +} + +void tst_QScriptValue::isQObject_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isQObject(), expected); + QCOMPARE(value.isQObject(), expected); +} + +DEFINE_TEST_FUNCTION(isQObject) + + +void tst_QScriptValue::isQMetaObject_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isQMetaObject_array [] = { + "engine->newQMetaObject(&QObject::staticMetaObject)",}; + +void tst_QScriptValue::isQMetaObject_makeData(const char* expr) +{ + static QSet isQMetaObject; + if (isQMetaObject.isEmpty()) { + isQMetaObject.reserve(1); + for (unsigned i = 0; i < 1; ++i) + isQMetaObject.insert(isQMetaObject_array[i]); + } + newRow(expr) << isQMetaObject.contains(expr); +} + +void tst_QScriptValue::isQMetaObject_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isQMetaObject(), expected); + QCOMPARE(value.isQMetaObject(), expected); +} + +DEFINE_TEST_FUNCTION(isQMetaObject) + + +void tst_QScriptValue::isObject_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isObject_array [] = { + "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()\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(engine)",}; + +void tst_QScriptValue::isObject_makeData(const char* expr) +{ + static QSet isObject; + if (isObject.isEmpty()) { + isObject.reserve(30); + for (unsigned i = 0; i < 30; ++i) + isObject.insert(isObject_array[i]); + } + newRow(expr) << isObject.contains(expr); +} + +void tst_QScriptValue::isObject_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isObject(), expected); + QCOMPARE(value.isObject(), expected); +} + +DEFINE_TEST_FUNCTION(isObject) + + +void tst_QScriptValue::isDate_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isDate_array [] = { + "engine->evaluate(\"Date.prototype\")", + "engine->newDate(QDateTime())",}; + +void tst_QScriptValue::isDate_makeData(const char* expr) +{ + static QSet isDate; + if (isDate.isEmpty()) { + isDate.reserve(2); + for (unsigned i = 0; i < 2; ++i) + isDate.insert(isDate_array[i]); + } + newRow(expr) << isDate.contains(expr); +} + +void tst_QScriptValue::isDate_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isDate(), expected); + QCOMPARE(value.isDate(), expected); +} + +DEFINE_TEST_FUNCTION(isDate) + + +void tst_QScriptValue::isRegExp_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isRegExp_array [] = { + "engine->evaluate(\"/foo/\")",}; + +void tst_QScriptValue::isRegExp_makeData(const char* expr) +{ + static QSet isRegExp; + if (isRegExp.isEmpty()) { + isRegExp.reserve(1); + for (unsigned i = 0; i < 1; ++i) + isRegExp.insert(isRegExp_array[i]); + } + newRow(expr) << isRegExp.contains(expr); +} + +void tst_QScriptValue::isRegExp_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isRegExp(), expected); + QCOMPARE(value.isRegExp(), expected); +} + +DEFINE_TEST_FUNCTION(isRegExp) + + +void tst_QScriptValue::isArray_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isArray_array [] = { + "engine->evaluate(\"[]\")", + "engine->evaluate(\"Array.prototype\")", + "engine->evaluate(\"new Array()\")", + "engine->newArray()", + "engine->newArray(10)",}; + +void tst_QScriptValue::isArray_makeData(const char* expr) +{ + static QSet isArray; + if (isArray.isEmpty()) { + isArray.reserve(5); + for (unsigned i = 0; i < 5; ++i) + isArray.insert(isArray_array[i]); + } + newRow(expr) << isArray.contains(expr); +} + +void tst_QScriptValue::isArray_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isArray(), expected); + QCOMPARE(value.isArray(), expected); +} + +DEFINE_TEST_FUNCTION(isArray) + + +void tst_QScriptValue::isError_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString isError_array [] = { + "engine->evaluate(\"Error.prototype\")", + "engine->evaluate(\"new Error()\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")",}; + +void tst_QScriptValue::isError_makeData(const char* expr) +{ + static QSet isError; + if (isError.isEmpty()) { + isError.reserve(6); + for (unsigned i = 0; i < 6; ++i) + isError.insert(isError_array[i]); + } + newRow(expr) << isError.contains(expr); +} + +void tst_QScriptValue::isError_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.isError(), expected); + QCOMPARE(value.isError(), expected); +} + +DEFINE_TEST_FUNCTION(isError) + diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated_toXXX.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_toXXX.cpp new file mode 100644 index 0000000..754f4e0 --- /dev/null +++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated_toXXX.cpp @@ -0,0 +1,1897 @@ +/**************************************************************************** +** +** 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 has been generated. DO NOT MODIFY! **************** +****************************************************************************/ + +#include "tst_qscriptvalue.h" + + + +void tst_QScriptValue::toString_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString toString_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; + +static QString toString_valueArray [] = { + "", "undefined", + "null", "true", + "false", "122", + "124", "0", + "0", "123", + "6.37e-8", "-6.37e-8", + "1126240820", "65536", + "65537", "NaN", + "NaN", "Infinity", + "-Infinity", "NaN", + "Infinity", "-Infinity", + "ciao", "ciao", + "", "", + "0", "123", + "12.4", "undefined", + "null", "true", + "false", "122", + "124", "0", + "0", "123", + "6.37e-8", "-6.37e-8", + "1126240820", "65536", + "65537", "NaN", + "NaN", "Infinity", + "-Infinity", "NaN", + "Infinity", "-Infinity", + "ciao", "ciao", + "", "", + "0", "123", + "12.3", "undefined", + "null", "true", + "false", "122", + "124", "0", + "0", "123", + "6.37e-8", "-6.37e-8", + "1126240820", "65536", + "65537", "NaN", + "NaN", "Infinity", + "-Infinity", "NaN", + "Infinity", "-Infinity", + "ciao", "ciao", + "", "", + "0", "123", + "1.23", "", + "undefined", "[object Object]", + "Invalid Date", "", + "function () {\n [native code]\n}", "Error: Unknown error", + "function Object() {\n [native code]\n}", "function Array() {\n [native code]\n}", + "function Number() {\n [native code]\n}", "function Function() {\n [native code]\n}", + "function () { return 1; }", "function () { return 'ciao'; }", + "function () { throw new Error('foo'); }", "/foo/", + "[object Object]", "", + "Error: Unknown error", "22", + "ReferenceError: Can't find variable: Undefined", "ReferenceError: Can't find variable: Null", + "ReferenceError: Can't find variable: True", "ReferenceError: Can't find variable: False", + "undefined", "null", + "true", "false", + "122", "124", + "0", "0", + "123", "6.37e-8", + "-6.37e-8", "1126240820", + "65536", "65537", + "NaN", "Infinity", + "-Infinity", "ciao", + "", "0", + "123", "12.4", + "null", "undefined", + "[object Object]", "", + ",,,,,,,,,", "Invalid Date", + "[object QMetaObject]", "undefined", + "123", "false", + "null", "QScriptEngine(name = \"\")", }; + +void tst_QScriptValue::toString_makeData(const char* expr) +{ + static QHash toString; + if (toString.isEmpty()) { + toString.reserve(142); + for (unsigned i = 0; i < 142; ++i) + toString.insert(toString_tagArray[i], toString_valueArray[i]); + } + newRow(expr) << toString.value(expr); +} + +void tst_QScriptValue::toString_test(const char*, const QScriptValue& value) +{ + QFETCH(QString, expected); + QCOMPARE(value.toString(), expected); + QCOMPARE(value.toString(), expected); +} + +DEFINE_TEST_FUNCTION(toString) + + +void tst_QScriptValue::toNumber_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString toNumber_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; +static qsreal toNumber_valueArray [] = { + 0, qQNaN(), 0, 1, 0, 122, 124, 0, 0, 123, + 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), + qInf(), qInf(), qQNaN(), qQNaN(), 0, 0, 0, 123, 12.4, qQNaN(), + 0, 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, + 1126240820, 65536, 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), + qQNaN(), qQNaN(), 0, 0, 0, 123, 12.3, qQNaN(), 0, 1, + 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, 65536, + 65537, qQNaN(), qQNaN(), qInf(), qInf(), qQNaN(), qInf(), qInf(), qQNaN(), qQNaN(), + 0, 0, 0, 123, 1.23, 0, qQNaN(), qQNaN(), qQNaN(), 0, + qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), + qQNaN(), 0, qQNaN(), 22, qQNaN(), qQNaN(), qQNaN(), qQNaN(), qQNaN(), 0, + 1, 0, 122, 124, 0, 0, 123, 6.369999999999999e-08, -6.369999999999999e-08, 1126240820, + 65536, 65537, qQNaN(), qInf(), qInf(), qQNaN(), 0, 0, 123, 12.4, + 0, qQNaN(), qQNaN(), 0, qQNaN(), qQNaN(), qQNaN(), qQNaN(), 123, 0, + 0, qQNaN(), }; +void tst_QScriptValue::toNumber_makeData(const char* expr) +{ + static QHash toNumber; + if (toNumber.isEmpty()) { + toNumber.reserve(142); + for (unsigned i = 0; i < 142; ++i) + toNumber.insert(toNumber_tagArray[i], toNumber_valueArray[i]); + } + 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())); + QVERIFY(qIsInf(value.toNumber())); + return; + } + QCOMPARE(value.toNumber(), expected); + QCOMPARE(value.toNumber(), expected); +} + +DEFINE_TEST_FUNCTION(toNumber) + + +void tst_QScriptValue::toBool_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString toBool_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; + +static bool toBool_valueArray [] = { + false, false, + false, true, + false, true, + true, false, + false, true, + true, true, + true, true, + true, false, + false, true, + true, true, + true, true, + true, true, + false, false, + true, true, + true, false, + false, true, + false, true, + true, false, + false, true, + true, true, + true, true, + true, false, + false, true, + true, true, + true, true, + true, true, + false, false, + true, true, + true, false, + false, true, + false, true, + true, false, + false, true, + true, true, + true, true, + true, false, + false, true, + true, true, + true, true, + true, true, + false, false, + true, true, + true, true, + false, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + false, false, + true, false, + true, true, + false, false, + true, true, + true, true, + true, true, + false, true, + true, true, + false, true, + true, true, + false, false, + true, true, + true, true, + true, true, + true, true, + false, true, }; + +void tst_QScriptValue::toBool_makeData(const char* expr) +{ + static QHash toBool; + if (toBool.isEmpty()) { + toBool.reserve(142); + for (unsigned i = 0; i < 142; ++i) + toBool.insert(toBool_tagArray[i], toBool_valueArray[i]); + } + newRow(expr) << toBool.value(expr); +} + +void tst_QScriptValue::toBool_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.toBool(), expected); + QCOMPARE(value.toBool(), expected); +} + +DEFINE_TEST_FUNCTION(toBool) + + +void tst_QScriptValue::toBoolean_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString toBoolean_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; + +static bool toBoolean_valueArray [] = { + false, false, + false, true, + false, true, + true, false, + false, true, + true, true, + true, true, + true, false, + false, true, + true, true, + true, true, + true, true, + false, false, + true, true, + true, false, + false, true, + false, true, + true, false, + false, true, + true, true, + true, true, + true, false, + false, true, + true, true, + true, true, + true, true, + false, false, + true, true, + true, false, + false, true, + false, true, + true, false, + false, true, + true, true, + true, true, + true, false, + false, true, + true, true, + true, true, + true, true, + false, false, + true, true, + true, true, + false, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + true, true, + false, false, + true, false, + true, true, + false, false, + true, true, + true, true, + true, true, + false, true, + true, true, + false, true, + true, true, + false, false, + true, true, + true, true, + true, true, + true, true, + false, true, }; + +void tst_QScriptValue::toBoolean_makeData(const char* expr) +{ + static QHash toBoolean; + if (toBoolean.isEmpty()) { + toBoolean.reserve(142); + for (unsigned i = 0; i < 142; ++i) + toBoolean.insert(toBoolean_tagArray[i], toBoolean_valueArray[i]); + } + newRow(expr) << toBoolean.value(expr); +} + +void tst_QScriptValue::toBoolean_test(const char*, const QScriptValue& value) +{ + QFETCH(bool, expected); + QCOMPARE(value.toBoolean(), expected); + QCOMPARE(value.toBoolean(), expected); +} + +DEFINE_TEST_FUNCTION(toBoolean) + + +void tst_QScriptValue::toInteger_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString toInteger_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; +static qsreal toInteger_valueArray [] = { + 0, 0, 0, 1, 0, 122, 124, 0, 0, 123, + 0, 0, 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0, + qInf(), qInf(), 0, 0, 0, 0, 0, 123, 12, 0, + 0, 1, 0, 122, 124, 0, 0, 123, 0, 0, + 1126240820, 65536, 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(), + 0, 0, 0, 0, 0, 123, 12, 0, 0, 1, + 0, 122, 124, 0, 0, 123, 0, 0, 1126240820, 65536, + 65537, 0, 0, qInf(), qInf(), 0, qInf(), qInf(), 0, 0, + 0, 0, 0, 123, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, + 1, 0, 122, 124, 0, 0, 123, 0, 0, 1126240820, + 65536, 65537, 0, qInf(), qInf(), 0, 0, 0, 123, 12, + 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, + 0, 0, }; +void tst_QScriptValue::toInteger_makeData(const char* expr) +{ + static QHash toInteger; + if (toInteger.isEmpty()) { + toInteger.reserve(142); + for (unsigned i = 0; i < 142; ++i) + toInteger.insert(toInteger_tagArray[i], toInteger_valueArray[i]); + } + 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())); + QVERIFY(qIsInf(value.toInteger())); + return; + } + QCOMPARE(value.toInteger(), expected); + QCOMPARE(value.toInteger(), expected); +} + +DEFINE_TEST_FUNCTION(toInteger) + + +void tst_QScriptValue::toInt32_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString toInt32_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; + +static qint32 toInt32_valueArray [] = { + 0, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 1126240820, 65536, + 65537, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 12, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 1126240820, 65536, + 65537, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 12, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 1126240820, 65536, + 65537, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 1, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 22, + 0, 0, + 0, 0, + 0, 0, + 1, 0, + 122, 124, + 0, 0, + 123, 0, + 0, 1126240820, + 65536, 65537, + 0, 0, + 0, 0, + 0, 0, + 123, 12, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 123, 0, + 0, 0, }; + +void tst_QScriptValue::toInt32_makeData(const char* expr) +{ + static QHash toInt32; + if (toInt32.isEmpty()) { + toInt32.reserve(142); + for (unsigned i = 0; i < 142; ++i) + toInt32.insert(toInt32_tagArray[i], toInt32_valueArray[i]); + } + newRow(expr) << toInt32.value(expr); +} + +void tst_QScriptValue::toInt32_test(const char*, const QScriptValue& value) +{ + QFETCH(qint32, expected); + QCOMPARE(value.toInt32(), expected); + QCOMPARE(value.toInt32(), expected); +} + +DEFINE_TEST_FUNCTION(toInt32) + + +void tst_QScriptValue::toUInt32_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString toUInt32_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; + +static quint32 toUInt32_valueArray [] = { + 0, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 1126240820, 65536, + 65537, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 12, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 1126240820, 65536, + 65537, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 12, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 1126240820, 65536, + 65537, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 1, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 22, + 0, 0, + 0, 0, + 0, 0, + 1, 0, + 122, 124, + 0, 0, + 123, 0, + 0, 1126240820, + 65536, 65537, + 0, 0, + 0, 0, + 0, 0, + 123, 12, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 123, 0, + 0, 0, }; + +void tst_QScriptValue::toUInt32_makeData(const char* expr) +{ + static QHash toUInt32; + if (toUInt32.isEmpty()) { + toUInt32.reserve(142); + for (unsigned i = 0; i < 142; ++i) + toUInt32.insert(toUInt32_tagArray[i], toUInt32_valueArray[i]); + } + newRow(expr) << toUInt32.value(expr); +} + +void tst_QScriptValue::toUInt32_test(const char*, const QScriptValue& value) +{ + QFETCH(quint32, expected); + QCOMPARE(value.toUInt32(), expected); + QCOMPARE(value.toUInt32(), expected); +} + +DEFINE_TEST_FUNCTION(toUInt32) + + +void tst_QScriptValue::toUInt16_initData() +{ + QTest::addColumn("expected"); + initScriptValues(); +} + +static QString toUInt16_tagArray [] = { + "QScriptValue()", + "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()\")", + "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", + "engine->evaluate(\"Undefined\")", + "engine->evaluate(\"Null\")", + "engine->evaluate(\"True\")", + "engine->evaluate(\"False\")", + "engine->evaluate(\"undefined\")", + "engine->evaluate(\"null\")", + "engine->evaluate(\"true\")", + "engine->evaluate(\"false\")", + "engine->evaluate(\"122\")", + "engine->evaluate(\"124\")", + "engine->evaluate(\"0\")", + "engine->evaluate(\"0.0\")", + "engine->evaluate(\"123.0\")", + "engine->evaluate(\"6.37e-8\")", + "engine->evaluate(\"-6.37e-8\")", + "engine->evaluate(\"0x43211234\")", + "engine->evaluate(\"0x10000\")", + "engine->evaluate(\"0x10001\")", + "engine->evaluate(\"NaN\")", + "engine->evaluate(\"Infinity\")", + "engine->evaluate(\"-Infinity\")", + "engine->evaluate(\"'ciao'\")", + "engine->evaluate(\"''\")", + "engine->evaluate(\"'0'\")", + "engine->evaluate(\"'123'\")", + "engine->evaluate(\"'12.4'\")", + "engine->nullValue()", + "engine->undefinedValue()", + "engine->newObject()", + "engine->newArray()", + "engine->newArray(10)", + "engine->newDate(QDateTime())", + "engine->newQMetaObject(&QObject::staticMetaObject)", + "engine->newVariant(QVariant())", + "engine->newVariant(QVariant(123))", + "engine->newVariant(QVariant(false))", + "engine->newQObject(0)", + "engine->newQObject(engine)",}; + +static quint16 toUInt16_valueArray [] = { + 0, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 4660, 0, + 1, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 12, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 4660, 0, + 1, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 12, 0, + 0, 1, + 0, 122, + 124, 0, + 0, 123, + 0, 0, + 4660, 0, + 1, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 123, + 1, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 22, + 0, 0, + 0, 0, + 0, 0, + 1, 0, + 122, 124, + 0, 0, + 123, 0, + 0, 4660, + 0, 1, + 0, 0, + 0, 0, + 0, 0, + 123, 12, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 123, 0, + 0, 0, }; + +void tst_QScriptValue::toUInt16_makeData(const char* expr) +{ + static QHash toUInt16; + if (toUInt16.isEmpty()) { + toUInt16.reserve(142); + for (unsigned i = 0; i < 142; ++i) + toUInt16.insert(toUInt16_tagArray[i], toUInt16_valueArray[i]); + } + newRow(expr) << toUInt16.value(expr); +} + +void tst_QScriptValue::toUInt16_test(const char*, const QScriptValue& value) +{ + QFETCH(quint16, expected); + QCOMPARE(value.toUInt16(), expected); + QCOMPARE(value.toUInt16(), expected); +} + +DEFINE_TEST_FUNCTION(toUInt16) -- cgit v0.12 From 34329f2f7b535cb0904279203ac1c06efb958651 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 4 Mar 2010 14:09:25 +0100 Subject: QScript: Fix crash when converting a null value to a variant. Fixes test tst_QScriptValue::equals(engine->newVariant(QVariant(123)) <=> engine->newArray(10)) Reviewed-by: Jedrzej Nowacki --- src/script/api/qscriptengine.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index 47c5262..024b4d0 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -1591,7 +1591,9 @@ QRegExp QScriptEnginePrivate::toRegExp(JSC::ExecState *exec, JSC::JSValue value) QVariant QScriptEnginePrivate::toVariant(JSC::ExecState *exec, JSC::JSValue value) { - if (isObject(value)) { + if (!value) { + return QVariant(); + } else if (isObject(value)) { if (isVariant(value)) return variantValue(value); #ifndef QT_NO_QOBJECT -- cgit v0.12 From 2701b8389eb9cfbdd65b87b00e5406187c57b297 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Thu, 4 Mar 2010 16:51:37 +0100 Subject: Compile fix for wince Reviewed-by: Leo Cunha --- src/declarative/qml/qdeclarativeengine.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 1711cf1..7ce2d0b 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -953,7 +953,7 @@ QScriptValue QDeclarativeEnginePrivate::formatDate(QScriptContext*ctxt, QScriptE QString format = ctxt->argument(1).toString(); return engine->newVariant(qVariantFromValue(date.toString(format))); } else if (ctxt->argument(1).isNumber()) { - enumFormat = Qt::DateFormat(ctxt->argument(1).toInteger()); + enumFormat = Qt::DateFormat(ctxt->argument(1).toUInt32()); } else return engine->nullValue(); } @@ -973,7 +973,7 @@ QScriptValue QDeclarativeEnginePrivate::formatTime(QScriptContext*ctxt, QScriptE QString format = ctxt->argument(1).toString(); return engine->newVariant(qVariantFromValue(date.toString(format))); } else if (ctxt->argument(1).isNumber()) { - enumFormat = Qt::DateFormat(ctxt->argument(1).toInteger()); + enumFormat = Qt::DateFormat(ctxt->argument(1).toUInt32()); } else return engine->nullValue(); } @@ -993,7 +993,7 @@ QScriptValue QDeclarativeEnginePrivate::formatDateTime(QScriptContext*ctxt, QScr QString format = ctxt->argument(1).toString(); return engine->newVariant(qVariantFromValue(date.toString(format))); } else if (ctxt->argument(1).isNumber()) { - enumFormat = Qt::DateFormat(ctxt->argument(1).toInteger()); + enumFormat = Qt::DateFormat(ctxt->argument(1).toUInt32()); } else return engine->nullValue(); } -- cgit v0.12 From c28a7828a28295d66d37cddca9d23a70f37f2c75 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Thu, 4 Mar 2010 15:53:09 +0100 Subject: Make translucent windows work, and support WA_TranslucentBackground QWS will make a window translucent if the background brush is not opaque. Now we also support the cross-platform way of doing it. This also includes fixes for bugs caused by behavioural changes in the internal windowsurface/backingstore implementation. Task-number: QTBUG-5739 Reviewed-by: Tom --- src/gui/painting/qbackingstore.cpp | 11 ++++++++++- src/gui/painting/qwindowsurface_qws.cpp | 17 ++++++++++++++++- src/gui/painting/qwindowsurface_qws_p.h | 2 ++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp index c73d9f4..8de9eaa 100644 --- a/src/gui/painting/qbackingstore.cpp +++ b/src/gui/painting/qbackingstore.cpp @@ -352,6 +352,10 @@ void QWidgetBackingStore::beginPaint(QRegion &toClean, QWidget *widget, QWindowS // Always flush repainted areas. dirtyOnScreen += toClean; +#ifdef Q_WS_QWS + toClean.translate(tlwOffset); +#endif + #ifdef QT_NO_PAINT_DEBUG windowSurface->beginPaint(toClean); #else @@ -766,7 +770,12 @@ void QWidgetBackingStore::paintWindowDecoration() if (decorationRegion.isEmpty()) return; - windowSurface->beginPaint(decorationRegion); + //### The QWS decorations do not always paint the pixels they promise to paint. + // This causes painting problems with QWSMemorySurface. Since none of the other + // window surfaces actually use the region, passing an empty region is a safe + // workaround. + + windowSurface->beginPaint(QRegion()); QPaintEngine *engine = windowSurface->paintDevice()->paintEngine(); Q_ASSERT(engine); diff --git a/src/gui/painting/qwindowsurface_qws.cpp b/src/gui/painting/qwindowsurface_qws.cpp index d3fc9de..a816ed2 100644 --- a/src/gui/painting/qwindowsurface_qws.cpp +++ b/src/gui/painting/qwindowsurface_qws.cpp @@ -80,7 +80,7 @@ static void qt_insertWindowSurface(int winId, QWSWindowSurface *surface) inline bool isWidgetOpaque(const QWidget *w) { - return w->d_func()->isOpaque; + return w->d_func()->isOpaque && !w->testAttribute(Qt::WA_TranslucentBackground); } static inline QScreen *getScreen(const QWidget *w) @@ -873,6 +873,21 @@ bool QWSMemorySurface::isValid() const return true; } +// ### copied from qwindowsurface_raster.cpp -- should be cross-platform +void QWSMemorySurface::beginPaint(const QRegion &rgn) +{ + if (!isWidgetOpaque(window())) { + QPainter p(&img); + p.setCompositionMode(QPainter::CompositionMode_Source); + const QVector rects = rgn.rects(); + const QColor blank = Qt::transparent; + for (QVector::const_iterator it = rects.begin(); it != rects.end(); ++it) { + p.fillRect(*it, blank); + } + } + QWSWindowSurface::beginPaint(rgn); +} + // from qwindowsurface.cpp extern void qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset); diff --git a/src/gui/painting/qwindowsurface_qws_p.h b/src/gui/painting/qwindowsurface_qws_p.h index a8371c8..30900dc 100644 --- a/src/gui/painting/qwindowsurface_qws_p.h +++ b/src/gui/painting/qwindowsurface_qws_p.h @@ -176,6 +176,8 @@ public: QImage image() const { return img; } QPoint painterOffset() const; + void beginPaint(const QRegion &rgn); + bool lock(int timeout = -1); void unlock(); -- cgit v0.12 From bd1325b892be6c8a57044268fd7b6a66a01e4bf7 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Thu, 4 Mar 2010 17:11:25 +0100 Subject: Create 4.7 def files for Symbian New QtDeclarative module New APIs in existing modules Reviewed-by: Trust Me --- src/s60installs/bwins/QtCoreu.def | 18 + src/s60installs/bwins/QtDeclarativeu.def | 3440 +++++++++++++++++++++++++++++ src/s60installs/bwins/QtGuiu.def | 127 +- src/s60installs/bwins/QtMultimediau.def | 651 ++++++ src/s60installs/bwins/QtNetworku.def | 164 ++ src/s60installs/bwins/QtScriptu.def | 27 +- src/s60installs/bwins/QtTestu.def | 4 +- src/s60installs/eabi/QtCoreu.def | 20 + src/s60installs/eabi/QtDeclarativeu.def | 3479 ++++++++++++++++++++++++++++++ src/s60installs/eabi/QtGuiu.def | 127 +- src/s60installs/eabi/QtMultimediau.def | 651 ++++++ src/s60installs/eabi/QtNetworku.def | 157 ++ src/s60installs/eabi/QtScriptu.def | 41 + src/s60installs/eabi/QtTestu.def | 1 + 14 files changed, 8899 insertions(+), 8 deletions(-) create mode 100644 src/s60installs/bwins/QtDeclarativeu.def create mode 100644 src/s60installs/eabi/QtDeclarativeu.def diff --git a/src/s60installs/bwins/QtCoreu.def b/src/s60installs/bwins/QtCoreu.def index e7e890c..56f0610 100644 --- a/src/s60installs/bwins/QtCoreu.def +++ b/src/s60installs/bwins/QtCoreu.def @@ -4399,4 +4399,22 @@ EXPORTS ?sender@SignalEvent@QStateMachine@@QBEPAVQObject@@XZ @ 4398 NONAME ; class QObject * QStateMachine::SignalEvent::sender(void) const ?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) + ??0QString@@QAE@PBVQChar@@@Z @ 4401 NONAME ; QString::QString(class QChar const *) + ??0QTextDecoder@@QAE@PBVQTextCodec@@V?$QFlags@W4ConversionFlag@QTextCodec@@@@@Z @ 4402 NONAME ; QTextDecoder::QTextDecoder(class QTextCodec const *, class QFlags) + ??0QTextEncoder@@QAE@PBVQTextCodec@@V?$QFlags@W4ConversionFlag@QTextCodec@@@@@Z @ 4403 NONAME ; QTextEncoder::QTextEncoder(class QTextCodec const *, class QFlags) + ??0QVariant@@QAE@ABVQEasingCurve@@@Z @ 4404 NONAME ; QVariant::QVariant(class QEasingCurve const &) + ??5@YAAAVQDataStream@@AAV0@AAVQEasingCurve@@@Z @ 4405 NONAME ; class QDataStream & operator>>(class QDataStream &, class QEasingCurve &) + ??6@YAAAVQDataStream@@AAV0@ABVQEasingCurve@@@Z @ 4406 NONAME ; class QDataStream & operator<<(class QDataStream &, class QEasingCurve const &) + ?append@QListData@@QAEPAPAXH@Z @ 4407 NONAME ; void * * QListData::append(int) + ?detach@QListData@@QAEPAUData@1@H@Z @ 4408 NONAME ; struct QListData::Data * QListData::detach(int) + ?detach_grow@QListData@@QAEPAUData@1@PAHH@Z @ 4409 NONAME ; struct QListData::Data * QListData::detach_grow(int *, int) + ?isSharedWith@QByteArray@@QBE_NABV1@@Z @ 4410 NONAME ; bool QByteArray::isSharedWith(class QByteArray const &) const + ?isSharedWith@QString@@QBE_NABV1@@Z @ 4411 NONAME ; bool QString::isSharedWith(class QString const &) const + ?makeDecoder@QTextCodec@@QBEPAVQTextDecoder@@V?$QFlags@W4ConversionFlag@QTextCodec@@@@@Z @ 4412 NONAME ; class QTextDecoder * QTextCodec::makeDecoder(class QFlags) const + ?makeEncoder@QTextCodec@@QBEPAVQTextEncoder@@V?$QFlags@W4ConversionFlag@QTextCodec@@@@@Z @ 4413 NONAME ; class QTextEncoder * QTextCodec::makeEncoder(class QFlags) const + ?qDecodeDataUrl@@YA?AU?$QPair@VQString@@VQByteArray@@@@ABVQUrl@@@Z @ 4414 NONAME ; struct QPair qDecodeDataUrl(class QUrl const &) + ?qDetectCPUFeatures@@YAIXZ @ 4415 NONAME ; unsigned int qDetectCPUFeatures(void) + ?registerStreamOperators@QMetaType@@SAXHP6AXAAVQDataStream@@PBX@ZP6AX0PAX@Z@Z @ 4416 NONAME ; void QMetaType::registerStreamOperators(int, void (*)(class QDataStream &, void const *), void (*)(class QDataStream &, void *)) + ?replace@QByteArray@@QAEAAV1@HHPBDH@Z @ 4417 NONAME ; class QByteArray & QByteArray::replace(int, int, char const *, int) + ?toEasingCurve@QVariant@@QBE?AVQEasingCurve@@XZ @ 4418 NONAME ; class QEasingCurve QVariant::toEasingCurve(void) const diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def new file mode 100644 index 0000000..05d7ae1 --- /dev/null +++ b/src/s60installs/bwins/QtDeclarativeu.def @@ -0,0 +1,3440 @@ +EXPORTS + ??0QDeclarativeAction@@QAE@ABV0@@Z @ 1 NONAME ; QDeclarativeAction::QDeclarativeAction(class QDeclarativeAction const &) + ??0QDeclarativeAction@@QAE@PAVQObject@@ABVQString@@ABVQVariant@@@Z @ 2 NONAME ; QDeclarativeAction::QDeclarativeAction(class QObject *, class QString const &, class QVariant const &) + ??0QDeclarativeAction@@QAE@XZ @ 3 NONAME ; QDeclarativeAction::QDeclarativeAction(void) + ??0QDeclarativeAnchorChanges@@QAE@PAVQObject@@@Z @ 4 NONAME ; QDeclarativeAnchorChanges::QDeclarativeAnchorChanges(class QObject *) + ??0QDeclarativeAnchors@@QAE@PAVQDeclarativeItem@@PAVQObject@@@Z @ 5 NONAME ; QDeclarativeAnchors::QDeclarativeAnchors(class QDeclarativeItem *, class QObject *) + ??0QDeclarativeAnchors@@QAE@PAVQObject@@@Z @ 6 NONAME ; QDeclarativeAnchors::QDeclarativeAnchors(class QObject *) + ??0QDeclarativeAnimatedImage@@QAE@PAVQDeclarativeItem@@@Z @ 7 NONAME ; QDeclarativeAnimatedImage::QDeclarativeAnimatedImage(class QDeclarativeItem *) + ??0QDeclarativeBasePositioner@@IAE@AAVQDeclarativeBasePositionerPrivate@@W4PositionerType@0@PAVQDeclarativeItem@@@Z @ 8 NONAME ; QDeclarativeBasePositioner::QDeclarativeBasePositioner(class QDeclarativeBasePositionerPrivate &, enum QDeclarativeBasePositioner::PositionerType, class QDeclarativeItem *) + ??0QDeclarativeBasePositioner@@QAE@W4PositionerType@0@PAVQDeclarativeItem@@@Z @ 9 NONAME ; QDeclarativeBasePositioner::QDeclarativeBasePositioner(enum QDeclarativeBasePositioner::PositionerType, class QDeclarativeItem *) + ??0QDeclarativeBehavior@@QAE@PAVQObject@@@Z @ 10 NONAME ; QDeclarativeBehavior::QDeclarativeBehavior(class QObject *) + ??0QDeclarativeBind@@QAE@PAVQObject@@@Z @ 11 NONAME ; QDeclarativeBind::QDeclarativeBind(class QObject *) + ??0QDeclarativeBorderImage@@QAE@PAVQDeclarativeItem@@@Z @ 12 NONAME ; QDeclarativeBorderImage::QDeclarativeBorderImage(class QDeclarativeItem *) + ??0QDeclarativeColumn@@QAE@PAVQDeclarativeItem@@@Z @ 13 NONAME ; QDeclarativeColumn::QDeclarativeColumn(class QDeclarativeItem *) + ??0QDeclarativeCompiler@@QAE@XZ @ 14 NONAME ; QDeclarativeCompiler::QDeclarativeCompiler(void) + ??0QDeclarativeComponent@@AAE@PAVQDeclarativeEngine@@PAVQDeclarativeCompiledData@@HHPAVQObject@@@Z @ 15 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QDeclarativeCompiledData *, int, int, class QObject *) + ??0QDeclarativeComponent@@IAE@AAVQDeclarativeComponentPrivate@@PAVQObject@@@Z @ 16 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeComponentPrivate &, class QObject *) + ??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@ABVQString@@PAVQObject@@@Z @ 17 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QString const &, class QObject *) + ??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@PAVQObject@@@Z @ 18 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QUrl const &, class QObject *) + ??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@PAVQObject@@@Z @ 19 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QObject *) + ??0QDeclarativeComponent@@QAE@PAVQObject@@@Z @ 20 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QObject *) + ??0QDeclarativeConnections@@QAE@PAVQObject@@@Z @ 21 NONAME ; QDeclarativeConnections::QDeclarativeConnections(class QObject *) + ??0QDeclarativeContext@@AAE@PAV0@PAVQObject@@_N@Z @ 22 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeContext *, class QObject *, bool) + ??0QDeclarativeContext@@AAE@PAVQDeclarativeEngine@@_N@Z @ 23 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeEngine *, bool) + ??0QDeclarativeContext@@QAE@PAV0@PAVQObject@@@Z @ 24 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeContext *, class QObject *) + ??0QDeclarativeContext@@QAE@PAVQDeclarativeEngine@@PAVQObject@@@Z @ 25 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeEngine *, class QObject *) + ??0QDeclarativeContextPrivate@@QAE@XZ @ 26 NONAME ; QDeclarativeContextPrivate::QDeclarativeContextPrivate(void) + ??0QDeclarativeCurve@@QAE@PAVQObject@@@Z @ 27 NONAME ; QDeclarativeCurve::QDeclarativeCurve(class QObject *) + ??0QDeclarativeCustomParserNode@@QAE@ABV0@@Z @ 28 NONAME ; QDeclarativeCustomParserNode::QDeclarativeCustomParserNode(class QDeclarativeCustomParserNode const &) + ??0QDeclarativeCustomParserNode@@QAE@XZ @ 29 NONAME ; QDeclarativeCustomParserNode::QDeclarativeCustomParserNode(void) + ??0QDeclarativeCustomParserProperty@@QAE@ABV0@@Z @ 30 NONAME ; QDeclarativeCustomParserProperty::QDeclarativeCustomParserProperty(class QDeclarativeCustomParserProperty const &) + ??0QDeclarativeCustomParserProperty@@QAE@XZ @ 31 NONAME ; QDeclarativeCustomParserProperty::QDeclarativeCustomParserProperty(void) + ??0QDeclarativeDateTimeFormatter@@QAE@PAVQObject@@@Z @ 32 NONAME ; QDeclarativeDateTimeFormatter::QDeclarativeDateTimeFormatter(class QObject *) + ??0QDeclarativeDebugClient@@QAE@ABVQString@@PAVQDeclarativeDebugConnection@@@Z @ 33 NONAME ; QDeclarativeDebugClient::QDeclarativeDebugClient(class QString const &, class QDeclarativeDebugConnection *) + ??0QDeclarativeDebugConnection@@QAE@PAVQObject@@@Z @ 34 NONAME ; QDeclarativeDebugConnection::QDeclarativeDebugConnection(class QObject *) + ??0QDeclarativeDebugContextReference@@QAE@ABV0@@Z @ 35 NONAME ; QDeclarativeDebugContextReference::QDeclarativeDebugContextReference(class QDeclarativeDebugContextReference const &) + ??0QDeclarativeDebugContextReference@@QAE@XZ @ 36 NONAME ; QDeclarativeDebugContextReference::QDeclarativeDebugContextReference(void) + ??0QDeclarativeDebugEngineReference@@QAE@ABV0@@Z @ 37 NONAME ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(class QDeclarativeDebugEngineReference const &) + ??0QDeclarativeDebugEngineReference@@QAE@H@Z @ 38 NONAME ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(int) + ??0QDeclarativeDebugEngineReference@@QAE@XZ @ 39 NONAME ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(void) + ??0QDeclarativeDebugEnginesQuery@@AAE@PAVQObject@@@Z @ 40 NONAME ; QDeclarativeDebugEnginesQuery::QDeclarativeDebugEnginesQuery(class QObject *) + ??0QDeclarativeDebugExpressionQuery@@AAE@PAVQObject@@@Z @ 41 NONAME ; QDeclarativeDebugExpressionQuery::QDeclarativeDebugExpressionQuery(class QObject *) + ??0QDeclarativeDebugFileReference@@QAE@ABV0@@Z @ 42 NONAME ; QDeclarativeDebugFileReference::QDeclarativeDebugFileReference(class QDeclarativeDebugFileReference const &) + ??0QDeclarativeDebugFileReference@@QAE@XZ @ 43 NONAME ; QDeclarativeDebugFileReference::QDeclarativeDebugFileReference(void) + ??0QDeclarativeDebugObjectExpressionWatch@@QAE@PAVQObject@@@Z @ 44 NONAME ; QDeclarativeDebugObjectExpressionWatch::QDeclarativeDebugObjectExpressionWatch(class QObject *) + ??0QDeclarativeDebugObjectQuery@@AAE@PAVQObject@@@Z @ 45 NONAME ; QDeclarativeDebugObjectQuery::QDeclarativeDebugObjectQuery(class QObject *) + ??0QDeclarativeDebugObjectReference@@QAE@ABV0@@Z @ 46 NONAME ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(class QDeclarativeDebugObjectReference const &) + ??0QDeclarativeDebugObjectReference@@QAE@H@Z @ 47 NONAME ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(int) + ??0QDeclarativeDebugObjectReference@@QAE@XZ @ 48 NONAME ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(void) + ??0QDeclarativeDebugPropertyReference@@QAE@ABV0@@Z @ 49 NONAME ; QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference(class QDeclarativeDebugPropertyReference const &) + ??0QDeclarativeDebugPropertyReference@@QAE@XZ @ 50 NONAME ; QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference(void) + ??0QDeclarativeDebugPropertyWatch@@QAE@PAVQObject@@@Z @ 51 NONAME ; QDeclarativeDebugPropertyWatch::QDeclarativeDebugPropertyWatch(class QObject *) + ??0QDeclarativeDebugQuery@@IAE@PAVQObject@@@Z @ 52 NONAME ; QDeclarativeDebugQuery::QDeclarativeDebugQuery(class QObject *) + ??0QDeclarativeDebugRootContextQuery@@AAE@PAVQObject@@@Z @ 53 NONAME ; QDeclarativeDebugRootContextQuery::QDeclarativeDebugRootContextQuery(class QObject *) + ??0QDeclarativeDebugService@@QAE@ABVQString@@PAVQObject@@@Z @ 54 NONAME ; QDeclarativeDebugService::QDeclarativeDebugService(class QString const &, class QObject *) + ??0QDeclarativeDebugWatch@@QAE@PAVQObject@@@Z @ 55 NONAME ; QDeclarativeDebugWatch::QDeclarativeDebugWatch(class QObject *) + ??0QDeclarativeDomComponent@@QAE@ABV0@@Z @ 56 NONAME ; QDeclarativeDomComponent::QDeclarativeDomComponent(class QDeclarativeDomComponent const &) + ??0QDeclarativeDomComponent@@QAE@XZ @ 57 NONAME ; QDeclarativeDomComponent::QDeclarativeDomComponent(void) + ??0QDeclarativeDomDocument@@QAE@ABV0@@Z @ 58 NONAME ; QDeclarativeDomDocument::QDeclarativeDomDocument(class QDeclarativeDomDocument const &) + ??0QDeclarativeDomDocument@@QAE@XZ @ 59 NONAME ; QDeclarativeDomDocument::QDeclarativeDomDocument(void) + ??0QDeclarativeDomDynamicProperty@@QAE@ABV0@@Z @ 60 NONAME ; QDeclarativeDomDynamicProperty::QDeclarativeDomDynamicProperty(class QDeclarativeDomDynamicProperty const &) + ??0QDeclarativeDomDynamicProperty@@QAE@XZ @ 61 NONAME ; QDeclarativeDomDynamicProperty::QDeclarativeDomDynamicProperty(void) + ??0QDeclarativeDomImport@@QAE@ABV0@@Z @ 62 NONAME ; QDeclarativeDomImport::QDeclarativeDomImport(class QDeclarativeDomImport const &) + ??0QDeclarativeDomImport@@QAE@XZ @ 63 NONAME ; QDeclarativeDomImport::QDeclarativeDomImport(void) + ??0QDeclarativeDomList@@QAE@ABV0@@Z @ 64 NONAME ; QDeclarativeDomList::QDeclarativeDomList(class QDeclarativeDomList const &) + ??0QDeclarativeDomList@@QAE@XZ @ 65 NONAME ; QDeclarativeDomList::QDeclarativeDomList(void) + ??0QDeclarativeDomObject@@QAE@ABV0@@Z @ 66 NONAME ; QDeclarativeDomObject::QDeclarativeDomObject(class QDeclarativeDomObject const &) + ??0QDeclarativeDomObject@@QAE@XZ @ 67 NONAME ; QDeclarativeDomObject::QDeclarativeDomObject(void) + ??0QDeclarativeDomProperty@@QAE@ABV0@@Z @ 68 NONAME ; QDeclarativeDomProperty::QDeclarativeDomProperty(class QDeclarativeDomProperty const &) + ??0QDeclarativeDomProperty@@QAE@XZ @ 69 NONAME ; QDeclarativeDomProperty::QDeclarativeDomProperty(void) + ??0QDeclarativeDomValue@@QAE@ABV0@@Z @ 70 NONAME ; QDeclarativeDomValue::QDeclarativeDomValue(class QDeclarativeDomValue const &) + ??0QDeclarativeDomValue@@QAE@XZ @ 71 NONAME ; QDeclarativeDomValue::QDeclarativeDomValue(void) + ??0QDeclarativeDomValueBinding@@QAE@ABV0@@Z @ 72 NONAME ; QDeclarativeDomValueBinding::QDeclarativeDomValueBinding(class QDeclarativeDomValueBinding const &) + ??0QDeclarativeDomValueBinding@@QAE@XZ @ 73 NONAME ; QDeclarativeDomValueBinding::QDeclarativeDomValueBinding(void) + ??0QDeclarativeDomValueLiteral@@QAE@ABV0@@Z @ 74 NONAME ; QDeclarativeDomValueLiteral::QDeclarativeDomValueLiteral(class QDeclarativeDomValueLiteral const &) + ??0QDeclarativeDomValueLiteral@@QAE@XZ @ 75 NONAME ; QDeclarativeDomValueLiteral::QDeclarativeDomValueLiteral(void) + ??0QDeclarativeDomValueValueInterceptor@@QAE@ABV0@@Z @ 76 NONAME ; QDeclarativeDomValueValueInterceptor::QDeclarativeDomValueValueInterceptor(class QDeclarativeDomValueValueInterceptor const &) + ??0QDeclarativeDomValueValueInterceptor@@QAE@XZ @ 77 NONAME ; QDeclarativeDomValueValueInterceptor::QDeclarativeDomValueValueInterceptor(void) + ??0QDeclarativeDomValueValueSource@@QAE@ABV0@@Z @ 78 NONAME ; QDeclarativeDomValueValueSource::QDeclarativeDomValueValueSource(class QDeclarativeDomValueValueSource const &) + ??0QDeclarativeDomValueValueSource@@QAE@XZ @ 79 NONAME ; QDeclarativeDomValueValueSource::QDeclarativeDomValueValueSource(void) + ??0QDeclarativeDrag@@QAE@PAVQObject@@@Z @ 80 NONAME ; QDeclarativeDrag::QDeclarativeDrag(class QObject *) + ??0QDeclarativeEaseFollow@@QAE@PAVQObject@@@Z @ 81 NONAME ; QDeclarativeEaseFollow::QDeclarativeEaseFollow(class QObject *) + ??0QDeclarativeEngine@@QAE@PAVQObject@@@Z @ 82 NONAME ; QDeclarativeEngine::QDeclarativeEngine(class QObject *) + ??0QDeclarativeEngineDebug@@QAE@PAVQDeclarativeDebugConnection@@PAVQObject@@@Z @ 83 NONAME ; QDeclarativeEngineDebug::QDeclarativeEngineDebug(class QDeclarativeDebugConnection *, class QObject *) + ??0QDeclarativeError@@QAE@ABV0@@Z @ 84 NONAME ; QDeclarativeError::QDeclarativeError(class QDeclarativeError const &) + ??0QDeclarativeError@@QAE@XZ @ 85 NONAME ; QDeclarativeError::QDeclarativeError(void) + ??0QDeclarativeExpression@@IAE@PAVQDeclarativeContext@@ABVQString@@PAVQObject@@AAVQDeclarativeExpressionPrivate@@@Z @ 86 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, class QString const &, class QObject *, class QDeclarativeExpressionPrivate &) + ??0QDeclarativeExpression@@IAE@PAVQDeclarativeContext@@PAXPAVQDeclarativeRefCount@@PAVQObject@@ABVQString@@HAAVQDeclarativeExpressionPrivate@@@Z @ 87 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, void *, class QDeclarativeRefCount *, class QObject *, class QString const &, int, class QDeclarativeExpressionPrivate &) + ??0QDeclarativeExpression@@QAE@PAVQDeclarativeContext@@ABVQString@@PAVQObject@@@Z @ 88 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, class QString const &, class QObject *) + ??0QDeclarativeExpression@@QAE@XZ @ 89 NONAME ; QDeclarativeExpression::QDeclarativeExpression(void) + ??0QDeclarativeExtensionPlugin@@QAE@PAVQObject@@@Z @ 90 NONAME ; QDeclarativeExtensionPlugin::QDeclarativeExtensionPlugin(class QObject *) + ??0QDeclarativeFlickable@@IAE@AAVQDeclarativeFlickablePrivate@@PAVQDeclarativeItem@@@Z @ 91 NONAME ; QDeclarativeFlickable::QDeclarativeFlickable(class QDeclarativeFlickablePrivate &, class QDeclarativeItem *) + ??0QDeclarativeFlickable@@QAE@PAVQDeclarativeItem@@@Z @ 92 NONAME ; QDeclarativeFlickable::QDeclarativeFlickable(class QDeclarativeItem *) + ??0QDeclarativeFlipable@@QAE@PAVQDeclarativeItem@@@Z @ 93 NONAME ; QDeclarativeFlipable::QDeclarativeFlipable(class QDeclarativeItem *) + ??0QDeclarativeFlow@@QAE@PAVQDeclarativeItem@@@Z @ 94 NONAME ; QDeclarativeFlow::QDeclarativeFlow(class QDeclarativeItem *) + ??0QDeclarativeFocusPanel@@QAE@PAVQDeclarativeItem@@@Z @ 95 NONAME ; QDeclarativeFocusPanel::QDeclarativeFocusPanel(class QDeclarativeItem *) + ??0QDeclarativeFocusScope@@QAE@PAVQDeclarativeItem@@@Z @ 96 NONAME ; QDeclarativeFocusScope::QDeclarativeFocusScope(class QDeclarativeItem *) + ??0QDeclarativeFontLoader@@QAE@PAVQObject@@@Z @ 97 NONAME ; QDeclarativeFontLoader::QDeclarativeFontLoader(class QObject *) + ??0QDeclarativeGradient@@QAE@PAVQObject@@@Z @ 98 NONAME ; QDeclarativeGradient::QDeclarativeGradient(class QObject *) + ??0QDeclarativeGradientStop@@QAE@PAVQObject@@@Z @ 99 NONAME ; QDeclarativeGradientStop::QDeclarativeGradientStop(class QObject *) + ??0QDeclarativeGraphicsObjectContainer@@QAE@PAVQDeclarativeItem@@@Z @ 100 NONAME ; QDeclarativeGraphicsObjectContainer::QDeclarativeGraphicsObjectContainer(class QDeclarativeItem *) + ??0QDeclarativeGrid@@QAE@PAVQDeclarativeItem@@@Z @ 101 NONAME ; QDeclarativeGrid::QDeclarativeGrid(class QDeclarativeItem *) + ??0QDeclarativeGridScaledImage@@QAE@ABV0@@Z @ 102 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(class QDeclarativeGridScaledImage const &) + ??0QDeclarativeGridScaledImage@@QAE@PAVQIODevice@@@Z @ 103 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(class QIODevice *) + ??0QDeclarativeGridScaledImage@@QAE@XZ @ 104 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(void) + ??0QDeclarativeGridView@@QAE@PAVQDeclarativeItem@@@Z @ 105 NONAME ; QDeclarativeGridView::QDeclarativeGridView(class QDeclarativeItem *) + ??0QDeclarativeImage@@IAE@AAVQDeclarativeImagePrivate@@PAVQDeclarativeItem@@@Z @ 106 NONAME ; QDeclarativeImage::QDeclarativeImage(class QDeclarativeImagePrivate &, class QDeclarativeItem *) + ??0QDeclarativeImage@@QAE@PAVQDeclarativeItem@@@Z @ 107 NONAME ; QDeclarativeImage::QDeclarativeImage(class QDeclarativeItem *) + ??0QDeclarativeImageBase@@IAE@AAVQDeclarativeImageBasePrivate@@PAVQDeclarativeItem@@@Z @ 108 NONAME ; QDeclarativeImageBase::QDeclarativeImageBase(class QDeclarativeImageBasePrivate &, class QDeclarativeItem *) + ??0QDeclarativeInfo@@QAE@PBVQObject@@@Z @ 109 NONAME ; QDeclarativeInfo::QDeclarativeInfo(class QObject const *) + ??0QDeclarativeInstruction@@QAE@XZ @ 110 NONAME ; QDeclarativeInstruction::QDeclarativeInstruction(void) + ??0QDeclarativeItem@@IAE@AAVQDeclarativeItemPrivate@@PAV0@@Z @ 111 NONAME ; QDeclarativeItem::QDeclarativeItem(class QDeclarativeItemPrivate &, class QDeclarativeItem *) + ??0QDeclarativeItem@@QAE@PAV0@@Z @ 112 NONAME ; QDeclarativeItem::QDeclarativeItem(class QDeclarativeItem *) + ??0QDeclarativeListAccessor@@QAE@XZ @ 113 NONAME ; QDeclarativeListAccessor::QDeclarativeListAccessor(void) + ??0QDeclarativeListModel@@QAE@PAVQObject@@@Z @ 114 NONAME ; QDeclarativeListModel::QDeclarativeListModel(class QObject *) + ??0QDeclarativeListReference@@QAE@ABV0@@Z @ 115 NONAME ; QDeclarativeListReference::QDeclarativeListReference(class QDeclarativeListReference const &) + ??0QDeclarativeListReference@@QAE@PAVQObject@@PBDPAVQDeclarativeEngine@@@Z @ 116 NONAME ; QDeclarativeListReference::QDeclarativeListReference(class QObject *, char const *, class QDeclarativeEngine *) + ??0QDeclarativeListReference@@QAE@XZ @ 117 NONAME ; QDeclarativeListReference::QDeclarativeListReference(void) + ??0QDeclarativeListView@@QAE@PAVQDeclarativeItem@@@Z @ 118 NONAME ; QDeclarativeListView::QDeclarativeListView(class QDeclarativeItem *) + ??0QDeclarativeLoader@@QAE@PAVQDeclarativeItem@@@Z @ 119 NONAME ; QDeclarativeLoader::QDeclarativeLoader(class QDeclarativeItem *) + ??0QDeclarativeMouseArea@@QAE@PAVQDeclarativeItem@@@Z @ 120 NONAME ; QDeclarativeMouseArea::QDeclarativeMouseArea(class QDeclarativeItem *) + ??0QDeclarativeNumberFormatter@@QAE@PAVQObject@@@Z @ 121 NONAME ; QDeclarativeNumberFormatter::QDeclarativeNumberFormatter(class QObject *) + ??0QDeclarativeOpenMetaObject@@QAE@PAVQObject@@PAVQDeclarativeOpenMetaObjectType@@_N@Z @ 122 NONAME ; QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(class QObject *, class QDeclarativeOpenMetaObjectType *, bool) + ??0QDeclarativeOpenMetaObject@@QAE@PAVQObject@@_N@Z @ 123 NONAME ; QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(class QObject *, bool) + ??0QDeclarativeOpenMetaObjectType@@QAE@PBUQMetaObject@@PAVQDeclarativeEngine@@@Z @ 124 NONAME ; QDeclarativeOpenMetaObjectType::QDeclarativeOpenMetaObjectType(struct QMetaObject const *, class QDeclarativeEngine *) + ??0QDeclarativePaintedItem@@IAE@AAVQDeclarativePaintedItemPrivate@@PAVQDeclarativeItem@@@Z @ 125 NONAME ; QDeclarativePaintedItem::QDeclarativePaintedItem(class QDeclarativePaintedItemPrivate &, class QDeclarativeItem *) + ??0QDeclarativePaintedItem@@QAE@PAVQDeclarativeItem@@@Z @ 126 NONAME ; QDeclarativePaintedItem::QDeclarativePaintedItem(class QDeclarativeItem *) + ??0QDeclarativeParentChange@@QAE@PAVQObject@@@Z @ 127 NONAME ; QDeclarativeParentChange::QDeclarativeParentChange(class QObject *) + ??0QDeclarativeParserStatus@@QAE@XZ @ 128 NONAME ; QDeclarativeParserStatus::QDeclarativeParserStatus(void) + ??0QDeclarativeParticleMotion@@QAE@PAVQObject@@@Z @ 129 NONAME ; QDeclarativeParticleMotion::QDeclarativeParticleMotion(class QObject *) + ??0QDeclarativeParticleMotionGravity@@QAE@PAVQObject@@@Z @ 130 NONAME ; QDeclarativeParticleMotionGravity::QDeclarativeParticleMotionGravity(class QObject *) + ??0QDeclarativeParticleMotionLinear@@QAE@PAVQObject@@@Z @ 131 NONAME ; QDeclarativeParticleMotionLinear::QDeclarativeParticleMotionLinear(class QObject *) + ??0QDeclarativeParticleMotionWander@@QAE@XZ @ 132 NONAME ; QDeclarativeParticleMotionWander::QDeclarativeParticleMotionWander(void) + ??0QDeclarativeParticles@@QAE@PAVQDeclarativeItem@@@Z @ 133 NONAME ; QDeclarativeParticles::QDeclarativeParticles(class QDeclarativeItem *) + ??0QDeclarativePath@@QAE@PAVQObject@@@Z @ 134 NONAME ; QDeclarativePath::QDeclarativePath(class QObject *) + ??0QDeclarativePathAttribute@@QAE@PAVQObject@@@Z @ 135 NONAME ; QDeclarativePathAttribute::QDeclarativePathAttribute(class QObject *) + ??0QDeclarativePathCubic@@QAE@PAVQObject@@@Z @ 136 NONAME ; QDeclarativePathCubic::QDeclarativePathCubic(class QObject *) + ??0QDeclarativePathElement@@QAE@PAVQObject@@@Z @ 137 NONAME ; QDeclarativePathElement::QDeclarativePathElement(class QObject *) + ??0QDeclarativePathLine@@QAE@PAVQObject@@@Z @ 138 NONAME ; QDeclarativePathLine::QDeclarativePathLine(class QObject *) + ??0QDeclarativePathPercent@@QAE@PAVQObject@@@Z @ 139 NONAME ; QDeclarativePathPercent::QDeclarativePathPercent(class QObject *) + ??0QDeclarativePathQuad@@QAE@PAVQObject@@@Z @ 140 NONAME ; QDeclarativePathQuad::QDeclarativePathQuad(class QObject *) + ??0QDeclarativePathView@@QAE@PAVQDeclarativeItem@@@Z @ 141 NONAME ; QDeclarativePathView::QDeclarativePathView(class QDeclarativeItem *) + ??0QDeclarativePen@@QAE@PAVQObject@@@Z @ 142 NONAME ; QDeclarativePen::QDeclarativePen(class QObject *) + ??0QDeclarativePixmapReply@@AAE@PAVQDeclarativeImageReader@@ABVQUrl@@@Z @ 143 NONAME ; QDeclarativePixmapReply::QDeclarativePixmapReply(class QDeclarativeImageReader *, class QUrl const &) + ??0QDeclarativeProperty@@QAE@ABV0@@Z @ 144 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QDeclarativeProperty const &) + ??0QDeclarativeProperty@@QAE@PAVQObject@@@Z @ 145 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *) + ??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@@Z @ 146 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &) + ??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@@Z @ 147 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &, class QDeclarativeContext *) + ??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeEngine@@@Z @ 148 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &, class QDeclarativeEngine *) + ??0QDeclarativeProperty@@QAE@PAVQObject@@PAVQDeclarativeContext@@@Z @ 149 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QDeclarativeContext *) + ??0QDeclarativeProperty@@QAE@PAVQObject@@PAVQDeclarativeEngine@@@Z @ 150 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QDeclarativeEngine *) + ??0QDeclarativeProperty@@QAE@XZ @ 151 NONAME ; QDeclarativeProperty::QDeclarativeProperty(void) + ??0QDeclarativePropertyChanges@@QAE@XZ @ 152 NONAME ; QDeclarativePropertyChanges::QDeclarativePropertyChanges(void) + ??0QDeclarativePropertyMap@@QAE@PAVQObject@@@Z @ 153 NONAME ; QDeclarativePropertyMap::QDeclarativePropertyMap(class QObject *) + ??0QDeclarativePropertyValueInterceptor@@QAE@XZ @ 154 NONAME ; QDeclarativePropertyValueInterceptor::QDeclarativePropertyValueInterceptor(void) + ??0QDeclarativePropertyValueSource@@QAE@XZ @ 155 NONAME ; QDeclarativePropertyValueSource::QDeclarativePropertyValueSource(void) + ??0QDeclarativeRectangle@@QAE@PAVQDeclarativeItem@@@Z @ 156 NONAME ; QDeclarativeRectangle::QDeclarativeRectangle(class QDeclarativeItem *) + ??0QDeclarativeRepeater@@QAE@PAVQDeclarativeItem@@@Z @ 157 NONAME ; QDeclarativeRepeater::QDeclarativeRepeater(class QDeclarativeItem *) + ??0QDeclarativeRow@@QAE@PAVQDeclarativeItem@@@Z @ 158 NONAME ; QDeclarativeRow::QDeclarativeRow(class QDeclarativeItem *) + ??0QDeclarativeScaleGrid@@QAE@PAVQObject@@@Z @ 159 NONAME ; QDeclarativeScaleGrid::QDeclarativeScaleGrid(class QObject *) + ??0QDeclarativeScriptString@@QAE@ABV0@@Z @ 160 NONAME ; QDeclarativeScriptString::QDeclarativeScriptString(class QDeclarativeScriptString const &) + ??0QDeclarativeScriptString@@QAE@XZ @ 161 NONAME ; QDeclarativeScriptString::QDeclarativeScriptString(void) + ??0QDeclarativeSpringFollow@@QAE@PAVQObject@@@Z @ 162 NONAME ; QDeclarativeSpringFollow::QDeclarativeSpringFollow(class QObject *) + ??0QDeclarativeState@@QAE@PAVQObject@@@Z @ 163 NONAME ; QDeclarativeState::QDeclarativeState(class QObject *) + ??0QDeclarativeStateChangeScript@@QAE@PAVQObject@@@Z @ 164 NONAME ; QDeclarativeStateChangeScript::QDeclarativeStateChangeScript(class QObject *) + ??0QDeclarativeStateGroup@@QAE@PAVQObject@@@Z @ 165 NONAME ; QDeclarativeStateGroup::QDeclarativeStateGroup(class QObject *) + ??0QDeclarativeStateOperation@@IAE@AAVQObjectPrivate@@PAVQObject@@@Z @ 166 NONAME ; QDeclarativeStateOperation::QDeclarativeStateOperation(class QObjectPrivate &, class QObject *) + ??0QDeclarativeStateOperation@@QAE@PAVQObject@@@Z @ 167 NONAME ; QDeclarativeStateOperation::QDeclarativeStateOperation(class QObject *) + ??0QDeclarativeStyledText@@AAE@ABVQString@@AAVQTextLayout@@@Z @ 168 NONAME ; QDeclarativeStyledText::QDeclarativeStyledText(class QString const &, class QTextLayout &) + ??0QDeclarativeSystemPalette@@QAE@PAVQObject@@@Z @ 169 NONAME ; QDeclarativeSystemPalette::QDeclarativeSystemPalette(class QObject *) + ??0QDeclarativeText@@QAE@PAVQDeclarativeItem@@@Z @ 170 NONAME ; QDeclarativeText::QDeclarativeText(class QDeclarativeItem *) + ??0QDeclarativeTextEdit@@QAE@PAVQDeclarativeItem@@@Z @ 171 NONAME ; QDeclarativeTextEdit::QDeclarativeTextEdit(class QDeclarativeItem *) + ??0QDeclarativeTextInput@@QAE@PAVQDeclarativeItem@@@Z @ 172 NONAME ; QDeclarativeTextInput::QDeclarativeTextInput(class QDeclarativeItem *) + ??0QDeclarativeTimer@@QAE@PAVQObject@@@Z @ 173 NONAME ; QDeclarativeTimer::QDeclarativeTimer(class QObject *) + ??0QDeclarativeTransition@@QAE@PAVQObject@@@Z @ 174 NONAME ; QDeclarativeTransition::QDeclarativeTransition(class QObject *) + ??0QDeclarativeType@@AAE@HABURegisterInterface@QDeclarativePrivate@@@Z @ 175 NONAME ; QDeclarativeType::QDeclarativeType(int, struct QDeclarativePrivate::RegisterInterface const &) + ??0QDeclarativeType@@AAE@HABURegisterType@QDeclarativePrivate@@@Z @ 176 NONAME ; QDeclarativeType::QDeclarativeType(int, struct QDeclarativePrivate::RegisterType const &) + ??0QDeclarativeValueType@@QAE@PAVQObject@@@Z @ 177 NONAME ; QDeclarativeValueType::QDeclarativeValueType(class QObject *) + ??0QDeclarativeValueTypeFactory@@QAE@XZ @ 178 NONAME ; QDeclarativeValueTypeFactory::QDeclarativeValueTypeFactory(void) + ??0QDeclarativeView@@QAE@ABVQUrl@@PAVQWidget@@@Z @ 179 NONAME ; QDeclarativeView::QDeclarativeView(class QUrl const &, class QWidget *) + ??0QDeclarativeView@@QAE@PAVQWidget@@@Z @ 180 NONAME ; QDeclarativeView::QDeclarativeView(class QWidget *) + ??0QDeclarativeViewSection@@QAE@PAVQObject@@@Z @ 181 NONAME ; QDeclarativeViewSection::QDeclarativeViewSection(class QObject *) + ??0QDeclarativeVisualDataModel@@QAE@PAVQDeclarativeContext@@@Z @ 182 NONAME ; QDeclarativeVisualDataModel::QDeclarativeVisualDataModel(class QDeclarativeContext *) + ??0QDeclarativeVisualDataModel@@QAE@XZ @ 183 NONAME ; QDeclarativeVisualDataModel::QDeclarativeVisualDataModel(void) + ??0QDeclarativeVisualItemModel@@QAE@XZ @ 184 NONAME ; QDeclarativeVisualItemModel::QDeclarativeVisualItemModel(void) + ??0QDeclarativeVisualModel@@IAE@AAVQObjectPrivate@@PAVQObject@@@Z @ 185 NONAME ; QDeclarativeVisualModel::QDeclarativeVisualModel(class QObjectPrivate &, class QObject *) + ??0QDeclarativeVisualModel@@QAE@XZ @ 186 NONAME ; QDeclarativeVisualModel::QDeclarativeVisualModel(void) + ??0QDeclarativeWebPage@@QAE@PAVQDeclarativeWebView@@@Z @ 187 NONAME ; QDeclarativeWebPage::QDeclarativeWebPage(class QDeclarativeWebView *) + ??0QDeclarativeWebView@@QAE@PAVQDeclarativeItem@@@Z @ 188 NONAME ; QDeclarativeWebView::QDeclarativeWebView(class QDeclarativeItem *) + ??0QDeclarativeXmlListModel@@QAE@PAVQObject@@@Z @ 189 NONAME ; QDeclarativeXmlListModel::QDeclarativeXmlListModel(class QObject *) + ??0QDeclarativeXmlListModelRole@@QAE@XZ @ 190 NONAME ; QDeclarativeXmlListModelRole::QDeclarativeXmlListModelRole(void) + ??0QListModelInterface@@IAE@AAVQObjectPrivate@@PAVQObject@@@Z @ 191 NONAME ; QListModelInterface::QListModelInterface(class QObjectPrivate &, class QObject *) + ??0QListModelInterface@@QAE@PAVQObject@@@Z @ 192 NONAME ; QListModelInterface::QListModelInterface(class QObject *) + ??0QMetaEnumBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 193 NONAME ; QMetaEnumBuilder::QMetaEnumBuilder(class QMetaObjectBuilder const *, int) + ??0QMetaEnumBuilder@@QAE@XZ @ 194 NONAME ; QMetaEnumBuilder::QMetaEnumBuilder(void) + ??0QMetaMethodBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 195 NONAME ; QMetaMethodBuilder::QMetaMethodBuilder(class QMetaObjectBuilder const *, int) + ??0QMetaMethodBuilder@@QAE@XZ @ 196 NONAME ; QMetaMethodBuilder::QMetaMethodBuilder(void) + ??0QMetaObjectBuilder@@QAE@PBUQMetaObject@@V?$QFlags@W4AddMember@QMetaObjectBuilder@@@@@Z @ 197 NONAME ; QMetaObjectBuilder::QMetaObjectBuilder(struct QMetaObject const *, class QFlags) + ??0QMetaObjectBuilder@@QAE@XZ @ 198 NONAME ; QMetaObjectBuilder::QMetaObjectBuilder(void) + ??0QMetaPropertyBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 199 NONAME ; QMetaPropertyBuilder::QMetaPropertyBuilder(class QMetaObjectBuilder const *, int) + ??0QMetaPropertyBuilder@@QAE@XZ @ 200 NONAME ; QMetaPropertyBuilder::QMetaPropertyBuilder(void) + ??0QPacket@@IAE@ABVQByteArray@@@Z @ 201 NONAME ; QPacket::QPacket(class QByteArray const &) + ??0QPacket@@QAE@ABV0@@Z @ 202 NONAME ; QPacket::QPacket(class QPacket const &) + ??0QPacket@@QAE@XZ @ 203 NONAME ; QPacket::QPacket(void) + ??0QPacketAutoSend@@AAE@PAVQPacketProtocol@@@Z @ 204 NONAME ; QPacketAutoSend::QPacketAutoSend(class QPacketProtocol *) + ??0QPacketProtocol@@QAE@PAVQIODevice@@PAVQObject@@@Z @ 205 NONAME ; QPacketProtocol::QPacketProtocol(class QIODevice *, class QObject *) + ??1QDeclarativeAction@@QAE@XZ @ 206 NONAME ; QDeclarativeAction::~QDeclarativeAction(void) + ??1QDeclarativeAnchorChanges@@UAE@XZ @ 207 NONAME ; QDeclarativeAnchorChanges::~QDeclarativeAnchorChanges(void) + ??1QDeclarativeAnchors@@UAE@XZ @ 208 NONAME ; QDeclarativeAnchors::~QDeclarativeAnchors(void) + ??1QDeclarativeAnimatedImage@@UAE@XZ @ 209 NONAME ; QDeclarativeAnimatedImage::~QDeclarativeAnimatedImage(void) + ??1QDeclarativeBasePositioner@@UAE@XZ @ 210 NONAME ; QDeclarativeBasePositioner::~QDeclarativeBasePositioner(void) + ??1QDeclarativeBehavior@@UAE@XZ @ 211 NONAME ; QDeclarativeBehavior::~QDeclarativeBehavior(void) + ??1QDeclarativeBind@@UAE@XZ @ 212 NONAME ; QDeclarativeBind::~QDeclarativeBind(void) + ??1QDeclarativeBorderImage@@UAE@XZ @ 213 NONAME ; QDeclarativeBorderImage::~QDeclarativeBorderImage(void) + ??1QDeclarativeColumn@@UAE@XZ @ 214 NONAME ; QDeclarativeColumn::~QDeclarativeColumn(void) + ??1QDeclarativeCompiler@@QAE@XZ @ 215 NONAME ; QDeclarativeCompiler::~QDeclarativeCompiler(void) + ??1QDeclarativeComponent@@UAE@XZ @ 216 NONAME ; QDeclarativeComponent::~QDeclarativeComponent(void) + ??1QDeclarativeConnections@@UAE@XZ @ 217 NONAME ; QDeclarativeConnections::~QDeclarativeConnections(void) + ??1QDeclarativeContext@@UAE@XZ @ 218 NONAME ; QDeclarativeContext::~QDeclarativeContext(void) + ??1QDeclarativeContextPrivate@@UAE@XZ @ 219 NONAME ; QDeclarativeContextPrivate::~QDeclarativeContextPrivate(void) + ??1QDeclarativeCurve@@UAE@XZ @ 220 NONAME ; QDeclarativeCurve::~QDeclarativeCurve(void) + ??1QDeclarativeCustomParser@@UAE@XZ @ 221 NONAME ; QDeclarativeCustomParser::~QDeclarativeCustomParser(void) + ??1QDeclarativeCustomParserNode@@QAE@XZ @ 222 NONAME ; QDeclarativeCustomParserNode::~QDeclarativeCustomParserNode(void) + ??1QDeclarativeCustomParserProperty@@QAE@XZ @ 223 NONAME ; QDeclarativeCustomParserProperty::~QDeclarativeCustomParserProperty(void) + ??1QDeclarativeDateTimeFormatter@@UAE@XZ @ 224 NONAME ; QDeclarativeDateTimeFormatter::~QDeclarativeDateTimeFormatter(void) + ??1QDeclarativeDebugClient@@UAE@XZ @ 225 NONAME ; QDeclarativeDebugClient::~QDeclarativeDebugClient(void) + ??1QDeclarativeDebugConnection@@UAE@XZ @ 226 NONAME ; QDeclarativeDebugConnection::~QDeclarativeDebugConnection(void) + ??1QDeclarativeDebugContextReference@@QAE@XZ @ 227 NONAME ; QDeclarativeDebugContextReference::~QDeclarativeDebugContextReference(void) + ??1QDeclarativeDebugEngineReference@@QAE@XZ @ 228 NONAME ; QDeclarativeDebugEngineReference::~QDeclarativeDebugEngineReference(void) + ??1QDeclarativeDebugEnginesQuery@@UAE@XZ @ 229 NONAME ; QDeclarativeDebugEnginesQuery::~QDeclarativeDebugEnginesQuery(void) + ??1QDeclarativeDebugExpressionQuery@@UAE@XZ @ 230 NONAME ; QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery(void) + ??1QDeclarativeDebugFileReference@@QAE@XZ @ 231 NONAME ; QDeclarativeDebugFileReference::~QDeclarativeDebugFileReference(void) + ??1QDeclarativeDebugObjectExpressionWatch@@UAE@XZ @ 232 NONAME ; QDeclarativeDebugObjectExpressionWatch::~QDeclarativeDebugObjectExpressionWatch(void) + ??1QDeclarativeDebugObjectQuery@@UAE@XZ @ 233 NONAME ; QDeclarativeDebugObjectQuery::~QDeclarativeDebugObjectQuery(void) + ??1QDeclarativeDebugObjectReference@@QAE@XZ @ 234 NONAME ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(void) + ??1QDeclarativeDebugPropertyReference@@QAE@XZ @ 235 NONAME ; QDeclarativeDebugPropertyReference::~QDeclarativeDebugPropertyReference(void) + ??1QDeclarativeDebugPropertyWatch@@UAE@XZ @ 236 NONAME ; QDeclarativeDebugPropertyWatch::~QDeclarativeDebugPropertyWatch(void) + ??1QDeclarativeDebugQuery@@UAE@XZ @ 237 NONAME ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(void) + ??1QDeclarativeDebugRootContextQuery@@UAE@XZ @ 238 NONAME ; QDeclarativeDebugRootContextQuery::~QDeclarativeDebugRootContextQuery(void) + ??1QDeclarativeDebugService@@UAE@XZ @ 239 NONAME ; QDeclarativeDebugService::~QDeclarativeDebugService(void) + ??1QDeclarativeDebugWatch@@UAE@XZ @ 240 NONAME ; QDeclarativeDebugWatch::~QDeclarativeDebugWatch(void) + ??1QDeclarativeDebuggerStatus@@UAE@XZ @ 241 NONAME ; QDeclarativeDebuggerStatus::~QDeclarativeDebuggerStatus(void) + ??1QDeclarativeDomComponent@@QAE@XZ @ 242 NONAME ; QDeclarativeDomComponent::~QDeclarativeDomComponent(void) + ??1QDeclarativeDomDocument@@QAE@XZ @ 243 NONAME ; QDeclarativeDomDocument::~QDeclarativeDomDocument(void) + ??1QDeclarativeDomDynamicProperty@@QAE@XZ @ 244 NONAME ; QDeclarativeDomDynamicProperty::~QDeclarativeDomDynamicProperty(void) + ??1QDeclarativeDomImport@@QAE@XZ @ 245 NONAME ; QDeclarativeDomImport::~QDeclarativeDomImport(void) + ??1QDeclarativeDomList@@QAE@XZ @ 246 NONAME ; QDeclarativeDomList::~QDeclarativeDomList(void) + ??1QDeclarativeDomObject@@QAE@XZ @ 247 NONAME ; QDeclarativeDomObject::~QDeclarativeDomObject(void) + ??1QDeclarativeDomProperty@@QAE@XZ @ 248 NONAME ; QDeclarativeDomProperty::~QDeclarativeDomProperty(void) + ??1QDeclarativeDomValue@@QAE@XZ @ 249 NONAME ; QDeclarativeDomValue::~QDeclarativeDomValue(void) + ??1QDeclarativeDomValueBinding@@QAE@XZ @ 250 NONAME ; QDeclarativeDomValueBinding::~QDeclarativeDomValueBinding(void) + ??1QDeclarativeDomValueLiteral@@QAE@XZ @ 251 NONAME ; QDeclarativeDomValueLiteral::~QDeclarativeDomValueLiteral(void) + ??1QDeclarativeDomValueValueInterceptor@@QAE@XZ @ 252 NONAME ; QDeclarativeDomValueValueInterceptor::~QDeclarativeDomValueValueInterceptor(void) + ??1QDeclarativeDomValueValueSource@@QAE@XZ @ 253 NONAME ; QDeclarativeDomValueValueSource::~QDeclarativeDomValueValueSource(void) + ??1QDeclarativeDrag@@UAE@XZ @ 254 NONAME ; QDeclarativeDrag::~QDeclarativeDrag(void) + ??1QDeclarativeEaseFollow@@UAE@XZ @ 255 NONAME ; QDeclarativeEaseFollow::~QDeclarativeEaseFollow(void) + ??1QDeclarativeEngine@@UAE@XZ @ 256 NONAME ; QDeclarativeEngine::~QDeclarativeEngine(void) + ??1QDeclarativeEngineDebug@@UAE@XZ @ 257 NONAME ; QDeclarativeEngineDebug::~QDeclarativeEngineDebug(void) + ??1QDeclarativeError@@QAE@XZ @ 258 NONAME ; QDeclarativeError::~QDeclarativeError(void) + ??1QDeclarativeExpression@@UAE@XZ @ 259 NONAME ; QDeclarativeExpression::~QDeclarativeExpression(void) + ??1QDeclarativeExtensionInterface@@UAE@XZ @ 260 NONAME ; QDeclarativeExtensionInterface::~QDeclarativeExtensionInterface(void) + ??1QDeclarativeExtensionPlugin@@UAE@XZ @ 261 NONAME ; QDeclarativeExtensionPlugin::~QDeclarativeExtensionPlugin(void) + ??1QDeclarativeFlickable@@UAE@XZ @ 262 NONAME ; QDeclarativeFlickable::~QDeclarativeFlickable(void) + ??1QDeclarativeFlipable@@UAE@XZ @ 263 NONAME ; QDeclarativeFlipable::~QDeclarativeFlipable(void) + ??1QDeclarativeFlow@@UAE@XZ @ 264 NONAME ; QDeclarativeFlow::~QDeclarativeFlow(void) + ??1QDeclarativeFocusPanel@@UAE@XZ @ 265 NONAME ; QDeclarativeFocusPanel::~QDeclarativeFocusPanel(void) + ??1QDeclarativeFocusScope@@UAE@XZ @ 266 NONAME ; QDeclarativeFocusScope::~QDeclarativeFocusScope(void) + ??1QDeclarativeFontLoader@@UAE@XZ @ 267 NONAME ; QDeclarativeFontLoader::~QDeclarativeFontLoader(void) + ??1QDeclarativeGradient@@UAE@XZ @ 268 NONAME ; QDeclarativeGradient::~QDeclarativeGradient(void) + ??1QDeclarativeGradientStop@@UAE@XZ @ 269 NONAME ; QDeclarativeGradientStop::~QDeclarativeGradientStop(void) + ??1QDeclarativeGraphicsObjectContainer@@UAE@XZ @ 270 NONAME ; QDeclarativeGraphicsObjectContainer::~QDeclarativeGraphicsObjectContainer(void) + ??1QDeclarativeGrid@@UAE@XZ @ 271 NONAME ; QDeclarativeGrid::~QDeclarativeGrid(void) + ??1QDeclarativeGridScaledImage@@QAE@XZ @ 272 NONAME ; QDeclarativeGridScaledImage::~QDeclarativeGridScaledImage(void) + ??1QDeclarativeGridView@@UAE@XZ @ 273 NONAME ; QDeclarativeGridView::~QDeclarativeGridView(void) + ??1QDeclarativeImage@@UAE@XZ @ 274 NONAME ; QDeclarativeImage::~QDeclarativeImage(void) + ??1QDeclarativeImageBase@@UAE@XZ @ 275 NONAME ; QDeclarativeImageBase::~QDeclarativeImageBase(void) + ??1QDeclarativeImageProvider@@UAE@XZ @ 276 NONAME ; QDeclarativeImageProvider::~QDeclarativeImageProvider(void) + ??1QDeclarativeInfo@@QAE@XZ @ 277 NONAME ; QDeclarativeInfo::~QDeclarativeInfo(void) + ??1QDeclarativeItem@@UAE@XZ @ 278 NONAME ; QDeclarativeItem::~QDeclarativeItem(void) + ??1QDeclarativeListAccessor@@QAE@XZ @ 279 NONAME ; QDeclarativeListAccessor::~QDeclarativeListAccessor(void) + ??1QDeclarativeListModel@@UAE@XZ @ 280 NONAME ; QDeclarativeListModel::~QDeclarativeListModel(void) + ??1QDeclarativeListReference@@QAE@XZ @ 281 NONAME ; QDeclarativeListReference::~QDeclarativeListReference(void) + ??1QDeclarativeListView@@UAE@XZ @ 282 NONAME ; QDeclarativeListView::~QDeclarativeListView(void) + ??1QDeclarativeLoader@@UAE@XZ @ 283 NONAME ; QDeclarativeLoader::~QDeclarativeLoader(void) + ??1QDeclarativeMouseArea@@UAE@XZ @ 284 NONAME ; QDeclarativeMouseArea::~QDeclarativeMouseArea(void) + ??1QDeclarativeNetworkAccessManagerFactory@@UAE@XZ @ 285 NONAME ; QDeclarativeNetworkAccessManagerFactory::~QDeclarativeNetworkAccessManagerFactory(void) + ??1QDeclarativeNumberFormatter@@UAE@XZ @ 286 NONAME ; QDeclarativeNumberFormatter::~QDeclarativeNumberFormatter(void) + ??1QDeclarativeOpenMetaObject@@UAE@XZ @ 287 NONAME ; QDeclarativeOpenMetaObject::~QDeclarativeOpenMetaObject(void) + ??1QDeclarativeOpenMetaObjectType@@UAE@XZ @ 288 NONAME ; QDeclarativeOpenMetaObjectType::~QDeclarativeOpenMetaObjectType(void) + ??1QDeclarativePaintedItem@@UAE@XZ @ 289 NONAME ; QDeclarativePaintedItem::~QDeclarativePaintedItem(void) + ??1QDeclarativeParentChange@@UAE@XZ @ 290 NONAME ; QDeclarativeParentChange::~QDeclarativeParentChange(void) + ??1QDeclarativeParserStatus@@UAE@XZ @ 291 NONAME ; QDeclarativeParserStatus::~QDeclarativeParserStatus(void) + ??1QDeclarativeParticleMotion@@UAE@XZ @ 292 NONAME ; QDeclarativeParticleMotion::~QDeclarativeParticleMotion(void) + ??1QDeclarativeParticleMotionGravity@@UAE@XZ @ 293 NONAME ; QDeclarativeParticleMotionGravity::~QDeclarativeParticleMotionGravity(void) + ??1QDeclarativeParticleMotionLinear@@UAE@XZ @ 294 NONAME ; QDeclarativeParticleMotionLinear::~QDeclarativeParticleMotionLinear(void) + ??1QDeclarativeParticleMotionWander@@UAE@XZ @ 295 NONAME ; QDeclarativeParticleMotionWander::~QDeclarativeParticleMotionWander(void) + ??1QDeclarativeParticles@@UAE@XZ @ 296 NONAME ; QDeclarativeParticles::~QDeclarativeParticles(void) + ??1QDeclarativePath@@UAE@XZ @ 297 NONAME ; QDeclarativePath::~QDeclarativePath(void) + ??1QDeclarativePathAttribute@@UAE@XZ @ 298 NONAME ; QDeclarativePathAttribute::~QDeclarativePathAttribute(void) + ??1QDeclarativePathCubic@@UAE@XZ @ 299 NONAME ; QDeclarativePathCubic::~QDeclarativePathCubic(void) + ??1QDeclarativePathElement@@UAE@XZ @ 300 NONAME ; QDeclarativePathElement::~QDeclarativePathElement(void) + ??1QDeclarativePathLine@@UAE@XZ @ 301 NONAME ; QDeclarativePathLine::~QDeclarativePathLine(void) + ??1QDeclarativePathPercent@@UAE@XZ @ 302 NONAME ; QDeclarativePathPercent::~QDeclarativePathPercent(void) + ??1QDeclarativePathQuad@@UAE@XZ @ 303 NONAME ; QDeclarativePathQuad::~QDeclarativePathQuad(void) + ??1QDeclarativePathView@@UAE@XZ @ 304 NONAME ; QDeclarativePathView::~QDeclarativePathView(void) + ??1QDeclarativePen@@UAE@XZ @ 305 NONAME ; QDeclarativePen::~QDeclarativePen(void) + ??1QDeclarativePixmapReply@@UAE@XZ @ 306 NONAME ; QDeclarativePixmapReply::~QDeclarativePixmapReply(void) + ??1QDeclarativeProperty@@QAE@XZ @ 307 NONAME ; QDeclarativeProperty::~QDeclarativeProperty(void) + ??1QDeclarativePropertyChanges@@UAE@XZ @ 308 NONAME ; QDeclarativePropertyChanges::~QDeclarativePropertyChanges(void) + ??1QDeclarativePropertyMap@@UAE@XZ @ 309 NONAME ; QDeclarativePropertyMap::~QDeclarativePropertyMap(void) + ??1QDeclarativePropertyValueInterceptor@@UAE@XZ @ 310 NONAME ; QDeclarativePropertyValueInterceptor::~QDeclarativePropertyValueInterceptor(void) + ??1QDeclarativePropertyValueSource@@UAE@XZ @ 311 NONAME ; QDeclarativePropertyValueSource::~QDeclarativePropertyValueSource(void) + ??1QDeclarativeRectangle@@UAE@XZ @ 312 NONAME ; QDeclarativeRectangle::~QDeclarativeRectangle(void) + ??1QDeclarativeRepeater@@UAE@XZ @ 313 NONAME ; QDeclarativeRepeater::~QDeclarativeRepeater(void) + ??1QDeclarativeRow@@UAE@XZ @ 314 NONAME ; QDeclarativeRow::~QDeclarativeRow(void) + ??1QDeclarativeScaleGrid@@UAE@XZ @ 315 NONAME ; QDeclarativeScaleGrid::~QDeclarativeScaleGrid(void) + ??1QDeclarativeScriptString@@QAE@XZ @ 316 NONAME ; QDeclarativeScriptString::~QDeclarativeScriptString(void) + ??1QDeclarativeSpringFollow@@UAE@XZ @ 317 NONAME ; QDeclarativeSpringFollow::~QDeclarativeSpringFollow(void) + ??1QDeclarativeState@@UAE@XZ @ 318 NONAME ; QDeclarativeState::~QDeclarativeState(void) + ??1QDeclarativeStateChangeScript@@UAE@XZ @ 319 NONAME ; QDeclarativeStateChangeScript::~QDeclarativeStateChangeScript(void) + ??1QDeclarativeStateGroup@@UAE@XZ @ 320 NONAME ; QDeclarativeStateGroup::~QDeclarativeStateGroup(void) + ??1QDeclarativeStateOperation@@UAE@XZ @ 321 NONAME ; QDeclarativeStateOperation::~QDeclarativeStateOperation(void) + ??1QDeclarativeStyledText@@AAE@XZ @ 322 NONAME ; QDeclarativeStyledText::~QDeclarativeStyledText(void) + ??1QDeclarativeSystemPalette@@UAE@XZ @ 323 NONAME ; QDeclarativeSystemPalette::~QDeclarativeSystemPalette(void) + ??1QDeclarativeText@@UAE@XZ @ 324 NONAME ; QDeclarativeText::~QDeclarativeText(void) + ??1QDeclarativeTextEdit@@UAE@XZ @ 325 NONAME ; QDeclarativeTextEdit::~QDeclarativeTextEdit(void) + ??1QDeclarativeTextInput@@UAE@XZ @ 326 NONAME ; QDeclarativeTextInput::~QDeclarativeTextInput(void) + ??1QDeclarativeTimer@@UAE@XZ @ 327 NONAME ; QDeclarativeTimer::~QDeclarativeTimer(void) + ??1QDeclarativeTransition@@UAE@XZ @ 328 NONAME ; QDeclarativeTransition::~QDeclarativeTransition(void) + ??1QDeclarativeType@@AAE@XZ @ 329 NONAME ; QDeclarativeType::~QDeclarativeType(void) + ??1QDeclarativeValueType@@UAE@XZ @ 330 NONAME ; QDeclarativeValueType::~QDeclarativeValueType(void) + ??1QDeclarativeValueTypeFactory@@QAE@XZ @ 331 NONAME ; QDeclarativeValueTypeFactory::~QDeclarativeValueTypeFactory(void) + ??1QDeclarativeView@@UAE@XZ @ 332 NONAME ; QDeclarativeView::~QDeclarativeView(void) + ??1QDeclarativeViewSection@@UAE@XZ @ 333 NONAME ; QDeclarativeViewSection::~QDeclarativeViewSection(void) + ??1QDeclarativeVisualDataModel@@UAE@XZ @ 334 NONAME ; QDeclarativeVisualDataModel::~QDeclarativeVisualDataModel(void) + ??1QDeclarativeVisualItemModel@@UAE@XZ @ 335 NONAME ; QDeclarativeVisualItemModel::~QDeclarativeVisualItemModel(void) + ??1QDeclarativeVisualModel@@UAE@XZ @ 336 NONAME ; QDeclarativeVisualModel::~QDeclarativeVisualModel(void) + ??1QDeclarativeWebPage@@UAE@XZ @ 337 NONAME ; QDeclarativeWebPage::~QDeclarativeWebPage(void) + ??1QDeclarativeWebView@@UAE@XZ @ 338 NONAME ; QDeclarativeWebView::~QDeclarativeWebView(void) + ??1QDeclarativeXmlListModel@@UAE@XZ @ 339 NONAME ; QDeclarativeXmlListModel::~QDeclarativeXmlListModel(void) + ??1QDeclarativeXmlListModelRole@@UAE@XZ @ 340 NONAME ; QDeclarativeXmlListModelRole::~QDeclarativeXmlListModelRole(void) + ??1QListModelInterface@@UAE@XZ @ 341 NONAME ; QListModelInterface::~QListModelInterface(void) + ??1QMetaObjectBuilder@@UAE@XZ @ 342 NONAME ; QMetaObjectBuilder::~QMetaObjectBuilder(void) + ??1QPacket@@UAE@XZ @ 343 NONAME ; QPacket::~QPacket(void) + ??1QPacketAutoSend@@UAE@XZ @ 344 NONAME ; QPacketAutoSend::~QPacketAutoSend(void) + ??1QPacketProtocol@@UAE@XZ @ 345 NONAME ; QPacketProtocol::~QPacketProtocol(void) + ??4QDeclarativeCustomParserNode@@QAEAAV0@ABV0@@Z @ 346 NONAME ; class QDeclarativeCustomParserNode & QDeclarativeCustomParserNode::operator=(class QDeclarativeCustomParserNode const &) + ??4QDeclarativeCustomParserProperty@@QAEAAV0@ABV0@@Z @ 347 NONAME ; class QDeclarativeCustomParserProperty & QDeclarativeCustomParserProperty::operator=(class QDeclarativeCustomParserProperty const &) + ??4QDeclarativeDebugContextReference@@QAEAAV0@ABV0@@Z @ 348 NONAME ; class QDeclarativeDebugContextReference & QDeclarativeDebugContextReference::operator=(class QDeclarativeDebugContextReference const &) + ??4QDeclarativeDebugEngineReference@@QAEAAV0@ABV0@@Z @ 349 NONAME ; class QDeclarativeDebugEngineReference & QDeclarativeDebugEngineReference::operator=(class QDeclarativeDebugEngineReference const &) + ??4QDeclarativeDebugFileReference@@QAEAAV0@ABV0@@Z @ 350 NONAME ; class QDeclarativeDebugFileReference & QDeclarativeDebugFileReference::operator=(class QDeclarativeDebugFileReference const &) + ??4QDeclarativeDebugObjectReference@@QAEAAV0@ABV0@@Z @ 351 NONAME ; class QDeclarativeDebugObjectReference & QDeclarativeDebugObjectReference::operator=(class QDeclarativeDebugObjectReference const &) + ??4QDeclarativeDebugPropertyReference@@QAEAAV0@ABV0@@Z @ 352 NONAME ; class QDeclarativeDebugPropertyReference & QDeclarativeDebugPropertyReference::operator=(class QDeclarativeDebugPropertyReference const &) + ??4QDeclarativeDomComponent@@QAEAAV0@ABV0@@Z @ 353 NONAME ; class QDeclarativeDomComponent & QDeclarativeDomComponent::operator=(class QDeclarativeDomComponent const &) + ??4QDeclarativeDomDocument@@QAEAAV0@ABV0@@Z @ 354 NONAME ; class QDeclarativeDomDocument & QDeclarativeDomDocument::operator=(class QDeclarativeDomDocument const &) + ??4QDeclarativeDomDynamicProperty@@QAEAAV0@ABV0@@Z @ 355 NONAME ; class QDeclarativeDomDynamicProperty & QDeclarativeDomDynamicProperty::operator=(class QDeclarativeDomDynamicProperty const &) + ??4QDeclarativeDomImport@@QAEAAV0@ABV0@@Z @ 356 NONAME ; class QDeclarativeDomImport & QDeclarativeDomImport::operator=(class QDeclarativeDomImport const &) + ??4QDeclarativeDomList@@QAEAAV0@ABV0@@Z @ 357 NONAME ; class QDeclarativeDomList & QDeclarativeDomList::operator=(class QDeclarativeDomList const &) + ??4QDeclarativeDomObject@@QAEAAV0@ABV0@@Z @ 358 NONAME ; class QDeclarativeDomObject & QDeclarativeDomObject::operator=(class QDeclarativeDomObject const &) + ??4QDeclarativeDomProperty@@QAEAAV0@ABV0@@Z @ 359 NONAME ; class QDeclarativeDomProperty & QDeclarativeDomProperty::operator=(class QDeclarativeDomProperty const &) + ??4QDeclarativeDomValue@@QAEAAV0@ABV0@@Z @ 360 NONAME ; class QDeclarativeDomValue & QDeclarativeDomValue::operator=(class QDeclarativeDomValue const &) + ??4QDeclarativeDomValueBinding@@QAEAAV0@ABV0@@Z @ 361 NONAME ; class QDeclarativeDomValueBinding & QDeclarativeDomValueBinding::operator=(class QDeclarativeDomValueBinding const &) + ??4QDeclarativeDomValueLiteral@@QAEAAV0@ABV0@@Z @ 362 NONAME ; class QDeclarativeDomValueLiteral & QDeclarativeDomValueLiteral::operator=(class QDeclarativeDomValueLiteral const &) + ??4QDeclarativeDomValueValueInterceptor@@QAEAAV0@ABV0@@Z @ 363 NONAME ; class QDeclarativeDomValueValueInterceptor & QDeclarativeDomValueValueInterceptor::operator=(class QDeclarativeDomValueValueInterceptor const &) + ??4QDeclarativeDomValueValueSource@@QAEAAV0@ABV0@@Z @ 364 NONAME ; class QDeclarativeDomValueValueSource & QDeclarativeDomValueValueSource::operator=(class QDeclarativeDomValueValueSource const &) + ??4QDeclarativeError@@QAEAAV0@ABV0@@Z @ 365 NONAME ; class QDeclarativeError & QDeclarativeError::operator=(class QDeclarativeError const &) + ??4QDeclarativeGridScaledImage@@QAEAAV0@ABV0@@Z @ 366 NONAME ; class QDeclarativeGridScaledImage & QDeclarativeGridScaledImage::operator=(class QDeclarativeGridScaledImage const &) + ??4QDeclarativeListReference@@QAEAAV0@ABV0@@Z @ 367 NONAME ; class QDeclarativeListReference & QDeclarativeListReference::operator=(class QDeclarativeListReference const &) + ??4QDeclarativeProperty@@QAEAAV0@ABV0@@Z @ 368 NONAME ; class QDeclarativeProperty & QDeclarativeProperty::operator=(class QDeclarativeProperty const &) + ??4QDeclarativeScriptString@@QAEAAV0@ABV0@@Z @ 369 NONAME ; class QDeclarativeScriptString & QDeclarativeScriptString::operator=(class QDeclarativeScriptString const &) + ??5@YAAAVQDataStream@@AAV0@AAUQDeclarativeObjectData@QDeclarativeEngineDebugServer@@@Z @ 370 NONAME ; class QDataStream & operator>>(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectData &) + ??5@YAAAVQDataStream@@AAV0@AAUQDeclarativeObjectProperty@QDeclarativeEngineDebugServer@@@Z @ 371 NONAME ; class QDataStream & operator>>(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &) + ??6@YA?AVQDebug@@V0@ABVQDeclarativeError@@@Z @ 372 NONAME ; class QDebug operator<<(class QDebug, class QDeclarativeError const &) + ??6@YA?AVQDebug@@V0@PAVQDeclarativeItem@@@Z @ 373 NONAME ; class QDebug operator<<(class QDebug, class QDeclarativeItem *) + ??6@YAAAVQDataStream@@AAV0@ABUQDeclarativeObjectData@QDeclarativeEngineDebugServer@@@Z @ 374 NONAME ; class QDataStream & operator<<(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectData const &) + ??6@YAAAVQDataStream@@AAV0@ABUQDeclarativeObjectProperty@QDeclarativeEngineDebugServer@@@Z @ 375 NONAME ; class QDataStream & operator<<(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectProperty const &) + ??6QDeclarativeInfo@@QAEAAV0@ABVQByteArray@@@Z @ 376 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QByteArray const &) + ??6QDeclarativeInfo@@QAEAAV0@ABVQLatin1String@@@Z @ 377 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QLatin1String const &) + ??6QDeclarativeInfo@@QAEAAV0@ABVQString@@@Z @ 378 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QString const &) + ??6QDeclarativeInfo@@QAEAAV0@ABVQStringRef@@@Z @ 379 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QStringRef const &) + ??6QDeclarativeInfo@@QAEAAV0@D@Z @ 380 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(char) + ??6QDeclarativeInfo@@QAEAAV0@F@Z @ 381 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(short) + ??6QDeclarativeInfo@@QAEAAV0@G@Z @ 382 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned short) + ??6QDeclarativeInfo@@QAEAAV0@H@Z @ 383 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(int) + ??6QDeclarativeInfo@@QAEAAV0@I@Z @ 384 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned int) + ??6QDeclarativeInfo@@QAEAAV0@J@Z @ 385 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(long) + ??6QDeclarativeInfo@@QAEAAV0@K@Z @ 386 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned long) + ??6QDeclarativeInfo@@QAEAAV0@M@Z @ 387 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(float) + ??6QDeclarativeInfo@@QAEAAV0@N@Z @ 388 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(double) + ??6QDeclarativeInfo@@QAEAAV0@P6AAAVQTextStream@@AAV1@@Z@Z @ 389 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QTextStream & (*)(class QTextStream &)) + ??6QDeclarativeInfo@@QAEAAV0@PBD@Z @ 390 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(char const *) + ??6QDeclarativeInfo@@QAEAAV0@PBX@Z @ 391 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(void const *) + ??6QDeclarativeInfo@@QAEAAV0@VQBool@@@Z @ 392 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QBool) + ??6QDeclarativeInfo@@QAEAAV0@VQChar@@@Z @ 393 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QChar) + ??6QDeclarativeInfo@@QAEAAV0@VQTextStreamManipulator@@@Z @ 394 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QTextStreamManipulator) + ??6QDeclarativeInfo@@QAEAAV0@_J@Z @ 395 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(long long) + ??6QDeclarativeInfo@@QAEAAV0@_K@Z @ 396 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned long long) + ??6QDeclarativeInfo@@QAEAAV0@_N@Z @ 397 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(bool) + ??6QDeclarativeState@@QAEAAV0@PAVQDeclarativeStateOperation@@@Z @ 398 NONAME ; class QDeclarativeState & QDeclarativeState::operator<<(class QDeclarativeStateOperation *) + ??8QDeclarativeProperty@@QBE_NABV0@@Z @ 399 NONAME ; bool QDeclarativeProperty::operator==(class QDeclarativeProperty const &) const + ??AQDeclarativeOpenMetaObject@@QAEAAVQVariant@@ABVQByteArray@@@Z @ 400 NONAME ; class QVariant & QDeclarativeOpenMetaObject::operator[](class QByteArray const &) + ??AQDeclarativePropertyMap@@QAEAAVQVariant@@ABVQString@@@Z @ 401 NONAME ; class QVariant & QDeclarativePropertyMap::operator[](class QString const &) + ??AQDeclarativePropertyMap@@QBE?BVQVariant@@ABVQString@@@Z @ 402 NONAME ; class QVariant const QDeclarativePropertyMap::operator[](class QString const &) const + ??AQDeclarativeValueTypeFactory@@QBEPAVQDeclarativeValueType@@H@Z @ 403 NONAME ; class QDeclarativeValueType * QDeclarativeValueTypeFactory::operator[](int) const + ??_EQDeclarativeAction@@QAE@I@Z @ 404 NONAME ; QDeclarativeAction::~QDeclarativeAction(unsigned int) + ??_EQDeclarativeAnchorChanges@@UAE@I@Z @ 405 NONAME ; QDeclarativeAnchorChanges::~QDeclarativeAnchorChanges(unsigned int) + ??_EQDeclarativeAnchors@@UAE@I@Z @ 406 NONAME ; QDeclarativeAnchors::~QDeclarativeAnchors(unsigned int) + ??_EQDeclarativeAnimatedImage@@UAE@I@Z @ 407 NONAME ; QDeclarativeAnimatedImage::~QDeclarativeAnimatedImage(unsigned int) + ??_EQDeclarativeBasePositioner@@UAE@I@Z @ 408 NONAME ; QDeclarativeBasePositioner::~QDeclarativeBasePositioner(unsigned int) + ??_EQDeclarativeBehavior@@UAE@I@Z @ 409 NONAME ; QDeclarativeBehavior::~QDeclarativeBehavior(unsigned int) + ??_EQDeclarativeBind@@UAE@I@Z @ 410 NONAME ; QDeclarativeBind::~QDeclarativeBind(unsigned int) + ??_EQDeclarativeBorderImage@@UAE@I@Z @ 411 NONAME ; QDeclarativeBorderImage::~QDeclarativeBorderImage(unsigned int) + ??_EQDeclarativeColumn@@UAE@I@Z @ 412 NONAME ; QDeclarativeColumn::~QDeclarativeColumn(unsigned int) + ??_EQDeclarativeComponent@@UAE@I@Z @ 413 NONAME ; QDeclarativeComponent::~QDeclarativeComponent(unsigned int) + ??_EQDeclarativeConnections@@UAE@I@Z @ 414 NONAME ; QDeclarativeConnections::~QDeclarativeConnections(unsigned int) + ??_EQDeclarativeContext@@UAE@I@Z @ 415 NONAME ; QDeclarativeContext::~QDeclarativeContext(unsigned int) + ??_EQDeclarativeContextPrivate@@UAE@I@Z @ 416 NONAME ; QDeclarativeContextPrivate::~QDeclarativeContextPrivate(unsigned int) + ??_EQDeclarativeCurve@@UAE@I@Z @ 417 NONAME ; QDeclarativeCurve::~QDeclarativeCurve(unsigned int) + ??_EQDeclarativeCustomParser@@UAE@I@Z @ 418 NONAME ; QDeclarativeCustomParser::~QDeclarativeCustomParser(unsigned int) + ??_EQDeclarativeDateTimeFormatter@@UAE@I@Z @ 419 NONAME ; QDeclarativeDateTimeFormatter::~QDeclarativeDateTimeFormatter(unsigned int) + ??_EQDeclarativeDebugClient@@UAE@I@Z @ 420 NONAME ; QDeclarativeDebugClient::~QDeclarativeDebugClient(unsigned int) + ??_EQDeclarativeDebugConnection@@UAE@I@Z @ 421 NONAME ; QDeclarativeDebugConnection::~QDeclarativeDebugConnection(unsigned int) + ??_EQDeclarativeDebugContextReference@@QAE@I@Z @ 422 NONAME ; QDeclarativeDebugContextReference::~QDeclarativeDebugContextReference(unsigned int) + ??_EQDeclarativeDebugEngineReference@@QAE@I@Z @ 423 NONAME ; QDeclarativeDebugEngineReference::~QDeclarativeDebugEngineReference(unsigned int) + ??_EQDeclarativeDebugEnginesQuery@@UAE@I@Z @ 424 NONAME ; QDeclarativeDebugEnginesQuery::~QDeclarativeDebugEnginesQuery(unsigned int) + ??_EQDeclarativeDebugExpressionQuery@@UAE@I@Z @ 425 NONAME ; QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery(unsigned int) + ??_EQDeclarativeDebugObjectExpressionWatch@@UAE@I@Z @ 426 NONAME ; QDeclarativeDebugObjectExpressionWatch::~QDeclarativeDebugObjectExpressionWatch(unsigned int) + ??_EQDeclarativeDebugObjectQuery@@UAE@I@Z @ 427 NONAME ; QDeclarativeDebugObjectQuery::~QDeclarativeDebugObjectQuery(unsigned int) + ??_EQDeclarativeDebugObjectReference@@QAE@I@Z @ 428 NONAME ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(unsigned int) + ??_EQDeclarativeDebugPropertyReference@@QAE@I@Z @ 429 NONAME ; QDeclarativeDebugPropertyReference::~QDeclarativeDebugPropertyReference(unsigned int) + ??_EQDeclarativeDebugPropertyWatch@@UAE@I@Z @ 430 NONAME ; QDeclarativeDebugPropertyWatch::~QDeclarativeDebugPropertyWatch(unsigned int) + ??_EQDeclarativeDebugQuery@@UAE@I@Z @ 431 NONAME ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(unsigned int) + ??_EQDeclarativeDebugRootContextQuery@@UAE@I@Z @ 432 NONAME ; QDeclarativeDebugRootContextQuery::~QDeclarativeDebugRootContextQuery(unsigned int) + ??_EQDeclarativeDebugService@@UAE@I@Z @ 433 NONAME ; QDeclarativeDebugService::~QDeclarativeDebugService(unsigned int) + ??_EQDeclarativeDebugWatch@@UAE@I@Z @ 434 NONAME ; QDeclarativeDebugWatch::~QDeclarativeDebugWatch(unsigned int) + ??_EQDeclarativeDebuggerStatus@@UAE@I@Z @ 435 NONAME ; QDeclarativeDebuggerStatus::~QDeclarativeDebuggerStatus(unsigned int) + ??_EQDeclarativeDrag@@UAE@I@Z @ 436 NONAME ; QDeclarativeDrag::~QDeclarativeDrag(unsigned int) + ??_EQDeclarativeEaseFollow@@UAE@I@Z @ 437 NONAME ; QDeclarativeEaseFollow::~QDeclarativeEaseFollow(unsigned int) + ??_EQDeclarativeEngine@@UAE@I@Z @ 438 NONAME ; QDeclarativeEngine::~QDeclarativeEngine(unsigned int) + ??_EQDeclarativeEngineDebug@@UAE@I@Z @ 439 NONAME ; QDeclarativeEngineDebug::~QDeclarativeEngineDebug(unsigned int) + ??_EQDeclarativeExpression@@UAE@I@Z @ 440 NONAME ; QDeclarativeExpression::~QDeclarativeExpression(unsigned int) + ??_EQDeclarativeExtensionInterface@@UAE@I@Z @ 441 NONAME ; QDeclarativeExtensionInterface::~QDeclarativeExtensionInterface(unsigned int) + ??_EQDeclarativeExtensionPlugin@@UAE@I@Z @ 442 NONAME ; QDeclarativeExtensionPlugin::~QDeclarativeExtensionPlugin(unsigned int) + ??_EQDeclarativeFlickable@@UAE@I@Z @ 443 NONAME ; QDeclarativeFlickable::~QDeclarativeFlickable(unsigned int) + ??_EQDeclarativeFlipable@@UAE@I@Z @ 444 NONAME ; QDeclarativeFlipable::~QDeclarativeFlipable(unsigned int) + ??_EQDeclarativeFlow@@UAE@I@Z @ 445 NONAME ; QDeclarativeFlow::~QDeclarativeFlow(unsigned int) + ??_EQDeclarativeFocusPanel@@UAE@I@Z @ 446 NONAME ; QDeclarativeFocusPanel::~QDeclarativeFocusPanel(unsigned int) + ??_EQDeclarativeFocusScope@@UAE@I@Z @ 447 NONAME ; QDeclarativeFocusScope::~QDeclarativeFocusScope(unsigned int) + ??_EQDeclarativeFontLoader@@UAE@I@Z @ 448 NONAME ; QDeclarativeFontLoader::~QDeclarativeFontLoader(unsigned int) + ??_EQDeclarativeGradient@@UAE@I@Z @ 449 NONAME ; QDeclarativeGradient::~QDeclarativeGradient(unsigned int) + ??_EQDeclarativeGradientStop@@UAE@I@Z @ 450 NONAME ; QDeclarativeGradientStop::~QDeclarativeGradientStop(unsigned int) + ??_EQDeclarativeGraphicsObjectContainer@@UAE@I@Z @ 451 NONAME ; QDeclarativeGraphicsObjectContainer::~QDeclarativeGraphicsObjectContainer(unsigned int) + ??_EQDeclarativeGrid@@UAE@I@Z @ 452 NONAME ; QDeclarativeGrid::~QDeclarativeGrid(unsigned int) + ??_EQDeclarativeGridView@@UAE@I@Z @ 453 NONAME ; QDeclarativeGridView::~QDeclarativeGridView(unsigned int) + ??_EQDeclarativeImage@@UAE@I@Z @ 454 NONAME ; QDeclarativeImage::~QDeclarativeImage(unsigned int) + ??_EQDeclarativeImageBase@@UAE@I@Z @ 455 NONAME ; QDeclarativeImageBase::~QDeclarativeImageBase(unsigned int) + ??_EQDeclarativeImageProvider@@UAE@I@Z @ 456 NONAME ; QDeclarativeImageProvider::~QDeclarativeImageProvider(unsigned int) + ??_EQDeclarativeItem@@UAE@I@Z @ 457 NONAME ; QDeclarativeItem::~QDeclarativeItem(unsigned int) + ??_EQDeclarativeListModel@@UAE@I@Z @ 458 NONAME ; QDeclarativeListModel::~QDeclarativeListModel(unsigned int) + ??_EQDeclarativeListView@@UAE@I@Z @ 459 NONAME ; QDeclarativeListView::~QDeclarativeListView(unsigned int) + ??_EQDeclarativeLoader@@UAE@I@Z @ 460 NONAME ; QDeclarativeLoader::~QDeclarativeLoader(unsigned int) + ??_EQDeclarativeMouseArea@@UAE@I@Z @ 461 NONAME ; QDeclarativeMouseArea::~QDeclarativeMouseArea(unsigned int) + ??_EQDeclarativeNetworkAccessManagerFactory@@UAE@I@Z @ 462 NONAME ; QDeclarativeNetworkAccessManagerFactory::~QDeclarativeNetworkAccessManagerFactory(unsigned int) + ??_EQDeclarativeNumberFormatter@@UAE@I@Z @ 463 NONAME ; QDeclarativeNumberFormatter::~QDeclarativeNumberFormatter(unsigned int) + ??_EQDeclarativeOpenMetaObject@@UAE@I@Z @ 464 NONAME ; QDeclarativeOpenMetaObject::~QDeclarativeOpenMetaObject(unsigned int) + ??_EQDeclarativeOpenMetaObjectType@@UAE@I@Z @ 465 NONAME ; QDeclarativeOpenMetaObjectType::~QDeclarativeOpenMetaObjectType(unsigned int) + ??_EQDeclarativePaintedItem@@UAE@I@Z @ 466 NONAME ; QDeclarativePaintedItem::~QDeclarativePaintedItem(unsigned int) + ??_EQDeclarativeParentChange@@UAE@I@Z @ 467 NONAME ; QDeclarativeParentChange::~QDeclarativeParentChange(unsigned int) + ??_EQDeclarativeParserStatus@@UAE@I@Z @ 468 NONAME ; QDeclarativeParserStatus::~QDeclarativeParserStatus(unsigned int) + ??_EQDeclarativeParticleMotion@@UAE@I@Z @ 469 NONAME ; QDeclarativeParticleMotion::~QDeclarativeParticleMotion(unsigned int) + ??_EQDeclarativeParticleMotionGravity@@UAE@I@Z @ 470 NONAME ; QDeclarativeParticleMotionGravity::~QDeclarativeParticleMotionGravity(unsigned int) + ??_EQDeclarativeParticleMotionLinear@@UAE@I@Z @ 471 NONAME ; QDeclarativeParticleMotionLinear::~QDeclarativeParticleMotionLinear(unsigned int) + ??_EQDeclarativeParticleMotionWander@@UAE@I@Z @ 472 NONAME ; QDeclarativeParticleMotionWander::~QDeclarativeParticleMotionWander(unsigned int) + ??_EQDeclarativeParticles@@UAE@I@Z @ 473 NONAME ; QDeclarativeParticles::~QDeclarativeParticles(unsigned int) + ??_EQDeclarativePath@@UAE@I@Z @ 474 NONAME ; QDeclarativePath::~QDeclarativePath(unsigned int) + ??_EQDeclarativePathAttribute@@UAE@I@Z @ 475 NONAME ; QDeclarativePathAttribute::~QDeclarativePathAttribute(unsigned int) + ??_EQDeclarativePathCubic@@UAE@I@Z @ 476 NONAME ; QDeclarativePathCubic::~QDeclarativePathCubic(unsigned int) + ??_EQDeclarativePathElement@@UAE@I@Z @ 477 NONAME ; QDeclarativePathElement::~QDeclarativePathElement(unsigned int) + ??_EQDeclarativePathLine@@UAE@I@Z @ 478 NONAME ; QDeclarativePathLine::~QDeclarativePathLine(unsigned int) + ??_EQDeclarativePathPercent@@UAE@I@Z @ 479 NONAME ; QDeclarativePathPercent::~QDeclarativePathPercent(unsigned int) + ??_EQDeclarativePathQuad@@UAE@I@Z @ 480 NONAME ; QDeclarativePathQuad::~QDeclarativePathQuad(unsigned int) + ??_EQDeclarativePathView@@UAE@I@Z @ 481 NONAME ; QDeclarativePathView::~QDeclarativePathView(unsigned int) + ??_EQDeclarativePen@@UAE@I@Z @ 482 NONAME ; QDeclarativePen::~QDeclarativePen(unsigned int) + ??_EQDeclarativePixmapReply@@UAE@I@Z @ 483 NONAME ; QDeclarativePixmapReply::~QDeclarativePixmapReply(unsigned int) + ??_EQDeclarativePropertyChanges@@UAE@I@Z @ 484 NONAME ; QDeclarativePropertyChanges::~QDeclarativePropertyChanges(unsigned int) + ??_EQDeclarativePropertyMap@@UAE@I@Z @ 485 NONAME ; QDeclarativePropertyMap::~QDeclarativePropertyMap(unsigned int) + ??_EQDeclarativePropertyValueInterceptor@@UAE@I@Z @ 486 NONAME ; QDeclarativePropertyValueInterceptor::~QDeclarativePropertyValueInterceptor(unsigned int) + ??_EQDeclarativePropertyValueSource@@UAE@I@Z @ 487 NONAME ; QDeclarativePropertyValueSource::~QDeclarativePropertyValueSource(unsigned int) + ??_EQDeclarativeRectangle@@UAE@I@Z @ 488 NONAME ; QDeclarativeRectangle::~QDeclarativeRectangle(unsigned int) + ??_EQDeclarativeRepeater@@UAE@I@Z @ 489 NONAME ; QDeclarativeRepeater::~QDeclarativeRepeater(unsigned int) + ??_EQDeclarativeRow@@UAE@I@Z @ 490 NONAME ; QDeclarativeRow::~QDeclarativeRow(unsigned int) + ??_EQDeclarativeScaleGrid@@UAE@I@Z @ 491 NONAME ; QDeclarativeScaleGrid::~QDeclarativeScaleGrid(unsigned int) + ??_EQDeclarativeSpringFollow@@UAE@I@Z @ 492 NONAME ; QDeclarativeSpringFollow::~QDeclarativeSpringFollow(unsigned int) + ??_EQDeclarativeState@@UAE@I@Z @ 493 NONAME ; QDeclarativeState::~QDeclarativeState(unsigned int) + ??_EQDeclarativeStateChangeScript@@UAE@I@Z @ 494 NONAME ; QDeclarativeStateChangeScript::~QDeclarativeStateChangeScript(unsigned int) + ??_EQDeclarativeStateGroup@@UAE@I@Z @ 495 NONAME ; QDeclarativeStateGroup::~QDeclarativeStateGroup(unsigned int) + ??_EQDeclarativeStateOperation@@UAE@I@Z @ 496 NONAME ; QDeclarativeStateOperation::~QDeclarativeStateOperation(unsigned int) + ??_EQDeclarativeSystemPalette@@UAE@I@Z @ 497 NONAME ; QDeclarativeSystemPalette::~QDeclarativeSystemPalette(unsigned int) + ??_EQDeclarativeText@@UAE@I@Z @ 498 NONAME ; QDeclarativeText::~QDeclarativeText(unsigned int) + ??_EQDeclarativeTextEdit@@UAE@I@Z @ 499 NONAME ; QDeclarativeTextEdit::~QDeclarativeTextEdit(unsigned int) + ??_EQDeclarativeTextInput@@UAE@I@Z @ 500 NONAME ; QDeclarativeTextInput::~QDeclarativeTextInput(unsigned int) + ??_EQDeclarativeTimer@@UAE@I@Z @ 501 NONAME ; QDeclarativeTimer::~QDeclarativeTimer(unsigned int) + ??_EQDeclarativeTransition@@UAE@I@Z @ 502 NONAME ; QDeclarativeTransition::~QDeclarativeTransition(unsigned int) + ??_EQDeclarativeValueType@@UAE@I@Z @ 503 NONAME ; QDeclarativeValueType::~QDeclarativeValueType(unsigned int) + ??_EQDeclarativeView@@UAE@I@Z @ 504 NONAME ; QDeclarativeView::~QDeclarativeView(unsigned int) + ??_EQDeclarativeViewSection@@UAE@I@Z @ 505 NONAME ; QDeclarativeViewSection::~QDeclarativeViewSection(unsigned int) + ??_EQDeclarativeVisualDataModel@@UAE@I@Z @ 506 NONAME ; QDeclarativeVisualDataModel::~QDeclarativeVisualDataModel(unsigned int) + ??_EQDeclarativeVisualItemModel@@UAE@I@Z @ 507 NONAME ; QDeclarativeVisualItemModel::~QDeclarativeVisualItemModel(unsigned int) + ??_EQDeclarativeVisualModel@@UAE@I@Z @ 508 NONAME ; QDeclarativeVisualModel::~QDeclarativeVisualModel(unsigned int) + ??_EQDeclarativeWebPage@@UAE@I@Z @ 509 NONAME ; QDeclarativeWebPage::~QDeclarativeWebPage(unsigned int) + ??_EQDeclarativeWebView@@UAE@I@Z @ 510 NONAME ; QDeclarativeWebView::~QDeclarativeWebView(unsigned int) + ??_EQDeclarativeXmlListModel@@UAE@I@Z @ 511 NONAME ; QDeclarativeXmlListModel::~QDeclarativeXmlListModel(unsigned int) + ??_EQDeclarativeXmlListModelRole@@UAE@I@Z @ 512 NONAME ; QDeclarativeXmlListModelRole::~QDeclarativeXmlListModelRole(unsigned int) + ??_EQListModelInterface@@UAE@I@Z @ 513 NONAME ; QListModelInterface::~QListModelInterface(unsigned int) + ??_EQMetaObjectBuilder@@UAE@I@Z @ 514 NONAME ; QMetaObjectBuilder::~QMetaObjectBuilder(unsigned int) + ??_EQPacket@@UAE@I@Z @ 515 NONAME ; QPacket::~QPacket(unsigned int) + ??_EQPacketAutoSend@@UAE@I@Z @ 516 NONAME ; QPacketAutoSend::~QPacketAutoSend(unsigned int) + ??_EQPacketProtocol@@UAE@I@Z @ 517 NONAME ; QPacketProtocol::~QPacketProtocol(unsigned int) + ?__q_notify@QDeclarativeExpression@@AAEXXZ @ 518 NONAME ; void QDeclarativeExpression::__q_notify(void) + ?_q_createdPackage@QDeclarativeVisualDataModel@@AAEXHPAVQDeclarativePackage@@@Z @ 519 NONAME ; void QDeclarativeVisualDataModel::_q_createdPackage(int, class QDeclarativePackage *) + ?_q_dataChanged@QDeclarativeVisualDataModel@@AAEXABVQModelIndex@@0@Z @ 520 NONAME ; void QDeclarativeVisualDataModel::_q_dataChanged(class QModelIndex const &, class QModelIndex const &) + ?_q_destroyingPackage@QDeclarativeVisualDataModel@@AAEXPAVQDeclarativePackage@@@Z @ 521 NONAME ; void QDeclarativeVisualDataModel::_q_destroyingPackage(class QDeclarativePackage *) + ?_q_itemsChanged@QDeclarativeVisualDataModel@@AAEXHHABV?$QList@H@@@Z @ 522 NONAME ; void QDeclarativeVisualDataModel::_q_itemsChanged(int, int, class QList const &) + ?_q_itemsInserted@QDeclarativeVisualDataModel@@AAEXHH@Z @ 523 NONAME ; void QDeclarativeVisualDataModel::_q_itemsInserted(int, int) + ?_q_itemsMoved@QDeclarativeVisualDataModel@@AAEXHHH@Z @ 524 NONAME ; void QDeclarativeVisualDataModel::_q_itemsMoved(int, int, int) + ?_q_itemsRemoved@QDeclarativeVisualDataModel@@AAEXHH@Z @ 525 NONAME ; void QDeclarativeVisualDataModel::_q_itemsRemoved(int, int) + ?_q_modelReset@QDeclarativeVisualDataModel@@AAEXXZ @ 526 NONAME ; void QDeclarativeVisualDataModel::_q_modelReset(void) + ?_q_rowsInserted@QDeclarativeVisualDataModel@@AAEXABVQModelIndex@@HH@Z @ 527 NONAME ; void QDeclarativeVisualDataModel::_q_rowsInserted(class QModelIndex const &, int, int) + ?_q_rowsMoved@QDeclarativeVisualDataModel@@AAEXABVQModelIndex@@HH0H@Z @ 528 NONAME ; void QDeclarativeVisualDataModel::_q_rowsMoved(class QModelIndex const &, int, int, class QModelIndex const &, int) + ?_q_rowsRemoved@QDeclarativeVisualDataModel@@AAEXABVQModelIndex@@HH@Z @ 529 NONAME ; void QDeclarativeVisualDataModel::_q_rowsRemoved(class QModelIndex const &, int, int) + ?acceleration@QDeclarativeParticleMotionGravity@@QBEMXZ @ 530 NONAME ; float QDeclarativeParticleMotionGravity::acceleration(void) const + ?accelerationChanged@QDeclarativeParticleMotionGravity@@IAEXXZ @ 531 NONAME ; void QDeclarativeParticleMotionGravity::accelerationChanged(void) + ?acceptableInputChanged@QDeclarativeTextInput@@IAEXXZ @ 532 NONAME ; void QDeclarativeTextInput::acceptableInputChanged(void) + ?accepted@QDeclarativeTextInput@@IAEXXZ @ 533 NONAME ; void QDeclarativeTextInput::accepted(void) + ?acceptedButtons@QDeclarativeMouseArea@@QBE?AV?$QFlags@W4MouseButton@Qt@@@@XZ @ 534 NONAME ; class QFlags QDeclarativeMouseArea::acceptedButtons(void) const + ?acceptedButtonsChanged@QDeclarativeMouseArea@@IAEXXZ @ 535 NONAME ; void QDeclarativeMouseArea::acceptedButtonsChanged(void) + ?access@QMetaMethodBuilder@@QBE?AW4Access@QMetaMethod@@XZ @ 536 NONAME ; enum QMetaMethod::Access QMetaMethodBuilder::access(void) const + ?actions@QDeclarativeAnchorChanges@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 537 NONAME ; class QList QDeclarativeAnchorChanges::actions(void) + ?actions@QDeclarativeParentChange@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 538 NONAME ; class QList QDeclarativeParentChange::actions(void) + ?actions@QDeclarativePropertyChanges@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 539 NONAME ; class QList QDeclarativePropertyChanges::actions(void) + ?actions@QDeclarativeStateChangeScript@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 540 NONAME ; class QList QDeclarativeStateChangeScript::actions(void) + ?actions@QDeclarativeStateOperation@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 541 NONAME ; class QList QDeclarativeStateOperation::actions(void) + ?activeChanged@QDeclarativeFocusPanel@@IAEXXZ @ 542 NONAME ; void QDeclarativeFocusPanel::activeChanged(void) + ?add@QDeclarativeBasePositioner@@QBEPAVQDeclarativeTransition@@XZ @ 543 NONAME ; class QDeclarativeTransition * QDeclarativeBasePositioner::add(void) const + ?addBindingReference@QDeclarativeCompiler@@AAEXABUBindingReference@1@@Z @ 544 NONAME ; void QDeclarativeCompiler::addBindingReference(struct QDeclarativeCompiler::BindingReference const &) + ?addChanged@QDeclarativeBasePositioner@@IAEXXZ @ 545 NONAME ; void QDeclarativeBasePositioner::addChanged(void) + ?addClassInfo@QMetaObjectBuilder@@QAEHABVQByteArray@@0@Z @ 546 NONAME ; int QMetaObjectBuilder::addClassInfo(class QByteArray const &, class QByteArray const &) + ?addConstructor@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 547 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addConstructor(class QByteArray const &) + ?addConstructor@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQMetaMethod@@@Z @ 548 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addConstructor(class QMetaMethod const &) + ?addDefaultObject@QDeclarativeContext@@QAEXPAVQObject@@@Z @ 549 NONAME ; void QDeclarativeContext::addDefaultObject(class QObject *) + ?addEnumerator@QMetaObjectBuilder@@QAE?AVQMetaEnumBuilder@@ABVQByteArray@@@Z @ 550 NONAME ; class QMetaEnumBuilder QMetaObjectBuilder::addEnumerator(class QByteArray const &) + ?addEnumerator@QMetaObjectBuilder@@QAE?AVQMetaEnumBuilder@@ABVQMetaEnum@@@Z @ 551 NONAME ; class QMetaEnumBuilder QMetaObjectBuilder::addEnumerator(class QMetaEnum const &) + ?addId@QDeclarativeCompiler@@AAEXABVQString@@PAVObject@QDeclarativeParser@@@Z @ 552 NONAME ; void QDeclarativeCompiler::addId(class QString const &, class QDeclarativeParser::Object *) + ?addImageProvider@QDeclarativeEngine@@QAEXABVQString@@PAVQDeclarativeImageProvider@@@Z @ 553 NONAME ; void QDeclarativeEngine::addImageProvider(class QString const &, class QDeclarativeImageProvider *) + ?addImportPath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 554 NONAME ; void QDeclarativeEngine::addImportPath(class QString const &) + ?addKey@QMetaEnumBuilder@@QAEHABVQByteArray@@H@Z @ 555 NONAME ; int QMetaEnumBuilder::addKey(class QByteArray const &, int) + ?addMetaObject@QMetaObjectBuilder@@QAEXPBUQMetaObject@@V?$QFlags@W4AddMember@QMetaObjectBuilder@@@@@Z @ 556 NONAME ; void QMetaObjectBuilder::addMetaObject(struct QMetaObject const *, class QFlags) + ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@0@Z @ 557 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QByteArray const &, class QByteArray const &) + ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 558 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QByteArray const &) + ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQMetaMethod@@@Z @ 559 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QMetaMethod const &) + ?addProperty@QMetaObjectBuilder@@QAE?AVQMetaPropertyBuilder@@ABVQByteArray@@0H@Z @ 560 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::addProperty(class QByteArray const &, class QByteArray const &, int) + ?addProperty@QMetaObjectBuilder@@QAE?AVQMetaPropertyBuilder@@ABVQMetaProperty@@@Z @ 561 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::addProperty(class QMetaProperty const &) + ?addRef@QDeclarativePixmapReply@@AAEXXZ @ 562 NONAME ; void QDeclarativePixmapReply::addRef(void) + ?addRelatedMetaObject@QMetaObjectBuilder@@QAEHABQ6AABUQMetaObject@@XZ@Z @ 563 NONAME ; int QMetaObjectBuilder::addRelatedMetaObject(struct QMetaObject const & (* const)(void) const &) + ?addRole@QDeclarativeListModel@@ABEXABVQString@@@Z @ 564 NONAME ; void QDeclarativeListModel::addRole(class QString const &) const + ?addScript@QDeclarativeContextPrivate@@QAEXABUScriptBlock@Object@QDeclarativeParser@@PAVQObject@@@Z @ 565 NONAME ; void QDeclarativeContextPrivate::addScript(struct QDeclarativeParser::Object::ScriptBlock const &, class QObject *) + ?addSignal@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 566 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addSignal(class QByteArray const &) + ?addSlot@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 567 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addSlot(class QByteArray const &) + ?addToPath@QDeclarativeCurve@@UAEXAAVQPainterPath@@@Z @ 568 NONAME ; void QDeclarativeCurve::addToPath(class QPainterPath &) + ?addToPath@QDeclarativePathCubic@@UAEXAAVQPainterPath@@@Z @ 569 NONAME ; void QDeclarativePathCubic::addToPath(class QPainterPath &) + ?addToPath@QDeclarativePathLine@@UAEXAAVQPainterPath@@@Z @ 570 NONAME ; void QDeclarativePathLine::addToPath(class QPainterPath &) + ?addToPath@QDeclarativePathQuad@@UAEXAAVQPainterPath@@@Z @ 571 NONAME ; void QDeclarativePathQuad::addToPath(class QPainterPath &) + ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectExpressionWatch@@ABVQDeclarativeDebugObjectReference@@ABVQString@@PAVQObject@@@Z @ 572 NONAME ; class QDeclarativeDebugObjectExpressionWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugObjectReference const &, class QString const &, class QObject *) + ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugPropertyWatch@@ABVQDeclarativeDebugPropertyReference@@PAVQObject@@@Z @ 573 NONAME ; class QDeclarativeDebugPropertyWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugPropertyReference const &, class QObject *) + ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugContextReference@@ABVQString@@PAVQObject@@@Z @ 574 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugContextReference const &, class QString const &, class QObject *) + ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugFileReference@@PAVQObject@@@Z @ 575 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugFileReference const &, class QObject *) + ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 576 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugObjectReference const &, class QObject *) + ?advance@QDeclarativeParticleMotion@@UAEXAAVQDeclarativeParticle@@H@Z @ 577 NONAME ; void QDeclarativeParticleMotion::advance(class QDeclarativeParticle &, int) + ?advance@QDeclarativeParticleMotionGravity@@UAEXAAVQDeclarativeParticle@@H@Z @ 578 NONAME ; void QDeclarativeParticleMotionGravity::advance(class QDeclarativeParticle &, int) + ?advance@QDeclarativeParticleMotionLinear@@UAEXAAVQDeclarativeParticle@@H@Z @ 579 NONAME ; void QDeclarativeParticleMotionLinear::advance(class QDeclarativeParticle &, int) + ?advance@QDeclarativeParticleMotionWander@@UAEXAAVQDeclarativeParticle@@H@Z @ 580 NONAME ; void QDeclarativeParticleMotionWander::advance(class QDeclarativeParticle &, int) + ?alert@QDeclarativeWebView@@IAEXABVQString@@@Z @ 581 NONAME ; void QDeclarativeWebView::alert(class QString const &) + ?alternateBase@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 582 NONAME ; class QColor QDeclarativeSystemPalette::alternateBase(void) const + ?anchors@QDeclarativeItem@@QAEPAVQDeclarativeAnchors@@XZ @ 583 NONAME ; class QDeclarativeAnchors * QDeclarativeItem::anchors(void) + ?angle@QDeclarativeParticles@@QBEMXZ @ 584 NONAME ; float QDeclarativeParticles::angle(void) const + ?angleChanged@QDeclarativeParticles@@IAEXXZ @ 585 NONAME ; void QDeclarativeParticles::angleChanged(void) + ?angleDeviation@QDeclarativeParticles@@QBEMXZ @ 586 NONAME ; float QDeclarativeParticles::angleDeviation(void) const + ?angleDeviationChanged@QDeclarativeParticles@@IAEXXZ @ 587 NONAME ; void QDeclarativeParticles::angleDeviationChanged(void) + ?animStopped@QDeclarativeListView@@AAEXXZ @ 588 NONAME ; void QDeclarativeListView::animStopped(void) + ?animation@QDeclarativeBehavior@@QAEPAVQDeclarativeAbstractAnimation@@XZ @ 589 NONAME ; class QDeclarativeAbstractAnimation * QDeclarativeBehavior::animation(void) + ?animations@QDeclarativeTransition@@QAE?AU?$QDeclarativeListProperty@VQDeclarativeAbstractAnimation@@@@XZ @ 590 NONAME ; struct QDeclarativeListProperty QDeclarativeTransition::animations(void) + ?append@QDeclarativeListModel@@QAEXABVQScriptValue@@@Z @ 591 NONAME ; void QDeclarativeListModel::append(class QScriptValue const &) + ?append@QDeclarativeListReference@@QBE_NPAVQObject@@@Z @ 592 NONAME ; bool QDeclarativeListReference::append(class QObject *) const + ?apply@QDeclarativeState@@QAEXPAVQDeclarativeStateGroup@@PAVQDeclarativeTransition@@PAV1@@Z @ 593 NONAME ; void QDeclarativeState::apply(class QDeclarativeStateGroup *, class QDeclarativeTransition *, class QDeclarativeState *) + ?assignedValues@QDeclarativeCustomParserProperty@@QBE?AV?$QList@VQVariant@@@@XZ @ 594 NONAME ; class QList QDeclarativeCustomParserProperty::assignedValues(void) const + ?asynchronous@QDeclarativeImageBase@@QBE_NXZ @ 595 NONAME ; bool QDeclarativeImageBase::asynchronous(void) const + ?asynchronousChanged@QDeclarativeImageBase@@IAEXXZ @ 596 NONAME ; void QDeclarativeImageBase::asynchronousChanged(void) + ?at@QDeclarativeListAccessor@@QBE?AVQVariant@@H@Z @ 597 NONAME ; class QVariant QDeclarativeListAccessor::at(int) const + ?at@QDeclarativeListReference@@QBEPAVQObject@@H@Z @ 598 NONAME ; class QObject * QDeclarativeListReference::at(int) const + ?attachedPropertiesFuncById@QDeclarativeMetaType@@SAP6APAVQObject@@PAV2@@ZH@Z @ 599 NONAME ; class QObject * (*)(class QObject *) QDeclarativeMetaType::attachedPropertiesFuncById(int) + ?attachedPropertiesFuncId@QDeclarativeMetaType@@SAHPBUQMetaObject@@@Z @ 600 NONAME ; int QDeclarativeMetaType::attachedPropertiesFuncId(struct QMetaObject const *) + ?attachedPropertiesFunction@QDeclarativeType@@QBEP6APAVQObject@@PAV2@@ZXZ @ 601 NONAME ; class QObject * (*)(class QObject *) QDeclarativeType::attachedPropertiesFunction(void) const + ?attachedPropertiesType@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 602 NONAME ; struct QMetaObject const * QDeclarativeType::attachedPropertiesType(void) const + ?attributeAt@QDeclarativePath@@QBEMABVQString@@M@Z @ 603 NONAME ; float QDeclarativePath::attributeAt(class QString const &, float) const + ?attributes@QDeclarativePath@@QBE?AVQStringList@@XZ @ 604 NONAME ; class QStringList QDeclarativePath::attributes(void) const + ?attributes@QMetaMethodBuilder@@QBEHXZ @ 605 NONAME ; int QMetaMethodBuilder::attributes(void) const + ?availableInVersion@QDeclarativeType@@QBE_NHH@Z @ 606 NONAME ; bool QDeclarativeType::availableInVersion(int, int) const + ?axis@QDeclarativeDrag@@QBE?AW4Axis@1@XZ @ 607 NONAME ; enum QDeclarativeDrag::Axis QDeclarativeDrag::axis(void) const + ?axisChanged@QDeclarativeDrag@@IAEXXZ @ 608 NONAME ; void QDeclarativeDrag::axisChanged(void) + ?back@QDeclarativeFlipable@@QAEPAVQDeclarativeItem@@XZ @ 609 NONAME ; class QDeclarativeItem * QDeclarativeFlipable::back(void) + ?backAction@QDeclarativeWebView@@QBEPAVQAction@@XZ @ 610 NONAME ; class QAction * QDeclarativeWebView::backAction(void) const + ?base@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 611 NONAME ; class QColor QDeclarativeSystemPalette::base(void) const + ?baseMetaObject@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 612 NONAME ; struct QMetaObject const * QDeclarativeType::baseMetaObject(void) const + ?baseUrl@QDeclarativeContext@@QBE?AVQUrl@@XZ @ 613 NONAME ; class QUrl QDeclarativeContext::baseUrl(void) const + ?baseUrl@QDeclarativeEngine@@QBE?AVQUrl@@XZ @ 614 NONAME ; class QUrl QDeclarativeEngine::baseUrl(void) const + ?baseline@QDeclarativeAnchorChanges@@QBE?AVQDeclarativeAnchorLine@@XZ @ 615 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchorChanges::baseline(void) const + ?baseline@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 616 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::baseline(void) const + ?baseline@QDeclarativeItem@@QBE?AVQDeclarativeAnchorLine@@XZ @ 617 NONAME ; class QDeclarativeAnchorLine QDeclarativeItem::baseline(void) const + ?baselineChanged@QDeclarativeAnchors@@IAEXXZ @ 618 NONAME ; void QDeclarativeAnchors::baselineChanged(void) + ?baselineOffset@QDeclarativeAnchors@@QBEMXZ @ 619 NONAME ; float QDeclarativeAnchors::baselineOffset(void) const + ?baselineOffset@QDeclarativeItem@@QBEMXZ @ 620 NONAME ; float QDeclarativeItem::baselineOffset(void) const + ?baselineOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 621 NONAME ; void QDeclarativeAnchors::baselineOffsetChanged(void) + ?baselineOffsetChanged@QDeclarativeItem@@IAEXXZ @ 622 NONAME ; void QDeclarativeItem::baselineOffsetChanged(void) + ?beginCreate@QDeclarativeComponent@@UAEPAVQObject@@PAVQDeclarativeContext@@@Z @ 623 NONAME ; class QObject * QDeclarativeComponent::beginCreate(class QDeclarativeContext *) + ?binding@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 624 NONAME ; class QString QDeclarativeDebugPropertyReference::binding(void) const + ?binding@QDeclarativeDomValueBinding@@QBE?AVQString@@XZ @ 625 NONAME ; class QString QDeclarativeDomValueBinding::binding(void) const + ?border@QDeclarativeBorderImage@@QAEPAVQDeclarativeScaleGrid@@XZ @ 626 NONAME ; class QDeclarativeScaleGrid * QDeclarativeBorderImage::border(void) + ?border@QDeclarativeRectangle@@QAEPAVQDeclarativePen@@XZ @ 627 NONAME ; class QDeclarativePen * QDeclarativeRectangle::border(void) + ?borderChanged@QDeclarativeScaleGrid@@IAEXXZ @ 628 NONAME ; void QDeclarativeScaleGrid::borderChanged(void) + ?bottom@QDeclarativeAnchorChanges@@QBE?AVQDeclarativeAnchorLine@@XZ @ 629 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchorChanges::bottom(void) const + ?bottom@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 630 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::bottom(void) const + ?bottom@QDeclarativeItem@@QBE?AVQDeclarativeAnchorLine@@XZ @ 631 NONAME ; class QDeclarativeAnchorLine QDeclarativeItem::bottom(void) const + ?bottom@QDeclarativeScaleGrid@@QBEHXZ @ 632 NONAME ; int QDeclarativeScaleGrid::bottom(void) const + ?bottomChanged@QDeclarativeAnchors@@IAEXXZ @ 633 NONAME ; void QDeclarativeAnchors::bottomChanged(void) + ?bottomMargin@QDeclarativeAnchors@@QBEMXZ @ 634 NONAME ; float QDeclarativeAnchors::bottomMargin(void) const + ?bottomMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 635 NONAME ; void QDeclarativeAnchors::bottomMarginChanged(void) + ?boundingRect@QDeclarativeItem@@UBE?AVQRectF@@XZ @ 636 NONAME ; class QRectF QDeclarativeItem::boundingRect(void) const + ?boundingRect@QDeclarativeRectangle@@UBE?AVQRectF@@XZ @ 637 NONAME ; class QRectF QDeclarativeRectangle::boundingRect(void) const + ?buildAttachedProperty@QDeclarativeCompiler@@AAE_NPAVProperty@QDeclarativeParser@@PAVObject@3@ABUBindingContext@1@@Z @ 638 NONAME ; bool QDeclarativeCompiler::buildAttachedProperty(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?buildBinding@QDeclarativeCompiler@@AAE_NPAVValue@QDeclarativeParser@@PAVProperty@3@ABUBindingContext@1@@Z @ 639 NONAME ; bool QDeclarativeCompiler::buildBinding(class QDeclarativeParser::Value *, class QDeclarativeParser::Property *, struct QDeclarativeCompiler::BindingContext const &) + ?buildComponent@QDeclarativeCompiler@@AAE_NPAVObject@QDeclarativeParser@@ABUBindingContext@1@@Z @ 640 NONAME ; bool QDeclarativeCompiler::buildComponent(class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?buildComponentFromRoot@QDeclarativeCompiler@@AAE_NPAVObject@QDeclarativeParser@@ABUBindingContext@1@@Z @ 641 NONAME ; bool QDeclarativeCompiler::buildComponentFromRoot(class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?buildDynamicMeta@QDeclarativeCompiler@@AAE_NPAVObject@QDeclarativeParser@@W4DynamicMetaMode@1@@Z @ 642 NONAME ; bool QDeclarativeCompiler::buildDynamicMeta(class QDeclarativeParser::Object *, enum QDeclarativeCompiler::DynamicMetaMode) + ?buildGroupedProperty@QDeclarativeCompiler@@AAE_NPAVProperty@QDeclarativeParser@@PAVObject@3@ABUBindingContext@1@@Z @ 643 NONAME ; bool QDeclarativeCompiler::buildGroupedProperty(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?buildIdProperty@QDeclarativeCompiler@@AAE_NPAVProperty@QDeclarativeParser@@PAVObject@3@@Z @ 644 NONAME ; bool QDeclarativeCompiler::buildIdProperty(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *) + ?buildListProperty@QDeclarativeCompiler@@AAE_NPAVProperty@QDeclarativeParser@@PAVObject@3@ABUBindingContext@1@@Z @ 645 NONAME ; bool QDeclarativeCompiler::buildListProperty(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?buildObject@QDeclarativeCompiler@@AAE_NPAVObject@QDeclarativeParser@@ABUBindingContext@1@@Z @ 646 NONAME ; bool QDeclarativeCompiler::buildObject(class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?buildProperty@QDeclarativeCompiler@@AAE_NPAVProperty@QDeclarativeParser@@PAVObject@3@ABUBindingContext@1@@Z @ 647 NONAME ; bool QDeclarativeCompiler::buildProperty(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?buildPropertyAssignment@QDeclarativeCompiler@@AAE_NPAVProperty@QDeclarativeParser@@PAVObject@3@ABUBindingContext@1@@Z @ 648 NONAME ; bool QDeclarativeCompiler::buildPropertyAssignment(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?buildPropertyInNamespace@QDeclarativeCompiler@@AAE_NPAUImportedNamespace@QDeclarativeEnginePrivate@@PAVProperty@QDeclarativeParser@@PAVObject@5@ABUBindingContext@1@@Z @ 649 NONAME ; bool QDeclarativeCompiler::buildPropertyInNamespace(struct QDeclarativeEnginePrivate::ImportedNamespace *, class QDeclarativeParser::Property *, class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?buildPropertyLiteralAssignment@QDeclarativeCompiler@@AAE_NPAVProperty@QDeclarativeParser@@PAVObject@3@PAVValue@3@ABUBindingContext@1@@Z @ 650 NONAME ; bool QDeclarativeCompiler::buildPropertyLiteralAssignment(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *, class QDeclarativeParser::Value *, struct QDeclarativeCompiler::BindingContext const &) + ?buildPropertyObjectAssignment@QDeclarativeCompiler@@AAE_NPAVProperty@QDeclarativeParser@@PAVObject@3@PAVValue@3@ABUBindingContext@1@@Z @ 651 NONAME ; bool QDeclarativeCompiler::buildPropertyObjectAssignment(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *, class QDeclarativeParser::Value *, struct QDeclarativeCompiler::BindingContext const &) + ?buildScript@QDeclarativeCompiler@@AAE_NPAVObject@QDeclarativeParser@@0@Z @ 652 NONAME ; bool QDeclarativeCompiler::buildScript(class QDeclarativeParser::Object *, class QDeclarativeParser::Object *) + ?buildScriptStringProperty@QDeclarativeCompiler@@AAE_NPAVProperty@QDeclarativeParser@@PAVObject@3@ABUBindingContext@1@@Z @ 653 NONAME ; bool QDeclarativeCompiler::buildScriptStringProperty(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?buildSignal@QDeclarativeCompiler@@AAE_NPAVProperty@QDeclarativeParser@@PAVObject@3@ABUBindingContext@1@@Z @ 654 NONAME ; bool QDeclarativeCompiler::buildSignal(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?buildSubObject@QDeclarativeCompiler@@AAE_NPAVObject@QDeclarativeParser@@ABUBindingContext@1@@Z @ 655 NONAME ; bool QDeclarativeCompiler::buildSubObject(class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?buildValueTypeProperty@QDeclarativeCompiler@@AAE_NPAVQObject@@PAVObject@QDeclarativeParser@@1ABUBindingContext@1@@Z @ 656 NONAME ; bool QDeclarativeCompiler::buildValueTypeProperty(class QObject *, class QDeclarativeParser::Object *, class QDeclarativeParser::Object *, struct QDeclarativeCompiler::BindingContext const &) + ?burst@QDeclarativeParticles@@QAEXHH@Z @ 657 NONAME ; void QDeclarativeParticles::burst(int, int) + ?button@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 658 NONAME ; class QColor QDeclarativeSystemPalette::button(void) const + ?buttonText@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 659 NONAME ; class QColor QDeclarativeSystemPalette::buttonText(void) const + ?cacheBuffer@QDeclarativeGridView@@QBEHXZ @ 660 NONAME ; int QDeclarativeGridView::cacheBuffer(void) const + ?cacheBuffer@QDeclarativeListView@@QBEHXZ @ 661 NONAME ; int QDeclarativeListView::cacheBuffer(void) const + ?canAppend@QDeclarativeListReference@@QBE_NXZ @ 662 NONAME ; bool QDeclarativeListReference::canAppend(void) const + ?canAt@QDeclarativeListReference@@QBE_NXZ @ 663 NONAME ; bool QDeclarativeListReference::canAt(void) const + ?canClear@QDeclarativeListReference@@QBE_NXZ @ 664 NONAME ; bool QDeclarativeListReference::canClear(void) const + ?canCoerce@QDeclarativeCompiler@@AAE_NHH@Z @ 665 NONAME ; bool QDeclarativeCompiler::canCoerce(int, int) + ?canCoerce@QDeclarativeCompiler@@AAE_NHPAVObject@QDeclarativeParser@@@Z @ 666 NONAME ; bool QDeclarativeCompiler::canCoerce(int, class QDeclarativeParser::Object *) + ?canCount@QDeclarativeListReference@@QBE_NXZ @ 667 NONAME ; bool QDeclarativeListReference::canCount(void) const + ?cancel@QDeclarativePixmapCache@@SAXABVQUrl@@PAVQObject@@@Z @ 668 NONAME ; void QDeclarativePixmapCache::cancel(class QUrl const &, class QObject *) + ?cancel@QDeclarativeState@@QAEXXZ @ 669 NONAME ; void QDeclarativeState::cancel(void) + ?cancelFlick@QDeclarativeFlickable@@IAEXXZ @ 670 NONAME ; void QDeclarativeFlickable::cancelFlick(void) + ?cellHeight@QDeclarativeGridView@@QBEHXZ @ 671 NONAME ; int QDeclarativeGridView::cellHeight(void) const + ?cellHeightChanged@QDeclarativeGridView@@IAEXXZ @ 672 NONAME ; void QDeclarativeGridView::cellHeightChanged(void) + ?cellWidth@QDeclarativeGridView@@QBEHXZ @ 673 NONAME ; int QDeclarativeGridView::cellWidth(void) const + ?cellWidthChanged@QDeclarativeGridView@@IAEXXZ @ 674 NONAME ; void QDeclarativeGridView::cellWidthChanged(void) + ?centerIn@QDeclarativeAnchors@@QBEPAVQDeclarativeItem@@XZ @ 675 NONAME ; class QDeclarativeItem * QDeclarativeAnchors::centerIn(void) const + ?centerInChanged@QDeclarativeAnchors@@IAEXXZ @ 676 NONAME ; void QDeclarativeAnchors::centerInChanged(void) + ?changed@QDeclarativePath@@IAEXXZ @ 677 NONAME ; void QDeclarativePath::changed(void) + ?changed@QDeclarativePathElement@@IAEXXZ @ 678 NONAME ; void QDeclarativePathElement::changed(void) + ?changed@QDeclarativeViewSection@@IAEXXZ @ 679 NONAME ; void QDeclarativeViewSection::changed(void) + ?changes@QDeclarativeState@@QAE?AU?$QDeclarativeListProperty@VQDeclarativeStateOperation@@@@XZ @ 680 NONAME ; struct QDeclarativeListProperty QDeclarativeState::changes(void) + ?changesBindings@QDeclarativeAnchorChanges@@UAE_NXZ @ 681 NONAME ; bool QDeclarativeAnchorChanges::changesBindings(void) + ?checkDynamicMeta@QDeclarativeCompiler@@AAE_NPAVObject@QDeclarativeParser@@@Z @ 682 NONAME ; bool QDeclarativeCompiler::checkDynamicMeta(class QDeclarativeParser::Object *) + ?checkRoles@QDeclarativeListModel@@ABEXXZ @ 683 NONAME ; void QDeclarativeListModel::checkRoles(void) const + ?children@QDeclarativeDebugObjectReference@@QBE?AV?$QList@VQDeclarativeDebugObjectReference@@@@XZ @ 684 NONAME ; class QList QDeclarativeDebugObjectReference::children(void) const + ?children@QDeclarativeVisualItemModel@@QAE?AU?$QDeclarativeListProperty@VQDeclarativeItem@@@@XZ @ 685 NONAME ; struct QDeclarativeListProperty QDeclarativeVisualItemModel::children(void) + ?childrenChanged@QDeclarativeItem@@IAEXXZ @ 686 NONAME ; void QDeclarativeItem::childrenChanged(void) + ?childrenChanged@QDeclarativeVisualItemModel@@IAEXXZ @ 687 NONAME ; void QDeclarativeVisualItemModel::childrenChanged(void) + ?childrenRect@QDeclarativeItem@@QAE?AVQRectF@@XZ @ 688 NONAME ; class QRectF QDeclarativeItem::childrenRect(void) + ?childrenRectChanged@QDeclarativeItem@@IAEXXZ @ 689 NONAME ; void QDeclarativeItem::childrenRectChanged(void) + ?chooseFile@QDeclarativeWebPage@@MAE?AVQString@@PAVQWebFrame@@ABV2@@Z @ 690 NONAME ; class QString QDeclarativeWebPage::chooseFile(class QWebFrame *, class QString const &) + ?classBegin@QDeclarativeAnchors@@QAEXXZ @ 691 NONAME ; void QDeclarativeAnchors::classBegin(void) + ?classBegin@QDeclarativeDateTimeFormatter@@UAEXXZ @ 692 NONAME ; void QDeclarativeDateTimeFormatter::classBegin(void) + ?classBegin@QDeclarativeItem@@MAEXXZ @ 693 NONAME ; void QDeclarativeItem::classBegin(void) + ?classBegin@QDeclarativeNumberFormatter@@UAEXXZ @ 694 NONAME ; void QDeclarativeNumberFormatter::classBegin(void) + ?classBegin@QDeclarativeParserStatus@@UAEXXZ @ 695 NONAME ; void QDeclarativeParserStatus::classBegin(void) + ?classBegin@QDeclarativeStateGroup@@UAEXXZ @ 696 NONAME ; void QDeclarativeStateGroup::classBegin(void) + ?classBegin@QDeclarativeTimer@@MAEXXZ @ 697 NONAME ; void QDeclarativeTimer::classBegin(void) + ?classBegin@QDeclarativeXmlListModel@@UAEXXZ @ 698 NONAME ; void QDeclarativeXmlListModel::classBegin(void) + ?classInfoCount@QMetaObjectBuilder@@QBEHXZ @ 699 NONAME ; int QMetaObjectBuilder::classInfoCount(void) const + ?classInfoName@QMetaObjectBuilder@@QBE?AVQByteArray@@H@Z @ 700 NONAME ; class QByteArray QMetaObjectBuilder::classInfoName(int) const + ?classInfoValue@QMetaObjectBuilder@@QBE?AVQByteArray@@H@Z @ 701 NONAME ; class QByteArray QMetaObjectBuilder::classInfoValue(int) const + ?className@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 702 NONAME ; class QString QDeclarativeDebugObjectReference::className(void) const + ?className@QMetaObjectBuilder@@QBE?AVQByteArray@@XZ @ 703 NONAME ; class QByteArray QMetaObjectBuilder::className(void) const + ?clear@QDeclarativeListModel@@QAEXXZ @ 704 NONAME ; void QDeclarativeListModel::clear(void) + ?clear@QDeclarativeListReference@@QBE_NXZ @ 705 NONAME ; bool QDeclarativeListReference::clear(void) const + ?clear@QDeclarativePropertyMap@@QAEXABVQString@@@Z @ 706 NONAME ; void QDeclarativePropertyMap::clear(class QString const &) + ?clear@QDeclarativeRepeater@@AAEXXZ @ 707 NONAME ; void QDeclarativeRepeater::clear(void) + ?clear@QPacket@@QAEXXZ @ 708 NONAME ; void QPacket::clear(void) + ?clear@QPacketProtocol@@QAEXXZ @ 709 NONAME ; void QPacketProtocol::clear(void) + ?clear@QPerformanceLog@@YAXXZ @ 710 NONAME ; void QPerformanceLog::clear(void) + ?clearCache@QDeclarativePaintedItem@@IAEXXZ @ 711 NONAME ; void QDeclarativePaintedItem::clearCache(void) + ?clearComponentCache@QDeclarativeEngine@@QAEXXZ @ 712 NONAME ; void QDeclarativeEngine::clearComponentCache(void) + ?clearError@QDeclarativeExpression@@QAEXXZ @ 713 NONAME ; void QDeclarativeExpression::clearError(void) + ?clearErrors@QDeclarativeCustomParser@@QAEXXZ @ 714 NONAME ; void QDeclarativeCustomParser::clearErrors(void) + ?clearForwardBindings@QDeclarativeAnchorChanges@@UAEXXZ @ 715 NONAME ; void QDeclarativeAnchorChanges::clearForwardBindings(void) + ?clearReverseBindings@QDeclarativeAnchorChanges@@UAEXXZ @ 716 NONAME ; void QDeclarativeAnchorChanges::clearReverseBindings(void) + ?clicked@QDeclarativeMouseArea@@IAEXPAVQDeclarativeMouseEvent@@@Z @ 717 NONAME ; void QDeclarativeMouseArea::clicked(class QDeclarativeMouseEvent *) + ?clip@QDeclarativeItem@@QBE_NXZ @ 718 NONAME ; bool QDeclarativeItem::clip(void) const + ?clipChanged@QDeclarativeItem@@IAEXXZ @ 719 NONAME ; void QDeclarativeItem::clipChanged(void) + ?color@QDeclarativeGradientStop@@QBE?AVQColor@@XZ @ 720 NONAME ; class QColor QDeclarativeGradientStop::color(void) const + ?color@QDeclarativePen@@QBE?AVQColor@@XZ @ 721 NONAME ; class QColor QDeclarativePen::color(void) const + ?color@QDeclarativeRectangle@@QBE?AVQColor@@XZ @ 722 NONAME ; class QColor QDeclarativeRectangle::color(void) const + ?color@QDeclarativeText@@QBE?AVQColor@@XZ @ 723 NONAME ; class QColor QDeclarativeText::color(void) const + ?color@QDeclarativeTextEdit@@QBE?AVQColor@@XZ @ 724 NONAME ; class QColor QDeclarativeTextEdit::color(void) const + ?color@QDeclarativeTextInput@@QBE?AVQColor@@XZ @ 725 NONAME ; class QColor QDeclarativeTextInput::color(void) const + ?colorChanged@QDeclarativeRectangle@@IAEXXZ @ 726 NONAME ; void QDeclarativeRectangle::colorChanged(void) + ?colorChanged@QDeclarativeText@@IAEXABVQColor@@@Z @ 727 NONAME ; void QDeclarativeText::colorChanged(class QColor const &) + ?colorChanged@QDeclarativeTextEdit@@IAEXABVQColor@@@Z @ 728 NONAME ; void QDeclarativeTextEdit::colorChanged(class QColor const &) + ?colorChanged@QDeclarativeTextInput@@IAEXABVQColor@@@Z @ 729 NONAME ; void QDeclarativeTextInput::colorChanged(class QColor const &) + ?colorFromString@QDeclarativeStringConverters@@YA?AVQColor@@ABVQString@@PA_N@Z @ 730 NONAME ; class QColor QDeclarativeStringConverters::colorFromString(class QString const &, bool *) + ?colorGroup@QDeclarativeSystemPalette@@QBE?AW4ColorGroup@1@XZ @ 731 NONAME ; enum QDeclarativeSystemPalette::ColorGroup QDeclarativeSystemPalette::colorGroup(void) const + ?column@QDeclarativeError@@QBEHXZ @ 732 NONAME ; int QDeclarativeError::column(void) const + ?columnNumber@QDeclarativeDebugFileReference@@QBEHXZ @ 733 NONAME ; int QDeclarativeDebugFileReference::columnNumber(void) const + ?columns@QDeclarativeGrid@@QBEHXZ @ 734 NONAME ; int QDeclarativeGrid::columns(void) const + ?columnsChanged@QDeclarativeGrid@@IAEXXZ @ 735 NONAME ; void QDeclarativeGrid::columnsChanged(void) + ?commaPositions@QDeclarativeDomList@@QBE?AV?$QList@H@@XZ @ 736 NONAME ; class QList QDeclarativeDomList::commaPositions(void) const + ?compile@QDeclarativeCompiler@@QAE_NPAVQDeclarativeEngine@@PAVQDeclarativeCompositeTypeData@@PAVQDeclarativeCompiledData@@@Z @ 737 NONAME ; bool QDeclarativeCompiler::compile(class QDeclarativeEngine *, class QDeclarativeCompositeTypeData *, class QDeclarativeCompiledData *) + ?compileAlias@QDeclarativeCompiler@@AAE_NAAVQMetaObjectBuilder@@AAVQByteArray@@PAVObject@QDeclarativeParser@@ABUDynamicProperty@45@@Z @ 738 NONAME ; bool QDeclarativeCompiler::compileAlias(class QMetaObjectBuilder &, class QByteArray &, class QDeclarativeParser::Object *, struct QDeclarativeParser::Object::DynamicProperty const &) + ?compileTree@QDeclarativeCompiler@@AAEXPAVObject@QDeclarativeParser@@@Z @ 739 NONAME ; void QDeclarativeCompiler::compileTree(class QDeclarativeParser::Object *) + ?completeComponentBuild@QDeclarativeCompiler@@AAE_NXZ @ 740 NONAME ; bool QDeclarativeCompiler::completeComponentBuild(void) + ?completeCreate@QDeclarativeComponent@@UAEXXZ @ 741 NONAME ; void QDeclarativeComponent::completeCreate(void) + ?completeItem@QDeclarativeVisualDataModel@@UAEXXZ @ 742 NONAME ; void QDeclarativeVisualDataModel::completeItem(void) + ?completeItem@QDeclarativeVisualItemModel@@UAEXXZ @ 743 NONAME ; void QDeclarativeVisualItemModel::completeItem(void) + ?completed@QDeclarativeState@@IAEXXZ @ 744 NONAME ; void QDeclarativeState::completed(void) + ?componentComplete@QDeclarativeAnchors@@QAEXXZ @ 745 NONAME ; void QDeclarativeAnchors::componentComplete(void) + ?componentComplete@QDeclarativeAnimatedImage@@MAEXXZ @ 746 NONAME ; void QDeclarativeAnimatedImage::componentComplete(void) + ?componentComplete@QDeclarativeBasePositioner@@MAEXXZ @ 747 NONAME ; void QDeclarativeBasePositioner::componentComplete(void) + ?componentComplete@QDeclarativeBind@@MAEXXZ @ 748 NONAME ; void QDeclarativeBind::componentComplete(void) + ?componentComplete@QDeclarativeConnections@@EAEXXZ @ 749 NONAME ; void QDeclarativeConnections::componentComplete(void) + ?componentComplete@QDeclarativeDateTimeFormatter@@UAEXXZ @ 750 NONAME ; void QDeclarativeDateTimeFormatter::componentComplete(void) + ?componentComplete@QDeclarativeGridView@@MAEXXZ @ 751 NONAME ; void QDeclarativeGridView::componentComplete(void) + ?componentComplete@QDeclarativeImageBase@@MAEXXZ @ 752 NONAME ; void QDeclarativeImageBase::componentComplete(void) + ?componentComplete@QDeclarativeItem@@MAEXXZ @ 753 NONAME ; void QDeclarativeItem::componentComplete(void) + ?componentComplete@QDeclarativeListView@@MAEXXZ @ 754 NONAME ; void QDeclarativeListView::componentComplete(void) + ?componentComplete@QDeclarativeNumberFormatter@@UAEXXZ @ 755 NONAME ; void QDeclarativeNumberFormatter::componentComplete(void) + ?componentComplete@QDeclarativeParserStatus@@UAEXXZ @ 756 NONAME ; void QDeclarativeParserStatus::componentComplete(void) + ?componentComplete@QDeclarativeParticles@@MAEXXZ @ 757 NONAME ; void QDeclarativeParticles::componentComplete(void) + ?componentComplete@QDeclarativePath@@MAEXXZ @ 758 NONAME ; void QDeclarativePath::componentComplete(void) + ?componentComplete@QDeclarativePathView@@MAEXXZ @ 759 NONAME ; void QDeclarativePathView::componentComplete(void) + ?componentComplete@QDeclarativeRepeater@@MAEXXZ @ 760 NONAME ; void QDeclarativeRepeater::componentComplete(void) + ?componentComplete@QDeclarativeStateGroup@@UAEXXZ @ 761 NONAME ; void QDeclarativeStateGroup::componentComplete(void) + ?componentComplete@QDeclarativeText@@UAEXXZ @ 762 NONAME ; void QDeclarativeText::componentComplete(void) + ?componentComplete@QDeclarativeTextEdit@@UAEXXZ @ 763 NONAME ; void QDeclarativeTextEdit::componentComplete(void) + ?componentComplete@QDeclarativeTimer@@MAEXXZ @ 764 NONAME ; void QDeclarativeTimer::componentComplete(void) + ?componentComplete@QDeclarativeWebView@@EAEXXZ @ 765 NONAME ; void QDeclarativeWebView::componentComplete(void) + ?componentComplete@QDeclarativeXmlListModel@@UAEXXZ @ 766 NONAME ; void QDeclarativeXmlListModel::componentComplete(void) + ?componentRoot@QDeclarativeDomComponent@@QBE?AVQDeclarativeDomObject@@XZ @ 767 NONAME ; class QDeclarativeDomObject QDeclarativeDomComponent::componentRoot(void) const + ?componentState@QDeclarativeCompiler@@AAE?AUComponentCompileState@1@PAVObject@QDeclarativeParser@@@Z @ 768 NONAME ; struct QDeclarativeCompiler::ComponentCompileState QDeclarativeCompiler::componentState(class QDeclarativeParser::Object *) + ?componentTypeRef@QDeclarativeCompiler@@AAEHXZ @ 769 NONAME ; int QDeclarativeCompiler::componentTypeRef(void) + ?connectNotifySignal@QDeclarativeProperty@@QBE_NPAVQObject@@H@Z @ 770 NONAME ; bool QDeclarativeProperty::connectNotifySignal(class QObject *, int) const + ?connectNotifySignal@QDeclarativeProperty@@QBE_NPAVQObject@@PBD@Z @ 771 NONAME ; bool QDeclarativeProperty::connectNotifySignal(class QObject *, char const *) const + ?connectSignals@QDeclarativeConnections@@AAEXXZ @ 772 NONAME ; void QDeclarativeConnections::connectSignals(void) + ?constructor@QMetaObjectBuilder@@QBE?AVQMetaMethodBuilder@@H@Z @ 773 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::constructor(int) const + ?constructorCount@QMetaObjectBuilder@@QBEHXZ @ 774 NONAME ; int QMetaObjectBuilder::constructorCount(void) const + ?contains@QDeclarativePropertyMap@@QBE_NABVQString@@@Z @ 775 NONAME ; bool QDeclarativePropertyMap::contains(class QString const &) const + ?contentHeight@QDeclarativeFlickable@@QBEMXZ @ 776 NONAME ; float QDeclarativeFlickable::contentHeight(void) const + ?contentHeightChanged@QDeclarativeFlickable@@IAEXXZ @ 777 NONAME ; void QDeclarativeFlickable::contentHeightChanged(void) + ?contentWidth@QDeclarativeFlickable@@QBEMXZ @ 778 NONAME ; float QDeclarativeFlickable::contentWidth(void) const + ?contentWidthChanged@QDeclarativeFlickable@@IAEXXZ @ 779 NONAME ; void QDeclarativeFlickable::contentWidthChanged(void) + ?contentX@QDeclarativeFlickable@@QBEMXZ @ 780 NONAME ; float QDeclarativeFlickable::contentX(void) const + ?contentXChanged@QDeclarativeFlickable@@IAEXXZ @ 781 NONAME ; void QDeclarativeFlickable::contentXChanged(void) + ?contentY@QDeclarativeFlickable@@QBEMXZ @ 782 NONAME ; float QDeclarativeFlickable::contentY(void) const + ?contentYChanged@QDeclarativeFlickable@@IAEXXZ @ 783 NONAME ; void QDeclarativeFlickable::contentYChanged(void) + ?contentsScale@QDeclarativePaintedItem@@QBEMXZ @ 784 NONAME ; float QDeclarativePaintedItem::contentsScale(void) const + ?contentsScaleChanged@QDeclarativePaintedItem@@IAEXXZ @ 785 NONAME ; void QDeclarativePaintedItem::contentsScaleChanged(void) + ?contentsSize@QDeclarativePaintedItem@@QBE?AVQSize@@XZ @ 786 NONAME ; class QSize QDeclarativePaintedItem::contentsSize(void) const + ?contentsSizeChanged@QDeclarativePaintedItem@@IAEXXZ @ 787 NONAME ; void QDeclarativePaintedItem::contentsSizeChanged(void) + ?context@QDeclarativeExpression@@QBEPAVQDeclarativeContext@@XZ @ 788 NONAME ; class QDeclarativeContext * QDeclarativeExpression::context(void) const + ?context@QDeclarativeScriptString@@QBEPAVQDeclarativeContext@@XZ @ 789 NONAME ; class QDeclarativeContext * QDeclarativeScriptString::context(void) const + ?contextDebugId@QDeclarativeDebugObjectReference@@QBEHXZ @ 790 NONAME ; int QDeclarativeDebugObjectReference::contextDebugId(void) const + ?contextForObject@QDeclarativeEngine@@SAPAVQDeclarativeContext@@PBVQObject@@@Z @ 791 NONAME ; class QDeclarativeContext * QDeclarativeEngine::contextForObject(class QObject const *) + ?contextProperty@QDeclarativeContext@@QBE?AVQVariant@@ABVQString@@@Z @ 792 NONAME ; class QVariant QDeclarativeContext::contextProperty(class QString const &) const + ?context_at@QDeclarativeContextPrivate@@SAPAVQObject@@PAU?$QDeclarativeListProperty@VQObject@@@@H@Z @ 793 NONAME ; class QObject * QDeclarativeContextPrivate::context_at(struct QDeclarativeListProperty *, int) + ?context_count@QDeclarativeContextPrivate@@SAHPAU?$QDeclarativeListProperty@VQObject@@@@@Z @ 794 NONAME ; int QDeclarativeContextPrivate::context_count(struct QDeclarativeListProperty *) + ?contexts@QDeclarativeDebugContextReference@@QBE?AV?$QList@VQDeclarativeDebugContextReference@@@@XZ @ 795 NONAME ; class QList QDeclarativeDebugContextReference::contexts(void) const + ?continueExecute@QDeclarativeView@@AAEXXZ @ 796 NONAME ; void QDeclarativeView::continueExecute(void) + ?control1X@QDeclarativePathCubic@@QBEMXZ @ 797 NONAME ; float QDeclarativePathCubic::control1X(void) const + ?control1Y@QDeclarativePathCubic@@QBEMXZ @ 798 NONAME ; float QDeclarativePathCubic::control1Y(void) const + ?control2X@QDeclarativePathCubic@@QBEMXZ @ 799 NONAME ; float QDeclarativePathCubic::control2X(void) const + ?control2Y@QDeclarativePathCubic@@QBEMXZ @ 800 NONAME ; float QDeclarativePathCubic::control2Y(void) const + ?controlX@QDeclarativePathQuad@@QBEMXZ @ 801 NONAME ; float QDeclarativePathQuad::controlX(void) const + ?controlY@QDeclarativePathQuad@@QBEMXZ @ 802 NONAME ; float QDeclarativePathQuad::controlY(void) const + ?copy@QDeclarativeMetaType@@SA_NHPAXPBX@Z @ 803 NONAME ; bool QDeclarativeMetaType::copy(int, void *, void const *) + ?count@QDeclarativeGridView@@QBEHXZ @ 804 NONAME ; int QDeclarativeGridView::count(void) const + ?count@QDeclarativeListAccessor@@QBEHXZ @ 805 NONAME ; int QDeclarativeListAccessor::count(void) const + ?count@QDeclarativeListModel@@UBEHXZ @ 806 NONAME ; int QDeclarativeListModel::count(void) const + ?count@QDeclarativeListReference@@QBEHXZ @ 807 NONAME ; int QDeclarativeListReference::count(void) const + ?count@QDeclarativeListView@@QBEHXZ @ 808 NONAME ; int QDeclarativeListView::count(void) const + ?count@QDeclarativeOpenMetaObject@@QBEHXZ @ 809 NONAME ; int QDeclarativeOpenMetaObject::count(void) const + ?count@QDeclarativeParticles@@QBEHXZ @ 810 NONAME ; int QDeclarativeParticles::count(void) const + ?count@QDeclarativePathView@@QBEHXZ @ 811 NONAME ; int QDeclarativePathView::count(void) const + ?count@QDeclarativePropertyMap@@QBEHXZ @ 812 NONAME ; int QDeclarativePropertyMap::count(void) const + ?count@QDeclarativeRepeater@@QBEHXZ @ 813 NONAME ; int QDeclarativeRepeater::count(void) const + ?count@QDeclarativeVisualDataModel@@UBEHXZ @ 814 NONAME ; int QDeclarativeVisualDataModel::count(void) const + ?count@QDeclarativeVisualItemModel@@UBEHXZ @ 815 NONAME ; int QDeclarativeVisualItemModel::count(void) const + ?count@QDeclarativeXmlListModel@@UBEHXZ @ 816 NONAME ; int QDeclarativeXmlListModel::count(void) const + ?countChanged@QDeclarativeGridView@@IAEXXZ @ 817 NONAME ; void QDeclarativeGridView::countChanged(void) + ?countChanged@QDeclarativeListModel@@IAEXH@Z @ 818 NONAME ; void QDeclarativeListModel::countChanged(int) + ?countChanged@QDeclarativeListView@@IAEXXZ @ 819 NONAME ; void QDeclarativeListView::countChanged(void) + ?countChanged@QDeclarativeParticles@@IAEXXZ @ 820 NONAME ; void QDeclarativeParticles::countChanged(void) + ?countChanged@QDeclarativeRepeater@@IAEXXZ @ 821 NONAME ; void QDeclarativeRepeater::countChanged(void) + ?countChanged@QDeclarativeVisualModel@@IAEXXZ @ 822 NONAME ; void QDeclarativeVisualModel::countChanged(void) + ?countChanged@QDeclarativeXmlListModel@@IAEXXZ @ 823 NONAME ; void QDeclarativeXmlListModel::countChanged(void) + ?create@QDeclarativeComponent@@UAEPAVQObject@@PAVQDeclarativeContext@@@Z @ 824 NONAME ; class QObject * QDeclarativeComponent::create(class QDeclarativeContext *) + ?create@QDeclarativeType@@QBEPAVQObject@@XZ @ 825 NONAME ; class QObject * QDeclarativeType::create(void) const + ?createCursor@QDeclarativeTextInput@@AAEXXZ @ 826 NONAME ; void QDeclarativeTextInput::createCursor(void) + ?createObject@QDeclarativeComponent@@QAE?AVQScriptValue@@XZ @ 827 NONAME ; class QScriptValue QDeclarativeComponent::createObject(void) + ?createPlugin@QDeclarativeWebPage@@MAEPAVQObject@@ABVQString@@ABVQUrl@@ABVQStringList@@2@Z @ 828 NONAME ; class QObject * QDeclarativeWebPage::createPlugin(class QString const &, class QUrl const &, class QStringList const &, class QStringList const &) + ?createPointCache@QDeclarativePath@@ABEXXZ @ 829 NONAME ; void QDeclarativePath::createPointCache(void) const + ?createProperty@QDeclarativeOpenMetaObject@@MAEHPBD0@Z @ 830 NONAME ; int QDeclarativeOpenMetaObject::createProperty(char const *, char const *) + ?createProperty@QDeclarativeOpenMetaObjectType@@QAEHABVQByteArray@@@Z @ 831 NONAME ; int QDeclarativeOpenMetaObjectType::createProperty(class QByteArray const &) + ?createWindow@QDeclarativeWebPage@@MAEPAVQWebPage@@W4WebWindowType@2@@Z @ 832 NONAME ; class QWebPage * QDeclarativeWebPage::createWindow(enum QWebPage::WebWindowType) + ?createWindow@QDeclarativeWebView@@IAEPAV1@W4WebWindowType@QWebPage@@@Z @ 833 NONAME ; class QDeclarativeWebView * QDeclarativeWebView::createWindow(enum QWebPage::WebWindowType) + ?created@QDeclarativeParticleMotion@@UAEXAAVQDeclarativeParticle@@@Z @ 834 NONAME ; void QDeclarativeParticleMotion::created(class QDeclarativeParticle &) + ?created@QDeclarativeParticleMotionWander@@UAEXAAVQDeclarativeParticle@@@Z @ 835 NONAME ; void QDeclarativeParticleMotionWander::created(class QDeclarativeParticle &) + ?createdItem@QDeclarativeGridView@@AAEXHPAVQDeclarativeItem@@@Z @ 836 NONAME ; void QDeclarativeGridView::createdItem(int, class QDeclarativeItem *) + ?createdItem@QDeclarativeListView@@AAEXHPAVQDeclarativeItem@@@Z @ 837 NONAME ; void QDeclarativeListView::createdItem(int, class QDeclarativeItem *) + ?createdItem@QDeclarativePathView@@AAEXHPAVQDeclarativeItem@@@Z @ 838 NONAME ; void QDeclarativePathView::createdItem(int, class QDeclarativeItem *) + ?createdItem@QDeclarativeVisualModel@@IAEXHPAVQDeclarativeItem@@@Z @ 839 NONAME ; void QDeclarativeVisualModel::createdItem(int, class QDeclarativeItem *) + ?createdPackage@QDeclarativeVisualDataModel@@IAEXHPAVQDeclarativePackage@@@Z @ 840 NONAME ; void QDeclarativeVisualDataModel::createdPackage(int, class QDeclarativePackage *) + ?creationContext@QDeclarativeComponent@@QBEPAVQDeclarativeContext@@XZ @ 841 NONAME ; class QDeclarativeContext * QDeclarativeComponent::creationContext(void) const + ?criteria@QDeclarativeViewSection@@QBE?AW4SectionCriteria@1@XZ @ 842 NONAME ; enum QDeclarativeViewSection::SectionCriteria QDeclarativeViewSection::criteria(void) const + ?currentFrame@QDeclarativeAnimatedImage@@QBEHXZ @ 843 NONAME ; int QDeclarativeAnimatedImage::currentFrame(void) const + ?currentIndex@QDeclarativeGridView@@QBEHXZ @ 844 NONAME ; int QDeclarativeGridView::currentIndex(void) const + ?currentIndex@QDeclarativeListView@@QBEHXZ @ 845 NONAME ; int QDeclarativeListView::currentIndex(void) const + ?currentIndex@QDeclarativePathView@@QBEHXZ @ 846 NONAME ; int QDeclarativePathView::currentIndex(void) const + ?currentIndexChanged@QDeclarativeGridView@@IAEXXZ @ 847 NONAME ; void QDeclarativeGridView::currentIndexChanged(void) + ?currentIndexChanged@QDeclarativeListView@@IAEXXZ @ 848 NONAME ; void QDeclarativeListView::currentIndexChanged(void) + ?currentIndexChanged@QDeclarativePathView@@IAEXXZ @ 849 NONAME ; void QDeclarativePathView::currentIndexChanged(void) + ?currentItem@QDeclarativeGridView@@QAEPAVQDeclarativeItem@@XZ @ 850 NONAME ; class QDeclarativeItem * QDeclarativeGridView::currentItem(void) + ?currentItem@QDeclarativeListView@@QAEPAVQDeclarativeItem@@XZ @ 851 NONAME ; class QDeclarativeItem * QDeclarativeListView::currentItem(void) + ?currentSection@QDeclarativeListView@@QBE?AVQString@@XZ @ 852 NONAME ; class QString QDeclarativeListView::currentSection(void) const + ?currentSectionChanged@QDeclarativeListView@@IAEXXZ @ 853 NONAME ; void QDeclarativeListView::currentSectionChanged(void) + ?cursorDelegate@QDeclarativeTextEdit@@QBEPAVQDeclarativeComponent@@XZ @ 854 NONAME ; class QDeclarativeComponent * QDeclarativeTextEdit::cursorDelegate(void) const + ?cursorDelegate@QDeclarativeTextInput@@QBEPAVQDeclarativeComponent@@XZ @ 855 NONAME ; class QDeclarativeComponent * QDeclarativeTextInput::cursorDelegate(void) const + ?cursorDelegateChanged@QDeclarativeTextEdit@@IAEXXZ @ 856 NONAME ; void QDeclarativeTextEdit::cursorDelegateChanged(void) + ?cursorDelegateChanged@QDeclarativeTextInput@@IAEXXZ @ 857 NONAME ; void QDeclarativeTextInput::cursorDelegateChanged(void) + ?cursorPosChanged@QDeclarativeTextInput@@AAEXXZ @ 858 NONAME ; void QDeclarativeTextInput::cursorPosChanged(void) + ?cursorPosition@QDeclarativeTextEdit@@QBEHXZ @ 859 NONAME ; int QDeclarativeTextEdit::cursorPosition(void) const + ?cursorPosition@QDeclarativeTextInput@@QBEHXZ @ 860 NONAME ; int QDeclarativeTextInput::cursorPosition(void) const + ?cursorPositionChanged@QDeclarativeTextEdit@@IAEXXZ @ 861 NONAME ; void QDeclarativeTextEdit::cursorPositionChanged(void) + ?cursorPositionChanged@QDeclarativeTextInput@@IAEXXZ @ 862 NONAME ; void QDeclarativeTextInput::cursorPositionChanged(void) + ?cursorRect@QDeclarativeTextEdit@@QBE?AVQRect@@XZ @ 863 NONAME ; class QRect QDeclarativeTextEdit::cursorRect(void) const + ?cursorRect@QDeclarativeTextInput@@QBE?AVQRect@@XZ @ 864 NONAME ; class QRect QDeclarativeTextInput::cursorRect(void) const + ?cursorVisibleChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 865 NONAME ; void QDeclarativeTextEdit::cursorVisibleChanged(bool) + ?cursorVisibleChanged@QDeclarativeTextInput@@IAEX_N@Z @ 866 NONAME ; void QDeclarativeTextInput::cursorVisibleChanged(bool) + ?customParser@QDeclarativeType@@QBEPAVQDeclarativeCustomParser@@XZ @ 867 NONAME ; class QDeclarativeCustomParser * QDeclarativeType::customParser(void) const + ?customStringConverter@QDeclarativeMetaType@@SAP6A?AVQVariant@@ABVQString@@@ZH@Z @ 868 NONAME ; class QVariant (*)(class QString const &) QDeclarativeMetaType::customStringConverter(int) + ?customTypeData@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 869 NONAME ; class QByteArray QDeclarativeDomObject::customTypeData(void) const + ?d_func@QDeclarativeAnchorChanges@@AAEPAVQDeclarativeAnchorChangesPrivate@@XZ @ 870 NONAME ; class QDeclarativeAnchorChangesPrivate * QDeclarativeAnchorChanges::d_func(void) + ?d_func@QDeclarativeAnchorChanges@@ABEPBVQDeclarativeAnchorChangesPrivate@@XZ @ 871 NONAME ; class QDeclarativeAnchorChangesPrivate const * QDeclarativeAnchorChanges::d_func(void) const + ?d_func@QDeclarativeAnchors@@AAEPAVQDeclarativeAnchorsPrivate@@XZ @ 872 NONAME ; class QDeclarativeAnchorsPrivate * QDeclarativeAnchors::d_func(void) + ?d_func@QDeclarativeAnchors@@ABEPBVQDeclarativeAnchorsPrivate@@XZ @ 873 NONAME ; class QDeclarativeAnchorsPrivate const * QDeclarativeAnchors::d_func(void) const + ?d_func@QDeclarativeAnimatedImage@@AAEPAVQDeclarativeAnimatedImagePrivate@@XZ @ 874 NONAME ; class QDeclarativeAnimatedImagePrivate * QDeclarativeAnimatedImage::d_func(void) + ?d_func@QDeclarativeAnimatedImage@@ABEPBVQDeclarativeAnimatedImagePrivate@@XZ @ 875 NONAME ; class QDeclarativeAnimatedImagePrivate const * QDeclarativeAnimatedImage::d_func(void) const + ?d_func@QDeclarativeBasePositioner@@AAEPAVQDeclarativeBasePositionerPrivate@@XZ @ 876 NONAME ; class QDeclarativeBasePositionerPrivate * QDeclarativeBasePositioner::d_func(void) + ?d_func@QDeclarativeBasePositioner@@ABEPBVQDeclarativeBasePositionerPrivate@@XZ @ 877 NONAME ; class QDeclarativeBasePositionerPrivate const * QDeclarativeBasePositioner::d_func(void) const + ?d_func@QDeclarativeBehavior@@AAEPAVQDeclarativeBehaviorPrivate@@XZ @ 878 NONAME ; class QDeclarativeBehaviorPrivate * QDeclarativeBehavior::d_func(void) + ?d_func@QDeclarativeBehavior@@ABEPBVQDeclarativeBehaviorPrivate@@XZ @ 879 NONAME ; class QDeclarativeBehaviorPrivate const * QDeclarativeBehavior::d_func(void) const + ?d_func@QDeclarativeBind@@AAEPAVQDeclarativeBindPrivate@@XZ @ 880 NONAME ; class QDeclarativeBindPrivate * QDeclarativeBind::d_func(void) + ?d_func@QDeclarativeBind@@ABEPBVQDeclarativeBindPrivate@@XZ @ 881 NONAME ; class QDeclarativeBindPrivate const * QDeclarativeBind::d_func(void) const + ?d_func@QDeclarativeBorderImage@@AAEPAVQDeclarativeBorderImagePrivate@@XZ @ 882 NONAME ; class QDeclarativeBorderImagePrivate * QDeclarativeBorderImage::d_func(void) + ?d_func@QDeclarativeBorderImage@@ABEPBVQDeclarativeBorderImagePrivate@@XZ @ 883 NONAME ; class QDeclarativeBorderImagePrivate const * QDeclarativeBorderImage::d_func(void) const + ?d_func@QDeclarativeComponent@@AAEPAVQDeclarativeComponentPrivate@@XZ @ 884 NONAME ; class QDeclarativeComponentPrivate * QDeclarativeComponent::d_func(void) + ?d_func@QDeclarativeComponent@@ABEPBVQDeclarativeComponentPrivate@@XZ @ 885 NONAME ; class QDeclarativeComponentPrivate const * QDeclarativeComponent::d_func(void) const + ?d_func@QDeclarativeConnections@@AAEPAVQDeclarativeConnectionsPrivate@@XZ @ 886 NONAME ; class QDeclarativeConnectionsPrivate * QDeclarativeConnections::d_func(void) + ?d_func@QDeclarativeConnections@@ABEPBVQDeclarativeConnectionsPrivate@@XZ @ 887 NONAME ; class QDeclarativeConnectionsPrivate const * QDeclarativeConnections::d_func(void) const + ?d_func@QDeclarativeContext@@AAEPAVQDeclarativeContextPrivate@@XZ @ 888 NONAME ; class QDeclarativeContextPrivate * QDeclarativeContext::d_func(void) + ?d_func@QDeclarativeContext@@ABEPBVQDeclarativeContextPrivate@@XZ @ 889 NONAME ; class QDeclarativeContextPrivate const * QDeclarativeContext::d_func(void) const + ?d_func@QDeclarativeDateTimeFormatter@@AAEPAVQDeclarativeDateTimeFormatterPrivate@@XZ @ 890 NONAME ; class QDeclarativeDateTimeFormatterPrivate * QDeclarativeDateTimeFormatter::d_func(void) + ?d_func@QDeclarativeDateTimeFormatter@@ABEPBVQDeclarativeDateTimeFormatterPrivate@@XZ @ 891 NONAME ; class QDeclarativeDateTimeFormatterPrivate const * QDeclarativeDateTimeFormatter::d_func(void) const + ?d_func@QDeclarativeDebugClient@@AAEPAVQDeclarativeDebugClientPrivate@@XZ @ 892 NONAME ; class QDeclarativeDebugClientPrivate * QDeclarativeDebugClient::d_func(void) + ?d_func@QDeclarativeDebugClient@@ABEPBVQDeclarativeDebugClientPrivate@@XZ @ 893 NONAME ; class QDeclarativeDebugClientPrivate const * QDeclarativeDebugClient::d_func(void) const + ?d_func@QDeclarativeDebugService@@AAEPAVQDeclarativeDebugServicePrivate@@XZ @ 894 NONAME ; class QDeclarativeDebugServicePrivate * QDeclarativeDebugService::d_func(void) + ?d_func@QDeclarativeDebugService@@ABEPBVQDeclarativeDebugServicePrivate@@XZ @ 895 NONAME ; class QDeclarativeDebugServicePrivate const * QDeclarativeDebugService::d_func(void) const + ?d_func@QDeclarativeEaseFollow@@AAEPAVQDeclarativeEaseFollowPrivate@@XZ @ 896 NONAME ; class QDeclarativeEaseFollowPrivate * QDeclarativeEaseFollow::d_func(void) + ?d_func@QDeclarativeEaseFollow@@ABEPBVQDeclarativeEaseFollowPrivate@@XZ @ 897 NONAME ; class QDeclarativeEaseFollowPrivate const * QDeclarativeEaseFollow::d_func(void) const + ?d_func@QDeclarativeEngine@@AAEPAVQDeclarativeEnginePrivate@@XZ @ 898 NONAME ; class QDeclarativeEnginePrivate * QDeclarativeEngine::d_func(void) + ?d_func@QDeclarativeEngine@@ABEPBVQDeclarativeEnginePrivate@@XZ @ 899 NONAME ; class QDeclarativeEnginePrivate const * QDeclarativeEngine::d_func(void) const + ?d_func@QDeclarativeEngineDebug@@AAEPAVQDeclarativeEngineDebugPrivate@@XZ @ 900 NONAME ; class QDeclarativeEngineDebugPrivate * QDeclarativeEngineDebug::d_func(void) + ?d_func@QDeclarativeEngineDebug@@ABEPBVQDeclarativeEngineDebugPrivate@@XZ @ 901 NONAME ; class QDeclarativeEngineDebugPrivate const * QDeclarativeEngineDebug::d_func(void) const + ?d_func@QDeclarativeExpression@@AAEPAVQDeclarativeExpressionPrivate@@XZ @ 902 NONAME ; class QDeclarativeExpressionPrivate * QDeclarativeExpression::d_func(void) + ?d_func@QDeclarativeExpression@@ABEPBVQDeclarativeExpressionPrivate@@XZ @ 903 NONAME ; class QDeclarativeExpressionPrivate const * QDeclarativeExpression::d_func(void) const + ?d_func@QDeclarativeFlickable@@AAEPAVQDeclarativeFlickablePrivate@@XZ @ 904 NONAME ; class QDeclarativeFlickablePrivate * QDeclarativeFlickable::d_func(void) + ?d_func@QDeclarativeFlickable@@ABEPBVQDeclarativeFlickablePrivate@@XZ @ 905 NONAME ; class QDeclarativeFlickablePrivate const * QDeclarativeFlickable::d_func(void) const + ?d_func@QDeclarativeFlipable@@AAEPAVQDeclarativeFlipablePrivate@@XZ @ 906 NONAME ; class QDeclarativeFlipablePrivate * QDeclarativeFlipable::d_func(void) + ?d_func@QDeclarativeFlipable@@ABEPBVQDeclarativeFlipablePrivate@@XZ @ 907 NONAME ; class QDeclarativeFlipablePrivate const * QDeclarativeFlipable::d_func(void) const + ?d_func@QDeclarativeFlow@@AAEPAVQDeclarativeFlowPrivate@@XZ @ 908 NONAME ; class QDeclarativeFlowPrivate * QDeclarativeFlow::d_func(void) + ?d_func@QDeclarativeFlow@@ABEPBVQDeclarativeFlowPrivate@@XZ @ 909 NONAME ; class QDeclarativeFlowPrivate const * QDeclarativeFlow::d_func(void) const + ?d_func@QDeclarativeFontLoader@@AAEPAVQDeclarativeFontLoaderPrivate@@XZ @ 910 NONAME ; class QDeclarativeFontLoaderPrivate * QDeclarativeFontLoader::d_func(void) + ?d_func@QDeclarativeFontLoader@@ABEPBVQDeclarativeFontLoaderPrivate@@XZ @ 911 NONAME ; class QDeclarativeFontLoaderPrivate const * QDeclarativeFontLoader::d_func(void) const + ?d_func@QDeclarativeGraphicsObjectContainer@@AAEPAVQDeclarativeGraphicsObjectContainerPrivate@@XZ @ 912 NONAME ; class QDeclarativeGraphicsObjectContainerPrivate * QDeclarativeGraphicsObjectContainer::d_func(void) + ?d_func@QDeclarativeGraphicsObjectContainer@@ABEPBVQDeclarativeGraphicsObjectContainerPrivate@@XZ @ 913 NONAME ; class QDeclarativeGraphicsObjectContainerPrivate const * QDeclarativeGraphicsObjectContainer::d_func(void) const + ?d_func@QDeclarativeGridView@@AAEPAVQDeclarativeGridViewPrivate@@XZ @ 914 NONAME ; class QDeclarativeGridViewPrivate * QDeclarativeGridView::d_func(void) + ?d_func@QDeclarativeGridView@@ABEPBVQDeclarativeGridViewPrivate@@XZ @ 915 NONAME ; class QDeclarativeGridViewPrivate const * QDeclarativeGridView::d_func(void) const + ?d_func@QDeclarativeImage@@AAEPAVQDeclarativeImagePrivate@@XZ @ 916 NONAME ; class QDeclarativeImagePrivate * QDeclarativeImage::d_func(void) + ?d_func@QDeclarativeImage@@ABEPBVQDeclarativeImagePrivate@@XZ @ 917 NONAME ; class QDeclarativeImagePrivate const * QDeclarativeImage::d_func(void) const + ?d_func@QDeclarativeImageBase@@AAEPAVQDeclarativeImageBasePrivate@@XZ @ 918 NONAME ; class QDeclarativeImageBasePrivate * QDeclarativeImageBase::d_func(void) + ?d_func@QDeclarativeImageBase@@ABEPBVQDeclarativeImageBasePrivate@@XZ @ 919 NONAME ; class QDeclarativeImageBasePrivate const * QDeclarativeImageBase::d_func(void) const + ?d_func@QDeclarativeItem@@AAEPAVQDeclarativeItemPrivate@@XZ @ 920 NONAME ; class QDeclarativeItemPrivate * QDeclarativeItem::d_func(void) + ?d_func@QDeclarativeItem@@ABEPBVQDeclarativeItemPrivate@@XZ @ 921 NONAME ; class QDeclarativeItemPrivate const * QDeclarativeItem::d_func(void) const + ?d_func@QDeclarativeListView@@AAEPAVQDeclarativeListViewPrivate@@XZ @ 922 NONAME ; class QDeclarativeListViewPrivate * QDeclarativeListView::d_func(void) + ?d_func@QDeclarativeListView@@ABEPBVQDeclarativeListViewPrivate@@XZ @ 923 NONAME ; class QDeclarativeListViewPrivate const * QDeclarativeListView::d_func(void) const + ?d_func@QDeclarativeLoader@@AAEPAVQDeclarativeLoaderPrivate@@XZ @ 924 NONAME ; class QDeclarativeLoaderPrivate * QDeclarativeLoader::d_func(void) + ?d_func@QDeclarativeLoader@@ABEPBVQDeclarativeLoaderPrivate@@XZ @ 925 NONAME ; class QDeclarativeLoaderPrivate const * QDeclarativeLoader::d_func(void) const + ?d_func@QDeclarativeMouseArea@@AAEPAVQDeclarativeMouseAreaPrivate@@XZ @ 926 NONAME ; class QDeclarativeMouseAreaPrivate * QDeclarativeMouseArea::d_func(void) + ?d_func@QDeclarativeMouseArea@@ABEPBVQDeclarativeMouseAreaPrivate@@XZ @ 927 NONAME ; class QDeclarativeMouseAreaPrivate const * QDeclarativeMouseArea::d_func(void) const + ?d_func@QDeclarativeNumberFormatter@@AAEPAVQDeclarativeNumberFormatterPrivate@@XZ @ 928 NONAME ; class QDeclarativeNumberFormatterPrivate * QDeclarativeNumberFormatter::d_func(void) + ?d_func@QDeclarativeNumberFormatter@@ABEPBVQDeclarativeNumberFormatterPrivate@@XZ @ 929 NONAME ; class QDeclarativeNumberFormatterPrivate const * QDeclarativeNumberFormatter::d_func(void) const + ?d_func@QDeclarativePaintedItem@@AAEPAVQDeclarativePaintedItemPrivate@@XZ @ 930 NONAME ; class QDeclarativePaintedItemPrivate * QDeclarativePaintedItem::d_func(void) + ?d_func@QDeclarativePaintedItem@@ABEPBVQDeclarativePaintedItemPrivate@@XZ @ 931 NONAME ; class QDeclarativePaintedItemPrivate const * QDeclarativePaintedItem::d_func(void) const + ?d_func@QDeclarativeParentChange@@AAEPAVQDeclarativeParentChangePrivate@@XZ @ 932 NONAME ; class QDeclarativeParentChangePrivate * QDeclarativeParentChange::d_func(void) + ?d_func@QDeclarativeParentChange@@ABEPBVQDeclarativeParentChangePrivate@@XZ @ 933 NONAME ; class QDeclarativeParentChangePrivate const * QDeclarativeParentChange::d_func(void) const + ?d_func@QDeclarativeParticles@@AAEPAVQDeclarativeParticlesPrivate@@XZ @ 934 NONAME ; class QDeclarativeParticlesPrivate * QDeclarativeParticles::d_func(void) + ?d_func@QDeclarativeParticles@@ABEPBVQDeclarativeParticlesPrivate@@XZ @ 935 NONAME ; class QDeclarativeParticlesPrivate const * QDeclarativeParticles::d_func(void) const + ?d_func@QDeclarativePath@@AAEPAVQDeclarativePathPrivate@@XZ @ 936 NONAME ; class QDeclarativePathPrivate * QDeclarativePath::d_func(void) + ?d_func@QDeclarativePath@@ABEPBVQDeclarativePathPrivate@@XZ @ 937 NONAME ; class QDeclarativePathPrivate const * QDeclarativePath::d_func(void) const + ?d_func@QDeclarativePathView@@AAEPAVQDeclarativePathViewPrivate@@XZ @ 938 NONAME ; class QDeclarativePathViewPrivate * QDeclarativePathView::d_func(void) + ?d_func@QDeclarativePathView@@ABEPBVQDeclarativePathViewPrivate@@XZ @ 939 NONAME ; class QDeclarativePathViewPrivate const * QDeclarativePathView::d_func(void) const + ?d_func@QDeclarativePixmapReply@@AAEPAVQDeclarativePixmapReplyPrivate@@XZ @ 940 NONAME ; class QDeclarativePixmapReplyPrivate * QDeclarativePixmapReply::d_func(void) + ?d_func@QDeclarativePixmapReply@@ABEPBVQDeclarativePixmapReplyPrivate@@XZ @ 941 NONAME ; class QDeclarativePixmapReplyPrivate const * QDeclarativePixmapReply::d_func(void) const + ?d_func@QDeclarativePropertyChanges@@AAEPAVQDeclarativePropertyChangesPrivate@@XZ @ 942 NONAME ; class QDeclarativePropertyChangesPrivate * QDeclarativePropertyChanges::d_func(void) + ?d_func@QDeclarativePropertyChanges@@ABEPBVQDeclarativePropertyChangesPrivate@@XZ @ 943 NONAME ; class QDeclarativePropertyChangesPrivate const * QDeclarativePropertyChanges::d_func(void) const + ?d_func@QDeclarativePropertyMap@@AAEPAVQDeclarativePropertyMapPrivate@@XZ @ 944 NONAME ; class QDeclarativePropertyMapPrivate * QDeclarativePropertyMap::d_func(void) + ?d_func@QDeclarativePropertyMap@@ABEPBVQDeclarativePropertyMapPrivate@@XZ @ 945 NONAME ; class QDeclarativePropertyMapPrivate const * QDeclarativePropertyMap::d_func(void) const + ?d_func@QDeclarativeRectangle@@AAEPAVQDeclarativeRectanglePrivate@@XZ @ 946 NONAME ; class QDeclarativeRectanglePrivate * QDeclarativeRectangle::d_func(void) + ?d_func@QDeclarativeRectangle@@ABEPBVQDeclarativeRectanglePrivate@@XZ @ 947 NONAME ; class QDeclarativeRectanglePrivate const * QDeclarativeRectangle::d_func(void) const + ?d_func@QDeclarativeRepeater@@AAEPAVQDeclarativeRepeaterPrivate@@XZ @ 948 NONAME ; class QDeclarativeRepeaterPrivate * QDeclarativeRepeater::d_func(void) + ?d_func@QDeclarativeRepeater@@ABEPBVQDeclarativeRepeaterPrivate@@XZ @ 949 NONAME ; class QDeclarativeRepeaterPrivate const * QDeclarativeRepeater::d_func(void) const + ?d_func@QDeclarativeSpringFollow@@AAEPAVQDeclarativeSpringFollowPrivate@@XZ @ 950 NONAME ; class QDeclarativeSpringFollowPrivate * QDeclarativeSpringFollow::d_func(void) + ?d_func@QDeclarativeSpringFollow@@ABEPBVQDeclarativeSpringFollowPrivate@@XZ @ 951 NONAME ; class QDeclarativeSpringFollowPrivate const * QDeclarativeSpringFollow::d_func(void) const + ?d_func@QDeclarativeState@@AAEPAVQDeclarativeStatePrivate@@XZ @ 952 NONAME ; class QDeclarativeStatePrivate * QDeclarativeState::d_func(void) + ?d_func@QDeclarativeState@@ABEPBVQDeclarativeStatePrivate@@XZ @ 953 NONAME ; class QDeclarativeStatePrivate const * QDeclarativeState::d_func(void) const + ?d_func@QDeclarativeStateChangeScript@@AAEPAVQDeclarativeStateChangeScriptPrivate@@XZ @ 954 NONAME ; class QDeclarativeStateChangeScriptPrivate * QDeclarativeStateChangeScript::d_func(void) + ?d_func@QDeclarativeStateChangeScript@@ABEPBVQDeclarativeStateChangeScriptPrivate@@XZ @ 955 NONAME ; class QDeclarativeStateChangeScriptPrivate const * QDeclarativeStateChangeScript::d_func(void) const + ?d_func@QDeclarativeStateGroup@@AAEPAVQDeclarativeStateGroupPrivate@@XZ @ 956 NONAME ; class QDeclarativeStateGroupPrivate * QDeclarativeStateGroup::d_func(void) + ?d_func@QDeclarativeStateGroup@@ABEPBVQDeclarativeStateGroupPrivate@@XZ @ 957 NONAME ; class QDeclarativeStateGroupPrivate const * QDeclarativeStateGroup::d_func(void) const + ?d_func@QDeclarativeSystemPalette@@AAEPAVQDeclarativeSystemPalettePrivate@@XZ @ 958 NONAME ; class QDeclarativeSystemPalettePrivate * QDeclarativeSystemPalette::d_func(void) + ?d_func@QDeclarativeSystemPalette@@ABEPBVQDeclarativeSystemPalettePrivate@@XZ @ 959 NONAME ; class QDeclarativeSystemPalettePrivate const * QDeclarativeSystemPalette::d_func(void) const + ?d_func@QDeclarativeText@@AAEPAVQDeclarativeTextPrivate@@XZ @ 960 NONAME ; class QDeclarativeTextPrivate * QDeclarativeText::d_func(void) + ?d_func@QDeclarativeText@@ABEPBVQDeclarativeTextPrivate@@XZ @ 961 NONAME ; class QDeclarativeTextPrivate const * QDeclarativeText::d_func(void) const + ?d_func@QDeclarativeTextEdit@@AAEPAVQDeclarativeTextEditPrivate@@XZ @ 962 NONAME ; class QDeclarativeTextEditPrivate * QDeclarativeTextEdit::d_func(void) + ?d_func@QDeclarativeTextEdit@@ABEPBVQDeclarativeTextEditPrivate@@XZ @ 963 NONAME ; class QDeclarativeTextEditPrivate const * QDeclarativeTextEdit::d_func(void) const + ?d_func@QDeclarativeTextInput@@AAEPAVQDeclarativeTextInputPrivate@@XZ @ 964 NONAME ; class QDeclarativeTextInputPrivate * QDeclarativeTextInput::d_func(void) + ?d_func@QDeclarativeTextInput@@ABEPBVQDeclarativeTextInputPrivate@@XZ @ 965 NONAME ; class QDeclarativeTextInputPrivate const * QDeclarativeTextInput::d_func(void) const + ?d_func@QDeclarativeTimer@@AAEPAVQDeclarativeTimerPrivate@@XZ @ 966 NONAME ; class QDeclarativeTimerPrivate * QDeclarativeTimer::d_func(void) + ?d_func@QDeclarativeTimer@@ABEPBVQDeclarativeTimerPrivate@@XZ @ 967 NONAME ; class QDeclarativeTimerPrivate const * QDeclarativeTimer::d_func(void) const + ?d_func@QDeclarativeTransition@@AAEPAVQDeclarativeTransitionPrivate@@XZ @ 968 NONAME ; class QDeclarativeTransitionPrivate * QDeclarativeTransition::d_func(void) + ?d_func@QDeclarativeTransition@@ABEPBVQDeclarativeTransitionPrivate@@XZ @ 969 NONAME ; class QDeclarativeTransitionPrivate const * QDeclarativeTransition::d_func(void) const + ?d_func@QDeclarativeVisualDataModel@@AAEPAVQDeclarativeVisualDataModelPrivate@@XZ @ 970 NONAME ; class QDeclarativeVisualDataModelPrivate * QDeclarativeVisualDataModel::d_func(void) + ?d_func@QDeclarativeVisualDataModel@@ABEPBVQDeclarativeVisualDataModelPrivate@@XZ @ 971 NONAME ; class QDeclarativeVisualDataModelPrivate const * QDeclarativeVisualDataModel::d_func(void) const + ?d_func@QDeclarativeVisualItemModel@@AAEPAVQDeclarativeVisualItemModelPrivate@@XZ @ 972 NONAME ; class QDeclarativeVisualItemModelPrivate * QDeclarativeVisualItemModel::d_func(void) + ?d_func@QDeclarativeVisualItemModel@@ABEPBVQDeclarativeVisualItemModelPrivate@@XZ @ 973 NONAME ; class QDeclarativeVisualItemModelPrivate const * QDeclarativeVisualItemModel::d_func(void) const + ?d_func@QDeclarativeWebView@@AAEPAVQDeclarativeWebViewPrivate@@XZ @ 974 NONAME ; class QDeclarativeWebViewPrivate * QDeclarativeWebView::d_func(void) + ?d_func@QDeclarativeWebView@@ABEPBVQDeclarativeWebViewPrivate@@XZ @ 975 NONAME ; class QDeclarativeWebViewPrivate const * QDeclarativeWebView::d_func(void) const + ?d_func@QDeclarativeXmlListModel@@AAEPAVQDeclarativeXmlListModelPrivate@@XZ @ 976 NONAME ; class QDeclarativeXmlListModelPrivate * QDeclarativeXmlListModel::d_func(void) + ?d_func@QDeclarativeXmlListModel@@ABEPBVQDeclarativeXmlListModelPrivate@@XZ @ 977 NONAME ; class QDeclarativeXmlListModelPrivate const * QDeclarativeXmlListModel::d_func(void) const + ?d_func@QMetaEnumBuilder@@ABEPAVQMetaEnumBuilderPrivate@@XZ @ 978 NONAME ; class QMetaEnumBuilderPrivate * QMetaEnumBuilder::d_func(void) const + ?d_func@QMetaMethodBuilder@@ABEPAVQMetaMethodBuilderPrivate@@XZ @ 979 NONAME ; class QMetaMethodBuilderPrivate * QMetaMethodBuilder::d_func(void) const + ?d_func@QMetaPropertyBuilder@@ABEPAVQMetaPropertyBuilderPrivate@@XZ @ 980 NONAME ; class QMetaPropertyBuilderPrivate * QMetaPropertyBuilder::d_func(void) const + ?damping@QDeclarativeSpringFollow@@QBEMXZ @ 981 NONAME ; float QDeclarativeSpringFollow::damping(void) const + ?dark@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 982 NONAME ; class QColor QDeclarativeSystemPalette::dark(void) const + ?data@QDeclarativeItem@@QAE?AU?$QDeclarativeListProperty@VQObject@@@@XZ @ 983 NONAME ; struct QDeclarativeListProperty QDeclarativeItem::data(void) + ?data@QDeclarativeListModel@@UBE?AV?$QHash@HVQVariant@@@@HABV?$QList@H@@@Z @ 984 NONAME ; class QHash QDeclarativeListModel::data(int, class QList const &) const + ?data@QDeclarativeListModel@@UBE?AVQVariant@@HH@Z @ 985 NONAME ; class QVariant QDeclarativeListModel::data(int, int) const + ?data@QDeclarativeXmlListModel@@UBE?AV?$QHash@HVQVariant@@@@HABV?$QList@H@@@Z @ 986 NONAME ; class QHash QDeclarativeXmlListModel::data(int, class QList const &) const + ?data@QDeclarativeXmlListModel@@UBE?AVQVariant@@HH@Z @ 987 NONAME ; class QVariant QDeclarativeXmlListModel::data(int, int) const + ?date@QDeclarativeDateTimeFormatter@@QBE?AVQDate@@XZ @ 988 NONAME ; class QDate QDeclarativeDateTimeFormatter::date(void) const + ?dateFormat@QDeclarativeDateTimeFormatter@@QBE?AVQString@@XZ @ 989 NONAME ; class QString QDeclarativeDateTimeFormatter::dateFormat(void) const + ?dateFromString@QDeclarativeStringConverters@@YA?AVQDate@@ABVQString@@PA_N@Z @ 990 NONAME ; class QDate QDeclarativeStringConverters::dateFromString(class QString const &, bool *) + ?dateText@QDeclarativeDateTimeFormatter@@QBE?AVQString@@XZ @ 991 NONAME ; class QString QDeclarativeDateTimeFormatter::dateText(void) const + ?dateTime@QDeclarativeDateTimeFormatter@@QBE?AVQDateTime@@XZ @ 992 NONAME ; class QDateTime QDeclarativeDateTimeFormatter::dateTime(void) const + ?dateTimeFormat@QDeclarativeDateTimeFormatter@@QBE?AVQString@@XZ @ 993 NONAME ; class QString QDeclarativeDateTimeFormatter::dateTimeFormat(void) const + ?dateTimeFromString@QDeclarativeStringConverters@@YA?AVQDateTime@@ABVQString@@PA_N@Z @ 994 NONAME ; class QDateTime QDeclarativeStringConverters::dateTimeFromString(class QString const &, bool *) + ?dateTimeText@QDeclarativeDateTimeFormatter@@QBE?AVQString@@XZ @ 995 NONAME ; class QString QDeclarativeDateTimeFormatter::dateTimeText(void) const + ?debugId@QDeclarativeDebugContextReference@@QBEHXZ @ 996 NONAME ; int QDeclarativeDebugContextReference::debugId(void) const + ?debugId@QDeclarativeDebugEngineReference@@QBEHXZ @ 997 NONAME ; int QDeclarativeDebugEngineReference::debugId(void) const + ?debugId@QDeclarativeDebugObjectReference@@QBEHXZ @ 998 NONAME ; int QDeclarativeDebugObjectReference::debugId(void) const + ?decrementCurrentIndex@QDeclarativeListView@@QAEXXZ @ 999 NONAME ; void QDeclarativeListView::decrementCurrentIndex(void) + ?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PAVQObject@@@Z @ 1000 NONAME ; class QMetaMethod QDeclarativeMetaType::defaultMethod(class QObject *) + ?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PBUQMetaObject@@@Z @ 1001 NONAME ; class QMetaMethod QDeclarativeMetaType::defaultMethod(struct QMetaObject const *) + ?defaultProperty@QDeclarativeMetaType@@SA?AVQMetaProperty@@PAVQObject@@@Z @ 1002 NONAME ; class QMetaProperty QDeclarativeMetaType::defaultProperty(class QObject *) + ?defaultProperty@QDeclarativeMetaType@@SA?AVQMetaProperty@@PBUQMetaObject@@@Z @ 1003 NONAME ; class QMetaProperty QDeclarativeMetaType::defaultProperty(struct QMetaObject const *) + ?defaultValue@QDeclarativeDomDynamicProperty@@QBE?AVQDeclarativeDomProperty@@XZ @ 1004 NONAME ; class QDeclarativeDomProperty QDeclarativeDomDynamicProperty::defaultValue(void) const + ?deferredProperties@QDeclarativeCompiler@@AAE?AVQStringList@@PAVObject@QDeclarativeParser@@@Z @ 1005 NONAME ; class QStringList QDeclarativeCompiler::deferredProperties(class QDeclarativeParser::Object *) + ?delegate@QDeclarativeGridView@@QBEPAVQDeclarativeComponent@@XZ @ 1006 NONAME ; class QDeclarativeComponent * QDeclarativeGridView::delegate(void) const + ?delegate@QDeclarativeListView@@QBEPAVQDeclarativeComponent@@XZ @ 1007 NONAME ; class QDeclarativeComponent * QDeclarativeListView::delegate(void) const + ?delegate@QDeclarativePathView@@QBEPAVQDeclarativeComponent@@XZ @ 1008 NONAME ; class QDeclarativeComponent * QDeclarativePathView::delegate(void) const + ?delegate@QDeclarativeRepeater@@QBEPAVQDeclarativeComponent@@XZ @ 1009 NONAME ; class QDeclarativeComponent * QDeclarativeRepeater::delegate(void) const + ?delegate@QDeclarativeViewSection@@QBEPAVQDeclarativeComponent@@XZ @ 1010 NONAME ; class QDeclarativeComponent * QDeclarativeViewSection::delegate(void) const + ?delegate@QDeclarativeVisualDataModel@@QBEPAVQDeclarativeComponent@@XZ @ 1011 NONAME ; class QDeclarativeComponent * QDeclarativeVisualDataModel::delegate(void) const + ?delegateChanged@QDeclarativeRepeater@@IAEXXZ @ 1012 NONAME ; void QDeclarativeRepeater::delegateChanged(void) + ?delegateChanged@QDeclarativeViewSection@@IAEXXZ @ 1013 NONAME ; void QDeclarativeViewSection::delegateChanged(void) + ?deleteFromBinding@QDeclarativeAction@@QAEXXZ @ 1014 NONAME ; void QDeclarativeAction::deleteFromBinding(void) + ?description@QDeclarativeError@@QBE?AVQString@@XZ @ 1015 NONAME ; class QString QDeclarativeError::description(void) const + ?deserialize@QMetaObjectBuilder@@QAEXAAVQDataStream@@ABV?$QMap@VQByteArray@@PB$$CBUQMetaObject@@@@@Z @ 1016 NONAME ; void QMetaObjectBuilder::deserialize(class QDataStream &, class QMap const &) + ?destroy@QDeclarativeParticleMotion@@UAEXAAVQDeclarativeParticle@@@Z @ 1017 NONAME ; void QDeclarativeParticleMotion::destroy(class QDeclarativeParticle &) + ?destroy@QDeclarativeParticleMotionWander@@UAEXAAVQDeclarativeParticle@@@Z @ 1018 NONAME ; void QDeclarativeParticleMotionWander::destroy(class QDeclarativeParticle &) + ?destroyRemoved@QDeclarativeGridView@@AAEXXZ @ 1019 NONAME ; void QDeclarativeGridView::destroyRemoved(void) + ?destroyRemoved@QDeclarativeListView@@AAEXXZ @ 1020 NONAME ; void QDeclarativeListView::destroyRemoved(void) + ?destroyed@QDeclarativeContextPrivate@@QAEXPAUContextGuard@1@@Z @ 1021 NONAME ; void QDeclarativeContextPrivate::destroyed(struct QDeclarativeContextPrivate::ContextGuard *) + ?destroyingItem@QDeclarativeGridView@@AAEXPAVQDeclarativeItem@@@Z @ 1022 NONAME ; void QDeclarativeGridView::destroyingItem(class QDeclarativeItem *) + ?destroyingItem@QDeclarativeListView@@AAEXPAVQDeclarativeItem@@@Z @ 1023 NONAME ; void QDeclarativeListView::destroyingItem(class QDeclarativeItem *) + ?destroyingItem@QDeclarativePathView@@AAEXPAVQDeclarativeItem@@@Z @ 1024 NONAME ; void QDeclarativePathView::destroyingItem(class QDeclarativeItem *) + ?destroyingItem@QDeclarativeVisualModel@@IAEXPAVQDeclarativeItem@@@Z @ 1025 NONAME ; void QDeclarativeVisualModel::destroyingItem(class QDeclarativeItem *) + ?destroyingPackage@QDeclarativeVisualDataModel@@IAEXPAVQDeclarativePackage@@@Z @ 1026 NONAME ; void QDeclarativeVisualDataModel::destroyingPackage(class QDeclarativePackage *) + ?device@QPacketProtocol@@QAEPAVQIODevice@@XZ @ 1027 NONAME ; class QIODevice * QPacketProtocol::device(void) + ?dirtyCache@QDeclarativePaintedItem@@IAEXABVQRect@@@Z @ 1028 NONAME ; void QDeclarativePaintedItem::dirtyCache(class QRect const &) + ?displayData@QPerformanceLog@@YAXXZ @ 1029 NONAME ; void QPerformanceLog::displayData(void) + ?doLoadFinished@QDeclarativeWebView@@AAEX_N@Z @ 1030 NONAME ; void QDeclarativeWebView::doLoadFinished(bool) + ?doLoadProgress@QDeclarativeWebView@@AAEXH@Z @ 1031 NONAME ; void QDeclarativeWebView::doLoadProgress(int) + ?doLoadStarted@QDeclarativeWebView@@AAEXXZ @ 1032 NONAME ; void QDeclarativeWebView::doLoadStarted(void) + ?doPositioning@QDeclarativeColumn@@MAEXXZ @ 1033 NONAME ; void QDeclarativeColumn::doPositioning(void) + ?doPositioning@QDeclarativeFlow@@MAEXXZ @ 1034 NONAME ; void QDeclarativeFlow::doPositioning(void) + ?doPositioning@QDeclarativeGrid@@MAEXXZ @ 1035 NONAME ; void QDeclarativeGrid::doPositioning(void) + ?doPositioning@QDeclarativeRow@@MAEXXZ @ 1036 NONAME ; void QDeclarativeRow::doPositioning(void) + ?doUpdate@QDeclarativeGradient@@AAEXXZ @ 1037 NONAME ; void QDeclarativeGradient::doUpdate(void) + ?doUpdate@QDeclarativeRectangle@@AAEXXZ @ 1038 NONAME ; void QDeclarativeRectangle::doUpdate(void) + ?doesPropertyExist@QDeclarativeCompiler@@AAE_NPAVProperty@QDeclarativeParser@@PAVObject@3@@Z @ 1039 NONAME ; bool QDeclarativeCompiler::doesPropertyExist(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *) + ?doubleClick@QDeclarativeWebView@@IAEXHH@Z @ 1040 NONAME ; void QDeclarativeWebView::doubleClick(int, int) + ?doubleClicked@QDeclarativeMouseArea@@IAEXPAVQDeclarativeMouseEvent@@@Z @ 1041 NONAME ; void QDeclarativeMouseArea::doubleClicked(class QDeclarativeMouseEvent *) + ?downloadProgress@QDeclarativePixmapReply@@IAEX_J0@Z @ 1042 NONAME ; void QDeclarativePixmapReply::downloadProgress(long long, long long) + ?drag@QDeclarativeMouseArea@@QAEPAVQDeclarativeDrag@@XZ @ 1043 NONAME ; class QDeclarativeDrag * QDeclarativeMouseArea::drag(void) + ?dragMargin@QDeclarativePathView@@QBEMXZ @ 1044 NONAME ; float QDeclarativePathView::dragMargin(void) const + ?drawContents@QDeclarativeTextEdit@@MAEXPAVQPainter@@ABVQRect@@@Z @ 1045 NONAME ; void QDeclarativeTextEdit::drawContents(class QPainter *, class QRect const &) + ?drawContents@QDeclarativeTextInput@@UAEXPAVQPainter@@ABVQRect@@@Z @ 1046 NONAME ; void QDeclarativeTextInput::drawContents(class QPainter *, class QRect const &) + ?drawContents@QDeclarativeWebView@@MAEXPAVQPainter@@ABVQRect@@@Z @ 1047 NONAME ; void QDeclarativeWebView::drawContents(class QPainter *, class QRect const &) + ?drawRect@QDeclarativeRectangle@@AAEXAAVQPainter@@@Z @ 1048 NONAME ; void QDeclarativeRectangle::drawRect(class QPainter &) + ?dumpStats@QDeclarativeCompiler@@AAEXXZ @ 1049 NONAME ; void QDeclarativeCompiler::dumpStats(void) + ?duration@QDeclarativeEaseFollow@@QBEMXZ @ 1050 NONAME ; float QDeclarativeEaseFollow::duration(void) const + ?durationChanged@QDeclarativeEaseFollow@@IAEXXZ @ 1051 NONAME ; void QDeclarativeEaseFollow::durationChanged(void) + ?dynamicProperties@QDeclarativeDomObject@@QBE?AV?$QList@VQDeclarativeDomDynamicProperty@@@@XZ @ 1052 NONAME ; class QList QDeclarativeDomObject::dynamicProperties(void) const + ?dynamicProperty@QDeclarativeDomObject@@QBE?AVQDeclarativeDomDynamicProperty@@ABVQByteArray@@@Z @ 1053 NONAME ; class QDeclarativeDomDynamicProperty QDeclarativeDomObject::dynamicProperty(class QByteArray const &) const + ?echoMode@QDeclarativeTextInput@@QBE?AW4EchoMode@1@XZ @ 1054 NONAME ; enum QDeclarativeTextInput::EchoMode QDeclarativeTextInput::echoMode(void) const + ?echoModeChanged@QDeclarativeTextInput@@IAEXW4EchoMode@1@@Z @ 1055 NONAME ; void QDeclarativeTextInput::echoModeChanged(enum QDeclarativeTextInput::EchoMode) + ?elementAreaAt@QDeclarativeWebView@@QBE?AVQRect@@HHHH@Z @ 1056 NONAME ; class QRect QDeclarativeWebView::elementAreaAt(int, int, int, int) const + ?elideMode@QDeclarativeText@@QBE?AW4TextElideMode@1@XZ @ 1057 NONAME ; enum QDeclarativeText::TextElideMode QDeclarativeText::elideMode(void) const + ?elideModeChanged@QDeclarativeText@@IAEXW4TextElideMode@1@@Z @ 1058 NONAME ; void QDeclarativeText::elideModeChanged(enum QDeclarativeText::TextElideMode) + ?emissionRate@QDeclarativeParticles@@QBEHXZ @ 1059 NONAME ; int QDeclarativeParticles::emissionRate(void) const + ?emissionRateChanged@QDeclarativeParticles@@IAEXXZ @ 1060 NONAME ; void QDeclarativeParticles::emissionRateChanged(void) + ?emissionVariance@QDeclarativeParticles@@QBEMXZ @ 1061 NONAME ; float QDeclarativeParticles::emissionVariance(void) const + ?emissionVarianceChanged@QDeclarativeParticles@@IAEXXZ @ 1062 NONAME ; void QDeclarativeParticles::emissionVarianceChanged(void) + ?emittingChanged@QDeclarativeParticles@@IAEXXZ @ 1063 NONAME ; void QDeclarativeParticles::emittingChanged(void) + ?enabled@QDeclarativeBehavior@@QBE_NXZ @ 1064 NONAME ; bool QDeclarativeBehavior::enabled(void) const + ?enabled@QDeclarativeEaseFollow@@QBE_NXZ @ 1065 NONAME ; bool QDeclarativeEaseFollow::enabled(void) const + ?enabled@QDeclarativeSpringFollow@@QBE_NXZ @ 1066 NONAME ; bool QDeclarativeSpringFollow::enabled(void) const + ?enabledChanged@QDeclarativeBehavior@@IAEXXZ @ 1067 NONAME ; void QDeclarativeBehavior::enabledChanged(void) + ?enabledChanged@QDeclarativeDebugService@@MAEX_N@Z @ 1068 NONAME ; void QDeclarativeDebugService::enabledChanged(bool) + ?enabledChanged@QDeclarativeEaseFollow@@IAEXXZ @ 1069 NONAME ; void QDeclarativeEaseFollow::enabledChanged(void) + ?enabledChanged@QDeclarativeMouseArea@@IAEXXZ @ 1070 NONAME ; void QDeclarativeMouseArea::enabledChanged(void) + ?endpoint@QDeclarativePath@@AAEXABVQString@@@Z @ 1071 NONAME ; void QDeclarativePath::endpoint(class QString const &) + ?engine@QDeclarativeContext@@QBEPAVQDeclarativeEngine@@XZ @ 1072 NONAME ; class QDeclarativeEngine * QDeclarativeContext::engine(void) const + ?engine@QDeclarativeExpression@@QBEPAVQDeclarativeEngine@@XZ @ 1073 NONAME ; class QDeclarativeEngine * QDeclarativeExpression::engine(void) const + ?engine@QDeclarativeView@@QAEPAVQDeclarativeEngine@@XZ @ 1074 NONAME ; class QDeclarativeEngine * QDeclarativeView::engine(void) + ?engines@QDeclarativeDebugEnginesQuery@@QBE?AV?$QList@VQDeclarativeDebugEngineReference@@@@XZ @ 1075 NONAME ; class QList QDeclarativeDebugEnginesQuery::engines(void) const + ?entered@QDeclarativeMouseArea@@IAEXXZ @ 1076 NONAME ; void QDeclarativeMouseArea::entered(void) + ?enumerator@QMetaObjectBuilder@@QBE?AVQMetaEnumBuilder@@H@Z @ 1077 NONAME ; class QMetaEnumBuilder QMetaObjectBuilder::enumerator(int) const + ?enumeratorCount@QMetaObjectBuilder@@QBEHXZ @ 1078 NONAME ; int QMetaObjectBuilder::enumeratorCount(void) const + ?epsilon@QDeclarativeSpringFollow@@QBEMXZ @ 1079 NONAME ; float QDeclarativeSpringFollow::epsilon(void) const + ?error@QDeclarativeCustomParser@@IAEXABVQDeclarativeCustomParserNode@@ABVQString@@@Z @ 1080 NONAME ; void QDeclarativeCustomParser::error(class QDeclarativeCustomParserNode const &, class QString const &) + ?error@QDeclarativeCustomParser@@IAEXABVQDeclarativeCustomParserProperty@@ABVQString@@@Z @ 1081 NONAME ; void QDeclarativeCustomParser::error(class QDeclarativeCustomParserProperty const &, class QString const &) + ?error@QDeclarativeExpression@@QBE?AVQDeclarativeError@@XZ @ 1082 NONAME ; class QDeclarativeError QDeclarativeExpression::error(void) const + ?errors@QDeclarativeCompiler@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 1083 NONAME ; class QList QDeclarativeCompiler::errors(void) const + ?errors@QDeclarativeComponent@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 1084 NONAME ; class QList QDeclarativeComponent::errors(void) const + ?errors@QDeclarativeCustomParser@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 1085 NONAME ; class QList QDeclarativeCustomParser::errors(void) const + ?errors@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 1086 NONAME ; class QList QDeclarativeDomDocument::errors(void) const + ?errors@QDeclarativeView@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 1087 NONAME ; class QList QDeclarativeView::errors(void) const + ?errorsString@QDeclarativeComponent@@QBE?AVQString@@XZ @ 1088 NONAME ; class QString QDeclarativeComponent::errorsString(void) const + ?eval@QDeclarativeBind@@AAEXXZ @ 1089 NONAME ; void QDeclarativeBind::eval(void) + ?evaluate@QDeclarativeVisualDataModel@@UAE?AVQVariant@@HABVQString@@PAVQObject@@@Z @ 1090 NONAME ; class QVariant QDeclarativeVisualDataModel::evaluate(int, class QString const &, class QObject *) + ?evaluate@QDeclarativeVisualItemModel@@UAE?AVQVariant@@HABVQString@@PAVQObject@@@Z @ 1091 NONAME ; class QVariant QDeclarativeVisualItemModel::evaluate(int, class QString const &, class QObject *) + ?evaluateJavaScript@QDeclarativeWebView@@QAE?AVQVariant@@ABVQString@@@Z @ 1092 NONAME ; class QVariant QDeclarativeWebView::evaluateJavaScript(class QString const &) + ?event@QDeclarativeItem@@MAE_NPAVQEvent@@@Z @ 1093 NONAME ; bool QDeclarativeItem::event(class QEvent *) + ?event@QDeclarativePixmapReply@@MAE_NPAVQEvent@@@Z @ 1094 NONAME ; bool QDeclarativePixmapReply::event(class QEvent *) + ?event@QDeclarativeSystemPalette@@EAE_NPAVQEvent@@@Z @ 1095 NONAME ; bool QDeclarativeSystemPalette::event(class QEvent *) + ?event@QDeclarativeTextEdit@@MAE_NPAVQEvent@@@Z @ 1096 NONAME ; bool QDeclarativeTextEdit::event(class QEvent *) + ?event@QDeclarativeTextInput@@MAE_NPAVQEvent@@@Z @ 1097 NONAME ; bool QDeclarativeTextInput::event(class QEvent *) + ?eventFilter@QDeclarativeGraphicsObjectContainer@@MAE_NPAVQObject@@PAVQEvent@@@Z @ 1098 NONAME ; bool QDeclarativeGraphicsObjectContainer::eventFilter(class QObject *, class QEvent *) + ?eventFilter@QDeclarativeLoader@@MAE_NPAVQObject@@PAVQEvent@@@Z @ 1099 NONAME ; bool QDeclarativeLoader::eventFilter(class QObject *, class QEvent *) + ?eventFilter@QDeclarativeSystemPalette@@EAE_NPAVQObject@@PAVQEvent@@@Z @ 1100 NONAME ; bool QDeclarativeSystemPalette::eventFilter(class QObject *, class QEvent *) + ?execute@QDeclarativeAnchorChanges@@UAEXXZ @ 1101 NONAME ; void QDeclarativeAnchorChanges::execute(void) + ?execute@QDeclarativeParentChange@@UAEXXZ @ 1102 NONAME ; void QDeclarativeParentChange::execute(void) + ?execute@QDeclarativeStateChangeScript@@UAEXXZ @ 1103 NONAME ; void QDeclarativeStateChangeScript::execute(void) + ?exited@QDeclarativeMouseArea@@IAEXXZ @ 1104 NONAME ; void QDeclarativeMouseArea::exited(void) + ?expandToWebPage@QDeclarativeWebView@@AAEXXZ @ 1105 NONAME ; void QDeclarativeWebView::expandToWebPage(void) + ?expression@QDeclarativeDebugExpressionQuery@@QBE?AVQString@@XZ @ 1106 NONAME ; class QString QDeclarativeDebugExpressionQuery::expression(void) const + ?expression@QDeclarativeDebugObjectExpressionWatch@@QBE?AVQString@@XZ @ 1107 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::expression(void) const + ?expression@QDeclarativeExpression@@QBE?AVQString@@XZ @ 1108 NONAME ; class QString QDeclarativeExpression::expression(void) const + ?extends@QDeclarativeState@@QBE?AVQString@@XZ @ 1109 NONAME ; class QString QDeclarativeState::extends(void) const + ?extraActions@QDeclarativeAnchorChanges@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 1110 NONAME ; class QList QDeclarativeAnchorChanges::extraActions(void) + ?fadeInDuration@QDeclarativeParticles@@QBEHXZ @ 1111 NONAME ; int QDeclarativeParticles::fadeInDuration(void) const + ?fadeInDurationChanged@QDeclarativeParticles@@IAEXXZ @ 1112 NONAME ; void QDeclarativeParticles::fadeInDurationChanged(void) + ?fadeOutDuration@QDeclarativeParticles@@QBEHXZ @ 1113 NONAME ; int QDeclarativeParticles::fadeOutDuration(void) const + ?fadeOutDurationChanged@QDeclarativeParticles@@IAEXXZ @ 1114 NONAME ; void QDeclarativeParticles::fadeOutDurationChanged(void) + ?fill@QDeclarativeAnchors@@QBEPAVQDeclarativeItem@@XZ @ 1115 NONAME ; class QDeclarativeItem * QDeclarativeAnchors::fill(void) const + ?fillChanged@QDeclarativeAnchors@@IAEXXZ @ 1116 NONAME ; void QDeclarativeAnchors::fillChanged(void) + ?fillColor@QDeclarativePaintedItem@@QBE?AVQColor@@XZ @ 1117 NONAME ; class QColor QDeclarativePaintedItem::fillColor(void) const + ?fillColorChanged@QDeclarativePaintedItem@@IAEXXZ @ 1118 NONAME ; void QDeclarativePaintedItem::fillColorChanged(void) + ?fillMode@QDeclarativeImage@@QBE?AW4FillMode@1@XZ @ 1119 NONAME ; enum QDeclarativeImage::FillMode QDeclarativeImage::fillMode(void) const + ?fillModeChanged@QDeclarativeImage@@IAEXXZ @ 1120 NONAME ; void QDeclarativeImage::fillModeChanged(void) + ?findSignalByName@QDeclarativeCompiler@@SA?AVQMetaMethod@@PBUQMetaObject@@ABVQByteArray@@@Z @ 1121 NONAME ; class QMetaMethod QDeclarativeCompiler::findSignalByName(struct QMetaObject const *, class QByteArray const &) + ?findState@QDeclarativeStateGroup@@QBEPAVQDeclarativeState@@ABVQString@@@Z @ 1122 NONAME ; class QDeclarativeState * QDeclarativeStateGroup::findState(class QString const &) const + ?finishApplyTransitions@QDeclarativeBasePositioner@@IAEXXZ @ 1123 NONAME ; void QDeclarativeBasePositioner::finishApplyTransitions(void) + ?finished@QDeclarativePixmapReply@@IAEXXZ @ 1124 NONAME ; void QDeclarativePixmapReply::finished(void) + ?finished@QDeclarativeTimer@@AAEXXZ @ 1125 NONAME ; void QDeclarativeTimer::finished(void) + ?flags@QMetaObjectBuilder@@QBE?AV?$QFlags@W4MetaObjectFlag@QMetaObjectBuilder@@@@XZ @ 1126 NONAME ; class QFlags QMetaObjectBuilder::flags(void) const + ?flickDeceleration@QDeclarativeFlickable@@QBEMXZ @ 1127 NONAME ; float QDeclarativeFlickable::flickDeceleration(void) const + ?flickDecelerationChanged@QDeclarativeFlickable@@IAEXXZ @ 1128 NONAME ; void QDeclarativeFlickable::flickDecelerationChanged(void) + ?flickDirection@QDeclarativeFlickable@@QBE?AW4FlickDirection@1@XZ @ 1129 NONAME ; enum QDeclarativeFlickable::FlickDirection QDeclarativeFlickable::flickDirection(void) const + ?flickDirectionChanged@QDeclarativeFlickable@@IAEXXZ @ 1130 NONAME ; void QDeclarativeFlickable::flickDirectionChanged(void) + ?flickEnded@QDeclarativeFlickable@@IAEXXZ @ 1131 NONAME ; void QDeclarativeFlickable::flickEnded(void) + ?flickStarted@QDeclarativeFlickable@@IAEXXZ @ 1132 NONAME ; void QDeclarativeFlickable::flickStarted(void) + ?flickableChildren@QDeclarativeFlickable@@QAE?AU?$QDeclarativeListProperty@VQDeclarativeItem@@@@XZ @ 1133 NONAME ; struct QDeclarativeListProperty QDeclarativeFlickable::flickableChildren(void) + ?flickableData@QDeclarativeFlickable@@QAE?AU?$QDeclarativeListProperty@VQObject@@@@XZ @ 1134 NONAME ; struct QDeclarativeListProperty QDeclarativeFlickable::flickableData(void) + ?flickingChanged@QDeclarativeFlickable@@IAEXXZ @ 1135 NONAME ; void QDeclarativeFlickable::flickingChanged(void) + ?flow@QDeclarativeFlow@@QBE?AW4Flow@1@XZ @ 1136 NONAME ; enum QDeclarativeFlow::Flow QDeclarativeFlow::flow(void) const + ?flow@QDeclarativeGridView@@QBE?AW4Flow@1@XZ @ 1137 NONAME ; enum QDeclarativeGridView::Flow QDeclarativeGridView::flow(void) const + ?flowChanged@QDeclarativeFlow@@IAEXXZ @ 1138 NONAME ; void QDeclarativeFlow::flowChanged(void) + ?focusChanged@QDeclarativeItem@@IAEXXZ @ 1139 NONAME ; void QDeclarativeItem::focusChanged(void) + ?focusChanged@QDeclarativeItem@@MAEX_N@Z @ 1140 NONAME ; void QDeclarativeItem::focusChanged(bool) + ?focusChanged@QDeclarativeTextEdit@@MAEX_N@Z @ 1141 NONAME ; void QDeclarativeTextEdit::focusChanged(bool) + ?focusChanged@QDeclarativeTextInput@@MAEX_N@Z @ 1142 NONAME ; void QDeclarativeTextInput::focusChanged(bool) + ?focusChanged@QDeclarativeWebView@@MAEX_N@Z @ 1143 NONAME ; void QDeclarativeWebView::focusChanged(bool) + ?focusOnPress@QDeclarativeTextEdit@@QBE_NXZ @ 1144 NONAME ; bool QDeclarativeTextEdit::focusOnPress(void) const + ?focusOnPress@QDeclarativeTextInput@@QBE_NXZ @ 1145 NONAME ; bool QDeclarativeTextInput::focusOnPress(void) const + ?focusOnPressChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 1146 NONAME ; void QDeclarativeTextEdit::focusOnPressChanged(bool) + ?focusOnPressChanged@QDeclarativeTextInput@@IAEX_N@Z @ 1147 NONAME ; void QDeclarativeTextInput::focusOnPressChanged(bool) + ?font@QDeclarativeText@@QBE?AVQFont@@XZ @ 1148 NONAME ; class QFont QDeclarativeText::font(void) const + ?font@QDeclarativeTextEdit@@QBE?AVQFont@@XZ @ 1149 NONAME ; class QFont QDeclarativeTextEdit::font(void) const + ?font@QDeclarativeTextInput@@QBE?AVQFont@@XZ @ 1150 NONAME ; class QFont QDeclarativeTextInput::font(void) const + ?fontChanged@QDeclarativeText@@IAEXABVQFont@@@Z @ 1151 NONAME ; void QDeclarativeText::fontChanged(class QFont const &) + ?fontChanged@QDeclarativeTextEdit@@IAEXABVQFont@@@Z @ 1152 NONAME ; void QDeclarativeTextEdit::fontChanged(class QFont const &) + ?fontChanged@QDeclarativeTextInput@@IAEXABVQFont@@@Z @ 1153 NONAME ; void QDeclarativeTextInput::fontChanged(class QFont const &) + ?footer@QDeclarativeListView@@QBEPAVQDeclarativeComponent@@XZ @ 1154 NONAME ; class QDeclarativeComponent * QDeclarativeListView::footer(void) const + ?format@QDeclarativeNumberFormatter@@QBE?AVQString@@XZ @ 1155 NONAME ; class QString QDeclarativeNumberFormatter::format(void) const + ?forwardAction@QDeclarativeWebView@@QBEPAVQAction@@XZ @ 1156 NONAME ; class QAction * QDeclarativeWebView::forwardAction(void) const + ?frameChanged@QDeclarativeAnimatedImage@@IAEXXZ @ 1157 NONAME ; void QDeclarativeAnimatedImage::frameChanged(void) + ?frameCount@QDeclarativeAnimatedImage@@QBEHXZ @ 1158 NONAME ; int QDeclarativeAnimatedImage::frameCount(void) const + ?fromRelocatableData@QMetaObjectBuilder@@SAXPAUQMetaObject@@PBU2@ABVQByteArray@@@Z @ 1159 NONAME ; void QMetaObjectBuilder::fromRelocatableData(struct QMetaObject *, struct QMetaObject const *, class QByteArray const &) + ?fromState@QDeclarativeTransition@@QBE?AVQString@@XZ @ 1160 NONAME ; class QString QDeclarativeTransition::fromState(void) const + ?front@QDeclarativeFlipable@@QAEPAVQDeclarativeItem@@XZ @ 1161 NONAME ; class QDeclarativeItem * QDeclarativeFlipable::front(void) + ?fxChildren@QDeclarativeItem@@QAE?AU?$QDeclarativeListProperty@VQDeclarativeItem@@@@XZ @ 1162 NONAME ; struct QDeclarativeListProperty QDeclarativeItem::fxChildren(void) + ?genBindingAssignment@QDeclarativeCompiler@@AAEXPAVValue@QDeclarativeParser@@PAVProperty@3@PAVObject@3@1@Z @ 1163 NONAME ; void QDeclarativeCompiler::genBindingAssignment(class QDeclarativeParser::Value *, class QDeclarativeParser::Property *, class QDeclarativeParser::Object *, class QDeclarativeParser::Property *) + ?genComponent@QDeclarativeCompiler@@AAEXPAVObject@QDeclarativeParser@@@Z @ 1164 NONAME ; void QDeclarativeCompiler::genComponent(class QDeclarativeParser::Object *) + ?genContextCache@QDeclarativeCompiler@@AAEHXZ @ 1165 NONAME ; int QDeclarativeCompiler::genContextCache(void) + ?genListProperty@QDeclarativeCompiler@@AAEXPAVProperty@QDeclarativeParser@@PAVObject@3@@Z @ 1166 NONAME ; void QDeclarativeCompiler::genListProperty(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *) + ?genLiteralAssignment@QDeclarativeCompiler@@AAEXABVQMetaProperty@@PAVValue@QDeclarativeParser@@@Z @ 1167 NONAME ; void QDeclarativeCompiler::genLiteralAssignment(class QMetaProperty const &, class QDeclarativeParser::Value *) + ?genObject@QDeclarativeCompiler@@AAEXPAVObject@QDeclarativeParser@@@Z @ 1168 NONAME ; void QDeclarativeCompiler::genObject(class QDeclarativeParser::Object *) + ?genObjectBody@QDeclarativeCompiler@@AAEXPAVObject@QDeclarativeParser@@@Z @ 1169 NONAME ; void QDeclarativeCompiler::genObjectBody(class QDeclarativeParser::Object *) + ?genPropertyAssignment@QDeclarativeCompiler@@AAEXPAVProperty@QDeclarativeParser@@PAVObject@3@0@Z @ 1170 NONAME ; void QDeclarativeCompiler::genPropertyAssignment(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *, class QDeclarativeParser::Property *) + ?genPropertyData@QDeclarativeCompiler@@AAEHPAVProperty@QDeclarativeParser@@@Z @ 1171 NONAME ; int QDeclarativeCompiler::genPropertyData(class QDeclarativeParser::Property *) + ?genValueProperty@QDeclarativeCompiler@@AAEXPAVProperty@QDeclarativeParser@@PAVObject@3@@Z @ 1172 NONAME ; void QDeclarativeCompiler::genValueProperty(class QDeclarativeParser::Property *, class QDeclarativeParser::Object *) + ?genValueTypeData@QDeclarativeCompiler@@AAEHPAVProperty@QDeclarativeParser@@0@Z @ 1173 NONAME ; int QDeclarativeCompiler::genValueTypeData(class QDeclarativeParser::Property *, class QDeclarativeParser::Property *) + ?generateBorderedRect@QDeclarativeRectangle@@AAEXXZ @ 1174 NONAME ; void QDeclarativeRectangle::generateBorderedRect(void) + ?generateRoundedRect@QDeclarativeRectangle@@AAEXXZ @ 1175 NONAME ; void QDeclarativeRectangle::generateRoundedRect(void) + ?geometryChanged@QDeclarativeImage@@MAEXABVQRectF@@0@Z @ 1176 NONAME ; void QDeclarativeImage::geometryChanged(class QRectF const &, class QRectF const &) + ?geometryChanged@QDeclarativeItem@@MAEXABVQRectF@@0@Z @ 1177 NONAME ; void QDeclarativeItem::geometryChanged(class QRectF const &, class QRectF const &) + ?geometryChanged@QDeclarativeLoader@@MAEXABVQRectF@@0@Z @ 1178 NONAME ; void QDeclarativeLoader::geometryChanged(class QRectF const &, class QRectF const &) + ?geometryChanged@QDeclarativeText@@MAEXABVQRectF@@0@Z @ 1179 NONAME ; void QDeclarativeText::geometryChanged(class QRectF const &, class QRectF const &) + ?geometryChanged@QDeclarativeTextEdit@@MAEXABVQRectF@@0@Z @ 1180 NONAME ; void QDeclarativeTextEdit::geometryChanged(class QRectF const &, class QRectF const &) + ?geometryChanged@QDeclarativeTextInput@@MAEXABVQRectF@@0@Z @ 1181 NONAME ; void QDeclarativeTextInput::geometryChanged(class QRectF const &, class QRectF const &) + ?geometryChanged@QDeclarativeWebView@@MAEXABVQRectF@@0@Z @ 1182 NONAME ; void QDeclarativeWebView::geometryChanged(class QRectF const &, class QRectF const &) + ?get@QDeclarativeContextPrivate@@SAPAV1@PAVQDeclarativeContext@@@Z @ 1183 NONAME ; class QDeclarativeContextPrivate * QDeclarativeContextPrivate::get(class QDeclarativeContext *) + ?get@QDeclarativeContextPrivate@@SAPAVQDeclarativeContext@@PAV1@@Z @ 1184 NONAME ; class QDeclarativeContext * QDeclarativeContextPrivate::get(class QDeclarativeContextPrivate *) + ?get@QDeclarativeListModel@@QBE?AVQScriptValue@@H@Z @ 1185 NONAME ; class QScriptValue QDeclarativeListModel::get(int) const + ?get@QDeclarativePixmapCache@@SA?AW4Status@QDeclarativePixmapReply@@ABVQUrl@@PAVQPixmap@@_N@Z @ 1186 NONAME ; enum QDeclarativePixmapReply::Status QDeclarativePixmapCache::get(class QUrl const &, class QPixmap *, bool) + ?getStaticMetaObject@QDeclarativeAnchorChanges@@SAABUQMetaObject@@XZ @ 1187 NONAME ; struct QMetaObject const & QDeclarativeAnchorChanges::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeAnchors@@SAABUQMetaObject@@XZ @ 1188 NONAME ; struct QMetaObject const & QDeclarativeAnchors::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeAnimatedImage@@SAABUQMetaObject@@XZ @ 1189 NONAME ; struct QMetaObject const & QDeclarativeAnimatedImage::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeBasePositioner@@SAABUQMetaObject@@XZ @ 1190 NONAME ; struct QMetaObject const & QDeclarativeBasePositioner::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeBehavior@@SAABUQMetaObject@@XZ @ 1191 NONAME ; struct QMetaObject const & QDeclarativeBehavior::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeBind@@SAABUQMetaObject@@XZ @ 1192 NONAME ; struct QMetaObject const & QDeclarativeBind::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeBorderImage@@SAABUQMetaObject@@XZ @ 1193 NONAME ; struct QMetaObject const & QDeclarativeBorderImage::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeColumn@@SAABUQMetaObject@@XZ @ 1194 NONAME ; struct QMetaObject const & QDeclarativeColumn::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeComponent@@SAABUQMetaObject@@XZ @ 1195 NONAME ; struct QMetaObject const & QDeclarativeComponent::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeConnections@@SAABUQMetaObject@@XZ @ 1196 NONAME ; struct QMetaObject const & QDeclarativeConnections::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeContext@@SAABUQMetaObject@@XZ @ 1197 NONAME ; struct QMetaObject const & QDeclarativeContext::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeCurve@@SAABUQMetaObject@@XZ @ 1198 NONAME ; struct QMetaObject const & QDeclarativeCurve::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDateTimeFormatter@@SAABUQMetaObject@@XZ @ 1199 NONAME ; struct QMetaObject const & QDeclarativeDateTimeFormatter::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDebugClient@@SAABUQMetaObject@@XZ @ 1200 NONAME ; struct QMetaObject const & QDeclarativeDebugClient::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDebugConnection@@SAABUQMetaObject@@XZ @ 1201 NONAME ; struct QMetaObject const & QDeclarativeDebugConnection::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDebugEnginesQuery@@SAABUQMetaObject@@XZ @ 1202 NONAME ; struct QMetaObject const & QDeclarativeDebugEnginesQuery::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDebugExpressionQuery@@SAABUQMetaObject@@XZ @ 1203 NONAME ; struct QMetaObject const & QDeclarativeDebugExpressionQuery::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDebugObjectExpressionWatch@@SAABUQMetaObject@@XZ @ 1204 NONAME ; struct QMetaObject const & QDeclarativeDebugObjectExpressionWatch::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDebugObjectQuery@@SAABUQMetaObject@@XZ @ 1205 NONAME ; struct QMetaObject const & QDeclarativeDebugObjectQuery::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDebugPropertyWatch@@SAABUQMetaObject@@XZ @ 1206 NONAME ; struct QMetaObject const & QDeclarativeDebugPropertyWatch::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDebugQuery@@SAABUQMetaObject@@XZ @ 1207 NONAME ; struct QMetaObject const & QDeclarativeDebugQuery::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDebugRootContextQuery@@SAABUQMetaObject@@XZ @ 1208 NONAME ; struct QMetaObject const & QDeclarativeDebugRootContextQuery::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDebugService@@SAABUQMetaObject@@XZ @ 1209 NONAME ; struct QMetaObject const & QDeclarativeDebugService::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDebugWatch@@SAABUQMetaObject@@XZ @ 1210 NONAME ; struct QMetaObject const & QDeclarativeDebugWatch::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeDrag@@SAABUQMetaObject@@XZ @ 1211 NONAME ; struct QMetaObject const & QDeclarativeDrag::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeEaseFollow@@SAABUQMetaObject@@XZ @ 1212 NONAME ; struct QMetaObject const & QDeclarativeEaseFollow::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeEngine@@SAABUQMetaObject@@XZ @ 1213 NONAME ; struct QMetaObject const & QDeclarativeEngine::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeEngineDebug@@SAABUQMetaObject@@XZ @ 1214 NONAME ; struct QMetaObject const & QDeclarativeEngineDebug::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeExpression@@SAABUQMetaObject@@XZ @ 1215 NONAME ; struct QMetaObject const & QDeclarativeExpression::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeExtensionPlugin@@SAABUQMetaObject@@XZ @ 1216 NONAME ; struct QMetaObject const & QDeclarativeExtensionPlugin::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeFlickable@@SAABUQMetaObject@@XZ @ 1217 NONAME ; struct QMetaObject const & QDeclarativeFlickable::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeFlipable@@SAABUQMetaObject@@XZ @ 1218 NONAME ; struct QMetaObject const & QDeclarativeFlipable::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeFlow@@SAABUQMetaObject@@XZ @ 1219 NONAME ; struct QMetaObject const & QDeclarativeFlow::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeFocusPanel@@SAABUQMetaObject@@XZ @ 1220 NONAME ; struct QMetaObject const & QDeclarativeFocusPanel::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeFocusScope@@SAABUQMetaObject@@XZ @ 1221 NONAME ; struct QMetaObject const & QDeclarativeFocusScope::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeFontLoader@@SAABUQMetaObject@@XZ @ 1222 NONAME ; struct QMetaObject const & QDeclarativeFontLoader::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeGradient@@SAABUQMetaObject@@XZ @ 1223 NONAME ; struct QMetaObject const & QDeclarativeGradient::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeGradientStop@@SAABUQMetaObject@@XZ @ 1224 NONAME ; struct QMetaObject const & QDeclarativeGradientStop::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeGraphicsObjectContainer@@SAABUQMetaObject@@XZ @ 1225 NONAME ; struct QMetaObject const & QDeclarativeGraphicsObjectContainer::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeGrid@@SAABUQMetaObject@@XZ @ 1226 NONAME ; struct QMetaObject const & QDeclarativeGrid::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeGridView@@SAABUQMetaObject@@XZ @ 1227 NONAME ; struct QMetaObject const & QDeclarativeGridView::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeImage@@SAABUQMetaObject@@XZ @ 1228 NONAME ; struct QMetaObject const & QDeclarativeImage::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeImageBase@@SAABUQMetaObject@@XZ @ 1229 NONAME ; struct QMetaObject const & QDeclarativeImageBase::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeItem@@SAABUQMetaObject@@XZ @ 1230 NONAME ; struct QMetaObject const & QDeclarativeItem::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeListModel@@SAABUQMetaObject@@XZ @ 1231 NONAME ; struct QMetaObject const & QDeclarativeListModel::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeListView@@SAABUQMetaObject@@XZ @ 1232 NONAME ; struct QMetaObject const & QDeclarativeListView::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeLoader@@SAABUQMetaObject@@XZ @ 1233 NONAME ; struct QMetaObject const & QDeclarativeLoader::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeMouseArea@@SAABUQMetaObject@@XZ @ 1234 NONAME ; struct QMetaObject const & QDeclarativeMouseArea::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeNumberFormatter@@SAABUQMetaObject@@XZ @ 1235 NONAME ; struct QMetaObject const & QDeclarativeNumberFormatter::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePaintedItem@@SAABUQMetaObject@@XZ @ 1236 NONAME ; struct QMetaObject const & QDeclarativePaintedItem::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeParentChange@@SAABUQMetaObject@@XZ @ 1237 NONAME ; struct QMetaObject const & QDeclarativeParentChange::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeParticleMotion@@SAABUQMetaObject@@XZ @ 1238 NONAME ; struct QMetaObject const & QDeclarativeParticleMotion::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeParticleMotionGravity@@SAABUQMetaObject@@XZ @ 1239 NONAME ; struct QMetaObject const & QDeclarativeParticleMotionGravity::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeParticleMotionLinear@@SAABUQMetaObject@@XZ @ 1240 NONAME ; struct QMetaObject const & QDeclarativeParticleMotionLinear::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeParticleMotionWander@@SAABUQMetaObject@@XZ @ 1241 NONAME ; struct QMetaObject const & QDeclarativeParticleMotionWander::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeParticles@@SAABUQMetaObject@@XZ @ 1242 NONAME ; struct QMetaObject const & QDeclarativeParticles::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePath@@SAABUQMetaObject@@XZ @ 1243 NONAME ; struct QMetaObject const & QDeclarativePath::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePathAttribute@@SAABUQMetaObject@@XZ @ 1244 NONAME ; struct QMetaObject const & QDeclarativePathAttribute::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePathCubic@@SAABUQMetaObject@@XZ @ 1245 NONAME ; struct QMetaObject const & QDeclarativePathCubic::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePathElement@@SAABUQMetaObject@@XZ @ 1246 NONAME ; struct QMetaObject const & QDeclarativePathElement::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePathLine@@SAABUQMetaObject@@XZ @ 1247 NONAME ; struct QMetaObject const & QDeclarativePathLine::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePathPercent@@SAABUQMetaObject@@XZ @ 1248 NONAME ; struct QMetaObject const & QDeclarativePathPercent::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePathQuad@@SAABUQMetaObject@@XZ @ 1249 NONAME ; struct QMetaObject const & QDeclarativePathQuad::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePathView@@SAABUQMetaObject@@XZ @ 1250 NONAME ; struct QMetaObject const & QDeclarativePathView::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePen@@SAABUQMetaObject@@XZ @ 1251 NONAME ; struct QMetaObject const & QDeclarativePen::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePixmapReply@@SAABUQMetaObject@@XZ @ 1252 NONAME ; struct QMetaObject const & QDeclarativePixmapReply::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePropertyChanges@@SAABUQMetaObject@@XZ @ 1253 NONAME ; struct QMetaObject const & QDeclarativePropertyChanges::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePropertyMap@@SAABUQMetaObject@@XZ @ 1254 NONAME ; struct QMetaObject const & QDeclarativePropertyMap::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeRectangle@@SAABUQMetaObject@@XZ @ 1255 NONAME ; struct QMetaObject const & QDeclarativeRectangle::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeRepeater@@SAABUQMetaObject@@XZ @ 1256 NONAME ; struct QMetaObject const & QDeclarativeRepeater::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeRow@@SAABUQMetaObject@@XZ @ 1257 NONAME ; struct QMetaObject const & QDeclarativeRow::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeScaleGrid@@SAABUQMetaObject@@XZ @ 1258 NONAME ; struct QMetaObject const & QDeclarativeScaleGrid::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeSpringFollow@@SAABUQMetaObject@@XZ @ 1259 NONAME ; struct QMetaObject const & QDeclarativeSpringFollow::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeState@@SAABUQMetaObject@@XZ @ 1260 NONAME ; struct QMetaObject const & QDeclarativeState::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeStateChangeScript@@SAABUQMetaObject@@XZ @ 1261 NONAME ; struct QMetaObject const & QDeclarativeStateChangeScript::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeStateGroup@@SAABUQMetaObject@@XZ @ 1262 NONAME ; struct QMetaObject const & QDeclarativeStateGroup::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeStateOperation@@SAABUQMetaObject@@XZ @ 1263 NONAME ; struct QMetaObject const & QDeclarativeStateOperation::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeSystemPalette@@SAABUQMetaObject@@XZ @ 1264 NONAME ; struct QMetaObject const & QDeclarativeSystemPalette::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeText@@SAABUQMetaObject@@XZ @ 1265 NONAME ; struct QMetaObject const & QDeclarativeText::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeTextEdit@@SAABUQMetaObject@@XZ @ 1266 NONAME ; struct QMetaObject const & QDeclarativeTextEdit::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeTextInput@@SAABUQMetaObject@@XZ @ 1267 NONAME ; struct QMetaObject const & QDeclarativeTextInput::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeTimer@@SAABUQMetaObject@@XZ @ 1268 NONAME ; struct QMetaObject const & QDeclarativeTimer::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeTransition@@SAABUQMetaObject@@XZ @ 1269 NONAME ; struct QMetaObject const & QDeclarativeTransition::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeValueType@@SAABUQMetaObject@@XZ @ 1270 NONAME ; struct QMetaObject const & QDeclarativeValueType::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeView@@SAABUQMetaObject@@XZ @ 1271 NONAME ; struct QMetaObject const & QDeclarativeView::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeViewSection@@SAABUQMetaObject@@XZ @ 1272 NONAME ; struct QMetaObject const & QDeclarativeViewSection::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeVisualDataModel@@SAABUQMetaObject@@XZ @ 1273 NONAME ; struct QMetaObject const & QDeclarativeVisualDataModel::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeVisualItemModel@@SAABUQMetaObject@@XZ @ 1274 NONAME ; struct QMetaObject const & QDeclarativeVisualItemModel::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeVisualModel@@SAABUQMetaObject@@XZ @ 1275 NONAME ; struct QMetaObject const & QDeclarativeVisualModel::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeWebPage@@SAABUQMetaObject@@XZ @ 1276 NONAME ; struct QMetaObject const & QDeclarativeWebPage::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeWebView@@SAABUQMetaObject@@XZ @ 1277 NONAME ; struct QMetaObject const & QDeclarativeWebView::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeXmlListModel@@SAABUQMetaObject@@XZ @ 1278 NONAME ; struct QMetaObject const & QDeclarativeXmlListModel::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativeXmlListModelRole@@SAABUQMetaObject@@XZ @ 1279 NONAME ; struct QMetaObject const & QDeclarativeXmlListModelRole::getStaticMetaObject(void) + ?getStaticMetaObject@QListModelInterface@@SAABUQMetaObject@@XZ @ 1280 NONAME ; struct QMetaObject const & QListModelInterface::getStaticMetaObject(void) + ?getStaticMetaObject@QPacketProtocol@@SAABUQMetaObject@@XZ @ 1281 NONAME ; struct QMetaObject const & QPacketProtocol::getStaticMetaObject(void) + ?gradient@QDeclarativeGradient@@QBEPBVQGradient@@XZ @ 1282 NONAME ; class QGradient const * QDeclarativeGradient::gradient(void) const + ?gradient@QDeclarativeRectangle@@QBEPAVQDeclarativeGradient@@XZ @ 1283 NONAME ; class QDeclarativeGradient * QDeclarativeRectangle::gradient(void) const + ?graphicsObject@QDeclarativeGraphicsObjectContainer@@QBEPAVQGraphicsObject@@XZ @ 1284 NONAME ; class QGraphicsObject * QDeclarativeGraphicsObjectContainer::graphicsObject(void) const + ?gridBottom@QDeclarativeGridScaledImage@@QBEHXZ @ 1285 NONAME ; int QDeclarativeGridScaledImage::gridBottom(void) const + ?gridLeft@QDeclarativeGridScaledImage@@QBEHXZ @ 1286 NONAME ; int QDeclarativeGridScaledImage::gridLeft(void) const + ?gridRight@QDeclarativeGridScaledImage@@QBEHXZ @ 1287 NONAME ; int QDeclarativeGridScaledImage::gridRight(void) const + ?gridTop@QDeclarativeGridScaledImage@@QBEHXZ @ 1288 NONAME ; int QDeclarativeGridScaledImage::gridTop(void) const + ?hAlign@QDeclarativeText@@QBE?AW4HAlignment@1@XZ @ 1289 NONAME ; enum QDeclarativeText::HAlignment QDeclarativeText::hAlign(void) const + ?hAlign@QDeclarativeTextEdit@@QBE?AW4HAlignment@1@XZ @ 1290 NONAME ; enum QDeclarativeTextEdit::HAlignment QDeclarativeTextEdit::hAlign(void) const + ?hAlign@QDeclarativeTextInput@@QBE?AW4HAlignment@1@XZ @ 1291 NONAME ; enum QDeclarativeTextInput::HAlignment QDeclarativeTextInput::hAlign(void) const + ?hasAcceptableInput@QDeclarativeTextInput@@QBE_NXZ @ 1292 NONAME ; bool QDeclarativeTextInput::hasAcceptableInput(void) const + ?hasError@QDeclarativeExpression@@QBE_NXZ @ 1293 NONAME ; bool QDeclarativeExpression::hasError(void) const + ?hasFocus@QDeclarativeItem@@QBE_NXZ @ 1294 NONAME ; bool QDeclarativeItem::hasFocus(void) const + ?hasNotifySignal@QDeclarativeDebugPropertyReference@@QBE_NXZ @ 1295 NONAME ; bool QDeclarativeDebugPropertyReference::hasNotifySignal(void) const + ?hasNotifySignal@QDeclarativeProperty@@QBE_NXZ @ 1296 NONAME ; bool QDeclarativeProperty::hasNotifySignal(void) const + ?hasNotifySignal@QMetaPropertyBuilder@@QBE_NXZ @ 1297 NONAME ; bool QMetaPropertyBuilder::hasNotifySignal(void) const + ?hasStdCppSet@QMetaPropertyBuilder@@QBE_NXZ @ 1298 NONAME ; bool QMetaPropertyBuilder::hasStdCppSet(void) const + ?header@QDeclarativeListView@@QBEPAVQDeclarativeComponent@@XZ @ 1299 NONAME ; class QDeclarativeComponent * QDeclarativeListView::header(void) const + ?height@QDeclarativeItem@@QBEMXZ @ 1300 NONAME ; float QDeclarativeItem::height(void) const + ?height@QDeclarativeParentChange@@QBEMXZ @ 1301 NONAME ; float QDeclarativeParentChange::height(void) const + ?heightChange@QDeclarativeFlickable@@IAEXXZ @ 1302 NONAME ; void QDeclarativeFlickable::heightChange(void) + ?heightChanged@QDeclarativeItem@@IAEXXZ @ 1303 NONAME ; void QDeclarativeItem::heightChanged(void) + ?heightIsSet@QDeclarativeParentChange@@QBE_NXZ @ 1304 NONAME ; bool QDeclarativeParentChange::heightIsSet(void) const + ?heightValid@QDeclarativeItem@@IBE_NXZ @ 1305 NONAME ; bool QDeclarativeItem::heightValid(void) const + ?heuristicZoom@QDeclarativeWebView@@QAE_NHHM@Z @ 1306 NONAME ; bool QDeclarativeWebView::heuristicZoom(int, int, float) + ?highlight@QDeclarativeGridView@@QBEPAVQDeclarativeComponent@@XZ @ 1307 NONAME ; class QDeclarativeComponent * QDeclarativeGridView::highlight(void) const + ?highlight@QDeclarativeListView@@QBEPAVQDeclarativeComponent@@XZ @ 1308 NONAME ; class QDeclarativeComponent * QDeclarativeListView::highlight(void) const + ?highlight@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 1309 NONAME ; class QColor QDeclarativeSystemPalette::highlight(void) const + ?highlightChanged@QDeclarativeGridView@@IAEXXZ @ 1310 NONAME ; void QDeclarativeGridView::highlightChanged(void) + ?highlightChanged@QDeclarativeListView@@IAEXXZ @ 1311 NONAME ; void QDeclarativeListView::highlightChanged(void) + ?highlightFollowsCurrentItem@QDeclarativeGridView@@QBE_NXZ @ 1312 NONAME ; bool QDeclarativeGridView::highlightFollowsCurrentItem(void) const + ?highlightFollowsCurrentItem@QDeclarativeListView@@QBE_NXZ @ 1313 NONAME ; bool QDeclarativeListView::highlightFollowsCurrentItem(void) const + ?highlightItem@QDeclarativeGridView@@QAEPAVQDeclarativeItem@@XZ @ 1314 NONAME ; class QDeclarativeItem * QDeclarativeGridView::highlightItem(void) + ?highlightItem@QDeclarativeListView@@QAEPAVQDeclarativeItem@@XZ @ 1315 NONAME ; class QDeclarativeItem * QDeclarativeListView::highlightItem(void) + ?highlightMoveSpeed@QDeclarativeListView@@QBEMXZ @ 1316 NONAME ; float QDeclarativeListView::highlightMoveSpeed(void) const + ?highlightMoveSpeedChanged@QDeclarativeListView@@IAEXXZ @ 1317 NONAME ; void QDeclarativeListView::highlightMoveSpeedChanged(void) + ?highlightRangeMode@QDeclarativeListView@@QBE?AW4HighlightRangeMode@1@XZ @ 1318 NONAME ; enum QDeclarativeListView::HighlightRangeMode QDeclarativeListView::highlightRangeMode(void) const + ?highlightResizeSpeed@QDeclarativeListView@@QBEMXZ @ 1319 NONAME ; float QDeclarativeListView::highlightResizeSpeed(void) const + ?highlightResizeSpeedChanged@QDeclarativeListView@@IAEXXZ @ 1320 NONAME ; void QDeclarativeListView::highlightResizeSpeedChanged(void) + ?highlightedText@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 1321 NONAME ; class QColor QDeclarativeSystemPalette::highlightedText(void) const + ?history@QDeclarativeWebView@@QBEPAVQWebHistory@@XZ @ 1322 NONAME ; class QWebHistory * QDeclarativeWebView::history(void) const + ?horizontalAlignmentChanged@QDeclarativeText@@IAEXW4HAlignment@1@@Z @ 1323 NONAME ; void QDeclarativeText::horizontalAlignmentChanged(enum QDeclarativeText::HAlignment) + ?horizontalAlignmentChanged@QDeclarativeTextEdit@@IAEXW4HAlignment@1@@Z @ 1324 NONAME ; void QDeclarativeTextEdit::horizontalAlignmentChanged(enum QDeclarativeTextEdit::HAlignment) + ?horizontalAlignmentChanged@QDeclarativeTextInput@@IAEXW4HAlignment@1@@Z @ 1325 NONAME ; void QDeclarativeTextInput::horizontalAlignmentChanged(enum QDeclarativeTextInput::HAlignment) + ?horizontalCenter@QDeclarativeAnchorChanges@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1326 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchorChanges::horizontalCenter(void) const + ?horizontalCenter@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1327 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::horizontalCenter(void) const + ?horizontalCenter@QDeclarativeItem@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1328 NONAME ; class QDeclarativeAnchorLine QDeclarativeItem::horizontalCenter(void) const + ?horizontalCenterChanged@QDeclarativeAnchors@@IAEXXZ @ 1329 NONAME ; void QDeclarativeAnchors::horizontalCenterChanged(void) + ?horizontalCenterOffset@QDeclarativeAnchors@@QBEMXZ @ 1330 NONAME ; float QDeclarativeAnchors::horizontalCenterOffset(void) const + ?horizontalCenterOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 1331 NONAME ; void QDeclarativeAnchors::horizontalCenterOffsetChanged(void) + ?horizontalTileMode@QDeclarativeBorderImage@@QBE?AW4TileMode@1@XZ @ 1332 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeBorderImage::horizontalTileMode(void) const + ?horizontalTileModeChanged@QDeclarativeBorderImage@@IAEXXZ @ 1333 NONAME ; void QDeclarativeBorderImage::horizontalTileModeChanged(void) + ?horizontalTileRule@QDeclarativeGridScaledImage@@QBE?AW4TileMode@QDeclarativeBorderImage@@XZ @ 1334 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::horizontalTileRule(void) const + ?horizontalVelocity@QDeclarativeFlickable@@QBEMXZ @ 1335 NONAME ; float QDeclarativeFlickable::horizontalVelocity(void) const + ?horizontalVelocityChanged@QDeclarativeFlickable@@IAEXXZ @ 1336 NONAME ; void QDeclarativeFlickable::horizontalVelocityChanged(void) + ?hoverEnterEvent@QDeclarativeMouseArea@@MAEXPAVQGraphicsSceneHoverEvent@@@Z @ 1337 NONAME ; void QDeclarativeMouseArea::hoverEnterEvent(class QGraphicsSceneHoverEvent *) + ?hoverLeaveEvent@QDeclarativeMouseArea@@MAEXPAVQGraphicsSceneHoverEvent@@@Z @ 1338 NONAME ; void QDeclarativeMouseArea::hoverLeaveEvent(class QGraphicsSceneHoverEvent *) + ?hoverMoveEvent@QDeclarativeMouseArea@@MAEXPAVQGraphicsSceneHoverEvent@@@Z @ 1339 NONAME ; void QDeclarativeMouseArea::hoverMoveEvent(class QGraphicsSceneHoverEvent *) + ?hoverMoveEvent@QDeclarativeWebView@@MAEXPAVQGraphicsSceneHoverEvent@@@Z @ 1340 NONAME ; void QDeclarativeWebView::hoverMoveEvent(class QGraphicsSceneHoverEvent *) + ?hovered@QDeclarativeMouseArea@@QBE_NXZ @ 1341 NONAME ; bool QDeclarativeMouseArea::hovered(void) const + ?hoveredChanged@QDeclarativeMouseArea@@IAEXXZ @ 1342 NONAME ; void QDeclarativeMouseArea::hoveredChanged(void) + ?html@QDeclarativeWebView@@QBE?AVQString@@XZ @ 1343 NONAME ; class QString QDeclarativeWebView::html(void) const + ?htmlChanged@QDeclarativeWebView@@IAEXXZ @ 1344 NONAME ; void QDeclarativeWebView::htmlChanged(void) + ?icon@QDeclarativeWebView@@QBE?AVQPixmap@@XZ @ 1345 NONAME ; class QPixmap QDeclarativeWebView::icon(void) const + ?iconChanged@QDeclarativeWebView@@IAEXXZ @ 1346 NONAME ; void QDeclarativeWebView::iconChanged(void) + ?idForObject@QDeclarativeDebugService@@SAHPAVQObject@@@Z @ 1347 NONAME ; int QDeclarativeDebugService::idForObject(class QObject *) + ?imageLoaded@QDeclarativeParticles@@AAEXXZ @ 1348 NONAME ; void QDeclarativeParticles::imageLoaded(void) + ?imageProvider@QDeclarativeEngine@@QBEPAVQDeclarativeImageProvider@@ABVQString@@@Z @ 1349 NONAME ; class QDeclarativeImageProvider * QDeclarativeEngine::imageProvider(class QString const &) const + ?implicitHeight@QDeclarativeItem@@QBEMXZ @ 1350 NONAME ; float QDeclarativeItem::implicitHeight(void) const + ?implicitWidth@QDeclarativeItem@@QBEMXZ @ 1351 NONAME ; float QDeclarativeItem::implicitWidth(void) const + ?importExtension@QDeclarativeEngine@@QAE_NABVQString@@0@Z @ 1352 NONAME ; bool QDeclarativeEngine::importExtension(class QString const &, class QString const &) + ?imports@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeDomImport@@@@XZ @ 1353 NONAME ; class QList QDeclarativeDomDocument::imports(void) const + ?inSync@QDeclarativeSpringFollow@@QBE_NXZ @ 1354 NONAME ; bool QDeclarativeSpringFollow::inSync(void) const + ?incrementCurrentIndex@QDeclarativeListView@@QAEXXZ @ 1355 NONAME ; void QDeclarativeListView::incrementCurrentIndex(void) + ?index@QDeclarativeProperty@@QBEHXZ @ 1356 NONAME ; int QDeclarativeProperty::index(void) const + ?index@QDeclarativeType@@QBEHXZ @ 1357 NONAME ; int QDeclarativeType::index(void) const + ?index@QMetaEnumBuilder@@QBEHXZ @ 1358 NONAME ; int QMetaEnumBuilder::index(void) const + ?index@QMetaMethodBuilder@@QBEHXZ @ 1359 NONAME ; int QMetaMethodBuilder::index(void) const + ?index@QMetaPropertyBuilder@@QBEHXZ @ 1360 NONAME ; int QMetaPropertyBuilder::index(void) const + ?indexOf@QDeclarativeVisualDataModel@@UBEHPAVQDeclarativeItem@@PAVQObject@@@Z @ 1361 NONAME ; int QDeclarativeVisualDataModel::indexOf(class QDeclarativeItem *, class QObject *) const + ?indexOf@QDeclarativeVisualItemModel@@UBEHPAVQDeclarativeItem@@PAVQObject@@@Z @ 1362 NONAME ; int QDeclarativeVisualItemModel::indexOf(class QDeclarativeItem *, class QObject *) const + ?indexOfClassInfo@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1363 NONAME ; int QMetaObjectBuilder::indexOfClassInfo(class QByteArray const &) + ?indexOfConstructor@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1364 NONAME ; int QMetaObjectBuilder::indexOfConstructor(class QByteArray const &) + ?indexOfEnumerator@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1365 NONAME ; int QMetaObjectBuilder::indexOfEnumerator(class QByteArray const &) + ?indexOfMethod@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1366 NONAME ; int QMetaObjectBuilder::indexOfMethod(class QByteArray const &) + ?indexOfProperty@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1367 NONAME ; int QMetaObjectBuilder::indexOfProperty(class QByteArray const &) + ?indexOfSignal@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1368 NONAME ; int QMetaObjectBuilder::indexOfSignal(class QByteArray const &) + ?indexOfSlot@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1369 NONAME ; int QMetaObjectBuilder::indexOfSlot(class QByteArray const &) + ?init@QDeclarativeContextPrivate@@QAEXXZ @ 1370 NONAME ; void QDeclarativeContextPrivate::init(void) + ?init@QDeclarativePaintedItem@@AAEXXZ @ 1371 NONAME ; void QDeclarativePaintedItem::init(void) + ?init@QDeclarativeWebView@@AAEXXZ @ 1372 NONAME ; void QDeclarativeWebView::init(void) + ?initialLayout@QDeclarativeWebView@@AAEXXZ @ 1373 NONAME ; void QDeclarativeWebView::initialLayout(void) + ?initialValue@QDeclarativeOpenMetaObject@@UAE?AVQVariant@@H@Z @ 1374 NONAME ; class QVariant QDeclarativeOpenMetaObject::initialValue(int) + ?initializeEngine@QDeclarativeExtensionPlugin@@UAEXPAVQDeclarativeEngine@@PBD@Z @ 1375 NONAME ; void QDeclarativeExtensionPlugin::initializeEngine(class QDeclarativeEngine *, char const *) + ?inputMask@QDeclarativeTextInput@@QBE?AVQString@@XZ @ 1376 NONAME ; class QString QDeclarativeTextInput::inputMask(void) const + ?inputMaskChanged@QDeclarativeTextInput@@IAEXABVQString@@@Z @ 1377 NONAME ; void QDeclarativeTextInput::inputMaskChanged(class QString const &) + ?inputMethodEvent@QDeclarativeItem@@MAEXPAVQInputMethodEvent@@@Z @ 1378 NONAME ; void QDeclarativeItem::inputMethodEvent(class QInputMethodEvent *) + ?inputMethodEvent@QDeclarativeTextEdit@@MAEXPAVQInputMethodEvent@@@Z @ 1379 NONAME ; void QDeclarativeTextEdit::inputMethodEvent(class QInputMethodEvent *) + ?inputMethodQuery@QDeclarativeItem@@MBE?AVQVariant@@W4InputMethodQuery@Qt@@@Z @ 1380 NONAME ; class QVariant QDeclarativeItem::inputMethodQuery(enum Qt::InputMethodQuery) const + ?inputMethodQuery@QDeclarativeTextEdit@@UBE?AVQVariant@@W4InputMethodQuery@Qt@@@Z @ 1381 NONAME ; class QVariant QDeclarativeTextEdit::inputMethodQuery(enum Qt::InputMethodQuery) const + ?inputMethodQuery@QDeclarativeTextInput@@UBE?AVQVariant@@W4InputMethodQuery@Qt@@@Z @ 1382 NONAME ; class QVariant QDeclarativeTextInput::inputMethodQuery(enum Qt::InputMethodQuery) const + ?insert@QDeclarativeListModel@@QAEXHABVQScriptValue@@@Z @ 1383 NONAME ; void QDeclarativeListModel::insert(int, class QScriptValue const &) + ?insert@QDeclarativePropertyMap@@QAEXABVQString@@ABVQVariant@@@Z @ 1384 NONAME ; void QDeclarativePropertyMap::insert(class QString const &, class QVariant const &) + ?interactiveChanged@QDeclarativeFlickable@@IAEXXZ @ 1385 NONAME ; void QDeclarativeFlickable::interactiveChanged(void) + ?interfaceIId@QDeclarativeMetaType@@SAPBDH@Z @ 1386 NONAME ; char const * QDeclarativeMetaType::interfaceIId(int) + ?interfaceIId@QDeclarativeType@@QBEPBDXZ @ 1387 NONAME ; char const * QDeclarativeType::interfaceIId(void) const + ?interpolate@QDeclarativePath@@AAEXHABVQString@@M@Z @ 1388 NONAME ; void QDeclarativePath::interpolate(int, class QString const &, float) + ?interval@QDeclarativeTimer@@QBEHXZ @ 1389 NONAME ; int QDeclarativeTimer::interval(void) const + ?invalidPacket@QPacketProtocol@@IAEXXZ @ 1390 NONAME ; void QPacketProtocol::invalidPacket(void) + ?invalidateEngines@QDeclarativeContextPrivate@@QAEXXZ @ 1391 NONAME ; void QDeclarativeContextPrivate::invalidateEngines(void) + ?isAlias@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 1392 NONAME ; bool QDeclarativeDomDynamicProperty::isAlias(void) const + ?isAtBoundaryChanged@QDeclarativeFlickable@@IAEXXZ @ 1393 NONAME ; void QDeclarativeFlickable::isAtBoundaryChanged(void) + ?isAtXBeginning@QDeclarativeFlickable@@QBE_NXZ @ 1394 NONAME ; bool QDeclarativeFlickable::isAtXBeginning(void) const + ?isAtXEnd@QDeclarativeFlickable@@QBE_NXZ @ 1395 NONAME ; bool QDeclarativeFlickable::isAtXEnd(void) const + ?isAtYBeginning@QDeclarativeFlickable@@QBE_NXZ @ 1396 NONAME ; bool QDeclarativeFlickable::isAtYBeginning(void) const + ?isAtYEnd@QDeclarativeFlickable@@QBE_NXZ @ 1397 NONAME ; bool QDeclarativeFlickable::isAtYEnd(void) const + ?isAttachedPropertyName@QDeclarativeCompiler@@SA_NABVQByteArray@@@Z @ 1398 NONAME ; bool QDeclarativeCompiler::isAttachedPropertyName(class QByteArray const &) + ?isBinding@QDeclarativeDomValue@@QBE_NXZ @ 1399 NONAME ; bool QDeclarativeDomValue::isBinding(void) const + ?isClosed@QDeclarativePath@@QBE_NXZ @ 1400 NONAME ; bool QDeclarativePath::isClosed(void) const + ?isComponent@QDeclarativeDomObject@@QBE_NXZ @ 1401 NONAME ; bool QDeclarativeDomObject::isComponent(void) const + ?isComponentComplete@QDeclarativeItem@@IBE_NXZ @ 1402 NONAME ; bool QDeclarativeItem::isComponentComplete(void) const + ?isConnected@QDeclarativeDebugClient@@QBE_NXZ @ 1403 NONAME ; bool QDeclarativeDebugClient::isConnected(void) const + ?isConnected@QDeclarativeDebugConnection@@QBE_NXZ @ 1404 NONAME ; bool QDeclarativeDebugConnection::isConnected(void) const + ?isCursorVisible@QDeclarativeTextEdit@@QBE_NXZ @ 1405 NONAME ; bool QDeclarativeTextEdit::isCursorVisible(void) const + ?isCursorVisible@QDeclarativeTextInput@@QBE_NXZ @ 1406 NONAME ; bool QDeclarativeTextInput::isCursorVisible(void) const + ?isCustomType@QDeclarativeDomObject@@QBE_NXZ @ 1407 NONAME ; bool QDeclarativeDomObject::isCustomType(void) const + ?isDebuggingEnabled@QDeclarativeDebugService@@SA_NXZ @ 1408 NONAME ; bool QDeclarativeDebugService::isDebuggingEnabled(void) + ?isDefaultProperty@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 1409 NONAME ; bool QDeclarativeDomDynamicProperty::isDefaultProperty(void) const + ?isDefaultProperty@QDeclarativeDomProperty@@QBE_NXZ @ 1410 NONAME ; bool QDeclarativeDomProperty::isDefaultProperty(void) const + ?isDesignable@QDeclarativeProperty@@QBE_NXZ @ 1411 NONAME ; bool QDeclarativeProperty::isDesignable(void) const + ?isDesignable@QMetaPropertyBuilder@@QBE_NXZ @ 1412 NONAME ; bool QMetaPropertyBuilder::isDesignable(void) const + ?isDynamic@QMetaPropertyBuilder@@QBE_NXZ @ 1413 NONAME ; bool QMetaPropertyBuilder::isDynamic(void) const + ?isEditable@QMetaPropertyBuilder@@QBE_NXZ @ 1414 NONAME ; bool QMetaPropertyBuilder::isEditable(void) const + ?isEmpty@QDeclarativePropertyMap@@QBE_NXZ @ 1415 NONAME ; bool QDeclarativePropertyMap::isEmpty(void) const + ?isEmpty@QPacket@@QBE_NXZ @ 1416 NONAME ; bool QPacket::isEmpty(void) const + ?isEnabled@QDeclarativeDebugClient@@QBE_NXZ @ 1417 NONAME ; bool QDeclarativeDebugClient::isEnabled(void) const + ?isEnabled@QDeclarativeDebugService@@QBE_NXZ @ 1418 NONAME ; bool QDeclarativeDebugService::isEnabled(void) const + ?isEnabled@QDeclarativeMouseArea@@QBE_NXZ @ 1419 NONAME ; bool QDeclarativeMouseArea::isEnabled(void) const + ?isEnumOrFlag@QMetaPropertyBuilder@@QBE_NXZ @ 1420 NONAME ; bool QMetaPropertyBuilder::isEnumOrFlag(void) const + ?isError@QDeclarativeCompiler@@QBE_NXZ @ 1421 NONAME ; bool QDeclarativeCompiler::isError(void) const + ?isError@QDeclarativeComponent@@QBE_NXZ @ 1422 NONAME ; bool QDeclarativeComponent::isError(void) const + ?isExplicit@QDeclarativePropertyChanges@@QBE_NXZ @ 1423 NONAME ; bool QDeclarativePropertyChanges::isExplicit(void) const + ?isFlag@QMetaEnumBuilder@@QBE_NXZ @ 1424 NONAME ; bool QMetaEnumBuilder::isFlag(void) const + ?isFlicking@QDeclarativeFlickable@@QBE_NXZ @ 1425 NONAME ; bool QDeclarativeFlickable::isFlicking(void) const + ?isInteractive@QDeclarativeFlickable@@QBE_NXZ @ 1426 NONAME ; bool QDeclarativeFlickable::isInteractive(void) const + ?isInterface@QDeclarativeMetaType@@SA_NH@Z @ 1427 NONAME ; bool QDeclarativeMetaType::isInterface(int) + ?isInterface@QDeclarativeType@@QBE_NXZ @ 1428 NONAME ; bool QDeclarativeType::isInterface(void) const + ?isInvalid@QDeclarativeDomValue@@QBE_NXZ @ 1429 NONAME ; bool QDeclarativeDomValue::isInvalid(void) const + ?isKey@QDeclarativeXmlListModelRole@@QBE_NXZ @ 1430 NONAME ; bool QDeclarativeXmlListModelRole::isKey(void) const + ?isList@QDeclarativeCustomParserProperty@@QBE_NXZ @ 1431 NONAME ; bool QDeclarativeCustomParserProperty::isList(void) const + ?isList@QDeclarativeDomValue@@QBE_NXZ @ 1432 NONAME ; bool QDeclarativeDomValue::isList(void) const + ?isList@QDeclarativeMetaType@@SA_NH@Z @ 1433 NONAME ; bool QDeclarativeMetaType::isList(int) + ?isLiteral@QDeclarativeDomValue@@QBE_NXZ @ 1434 NONAME ; bool QDeclarativeDomValue::isLiteral(void) const + ?isLoading@QDeclarativeComponent@@QBE_NXZ @ 1435 NONAME ; bool QDeclarativeComponent::isLoading(void) const + ?isLoading@QDeclarativePixmapReply@@ABE_NXZ @ 1436 NONAME ; bool QDeclarativePixmapReply::isLoading(void) const + ?isMoving@QDeclarativeFlickable@@QBE_NXZ @ 1437 NONAME ; bool QDeclarativeFlickable::isMoving(void) const + ?isNull@QDeclarativeComponent@@QBE_NXZ @ 1438 NONAME ; bool QDeclarativeComponent::isNull(void) const + ?isNull@QDeclarativeScaleGrid@@QBE_NXZ @ 1439 NONAME ; bool QDeclarativeScaleGrid::isNull(void) const + ?isObject@QDeclarativeDomValue@@QBE_NXZ @ 1440 NONAME ; bool QDeclarativeDomValue::isObject(void) const + ?isPaused@QDeclarativeAnimatedImage@@QBE_NXZ @ 1441 NONAME ; bool QDeclarativeAnimatedImage::isPaused(void) const + ?isPlaying@QDeclarativeAnimatedImage@@QBE_NXZ @ 1442 NONAME ; bool QDeclarativeAnimatedImage::isPlaying(void) const + ?isProperty@QDeclarativeProperty@@QBE_NXZ @ 1443 NONAME ; bool QDeclarativeProperty::isProperty(void) const + ?isQObject@QDeclarativeMetaType@@SA_NH@Z @ 1444 NONAME ; bool QDeclarativeMetaType::isQObject(int) + ?isReadOnly@QDeclarativeTextEdit@@QBE_NXZ @ 1445 NONAME ; bool QDeclarativeTextEdit::isReadOnly(void) const + ?isReadOnly@QDeclarativeTextInput@@QBE_NXZ @ 1446 NONAME ; bool QDeclarativeTextInput::isReadOnly(void) const + ?isReadable@QMetaPropertyBuilder@@QBE_NXZ @ 1447 NONAME ; bool QMetaPropertyBuilder::isReadable(void) const + ?isReady@QDeclarativeComponent@@QBE_NXZ @ 1448 NONAME ; bool QDeclarativeComponent::isReady(void) const + ?isRepeating@QDeclarativeTimer@@QBE_NXZ @ 1449 NONAME ; bool QDeclarativeTimer::isRepeating(void) const + ?isResettable@QDeclarativeProperty@@QBE_NXZ @ 1450 NONAME ; bool QDeclarativeProperty::isResettable(void) const + ?isResettable@QMetaPropertyBuilder@@QBE_NXZ @ 1451 NONAME ; bool QMetaPropertyBuilder::isResettable(void) const + ?isReversable@QDeclarativeAnchorChanges@@UAE_NXZ @ 1452 NONAME ; bool QDeclarativeAnchorChanges::isReversable(void) + ?isReversable@QDeclarativeParentChange@@UAE_NXZ @ 1453 NONAME ; bool QDeclarativeParentChange::isReversable(void) + ?isRunning@QDeclarativeTimer@@QBE_NXZ @ 1454 NONAME ; bool QDeclarativeTimer::isRunning(void) const + ?isScriptable@QMetaPropertyBuilder@@QBE_NXZ @ 1455 NONAME ; bool QMetaPropertyBuilder::isScriptable(void) const + ?isSignalProperty@QDeclarativeProperty@@QBE_NXZ @ 1456 NONAME ; bool QDeclarativeProperty::isSignalProperty(void) const + ?isSignalPropertyName@QDeclarativeCompiler@@SA_NABVQByteArray@@@Z @ 1457 NONAME ; bool QDeclarativeCompiler::isSignalPropertyName(class QByteArray const &) + ?isStored@QMetaPropertyBuilder@@QBE_NXZ @ 1458 NONAME ; bool QMetaPropertyBuilder::isStored(void) const + ?isUser@QMetaPropertyBuilder@@QBE_NXZ @ 1459 NONAME ; bool QMetaPropertyBuilder::isUser(void) const + ?isValid@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 1460 NONAME ; bool QDeclarativeDomDynamicProperty::isValid(void) const + ?isValid@QDeclarativeDomObject@@QBE_NXZ @ 1461 NONAME ; bool QDeclarativeDomObject::isValid(void) const + ?isValid@QDeclarativeDomProperty@@QBE_NXZ @ 1462 NONAME ; bool QDeclarativeDomProperty::isValid(void) const + ?isValid@QDeclarativeError@@QBE_NXZ @ 1463 NONAME ; bool QDeclarativeError::isValid(void) const + ?isValid@QDeclarativeGridScaledImage@@QBE_NXZ @ 1464 NONAME ; bool QDeclarativeGridScaledImage::isValid(void) const + ?isValid@QDeclarativeListAccessor@@QBE_NXZ @ 1465 NONAME ; bool QDeclarativeListAccessor::isValid(void) const + ?isValid@QDeclarativeListReference@@QBE_NXZ @ 1466 NONAME ; bool QDeclarativeListReference::isValid(void) const + ?isValid@QDeclarativePen@@QAE_NXZ @ 1467 NONAME ; bool QDeclarativePen::isValid(void) + ?isValid@QDeclarativeProperty@@QBE_NXZ @ 1468 NONAME ; bool QDeclarativeProperty::isValid(void) const + ?isValid@QDeclarativeVisualDataModel@@UBE_NXZ @ 1469 NONAME ; bool QDeclarativeVisualDataModel::isValid(void) const + ?isValid@QDeclarativeVisualItemModel@@UBE_NXZ @ 1470 NONAME ; bool QDeclarativeVisualItemModel::isValid(void) const + ?isValid@QDeclarativeXmlListModelRole@@QAE_NXZ @ 1471 NONAME ; bool QDeclarativeXmlListModelRole::isValid(void) + ?isValidId@QDeclarativeCompiler@@SA_NABVQString@@@Z @ 1472 NONAME ; bool QDeclarativeCompiler::isValidId(class QString const &) + ?isValueInterceptor@QDeclarativeDomValue@@QBE_NXZ @ 1473 NONAME ; bool QDeclarativeDomValue::isValueInterceptor(void) const + ?isValueSource@QDeclarativeDomValue@@QBE_NXZ @ 1474 NONAME ; bool QDeclarativeDomValue::isValueSource(void) const + ?isWaiting@QDeclarativeDebugQuery@@QBE_NXZ @ 1475 NONAME ; bool QDeclarativeDebugQuery::isWaiting(void) const + ?isWhenKnown@QDeclarativeState@@QBE_NXZ @ 1476 NONAME ; bool QDeclarativeState::isWhenKnown(void) const + ?isWrapEnabled@QDeclarativeGridView@@QBE_NXZ @ 1477 NONAME ; bool QDeclarativeGridView::isWrapEnabled(void) const + ?isWrapEnabled@QDeclarativeListView@@QBE_NXZ @ 1478 NONAME ; bool QDeclarativeListView::isWrapEnabled(void) const + ?isWritable@QDeclarativeProperty@@QBE_NXZ @ 1479 NONAME ; bool QDeclarativeProperty::isWritable(void) const + ?isWritable@QMetaPropertyBuilder@@QBE_NXZ @ 1480 NONAME ; bool QMetaPropertyBuilder::isWritable(void) const + ?item@QDeclarativeLoader@@QBEPAVQGraphicsObject@@XZ @ 1481 NONAME ; class QGraphicsObject * QDeclarativeLoader::item(void) const + ?item@QDeclarativeVisualDataModel@@QAEPAVQDeclarativeItem@@HABVQByteArray@@_N@Z @ 1482 NONAME ; class QDeclarativeItem * QDeclarativeVisualDataModel::item(int, class QByteArray const &, bool) + ?item@QDeclarativeVisualDataModel@@UAEPAVQDeclarativeItem@@H_N@Z @ 1483 NONAME ; class QDeclarativeItem * QDeclarativeVisualDataModel::item(int, bool) + ?item@QDeclarativeVisualItemModel@@UAEPAVQDeclarativeItem@@H_N@Z @ 1484 NONAME ; class QDeclarativeItem * QDeclarativeVisualItemModel::item(int, bool) + ?itemChange@QDeclarativeBasePositioner@@MAE?AVQVariant@@W4GraphicsItemChange@QGraphicsItem@@ABV2@@Z @ 1485 NONAME ; class QVariant QDeclarativeBasePositioner::itemChange(enum QGraphicsItem::GraphicsItemChange, class QVariant const &) + ?itemChange@QDeclarativeGraphicsObjectContainer@@MAE?AVQVariant@@W4GraphicsItemChange@QGraphicsItem@@ABV2@@Z @ 1486 NONAME ; class QVariant QDeclarativeGraphicsObjectContainer::itemChange(enum QGraphicsItem::GraphicsItemChange, class QVariant const &) + ?itemChange@QDeclarativeItem@@MAE?AVQVariant@@W4GraphicsItemChange@QGraphicsItem@@ABV2@@Z @ 1487 NONAME ; class QVariant QDeclarativeItem::itemChange(enum QGraphicsItem::GraphicsItemChange, class QVariant const &) + ?itemChange@QDeclarativeLoader@@MAE?AVQVariant@@W4GraphicsItemChange@QGraphicsItem@@ABV2@@Z @ 1488 NONAME ; class QVariant QDeclarativeLoader::itemChange(enum QGraphicsItem::GraphicsItemChange, class QVariant const &) + ?itemChange@QDeclarativeRepeater@@MAE?AVQVariant@@W4GraphicsItemChange@QGraphicsItem@@ABV2@@Z @ 1489 NONAME ; class QVariant QDeclarativeRepeater::itemChange(enum QGraphicsItem::GraphicsItemChange, class QVariant const &) + ?itemChanged@QDeclarativeLoader@@IAEXXZ @ 1490 NONAME ; void QDeclarativeLoader::itemChanged(void) + ?itemsChanged@QListModelInterface@@IAEXHHABV?$QList@H@@@Z @ 1491 NONAME ; void QListModelInterface::itemsChanged(int, int, class QList const &) + ?itemsInserted@QDeclarativeGridView@@AAEXHH@Z @ 1492 NONAME ; void QDeclarativeGridView::itemsInserted(int, int) + ?itemsInserted@QDeclarativeListView@@AAEXHH@Z @ 1493 NONAME ; void QDeclarativeListView::itemsInserted(int, int) + ?itemsInserted@QDeclarativePathView@@AAEXHH@Z @ 1494 NONAME ; void QDeclarativePathView::itemsInserted(int, int) + ?itemsInserted@QDeclarativeRepeater@@AAEXHH@Z @ 1495 NONAME ; void QDeclarativeRepeater::itemsInserted(int, int) + ?itemsInserted@QDeclarativeVisualModel@@IAEXHH@Z @ 1496 NONAME ; void QDeclarativeVisualModel::itemsInserted(int, int) + ?itemsInserted@QListModelInterface@@IAEXHH@Z @ 1497 NONAME ; void QListModelInterface::itemsInserted(int, int) + ?itemsMoved@QDeclarativeGridView@@AAEXHHH@Z @ 1498 NONAME ; void QDeclarativeGridView::itemsMoved(int, int, int) + ?itemsMoved@QDeclarativeListView@@AAEXHHH@Z @ 1499 NONAME ; void QDeclarativeListView::itemsMoved(int, int, int) + ?itemsMoved@QDeclarativeRepeater@@AAEXHHH@Z @ 1500 NONAME ; void QDeclarativeRepeater::itemsMoved(int, int, int) + ?itemsMoved@QDeclarativeVisualModel@@IAEXHHH@Z @ 1501 NONAME ; void QDeclarativeVisualModel::itemsMoved(int, int, int) + ?itemsMoved@QListModelInterface@@IAEXHHH@Z @ 1502 NONAME ; void QListModelInterface::itemsMoved(int, int, int) + ?itemsRemoved@QDeclarativeGridView@@AAEXHH@Z @ 1503 NONAME ; void QDeclarativeGridView::itemsRemoved(int, int) + ?itemsRemoved@QDeclarativeListView@@AAEXHH@Z @ 1504 NONAME ; void QDeclarativeListView::itemsRemoved(int, int) + ?itemsRemoved@QDeclarativePathView@@AAEXHH@Z @ 1505 NONAME ; void QDeclarativePathView::itemsRemoved(int, int) + ?itemsRemoved@QDeclarativeRepeater@@AAEXHH@Z @ 1506 NONAME ; void QDeclarativeRepeater::itemsRemoved(int, int) + ?itemsRemoved@QDeclarativeVisualModel@@IAEXHH@Z @ 1507 NONAME ; void QDeclarativeVisualModel::itemsRemoved(int, int) + ?itemsRemoved@QListModelInterface@@IAEXHH@Z @ 1508 NONAME ; void QListModelInterface::itemsRemoved(int, int) + ?javaScriptAlert@QDeclarativeWebPage@@MAEXPAVQWebFrame@@ABVQString@@@Z @ 1509 NONAME ; void QDeclarativeWebPage::javaScriptAlert(class QWebFrame *, class QString const &) + ?javaScriptConfirm@QDeclarativeWebPage@@MAE_NPAVQWebFrame@@ABVQString@@@Z @ 1510 NONAME ; bool QDeclarativeWebPage::javaScriptConfirm(class QWebFrame *, class QString const &) + ?javaScriptConsoleMessage@QDeclarativeWebPage@@MAEXABVQString@@H0@Z @ 1511 NONAME ; void QDeclarativeWebPage::javaScriptConsoleMessage(class QString const &, int, class QString const &) + ?javaScriptPrompt@QDeclarativeWebPage@@MAE_NPAVQWebFrame@@ABVQString@@1PAV3@@Z @ 1512 NONAME ; bool QDeclarativeWebPage::javaScriptPrompt(class QWebFrame *, class QString const &, class QString const &, class QString *) + ?javaScriptWindowObjects@QDeclarativeWebView@@QAE?AU?$QDeclarativeListProperty@VQObject@@@@XZ @ 1513 NONAME ; struct QDeclarativeListProperty QDeclarativeWebView::javaScriptWindowObjects(void) + ?keepMouseGrab@QDeclarativeItem@@QBE_NXZ @ 1514 NONAME ; bool QDeclarativeItem::keepMouseGrab(void) const + ?key@QMetaEnumBuilder@@QBE?AVQByteArray@@H@Z @ 1515 NONAME ; class QByteArray QMetaEnumBuilder::key(int) const + ?keyCount@QMetaEnumBuilder@@QBEHXZ @ 1516 NONAME ; int QMetaEnumBuilder::keyCount(void) const + ?keyPressEvent@QDeclarativeGridView@@MAEXPAVQKeyEvent@@@Z @ 1517 NONAME ; void QDeclarativeGridView::keyPressEvent(class QKeyEvent *) + ?keyPressEvent@QDeclarativeItem@@MAEXPAVQKeyEvent@@@Z @ 1518 NONAME ; void QDeclarativeItem::keyPressEvent(class QKeyEvent *) + ?keyPressEvent@QDeclarativeListView@@MAEXPAVQKeyEvent@@@Z @ 1519 NONAME ; void QDeclarativeListView::keyPressEvent(class QKeyEvent *) + ?keyPressEvent@QDeclarativeTextEdit@@MAEXPAVQKeyEvent@@@Z @ 1520 NONAME ; void QDeclarativeTextEdit::keyPressEvent(class QKeyEvent *) + ?keyPressEvent@QDeclarativeTextInput@@MAEXPAVQKeyEvent@@@Z @ 1521 NONAME ; void QDeclarativeTextInput::keyPressEvent(class QKeyEvent *) + ?keyPressEvent@QDeclarativeWebView@@MAEXPAVQKeyEvent@@@Z @ 1522 NONAME ; void QDeclarativeWebView::keyPressEvent(class QKeyEvent *) + ?keyReleaseEvent@QDeclarativeItem@@MAEXPAVQKeyEvent@@@Z @ 1523 NONAME ; void QDeclarativeItem::keyReleaseEvent(class QKeyEvent *) + ?keyReleaseEvent@QDeclarativeTextEdit@@MAEXPAVQKeyEvent@@@Z @ 1524 NONAME ; void QDeclarativeTextEdit::keyReleaseEvent(class QKeyEvent *) + ?keyReleaseEvent@QDeclarativeWebView@@MAEXPAVQKeyEvent@@@Z @ 1525 NONAME ; void QDeclarativeWebView::keyReleaseEvent(class QKeyEvent *) + ?keys@QDeclarativePropertyMap@@QBE?AVQStringList@@XZ @ 1526 NONAME ; class QStringList QDeclarativePropertyMap::keys(void) const + ?layout@QDeclarativeGridView@@AAEXXZ @ 1527 NONAME ; void QDeclarativeGridView::layout(void) + ?left@QDeclarativeAnchorChanges@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1528 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchorChanges::left(void) const + ?left@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1529 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::left(void) const + ?left@QDeclarativeItem@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1530 NONAME ; class QDeclarativeAnchorLine QDeclarativeItem::left(void) const + ?left@QDeclarativeScaleGrid@@QBEHXZ @ 1531 NONAME ; int QDeclarativeScaleGrid::left(void) const + ?leftChanged@QDeclarativeAnchors@@IAEXXZ @ 1532 NONAME ; void QDeclarativeAnchors::leftChanged(void) + ?leftMargin@QDeclarativeAnchors@@QBEMXZ @ 1533 NONAME ; float QDeclarativeAnchors::leftMargin(void) const + ?leftMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 1534 NONAME ; void QDeclarativeAnchors::leftMarginChanged(void) + ?length@QDeclarativeDomDynamicProperty@@QBEHXZ @ 1535 NONAME ; int QDeclarativeDomDynamicProperty::length(void) const + ?length@QDeclarativeDomList@@QBEHXZ @ 1536 NONAME ; int QDeclarativeDomList::length(void) const + ?length@QDeclarativeDomObject@@QBEHXZ @ 1537 NONAME ; int QDeclarativeDomObject::length(void) const + ?length@QDeclarativeDomProperty@@QBEHXZ @ 1538 NONAME ; int QDeclarativeDomProperty::length(void) const + ?length@QDeclarativeDomValue@@QBEHXZ @ 1539 NONAME ; int QDeclarativeDomValue::length(void) const + ?lifeSpan@QDeclarativeParticles@@QBEHXZ @ 1540 NONAME ; int QDeclarativeParticles::lifeSpan(void) const + ?lifeSpanChanged@QDeclarativeParticles@@IAEXXZ @ 1541 NONAME ; void QDeclarativeParticles::lifeSpanChanged(void) + ?lifeSpanDeviation@QDeclarativeParticles@@QBEHXZ @ 1542 NONAME ; int QDeclarativeParticles::lifeSpanDeviation(void) const + ?lifeSpanDeviationChanged@QDeclarativeParticles@@IAEXXZ @ 1543 NONAME ; void QDeclarativeParticles::lifeSpanDeviationChanged(void) + ?light@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 1544 NONAME ; class QColor QDeclarativeSystemPalette::light(void) const + ?line@QDeclarativeError@@QBEHXZ @ 1545 NONAME ; int QDeclarativeError::line(void) const + ?lineNumber@QDeclarativeDebugFileReference@@QBEHXZ @ 1546 NONAME ; int QDeclarativeDebugFileReference::lineNumber(void) const + ?lineNumber@QDeclarativeExpression@@QBEHXZ @ 1547 NONAME ; int QDeclarativeExpression::lineNumber(void) const + ?linkActivated@QDeclarativeText@@IAEXABVQString@@@Z @ 1548 NONAME ; void QDeclarativeText::linkActivated(class QString const &) + ?list@QDeclarativeListAccessor@@QBE?AVQVariant@@XZ @ 1549 NONAME ; class QVariant QDeclarativeListAccessor::list(void) const + ?listElementType@QDeclarativeListReference@@QBEPBUQMetaObject@@XZ @ 1550 NONAME ; struct QMetaObject const * QDeclarativeListReference::listElementType(void) const + ?listType@QDeclarativeMetaType@@SAHH@Z @ 1551 NONAME ; int QDeclarativeMetaType::listType(int) + ?literal@QDeclarativeDomValueLiteral@@QBE?AVQString@@XZ @ 1552 NONAME ; class QString QDeclarativeDomValueLiteral::literal(void) const + ?load@QDeclarativeBorderImage@@MAEXXZ @ 1553 NONAME ; void QDeclarativeBorderImage::load(void) + ?load@QDeclarativeDomDocument@@QAE_NPAVQDeclarativeEngine@@ABVQByteArray@@ABVQUrl@@@Z @ 1554 NONAME ; bool QDeclarativeDomDocument::load(class QDeclarativeEngine *, class QByteArray const &, class QUrl const &) + ?load@QDeclarativeImageBase@@MAEXXZ @ 1555 NONAME ; void QDeclarativeImageBase::load(void) + ?load@QDeclarativeWebView@@QAEXABVQNetworkRequest@@W4Operation@QNetworkAccessManager@@ABVQByteArray@@@Z @ 1556 NONAME ; void QDeclarativeWebView::load(class QNetworkRequest const &, enum QNetworkAccessManager::Operation, class QByteArray const &) + ?loadCursorDelegate@QDeclarativeTextEdit@@AAEXXZ @ 1557 NONAME ; void QDeclarativeTextEdit::loadCursorDelegate(void) + ?loadFailed@QDeclarativeWebView@@IAEXXZ @ 1558 NONAME ; void QDeclarativeWebView::loadFailed(void) + ?loadFinished@QDeclarativeWebView@@IAEXXZ @ 1559 NONAME ; void QDeclarativeWebView::loadFinished(void) + ?loadStarted@QDeclarativeWebView@@IAEXXZ @ 1560 NONAME ; void QDeclarativeWebView::loadStarted(void) + ?loadUrl@QDeclarativeComponent@@QAEXABVQUrl@@@Z @ 1561 NONAME ; void QDeclarativeComponent::loadUrl(class QUrl const &) + ?location@QDeclarativeCustomParserNode@@QBE?AULocation@QDeclarativeParser@@XZ @ 1562 NONAME ; struct QDeclarativeParser::Location QDeclarativeCustomParserNode::location(void) const + ?location@QDeclarativeCustomParserProperty@@QBE?AULocation@QDeclarativeParser@@XZ @ 1563 NONAME ; struct QDeclarativeParser::Location QDeclarativeCustomParserProperty::location(void) const + ?longStyle@QDeclarativeDateTimeFormatter@@QBE_NXZ @ 1564 NONAME ; bool QDeclarativeDateTimeFormatter::longStyle(void) const + ?majorVersion@QDeclarativeType@@QBEHXZ @ 1565 NONAME ; int QDeclarativeType::majorVersion(void) const + ?margins@QDeclarativeAnchors@@QBEMXZ @ 1566 NONAME ; float QDeclarativeAnchors::margins(void) const + ?marginsChanged@QDeclarativeAnchors@@IAEXXZ @ 1567 NONAME ; void QDeclarativeAnchors::marginsChanged(void) + ?mass@QDeclarativeSpringFollow@@QBEMXZ @ 1568 NONAME ; float QDeclarativeSpringFollow::mass(void) const + ?massChanged@QDeclarativeSpringFollow@@IAEXXZ @ 1569 NONAME ; void QDeclarativeSpringFollow::massChanged(void) + ?maxLength@QDeclarativeTextInput@@QBEHXZ @ 1570 NONAME ; int QDeclarativeTextInput::maxLength(void) const + ?maxXExtent@QDeclarativeFlickable@@MBEMXZ @ 1571 NONAME ; float QDeclarativeFlickable::maxXExtent(void) const + ?maxXExtent@QDeclarativeGridView@@MBEMXZ @ 1572 NONAME ; float QDeclarativeGridView::maxXExtent(void) const + ?maxXExtent@QDeclarativeListView@@MBEMXZ @ 1573 NONAME ; float QDeclarativeListView::maxXExtent(void) const + ?maxYExtent@QDeclarativeFlickable@@MBEMXZ @ 1574 NONAME ; float QDeclarativeFlickable::maxYExtent(void) const + ?maxYExtent@QDeclarativeGridView@@MBEMXZ @ 1575 NONAME ; float QDeclarativeGridView::maxYExtent(void) const + ?maxYExtent@QDeclarativeListView@@MBEMXZ @ 1576 NONAME ; float QDeclarativeListView::maxYExtent(void) const + ?maximumEasingTime@QDeclarativeEaseFollow@@QBEMXZ @ 1577 NONAME ; float QDeclarativeEaseFollow::maximumEasingTime(void) const + ?maximumEasingTimeChanged@QDeclarativeEaseFollow@@IAEXXZ @ 1578 NONAME ; void QDeclarativeEaseFollow::maximumEasingTimeChanged(void) + ?maximumFlickVelocity@QDeclarativeFlickable@@QBEMXZ @ 1579 NONAME ; float QDeclarativeFlickable::maximumFlickVelocity(void) const + ?maximumFlickVelocityChanged@QDeclarativeFlickable@@IAEXXZ @ 1580 NONAME ; void QDeclarativeFlickable::maximumFlickVelocityChanged(void) + ?maximumLengthChanged@QDeclarativeTextInput@@IAEXH@Z @ 1581 NONAME ; void QDeclarativeTextInput::maximumLengthChanged(int) + ?maximumPacketSize@QPacketProtocol@@QBEHXZ @ 1582 NONAME ; int QPacketProtocol::maximumPacketSize(void) const + ?maximumXChanged@QDeclarativeDrag@@IAEXXZ @ 1583 NONAME ; void QDeclarativeDrag::maximumXChanged(void) + ?maximumYChanged@QDeclarativeDrag@@IAEXXZ @ 1584 NONAME ; void QDeclarativeDrag::maximumYChanged(void) + ?mergeDynamicMetaProperties@QDeclarativeCompiler@@AAE_NPAVObject@QDeclarativeParser@@@Z @ 1585 NONAME ; bool QDeclarativeCompiler::mergeDynamicMetaProperties(class QDeclarativeParser::Object *) + ?messageReceived@QDeclarativeDebugClient@@MAEXABVQByteArray@@@Z @ 1586 NONAME ; void QDeclarativeDebugClient::messageReceived(class QByteArray const &) + ?messageReceived@QDeclarativeDebugService@@MAEXABVQByteArray@@@Z @ 1587 NONAME ; void QDeclarativeDebugService::messageReceived(class QByteArray const &) + ?metaCall@QDeclarativeOpenMetaObject@@MAEHW4Call@QMetaObject@@HPAPAX@Z @ 1588 NONAME ; int QDeclarativeOpenMetaObject::metaCall(enum QMetaObject::Call, int, void * *) + ?metaObject@QDeclarativeAnchorChanges@@UBEPBUQMetaObject@@XZ @ 1589 NONAME ; struct QMetaObject const * QDeclarativeAnchorChanges::metaObject(void) const + ?metaObject@QDeclarativeAnchors@@UBEPBUQMetaObject@@XZ @ 1590 NONAME ; struct QMetaObject const * QDeclarativeAnchors::metaObject(void) const + ?metaObject@QDeclarativeAnimatedImage@@UBEPBUQMetaObject@@XZ @ 1591 NONAME ; struct QMetaObject const * QDeclarativeAnimatedImage::metaObject(void) const + ?metaObject@QDeclarativeBasePositioner@@UBEPBUQMetaObject@@XZ @ 1592 NONAME ; struct QMetaObject const * QDeclarativeBasePositioner::metaObject(void) const + ?metaObject@QDeclarativeBehavior@@UBEPBUQMetaObject@@XZ @ 1593 NONAME ; struct QMetaObject const * QDeclarativeBehavior::metaObject(void) const + ?metaObject@QDeclarativeBind@@UBEPBUQMetaObject@@XZ @ 1594 NONAME ; struct QMetaObject const * QDeclarativeBind::metaObject(void) const + ?metaObject@QDeclarativeBorderImage@@UBEPBUQMetaObject@@XZ @ 1595 NONAME ; struct QMetaObject const * QDeclarativeBorderImage::metaObject(void) const + ?metaObject@QDeclarativeColumn@@UBEPBUQMetaObject@@XZ @ 1596 NONAME ; struct QMetaObject const * QDeclarativeColumn::metaObject(void) const + ?metaObject@QDeclarativeComponent@@UBEPBUQMetaObject@@XZ @ 1597 NONAME ; struct QMetaObject const * QDeclarativeComponent::metaObject(void) const + ?metaObject@QDeclarativeConnections@@UBEPBUQMetaObject@@XZ @ 1598 NONAME ; struct QMetaObject const * QDeclarativeConnections::metaObject(void) const + ?metaObject@QDeclarativeContext@@UBEPBUQMetaObject@@XZ @ 1599 NONAME ; struct QMetaObject const * QDeclarativeContext::metaObject(void) const + ?metaObject@QDeclarativeCurve@@UBEPBUQMetaObject@@XZ @ 1600 NONAME ; struct QMetaObject const * QDeclarativeCurve::metaObject(void) const + ?metaObject@QDeclarativeDateTimeFormatter@@UBEPBUQMetaObject@@XZ @ 1601 NONAME ; struct QMetaObject const * QDeclarativeDateTimeFormatter::metaObject(void) const + ?metaObject@QDeclarativeDebugClient@@UBEPBUQMetaObject@@XZ @ 1602 NONAME ; struct QMetaObject const * QDeclarativeDebugClient::metaObject(void) const + ?metaObject@QDeclarativeDebugConnection@@UBEPBUQMetaObject@@XZ @ 1603 NONAME ; struct QMetaObject const * QDeclarativeDebugConnection::metaObject(void) const + ?metaObject@QDeclarativeDebugEnginesQuery@@UBEPBUQMetaObject@@XZ @ 1604 NONAME ; struct QMetaObject const * QDeclarativeDebugEnginesQuery::metaObject(void) const + ?metaObject@QDeclarativeDebugExpressionQuery@@UBEPBUQMetaObject@@XZ @ 1605 NONAME ; struct QMetaObject const * QDeclarativeDebugExpressionQuery::metaObject(void) const + ?metaObject@QDeclarativeDebugObjectExpressionWatch@@UBEPBUQMetaObject@@XZ @ 1606 NONAME ; struct QMetaObject const * QDeclarativeDebugObjectExpressionWatch::metaObject(void) const + ?metaObject@QDeclarativeDebugObjectQuery@@UBEPBUQMetaObject@@XZ @ 1607 NONAME ; struct QMetaObject const * QDeclarativeDebugObjectQuery::metaObject(void) const + ?metaObject@QDeclarativeDebugPropertyWatch@@UBEPBUQMetaObject@@XZ @ 1608 NONAME ; struct QMetaObject const * QDeclarativeDebugPropertyWatch::metaObject(void) const + ?metaObject@QDeclarativeDebugQuery@@UBEPBUQMetaObject@@XZ @ 1609 NONAME ; struct QMetaObject const * QDeclarativeDebugQuery::metaObject(void) const + ?metaObject@QDeclarativeDebugRootContextQuery@@UBEPBUQMetaObject@@XZ @ 1610 NONAME ; struct QMetaObject const * QDeclarativeDebugRootContextQuery::metaObject(void) const + ?metaObject@QDeclarativeDebugService@@UBEPBUQMetaObject@@XZ @ 1611 NONAME ; struct QMetaObject const * QDeclarativeDebugService::metaObject(void) const + ?metaObject@QDeclarativeDebugWatch@@UBEPBUQMetaObject@@XZ @ 1612 NONAME ; struct QMetaObject const * QDeclarativeDebugWatch::metaObject(void) const + ?metaObject@QDeclarativeDrag@@UBEPBUQMetaObject@@XZ @ 1613 NONAME ; struct QMetaObject const * QDeclarativeDrag::metaObject(void) const + ?metaObject@QDeclarativeEaseFollow@@UBEPBUQMetaObject@@XZ @ 1614 NONAME ; struct QMetaObject const * QDeclarativeEaseFollow::metaObject(void) const + ?metaObject@QDeclarativeEngine@@UBEPBUQMetaObject@@XZ @ 1615 NONAME ; struct QMetaObject const * QDeclarativeEngine::metaObject(void) const + ?metaObject@QDeclarativeEngineDebug@@UBEPBUQMetaObject@@XZ @ 1616 NONAME ; struct QMetaObject const * QDeclarativeEngineDebug::metaObject(void) const + ?metaObject@QDeclarativeExpression@@UBEPBUQMetaObject@@XZ @ 1617 NONAME ; struct QMetaObject const * QDeclarativeExpression::metaObject(void) const + ?metaObject@QDeclarativeExtensionPlugin@@UBEPBUQMetaObject@@XZ @ 1618 NONAME ; struct QMetaObject const * QDeclarativeExtensionPlugin::metaObject(void) const + ?metaObject@QDeclarativeFlickable@@UBEPBUQMetaObject@@XZ @ 1619 NONAME ; struct QMetaObject const * QDeclarativeFlickable::metaObject(void) const + ?metaObject@QDeclarativeFlipable@@UBEPBUQMetaObject@@XZ @ 1620 NONAME ; struct QMetaObject const * QDeclarativeFlipable::metaObject(void) const + ?metaObject@QDeclarativeFlow@@UBEPBUQMetaObject@@XZ @ 1621 NONAME ; struct QMetaObject const * QDeclarativeFlow::metaObject(void) const + ?metaObject@QDeclarativeFocusPanel@@UBEPBUQMetaObject@@XZ @ 1622 NONAME ; struct QMetaObject const * QDeclarativeFocusPanel::metaObject(void) const + ?metaObject@QDeclarativeFocusScope@@UBEPBUQMetaObject@@XZ @ 1623 NONAME ; struct QMetaObject const * QDeclarativeFocusScope::metaObject(void) const + ?metaObject@QDeclarativeFontLoader@@UBEPBUQMetaObject@@XZ @ 1624 NONAME ; struct QMetaObject const * QDeclarativeFontLoader::metaObject(void) const + ?metaObject@QDeclarativeGradient@@UBEPBUQMetaObject@@XZ @ 1625 NONAME ; struct QMetaObject const * QDeclarativeGradient::metaObject(void) const + ?metaObject@QDeclarativeGradientStop@@UBEPBUQMetaObject@@XZ @ 1626 NONAME ; struct QMetaObject const * QDeclarativeGradientStop::metaObject(void) const + ?metaObject@QDeclarativeGraphicsObjectContainer@@UBEPBUQMetaObject@@XZ @ 1627 NONAME ; struct QMetaObject const * QDeclarativeGraphicsObjectContainer::metaObject(void) const + ?metaObject@QDeclarativeGrid@@UBEPBUQMetaObject@@XZ @ 1628 NONAME ; struct QMetaObject const * QDeclarativeGrid::metaObject(void) const + ?metaObject@QDeclarativeGridView@@UBEPBUQMetaObject@@XZ @ 1629 NONAME ; struct QMetaObject const * QDeclarativeGridView::metaObject(void) const + ?metaObject@QDeclarativeImage@@UBEPBUQMetaObject@@XZ @ 1630 NONAME ; struct QMetaObject const * QDeclarativeImage::metaObject(void) const + ?metaObject@QDeclarativeImageBase@@UBEPBUQMetaObject@@XZ @ 1631 NONAME ; struct QMetaObject const * QDeclarativeImageBase::metaObject(void) const + ?metaObject@QDeclarativeItem@@UBEPBUQMetaObject@@XZ @ 1632 NONAME ; struct QMetaObject const * QDeclarativeItem::metaObject(void) const + ?metaObject@QDeclarativeListModel@@UBEPBUQMetaObject@@XZ @ 1633 NONAME ; struct QMetaObject const * QDeclarativeListModel::metaObject(void) const + ?metaObject@QDeclarativeListView@@UBEPBUQMetaObject@@XZ @ 1634 NONAME ; struct QMetaObject const * QDeclarativeListView::metaObject(void) const + ?metaObject@QDeclarativeLoader@@UBEPBUQMetaObject@@XZ @ 1635 NONAME ; struct QMetaObject const * QDeclarativeLoader::metaObject(void) const + ?metaObject@QDeclarativeMouseArea@@UBEPBUQMetaObject@@XZ @ 1636 NONAME ; struct QMetaObject const * QDeclarativeMouseArea::metaObject(void) const + ?metaObject@QDeclarativeNumberFormatter@@UBEPBUQMetaObject@@XZ @ 1637 NONAME ; struct QMetaObject const * QDeclarativeNumberFormatter::metaObject(void) const + ?metaObject@QDeclarativePaintedItem@@UBEPBUQMetaObject@@XZ @ 1638 NONAME ; struct QMetaObject const * QDeclarativePaintedItem::metaObject(void) const + ?metaObject@QDeclarativeParentChange@@UBEPBUQMetaObject@@XZ @ 1639 NONAME ; struct QMetaObject const * QDeclarativeParentChange::metaObject(void) const + ?metaObject@QDeclarativeParticleMotion@@UBEPBUQMetaObject@@XZ @ 1640 NONAME ; struct QMetaObject const * QDeclarativeParticleMotion::metaObject(void) const + ?metaObject@QDeclarativeParticleMotionGravity@@UBEPBUQMetaObject@@XZ @ 1641 NONAME ; struct QMetaObject const * QDeclarativeParticleMotionGravity::metaObject(void) const + ?metaObject@QDeclarativeParticleMotionLinear@@UBEPBUQMetaObject@@XZ @ 1642 NONAME ; struct QMetaObject const * QDeclarativeParticleMotionLinear::metaObject(void) const + ?metaObject@QDeclarativeParticleMotionWander@@UBEPBUQMetaObject@@XZ @ 1643 NONAME ; struct QMetaObject const * QDeclarativeParticleMotionWander::metaObject(void) const + ?metaObject@QDeclarativeParticles@@UBEPBUQMetaObject@@XZ @ 1644 NONAME ; struct QMetaObject const * QDeclarativeParticles::metaObject(void) const + ?metaObject@QDeclarativePath@@UBEPBUQMetaObject@@XZ @ 1645 NONAME ; struct QMetaObject const * QDeclarativePath::metaObject(void) const + ?metaObject@QDeclarativePathAttribute@@UBEPBUQMetaObject@@XZ @ 1646 NONAME ; struct QMetaObject const * QDeclarativePathAttribute::metaObject(void) const + ?metaObject@QDeclarativePathCubic@@UBEPBUQMetaObject@@XZ @ 1647 NONAME ; struct QMetaObject const * QDeclarativePathCubic::metaObject(void) const + ?metaObject@QDeclarativePathElement@@UBEPBUQMetaObject@@XZ @ 1648 NONAME ; struct QMetaObject const * QDeclarativePathElement::metaObject(void) const + ?metaObject@QDeclarativePathLine@@UBEPBUQMetaObject@@XZ @ 1649 NONAME ; struct QMetaObject const * QDeclarativePathLine::metaObject(void) const + ?metaObject@QDeclarativePathPercent@@UBEPBUQMetaObject@@XZ @ 1650 NONAME ; struct QMetaObject const * QDeclarativePathPercent::metaObject(void) const + ?metaObject@QDeclarativePathQuad@@UBEPBUQMetaObject@@XZ @ 1651 NONAME ; struct QMetaObject const * QDeclarativePathQuad::metaObject(void) const + ?metaObject@QDeclarativePathView@@UBEPBUQMetaObject@@XZ @ 1652 NONAME ; struct QMetaObject const * QDeclarativePathView::metaObject(void) const + ?metaObject@QDeclarativePen@@UBEPBUQMetaObject@@XZ @ 1653 NONAME ; struct QMetaObject const * QDeclarativePen::metaObject(void) const + ?metaObject@QDeclarativePixmapReply@@UBEPBUQMetaObject@@XZ @ 1654 NONAME ; struct QMetaObject const * QDeclarativePixmapReply::metaObject(void) const + ?metaObject@QDeclarativePropertyChanges@@UBEPBUQMetaObject@@XZ @ 1655 NONAME ; struct QMetaObject const * QDeclarativePropertyChanges::metaObject(void) const + ?metaObject@QDeclarativePropertyMap@@UBEPBUQMetaObject@@XZ @ 1656 NONAME ; struct QMetaObject const * QDeclarativePropertyMap::metaObject(void) const + ?metaObject@QDeclarativeRectangle@@UBEPBUQMetaObject@@XZ @ 1657 NONAME ; struct QMetaObject const * QDeclarativeRectangle::metaObject(void) const + ?metaObject@QDeclarativeRepeater@@UBEPBUQMetaObject@@XZ @ 1658 NONAME ; struct QMetaObject const * QDeclarativeRepeater::metaObject(void) const + ?metaObject@QDeclarativeRow@@UBEPBUQMetaObject@@XZ @ 1659 NONAME ; struct QMetaObject const * QDeclarativeRow::metaObject(void) const + ?metaObject@QDeclarativeScaleGrid@@UBEPBUQMetaObject@@XZ @ 1660 NONAME ; struct QMetaObject const * QDeclarativeScaleGrid::metaObject(void) const + ?metaObject@QDeclarativeSpringFollow@@UBEPBUQMetaObject@@XZ @ 1661 NONAME ; struct QMetaObject const * QDeclarativeSpringFollow::metaObject(void) const + ?metaObject@QDeclarativeState@@UBEPBUQMetaObject@@XZ @ 1662 NONAME ; struct QMetaObject const * QDeclarativeState::metaObject(void) const + ?metaObject@QDeclarativeStateChangeScript@@UBEPBUQMetaObject@@XZ @ 1663 NONAME ; struct QMetaObject const * QDeclarativeStateChangeScript::metaObject(void) const + ?metaObject@QDeclarativeStateGroup@@UBEPBUQMetaObject@@XZ @ 1664 NONAME ; struct QMetaObject const * QDeclarativeStateGroup::metaObject(void) const + ?metaObject@QDeclarativeStateOperation@@UBEPBUQMetaObject@@XZ @ 1665 NONAME ; struct QMetaObject const * QDeclarativeStateOperation::metaObject(void) const + ?metaObject@QDeclarativeSystemPalette@@UBEPBUQMetaObject@@XZ @ 1666 NONAME ; struct QMetaObject const * QDeclarativeSystemPalette::metaObject(void) const + ?metaObject@QDeclarativeText@@UBEPBUQMetaObject@@XZ @ 1667 NONAME ; struct QMetaObject const * QDeclarativeText::metaObject(void) const + ?metaObject@QDeclarativeTextEdit@@UBEPBUQMetaObject@@XZ @ 1668 NONAME ; struct QMetaObject const * QDeclarativeTextEdit::metaObject(void) const + ?metaObject@QDeclarativeTextInput@@UBEPBUQMetaObject@@XZ @ 1669 NONAME ; struct QMetaObject const * QDeclarativeTextInput::metaObject(void) const + ?metaObject@QDeclarativeTimer@@UBEPBUQMetaObject@@XZ @ 1670 NONAME ; struct QMetaObject const * QDeclarativeTimer::metaObject(void) const + ?metaObject@QDeclarativeTransition@@UBEPBUQMetaObject@@XZ @ 1671 NONAME ; struct QMetaObject const * QDeclarativeTransition::metaObject(void) const + ?metaObject@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 1672 NONAME ; struct QMetaObject const * QDeclarativeType::metaObject(void) const + ?metaObject@QDeclarativeValueType@@UBEPBUQMetaObject@@XZ @ 1673 NONAME ; struct QMetaObject const * QDeclarativeValueType::metaObject(void) const + ?metaObject@QDeclarativeView@@UBEPBUQMetaObject@@XZ @ 1674 NONAME ; struct QMetaObject const * QDeclarativeView::metaObject(void) const + ?metaObject@QDeclarativeViewSection@@UBEPBUQMetaObject@@XZ @ 1675 NONAME ; struct QMetaObject const * QDeclarativeViewSection::metaObject(void) const + ?metaObject@QDeclarativeVisualDataModel@@UBEPBUQMetaObject@@XZ @ 1676 NONAME ; struct QMetaObject const * QDeclarativeVisualDataModel::metaObject(void) const + ?metaObject@QDeclarativeVisualItemModel@@UBEPBUQMetaObject@@XZ @ 1677 NONAME ; struct QMetaObject const * QDeclarativeVisualItemModel::metaObject(void) const + ?metaObject@QDeclarativeVisualModel@@UBEPBUQMetaObject@@XZ @ 1678 NONAME ; struct QMetaObject const * QDeclarativeVisualModel::metaObject(void) const + ?metaObject@QDeclarativeWebPage@@UBEPBUQMetaObject@@XZ @ 1679 NONAME ; struct QMetaObject const * QDeclarativeWebPage::metaObject(void) const + ?metaObject@QDeclarativeWebView@@UBEPBUQMetaObject@@XZ @ 1680 NONAME ; struct QMetaObject const * QDeclarativeWebView::metaObject(void) const + ?metaObject@QDeclarativeXmlListModel@@UBEPBUQMetaObject@@XZ @ 1681 NONAME ; struct QMetaObject const * QDeclarativeXmlListModel::metaObject(void) const + ?metaObject@QDeclarativeXmlListModelRole@@UBEPBUQMetaObject@@XZ @ 1682 NONAME ; struct QMetaObject const * QDeclarativeXmlListModelRole::metaObject(void) const + ?metaObject@QListModelInterface@@UBEPBUQMetaObject@@XZ @ 1683 NONAME ; struct QMetaObject const * QListModelInterface::metaObject(void) const + ?metaObject@QPacketProtocol@@UBEPBUQMetaObject@@XZ @ 1684 NONAME ; struct QMetaObject const * QPacketProtocol::metaObject(void) const + ?method@QDeclarativeProperty@@QBE?AVQMetaMethod@@XZ @ 1685 NONAME ; class QMetaMethod QDeclarativeProperty::method(void) const + ?method@QMetaObjectBuilder@@QBE?AVQMetaMethodBuilder@@H@Z @ 1686 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::method(int) const + ?methodCount@QMetaObjectBuilder@@QBEHXZ @ 1687 NONAME ; int QMetaObjectBuilder::methodCount(void) const + ?methodType@QMetaMethodBuilder@@QBE?AW4MethodType@QMetaMethod@@XZ @ 1688 NONAME ; enum QMetaMethod::MethodType QMetaMethodBuilder::methodType(void) const + ?mid@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 1689 NONAME ; class QColor QDeclarativeSystemPalette::mid(void) const + ?midlight@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 1690 NONAME ; class QColor QDeclarativeSystemPalette::midlight(void) const + ?minXExtent@QDeclarativeFlickable@@MBEMXZ @ 1691 NONAME ; float QDeclarativeFlickable::minXExtent(void) const + ?minXExtent@QDeclarativeGridView@@MBEMXZ @ 1692 NONAME ; float QDeclarativeGridView::minXExtent(void) const + ?minXExtent@QDeclarativeListView@@MBEMXZ @ 1693 NONAME ; float QDeclarativeListView::minXExtent(void) const + ?minYExtent@QDeclarativeFlickable@@MBEMXZ @ 1694 NONAME ; float QDeclarativeFlickable::minYExtent(void) const + ?minYExtent@QDeclarativeGridView@@MBEMXZ @ 1695 NONAME ; float QDeclarativeGridView::minYExtent(void) const + ?minYExtent@QDeclarativeListView@@MBEMXZ @ 1696 NONAME ; float QDeclarativeListView::minYExtent(void) const + ?minimumXChanged@QDeclarativeDrag@@IAEXXZ @ 1697 NONAME ; void QDeclarativeDrag::minimumXChanged(void) + ?minimumYChanged@QDeclarativeDrag@@IAEXXZ @ 1698 NONAME ; void QDeclarativeDrag::minimumYChanged(void) + ?minorVersion@QDeclarativeType@@QBEHXZ @ 1699 NONAME ; int QDeclarativeType::minorVersion(void) const + ?model@QDeclarativeGridView@@QBE?AVQVariant@@XZ @ 1700 NONAME ; class QVariant QDeclarativeGridView::model(void) const + ?model@QDeclarativeListView@@QBE?AVQVariant@@XZ @ 1701 NONAME ; class QVariant QDeclarativeListView::model(void) const + ?model@QDeclarativePathView@@QBE?AVQVariant@@XZ @ 1702 NONAME ; class QVariant QDeclarativePathView::model(void) const + ?model@QDeclarativeRepeater@@QBE?AVQVariant@@XZ @ 1703 NONAME ; class QVariant QDeclarativeRepeater::model(void) const + ?model@QDeclarativeVisualDataModel@@QBE?AVQVariant@@XZ @ 1704 NONAME ; class QVariant QDeclarativeVisualDataModel::model(void) const + ?modelChanged@QDeclarativeRepeater@@IAEXXZ @ 1705 NONAME ; void QDeclarativeRepeater::modelChanged(void) + ?modelReset@QDeclarativeGridView@@AAEXXZ @ 1706 NONAME ; void QDeclarativeGridView::modelReset(void) + ?modelReset@QDeclarativeListView@@AAEXXZ @ 1707 NONAME ; void QDeclarativeListView::modelReset(void) + ?modelReset@QDeclarativePathView@@AAEXXZ @ 1708 NONAME ; void QDeclarativePathView::modelReset(void) + ?modelReset@QDeclarativeRepeater@@AAEXXZ @ 1709 NONAME ; void QDeclarativeRepeater::modelReset(void) + ?modelReset@QDeclarativeVisualModel@@IAEXXZ @ 1710 NONAME ; void QDeclarativeVisualModel::modelReset(void) + ?modulus@QDeclarativeSpringFollow@@QBEMXZ @ 1711 NONAME ; float QDeclarativeSpringFollow::modulus(void) const + ?modulusChanged@QDeclarativeSpringFollow@@IAEXXZ @ 1712 NONAME ; void QDeclarativeSpringFollow::modulusChanged(void) + ?motion@QDeclarativeParticles@@QBEPAVQDeclarativeParticleMotion@@XZ @ 1713 NONAME ; class QDeclarativeParticleMotion * QDeclarativeParticles::motion(void) const + ?motionChanged@QDeclarativeParticles@@IAEXXZ @ 1714 NONAME ; void QDeclarativeParticles::motionChanged(void) + ?mouseDoubleClickEvent@QDeclarativeMouseArea@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1715 NONAME ; void QDeclarativeMouseArea::mouseDoubleClickEvent(class QGraphicsSceneMouseEvent *) + ?mouseDoubleClickEvent@QDeclarativeTextEdit@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1716 NONAME ; void QDeclarativeTextEdit::mouseDoubleClickEvent(class QGraphicsSceneMouseEvent *) + ?mouseDoubleClickEvent@QDeclarativeWebView@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1717 NONAME ; void QDeclarativeWebView::mouseDoubleClickEvent(class QGraphicsSceneMouseEvent *) + ?mouseMoveEvent@QDeclarativeFlickable@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1718 NONAME ; void QDeclarativeFlickable::mouseMoveEvent(class QGraphicsSceneMouseEvent *) + ?mouseMoveEvent@QDeclarativeMouseArea@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1719 NONAME ; void QDeclarativeMouseArea::mouseMoveEvent(class QGraphicsSceneMouseEvent *) + ?mouseMoveEvent@QDeclarativePathView@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1720 NONAME ; void QDeclarativePathView::mouseMoveEvent(class QGraphicsSceneMouseEvent *) + ?mouseMoveEvent@QDeclarativeTextEdit@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1721 NONAME ; void QDeclarativeTextEdit::mouseMoveEvent(class QGraphicsSceneMouseEvent *) + ?mouseMoveEvent@QDeclarativeWebView@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1722 NONAME ; void QDeclarativeWebView::mouseMoveEvent(class QGraphicsSceneMouseEvent *) + ?mousePressEvent@QDeclarativeFlickable@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1723 NONAME ; void QDeclarativeFlickable::mousePressEvent(class QGraphicsSceneMouseEvent *) + ?mousePressEvent@QDeclarativeMouseArea@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1724 NONAME ; void QDeclarativeMouseArea::mousePressEvent(class QGraphicsSceneMouseEvent *) + ?mousePressEvent@QDeclarativePathView@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1725 NONAME ; void QDeclarativePathView::mousePressEvent(class QGraphicsSceneMouseEvent *) + ?mousePressEvent@QDeclarativeText@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1726 NONAME ; void QDeclarativeText::mousePressEvent(class QGraphicsSceneMouseEvent *) + ?mousePressEvent@QDeclarativeTextEdit@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1727 NONAME ; void QDeclarativeTextEdit::mousePressEvent(class QGraphicsSceneMouseEvent *) + ?mousePressEvent@QDeclarativeTextInput@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1728 NONAME ; void QDeclarativeTextInput::mousePressEvent(class QGraphicsSceneMouseEvent *) + ?mousePressEvent@QDeclarativeWebView@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1729 NONAME ; void QDeclarativeWebView::mousePressEvent(class QGraphicsSceneMouseEvent *) + ?mouseReleaseEvent@QDeclarativeFlickable@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1730 NONAME ; void QDeclarativeFlickable::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) + ?mouseReleaseEvent@QDeclarativeMouseArea@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1731 NONAME ; void QDeclarativeMouseArea::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) + ?mouseReleaseEvent@QDeclarativePathView@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1732 NONAME ; void QDeclarativePathView::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) + ?mouseReleaseEvent@QDeclarativeText@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1733 NONAME ; void QDeclarativeText::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) + ?mouseReleaseEvent@QDeclarativeTextEdit@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1734 NONAME ; void QDeclarativeTextEdit::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) + ?mouseReleaseEvent@QDeclarativeTextInput@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1735 NONAME ; void QDeclarativeTextInput::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) + ?mouseReleaseEvent@QDeclarativeWebView@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 1736 NONAME ; void QDeclarativeWebView::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) + ?mouseX@QDeclarativeMouseArea@@QBEMXZ @ 1737 NONAME ; float QDeclarativeMouseArea::mouseX(void) const + ?mouseY@QDeclarativeMouseArea@@QBEMXZ @ 1738 NONAME ; float QDeclarativeMouseArea::mouseY(void) const + ?move@QDeclarativeBasePositioner@@QBEPAVQDeclarativeTransition@@XZ @ 1739 NONAME ; class QDeclarativeTransition * QDeclarativeBasePositioner::move(void) const + ?move@QDeclarativeListModel@@QAEXHHH@Z @ 1740 NONAME ; void QDeclarativeListModel::move(int, int, int) + ?moveChanged@QDeclarativeBasePositioner@@IAEXXZ @ 1741 NONAME ; void QDeclarativeBasePositioner::moveChanged(void) + ?moveCurrentIndexDown@QDeclarativeGridView@@QAEXXZ @ 1742 NONAME ; void QDeclarativeGridView::moveCurrentIndexDown(void) + ?moveCurrentIndexLeft@QDeclarativeGridView@@QAEXXZ @ 1743 NONAME ; void QDeclarativeGridView::moveCurrentIndexLeft(void) + ?moveCurrentIndexRight@QDeclarativeGridView@@QAEXXZ @ 1744 NONAME ; void QDeclarativeGridView::moveCurrentIndexRight(void) + ?moveCurrentIndexUp@QDeclarativeGridView@@QAEXXZ @ 1745 NONAME ; void QDeclarativeGridView::moveCurrentIndexUp(void) + ?moveCursor@QDeclarativeTextInput@@AAEXXZ @ 1746 NONAME ; void QDeclarativeTextInput::moveCursor(void) + ?moveCursorDelegate@QDeclarativeTextEdit@@AAEXXZ @ 1747 NONAME ; void QDeclarativeTextEdit::moveCursorDelegate(void) + ?movementEnded@QDeclarativeFlickable@@IAEXXZ @ 1748 NONAME ; void QDeclarativeFlickable::movementEnded(void) + ?movementEnding@QDeclarativeFlickable@@IAEXXZ @ 1749 NONAME ; void QDeclarativeFlickable::movementEnding(void) + ?movementStarted@QDeclarativeFlickable@@IAEXXZ @ 1750 NONAME ; void QDeclarativeFlickable::movementStarted(void) + ?movementStarting@QDeclarativeFlickable@@IAEXXZ @ 1751 NONAME ; void QDeclarativeFlickable::movementStarting(void) + ?movieRequestFinished@QDeclarativeAnimatedImage@@AAEXXZ @ 1752 NONAME ; void QDeclarativeAnimatedImage::movieRequestFinished(void) + ?movieUpdate@QDeclarativeAnimatedImage@@AAEXXZ @ 1753 NONAME ; void QDeclarativeAnimatedImage::movieUpdate(void) + ?movingChanged@QDeclarativeFlickable@@IAEXXZ @ 1754 NONAME ; void QDeclarativeFlickable::movingChanged(void) + ?name@QDeclarativeCustomParserNode@@QBE?AVQByteArray@@XZ @ 1755 NONAME ; class QByteArray QDeclarativeCustomParserNode::name(void) const + ?name@QDeclarativeCustomParserProperty@@QBE?AVQByteArray@@XZ @ 1756 NONAME ; class QByteArray QDeclarativeCustomParserProperty::name(void) const + ?name@QDeclarativeDebugClient@@QBE?AVQString@@XZ @ 1757 NONAME ; class QString QDeclarativeDebugClient::name(void) const + ?name@QDeclarativeDebugContextReference@@QBE?AVQString@@XZ @ 1758 NONAME ; class QString QDeclarativeDebugContextReference::name(void) const + ?name@QDeclarativeDebugEngineReference@@QBE?AVQString@@XZ @ 1759 NONAME ; class QString QDeclarativeDebugEngineReference::name(void) const + ?name@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 1760 NONAME ; class QString QDeclarativeDebugObjectReference::name(void) const + ?name@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 1761 NONAME ; class QString QDeclarativeDebugPropertyReference::name(void) const + ?name@QDeclarativeDebugPropertyWatch@@QBE?AVQString@@XZ @ 1762 NONAME ; class QString QDeclarativeDebugPropertyWatch::name(void) const + ?name@QDeclarativeDebugService@@QBE?AVQString@@XZ @ 1763 NONAME ; class QString QDeclarativeDebugService::name(void) const + ?name@QDeclarativeFontLoader@@QBE?AVQString@@XZ @ 1764 NONAME ; class QString QDeclarativeFontLoader::name(void) const + ?name@QDeclarativeOpenMetaObject@@QBE?AVQByteArray@@H@Z @ 1765 NONAME ; class QByteArray QDeclarativeOpenMetaObject::name(int) const + ?name@QDeclarativePathAttribute@@QBE?AVQString@@XZ @ 1766 NONAME ; class QString QDeclarativePathAttribute::name(void) const + ?name@QDeclarativeProperty@@QBE?AVQString@@XZ @ 1767 NONAME ; class QString QDeclarativeProperty::name(void) const + ?name@QDeclarativeState@@QBE?AVQString@@XZ @ 1768 NONAME ; class QString QDeclarativeState::name(void) const + ?name@QDeclarativeStateChangeScript@@QBE?AVQString@@XZ @ 1769 NONAME ; class QString QDeclarativeStateChangeScript::name(void) const + ?name@QDeclarativeXmlListModelRole@@QBE?AVQString@@XZ @ 1770 NONAME ; class QString QDeclarativeXmlListModelRole::name(void) const + ?name@QMetaEnumBuilder@@QBE?AVQByteArray@@XZ @ 1771 NONAME ; class QByteArray QMetaEnumBuilder::name(void) const + ?name@QMetaPropertyBuilder@@QBE?AVQByteArray@@XZ @ 1772 NONAME ; class QByteArray QMetaPropertyBuilder::name(void) const + ?nameChanged@QDeclarativeFontLoader@@IAEXXZ @ 1773 NONAME ; void QDeclarativeFontLoader::nameChanged(void) + ?namespaceDeclarations@QDeclarativeXmlListModel@@QBE?AVQString@@XZ @ 1774 NONAME ; class QString QDeclarativeXmlListModel::namespaceDeclarations(void) const + ?needsNotifySignal@QDeclarativeProperty@@QBE_NXZ @ 1775 NONAME ; bool QDeclarativeProperty::needsNotifySignal(void) const + ?networkAccessManager@QDeclarativeEngine@@QBEPAVQNetworkAccessManager@@XZ @ 1776 NONAME ; class QNetworkAccessManager * QDeclarativeEngine::networkAccessManager(void) const + ?networkAccessManagerFactory@QDeclarativeEngine@@QBEPAVQDeclarativeNetworkAccessManagerFactory@@XZ @ 1777 NONAME ; class QDeclarativeNetworkAccessManagerFactory * QDeclarativeEngine::networkAccessManagerFactory(void) const + ?newWindowComponent@QDeclarativeWebView@@QBEPAVQDeclarativeComponent@@XZ @ 1778 NONAME ; class QDeclarativeComponent * QDeclarativeWebView::newWindowComponent(void) const + ?newWindowComponentChanged@QDeclarativeWebView@@IAEXXZ @ 1779 NONAME ; void QDeclarativeWebView::newWindowComponentChanged(void) + ?newWindowParent@QDeclarativeWebView@@QBEPAVQDeclarativeItem@@XZ @ 1780 NONAME ; class QDeclarativeItem * QDeclarativeWebView::newWindowParent(void) const + ?newWindowParentChanged@QDeclarativeWebView@@IAEXXZ @ 1781 NONAME ; void QDeclarativeWebView::newWindowParentChanged(void) + ?noteContentsSizeChanged@QDeclarativeWebView@@AAEXABVQSize@@@Z @ 1782 NONAME ; void QDeclarativeWebView::noteContentsSizeChanged(class QSize const &) + ?notifyOnServerStart@QDeclarativeDebugService@@SAXPAVQObject@@PBD@Z @ 1783 NONAME ; void QDeclarativeDebugService::notifyOnServerStart(class QObject *, char const *) + ?notifyOnValueChanged@QDeclarativeExpression@@QBE_NXZ @ 1784 NONAME ; bool QDeclarativeExpression::notifyOnValueChanged(void) const + ?notifySignal@QMetaPropertyBuilder@@QBE?AVQMetaMethodBuilder@@XZ @ 1785 NONAME ; class QMetaMethodBuilder QMetaPropertyBuilder::notifySignal(void) const + ?number@QDeclarativeNumberFormatter@@QBEMXZ @ 1786 NONAME ; float QDeclarativeNumberFormatter::number(void) const + ?object@QDeclarativeAnchorChanges@@QBEPAVQDeclarativeItem@@XZ @ 1787 NONAME ; class QDeclarativeItem * QDeclarativeAnchorChanges::object(void) const + ?object@QDeclarativeBind@@QAEPAVQObject@@XZ @ 1788 NONAME ; class QObject * QDeclarativeBind::object(void) + ?object@QDeclarativeDebugObjectQuery@@QBE?AVQDeclarativeDebugObjectReference@@XZ @ 1789 NONAME ; class QDeclarativeDebugObjectReference QDeclarativeDebugObjectQuery::object(void) const + ?object@QDeclarativeDomValueValueInterceptor@@QBE?AVQDeclarativeDomObject@@XZ @ 1790 NONAME ; class QDeclarativeDomObject QDeclarativeDomValueValueInterceptor::object(void) const + ?object@QDeclarativeDomValueValueSource@@QBE?AVQDeclarativeDomObject@@XZ @ 1791 NONAME ; class QDeclarativeDomObject QDeclarativeDomValueValueSource::object(void) const + ?object@QDeclarativeListReference@@QBEPAVQObject@@XZ @ 1792 NONAME ; class QObject * QDeclarativeListReference::object(void) const + ?object@QDeclarativeOpenMetaObject@@QBEPAVQObject@@XZ @ 1793 NONAME ; class QObject * QDeclarativeOpenMetaObject::object(void) const + ?object@QDeclarativeParentChange@@QBEPAVQDeclarativeItem@@XZ @ 1794 NONAME ; class QDeclarativeItem * QDeclarativeParentChange::object(void) const + ?object@QDeclarativeProperty@@QBEPAVQObject@@XZ @ 1795 NONAME ; class QObject * QDeclarativeProperty::object(void) const + ?object@QDeclarativePropertyChanges@@QBEPAVQObject@@XZ @ 1796 NONAME ; class QObject * QDeclarativePropertyChanges::object(void) const + ?objectClassName@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 1797 NONAME ; class QByteArray QDeclarativeDomObject::objectClassName(void) const + ?objectDebugId@QDeclarativeDebugPropertyReference@@QBEHXZ @ 1798 NONAME ; int QDeclarativeDebugPropertyReference::objectDebugId(void) const + ?objectDebugId@QDeclarativeDebugWatch@@QBEHXZ @ 1799 NONAME ; int QDeclarativeDebugWatch::objectDebugId(void) const + ?objectForId@QDeclarativeDebugService@@SAPAVQObject@@H@Z @ 1800 NONAME ; class QObject * QDeclarativeDebugService::objectForId(int) + ?objectId@QDeclarativeDomObject@@QBE?AVQString@@XZ @ 1801 NONAME ; class QString QDeclarativeDomObject::objectId(void) const + ?objectToString@QDeclarativeDebugService@@SA?AVQString@@PAVQObject@@@Z @ 1802 NONAME ; class QString QDeclarativeDebugService::objectToString(class QObject *) + ?objectType@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 1803 NONAME ; class QByteArray QDeclarativeDomObject::objectType(void) const + ?objectTypeMajorVersion@QDeclarativeDomObject@@QBEHXZ @ 1804 NONAME ; int QDeclarativeDomObject::objectTypeMajorVersion(void) const + ?objectTypeMinorVersion@QDeclarativeDomObject@@QBEHXZ @ 1805 NONAME ; int QDeclarativeDomObject::objectTypeMinorVersion(void) const + ?objects@QDeclarativeDebugContextReference@@QBE?AV?$QList@VQDeclarativeDebugObjectReference@@@@XZ @ 1806 NONAME ; class QList QDeclarativeDebugContextReference::objects(void) const + ?offlineStoragePath@QDeclarativeEngine@@QBE?AVQString@@XZ @ 1807 NONAME ; class QString QDeclarativeEngine::offlineStoragePath(void) const + ?offset@QDeclarativePathView@@QBEMXZ @ 1808 NONAME ; float QDeclarativePathView::offset(void) const + ?offsetChanged@QDeclarativePathView@@IAEXXZ @ 1809 NONAME ; void QDeclarativePathView::offsetChanged(void) + ?operationAt@QDeclarativeState@@QBEPAVQDeclarativeStateOperation@@H@Z @ 1810 NONAME ; class QDeclarativeStateOperation * QDeclarativeState::operationAt(int) const + ?operationCount@QDeclarativeState@@QBEHXZ @ 1811 NONAME ; int QDeclarativeState::operationCount(void) const + ?orientation@QDeclarativeListView@@QBE?AW4Orientation@1@XZ @ 1812 NONAME ; enum QDeclarativeListView::Orientation QDeclarativeListView::orientation(void) const + ?orientationChanged@QDeclarativeListView@@IAEXXZ @ 1813 NONAME ; void QDeclarativeListView::orientationChanged(void) + ?originalParent@QDeclarativeParentChange@@QBEPAVQDeclarativeItem@@XZ @ 1814 NONAME ; class QDeclarativeItem * QDeclarativeParentChange::originalParent(void) const + ?overShoot@QDeclarativeFlickable@@QBE_NXZ @ 1815 NONAME ; bool QDeclarativeFlickable::overShoot(void) const + ?overShootChanged@QDeclarativeFlickable@@IAEXXZ @ 1816 NONAME ; void QDeclarativeFlickable::overShootChanged(void) + ?override@QDeclarativeAnchorChanges@@UAE_NPAVQDeclarativeActionEvent@@@Z @ 1817 NONAME ; bool QDeclarativeAnchorChanges::override(class QDeclarativeActionEvent *) + ?override@QDeclarativeParentChange@@UAE_NPAVQDeclarativeActionEvent@@@Z @ 1818 NONAME ; bool QDeclarativeParentChange::override(class QDeclarativeActionEvent *) + ?pace@QDeclarativeParticleMotionWander@@QBEMXZ @ 1819 NONAME ; float QDeclarativeParticleMotionWander::pace(void) const + ?paceChanged@QDeclarativeParticleMotionWander@@IAEXXZ @ 1820 NONAME ; void QDeclarativeParticleMotionWander::paceChanged(void) + ?packetWritten@QPacketProtocol@@IAEXXZ @ 1821 NONAME ; void QPacketProtocol::packetWritten(void) + ?packetsAvailable@QPacketProtocol@@QBE_JXZ @ 1822 NONAME ; long long QPacketProtocol::packetsAvailable(void) const + ?page@QDeclarativeWebView@@QBEPAVQWebPage@@XZ @ 1823 NONAME ; class QWebPage * QDeclarativeWebView::page(void) const + ?pageChanged@QDeclarativeFlickable@@IAEXXZ @ 1824 NONAME ; void QDeclarativeFlickable::pageChanged(void) + ?pageUrlChanged@QDeclarativeWebView@@AAEXXZ @ 1825 NONAME ; void QDeclarativeWebView::pageUrlChanged(void) + ?paint@QDeclarativeBorderImage@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1826 NONAME ; void QDeclarativeBorderImage::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) + ?paint@QDeclarativeImage@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1827 NONAME ; void QDeclarativeImage::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) + ?paint@QDeclarativeItem@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1828 NONAME ; void QDeclarativeItem::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) + ?paint@QDeclarativePaintedItem@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1829 NONAME ; void QDeclarativePaintedItem::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) + ?paint@QDeclarativeParticles@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1830 NONAME ; void QDeclarativeParticles::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) + ?paint@QDeclarativeRectangle@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1831 NONAME ; void QDeclarativeRectangle::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) + ?paint@QDeclarativeText@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1832 NONAME ; void QDeclarativeText::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) + ?paintEvent@QDeclarativeView@@MAEXPAVQPaintEvent@@@Z @ 1833 NONAME ; void QDeclarativeView::paintEvent(class QPaintEvent *) + ?paintPage@QDeclarativeWebView@@AAEXABVQRect@@@Z @ 1834 NONAME ; void QDeclarativeWebView::paintPage(class QRect const &) + ?paintedGeometryChanged@QDeclarativeImage@@IAEXXZ @ 1835 NONAME ; void QDeclarativeImage::paintedGeometryChanged(void) + ?paintedHeight@QDeclarativeImage@@QBEMXZ @ 1836 NONAME ; float QDeclarativeImage::paintedHeight(void) const + ?paintedWidth@QDeclarativeImage@@QBEMXZ @ 1837 NONAME ; float QDeclarativeImage::paintedWidth(void) const + ?paletteChanged@QDeclarativeSystemPalette@@IAEXXZ @ 1838 NONAME ; void QDeclarativeSystemPalette::paletteChanged(void) + ?parameterNames@QMetaMethodBuilder@@QBE?AV?$QList@VQByteArray@@@@XZ @ 1839 NONAME ; class QList QMetaMethodBuilder::parameterNames(void) const + ?parent@QDeclarativeOpenMetaObject@@IBEPAUQAbstractDynamicMetaObject@@XZ @ 1840 NONAME ; struct QAbstractDynamicMetaObject * QDeclarativeOpenMetaObject::parent(void) const + ?parent@QDeclarativeParentChange@@QBEPAVQDeclarativeItem@@XZ @ 1841 NONAME ; class QDeclarativeItem * QDeclarativeParentChange::parent(void) const + ?parentChanged@QDeclarativeItem@@IAEXXZ @ 1842 NONAME ; void QDeclarativeItem::parentChanged(void) + ?parentContext@QDeclarativeContext@@QBEPAV1@XZ @ 1843 NONAME ; class QDeclarativeContext * QDeclarativeContext::parentContext(void) const + ?parentItem@QDeclarativeItem@@QBEPAV1@XZ @ 1844 NONAME ; class QDeclarativeItem * QDeclarativeItem::parentItem(void) const + ?parse@QDeclarativeStyledText@@SAXABVQString@@AAVQTextLayout@@@Z @ 1845 NONAME ; void QDeclarativeStyledText::parse(class QString const &, class QTextLayout &) + ?parserStatusCast@QDeclarativeType@@QBEHXZ @ 1846 NONAME ; int QDeclarativeType::parserStatusCast(void) const + ?part@QDeclarativeVisualDataModel@@QBE?AVQString@@XZ @ 1847 NONAME ; class QString QDeclarativeVisualDataModel::part(void) const + ?parts@QDeclarativeVisualDataModel@@QAEPAVQObject@@XZ @ 1848 NONAME ; class QObject * QDeclarativeVisualDataModel::parts(void) + ?path@QDeclarativePath@@QBE?AVQPainterPath@@XZ @ 1849 NONAME ; class QPainterPath QDeclarativePath::path(void) const + ?path@QDeclarativePathView@@QBEPAVQDeclarativePath@@XZ @ 1850 NONAME ; class QDeclarativePath * QDeclarativePathView::path(void) const + ?pathElements@QDeclarativePath@@QAE?AU?$QDeclarativeListProperty@VQDeclarativePathElement@@@@XZ @ 1851 NONAME ; struct QDeclarativeListProperty QDeclarativePath::pathElements(void) + ?pathItemCount@QDeclarativePathView@@QBEHXZ @ 1852 NONAME ; int QDeclarativePathView::pathItemCount(void) const + ?pausedChanged@QDeclarativeAnimatedImage@@IAEXXZ @ 1853 NONAME ; void QDeclarativeAnimatedImage::pausedChanged(void) + ?penChanged@QDeclarativePen@@IAEXXZ @ 1854 NONAME ; void QDeclarativePen::penChanged(void) + ?pendingRequests@QDeclarativePixmapCache@@SAHXZ @ 1855 NONAME ; int QDeclarativePixmapCache::pendingRequests(void) + ?persistentSelection@QDeclarativeTextEdit@@QBE_NXZ @ 1856 NONAME ; bool QDeclarativeTextEdit::persistentSelection(void) const + ?persistentSelectionChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 1857 NONAME ; void QDeclarativeTextEdit::persistentSelectionChanged(bool) + ?pixelCacheSize@QDeclarativePaintedItem@@QBEHXZ @ 1858 NONAME ; int QDeclarativePaintedItem::pixelCacheSize(void) const + ?pixmap@QDeclarativeImage@@QBE?AVQPixmap@@XZ @ 1859 NONAME ; class QPixmap QDeclarativeImage::pixmap(void) const + ?pixmapChanged@QDeclarativeImageBase@@IAEXXZ @ 1860 NONAME ; void QDeclarativeImageBase::pixmapChanged(void) + ?pixmapUrl@QDeclarativeGridScaledImage@@QBE?AVQString@@XZ @ 1861 NONAME ; class QString QDeclarativeGridScaledImage::pixmapUrl(void) const + ?playingChanged@QDeclarativeAnimatedImage@@IAEXXZ @ 1862 NONAME ; void QDeclarativeAnimatedImage::playingChanged(void) + ?playingStatusChanged@QDeclarativeAnimatedImage@@AAEXXZ @ 1863 NONAME ; void QDeclarativeAnimatedImage::playingStatusChanged(void) + ?pointAt@QDeclarativePath@@QBE?AVQPointF@@M@Z @ 1864 NONAME ; class QPointF QDeclarativePath::pointAt(float) const + ?pointFFromString@QDeclarativeStringConverters@@YA?AVQPointF@@ABVQString@@PA_N@Z @ 1865 NONAME ; class QPointF QDeclarativeStringConverters::pointFFromString(class QString const &, bool *) + ?position@QDeclarativeDomDynamicProperty@@QBEHXZ @ 1866 NONAME ; int QDeclarativeDomDynamicProperty::position(void) const + ?position@QDeclarativeDomList@@QBEHXZ @ 1867 NONAME ; int QDeclarativeDomList::position(void) const + ?position@QDeclarativeDomObject@@QBEHXZ @ 1868 NONAME ; int QDeclarativeDomObject::position(void) const + ?position@QDeclarativeDomProperty@@QBEHXZ @ 1869 NONAME ; int QDeclarativeDomProperty::position(void) const + ?position@QDeclarativeDomValue@@QBEHXZ @ 1870 NONAME ; int QDeclarativeDomValue::position(void) const + ?position@QDeclarativeGradientStop@@QBEMXZ @ 1871 NONAME ; float QDeclarativeGradientStop::position(void) const + ?positionChanged@QDeclarativeMouseArea@@IAEXPAVQDeclarativeMouseEvent@@@Z @ 1872 NONAME ; void QDeclarativeMouseArea::positionChanged(class QDeclarativeMouseEvent *) + ?positionViewAtIndex@QDeclarativeGridView@@QAEXH@Z @ 1873 NONAME ; void QDeclarativeGridView::positionViewAtIndex(int) + ?positionViewAtIndex@QDeclarativeListView@@QAEXH@Z @ 1874 NONAME ; void QDeclarativeListView::positionViewAtIndex(int) + ?positionX@QDeclarativeBasePositioner@@IAEXHABUPositionedItem@1@@Z @ 1875 NONAME ; void QDeclarativeBasePositioner::positionX(int, struct QDeclarativeBasePositioner::PositionedItem const &) + ?positionY@QDeclarativeBasePositioner@@IAEXHABUPositionedItem@1@@Z @ 1876 NONAME ; void QDeclarativeBasePositioner::positionY(int, struct QDeclarativeBasePositioner::PositionedItem const &) + ?prePositioning@QDeclarativeBasePositioner@@IAEXXZ @ 1877 NONAME ; void QDeclarativeBasePositioner::prePositioning(void) + ?preferredHeight@QDeclarativeWebView@@QBEHXZ @ 1878 NONAME ; int QDeclarativeWebView::preferredHeight(void) const + ?preferredHeightChanged@QDeclarativeWebView@@IAEXXZ @ 1879 NONAME ; void QDeclarativeWebView::preferredHeightChanged(void) + ?preferredHighlightBegin@QDeclarativeListView@@QBEMXZ @ 1880 NONAME ; float QDeclarativeListView::preferredHighlightBegin(void) const + ?preferredHighlightEnd@QDeclarativeListView@@QBEMXZ @ 1881 NONAME ; float QDeclarativeListView::preferredHighlightEnd(void) const + ?preferredWidth@QDeclarativeWebView@@QBEHXZ @ 1882 NONAME ; int QDeclarativeWebView::preferredWidth(void) const + ?preferredWidthChanged@QDeclarativeWebView@@IAEXXZ @ 1883 NONAME ; void QDeclarativeWebView::preferredWidthChanged(void) + ?prepare@QDeclarativeTransition@@QAEXAAV?$QList@VQDeclarativeAction@@@@AAV?$QList@VQDeclarativeProperty@@@@PAVQDeclarativeTransitionManager@@@Z @ 1884 NONAME ; void QDeclarativeTransition::prepare(class QList &, class QList &, class QDeclarativeTransitionManager *) + ?pressAndHold@QDeclarativeMouseArea@@IAEXPAVQDeclarativeMouseEvent@@@Z @ 1885 NONAME ; void QDeclarativeMouseArea::pressAndHold(class QDeclarativeMouseEvent *) + ?pressDelay@QDeclarativeFlickable@@QBEHXZ @ 1886 NONAME ; int QDeclarativeFlickable::pressDelay(void) const + ?pressDelayChanged@QDeclarativeFlickable@@IAEXXZ @ 1887 NONAME ; void QDeclarativeFlickable::pressDelayChanged(void) + ?pressGrabTime@QDeclarativeWebView@@QBEHXZ @ 1888 NONAME ; int QDeclarativeWebView::pressGrabTime(void) const + ?pressGrabTimeChanged@QDeclarativeWebView@@IAEXXZ @ 1889 NONAME ; void QDeclarativeWebView::pressGrabTimeChanged(void) + ?pressed@QDeclarativeMouseArea@@IAEXPAVQDeclarativeMouseEvent@@@Z @ 1890 NONAME ; void QDeclarativeMouseArea::pressed(class QDeclarativeMouseEvent *) + ?pressed@QDeclarativeMouseArea@@QBE_NXZ @ 1891 NONAME ; bool QDeclarativeMouseArea::pressed(void) const + ?pressedButtons@QDeclarativeMouseArea@@QBE?AV?$QFlags@W4MouseButton@Qt@@@@XZ @ 1892 NONAME ; class QFlags QDeclarativeMouseArea::pressedButtons(void) const + ?pressedChanged@QDeclarativeMouseArea@@IAEXXZ @ 1893 NONAME ; void QDeclarativeMouseArea::pressedChanged(void) + ?processPath@QDeclarativePath@@AAEXXZ @ 1894 NONAME ; void QDeclarativePath::processPath(void) + ?progress@QDeclarativeComponent@@QBEMXZ @ 1895 NONAME ; float QDeclarativeComponent::progress(void) const + ?progress@QDeclarativeImageBase@@QBEMXZ @ 1896 NONAME ; float QDeclarativeImageBase::progress(void) const + ?progress@QDeclarativeLoader@@QBEMXZ @ 1897 NONAME ; float QDeclarativeLoader::progress(void) const + ?progress@QDeclarativeWebView@@QBEMXZ @ 1898 NONAME ; float QDeclarativeWebView::progress(void) const + ?progress@QDeclarativeXmlListModel@@QBEMXZ @ 1899 NONAME ; float QDeclarativeXmlListModel::progress(void) const + ?progressChanged@QDeclarativeComponent@@IAEXM@Z @ 1900 NONAME ; void QDeclarativeComponent::progressChanged(float) + ?progressChanged@QDeclarativeImageBase@@IAEXM@Z @ 1901 NONAME ; void QDeclarativeImageBase::progressChanged(float) + ?progressChanged@QDeclarativeLoader@@IAEXXZ @ 1902 NONAME ; void QDeclarativeLoader::progressChanged(void) + ?progressChanged@QDeclarativeWebView@@IAEXXZ @ 1903 NONAME ; void QDeclarativeWebView::progressChanged(void) + ?progressChanged@QDeclarativeXmlListModel@@IAEXM@Z @ 1904 NONAME ; void QDeclarativeXmlListModel::progressChanged(float) + ?properties@QDeclarativeCustomParserNode@@QBE?AV?$QList@VQDeclarativeCustomParserProperty@@@@XZ @ 1905 NONAME ; class QList QDeclarativeCustomParserNode::properties(void) const + ?properties@QDeclarativeDebugObjectReference@@QBE?AV?$QList@VQDeclarativeDebugPropertyReference@@@@XZ @ 1906 NONAME ; class QList QDeclarativeDebugObjectReference::properties(void) const + ?properties@QDeclarativeDomObject@@QBE?AV?$QList@VQDeclarativeDomProperty@@@@XZ @ 1907 NONAME ; class QList QDeclarativeDomObject::properties(void) const + ?property@QDeclarativeBind@@QBE?AVQString@@XZ @ 1908 NONAME ; class QString QDeclarativeBind::property(void) const + ?property@QDeclarativeDomObject@@QBE?AVQDeclarativeDomProperty@@ABVQByteArray@@@Z @ 1909 NONAME ; class QDeclarativeDomProperty QDeclarativeDomObject::property(class QByteArray const &) const + ?property@QDeclarativeProperty@@QBE?AVQMetaProperty@@XZ @ 1910 NONAME ; class QMetaProperty QDeclarativeProperty::property(void) const + ?property@QDeclarativeViewSection@@QBE?AVQString@@XZ @ 1911 NONAME ; class QString QDeclarativeViewSection::property(void) const + ?property@QMetaObjectBuilder@@QBE?AVQMetaPropertyBuilder@@H@Z @ 1912 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::property(int) const + ?propertyCount@QMetaObjectBuilder@@QBEHXZ @ 1913 NONAME ; int QMetaObjectBuilder::propertyCount(void) const + ?propertyCreated@QDeclarativeOpenMetaObject@@MAEXHAAVQMetaPropertyBuilder@@@Z @ 1914 NONAME ; void QDeclarativeOpenMetaObject::propertyCreated(int, class QMetaPropertyBuilder &) + ?propertyCreated@QDeclarativeOpenMetaObjectType@@MAEXHAAVQMetaPropertyBuilder@@@Z @ 1915 NONAME ; void QDeclarativeOpenMetaObjectType::propertyCreated(int, class QMetaPropertyBuilder &) + ?propertyName@QDeclarativeDomDynamicProperty@@QBE?AVQByteArray@@XZ @ 1916 NONAME ; class QByteArray QDeclarativeDomDynamicProperty::propertyName(void) const + ?propertyName@QDeclarativeDomProperty@@QBE?AVQByteArray@@XZ @ 1917 NONAME ; class QByteArray QDeclarativeDomProperty::propertyName(void) const + ?propertyNameParts@QDeclarativeDomProperty@@QBE?AV?$QList@VQByteArray@@@@XZ @ 1918 NONAME ; class QList QDeclarativeDomProperty::propertyNameParts(void) const + ?propertyOffset@QDeclarativeOpenMetaObjectType@@QBEHXZ @ 1919 NONAME ; int QDeclarativeOpenMetaObjectType::propertyOffset(void) const + ?propertyRead@QDeclarativeOpenMetaObject@@MAEXH@Z @ 1920 NONAME ; void QDeclarativeOpenMetaObject::propertyRead(int) + ?propertyType@QDeclarativeDomDynamicProperty@@QBEHXZ @ 1921 NONAME ; int QDeclarativeDomDynamicProperty::propertyType(void) const + ?propertyType@QDeclarativeProperty@@QBEHXZ @ 1922 NONAME ; int QDeclarativeProperty::propertyType(void) const + ?propertyTypeCategory@QDeclarativeProperty@@QBE?AW4PropertyTypeCategory@1@XZ @ 1923 NONAME ; enum QDeclarativeProperty::PropertyTypeCategory QDeclarativeProperty::propertyTypeCategory(void) const + ?propertyTypeName@QDeclarativeDomDynamicProperty@@QBE?AVQByteArray@@XZ @ 1924 NONAME ; class QByteArray QDeclarativeDomDynamicProperty::propertyTypeName(void) const + ?propertyTypeName@QDeclarativeProperty@@QBEPBDXZ @ 1925 NONAME ; char const * QDeclarativeProperty::propertyTypeName(void) const + ?propertyValueInterceptorCast@QDeclarativeType@@QBEHXZ @ 1926 NONAME ; int QDeclarativeType::propertyValueInterceptorCast(void) const + ?propertyValueSourceCast@QDeclarativeType@@QBEHXZ @ 1927 NONAME ; int QDeclarativeType::propertyValueSourceCast(void) const + ?propertyWrite@QDeclarativeOpenMetaObject@@MAEXH@Z @ 1928 NONAME ; void QDeclarativeOpenMetaObject::propertyWrite(int) + ?qListTypeId@QDeclarativeType@@QBEHXZ @ 1929 NONAME ; int QDeclarativeType::qListTypeId(void) const + ?q_func@QDeclarativeContextPrivate@@AAEPAVQDeclarativeContext@@XZ @ 1930 NONAME ; class QDeclarativeContext * QDeclarativeContextPrivate::q_func(void) + ?q_func@QDeclarativeContextPrivate@@ABEPBVQDeclarativeContext@@XZ @ 1931 NONAME ; class QDeclarativeContext const * QDeclarativeContextPrivate::q_func(void) const + ?q_textChanged@QDeclarativeTextEdit@@AAEXXZ @ 1932 NONAME ; void QDeclarativeTextEdit::q_textChanged(void) + ?q_textChanged@QDeclarativeTextInput@@AAEXXZ @ 1933 NONAME ; void QDeclarativeTextInput::q_textChanged(void) + ?qmlAttachedProperties@QDeclarativeComponent@@SAPAVQDeclarativeComponentAttached@@PAVQObject@@@Z @ 1934 NONAME ; class QDeclarativeComponentAttached * QDeclarativeComponent::qmlAttachedProperties(class QObject *) + ?qmlAttachedProperties@QDeclarativeGridView@@SAPAVQDeclarativeGridViewAttached@@PAVQObject@@@Z @ 1935 NONAME ; class QDeclarativeGridViewAttached * QDeclarativeGridView::qmlAttachedProperties(class QObject *) + ?qmlAttachedProperties@QDeclarativeListView@@SAPAVQDeclarativeListViewAttached@@PAVQObject@@@Z @ 1936 NONAME ; class QDeclarativeListViewAttached * QDeclarativeListView::qmlAttachedProperties(class QObject *) + ?qmlAttachedProperties@QDeclarativePathView@@SAPAVQObject@@PAV2@@Z @ 1937 NONAME ; class QObject * QDeclarativePathView::qmlAttachedProperties(class QObject *) + ?qmlAttachedProperties@QDeclarativeVisualItemModel@@SAPAVQDeclarativeVisualItemModelAttached@@PAVQObject@@@Z @ 1938 NONAME ; class QDeclarativeVisualItemModelAttached * QDeclarativeVisualItemModel::qmlAttachedProperties(class QObject *) + ?qmlAttachedProperties@QDeclarativeWebView@@SAPAVQDeclarativeWebViewAttached@@PAVQObject@@@Z @ 1939 NONAME ; class QDeclarativeWebViewAttached * QDeclarativeWebView::qmlAttachedProperties(class QObject *) + ?qmlAttachedPropertiesObject@@YAPAVQObject@@PAHPBV1@PBUQMetaObject@@_N@Z @ 1940 NONAME ; class QObject * qmlAttachedPropertiesObject(int *, class QObject const *, struct QMetaObject const *, bool) + ?qmlAttachedPropertiesObjectById@@YAPAVQObject@@HPBV1@_N@Z @ 1941 NONAME ; class QObject * qmlAttachedPropertiesObjectById(int, class QObject const *, bool) + ?qmlContext@@YAPAVQDeclarativeContext@@PBVQObject@@@Z @ 1942 NONAME ; class QDeclarativeContext * qmlContext(class QObject const *) + ?qmlEngine@@YAPAVQDeclarativeEngine@@PBVQObject@@@Z @ 1943 NONAME ; class QDeclarativeEngine * qmlEngine(class QObject const *) + ?qmlExecuteDeferred@@YAXPAVQObject@@@Z @ 1944 NONAME ; void qmlExecuteDeferred(class QObject *) + ?qmlInfo@@YA?AVQDeclarativeInfo@@PBVQObject@@@Z @ 1945 NONAME ; class QDeclarativeInfo qmlInfo(class QObject const *) + ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@ABVQByteArray@@HH@Z @ 1946 NONAME ; class QDeclarativeType * QDeclarativeMetaType::qmlType(class QByteArray const &, int, int) + ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@H@Z @ 1947 NONAME ; class QDeclarativeType * QDeclarativeMetaType::qmlType(int) + ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@PBUQMetaObject@@@Z @ 1948 NONAME ; class QDeclarativeType * QDeclarativeMetaType::qmlType(struct QMetaObject const *) + ?qmlTypeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 1949 NONAME ; class QByteArray QDeclarativeType::qmlTypeName(void) const + ?qmlTypeNames@QDeclarativeMetaType@@SA?AV?$QList@VQByteArray@@@@XZ @ 1950 NONAME ; class QList QDeclarativeMetaType::qmlTypeNames(void) + ?qmlTypes@QDeclarativeMetaType@@SA?AV?$QList@PAVQDeclarativeType@@@@XZ @ 1951 NONAME ; class QList QDeclarativeMetaType::qmlTypes(void) + ?qt_metacall@QDeclarativeAnchorChanges@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1952 NONAME ; int QDeclarativeAnchorChanges::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeAnchors@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1953 NONAME ; int QDeclarativeAnchors::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeAnimatedImage@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1954 NONAME ; int QDeclarativeAnimatedImage::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeBasePositioner@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1955 NONAME ; int QDeclarativeBasePositioner::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeBehavior@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1956 NONAME ; int QDeclarativeBehavior::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeBind@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1957 NONAME ; int QDeclarativeBind::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeBorderImage@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1958 NONAME ; int QDeclarativeBorderImage::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeColumn@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1959 NONAME ; int QDeclarativeColumn::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeComponent@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1960 NONAME ; int QDeclarativeComponent::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeConnections@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1961 NONAME ; int QDeclarativeConnections::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeContext@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1962 NONAME ; int QDeclarativeContext::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeCurve@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1963 NONAME ; int QDeclarativeCurve::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDateTimeFormatter@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1964 NONAME ; int QDeclarativeDateTimeFormatter::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDebugClient@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1965 NONAME ; int QDeclarativeDebugClient::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDebugConnection@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1966 NONAME ; int QDeclarativeDebugConnection::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDebugEnginesQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1967 NONAME ; int QDeclarativeDebugEnginesQuery::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDebugExpressionQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1968 NONAME ; int QDeclarativeDebugExpressionQuery::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDebugObjectExpressionWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1969 NONAME ; int QDeclarativeDebugObjectExpressionWatch::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDebugObjectQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1970 NONAME ; int QDeclarativeDebugObjectQuery::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDebugPropertyWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1971 NONAME ; int QDeclarativeDebugPropertyWatch::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDebugQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1972 NONAME ; int QDeclarativeDebugQuery::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDebugRootContextQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1973 NONAME ; int QDeclarativeDebugRootContextQuery::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDebugService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1974 NONAME ; int QDeclarativeDebugService::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDebugWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1975 NONAME ; int QDeclarativeDebugWatch::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeDrag@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1976 NONAME ; int QDeclarativeDrag::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeEaseFollow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1977 NONAME ; int QDeclarativeEaseFollow::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1978 NONAME ; int QDeclarativeEngine::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeEngineDebug@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1979 NONAME ; int QDeclarativeEngineDebug::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeExpression@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1980 NONAME ; int QDeclarativeExpression::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeExtensionPlugin@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1981 NONAME ; int QDeclarativeExtensionPlugin::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeFlickable@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1982 NONAME ; int QDeclarativeFlickable::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeFlipable@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1983 NONAME ; int QDeclarativeFlipable::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeFlow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1984 NONAME ; int QDeclarativeFlow::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeFocusPanel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1985 NONAME ; int QDeclarativeFocusPanel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeFocusScope@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1986 NONAME ; int QDeclarativeFocusScope::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeFontLoader@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1987 NONAME ; int QDeclarativeFontLoader::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeGradient@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1988 NONAME ; int QDeclarativeGradient::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeGradientStop@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1989 NONAME ; int QDeclarativeGradientStop::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeGraphicsObjectContainer@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1990 NONAME ; int QDeclarativeGraphicsObjectContainer::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeGrid@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1991 NONAME ; int QDeclarativeGrid::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeGridView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1992 NONAME ; int QDeclarativeGridView::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeImage@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1993 NONAME ; int QDeclarativeImage::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeImageBase@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1994 NONAME ; int QDeclarativeImageBase::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeItem@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1995 NONAME ; int QDeclarativeItem::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeListModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1996 NONAME ; int QDeclarativeListModel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeListView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1997 NONAME ; int QDeclarativeListView::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeLoader@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1998 NONAME ; int QDeclarativeLoader::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeMouseArea@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1999 NONAME ; int QDeclarativeMouseArea::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeNumberFormatter@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2000 NONAME ; int QDeclarativeNumberFormatter::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePaintedItem@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2001 NONAME ; int QDeclarativePaintedItem::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeParentChange@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2002 NONAME ; int QDeclarativeParentChange::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeParticleMotion@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2003 NONAME ; int QDeclarativeParticleMotion::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeParticleMotionGravity@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2004 NONAME ; int QDeclarativeParticleMotionGravity::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeParticleMotionLinear@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2005 NONAME ; int QDeclarativeParticleMotionLinear::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeParticleMotionWander@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2006 NONAME ; int QDeclarativeParticleMotionWander::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeParticles@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2007 NONAME ; int QDeclarativeParticles::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePath@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2008 NONAME ; int QDeclarativePath::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePathAttribute@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2009 NONAME ; int QDeclarativePathAttribute::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePathCubic@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2010 NONAME ; int QDeclarativePathCubic::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePathElement@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2011 NONAME ; int QDeclarativePathElement::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePathLine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2012 NONAME ; int QDeclarativePathLine::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePathPercent@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2013 NONAME ; int QDeclarativePathPercent::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePathQuad@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2014 NONAME ; int QDeclarativePathQuad::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePathView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2015 NONAME ; int QDeclarativePathView::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePen@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2016 NONAME ; int QDeclarativePen::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePixmapReply@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2017 NONAME ; int QDeclarativePixmapReply::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePropertyChanges@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2018 NONAME ; int QDeclarativePropertyChanges::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePropertyMap@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2019 NONAME ; int QDeclarativePropertyMap::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeRectangle@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2020 NONAME ; int QDeclarativeRectangle::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeRepeater@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2021 NONAME ; int QDeclarativeRepeater::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeRow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2022 NONAME ; int QDeclarativeRow::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeScaleGrid@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2023 NONAME ; int QDeclarativeScaleGrid::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeSpringFollow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2024 NONAME ; int QDeclarativeSpringFollow::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeState@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2025 NONAME ; int QDeclarativeState::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeStateChangeScript@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2026 NONAME ; int QDeclarativeStateChangeScript::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeStateGroup@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2027 NONAME ; int QDeclarativeStateGroup::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeStateOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2028 NONAME ; int QDeclarativeStateOperation::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeSystemPalette@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2029 NONAME ; int QDeclarativeSystemPalette::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeText@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2030 NONAME ; int QDeclarativeText::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeTextEdit@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2031 NONAME ; int QDeclarativeTextEdit::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeTextInput@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2032 NONAME ; int QDeclarativeTextInput::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeTimer@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2033 NONAME ; int QDeclarativeTimer::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeTransition@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2034 NONAME ; int QDeclarativeTransition::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeValueType@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2035 NONAME ; int QDeclarativeValueType::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2036 NONAME ; int QDeclarativeView::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeViewSection@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2037 NONAME ; int QDeclarativeViewSection::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeVisualDataModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2038 NONAME ; int QDeclarativeVisualDataModel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeVisualItemModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2039 NONAME ; int QDeclarativeVisualItemModel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeVisualModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2040 NONAME ; int QDeclarativeVisualModel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeWebPage@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2041 NONAME ; int QDeclarativeWebPage::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeWebView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2042 NONAME ; int QDeclarativeWebView::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeXmlListModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2043 NONAME ; int QDeclarativeXmlListModel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativeXmlListModelRole@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2044 NONAME ; int QDeclarativeXmlListModelRole::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QListModelInterface@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2045 NONAME ; int QListModelInterface::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QPacketProtocol@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2046 NONAME ; int QPacketProtocol::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacast@QDeclarativeAnchorChanges@@UAEPAXPBD@Z @ 2047 NONAME ; void * QDeclarativeAnchorChanges::qt_metacast(char const *) + ?qt_metacast@QDeclarativeAnchors@@UAEPAXPBD@Z @ 2048 NONAME ; void * QDeclarativeAnchors::qt_metacast(char const *) + ?qt_metacast@QDeclarativeAnimatedImage@@UAEPAXPBD@Z @ 2049 NONAME ; void * QDeclarativeAnimatedImage::qt_metacast(char const *) + ?qt_metacast@QDeclarativeBasePositioner@@UAEPAXPBD@Z @ 2050 NONAME ; void * QDeclarativeBasePositioner::qt_metacast(char const *) + ?qt_metacast@QDeclarativeBehavior@@UAEPAXPBD@Z @ 2051 NONAME ; void * QDeclarativeBehavior::qt_metacast(char const *) + ?qt_metacast@QDeclarativeBind@@UAEPAXPBD@Z @ 2052 NONAME ; void * QDeclarativeBind::qt_metacast(char const *) + ?qt_metacast@QDeclarativeBorderImage@@UAEPAXPBD@Z @ 2053 NONAME ; void * QDeclarativeBorderImage::qt_metacast(char const *) + ?qt_metacast@QDeclarativeColumn@@UAEPAXPBD@Z @ 2054 NONAME ; void * QDeclarativeColumn::qt_metacast(char const *) + ?qt_metacast@QDeclarativeComponent@@UAEPAXPBD@Z @ 2055 NONAME ; void * QDeclarativeComponent::qt_metacast(char const *) + ?qt_metacast@QDeclarativeConnections@@UAEPAXPBD@Z @ 2056 NONAME ; void * QDeclarativeConnections::qt_metacast(char const *) + ?qt_metacast@QDeclarativeContext@@UAEPAXPBD@Z @ 2057 NONAME ; void * QDeclarativeContext::qt_metacast(char const *) + ?qt_metacast@QDeclarativeCurve@@UAEPAXPBD@Z @ 2058 NONAME ; void * QDeclarativeCurve::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDateTimeFormatter@@UAEPAXPBD@Z @ 2059 NONAME ; void * QDeclarativeDateTimeFormatter::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDebugClient@@UAEPAXPBD@Z @ 2060 NONAME ; void * QDeclarativeDebugClient::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDebugConnection@@UAEPAXPBD@Z @ 2061 NONAME ; void * QDeclarativeDebugConnection::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDebugEnginesQuery@@UAEPAXPBD@Z @ 2062 NONAME ; void * QDeclarativeDebugEnginesQuery::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDebugExpressionQuery@@UAEPAXPBD@Z @ 2063 NONAME ; void * QDeclarativeDebugExpressionQuery::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDebugObjectExpressionWatch@@UAEPAXPBD@Z @ 2064 NONAME ; void * QDeclarativeDebugObjectExpressionWatch::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDebugObjectQuery@@UAEPAXPBD@Z @ 2065 NONAME ; void * QDeclarativeDebugObjectQuery::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDebugPropertyWatch@@UAEPAXPBD@Z @ 2066 NONAME ; void * QDeclarativeDebugPropertyWatch::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDebugQuery@@UAEPAXPBD@Z @ 2067 NONAME ; void * QDeclarativeDebugQuery::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDebugRootContextQuery@@UAEPAXPBD@Z @ 2068 NONAME ; void * QDeclarativeDebugRootContextQuery::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDebugService@@UAEPAXPBD@Z @ 2069 NONAME ; void * QDeclarativeDebugService::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDebugWatch@@UAEPAXPBD@Z @ 2070 NONAME ; void * QDeclarativeDebugWatch::qt_metacast(char const *) + ?qt_metacast@QDeclarativeDrag@@UAEPAXPBD@Z @ 2071 NONAME ; void * QDeclarativeDrag::qt_metacast(char const *) + ?qt_metacast@QDeclarativeEaseFollow@@UAEPAXPBD@Z @ 2072 NONAME ; void * QDeclarativeEaseFollow::qt_metacast(char const *) + ?qt_metacast@QDeclarativeEngine@@UAEPAXPBD@Z @ 2073 NONAME ; void * QDeclarativeEngine::qt_metacast(char const *) + ?qt_metacast@QDeclarativeEngineDebug@@UAEPAXPBD@Z @ 2074 NONAME ; void * QDeclarativeEngineDebug::qt_metacast(char const *) + ?qt_metacast@QDeclarativeExpression@@UAEPAXPBD@Z @ 2075 NONAME ; void * QDeclarativeExpression::qt_metacast(char const *) + ?qt_metacast@QDeclarativeExtensionPlugin@@UAEPAXPBD@Z @ 2076 NONAME ; void * QDeclarativeExtensionPlugin::qt_metacast(char const *) + ?qt_metacast@QDeclarativeFlickable@@UAEPAXPBD@Z @ 2077 NONAME ; void * QDeclarativeFlickable::qt_metacast(char const *) + ?qt_metacast@QDeclarativeFlipable@@UAEPAXPBD@Z @ 2078 NONAME ; void * QDeclarativeFlipable::qt_metacast(char const *) + ?qt_metacast@QDeclarativeFlow@@UAEPAXPBD@Z @ 2079 NONAME ; void * QDeclarativeFlow::qt_metacast(char const *) + ?qt_metacast@QDeclarativeFocusPanel@@UAEPAXPBD@Z @ 2080 NONAME ; void * QDeclarativeFocusPanel::qt_metacast(char const *) + ?qt_metacast@QDeclarativeFocusScope@@UAEPAXPBD@Z @ 2081 NONAME ; void * QDeclarativeFocusScope::qt_metacast(char const *) + ?qt_metacast@QDeclarativeFontLoader@@UAEPAXPBD@Z @ 2082 NONAME ; void * QDeclarativeFontLoader::qt_metacast(char const *) + ?qt_metacast@QDeclarativeGradient@@UAEPAXPBD@Z @ 2083 NONAME ; void * QDeclarativeGradient::qt_metacast(char const *) + ?qt_metacast@QDeclarativeGradientStop@@UAEPAXPBD@Z @ 2084 NONAME ; void * QDeclarativeGradientStop::qt_metacast(char const *) + ?qt_metacast@QDeclarativeGraphicsObjectContainer@@UAEPAXPBD@Z @ 2085 NONAME ; void * QDeclarativeGraphicsObjectContainer::qt_metacast(char const *) + ?qt_metacast@QDeclarativeGrid@@UAEPAXPBD@Z @ 2086 NONAME ; void * QDeclarativeGrid::qt_metacast(char const *) + ?qt_metacast@QDeclarativeGridView@@UAEPAXPBD@Z @ 2087 NONAME ; void * QDeclarativeGridView::qt_metacast(char const *) + ?qt_metacast@QDeclarativeImage@@UAEPAXPBD@Z @ 2088 NONAME ; void * QDeclarativeImage::qt_metacast(char const *) + ?qt_metacast@QDeclarativeImageBase@@UAEPAXPBD@Z @ 2089 NONAME ; void * QDeclarativeImageBase::qt_metacast(char const *) + ?qt_metacast@QDeclarativeItem@@UAEPAXPBD@Z @ 2090 NONAME ; void * QDeclarativeItem::qt_metacast(char const *) + ?qt_metacast@QDeclarativeListModel@@UAEPAXPBD@Z @ 2091 NONAME ; void * QDeclarativeListModel::qt_metacast(char const *) + ?qt_metacast@QDeclarativeListView@@UAEPAXPBD@Z @ 2092 NONAME ; void * QDeclarativeListView::qt_metacast(char const *) + ?qt_metacast@QDeclarativeLoader@@UAEPAXPBD@Z @ 2093 NONAME ; void * QDeclarativeLoader::qt_metacast(char const *) + ?qt_metacast@QDeclarativeMouseArea@@UAEPAXPBD@Z @ 2094 NONAME ; void * QDeclarativeMouseArea::qt_metacast(char const *) + ?qt_metacast@QDeclarativeNumberFormatter@@UAEPAXPBD@Z @ 2095 NONAME ; void * QDeclarativeNumberFormatter::qt_metacast(char const *) + ?qt_metacast@QDeclarativePaintedItem@@UAEPAXPBD@Z @ 2096 NONAME ; void * QDeclarativePaintedItem::qt_metacast(char const *) + ?qt_metacast@QDeclarativeParentChange@@UAEPAXPBD@Z @ 2097 NONAME ; void * QDeclarativeParentChange::qt_metacast(char const *) + ?qt_metacast@QDeclarativeParticleMotion@@UAEPAXPBD@Z @ 2098 NONAME ; void * QDeclarativeParticleMotion::qt_metacast(char const *) + ?qt_metacast@QDeclarativeParticleMotionGravity@@UAEPAXPBD@Z @ 2099 NONAME ; void * QDeclarativeParticleMotionGravity::qt_metacast(char const *) + ?qt_metacast@QDeclarativeParticleMotionLinear@@UAEPAXPBD@Z @ 2100 NONAME ; void * QDeclarativeParticleMotionLinear::qt_metacast(char const *) + ?qt_metacast@QDeclarativeParticleMotionWander@@UAEPAXPBD@Z @ 2101 NONAME ; void * QDeclarativeParticleMotionWander::qt_metacast(char const *) + ?qt_metacast@QDeclarativeParticles@@UAEPAXPBD@Z @ 2102 NONAME ; void * QDeclarativeParticles::qt_metacast(char const *) + ?qt_metacast@QDeclarativePath@@UAEPAXPBD@Z @ 2103 NONAME ; void * QDeclarativePath::qt_metacast(char const *) + ?qt_metacast@QDeclarativePathAttribute@@UAEPAXPBD@Z @ 2104 NONAME ; void * QDeclarativePathAttribute::qt_metacast(char const *) + ?qt_metacast@QDeclarativePathCubic@@UAEPAXPBD@Z @ 2105 NONAME ; void * QDeclarativePathCubic::qt_metacast(char const *) + ?qt_metacast@QDeclarativePathElement@@UAEPAXPBD@Z @ 2106 NONAME ; void * QDeclarativePathElement::qt_metacast(char const *) + ?qt_metacast@QDeclarativePathLine@@UAEPAXPBD@Z @ 2107 NONAME ; void * QDeclarativePathLine::qt_metacast(char const *) + ?qt_metacast@QDeclarativePathPercent@@UAEPAXPBD@Z @ 2108 NONAME ; void * QDeclarativePathPercent::qt_metacast(char const *) + ?qt_metacast@QDeclarativePathQuad@@UAEPAXPBD@Z @ 2109 NONAME ; void * QDeclarativePathQuad::qt_metacast(char const *) + ?qt_metacast@QDeclarativePathView@@UAEPAXPBD@Z @ 2110 NONAME ; void * QDeclarativePathView::qt_metacast(char const *) + ?qt_metacast@QDeclarativePen@@UAEPAXPBD@Z @ 2111 NONAME ; void * QDeclarativePen::qt_metacast(char const *) + ?qt_metacast@QDeclarativePixmapReply@@UAEPAXPBD@Z @ 2112 NONAME ; void * QDeclarativePixmapReply::qt_metacast(char const *) + ?qt_metacast@QDeclarativePropertyChanges@@UAEPAXPBD@Z @ 2113 NONAME ; void * QDeclarativePropertyChanges::qt_metacast(char const *) + ?qt_metacast@QDeclarativePropertyMap@@UAEPAXPBD@Z @ 2114 NONAME ; void * QDeclarativePropertyMap::qt_metacast(char const *) + ?qt_metacast@QDeclarativeRectangle@@UAEPAXPBD@Z @ 2115 NONAME ; void * QDeclarativeRectangle::qt_metacast(char const *) + ?qt_metacast@QDeclarativeRepeater@@UAEPAXPBD@Z @ 2116 NONAME ; void * QDeclarativeRepeater::qt_metacast(char const *) + ?qt_metacast@QDeclarativeRow@@UAEPAXPBD@Z @ 2117 NONAME ; void * QDeclarativeRow::qt_metacast(char const *) + ?qt_metacast@QDeclarativeScaleGrid@@UAEPAXPBD@Z @ 2118 NONAME ; void * QDeclarativeScaleGrid::qt_metacast(char const *) + ?qt_metacast@QDeclarativeSpringFollow@@UAEPAXPBD@Z @ 2119 NONAME ; void * QDeclarativeSpringFollow::qt_metacast(char const *) + ?qt_metacast@QDeclarativeState@@UAEPAXPBD@Z @ 2120 NONAME ; void * QDeclarativeState::qt_metacast(char const *) + ?qt_metacast@QDeclarativeStateChangeScript@@UAEPAXPBD@Z @ 2121 NONAME ; void * QDeclarativeStateChangeScript::qt_metacast(char const *) + ?qt_metacast@QDeclarativeStateGroup@@UAEPAXPBD@Z @ 2122 NONAME ; void * QDeclarativeStateGroup::qt_metacast(char const *) + ?qt_metacast@QDeclarativeStateOperation@@UAEPAXPBD@Z @ 2123 NONAME ; void * QDeclarativeStateOperation::qt_metacast(char const *) + ?qt_metacast@QDeclarativeSystemPalette@@UAEPAXPBD@Z @ 2124 NONAME ; void * QDeclarativeSystemPalette::qt_metacast(char const *) + ?qt_metacast@QDeclarativeText@@UAEPAXPBD@Z @ 2125 NONAME ; void * QDeclarativeText::qt_metacast(char const *) + ?qt_metacast@QDeclarativeTextEdit@@UAEPAXPBD@Z @ 2126 NONAME ; void * QDeclarativeTextEdit::qt_metacast(char const *) + ?qt_metacast@QDeclarativeTextInput@@UAEPAXPBD@Z @ 2127 NONAME ; void * QDeclarativeTextInput::qt_metacast(char const *) + ?qt_metacast@QDeclarativeTimer@@UAEPAXPBD@Z @ 2128 NONAME ; void * QDeclarativeTimer::qt_metacast(char const *) + ?qt_metacast@QDeclarativeTransition@@UAEPAXPBD@Z @ 2129 NONAME ; void * QDeclarativeTransition::qt_metacast(char const *) + ?qt_metacast@QDeclarativeValueType@@UAEPAXPBD@Z @ 2130 NONAME ; void * QDeclarativeValueType::qt_metacast(char const *) + ?qt_metacast@QDeclarativeView@@UAEPAXPBD@Z @ 2131 NONAME ; void * QDeclarativeView::qt_metacast(char const *) + ?qt_metacast@QDeclarativeViewSection@@UAEPAXPBD@Z @ 2132 NONAME ; void * QDeclarativeViewSection::qt_metacast(char const *) + ?qt_metacast@QDeclarativeVisualDataModel@@UAEPAXPBD@Z @ 2133 NONAME ; void * QDeclarativeVisualDataModel::qt_metacast(char const *) + ?qt_metacast@QDeclarativeVisualItemModel@@UAEPAXPBD@Z @ 2134 NONAME ; void * QDeclarativeVisualItemModel::qt_metacast(char const *) + ?qt_metacast@QDeclarativeVisualModel@@UAEPAXPBD@Z @ 2135 NONAME ; void * QDeclarativeVisualModel::qt_metacast(char const *) + ?qt_metacast@QDeclarativeWebPage@@UAEPAXPBD@Z @ 2136 NONAME ; void * QDeclarativeWebPage::qt_metacast(char const *) + ?qt_metacast@QDeclarativeWebView@@UAEPAXPBD@Z @ 2137 NONAME ; void * QDeclarativeWebView::qt_metacast(char const *) + ?qt_metacast@QDeclarativeXmlListModel@@UAEPAXPBD@Z @ 2138 NONAME ; void * QDeclarativeXmlListModel::qt_metacast(char const *) + ?qt_metacast@QDeclarativeXmlListModelRole@@UAEPAXPBD@Z @ 2139 NONAME ; void * QDeclarativeXmlListModelRole::qt_metacast(char const *) + ?qt_metacast@QListModelInterface@@UAEPAXPBD@Z @ 2140 NONAME ; void * QListModelInterface::qt_metacast(char const *) + ?qt_metacast@QPacketProtocol@@UAEPAXPBD@Z @ 2141 NONAME ; void * QPacketProtocol::qt_metacast(char const *) + ?qualifier@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 2142 NONAME ; class QString QDeclarativeDomImport::qualifier(void) const + ?query@QDeclarativeXmlListModel@@QBE?AVQString@@XZ @ 2143 NONAME ; class QString QDeclarativeXmlListModel::query(void) const + ?query@QDeclarativeXmlListModelRole@@QBE?AVQString@@XZ @ 2144 NONAME ; class QString QDeclarativeXmlListModelRole::query(void) const + ?queryAvailableEngines@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugEnginesQuery@@PAVQObject@@@Z @ 2145 NONAME ; class QDeclarativeDebugEnginesQuery * QDeclarativeEngineDebug::queryAvailableEngines(class QObject *) + ?queryCompleted@QDeclarativeXmlListModel@@AAEXHH@Z @ 2146 NONAME ; void QDeclarativeXmlListModel::queryCompleted(int, int) + ?queryExpressionResult@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugExpressionQuery@@HABVQString@@PAVQObject@@@Z @ 2147 NONAME ; class QDeclarativeDebugExpressionQuery * QDeclarativeEngineDebug::queryExpressionResult(int, class QString const &, class QObject *) + ?queryId@QDeclarativeDebugWatch@@QBEHXZ @ 2148 NONAME ; int QDeclarativeDebugWatch::queryId(void) const + ?queryObject@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectQuery@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 2149 NONAME ; class QDeclarativeDebugObjectQuery * QDeclarativeEngineDebug::queryObject(class QDeclarativeDebugObjectReference const &, class QObject *) + ?queryObjectRecursive@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectQuery@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 2150 NONAME ; class QDeclarativeDebugObjectQuery * QDeclarativeEngineDebug::queryObjectRecursive(class QDeclarativeDebugObjectReference const &, class QObject *) + ?queryRootContexts@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugRootContextQuery@@ABVQDeclarativeDebugEngineReference@@PAVQObject@@@Z @ 2151 NONAME ; class QDeclarativeDebugRootContextQuery * QDeclarativeEngineDebug::queryRootContexts(class QDeclarativeDebugEngineReference const &, class QObject *) + ?quit@QDeclarativeEngine@@IAEXXZ @ 2152 NONAME ; void QDeclarativeEngine::quit(void) + ?radius@QDeclarativeRectangle@@QBEMXZ @ 2153 NONAME ; float QDeclarativeRectangle::radius(void) const + ?radiusChanged@QDeclarativeRectangle@@IAEXXZ @ 2154 NONAME ; void QDeclarativeRectangle::radiusChanged(void) + ?read@QDeclarativeProperty@@QBE?AVQVariant@@XZ @ 2155 NONAME ; class QVariant QDeclarativeProperty::read(void) const + ?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@@Z @ 2156 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &) + ?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@@Z @ 2157 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &, class QDeclarativeContext *) + ?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@PAVQDeclarativeEngine@@@Z @ 2158 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &, class QDeclarativeEngine *) + ?read@QPacketProtocol@@QAE?AVQPacket@@XZ @ 2159 NONAME ; class QPacket QPacketProtocol::read(void) + ?readOnlyChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 2160 NONAME ; void QDeclarativeTextEdit::readOnlyChanged(bool) + ?readOnlyChanged@QDeclarativeTextInput@@IAEX_N@Z @ 2161 NONAME ; void QDeclarativeTextInput::readOnlyChanged(bool) + ?readyRead@QPacketProtocol@@IAEXXZ @ 2162 NONAME ; void QPacketProtocol::readyRead(void) + ?rectFFromString@QDeclarativeStringConverters@@YA?AVQRectF@@ABVQString@@PA_N@Z @ 2163 NONAME ; class QRectF QDeclarativeStringConverters::rectFFromString(class QString const &, bool *) + ?refill@QDeclarativeGridView@@AAEXXZ @ 2164 NONAME ; void QDeclarativeGridView::refill(void) + ?refill@QDeclarativeListView@@AAEXXZ @ 2165 NONAME ; void QDeclarativeListView::refill(void) + ?refill@QDeclarativePathView@@AAEXXZ @ 2166 NONAME ; void QDeclarativePathView::refill(void) + ?refreshExpressions@QDeclarativeContextPrivate@@QAEXXZ @ 2167 NONAME ; void QDeclarativeContextPrivate::refreshExpressions(void) + ?regenerate@QDeclarativeRepeater@@AAEXXZ @ 2168 NONAME ; void QDeclarativeRepeater::regenerate(void) + ?registerCustomStringConverter@QDeclarativeMetaType@@SAXHP6A?AVQVariant@@ABVQString@@@Z@Z @ 2169 NONAME ; void QDeclarativeMetaType::registerCustomStringConverter(int, class QVariant (*)(class QString const &)) + ?registerType@QDeclarativePrivate@@YAHABURegisterInterface@1@@Z @ 2170 NONAME ; int QDeclarativePrivate::registerType(struct QDeclarativePrivate::RegisterInterface const &) + ?registerType@QDeclarativePrivate@@YAHABURegisterType@1@@Z @ 2171 NONAME ; int QDeclarativePrivate::registerType(struct QDeclarativePrivate::RegisterType const &) + ?relatedMetaObject@QMetaObjectBuilder@@QBEPBUQMetaObject@@H@Z @ 2172 NONAME ; struct QMetaObject const * QMetaObjectBuilder::relatedMetaObject(int) const + ?relatedMetaObjectCount@QMetaObjectBuilder@@QBEHXZ @ 2173 NONAME ; int QMetaObjectBuilder::relatedMetaObjectCount(void) const + ?release@QDeclarativePixmapReply@@AAE_N_N@Z @ 2174 NONAME ; bool QDeclarativePixmapReply::release(bool) + ?release@QDeclarativeVisualDataModel@@UAE?AV?$QFlags@W4ReleaseFlag@QDeclarativeVisualModel@@@@PAVQDeclarativeItem@@@Z @ 2175 NONAME ; class QFlags QDeclarativeVisualDataModel::release(class QDeclarativeItem *) + ?release@QDeclarativeVisualItemModel@@UAE?AV?$QFlags@W4ReleaseFlag@QDeclarativeVisualModel@@@@PAVQDeclarativeItem@@@Z @ 2176 NONAME ; class QFlags QDeclarativeVisualItemModel::release(class QDeclarativeItem *) + ?released@QDeclarativeMouseArea@@IAEXPAVQDeclarativeMouseEvent@@@Z @ 2177 NONAME ; void QDeclarativeMouseArea::released(class QDeclarativeMouseEvent *) + ?reload@QDeclarativeXmlListModel@@QAEXXZ @ 2178 NONAME ; void QDeclarativeXmlListModel::reload(void) + ?reloadAction@QDeclarativeWebView@@QBEPAVQAction@@XZ @ 2179 NONAME ; class QAction * QDeclarativeWebView::reloadAction(void) const + ?remove@QDeclarativeListModel@@QAEXH@Z @ 2180 NONAME ; void QDeclarativeListModel::remove(int) + ?removeClassInfo@QMetaObjectBuilder@@QAEXH@Z @ 2181 NONAME ; void QMetaObjectBuilder::removeClassInfo(int) + ?removeConstructor@QMetaObjectBuilder@@QAEXH@Z @ 2182 NONAME ; void QMetaObjectBuilder::removeConstructor(int) + ?removeEnumerator@QMetaObjectBuilder@@QAEXH@Z @ 2183 NONAME ; void QMetaObjectBuilder::removeEnumerator(int) + ?removeImageProvider@QDeclarativeEngine@@QAEXABVQString@@@Z @ 2184 NONAME ; void QDeclarativeEngine::removeImageProvider(class QString const &) + ?removeKey@QMetaEnumBuilder@@QAEXH@Z @ 2185 NONAME ; void QMetaEnumBuilder::removeKey(int) + ?removeMethod@QMetaObjectBuilder@@QAEXH@Z @ 2186 NONAME ; void QMetaObjectBuilder::removeMethod(int) + ?removeNotifySignal@QMetaPropertyBuilder@@QAEXXZ @ 2187 NONAME ; void QMetaPropertyBuilder::removeNotifySignal(void) + ?removeProperty@QMetaObjectBuilder@@QAEXH@Z @ 2188 NONAME ; void QMetaObjectBuilder::removeProperty(int) + ?removeRelatedMetaObject@QMetaObjectBuilder@@QAEXH@Z @ 2189 NONAME ; void QMetaObjectBuilder::removeRelatedMetaObject(int) + ?removeState@QDeclarativeStateGroup@@AAEXPAVQDeclarativeState@@@Z @ 2190 NONAME ; void QDeclarativeStateGroup::removeState(class QDeclarativeState *) + ?removeWatch@QDeclarativeEngineDebug@@QAEXPAVQDeclarativeDebugWatch@@@Z @ 2191 NONAME ; void QDeclarativeEngineDebug::removeWatch(class QDeclarativeDebugWatch *) + ?renderingEnabled@QDeclarativeWebView@@QBE_NXZ @ 2192 NONAME ; bool QDeclarativeWebView::renderingEnabled(void) const + ?renderingEnabledChanged@QDeclarativeWebView@@IAEXXZ @ 2193 NONAME ; void QDeclarativeWebView::renderingEnabledChanged(void) + ?replyFinished@QDeclarativeFontLoader@@AAEXXZ @ 2194 NONAME ; void QDeclarativeFontLoader::replyFinished(void) + ?request@QDeclarativePixmapCache@@SAPAVQDeclarativePixmapReply@@PAVQDeclarativeEngine@@ABVQUrl@@@Z @ 2195 NONAME ; class QDeclarativePixmapReply * QDeclarativePixmapCache::request(class QDeclarativeEngine *, class QUrl const &) + ?requestFinished@QDeclarativeBorderImage@@EAEXXZ @ 2196 NONAME ; void QDeclarativeBorderImage::requestFinished(void) + ?requestFinished@QDeclarativeImageBase@@EAEXXZ @ 2197 NONAME ; void QDeclarativeImageBase::requestFinished(void) + ?requestFinished@QDeclarativeXmlListModel@@AAEXXZ @ 2198 NONAME ; void QDeclarativeXmlListModel::requestFinished(void) + ?requestProgress@QDeclarativeImageBase@@AAEX_J0@Z @ 2199 NONAME ; void QDeclarativeImageBase::requestProgress(long long, long long) + ?requestProgress@QDeclarativeXmlListModel@@AAEX_J0@Z @ 2200 NONAME ; void QDeclarativeXmlListModel::requestProgress(long long, long long) + ?reset@QDeclarativeAnchorChanges@@QBE?AVQString@@XZ @ 2201 NONAME ; class QString QDeclarativeAnchorChanges::reset(void) const + ?reset@QDeclarativeCompiler@@CAXPAVQDeclarativeCompiledData@@@Z @ 2202 NONAME ; void QDeclarativeCompiler::reset(class QDeclarativeCompiledData *) + ?reset@QDeclarativeProperty@@QBE_NXZ @ 2203 NONAME ; bool QDeclarativeProperty::reset(void) const + ?resetBaseline@QDeclarativeAnchors@@QAEXXZ @ 2204 NONAME ; void QDeclarativeAnchors::resetBaseline(void) + ?resetBottom@QDeclarativeAnchors@@QAEXXZ @ 2205 NONAME ; void QDeclarativeAnchors::resetBottom(void) + ?resetCenterIn@QDeclarativeAnchors@@QAEXXZ @ 2206 NONAME ; void QDeclarativeAnchors::resetCenterIn(void) + ?resetFill@QDeclarativeAnchors@@QAEXXZ @ 2207 NONAME ; void QDeclarativeAnchors::resetFill(void) + ?resetHeight@QDeclarativeItem@@QAEXXZ @ 2208 NONAME ; void QDeclarativeItem::resetHeight(void) + ?resetHorizontalCenter@QDeclarativeAnchors@@QAEXXZ @ 2209 NONAME ; void QDeclarativeAnchors::resetHorizontalCenter(void) + ?resetLeft@QDeclarativeAnchors@@QAEXXZ @ 2210 NONAME ; void QDeclarativeAnchors::resetLeft(void) + ?resetRight@QDeclarativeAnchors@@QAEXXZ @ 2211 NONAME ; void QDeclarativeAnchors::resetRight(void) + ?resetTop@QDeclarativeAnchors@@QAEXXZ @ 2212 NONAME ; void QDeclarativeAnchors::resetTop(void) + ?resetVerticalCenter@QDeclarativeAnchors@@QAEXXZ @ 2213 NONAME ; void QDeclarativeAnchors::resetVerticalCenter(void) + ?resetWidth@QDeclarativeItem@@QAEXXZ @ 2214 NONAME ; void QDeclarativeItem::resetWidth(void) + ?resizeEvent@QDeclarativeView@@MAEXPAVQResizeEvent@@@Z @ 2215 NONAME ; void QDeclarativeView::resizeEvent(class QResizeEvent *) + ?resizeMode@QDeclarativeLoader@@QBE?AW4ResizeMode@1@XZ @ 2216 NONAME ; enum QDeclarativeLoader::ResizeMode QDeclarativeLoader::resizeMode(void) const + ?resizeMode@QDeclarativeView@@QBE?AW4ResizeMode@1@XZ @ 2217 NONAME ; enum QDeclarativeView::ResizeMode QDeclarativeView::resizeMode(void) const + ?resizeModeChanged@QDeclarativeLoader@@IAEXXZ @ 2218 NONAME ; void QDeclarativeLoader::resizeModeChanged(void) + ?resolvedUrl@QDeclarativeContext@@QAE?AVQUrl@@ABV2@@Z @ 2219 NONAME ; class QUrl QDeclarativeContext::resolvedUrl(class QUrl const &) + ?resources@QDeclarativeItem@@QAE?AU?$QDeclarativeListProperty@VQObject@@@@XZ @ 2220 NONAME ; struct QDeclarativeListProperty QDeclarativeItem::resources(void) + ?restart@QDeclarativeTimer@@QAEXXZ @ 2221 NONAME ; void QDeclarativeTimer::restart(void) + ?restoreEntryValues@QDeclarativePropertyChanges@@QBE_NXZ @ 2222 NONAME ; bool QDeclarativePropertyChanges::restoreEntryValues(void) const + ?result@QDeclarativeDebugExpressionQuery@@QBE?AVQVariant@@XZ @ 2223 NONAME ; class QVariant QDeclarativeDebugExpressionQuery::result(void) const + ?returnType@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 2224 NONAME ; class QByteArray QMetaMethodBuilder::returnType(void) const + ?reverse@QDeclarativeAnchorChanges@@UAEXXZ @ 2225 NONAME ; void QDeclarativeAnchorChanges::reverse(void) + ?reverse@QDeclarativeParentChange@@UAEXXZ @ 2226 NONAME ; void QDeclarativeParentChange::reverse(void) + ?reversible@QDeclarativeTransition@@QBE_NXZ @ 2227 NONAME ; bool QDeclarativeTransition::reversible(void) const + ?reversingMode@QDeclarativeEaseFollow@@QBE?AW4ReversingMode@1@XZ @ 2228 NONAME ; enum QDeclarativeEaseFollow::ReversingMode QDeclarativeEaseFollow::reversingMode(void) const + ?reversingModeChanged@QDeclarativeEaseFollow@@IAEXXZ @ 2229 NONAME ; void QDeclarativeEaseFollow::reversingModeChanged(void) + ?rewind@QDeclarativeAnchorChanges@@UAEXXZ @ 2230 NONAME ; void QDeclarativeAnchorChanges::rewind(void) + ?rewind@QDeclarativeParentChange@@UAEXXZ @ 2231 NONAME ; void QDeclarativeParentChange::rewind(void) + ?right@QDeclarativeAnchorChanges@@QBE?AVQDeclarativeAnchorLine@@XZ @ 2232 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchorChanges::right(void) const + ?right@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 2233 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::right(void) const + ?right@QDeclarativeItem@@QBE?AVQDeclarativeAnchorLine@@XZ @ 2234 NONAME ; class QDeclarativeAnchorLine QDeclarativeItem::right(void) const + ?right@QDeclarativeScaleGrid@@QBEHXZ @ 2235 NONAME ; int QDeclarativeScaleGrid::right(void) const + ?rightChanged@QDeclarativeAnchors@@IAEXXZ @ 2236 NONAME ; void QDeclarativeAnchors::rightChanged(void) + ?rightMargin@QDeclarativeAnchors@@QBEMXZ @ 2237 NONAME ; float QDeclarativeAnchors::rightMargin(void) const + ?rightMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 2238 NONAME ; void QDeclarativeAnchors::rightMarginChanged(void) + ?roleObjects@QDeclarativeXmlListModel@@QAE?AU?$QDeclarativeListProperty@VQDeclarativeXmlListModelRole@@@@XZ @ 2239 NONAME ; struct QDeclarativeListProperty QDeclarativeXmlListModel::roleObjects(void) + ?roles@QDeclarativeListModel@@UBE?AV?$QList@H@@XZ @ 2240 NONAME ; class QList QDeclarativeListModel::roles(void) const + ?roles@QDeclarativeXmlListModel@@UBE?AV?$QList@H@@XZ @ 2241 NONAME ; class QList QDeclarativeXmlListModel::roles(void) const + ?rootContext@QDeclarativeDebugRootContextQuery@@QBE?AVQDeclarativeDebugContextReference@@XZ @ 2242 NONAME ; class QDeclarativeDebugContextReference QDeclarativeDebugRootContextQuery::rootContext(void) const + ?rootContext@QDeclarativeEngine@@QAEPAVQDeclarativeContext@@XZ @ 2243 NONAME ; class QDeclarativeContext * QDeclarativeEngine::rootContext(void) + ?rootContext@QDeclarativeView@@QAEPAVQDeclarativeContext@@XZ @ 2244 NONAME ; class QDeclarativeContext * QDeclarativeView::rootContext(void) + ?rootIndex@QDeclarativeVisualDataModel@@QBE?AVQModelIndex@@XZ @ 2245 NONAME ; class QModelIndex QDeclarativeVisualDataModel::rootIndex(void) const + ?rootIndexChanged@QDeclarativeVisualDataModel@@IAEXXZ @ 2246 NONAME ; void QDeclarativeVisualDataModel::rootIndexChanged(void) + ?rootObject@QDeclarativeDomDocument@@QBE?AVQDeclarativeDomObject@@XZ @ 2247 NONAME ; class QDeclarativeDomObject QDeclarativeDomDocument::rootObject(void) const + ?rootObject@QDeclarativeView@@QBEPAVQGraphicsObject@@XZ @ 2248 NONAME ; class QGraphicsObject * QDeclarativeView::rootObject(void) const + ?rotation@QDeclarativeParentChange@@QBEMXZ @ 2249 NONAME ; float QDeclarativeParentChange::rotation(void) const + ?rotationIsSet@QDeclarativeParentChange@@QBE_NXZ @ 2250 NONAME ; bool QDeclarativeParentChange::rotationIsSet(void) const + ?rows@QDeclarativeGrid@@QBEHXZ @ 2251 NONAME ; int QDeclarativeGrid::rows(void) const + ?rowsChanged@QDeclarativeGrid@@IAEXXZ @ 2252 NONAME ; void QDeclarativeGrid::rowsChanged(void) + ?runningChanged@QDeclarativeTimer@@IAEXXZ @ 2253 NONAME ; void QDeclarativeTimer::runningChanged(void) + ?saveComponentState@QDeclarativeCompiler@@AAEXXZ @ 2254 NONAME ; void QDeclarativeCompiler::saveComponentState(void) + ?saveCurrentValues@QDeclarativeAnchorChanges@@UAEXXZ @ 2255 NONAME ; void QDeclarativeAnchorChanges::saveCurrentValues(void) + ?saveCurrentValues@QDeclarativeParentChange@@UAEXXZ @ 2256 NONAME ; void QDeclarativeParentChange::saveCurrentValues(void) + ?saveOriginals@QDeclarativeAnchorChanges@@UAEXXZ @ 2257 NONAME ; void QDeclarativeAnchorChanges::saveOriginals(void) + ?saveOriginals@QDeclarativeParentChange@@UAEXXZ @ 2258 NONAME ; void QDeclarativeParentChange::saveOriginals(void) + ?scale@QDeclarativeParentChange@@QBEMXZ @ 2259 NONAME ; float QDeclarativeParentChange::scale(void) const + ?scaleIsSet@QDeclarativeParentChange@@QBE_NXZ @ 2260 NONAME ; bool QDeclarativeParentChange::scaleIsSet(void) const + ?sceneEvent@QDeclarativeFocusPanel@@MAE_NPAVQEvent@@@Z @ 2261 NONAME ; bool QDeclarativeFocusPanel::sceneEvent(class QEvent *) + ?sceneEvent@QDeclarativeItem@@MAE_NPAVQEvent@@@Z @ 2262 NONAME ; bool QDeclarativeItem::sceneEvent(class QEvent *) + ?sceneEvent@QDeclarativeMouseArea@@MAE_NPAVQEvent@@@Z @ 2263 NONAME ; bool QDeclarativeMouseArea::sceneEvent(class QEvent *) + ?sceneEvent@QDeclarativeWebView@@MAE_NPAVQEvent@@@Z @ 2264 NONAME ; bool QDeclarativeWebView::sceneEvent(class QEvent *) + ?sceneEventFilter@QDeclarativeFlickable@@MAE_NPAVQGraphicsItem@@PAVQEvent@@@Z @ 2265 NONAME ; bool QDeclarativeFlickable::sceneEventFilter(class QGraphicsItem *, class QEvent *) + ?sceneEventFilter@QDeclarativePathView@@MAE_NPAVQGraphicsItem@@PAVQEvent@@@Z @ 2266 NONAME ; bool QDeclarativePathView::sceneEventFilter(class QGraphicsItem *, class QEvent *) + ?sceneHoverMoveEventToMouseEvent@QDeclarativeWebView@@AAEPAVQMouseEvent@@PAVQGraphicsSceneHoverEvent@@@Z @ 2267 NONAME ; class QMouseEvent * QDeclarativeWebView::sceneHoverMoveEventToMouseEvent(class QGraphicsSceneHoverEvent *) + ?sceneMouseEventToMouseEvent@QDeclarativeWebView@@AAEPAVQMouseEvent@@PAVQGraphicsSceneMouseEvent@@@Z @ 2268 NONAME ; class QMouseEvent * QDeclarativeWebView::sceneMouseEventToMouseEvent(class QGraphicsSceneMouseEvent *) + ?sceneResized@QDeclarativeView@@IAEXVQSize@@@Z @ 2269 NONAME ; void QDeclarativeView::sceneResized(class QSize) + ?sciRequestFinished@QDeclarativeBorderImage@@AAEXXZ @ 2270 NONAME ; void QDeclarativeBorderImage::sciRequestFinished(void) + ?scopeObject@QDeclarativeExpression@@QBEPAVQObject@@XZ @ 2271 NONAME ; class QObject * QDeclarativeExpression::scopeObject(void) const + ?scopeObject@QDeclarativeScriptString@@QBEPAVQObject@@XZ @ 2272 NONAME ; class QObject * QDeclarativeScriptString::scopeObject(void) const + ?script@QDeclarativeScriptString@@QBE?AVQString@@XZ @ 2273 NONAME ; class QString QDeclarativeScriptString::script(void) const + ?script@QDeclarativeStateChangeScript@@QBE?AVQDeclarativeScriptString@@XZ @ 2274 NONAME ; class QDeclarativeScriptString QDeclarativeStateChangeScript::script(void) const + ?sectionCriteria@QDeclarativeListView@@QAEPAVQDeclarativeViewSection@@XZ @ 2275 NONAME ; class QDeclarativeViewSection * QDeclarativeListView::sectionCriteria(void) + ?sectionString@QDeclarativeViewSection@@QAE?AVQString@@ABV2@@Z @ 2276 NONAME ; class QString QDeclarativeViewSection::sectionString(class QString const &) + ?selectAll@QDeclarativeTextEdit@@QAEXXZ @ 2277 NONAME ; void QDeclarativeTextEdit::selectAll(void) + ?selectAll@QDeclarativeTextInput@@QAEXXZ @ 2278 NONAME ; void QDeclarativeTextInput::selectAll(void) + ?selectedText@QDeclarativeTextEdit@@QBE?AVQString@@XZ @ 2279 NONAME ; class QString QDeclarativeTextEdit::selectedText(void) const + ?selectedText@QDeclarativeTextInput@@QBE?AVQString@@XZ @ 2280 NONAME ; class QString QDeclarativeTextInput::selectedText(void) const + ?selectedTextChanged@QDeclarativeTextInput@@IAEXXZ @ 2281 NONAME ; void QDeclarativeTextInput::selectedTextChanged(void) + ?selectedTextColor@QDeclarativeTextEdit@@QBE?AVQColor@@XZ @ 2282 NONAME ; class QColor QDeclarativeTextEdit::selectedTextColor(void) const + ?selectedTextColor@QDeclarativeTextInput@@QBE?AVQColor@@XZ @ 2283 NONAME ; class QColor QDeclarativeTextInput::selectedTextColor(void) const + ?selectedTextColorChanged@QDeclarativeTextEdit@@IAEXABVQColor@@@Z @ 2284 NONAME ; void QDeclarativeTextEdit::selectedTextColorChanged(class QColor const &) + ?selectedTextColorChanged@QDeclarativeTextInput@@IAEXABVQColor@@@Z @ 2285 NONAME ; void QDeclarativeTextInput::selectedTextColorChanged(class QColor const &) + ?selectionChanged@QDeclarativeTextEdit@@IAEXXZ @ 2286 NONAME ; void QDeclarativeTextEdit::selectionChanged(void) + ?selectionChanged@QDeclarativeTextInput@@AAEXXZ @ 2287 NONAME ; void QDeclarativeTextInput::selectionChanged(void) + ?selectionColor@QDeclarativeTextEdit@@QBE?AVQColor@@XZ @ 2288 NONAME ; class QColor QDeclarativeTextEdit::selectionColor(void) const + ?selectionColor@QDeclarativeTextInput@@QBE?AVQColor@@XZ @ 2289 NONAME ; class QColor QDeclarativeTextInput::selectionColor(void) const + ?selectionColorChanged@QDeclarativeTextEdit@@IAEXABVQColor@@@Z @ 2290 NONAME ; void QDeclarativeTextEdit::selectionColorChanged(class QColor const &) + ?selectionColorChanged@QDeclarativeTextInput@@IAEXABVQColor@@@Z @ 2291 NONAME ; void QDeclarativeTextInput::selectionColorChanged(class QColor const &) + ?selectionEnd@QDeclarativeTextEdit@@QBEHXZ @ 2292 NONAME ; int QDeclarativeTextEdit::selectionEnd(void) const + ?selectionEnd@QDeclarativeTextInput@@QBEHXZ @ 2293 NONAME ; int QDeclarativeTextInput::selectionEnd(void) const + ?selectionEndChanged@QDeclarativeTextEdit@@IAEXXZ @ 2294 NONAME ; void QDeclarativeTextEdit::selectionEndChanged(void) + ?selectionEndChanged@QDeclarativeTextInput@@IAEXXZ @ 2295 NONAME ; void QDeclarativeTextInput::selectionEndChanged(void) + ?selectionStart@QDeclarativeTextEdit@@QBEHXZ @ 2296 NONAME ; int QDeclarativeTextEdit::selectionStart(void) const + ?selectionStart@QDeclarativeTextInput@@QBEHXZ @ 2297 NONAME ; int QDeclarativeTextInput::selectionStart(void) const + ?selectionStartChanged@QDeclarativeTextEdit@@IAEXXZ @ 2298 NONAME ; void QDeclarativeTextEdit::selectionStartChanged(void) + ?selectionStartChanged@QDeclarativeTextInput@@IAEXXZ @ 2299 NONAME ; void QDeclarativeTextInput::selectionStartChanged(void) + ?send@QPacketProtocol@@QAE?AVQPacketAutoSend@@XZ @ 2300 NONAME ; class QPacketAutoSend QPacketProtocol::send(void) + ?send@QPacketProtocol@@QAEXABVQPacket@@@Z @ 2301 NONAME ; void QPacketProtocol::send(class QPacket const &) + ?sendMessage@QDeclarativeDebugClient@@QAEXABVQByteArray@@@Z @ 2302 NONAME ; void QDeclarativeDebugClient::sendMessage(class QByteArray const &) + ?sendMessage@QDeclarativeDebugService@@QAEXABVQByteArray@@@Z @ 2303 NONAME ; void QDeclarativeDebugService::sendMessage(class QByteArray const &) + ?sendMouseEvent@QDeclarativeFlickable@@IAE_NPAVQGraphicsSceneMouseEvent@@@Z @ 2304 NONAME ; bool QDeclarativeFlickable::sendMouseEvent(class QGraphicsSceneMouseEvent *) + ?sendMouseEvent@QDeclarativePathView@@IAE_NPAVQGraphicsSceneMouseEvent@@@Z @ 2305 NONAME ; bool QDeclarativePathView::sendMouseEvent(class QGraphicsSceneMouseEvent *) + ?serialize@QMetaObjectBuilder@@QBEXAAVQDataStream@@@Z @ 2306 NONAME ; void QMetaObjectBuilder::serialize(class QDataStream &) const + ?set@QDeclarativeListModel@@QAEXHABVQScriptValue@@@Z @ 2307 NONAME ; void QDeclarativeListModel::set(int, class QScriptValue const &) + ?setAcceleration@QDeclarativeParticleMotionGravity@@QAEXM@Z @ 2308 NONAME ; void QDeclarativeParticleMotionGravity::setAcceleration(float) + ?setAcceptedButtons@QDeclarativeMouseArea@@QAEXV?$QFlags@W4MouseButton@Qt@@@@@Z @ 2309 NONAME ; void QDeclarativeMouseArea::setAcceptedButtons(class QFlags) + ?setAccess@QMetaMethodBuilder@@QAEXW4Access@QMetaMethod@@@Z @ 2310 NONAME ; void QMetaMethodBuilder::setAccess(enum QMetaMethod::Access) + ?setAdd@QDeclarativeBasePositioner@@QAEXPAVQDeclarativeTransition@@@Z @ 2311 NONAME ; void QDeclarativeBasePositioner::setAdd(class QDeclarativeTransition *) + ?setAngle@QDeclarativeParticles@@QAEXM@Z @ 2312 NONAME ; void QDeclarativeParticles::setAngle(float) + ?setAngleDeviation@QDeclarativeParticles@@QAEXM@Z @ 2313 NONAME ; void QDeclarativeParticles::setAngleDeviation(float) + ?setAnimation@QDeclarativeBehavior@@QAEXPAVQDeclarativeAbstractAnimation@@@Z @ 2314 NONAME ; void QDeclarativeBehavior::setAnimation(class QDeclarativeAbstractAnimation *) + ?setAsynchronous@QDeclarativeImageBase@@QAEX_N@Z @ 2315 NONAME ; void QDeclarativeImageBase::setAsynchronous(bool) + ?setAttributes@QMetaMethodBuilder@@QAEXH@Z @ 2316 NONAME ; void QMetaMethodBuilder::setAttributes(int) + ?setAxis@QDeclarativeDrag@@QAEXW4Axis@1@@Z @ 2317 NONAME ; void QDeclarativeDrag::setAxis(enum QDeclarativeDrag::Axis) + ?setBack@QDeclarativeFlipable@@QAEXPAVQDeclarativeItem@@@Z @ 2318 NONAME ; void QDeclarativeFlipable::setBack(class QDeclarativeItem *) + ?setBaseUrl@QDeclarativeContext@@QAEXABVQUrl@@@Z @ 2319 NONAME ; void QDeclarativeContext::setBaseUrl(class QUrl const &) + ?setBaseUrl@QDeclarativeEngine@@QAEXABVQUrl@@@Z @ 2320 NONAME ; void QDeclarativeEngine::setBaseUrl(class QUrl const &) + ?setBaseline@QDeclarativeAnchorChanges@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2321 NONAME ; void QDeclarativeAnchorChanges::setBaseline(class QDeclarativeAnchorLine const &) + ?setBaseline@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2322 NONAME ; void QDeclarativeAnchors::setBaseline(class QDeclarativeAnchorLine const &) + ?setBaselineOffset@QDeclarativeAnchors@@QAEXM@Z @ 2323 NONAME ; void QDeclarativeAnchors::setBaselineOffset(float) + ?setBaselineOffset@QDeclarativeItem@@QAEXM@Z @ 2324 NONAME ; void QDeclarativeItem::setBaselineOffset(float) + ?setBottom@QDeclarativeAnchorChanges@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2325 NONAME ; void QDeclarativeAnchorChanges::setBottom(class QDeclarativeAnchorLine const &) + ?setBottom@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2326 NONAME ; void QDeclarativeAnchors::setBottom(class QDeclarativeAnchorLine const &) + ?setBottom@QDeclarativeScaleGrid@@QAEXH@Z @ 2327 NONAME ; void QDeclarativeScaleGrid::setBottom(int) + ?setBottomMargin@QDeclarativeAnchors@@QAEXM@Z @ 2328 NONAME ; void QDeclarativeAnchors::setBottomMargin(float) + ?setCacheBuffer@QDeclarativeGridView@@QAEXH@Z @ 2329 NONAME ; void QDeclarativeGridView::setCacheBuffer(int) + ?setCacheBuffer@QDeclarativeListView@@QAEXH@Z @ 2330 NONAME ; void QDeclarativeListView::setCacheBuffer(int) + ?setCacheFrozen@QDeclarativePaintedItem@@IAEX_N@Z @ 2331 NONAME ; void QDeclarativePaintedItem::setCacheFrozen(bool) + ?setCached@QDeclarativeOpenMetaObject@@QAEX_N@Z @ 2332 NONAME ; void QDeclarativeOpenMetaObject::setCached(bool) + ?setCellHeight@QDeclarativeGridView@@QAEXH@Z @ 2333 NONAME ; void QDeclarativeGridView::setCellHeight(int) + ?setCellWidth@QDeclarativeGridView@@QAEXH@Z @ 2334 NONAME ; void QDeclarativeGridView::setCellWidth(int) + ?setCenterIn@QDeclarativeAnchors@@QAEXPAVQDeclarativeItem@@@Z @ 2335 NONAME ; void QDeclarativeAnchors::setCenterIn(class QDeclarativeItem *) + ?setClassName@QMetaObjectBuilder@@QAEXABVQByteArray@@@Z @ 2336 NONAME ; void QMetaObjectBuilder::setClassName(class QByteArray const &) + ?setClip@QDeclarativeItem@@QAEX_N@Z @ 2337 NONAME ; void QDeclarativeItem::setClip(bool) + ?setColor@QDeclarativeGradientStop@@QAEXABVQColor@@@Z @ 2338 NONAME ; void QDeclarativeGradientStop::setColor(class QColor const &) + ?setColor@QDeclarativePen@@QAEXABVQColor@@@Z @ 2339 NONAME ; void QDeclarativePen::setColor(class QColor const &) + ?setColor@QDeclarativeRectangle@@QAEXABVQColor@@@Z @ 2340 NONAME ; void QDeclarativeRectangle::setColor(class QColor const &) + ?setColor@QDeclarativeText@@QAEXABVQColor@@@Z @ 2341 NONAME ; void QDeclarativeText::setColor(class QColor const &) + ?setColor@QDeclarativeTextEdit@@QAEXABVQColor@@@Z @ 2342 NONAME ; void QDeclarativeTextEdit::setColor(class QColor const &) + ?setColor@QDeclarativeTextInput@@QAEXABVQColor@@@Z @ 2343 NONAME ; void QDeclarativeTextInput::setColor(class QColor const &) + ?setColorGroup@QDeclarativeSystemPalette@@QAEXW4ColorGroup@1@@Z @ 2344 NONAME ; void QDeclarativeSystemPalette::setColorGroup(enum QDeclarativeSystemPalette::ColorGroup) + ?setColumn@QDeclarativeError@@QAEXH@Z @ 2345 NONAME ; void QDeclarativeError::setColumn(int) + ?setColumnNumber@QDeclarativeDebugFileReference@@QAEXH@Z @ 2346 NONAME ; void QDeclarativeDebugFileReference::setColumnNumber(int) + ?setColumns@QDeclarativeGrid@@QAEXH@Z @ 2347 NONAME ; void QDeclarativeGrid::setColumns(int) + ?setConsistentTime@QDeclarativeItemPrivate@@SAXH@Z @ 2348 NONAME ; void QDeclarativeItemPrivate::setConsistentTime(int) + ?setContent@QDeclarativeWebView@@QAEXABVQByteArray@@ABVQString@@ABVQUrl@@@Z @ 2349 NONAME ; void QDeclarativeWebView::setContent(class QByteArray const &, class QString const &, class QUrl const &) + ?setContentHeight@QDeclarativeFlickable@@QAEXM@Z @ 2350 NONAME ; void QDeclarativeFlickable::setContentHeight(float) + ?setContentWidth@QDeclarativeFlickable@@QAEXM@Z @ 2351 NONAME ; void QDeclarativeFlickable::setContentWidth(float) + ?setContentX@QDeclarativeFlickable@@QAEXM@Z @ 2352 NONAME ; void QDeclarativeFlickable::setContentX(float) + ?setContentY@QDeclarativeFlickable@@QAEXM@Z @ 2353 NONAME ; void QDeclarativeFlickable::setContentY(float) + ?setContentsScale@QDeclarativePaintedItem@@QAEXM@Z @ 2354 NONAME ; void QDeclarativePaintedItem::setContentsScale(float) + ?setContentsSize@QDeclarativePaintedItem@@QAEXABVQSize@@@Z @ 2355 NONAME ; void QDeclarativePaintedItem::setContentsSize(class QSize const &) + ?setContext@QDeclarativeScriptString@@QAEXPAVQDeclarativeContext@@@Z @ 2356 NONAME ; void QDeclarativeScriptString::setContext(class QDeclarativeContext *) + ?setContextForObject@QDeclarativeEngine@@SAXPAVQObject@@PAVQDeclarativeContext@@@Z @ 2357 NONAME ; void QDeclarativeEngine::setContextForObject(class QObject *, class QDeclarativeContext *) + ?setContextProperty@QDeclarativeContext@@QAEXABVQString@@ABVQVariant@@@Z @ 2358 NONAME ; void QDeclarativeContext::setContextProperty(class QString const &, class QVariant const &) + ?setContextProperty@QDeclarativeContext@@QAEXABVQString@@PAVQObject@@@Z @ 2359 NONAME ; void QDeclarativeContext::setContextProperty(class QString const &, class QObject *) + ?setControl1X@QDeclarativePathCubic@@QAEXM@Z @ 2360 NONAME ; void QDeclarativePathCubic::setControl1X(float) + ?setControl1Y@QDeclarativePathCubic@@QAEXM@Z @ 2361 NONAME ; void QDeclarativePathCubic::setControl1Y(float) + ?setControl2X@QDeclarativePathCubic@@QAEXM@Z @ 2362 NONAME ; void QDeclarativePathCubic::setControl2X(float) + ?setControl2Y@QDeclarativePathCubic@@QAEXM@Z @ 2363 NONAME ; void QDeclarativePathCubic::setControl2Y(float) + ?setControlX@QDeclarativePathQuad@@QAEXM@Z @ 2364 NONAME ; void QDeclarativePathQuad::setControlX(float) + ?setControlY@QDeclarativePathQuad@@QAEXM@Z @ 2365 NONAME ; void QDeclarativePathQuad::setControlY(float) + ?setCount@QDeclarativeParticles@@QAEXH@Z @ 2366 NONAME ; void QDeclarativeParticles::setCount(int) + ?setCreationContext@QDeclarativeComponent@@QAEXPAVQDeclarativeContext@@@Z @ 2367 NONAME ; void QDeclarativeComponent::setCreationContext(class QDeclarativeContext *) + ?setCriteria@QDeclarativeViewSection@@QAEXW4SectionCriteria@1@@Z @ 2368 NONAME ; void QDeclarativeViewSection::setCriteria(enum QDeclarativeViewSection::SectionCriteria) + ?setCurrentFrame@QDeclarativeAnimatedImage@@QAEXH@Z @ 2369 NONAME ; void QDeclarativeAnimatedImage::setCurrentFrame(int) + ?setCurrentIndex@QDeclarativeGridView@@QAEXH@Z @ 2370 NONAME ; void QDeclarativeGridView::setCurrentIndex(int) + ?setCurrentIndex@QDeclarativeListView@@QAEXH@Z @ 2371 NONAME ; void QDeclarativeListView::setCurrentIndex(int) + ?setCurrentIndex@QDeclarativePathView@@QAEXH@Z @ 2372 NONAME ; void QDeclarativePathView::setCurrentIndex(int) + ?setCursorDelegate@QDeclarativeTextEdit@@QAEXPAVQDeclarativeComponent@@@Z @ 2373 NONAME ; void QDeclarativeTextEdit::setCursorDelegate(class QDeclarativeComponent *) + ?setCursorDelegate@QDeclarativeTextInput@@QAEXPAVQDeclarativeComponent@@@Z @ 2374 NONAME ; void QDeclarativeTextInput::setCursorDelegate(class QDeclarativeComponent *) + ?setCursorPosition@QDeclarativeTextEdit@@QAEXH@Z @ 2375 NONAME ; void QDeclarativeTextEdit::setCursorPosition(int) + ?setCursorPosition@QDeclarativeTextInput@@QAEXH@Z @ 2376 NONAME ; void QDeclarativeTextInput::setCursorPosition(int) + ?setCursorVisible@QDeclarativeTextEdit@@QAEX_N@Z @ 2377 NONAME ; void QDeclarativeTextEdit::setCursorVisible(bool) + ?setCursorVisible@QDeclarativeTextInput@@QAEX_N@Z @ 2378 NONAME ; void QDeclarativeTextInput::setCursorVisible(bool) + ?setDamping@QDeclarativeSpringFollow@@QAEXM@Z @ 2379 NONAME ; void QDeclarativeSpringFollow::setDamping(float) + ?setData@QDeclarativeComponent@@QAEXABVQByteArray@@ABVQUrl@@@Z @ 2380 NONAME ; void QDeclarativeComponent::setData(class QByteArray const &, class QUrl const &) + ?setData@QListModelInterface@@UAE_NHABV?$QHash@HVQVariant@@@@@Z @ 2381 NONAME ; bool QListModelInterface::setData(int, class QHash const &) + ?setDate@QDeclarativeDateTimeFormatter@@QAEXABVQDate@@@Z @ 2382 NONAME ; void QDeclarativeDateTimeFormatter::setDate(class QDate const &) + ?setDateFormat@QDeclarativeDateTimeFormatter@@QAEXABVQString@@@Z @ 2383 NONAME ; void QDeclarativeDateTimeFormatter::setDateFormat(class QString const &) + ?setDateTime@QDeclarativeDateTimeFormatter@@QAEXABVQDateTime@@@Z @ 2384 NONAME ; void QDeclarativeDateTimeFormatter::setDateTime(class QDateTime const &) + ?setDateTimeFormat@QDeclarativeDateTimeFormatter@@QAEXABVQString@@@Z @ 2385 NONAME ; void QDeclarativeDateTimeFormatter::setDateTimeFormat(class QString const &) + ?setDelegate@QDeclarativeGridView@@QAEXPAVQDeclarativeComponent@@@Z @ 2386 NONAME ; void QDeclarativeGridView::setDelegate(class QDeclarativeComponent *) + ?setDelegate@QDeclarativeListView@@QAEXPAVQDeclarativeComponent@@@Z @ 2387 NONAME ; void QDeclarativeListView::setDelegate(class QDeclarativeComponent *) + ?setDelegate@QDeclarativePathView@@QAEXPAVQDeclarativeComponent@@@Z @ 2388 NONAME ; void QDeclarativePathView::setDelegate(class QDeclarativeComponent *) + ?setDelegate@QDeclarativeRepeater@@QAEXPAVQDeclarativeComponent@@@Z @ 2389 NONAME ; void QDeclarativeRepeater::setDelegate(class QDeclarativeComponent *) + ?setDelegate@QDeclarativeViewSection@@QAEXPAVQDeclarativeComponent@@@Z @ 2390 NONAME ; void QDeclarativeViewSection::setDelegate(class QDeclarativeComponent *) + ?setDelegate@QDeclarativeVisualDataModel@@QAEXPAVQDeclarativeComponent@@@Z @ 2391 NONAME ; void QDeclarativeVisualDataModel::setDelegate(class QDeclarativeComponent *) + ?setDescription@QDeclarativeError@@QAEXABVQString@@@Z @ 2392 NONAME ; void QDeclarativeError::setDescription(class QString const &) + ?setDesignable@QMetaPropertyBuilder@@QAEX_N@Z @ 2393 NONAME ; void QMetaPropertyBuilder::setDesignable(bool) + ?setDragMargin@QDeclarativePathView@@QAEXM@Z @ 2394 NONAME ; void QDeclarativePathView::setDragMargin(float) + ?setDuration@QDeclarativeEaseFollow@@QAEXM@Z @ 2395 NONAME ; void QDeclarativeEaseFollow::setDuration(float) + ?setDynamic@QMetaPropertyBuilder@@QAEX_N@Z @ 2396 NONAME ; void QMetaPropertyBuilder::setDynamic(bool) + ?setEchoMode@QDeclarativeTextInput@@QAEXW4EchoMode@1@@Z @ 2397 NONAME ; void QDeclarativeTextInput::setEchoMode(enum QDeclarativeTextInput::EchoMode) + ?setEditable@QMetaPropertyBuilder@@QAEX_N@Z @ 2398 NONAME ; void QMetaPropertyBuilder::setEditable(bool) + ?setElideMode@QDeclarativeText@@QAEXW4TextElideMode@1@@Z @ 2399 NONAME ; void QDeclarativeText::setElideMode(enum QDeclarativeText::TextElideMode) + ?setEmissionRate@QDeclarativeParticles@@QAEXH@Z @ 2400 NONAME ; void QDeclarativeParticles::setEmissionRate(int) + ?setEmissionVariance@QDeclarativeParticles@@QAEXM@Z @ 2401 NONAME ; void QDeclarativeParticles::setEmissionVariance(float) + ?setEnabled@QDeclarativeBehavior@@QAEX_N@Z @ 2402 NONAME ; void QDeclarativeBehavior::setEnabled(bool) + ?setEnabled@QDeclarativeDebugClient@@QAEX_N@Z @ 2403 NONAME ; void QDeclarativeDebugClient::setEnabled(bool) + ?setEnabled@QDeclarativeEaseFollow@@QAEX_N@Z @ 2404 NONAME ; void QDeclarativeEaseFollow::setEnabled(bool) + ?setEnabled@QDeclarativeMouseArea@@QAEX_N@Z @ 2405 NONAME ; void QDeclarativeMouseArea::setEnabled(bool) + ?setEnabled@QDeclarativeSpringFollow@@QAEX_N@Z @ 2406 NONAME ; void QDeclarativeSpringFollow::setEnabled(bool) + ?setEnumOrFlag@QMetaPropertyBuilder@@QAEX_N@Z @ 2407 NONAME ; void QMetaPropertyBuilder::setEnumOrFlag(bool) + ?setEpsilon@QDeclarativeSpringFollow@@QAEXM@Z @ 2408 NONAME ; void QDeclarativeSpringFollow::setEpsilon(float) + ?setExpression@QDeclarativeExpression@@QAEXABVQString@@@Z @ 2409 NONAME ; void QDeclarativeExpression::setExpression(class QString const &) + ?setExtends@QDeclarativeState@@QAEXABVQString@@@Z @ 2410 NONAME ; void QDeclarativeState::setExtends(class QString const &) + ?setFadeInDuration@QDeclarativeParticles@@QAEXH@Z @ 2411 NONAME ; void QDeclarativeParticles::setFadeInDuration(int) + ?setFadeOutDuration@QDeclarativeParticles@@QAEXH@Z @ 2412 NONAME ; void QDeclarativeParticles::setFadeOutDuration(int) + ?setFill@QDeclarativeAnchors@@QAEXPAVQDeclarativeItem@@@Z @ 2413 NONAME ; void QDeclarativeAnchors::setFill(class QDeclarativeItem *) + ?setFillColor@QDeclarativePaintedItem@@QAEXABVQColor@@@Z @ 2414 NONAME ; void QDeclarativePaintedItem::setFillColor(class QColor const &) + ?setFillMode@QDeclarativeImage@@QAEXW4FillMode@1@@Z @ 2415 NONAME ; void QDeclarativeImage::setFillMode(enum QDeclarativeImage::FillMode) + ?setFlags@QMetaObjectBuilder@@QAEXV?$QFlags@W4MetaObjectFlag@QMetaObjectBuilder@@@@@Z @ 2416 NONAME ; void QMetaObjectBuilder::setFlags(class QFlags) + ?setFlickDeceleration@QDeclarativeFlickable@@QAEXM@Z @ 2417 NONAME ; void QDeclarativeFlickable::setFlickDeceleration(float) + ?setFlickDirection@QDeclarativeFlickable@@QAEXW4FlickDirection@1@@Z @ 2418 NONAME ; void QDeclarativeFlickable::setFlickDirection(enum QDeclarativeFlickable::FlickDirection) + ?setFlow@QDeclarativeFlow@@QAEXW4Flow@1@@Z @ 2419 NONAME ; void QDeclarativeFlow::setFlow(enum QDeclarativeFlow::Flow) + ?setFlow@QDeclarativeGridView@@QAEXW4Flow@1@@Z @ 2420 NONAME ; void QDeclarativeGridView::setFlow(enum QDeclarativeGridView::Flow) + ?setFocus@QDeclarativeItem@@QAEX_N@Z @ 2421 NONAME ; void QDeclarativeItem::setFocus(bool) + ?setFocusOnPress@QDeclarativeTextEdit@@QAEX_N@Z @ 2422 NONAME ; void QDeclarativeTextEdit::setFocusOnPress(bool) + ?setFocusOnPress@QDeclarativeTextInput@@QAEX_N@Z @ 2423 NONAME ; void QDeclarativeTextInput::setFocusOnPress(bool) + ?setFont@QDeclarativeText@@QAEXABVQFont@@@Z @ 2424 NONAME ; void QDeclarativeText::setFont(class QFont const &) + ?setFont@QDeclarativeTextEdit@@QAEXABVQFont@@@Z @ 2425 NONAME ; void QDeclarativeTextEdit::setFont(class QFont const &) + ?setFont@QDeclarativeTextInput@@QAEXABVQFont@@@Z @ 2426 NONAME ; void QDeclarativeTextInput::setFont(class QFont const &) + ?setFooter@QDeclarativeListView@@QAEXPAVQDeclarativeComponent@@@Z @ 2427 NONAME ; void QDeclarativeListView::setFooter(class QDeclarativeComponent *) + ?setFormat@QDeclarativeNumberFormatter@@QAEXABVQString@@@Z @ 2428 NONAME ; void QDeclarativeNumberFormatter::setFormat(class QString const &) + ?setFromState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 2429 NONAME ; void QDeclarativeTransition::setFromState(class QString const &) + ?setFront@QDeclarativeFlipable@@QAEXPAVQDeclarativeItem@@@Z @ 2430 NONAME ; void QDeclarativeFlipable::setFront(class QDeclarativeItem *) + ?setGradient@QDeclarativeRectangle@@QAEXPAVQDeclarativeGradient@@@Z @ 2431 NONAME ; void QDeclarativeRectangle::setGradient(class QDeclarativeGradient *) + ?setGraphicsObject@QDeclarativeGraphicsObjectContainer@@QAEXPAVQGraphicsObject@@@Z @ 2432 NONAME ; void QDeclarativeGraphicsObjectContainer::setGraphicsObject(class QGraphicsObject *) + ?setGridScaledImage@QDeclarativeBorderImage@@AAEXABVQDeclarativeGridScaledImage@@@Z @ 2433 NONAME ; void QDeclarativeBorderImage::setGridScaledImage(class QDeclarativeGridScaledImage const &) + ?setHAlign@QDeclarativeText@@QAEXW4HAlignment@1@@Z @ 2434 NONAME ; void QDeclarativeText::setHAlign(enum QDeclarativeText::HAlignment) + ?setHAlign@QDeclarativeTextEdit@@QAEXW4HAlignment@1@@Z @ 2435 NONAME ; void QDeclarativeTextEdit::setHAlign(enum QDeclarativeTextEdit::HAlignment) + ?setHAlign@QDeclarativeTextInput@@QAEXW4HAlignment@1@@Z @ 2436 NONAME ; void QDeclarativeTextInput::setHAlign(enum QDeclarativeTextInput::HAlignment) + ?setHeader@QDeclarativeListView@@QAEXPAVQDeclarativeComponent@@@Z @ 2437 NONAME ; void QDeclarativeListView::setHeader(class QDeclarativeComponent *) + ?setHeight@QDeclarativeItem@@QAEXM@Z @ 2438 NONAME ; void QDeclarativeItem::setHeight(float) + ?setHeight@QDeclarativeParentChange@@QAEXM@Z @ 2439 NONAME ; void QDeclarativeParentChange::setHeight(float) + ?setHighlight@QDeclarativeGridView@@QAEXPAVQDeclarativeComponent@@@Z @ 2440 NONAME ; void QDeclarativeGridView::setHighlight(class QDeclarativeComponent *) + ?setHighlight@QDeclarativeListView@@QAEXPAVQDeclarativeComponent@@@Z @ 2441 NONAME ; void QDeclarativeListView::setHighlight(class QDeclarativeComponent *) + ?setHighlightFollowsCurrentItem@QDeclarativeGridView@@QAEX_N@Z @ 2442 NONAME ; void QDeclarativeGridView::setHighlightFollowsCurrentItem(bool) + ?setHighlightFollowsCurrentItem@QDeclarativeListView@@QAEX_N@Z @ 2443 NONAME ; void QDeclarativeListView::setHighlightFollowsCurrentItem(bool) + ?setHighlightMoveSpeed@QDeclarativeListView@@QAEXM@Z @ 2444 NONAME ; void QDeclarativeListView::setHighlightMoveSpeed(float) + ?setHighlightRangeMode@QDeclarativeListView@@QAEXW4HighlightRangeMode@1@@Z @ 2445 NONAME ; void QDeclarativeListView::setHighlightRangeMode(enum QDeclarativeListView::HighlightRangeMode) + ?setHighlightResizeSpeed@QDeclarativeListView@@QAEXM@Z @ 2446 NONAME ; void QDeclarativeListView::setHighlightResizeSpeed(float) + ?setHorizontalCenter@QDeclarativeAnchorChanges@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2447 NONAME ; void QDeclarativeAnchorChanges::setHorizontalCenter(class QDeclarativeAnchorLine const &) + ?setHorizontalCenter@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2448 NONAME ; void QDeclarativeAnchors::setHorizontalCenter(class QDeclarativeAnchorLine const &) + ?setHorizontalCenterOffset@QDeclarativeAnchors@@QAEXM@Z @ 2449 NONAME ; void QDeclarativeAnchors::setHorizontalCenterOffset(float) + ?setHorizontalTileMode@QDeclarativeBorderImage@@QAEXW4TileMode@1@@Z @ 2450 NONAME ; void QDeclarativeBorderImage::setHorizontalTileMode(enum QDeclarativeBorderImage::TileMode) + ?setHovered@QDeclarativeMouseArea@@IAEX_N@Z @ 2451 NONAME ; void QDeclarativeMouseArea::setHovered(bool) + ?setHtml@QDeclarativeWebView@@QAEXABVQString@@ABVQUrl@@@Z @ 2452 NONAME ; void QDeclarativeWebView::setHtml(class QString const &, class QUrl const &) + ?setIdProperty@QDeclarativeContextPrivate@@QAEXHPAVQObject@@@Z @ 2453 NONAME ; void QDeclarativeContextPrivate::setIdProperty(int, class QObject *) + ?setIdPropertyData@QDeclarativeContextPrivate@@QAEXPAVQDeclarativeIntegerCache@@@Z @ 2454 NONAME ; void QDeclarativeContextPrivate::setIdPropertyData(class QDeclarativeIntegerCache *) + ?setImplicitHeight@QDeclarativeItem@@IAEXM@Z @ 2455 NONAME ; void QDeclarativeItem::setImplicitHeight(float) + ?setImplicitWidth@QDeclarativeItem@@IAEXM@Z @ 2456 NONAME ; void QDeclarativeItem::setImplicitWidth(float) + ?setInputMask@QDeclarativeTextInput@@QAEXABVQString@@@Z @ 2457 NONAME ; void QDeclarativeTextInput::setInputMask(class QString const &) + ?setInteractive@QDeclarativeFlickable@@QAEX_N@Z @ 2458 NONAME ; void QDeclarativeFlickable::setInteractive(bool) + ?setInterval@QDeclarativeTimer@@QAEXH@Z @ 2459 NONAME ; void QDeclarativeTimer::setInterval(int) + ?setIsExplicit@QDeclarativePropertyChanges@@QAEX_N@Z @ 2460 NONAME ; void QDeclarativePropertyChanges::setIsExplicit(bool) + ?setIsFlag@QMetaEnumBuilder@@QAEX_N@Z @ 2461 NONAME ; void QMetaEnumBuilder::setIsFlag(bool) + ?setIsKey@QDeclarativeXmlListModelRole@@QAEX_N@Z @ 2462 NONAME ; void QDeclarativeXmlListModelRole::setIsKey(bool) + ?setKeepMouseGrab@QDeclarativeItem@@QAEX_N@Z @ 2463 NONAME ; void QDeclarativeItem::setKeepMouseGrab(bool) + ?setLeft@QDeclarativeAnchorChanges@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2464 NONAME ; void QDeclarativeAnchorChanges::setLeft(class QDeclarativeAnchorLine const &) + ?setLeft@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2465 NONAME ; void QDeclarativeAnchors::setLeft(class QDeclarativeAnchorLine const &) + ?setLeft@QDeclarativeScaleGrid@@QAEXH@Z @ 2466 NONAME ; void QDeclarativeScaleGrid::setLeft(int) + ?setLeftMargin@QDeclarativeAnchors@@QAEXM@Z @ 2467 NONAME ; void QDeclarativeAnchors::setLeftMargin(float) + ?setLifeSpan@QDeclarativeParticles@@QAEXH@Z @ 2468 NONAME ; void QDeclarativeParticles::setLifeSpan(int) + ?setLifeSpanDeviation@QDeclarativeParticles@@QAEXH@Z @ 2469 NONAME ; void QDeclarativeParticles::setLifeSpanDeviation(int) + ?setLine@QDeclarativeError@@QAEXH@Z @ 2470 NONAME ; void QDeclarativeError::setLine(int) + ?setLineNumber@QDeclarativeDebugFileReference@@QAEXH@Z @ 2471 NONAME ; void QDeclarativeDebugFileReference::setLineNumber(int) + ?setList@QDeclarativeListAccessor@@QAEXABVQVariant@@PAVQDeclarativeEngine@@@Z @ 2472 NONAME ; void QDeclarativeListAccessor::setList(class QVariant const &, class QDeclarativeEngine *) + ?setLoading@QDeclarativePixmapReply@@AAEXXZ @ 2473 NONAME ; void QDeclarativePixmapReply::setLoading(void) + ?setLongStyle@QDeclarativeDateTimeFormatter@@QAEX_N@Z @ 2474 NONAME ; void QDeclarativeDateTimeFormatter::setLongStyle(bool) + ?setMargins@QDeclarativeAnchors@@QAEXM@Z @ 2475 NONAME ; void QDeclarativeAnchors::setMargins(float) + ?setMass@QDeclarativeSpringFollow@@QAEXM@Z @ 2476 NONAME ; void QDeclarativeSpringFollow::setMass(float) + ?setMaxLength@QDeclarativeTextInput@@QAEXH@Z @ 2477 NONAME ; void QDeclarativeTextInput::setMaxLength(int) + ?setMaximumEasingTime@QDeclarativeEaseFollow@@QAEXM@Z @ 2478 NONAME ; void QDeclarativeEaseFollow::setMaximumEasingTime(float) + ?setMaximumFlickVelocity@QDeclarativeFlickable@@QAEXM@Z @ 2479 NONAME ; void QDeclarativeFlickable::setMaximumFlickVelocity(float) + ?setMaximumPacketSize@QPacketProtocol@@QAEHH@Z @ 2480 NONAME ; int QPacketProtocol::setMaximumPacketSize(int) + ?setModel@QDeclarativeGridView@@QAEXABVQVariant@@@Z @ 2481 NONAME ; void QDeclarativeGridView::setModel(class QVariant const &) + ?setModel@QDeclarativeListView@@QAEXABVQVariant@@@Z @ 2482 NONAME ; void QDeclarativeListView::setModel(class QVariant const &) + ?setModel@QDeclarativePathView@@QAEXABVQVariant@@@Z @ 2483 NONAME ; void QDeclarativePathView::setModel(class QVariant const &) + ?setModel@QDeclarativeRepeater@@QAEXABVQVariant@@@Z @ 2484 NONAME ; void QDeclarativeRepeater::setModel(class QVariant const &) + ?setModel@QDeclarativeVisualDataModel@@QAEXABVQVariant@@@Z @ 2485 NONAME ; void QDeclarativeVisualDataModel::setModel(class QVariant const &) + ?setModulus@QDeclarativeSpringFollow@@QAEXM@Z @ 2486 NONAME ; void QDeclarativeSpringFollow::setModulus(float) + ?setMotion@QDeclarativeParticles@@QAEXPAVQDeclarativeParticleMotion@@@Z @ 2487 NONAME ; void QDeclarativeParticles::setMotion(class QDeclarativeParticleMotion *) + ?setMove@QDeclarativeBasePositioner@@QAEXPAVQDeclarativeTransition@@@Z @ 2488 NONAME ; void QDeclarativeBasePositioner::setMove(class QDeclarativeTransition *) + ?setName@QDeclarativeFontLoader@@QAEXABVQString@@@Z @ 2489 NONAME ; void QDeclarativeFontLoader::setName(class QString const &) + ?setName@QDeclarativePathAttribute@@QAEXABVQString@@@Z @ 2490 NONAME ; void QDeclarativePathAttribute::setName(class QString const &) + ?setName@QDeclarativeState@@QAEXABVQString@@@Z @ 2491 NONAME ; void QDeclarativeState::setName(class QString const &) + ?setName@QDeclarativeStateChangeScript@@QAEXABVQString@@@Z @ 2492 NONAME ; void QDeclarativeStateChangeScript::setName(class QString const &) + ?setName@QDeclarativeXmlListModelRole@@QAEXABVQString@@@Z @ 2493 NONAME ; void QDeclarativeXmlListModelRole::setName(class QString const &) + ?setNamespaceDeclarations@QDeclarativeXmlListModel@@QAEXABVQString@@@Z @ 2494 NONAME ; void QDeclarativeXmlListModel::setNamespaceDeclarations(class QString const &) + ?setNetworkAccessManagerFactory@QDeclarativeEngine@@QAEXPAVQDeclarativeNetworkAccessManagerFactory@@@Z @ 2495 NONAME ; void QDeclarativeEngine::setNetworkAccessManagerFactory(class QDeclarativeNetworkAccessManagerFactory *) + ?setNewWindowComponent@QDeclarativeWebView@@QAEXPAVQDeclarativeComponent@@@Z @ 2496 NONAME ; void QDeclarativeWebView::setNewWindowComponent(class QDeclarativeComponent *) + ?setNewWindowParent@QDeclarativeWebView@@QAEXPAVQDeclarativeItem@@@Z @ 2497 NONAME ; void QDeclarativeWebView::setNewWindowParent(class QDeclarativeItem *) + ?setNotifyOnValueChanged@QDeclarativeExpression@@QAEX_N@Z @ 2498 NONAME ; void QDeclarativeExpression::setNotifyOnValueChanged(bool) + ?setNotifySignal@QMetaPropertyBuilder@@QAEXABVQMetaMethodBuilder@@@Z @ 2499 NONAME ; void QMetaPropertyBuilder::setNotifySignal(class QMetaMethodBuilder const &) + ?setNumber@QDeclarativeNumberFormatter@@QAEXABM@Z @ 2500 NONAME ; void QDeclarativeNumberFormatter::setNumber(float const &) + ?setObject@QDeclarativeAnchorChanges@@QAEXPAVQDeclarativeItem@@@Z @ 2501 NONAME ; void QDeclarativeAnchorChanges::setObject(class QDeclarativeItem *) + ?setObject@QDeclarativeBind@@QAEXPAVQObject@@@Z @ 2502 NONAME ; void QDeclarativeBind::setObject(class QObject *) + ?setObject@QDeclarativeParentChange@@QAEXPAVQDeclarativeItem@@@Z @ 2503 NONAME ; void QDeclarativeParentChange::setObject(class QDeclarativeItem *) + ?setObject@QDeclarativePropertyChanges@@QAEXPAVQObject@@@Z @ 2504 NONAME ; void QDeclarativePropertyChanges::setObject(class QObject *) + ?setOfflineStoragePath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 2505 NONAME ; void QDeclarativeEngine::setOfflineStoragePath(class QString const &) + ?setOffset@QDeclarativePathView@@QAEXM@Z @ 2506 NONAME ; void QDeclarativePathView::setOffset(float) + ?setOrientation@QDeclarativeListView@@QAEXW4Orientation@1@@Z @ 2507 NONAME ; void QDeclarativeListView::setOrientation(enum QDeclarativeListView::Orientation) + ?setOverShoot@QDeclarativeFlickable@@QAEX_N@Z @ 2508 NONAME ; void QDeclarativeFlickable::setOverShoot(bool) + ?setPace@QDeclarativeParticleMotionWander@@QAEXM@Z @ 2509 NONAME ; void QDeclarativeParticleMotionWander::setPace(float) + ?setPage@QDeclarativeWebView@@QAEXPAVQWebPage@@@Z @ 2510 NONAME ; void QDeclarativeWebView::setPage(class QWebPage *) + ?setParameterNames@QMetaMethodBuilder@@QAEXABV?$QList@VQByteArray@@@@@Z @ 2511 NONAME ; void QMetaMethodBuilder::setParameterNames(class QList const &) + ?setParent@QDeclarativeItem@@QAEXPAV1@@Z @ 2512 NONAME ; void QDeclarativeItem::setParent(class QDeclarativeItem *) + ?setParent@QDeclarativeParentChange@@QAEXPAVQDeclarativeItem@@@Z @ 2513 NONAME ; void QDeclarativeParentChange::setParent(class QDeclarativeItem *) + ?setParentItem@QDeclarativeItem@@QAEXPAV1@@Z @ 2514 NONAME ; void QDeclarativeItem::setParentItem(class QDeclarativeItem *) + ?setPart@QDeclarativeVisualDataModel@@QAEXABVQString@@@Z @ 2515 NONAME ; void QDeclarativeVisualDataModel::setPart(class QString const &) + ?setPath@QDeclarativePathView@@QAEXPAVQDeclarativePath@@@Z @ 2516 NONAME ; void QDeclarativePathView::setPath(class QDeclarativePath *) + ?setPathItemCount@QDeclarativePathView@@QAEXH@Z @ 2517 NONAME ; void QDeclarativePathView::setPathItemCount(int) + ?setPaused@QDeclarativeAnimatedImage@@QAEX_N@Z @ 2518 NONAME ; void QDeclarativeAnimatedImage::setPaused(bool) + ?setPersistentSelection@QDeclarativeTextEdit@@QAEX_N@Z @ 2519 NONAME ; void QDeclarativeTextEdit::setPersistentSelection(bool) + ?setPixelCacheSize@QDeclarativePaintedItem@@QAEXH@Z @ 2520 NONAME ; void QDeclarativePaintedItem::setPixelCacheSize(int) + ?setPixmap@QDeclarativeImage@@QAEXABVQPixmap@@@Z @ 2521 NONAME ; void QDeclarativeImage::setPixmap(class QPixmap const &) + ?setPlaying@QDeclarativeAnimatedImage@@QAEX_N@Z @ 2522 NONAME ; void QDeclarativeAnimatedImage::setPlaying(bool) + ?setPosition@QDeclarativeGradientStop@@QAEXM@Z @ 2523 NONAME ; void QDeclarativeGradientStop::setPosition(float) + ?setPreferredHeight@QDeclarativeWebView@@QAEXH@Z @ 2524 NONAME ; void QDeclarativeWebView::setPreferredHeight(int) + ?setPreferredHighlightBegin@QDeclarativeListView@@QAEXM@Z @ 2525 NONAME ; void QDeclarativeListView::setPreferredHighlightBegin(float) + ?setPreferredHighlightEnd@QDeclarativeListView@@QAEXM@Z @ 2526 NONAME ; void QDeclarativeListView::setPreferredHighlightEnd(float) + ?setPreferredWidth@QDeclarativeWebView@@QAEXH@Z @ 2527 NONAME ; void QDeclarativeWebView::setPreferredWidth(int) + ?setPressDelay@QDeclarativeFlickable@@QAEXH@Z @ 2528 NONAME ; void QDeclarativeFlickable::setPressDelay(int) + ?setPressGrabTime@QDeclarativeWebView@@QAEXH@Z @ 2529 NONAME ; void QDeclarativeWebView::setPressGrabTime(int) + ?setPressed@QDeclarativeMouseArea@@IAE_N_N@Z @ 2530 NONAME ; bool QDeclarativeMouseArea::setPressed(bool) + ?setProperty@QDeclarativeBind@@QAEXABVQString@@@Z @ 2531 NONAME ; void QDeclarativeBind::setProperty(class QString const &) + ?setProperty@QDeclarativeListModel@@QAEXHABVQString@@ABVQVariant@@@Z @ 2532 NONAME ; void QDeclarativeListModel::setProperty(int, class QString const &, class QVariant const &) + ?setProperty@QDeclarativeViewSection@@QAEXABVQString@@@Z @ 2533 NONAME ; void QDeclarativeViewSection::setProperty(class QString const &) + ?setQuery@QDeclarativeXmlListModel@@QAEXABVQString@@@Z @ 2534 NONAME ; void QDeclarativeXmlListModel::setQuery(class QString const &) + ?setQuery@QDeclarativeXmlListModelRole@@QAEXABVQString@@@Z @ 2535 NONAME ; void QDeclarativeXmlListModelRole::setQuery(class QString const &) + ?setRadius@QDeclarativeRectangle@@QAEXM@Z @ 2536 NONAME ; void QDeclarativeRectangle::setRadius(float) + ?setReadOnly@QDeclarativeTextEdit@@QAEX_N@Z @ 2537 NONAME ; void QDeclarativeTextEdit::setReadOnly(bool) + ?setReadOnly@QDeclarativeTextInput@@QAEX_N@Z @ 2538 NONAME ; void QDeclarativeTextInput::setReadOnly(bool) + ?setReadable@QMetaPropertyBuilder@@QAEX_N@Z @ 2539 NONAME ; void QMetaPropertyBuilder::setReadable(bool) + ?setRenderingEnabled@QDeclarativeWebView@@QAEX_N@Z @ 2540 NONAME ; void QDeclarativeWebView::setRenderingEnabled(bool) + ?setRepeating@QDeclarativeTimer@@QAEX_N@Z @ 2541 NONAME ; void QDeclarativeTimer::setRepeating(bool) + ?setReset@QDeclarativeAnchorChanges@@QAEXABVQString@@@Z @ 2542 NONAME ; void QDeclarativeAnchorChanges::setReset(class QString const &) + ?setResettable@QMetaPropertyBuilder@@QAEX_N@Z @ 2543 NONAME ; void QMetaPropertyBuilder::setResettable(bool) + ?setResizeMode@QDeclarativeLoader@@QAEXW4ResizeMode@1@@Z @ 2544 NONAME ; void QDeclarativeLoader::setResizeMode(enum QDeclarativeLoader::ResizeMode) + ?setResizeMode@QDeclarativeView@@QAEXW4ResizeMode@1@@Z @ 2545 NONAME ; void QDeclarativeView::setResizeMode(enum QDeclarativeView::ResizeMode) + ?setRestoreEntryValues@QDeclarativePropertyChanges@@QAEX_N@Z @ 2546 NONAME ; void QDeclarativePropertyChanges::setRestoreEntryValues(bool) + ?setReturnType@QMetaMethodBuilder@@QAEXABVQByteArray@@@Z @ 2547 NONAME ; void QMetaMethodBuilder::setReturnType(class QByteArray const &) + ?setReversed@QDeclarativeTransition@@QAEX_N@Z @ 2548 NONAME ; void QDeclarativeTransition::setReversed(bool) + ?setReversible@QDeclarativeTransition@@QAEX_N@Z @ 2549 NONAME ; void QDeclarativeTransition::setReversible(bool) + ?setReversingMode@QDeclarativeEaseFollow@@QAEXW4ReversingMode@1@@Z @ 2550 NONAME ; void QDeclarativeEaseFollow::setReversingMode(enum QDeclarativeEaseFollow::ReversingMode) + ?setRight@QDeclarativeAnchorChanges@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2551 NONAME ; void QDeclarativeAnchorChanges::setRight(class QDeclarativeAnchorLine const &) + ?setRight@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2552 NONAME ; void QDeclarativeAnchors::setRight(class QDeclarativeAnchorLine const &) + ?setRight@QDeclarativeScaleGrid@@QAEXH@Z @ 2553 NONAME ; void QDeclarativeScaleGrid::setRight(int) + ?setRightMargin@QDeclarativeAnchors@@QAEXM@Z @ 2554 NONAME ; void QDeclarativeAnchors::setRightMargin(float) + ?setRootIndex@QDeclarativeVisualDataModel@@QAEXABVQModelIndex@@@Z @ 2555 NONAME ; void QDeclarativeVisualDataModel::setRootIndex(class QModelIndex const &) + ?setRootObject@QDeclarativeView@@MAEXPAVQObject@@@Z @ 2556 NONAME ; void QDeclarativeView::setRootObject(class QObject *) + ?setRotation@QDeclarativeParentChange@@QAEXM@Z @ 2557 NONAME ; void QDeclarativeParentChange::setRotation(float) + ?setRows@QDeclarativeGrid@@QAEXH@Z @ 2558 NONAME ; void QDeclarativeGrid::setRows(int) + ?setRunning@QDeclarativeTimer@@QAEX_N@Z @ 2559 NONAME ; void QDeclarativeTimer::setRunning(bool) + ?setScale@QDeclarativeParentChange@@QAEXM@Z @ 2560 NONAME ; void QDeclarativeParentChange::setScale(float) + ?setScopeObject@QDeclarativeScriptString@@QAEXPAVQObject@@@Z @ 2561 NONAME ; void QDeclarativeScriptString::setScopeObject(class QObject *) + ?setScript@QDeclarativeScriptString@@QAEXABVQString@@@Z @ 2562 NONAME ; void QDeclarativeScriptString::setScript(class QString const &) + ?setScript@QDeclarativeStateChangeScript@@QAEXABVQDeclarativeScriptString@@@Z @ 2563 NONAME ; void QDeclarativeStateChangeScript::setScript(class QDeclarativeScriptString const &) + ?setScriptable@QMetaPropertyBuilder@@QAEX_N@Z @ 2564 NONAME ; void QMetaPropertyBuilder::setScriptable(bool) + ?setSelectedState@QDeclarativeDebuggerStatus@@UAEX_N@Z @ 2565 NONAME ; void QDeclarativeDebuggerStatus::setSelectedState(bool) + ?setSelectedTextColor@QDeclarativeTextEdit@@QAEXABVQColor@@@Z @ 2566 NONAME ; void QDeclarativeTextEdit::setSelectedTextColor(class QColor const &) + ?setSelectedTextColor@QDeclarativeTextInput@@QAEXABVQColor@@@Z @ 2567 NONAME ; void QDeclarativeTextInput::setSelectedTextColor(class QColor const &) + ?setSelectionColor@QDeclarativeTextEdit@@QAEXABVQColor@@@Z @ 2568 NONAME ; void QDeclarativeTextEdit::setSelectionColor(class QColor const &) + ?setSelectionColor@QDeclarativeTextInput@@QAEXABVQColor@@@Z @ 2569 NONAME ; void QDeclarativeTextInput::setSelectionColor(class QColor const &) + ?setSelectionEnd@QDeclarativeTextEdit@@QAEXH@Z @ 2570 NONAME ; void QDeclarativeTextEdit::setSelectionEnd(int) + ?setSelectionEnd@QDeclarativeTextInput@@QAEXH@Z @ 2571 NONAME ; void QDeclarativeTextInput::setSelectionEnd(int) + ?setSelectionStart@QDeclarativeTextEdit@@QAEXH@Z @ 2572 NONAME ; void QDeclarativeTextEdit::setSelectionStart(int) + ?setSelectionStart@QDeclarativeTextInput@@QAEXH@Z @ 2573 NONAME ; void QDeclarativeTextInput::setSelectionStart(int) + ?setSmooth@QDeclarativeItem@@QAEX_N@Z @ 2574 NONAME ; void QDeclarativeItem::setSmooth(bool) + ?setSmoothCache@QDeclarativePaintedItem@@QAEX_N@Z @ 2575 NONAME ; void QDeclarativePaintedItem::setSmoothCache(bool) + ?setSnapMode@QDeclarativeListView@@QAEXW4SnapMode@1@@Z @ 2576 NONAME ; void QDeclarativeListView::setSnapMode(enum QDeclarativeListView::SnapMode) + ?setSnapPosition@QDeclarativePathView@@QAEXM@Z @ 2577 NONAME ; void QDeclarativePathView::setSnapPosition(float) + ?setSource@QDeclarativeAnimatedImage@@UAEXABVQUrl@@@Z @ 2578 NONAME ; void QDeclarativeAnimatedImage::setSource(class QUrl const &) + ?setSource@QDeclarativeBorderImage@@UAEXABVQUrl@@@Z @ 2579 NONAME ; void QDeclarativeBorderImage::setSource(class QUrl const &) + ?setSource@QDeclarativeFontLoader@@QAEXABVQUrl@@@Z @ 2580 NONAME ; void QDeclarativeFontLoader::setSource(class QUrl const &) + ?setSource@QDeclarativeImageBase@@UAEXABVQUrl@@@Z @ 2581 NONAME ; void QDeclarativeImageBase::setSource(class QUrl const &) + ?setSource@QDeclarativeLoader@@QAEXABVQUrl@@@Z @ 2582 NONAME ; void QDeclarativeLoader::setSource(class QUrl const &) + ?setSource@QDeclarativeParticles@@QAEXABVQUrl@@@Z @ 2583 NONAME ; void QDeclarativeParticles::setSource(class QUrl const &) + ?setSource@QDeclarativeView@@QAEXABVQUrl@@@Z @ 2584 NONAME ; void QDeclarativeView::setSource(class QUrl const &) + ?setSource@QDeclarativeXmlListModel@@QAEXABVQUrl@@@Z @ 2585 NONAME ; void QDeclarativeXmlListModel::setSource(class QUrl const &) + ?setSourceComponent@QDeclarativeLoader@@QAEXPAVQDeclarativeComponent@@@Z @ 2586 NONAME ; void QDeclarativeLoader::setSourceComponent(class QDeclarativeComponent *) + ?setSourceLocation@QDeclarativeExpression@@QAEXABVQString@@H@Z @ 2587 NONAME ; void QDeclarativeExpression::setSourceLocation(class QString const &, int) + ?setSourceValue@QDeclarativeEaseFollow@@QAEXM@Z @ 2588 NONAME ; void QDeclarativeEaseFollow::setSourceValue(float) + ?setSourceValue@QDeclarativeSpringFollow@@QAEXM@Z @ 2589 NONAME ; void QDeclarativeSpringFollow::setSourceValue(float) + ?setSpacing@QDeclarativeBasePositioner@@QAEXH@Z @ 2590 NONAME ; void QDeclarativeBasePositioner::setSpacing(int) + ?setSpacing@QDeclarativeListView@@QAEXM@Z @ 2591 NONAME ; void QDeclarativeListView::setSpacing(float) + ?setSpring@QDeclarativeSpringFollow@@QAEXM@Z @ 2592 NONAME ; void QDeclarativeSpringFollow::setSpring(float) + ?setStartX@QDeclarativePath@@QAEXM@Z @ 2593 NONAME ; void QDeclarativePath::setStartX(float) + ?setStartY@QDeclarativePath@@QAEXM@Z @ 2594 NONAME ; void QDeclarativePath::setStartY(float) + ?setState@QDeclarativeDebugQuery@@AAEXW4State@1@@Z @ 2595 NONAME ; void QDeclarativeDebugQuery::setState(enum QDeclarativeDebugQuery::State) + ?setState@QDeclarativeDebugWatch@@AAEXW4State@1@@Z @ 2596 NONAME ; void QDeclarativeDebugWatch::setState(enum QDeclarativeDebugWatch::State) + ?setState@QDeclarativeItem@@QAEXABVQString@@@Z @ 2597 NONAME ; void QDeclarativeItem::setState(class QString const &) + ?setState@QDeclarativeStateGroup@@QAEXABVQString@@@Z @ 2598 NONAME ; void QDeclarativeStateGroup::setState(class QString const &) + ?setStateGroup@QDeclarativeState@@QAEXPAVQDeclarativeStateGroup@@@Z @ 2599 NONAME ; void QDeclarativeState::setStateGroup(class QDeclarativeStateGroup *) + ?setStaticMetacallFunction@QMetaObjectBuilder@@QAEXP6AHW4Call@QMetaObject@@HPAPAX@Z@Z @ 2600 NONAME ; void QMetaObjectBuilder::setStaticMetacallFunction(int (*)(enum QMetaObject::Call, int, void * *)) + ?setStatusText@QDeclarativeWebView@@AAEXABVQString@@@Z @ 2601 NONAME ; void QDeclarativeWebView::setStatusText(class QString const &) + ?setStdCppSet@QMetaPropertyBuilder@@QAEX_N@Z @ 2602 NONAME ; void QMetaPropertyBuilder::setStdCppSet(bool) + ?setStored@QMetaPropertyBuilder@@QAEX_N@Z @ 2603 NONAME ; void QMetaPropertyBuilder::setStored(bool) + ?setStyle@QDeclarativeText@@QAEXW4TextStyle@1@@Z @ 2604 NONAME ; void QDeclarativeText::setStyle(enum QDeclarativeText::TextStyle) + ?setStyleColor@QDeclarativeText@@QAEXABVQColor@@@Z @ 2605 NONAME ; void QDeclarativeText::setStyleColor(class QColor const &) + ?setSuperClass@QMetaObjectBuilder@@QAEXPBUQMetaObject@@@Z @ 2606 NONAME ; void QMetaObjectBuilder::setSuperClass(struct QMetaObject const *) + ?setSynchronizedResizing@QDeclarativeGraphicsObjectContainer@@QAEX_N@Z @ 2607 NONAME ; void QDeclarativeGraphicsObjectContainer::setSynchronizedResizing(bool) + ?setTag@QMetaMethodBuilder@@QAEXABVQByteArray@@@Z @ 2608 NONAME ; void QMetaMethodBuilder::setTag(class QByteArray const &) + ?setTarget@QDeclarativeBehavior@@UAEXABVQDeclarativeProperty@@@Z @ 2609 NONAME ; void QDeclarativeBehavior::setTarget(class QDeclarativeProperty const &) + ?setTarget@QDeclarativeConnections@@QAEXPAVQObject@@@Z @ 2610 NONAME ; void QDeclarativeConnections::setTarget(class QObject *) + ?setTarget@QDeclarativeDrag@@QAEXPAVQDeclarativeItem@@@Z @ 2611 NONAME ; void QDeclarativeDrag::setTarget(class QDeclarativeItem *) + ?setTarget@QDeclarativeEaseFollow@@UAEXABVQDeclarativeProperty@@@Z @ 2612 NONAME ; void QDeclarativeEaseFollow::setTarget(class QDeclarativeProperty const &) + ?setTarget@QDeclarativeSpringFollow@@UAEXABVQDeclarativeProperty@@@Z @ 2613 NONAME ; void QDeclarativeSpringFollow::setTarget(class QDeclarativeProperty const &) + ?setText@QDeclarativeText@@QAEXABVQString@@@Z @ 2614 NONAME ; void QDeclarativeText::setText(class QString const &) + ?setText@QDeclarativeTextEdit@@QAEXABVQString@@@Z @ 2615 NONAME ; void QDeclarativeTextEdit::setText(class QString const &) + ?setText@QDeclarativeTextInput@@QAEXABVQString@@@Z @ 2616 NONAME ; void QDeclarativeTextInput::setText(class QString const &) + ?setTextFormat@QDeclarativeText@@QAEXW4TextFormat@1@@Z @ 2617 NONAME ; void QDeclarativeText::setTextFormat(enum QDeclarativeText::TextFormat) + ?setTextFormat@QDeclarativeTextEdit@@QAEXW4TextFormat@1@@Z @ 2618 NONAME ; void QDeclarativeTextEdit::setTextFormat(enum QDeclarativeTextEdit::TextFormat) + ?setTextInteractionFlags@QDeclarativeTextEdit@@QAEXV?$QFlags@W4TextInteractionFlag@Qt@@@@@Z @ 2619 NONAME ; void QDeclarativeTextEdit::setTextInteractionFlags(class QFlags) + ?setTextMargin@QDeclarativeTextEdit@@QAEXM@Z @ 2620 NONAME ; void QDeclarativeTextEdit::setTextMargin(float) + ?setTime@QDeclarativeDateTimeFormatter@@QAEXABVQTime@@@Z @ 2621 NONAME ; void QDeclarativeDateTimeFormatter::setTime(class QTime const &) + ?setTimeFormat@QDeclarativeDateTimeFormatter@@QAEXABVQString@@@Z @ 2622 NONAME ; void QDeclarativeDateTimeFormatter::setTimeFormat(class QString const &) + ?setToState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 2623 NONAME ; void QDeclarativeTransition::setToState(class QString const &) + ?setTop@QDeclarativeAnchorChanges@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2624 NONAME ; void QDeclarativeAnchorChanges::setTop(class QDeclarativeAnchorLine const &) + ?setTop@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2625 NONAME ; void QDeclarativeAnchors::setTop(class QDeclarativeAnchorLine const &) + ?setTop@QDeclarativeScaleGrid@@QAEXH@Z @ 2626 NONAME ; void QDeclarativeScaleGrid::setTop(int) + ?setTopMargin@QDeclarativeAnchors@@QAEXM@Z @ 2627 NONAME ; void QDeclarativeAnchors::setTopMargin(float) + ?setTransformOrigin@QDeclarativeItem@@QAEXW4TransformOrigin@1@@Z @ 2628 NONAME ; void QDeclarativeItem::setTransformOrigin(enum QDeclarativeItem::TransformOrigin) + ?setTriggeredOnStart@QDeclarativeTimer@@QAEX_N@Z @ 2629 NONAME ; void QDeclarativeTimer::setTriggeredOnStart(bool) + ?setUrl@QDeclarativeDebugFileReference@@QAEXABVQUrl@@@Z @ 2630 NONAME ; void QDeclarativeDebugFileReference::setUrl(class QUrl const &) + ?setUrl@QDeclarativeError@@QAEXABVQUrl@@@Z @ 2631 NONAME ; void QDeclarativeError::setUrl(class QUrl const &) + ?setUrl@QDeclarativeWebView@@QAEXABVQUrl@@@Z @ 2632 NONAME ; void QDeclarativeWebView::setUrl(class QUrl const &) + ?setUser@QMetaPropertyBuilder@@QAEX_N@Z @ 2633 NONAME ; void QMetaPropertyBuilder::setUser(bool) + ?setVAlign@QDeclarativeText@@QAEXW4VAlignment@1@@Z @ 2634 NONAME ; void QDeclarativeText::setVAlign(enum QDeclarativeText::VAlignment) + ?setVAlign@QDeclarativeTextEdit@@QAEXW4VAlignment@1@@Z @ 2635 NONAME ; void QDeclarativeTextEdit::setVAlign(enum QDeclarativeTextEdit::VAlignment) + ?setValidator@QDeclarativeTextInput@@QAEXPAVQValidator@@@Z @ 2636 NONAME ; void QDeclarativeTextInput::setValidator(class QValidator *) + ?setValue@QDeclarativeBind@@QAEXABVQVariant@@@Z @ 2637 NONAME ; void QDeclarativeBind::setValue(class QVariant const &) + ?setValue@QDeclarativeOpenMetaObject@@QAEXABVQByteArray@@ABVQVariant@@@Z @ 2638 NONAME ; void QDeclarativeOpenMetaObject::setValue(class QByteArray const &, class QVariant const &) + ?setValue@QDeclarativeOpenMetaObject@@QAEXHABVQVariant@@@Z @ 2639 NONAME ; void QDeclarativeOpenMetaObject::setValue(int, class QVariant const &) + ?setValue@QDeclarativePathAttribute@@QAEXM@Z @ 2640 NONAME ; void QDeclarativePathAttribute::setValue(float) + ?setValue@QDeclarativePathPercent@@QAEXM@Z @ 2641 NONAME ; void QDeclarativePathPercent::setValue(float) + ?setVelocity@QDeclarativeEaseFollow@@QAEXM@Z @ 2642 NONAME ; void QDeclarativeEaseFollow::setVelocity(float) + ?setVelocity@QDeclarativeParticles@@QAEXM@Z @ 2643 NONAME ; void QDeclarativeParticles::setVelocity(float) + ?setVelocity@QDeclarativeSpringFollow@@QAEXM@Z @ 2644 NONAME ; void QDeclarativeSpringFollow::setVelocity(float) + ?setVelocityDeviation@QDeclarativeParticles@@QAEXM@Z @ 2645 NONAME ; void QDeclarativeParticles::setVelocityDeviation(float) + ?setVerticalCenter@QDeclarativeAnchorChanges@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2646 NONAME ; void QDeclarativeAnchorChanges::setVerticalCenter(class QDeclarativeAnchorLine const &) + ?setVerticalCenter@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 2647 NONAME ; void QDeclarativeAnchors::setVerticalCenter(class QDeclarativeAnchorLine const &) + ?setVerticalCenterOffset@QDeclarativeAnchors@@QAEXM@Z @ 2648 NONAME ; void QDeclarativeAnchors::setVerticalCenterOffset(float) + ?setVerticalTileMode@QDeclarativeBorderImage@@QAEXW4TileMode@1@@Z @ 2649 NONAME ; void QDeclarativeBorderImage::setVerticalTileMode(enum QDeclarativeBorderImage::TileMode) + ?setWhen@QDeclarativeBind@@QAEX_N@Z @ 2650 NONAME ; void QDeclarativeBind::setWhen(bool) + ?setWhen@QDeclarativeState@@QAEXPAVQDeclarativeBinding@@@Z @ 2651 NONAME ; void QDeclarativeState::setWhen(class QDeclarativeBinding *) + ?setWidth@QDeclarativeItem@@QAEXM@Z @ 2652 NONAME ; void QDeclarativeItem::setWidth(float) + ?setWidth@QDeclarativeParentChange@@QAEXM@Z @ 2653 NONAME ; void QDeclarativeParentChange::setWidth(float) + ?setWidth@QDeclarativePen@@QAEXH@Z @ 2654 NONAME ; void QDeclarativePen::setWidth(int) + ?setWrap@QDeclarativeText@@QAEX_N@Z @ 2655 NONAME ; void QDeclarativeText::setWrap(bool) + ?setWrap@QDeclarativeTextEdit@@QAEX_N@Z @ 2656 NONAME ; void QDeclarativeTextEdit::setWrap(bool) + ?setWrapEnabled@QDeclarativeGridView@@QAEX_N@Z @ 2657 NONAME ; void QDeclarativeGridView::setWrapEnabled(bool) + ?setWrapEnabled@QDeclarativeListView@@QAEX_N@Z @ 2658 NONAME ; void QDeclarativeListView::setWrapEnabled(bool) + ?setWritable@QMetaPropertyBuilder@@QAEX_N@Z @ 2659 NONAME ; void QMetaPropertyBuilder::setWritable(bool) + ?setX@QDeclarativeCurve@@QAEXM@Z @ 2660 NONAME ; void QDeclarativeCurve::setX(float) + ?setX@QDeclarativeParentChange@@QAEXM@Z @ 2661 NONAME ; void QDeclarativeParentChange::setX(float) + ?setXAttractor@QDeclarativeParticleMotionGravity@@QAEXM@Z @ 2662 NONAME ; void QDeclarativeParticleMotionGravity::setXAttractor(float) + ?setXVariance@QDeclarativeParticleMotionWander@@QAEXM@Z @ 2663 NONAME ; void QDeclarativeParticleMotionWander::setXVariance(float) + ?setXmax@QDeclarativeDrag@@QAEXM@Z @ 2664 NONAME ; void QDeclarativeDrag::setXmax(float) + ?setXmin@QDeclarativeDrag@@QAEXM@Z @ 2665 NONAME ; void QDeclarativeDrag::setXmin(float) + ?setXml@QDeclarativeXmlListModel@@QAEXABVQString@@@Z @ 2666 NONAME ; void QDeclarativeXmlListModel::setXml(class QString const &) + ?setY@QDeclarativeCurve@@QAEXM@Z @ 2667 NONAME ; void QDeclarativeCurve::setY(float) + ?setY@QDeclarativeParentChange@@QAEXM@Z @ 2668 NONAME ; void QDeclarativeParentChange::setY(float) + ?setYAttractor@QDeclarativeParticleMotionGravity@@QAEXM@Z @ 2669 NONAME ; void QDeclarativeParticleMotionGravity::setYAttractor(float) + ?setYVariance@QDeclarativeParticleMotionWander@@QAEXM@Z @ 2670 NONAME ; void QDeclarativeParticleMotionWander::setYVariance(float) + ?setYmax@QDeclarativeDrag@@QAEXM@Z @ 2671 NONAME ; void QDeclarativeDrag::setYmax(float) + ?setYmin@QDeclarativeDrag@@QAEXM@Z @ 2672 NONAME ; void QDeclarativeDrag::setYmin(float) + ?setZoomFactor@QDeclarativeWebView@@QAEXM@Z @ 2673 NONAME ; void QDeclarativeWebView::setZoomFactor(float) + ?settings@QDeclarativeWebView@@QBEPAVQWebSettings@@XZ @ 2674 NONAME ; class QWebSettings * QDeclarativeWebView::settings(void) const + ?settingsObject@QDeclarativeWebView@@QBEPAVQDeclarativeWebSettings@@XZ @ 2675 NONAME ; class QDeclarativeWebSettings * QDeclarativeWebView::settingsObject(void) const + ?shadow@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 2676 NONAME ; class QColor QDeclarativeSystemPalette::shadow(void) const + ?side@QDeclarativeFlipable@@QBE?AW4Side@1@XZ @ 2677 NONAME ; enum QDeclarativeFlipable::Side QDeclarativeFlipable::side(void) const + ?sideChanged@QDeclarativeFlipable@@IAEXXZ @ 2678 NONAME ; void QDeclarativeFlipable::sideChanged(void) + ?signalOffset@QDeclarativeOpenMetaObjectType@@QBEHXZ @ 2679 NONAME ; int QDeclarativeOpenMetaObjectType::signalOffset(void) const + ?signature@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 2680 NONAME ; class QByteArray QMetaMethodBuilder::signature(void) const + ?size@QDeclarativePropertyMap@@QBEHXZ @ 2681 NONAME ; int QDeclarativePropertyMap::size(void) const + ?sizeChange@QDeclarativeGridView@@AAEXXZ @ 2682 NONAME ; void QDeclarativeGridView::sizeChange(void) + ?sizeChanged@QDeclarativeView@@AAEXXZ @ 2683 NONAME ; void QDeclarativeView::sizeChanged(void) + ?sizeFFromString@QDeclarativeStringConverters@@YA?AVQSizeF@@ABVQString@@PA_N@Z @ 2684 NONAME ; class QSizeF QDeclarativeStringConverters::sizeFFromString(class QString const &, bool *) + ?sizeHint@QDeclarativeView@@UBE?AVQSize@@XZ @ 2685 NONAME ; class QSize QDeclarativeView::sizeHint(void) const + ?smooth@QDeclarativeItem@@QBE_NXZ @ 2686 NONAME ; bool QDeclarativeItem::smooth(void) const + ?smoothCache@QDeclarativePaintedItem@@QBE_NXZ @ 2687 NONAME ; bool QDeclarativePaintedItem::smoothCache(void) const + ?smoothChanged@QDeclarativeItem@@IAEXXZ @ 2688 NONAME ; void QDeclarativeItem::smoothChanged(void) + ?snapMode@QDeclarativeListView@@QBE?AW4SnapMode@1@XZ @ 2689 NONAME ; enum QDeclarativeListView::SnapMode QDeclarativeListView::snapMode(void) const + ?snapPosition@QDeclarativePathView@@QBEMXZ @ 2690 NONAME ; float QDeclarativePathView::snapPosition(void) const + ?source@QDeclarativeDebugObjectReference@@QBE?AVQDeclarativeDebugFileReference@@XZ @ 2691 NONAME ; class QDeclarativeDebugFileReference QDeclarativeDebugObjectReference::source(void) const + ?source@QDeclarativeFontLoader@@QBE?AVQUrl@@XZ @ 2692 NONAME ; class QUrl QDeclarativeFontLoader::source(void) const + ?source@QDeclarativeImageBase@@QBE?AVQUrl@@XZ @ 2693 NONAME ; class QUrl QDeclarativeImageBase::source(void) const + ?source@QDeclarativeLoader@@QBE?AVQUrl@@XZ @ 2694 NONAME ; class QUrl QDeclarativeLoader::source(void) const + ?source@QDeclarativeParticles@@QBE?AVQUrl@@XZ @ 2695 NONAME ; class QUrl QDeclarativeParticles::source(void) const + ?source@QDeclarativeView@@QBE?AVQUrl@@XZ @ 2696 NONAME ; class QUrl QDeclarativeView::source(void) const + ?source@QDeclarativeXmlListModel@@QBE?AVQUrl@@XZ @ 2697 NONAME ; class QUrl QDeclarativeXmlListModel::source(void) const + ?sourceChanged@QDeclarativeEaseFollow@@IAEXXZ @ 2698 NONAME ; void QDeclarativeEaseFollow::sourceChanged(void) + ?sourceChanged@QDeclarativeImageBase@@IAEXABVQUrl@@@Z @ 2699 NONAME ; void QDeclarativeImageBase::sourceChanged(class QUrl const &) + ?sourceChanged@QDeclarativeLoader@@IAEXXZ @ 2700 NONAME ; void QDeclarativeLoader::sourceChanged(void) + ?sourceChanged@QDeclarativeParticles@@IAEXXZ @ 2701 NONAME ; void QDeclarativeParticles::sourceChanged(void) + ?sourceComponent@QDeclarativeLoader@@QBEPAVQDeclarativeComponent@@XZ @ 2702 NONAME ; class QDeclarativeComponent * QDeclarativeLoader::sourceComponent(void) const + ?sourceFile@QDeclarativeExpression@@QBE?AVQString@@XZ @ 2703 NONAME ; class QString QDeclarativeExpression::sourceFile(void) const + ?sourceValue@QDeclarativeEaseFollow@@QBEMXZ @ 2704 NONAME ; float QDeclarativeEaseFollow::sourceValue(void) const + ?sourceValue@QDeclarativeSpringFollow@@QBEMXZ @ 2705 NONAME ; float QDeclarativeSpringFollow::sourceValue(void) const + ?spacing@QDeclarativeBasePositioner@@QBEHXZ @ 2706 NONAME ; int QDeclarativeBasePositioner::spacing(void) const + ?spacing@QDeclarativeListView@@QBEMXZ @ 2707 NONAME ; float QDeclarativeListView::spacing(void) const + ?spacingChanged@QDeclarativeBasePositioner@@IAEXXZ @ 2708 NONAME ; void QDeclarativeBasePositioner::spacingChanged(void) + ?spacingChanged@QDeclarativeListView@@IAEXXZ @ 2709 NONAME ; void QDeclarativeListView::spacingChanged(void) + ?spring@QDeclarativeSpringFollow@@QBEMXZ @ 2710 NONAME ; float QDeclarativeSpringFollow::spring(void) const + ?start@QDeclarativeTimer@@QAEXXZ @ 2711 NONAME ; void QDeclarativeTimer::start(void) + ?startX@QDeclarativePath@@QBEMXZ @ 2712 NONAME ; float QDeclarativePath::startX(void) const + ?startY@QDeclarativePath@@QBEMXZ @ 2713 NONAME ; float QDeclarativePath::startY(void) const + ?state@QDeclarativeDebugQuery@@QBE?AW4State@1@XZ @ 2714 NONAME ; enum QDeclarativeDebugQuery::State QDeclarativeDebugQuery::state(void) const + ?state@QDeclarativeDebugWatch@@QBE?AW4State@1@XZ @ 2715 NONAME ; enum QDeclarativeDebugWatch::State QDeclarativeDebugWatch::state(void) const + ?state@QDeclarativeItem@@QBE?AVQString@@XZ @ 2716 NONAME ; class QString QDeclarativeItem::state(void) const + ?state@QDeclarativeStateGroup@@QBE?AVQString@@XZ @ 2717 NONAME ; class QString QDeclarativeStateGroup::state(void) const + ?stateChanged@QDeclarativeDebugQuery@@IAEXW4State@1@@Z @ 2718 NONAME ; void QDeclarativeDebugQuery::stateChanged(enum QDeclarativeDebugQuery::State) + ?stateChanged@QDeclarativeDebugWatch@@IAEXW4State@1@@Z @ 2719 NONAME ; void QDeclarativeDebugWatch::stateChanged(enum QDeclarativeDebugWatch::State) + ?stateChanged@QDeclarativeItem@@IAEXABVQString@@@Z @ 2720 NONAME ; void QDeclarativeItem::stateChanged(class QString const &) + ?stateChanged@QDeclarativeStateGroup@@IAEXABVQString@@@Z @ 2721 NONAME ; void QDeclarativeStateGroup::stateChanged(class QString const &) + ?stateGroup@QDeclarativeState@@QBEPAVQDeclarativeStateGroup@@XZ @ 2722 NONAME ; class QDeclarativeStateGroup * QDeclarativeState::stateGroup(void) const + ?states@QDeclarativeItem@@QAE?AU?$QDeclarativeListProperty@VQDeclarativeState@@@@XZ @ 2723 NONAME ; struct QDeclarativeListProperty QDeclarativeItem::states(void) + ?states@QDeclarativeStateGroup@@QBE?AV?$QList@PAVQDeclarativeState@@@@XZ @ 2724 NONAME ; class QList QDeclarativeStateGroup::states(void) const + ?statesProperty@QDeclarativeStateGroup@@QAE?AU?$QDeclarativeListProperty@VQDeclarativeState@@@@XZ @ 2725 NONAME ; struct QDeclarativeListProperty QDeclarativeStateGroup::statesProperty(void) + ?staticMetacallFunction@QMetaObjectBuilder@@QBEP6AHW4Call@QMetaObject@@HPAPAX@ZXZ @ 2726 NONAME ; int (*)(enum QMetaObject::Call, int, void * *) QMetaObjectBuilder::staticMetacallFunction(void) const + ?status@QDeclarativeComponent@@QBE?AW4Status@1@XZ @ 2727 NONAME ; enum QDeclarativeComponent::Status QDeclarativeComponent::status(void) const + ?status@QDeclarativeFontLoader@@QBE?AW4Status@1@XZ @ 2728 NONAME ; enum QDeclarativeFontLoader::Status QDeclarativeFontLoader::status(void) const + ?status@QDeclarativeImageBase@@QBE?AW4Status@1@XZ @ 2729 NONAME ; enum QDeclarativeImageBase::Status QDeclarativeImageBase::status(void) const + ?status@QDeclarativeLoader@@QBE?AW4Status@1@XZ @ 2730 NONAME ; enum QDeclarativeLoader::Status QDeclarativeLoader::status(void) const + ?status@QDeclarativePixmapReply@@QBE?AW4Status@1@XZ @ 2731 NONAME ; enum QDeclarativePixmapReply::Status QDeclarativePixmapReply::status(void) const + ?status@QDeclarativeView@@QBE?AW4Status@1@XZ @ 2732 NONAME ; enum QDeclarativeView::Status QDeclarativeView::status(void) const + ?status@QDeclarativeWebView@@QBE?AW4Status@1@XZ @ 2733 NONAME ; enum QDeclarativeWebView::Status QDeclarativeWebView::status(void) const + ?status@QDeclarativeXmlListModel@@QBE?AW4Status@1@XZ @ 2734 NONAME ; enum QDeclarativeXmlListModel::Status QDeclarativeXmlListModel::status(void) const + ?statusChanged@QDeclarativeComponent@@IAEXW4Status@1@@Z @ 2735 NONAME ; void QDeclarativeComponent::statusChanged(enum QDeclarativeComponent::Status) + ?statusChanged@QDeclarativeFontLoader@@IAEXXZ @ 2736 NONAME ; void QDeclarativeFontLoader::statusChanged(void) + ?statusChanged@QDeclarativeImageBase@@IAEXW4Status@1@@Z @ 2737 NONAME ; void QDeclarativeImageBase::statusChanged(enum QDeclarativeImageBase::Status) + ?statusChanged@QDeclarativeLoader@@IAEXXZ @ 2738 NONAME ; void QDeclarativeLoader::statusChanged(void) + ?statusChanged@QDeclarativeView@@IAEXW4Status@1@@Z @ 2739 NONAME ; void QDeclarativeView::statusChanged(enum QDeclarativeView::Status) + ?statusChanged@QDeclarativeWebView@@IAEXW4Status@1@@Z @ 2740 NONAME ; void QDeclarativeWebView::statusChanged(enum QDeclarativeWebView::Status) + ?statusChanged@QDeclarativeXmlListModel@@IAEXW4Status@1@@Z @ 2741 NONAME ; void QDeclarativeXmlListModel::statusChanged(enum QDeclarativeXmlListModel::Status) + ?statusText@QDeclarativeWebView@@QBE?AVQString@@XZ @ 2742 NONAME ; class QString QDeclarativeWebView::statusText(void) const + ?statusTextChanged@QDeclarativeWebView@@IAEXXZ @ 2743 NONAME ; void QDeclarativeWebView::statusTextChanged(void) + ?stop@QDeclarativeTimer@@QAEXXZ @ 2744 NONAME ; void QDeclarativeTimer::stop(void) + ?stop@QDeclarativeTransition@@QAEXXZ @ 2745 NONAME ; void QDeclarativeTransition::stop(void) + ?stopAction@QDeclarativeWebView@@QBEPAVQAction@@XZ @ 2746 NONAME ; class QAction * QDeclarativeWebView::stopAction(void) const + ?stops@QDeclarativeGradient@@QAE?AU?$QDeclarativeListProperty@VQDeclarativeGradientStop@@@@XZ @ 2747 NONAME ; struct QDeclarativeListProperty QDeclarativeGradient::stops(void) + ?stringToRule@QDeclarativeGridScaledImage@@CA?AW4TileMode@QDeclarativeBorderImage@@ABVQString@@@Z @ 2748 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::stringToRule(class QString const &) + ?stringValue@QDeclarativeVisualDataModel@@UAE?AVQString@@HABV2@@Z @ 2749 NONAME ; class QString QDeclarativeVisualDataModel::stringValue(int, class QString const &) + ?stringValue@QDeclarativeVisualItemModel@@UAE?AVQString@@HABV2@@Z @ 2750 NONAME ; class QString QDeclarativeVisualItemModel::stringValue(int, class QString const &) + ?stringValue@QDeclarativeVisualModel@@UAE?AVQString@@HABV2@@Z @ 2751 NONAME ; class QString QDeclarativeVisualModel::stringValue(int, class QString const &) + ?style@QDeclarativeText@@QBE?AW4TextStyle@1@XZ @ 2752 NONAME ; enum QDeclarativeText::TextStyle QDeclarativeText::style(void) const + ?styleChanged@QDeclarativeText@@IAEXW4TextStyle@1@@Z @ 2753 NONAME ; void QDeclarativeText::styleChanged(enum QDeclarativeText::TextStyle) + ?styleColor@QDeclarativeText@@QBE?AVQColor@@XZ @ 2754 NONAME ; class QColor QDeclarativeText::styleColor(void) const + ?styleColorChanged@QDeclarativeText@@IAEXABVQColor@@@Z @ 2755 NONAME ; void QDeclarativeText::styleColorChanged(class QColor const &) + ?superClass@QMetaObjectBuilder@@QBEPBUQMetaObject@@XZ @ 2756 NONAME ; struct QMetaObject const * QMetaObjectBuilder::superClass(void) const + ?syncChanged@QDeclarativeSpringFollow@@IAEXXZ @ 2757 NONAME ; void QDeclarativeSpringFollow::syncChanged(void) + ?synchronizedResizing@QDeclarativeGraphicsObjectContainer@@QBE_NXZ @ 2758 NONAME ; bool QDeclarativeGraphicsObjectContainer::synchronizedResizing(void) const + ?tag@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 2759 NONAME ; class QByteArray QMetaMethodBuilder::tag(void) const + ?target@QDeclarativeConnections@@QBEPAVQObject@@XZ @ 2760 NONAME ; class QObject * QDeclarativeConnections::target(void) const + ?target@QDeclarativeDrag@@QBEPAVQDeclarativeItem@@XZ @ 2761 NONAME ; class QDeclarativeItem * QDeclarativeDrag::target(void) const + ?targetChanged@QDeclarativeConnections@@IAEXXZ @ 2762 NONAME ; void QDeclarativeConnections::targetChanged(void) + ?targetChanged@QDeclarativeDrag@@IAEXXZ @ 2763 NONAME ; void QDeclarativeDrag::targetChanged(void) + ?testLiteralAssignment@QDeclarativeCompiler@@AAE_NABVQMetaProperty@@PAVValue@QDeclarativeParser@@@Z @ 2764 NONAME ; bool QDeclarativeCompiler::testLiteralAssignment(class QMetaProperty const &, class QDeclarativeParser::Value *) + ?testQualifiedEnumAssignment@QDeclarativeCompiler@@AAE_NABVQMetaProperty@@PAVObject@QDeclarativeParser@@PAVValue@4@PA_N@Z @ 2765 NONAME ; bool QDeclarativeCompiler::testQualifiedEnumAssignment(class QMetaProperty const &, class QDeclarativeParser::Object *, class QDeclarativeParser::Value *, bool *) + ?text@QDeclarativeNumberFormatter@@QBE?AVQString@@XZ @ 2766 NONAME ; class QString QDeclarativeNumberFormatter::text(void) const + ?text@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 2767 NONAME ; class QColor QDeclarativeSystemPalette::text(void) const + ?text@QDeclarativeText@@QBE?AVQString@@XZ @ 2768 NONAME ; class QString QDeclarativeText::text(void) const + ?text@QDeclarativeTextEdit@@QBE?AVQString@@XZ @ 2769 NONAME ; class QString QDeclarativeTextEdit::text(void) const + ?text@QDeclarativeTextInput@@QBE?AVQString@@XZ @ 2770 NONAME ; class QString QDeclarativeTextInput::text(void) const + ?textChanged@QDeclarativeDateTimeFormatter@@IAEXXZ @ 2771 NONAME ; void QDeclarativeDateTimeFormatter::textChanged(void) + ?textChanged@QDeclarativeNumberFormatter@@IAEXXZ @ 2772 NONAME ; void QDeclarativeNumberFormatter::textChanged(void) + ?textChanged@QDeclarativeText@@IAEXABVQString@@@Z @ 2773 NONAME ; void QDeclarativeText::textChanged(class QString const &) + ?textChanged@QDeclarativeTextEdit@@IAEXABVQString@@@Z @ 2774 NONAME ; void QDeclarativeTextEdit::textChanged(class QString const &) + ?textChanged@QDeclarativeTextInput@@IAEXXZ @ 2775 NONAME ; void QDeclarativeTextInput::textChanged(void) + ?textFormat@QDeclarativeText@@QBE?AW4TextFormat@1@XZ @ 2776 NONAME ; enum QDeclarativeText::TextFormat QDeclarativeText::textFormat(void) const + ?textFormat@QDeclarativeTextEdit@@QBE?AW4TextFormat@1@XZ @ 2777 NONAME ; enum QDeclarativeTextEdit::TextFormat QDeclarativeTextEdit::textFormat(void) const + ?textFormatChanged@QDeclarativeText@@IAEXW4TextFormat@1@@Z @ 2778 NONAME ; void QDeclarativeText::textFormatChanged(enum QDeclarativeText::TextFormat) + ?textFormatChanged@QDeclarativeTextEdit@@IAEXW4TextFormat@1@@Z @ 2779 NONAME ; void QDeclarativeTextEdit::textFormatChanged(enum QDeclarativeTextEdit::TextFormat) + ?textInteractionFlags@QDeclarativeTextEdit@@QBE?AV?$QFlags@W4TextInteractionFlag@Qt@@@@XZ @ 2780 NONAME ; class QFlags QDeclarativeTextEdit::textInteractionFlags(void) const + ?textMargin@QDeclarativeTextEdit@@QBEMXZ @ 2781 NONAME ; float QDeclarativeTextEdit::textMargin(void) const + ?textMarginChanged@QDeclarativeTextEdit@@IAEXM@Z @ 2782 NONAME ; void QDeclarativeTextEdit::textMarginChanged(float) + ?ticked@QDeclarativeFlickable@@MAEXXZ @ 2783 NONAME ; void QDeclarativeFlickable::ticked(void) + ?ticked@QDeclarativePathView@@AAEXXZ @ 2784 NONAME ; void QDeclarativePathView::ticked(void) + ?ticked@QDeclarativeTimer@@AAEXXZ @ 2785 NONAME ; void QDeclarativeTimer::ticked(void) + ?time@QDeclarativeDateTimeFormatter@@QBE?AVQTime@@XZ @ 2786 NONAME ; class QTime QDeclarativeDateTimeFormatter::time(void) const + ?timeFormat@QDeclarativeDateTimeFormatter@@QBE?AVQString@@XZ @ 2787 NONAME ; class QString QDeclarativeDateTimeFormatter::timeFormat(void) const + ?timeFromString@QDeclarativeStringConverters@@YA?AVQTime@@ABVQString@@PA_N@Z @ 2788 NONAME ; class QTime QDeclarativeStringConverters::timeFromString(class QString const &, bool *) + ?timeText@QDeclarativeDateTimeFormatter@@QBE?AVQString@@XZ @ 2789 NONAME ; class QString QDeclarativeDateTimeFormatter::timeText(void) const + ?timerEvent@QDeclarativeFlickable@@MAEXPAVQTimerEvent@@@Z @ 2790 NONAME ; void QDeclarativeFlickable::timerEvent(class QTimerEvent *) + ?timerEvent@QDeclarativeMouseArea@@MAEXPAVQTimerEvent@@@Z @ 2791 NONAME ; void QDeclarativeMouseArea::timerEvent(class QTimerEvent *) + ?timerEvent@QDeclarativeView@@MAEXPAVQTimerEvent@@@Z @ 2792 NONAME ; void QDeclarativeView::timerEvent(class QTimerEvent *) + ?timerEvent@QDeclarativeWebView@@MAEXPAVQTimerEvent@@@Z @ 2793 NONAME ; void QDeclarativeWebView::timerEvent(class QTimerEvent *) + ?title@QDeclarativeWebView@@QBE?AVQString@@XZ @ 2794 NONAME ; class QString QDeclarativeWebView::title(void) const + ?titleChanged@QDeclarativeWebView@@IAEXABVQString@@@Z @ 2795 NONAME ; void QDeclarativeWebView::titleChanged(class QString const &) + ?toBinding@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueBinding@@XZ @ 2796 NONAME ; class QDeclarativeDomValueBinding QDeclarativeDomValue::toBinding(void) const + ?toComponent@QDeclarativeDomObject@@QBE?AVQDeclarativeDomComponent@@XZ @ 2797 NONAME ; class QDeclarativeDomComponent QDeclarativeDomObject::toComponent(void) const + ?toList@QDeclarativeDomValue@@QBE?AVQDeclarativeDomList@@XZ @ 2798 NONAME ; class QDeclarativeDomList QDeclarativeDomValue::toList(void) const + ?toLiteral@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueLiteral@@XZ @ 2799 NONAME ; class QDeclarativeDomValueLiteral QDeclarativeDomValue::toLiteral(void) const + ?toMetaObject@QMetaObjectBuilder@@QBEPAUQMetaObject@@XZ @ 2800 NONAME ; struct QMetaObject * QMetaObjectBuilder::toMetaObject(void) const + ?toObject@QDeclarativeDomValue@@QBE?AVQDeclarativeDomObject@@XZ @ 2801 NONAME ; class QDeclarativeDomObject QDeclarativeDomValue::toObject(void) const + ?toQObject@QDeclarativeMetaType@@SAPAVQObject@@ABVQVariant@@PA_N@Z @ 2802 NONAME ; class QObject * QDeclarativeMetaType::toQObject(class QVariant const &, bool *) + ?toQmlType@QDeclarativeCompiler@@CAPAVQDeclarativeType@@PAVObject@QDeclarativeParser@@@Z @ 2803 NONAME ; class QDeclarativeType * QDeclarativeCompiler::toQmlType(class QDeclarativeParser::Object *) + ?toRelocatableData@QMetaObjectBuilder@@QBE?AVQByteArray@@PA_N@Z @ 2804 NONAME ; class QByteArray QMetaObjectBuilder::toRelocatableData(bool *) const + ?toState@QDeclarativeTransition@@QBE?AVQString@@XZ @ 2805 NONAME ; class QString QDeclarativeTransition::toState(void) const + ?toString@QDeclarativeError@@QBE?AVQString@@XZ @ 2806 NONAME ; class QString QDeclarativeError::toString(void) const + ?toString@QDeclarativeListModel@@UBE?AVQString@@H@Z @ 2807 NONAME ; class QString QDeclarativeListModel::toString(int) const + ?toString@QDeclarativeXmlListModel@@UBE?AVQString@@H@Z @ 2808 NONAME ; class QString QDeclarativeXmlListModel::toString(int) const + ?toValueInterceptor@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueValueInterceptor@@XZ @ 2809 NONAME ; class QDeclarativeDomValueValueInterceptor QDeclarativeDomValue::toValueInterceptor(void) const + ?toValueSource@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueValueSource@@XZ @ 2810 NONAME ; class QDeclarativeDomValueValueSource QDeclarativeDomValue::toValueSource(void) const + ?top@QDeclarativeAnchorChanges@@QBE?AVQDeclarativeAnchorLine@@XZ @ 2811 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchorChanges::top(void) const + ?top@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 2812 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::top(void) const + ?top@QDeclarativeItem@@QBE?AVQDeclarativeAnchorLine@@XZ @ 2813 NONAME ; class QDeclarativeAnchorLine QDeclarativeItem::top(void) const + ?top@QDeclarativeScaleGrid@@QBEHXZ @ 2814 NONAME ; int QDeclarativeScaleGrid::top(void) const + ?topChanged@QDeclarativeAnchors@@IAEXXZ @ 2815 NONAME ; void QDeclarativeAnchors::topChanged(void) + ?topMargin@QDeclarativeAnchors@@QBEMXZ @ 2816 NONAME ; float QDeclarativeAnchors::topMargin(void) const + ?topMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 2817 NONAME ; void QDeclarativeAnchors::topMarginChanged(void) + ?tr@QDeclarativeAnchorChanges@@SA?AVQString@@PBD0@Z @ 2818 NONAME ; class QString QDeclarativeAnchorChanges::tr(char const *, char const *) + ?tr@QDeclarativeAnchorChanges@@SA?AVQString@@PBD0H@Z @ 2819 NONAME ; class QString QDeclarativeAnchorChanges::tr(char const *, char const *, int) + ?tr@QDeclarativeAnchors@@SA?AVQString@@PBD0@Z @ 2820 NONAME ; class QString QDeclarativeAnchors::tr(char const *, char const *) + ?tr@QDeclarativeAnchors@@SA?AVQString@@PBD0H@Z @ 2821 NONAME ; class QString QDeclarativeAnchors::tr(char const *, char const *, int) + ?tr@QDeclarativeAnimatedImage@@SA?AVQString@@PBD0@Z @ 2822 NONAME ; class QString QDeclarativeAnimatedImage::tr(char const *, char const *) + ?tr@QDeclarativeAnimatedImage@@SA?AVQString@@PBD0H@Z @ 2823 NONAME ; class QString QDeclarativeAnimatedImage::tr(char const *, char const *, int) + ?tr@QDeclarativeBasePositioner@@SA?AVQString@@PBD0@Z @ 2824 NONAME ; class QString QDeclarativeBasePositioner::tr(char const *, char const *) + ?tr@QDeclarativeBasePositioner@@SA?AVQString@@PBD0H@Z @ 2825 NONAME ; class QString QDeclarativeBasePositioner::tr(char const *, char const *, int) + ?tr@QDeclarativeBehavior@@SA?AVQString@@PBD0@Z @ 2826 NONAME ; class QString QDeclarativeBehavior::tr(char const *, char const *) + ?tr@QDeclarativeBehavior@@SA?AVQString@@PBD0H@Z @ 2827 NONAME ; class QString QDeclarativeBehavior::tr(char const *, char const *, int) + ?tr@QDeclarativeBind@@SA?AVQString@@PBD0@Z @ 2828 NONAME ; class QString QDeclarativeBind::tr(char const *, char const *) + ?tr@QDeclarativeBind@@SA?AVQString@@PBD0H@Z @ 2829 NONAME ; class QString QDeclarativeBind::tr(char const *, char const *, int) + ?tr@QDeclarativeBorderImage@@SA?AVQString@@PBD0@Z @ 2830 NONAME ; class QString QDeclarativeBorderImage::tr(char const *, char const *) + ?tr@QDeclarativeBorderImage@@SA?AVQString@@PBD0H@Z @ 2831 NONAME ; class QString QDeclarativeBorderImage::tr(char const *, char const *, int) + ?tr@QDeclarativeColumn@@SA?AVQString@@PBD0@Z @ 2832 NONAME ; class QString QDeclarativeColumn::tr(char const *, char const *) + ?tr@QDeclarativeColumn@@SA?AVQString@@PBD0H@Z @ 2833 NONAME ; class QString QDeclarativeColumn::tr(char const *, char const *, int) + ?tr@QDeclarativeComponent@@SA?AVQString@@PBD0@Z @ 2834 NONAME ; class QString QDeclarativeComponent::tr(char const *, char const *) + ?tr@QDeclarativeComponent@@SA?AVQString@@PBD0H@Z @ 2835 NONAME ; class QString QDeclarativeComponent::tr(char const *, char const *, int) + ?tr@QDeclarativeConnections@@SA?AVQString@@PBD0@Z @ 2836 NONAME ; class QString QDeclarativeConnections::tr(char const *, char const *) + ?tr@QDeclarativeConnections@@SA?AVQString@@PBD0H@Z @ 2837 NONAME ; class QString QDeclarativeConnections::tr(char const *, char const *, int) + ?tr@QDeclarativeContext@@SA?AVQString@@PBD0@Z @ 2838 NONAME ; class QString QDeclarativeContext::tr(char const *, char const *) + ?tr@QDeclarativeContext@@SA?AVQString@@PBD0H@Z @ 2839 NONAME ; class QString QDeclarativeContext::tr(char const *, char const *, int) + ?tr@QDeclarativeCurve@@SA?AVQString@@PBD0@Z @ 2840 NONAME ; class QString QDeclarativeCurve::tr(char const *, char const *) + ?tr@QDeclarativeCurve@@SA?AVQString@@PBD0H@Z @ 2841 NONAME ; class QString QDeclarativeCurve::tr(char const *, char const *, int) + ?tr@QDeclarativeDateTimeFormatter@@SA?AVQString@@PBD0@Z @ 2842 NONAME ; class QString QDeclarativeDateTimeFormatter::tr(char const *, char const *) + ?tr@QDeclarativeDateTimeFormatter@@SA?AVQString@@PBD0H@Z @ 2843 NONAME ; class QString QDeclarativeDateTimeFormatter::tr(char const *, char const *, int) + ?tr@QDeclarativeDebugClient@@SA?AVQString@@PBD0@Z @ 2844 NONAME ; class QString QDeclarativeDebugClient::tr(char const *, char const *) + ?tr@QDeclarativeDebugClient@@SA?AVQString@@PBD0H@Z @ 2845 NONAME ; class QString QDeclarativeDebugClient::tr(char const *, char const *, int) + ?tr@QDeclarativeDebugConnection@@SA?AVQString@@PBD0@Z @ 2846 NONAME ; class QString QDeclarativeDebugConnection::tr(char const *, char const *) + ?tr@QDeclarativeDebugConnection@@SA?AVQString@@PBD0H@Z @ 2847 NONAME ; class QString QDeclarativeDebugConnection::tr(char const *, char const *, int) + ?tr@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0@Z @ 2848 NONAME ; class QString QDeclarativeDebugEnginesQuery::tr(char const *, char const *) + ?tr@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0H@Z @ 2849 NONAME ; class QString QDeclarativeDebugEnginesQuery::tr(char const *, char const *, int) + ?tr@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0@Z @ 2850 NONAME ; class QString QDeclarativeDebugExpressionQuery::tr(char const *, char const *) + ?tr@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0H@Z @ 2851 NONAME ; class QString QDeclarativeDebugExpressionQuery::tr(char const *, char const *, int) + ?tr@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0@Z @ 2852 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::tr(char const *, char const *) + ?tr@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0H@Z @ 2853 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::tr(char const *, char const *, int) + ?tr@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0@Z @ 2854 NONAME ; class QString QDeclarativeDebugObjectQuery::tr(char const *, char const *) + ?tr@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0H@Z @ 2855 NONAME ; class QString QDeclarativeDebugObjectQuery::tr(char const *, char const *, int) + ?tr@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0@Z @ 2856 NONAME ; class QString QDeclarativeDebugPropertyWatch::tr(char const *, char const *) + ?tr@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0H@Z @ 2857 NONAME ; class QString QDeclarativeDebugPropertyWatch::tr(char const *, char const *, int) + ?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0@Z @ 2858 NONAME ; class QString QDeclarativeDebugQuery::tr(char const *, char const *) + ?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0H@Z @ 2859 NONAME ; class QString QDeclarativeDebugQuery::tr(char const *, char const *, int) + ?tr@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0@Z @ 2860 NONAME ; class QString QDeclarativeDebugRootContextQuery::tr(char const *, char const *) + ?tr@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0H@Z @ 2861 NONAME ; class QString QDeclarativeDebugRootContextQuery::tr(char const *, char const *, int) + ?tr@QDeclarativeDebugService@@SA?AVQString@@PBD0@Z @ 2862 NONAME ; class QString QDeclarativeDebugService::tr(char const *, char const *) + ?tr@QDeclarativeDebugService@@SA?AVQString@@PBD0H@Z @ 2863 NONAME ; class QString QDeclarativeDebugService::tr(char const *, char const *, int) + ?tr@QDeclarativeDebugWatch@@SA?AVQString@@PBD0@Z @ 2864 NONAME ; class QString QDeclarativeDebugWatch::tr(char const *, char const *) + ?tr@QDeclarativeDebugWatch@@SA?AVQString@@PBD0H@Z @ 2865 NONAME ; class QString QDeclarativeDebugWatch::tr(char const *, char const *, int) + ?tr@QDeclarativeDrag@@SA?AVQString@@PBD0@Z @ 2866 NONAME ; class QString QDeclarativeDrag::tr(char const *, char const *) + ?tr@QDeclarativeDrag@@SA?AVQString@@PBD0H@Z @ 2867 NONAME ; class QString QDeclarativeDrag::tr(char const *, char const *, int) + ?tr@QDeclarativeEaseFollow@@SA?AVQString@@PBD0@Z @ 2868 NONAME ; class QString QDeclarativeEaseFollow::tr(char const *, char const *) + ?tr@QDeclarativeEaseFollow@@SA?AVQString@@PBD0H@Z @ 2869 NONAME ; class QString QDeclarativeEaseFollow::tr(char const *, char const *, int) + ?tr@QDeclarativeEngine@@SA?AVQString@@PBD0@Z @ 2870 NONAME ; class QString QDeclarativeEngine::tr(char const *, char const *) + ?tr@QDeclarativeEngine@@SA?AVQString@@PBD0H@Z @ 2871 NONAME ; class QString QDeclarativeEngine::tr(char const *, char const *, int) + ?tr@QDeclarativeEngineDebug@@SA?AVQString@@PBD0@Z @ 2872 NONAME ; class QString QDeclarativeEngineDebug::tr(char const *, char const *) + ?tr@QDeclarativeEngineDebug@@SA?AVQString@@PBD0H@Z @ 2873 NONAME ; class QString QDeclarativeEngineDebug::tr(char const *, char const *, int) + ?tr@QDeclarativeExpression@@SA?AVQString@@PBD0@Z @ 2874 NONAME ; class QString QDeclarativeExpression::tr(char const *, char const *) + ?tr@QDeclarativeExpression@@SA?AVQString@@PBD0H@Z @ 2875 NONAME ; class QString QDeclarativeExpression::tr(char const *, char const *, int) + ?tr@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0@Z @ 2876 NONAME ; class QString QDeclarativeExtensionPlugin::tr(char const *, char const *) + ?tr@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0H@Z @ 2877 NONAME ; class QString QDeclarativeExtensionPlugin::tr(char const *, char const *, int) + ?tr@QDeclarativeFlickable@@SA?AVQString@@PBD0@Z @ 2878 NONAME ; class QString QDeclarativeFlickable::tr(char const *, char const *) + ?tr@QDeclarativeFlickable@@SA?AVQString@@PBD0H@Z @ 2879 NONAME ; class QString QDeclarativeFlickable::tr(char const *, char const *, int) + ?tr@QDeclarativeFlipable@@SA?AVQString@@PBD0@Z @ 2880 NONAME ; class QString QDeclarativeFlipable::tr(char const *, char const *) + ?tr@QDeclarativeFlipable@@SA?AVQString@@PBD0H@Z @ 2881 NONAME ; class QString QDeclarativeFlipable::tr(char const *, char const *, int) + ?tr@QDeclarativeFlow@@SA?AVQString@@PBD0@Z @ 2882 NONAME ; class QString QDeclarativeFlow::tr(char const *, char const *) + ?tr@QDeclarativeFlow@@SA?AVQString@@PBD0H@Z @ 2883 NONAME ; class QString QDeclarativeFlow::tr(char const *, char const *, int) + ?tr@QDeclarativeFocusPanel@@SA?AVQString@@PBD0@Z @ 2884 NONAME ; class QString QDeclarativeFocusPanel::tr(char const *, char const *) + ?tr@QDeclarativeFocusPanel@@SA?AVQString@@PBD0H@Z @ 2885 NONAME ; class QString QDeclarativeFocusPanel::tr(char const *, char const *, int) + ?tr@QDeclarativeFocusScope@@SA?AVQString@@PBD0@Z @ 2886 NONAME ; class QString QDeclarativeFocusScope::tr(char const *, char const *) + ?tr@QDeclarativeFocusScope@@SA?AVQString@@PBD0H@Z @ 2887 NONAME ; class QString QDeclarativeFocusScope::tr(char const *, char const *, int) + ?tr@QDeclarativeFontLoader@@SA?AVQString@@PBD0@Z @ 2888 NONAME ; class QString QDeclarativeFontLoader::tr(char const *, char const *) + ?tr@QDeclarativeFontLoader@@SA?AVQString@@PBD0H@Z @ 2889 NONAME ; class QString QDeclarativeFontLoader::tr(char const *, char const *, int) + ?tr@QDeclarativeGradient@@SA?AVQString@@PBD0@Z @ 2890 NONAME ; class QString QDeclarativeGradient::tr(char const *, char const *) + ?tr@QDeclarativeGradient@@SA?AVQString@@PBD0H@Z @ 2891 NONAME ; class QString QDeclarativeGradient::tr(char const *, char const *, int) + ?tr@QDeclarativeGradientStop@@SA?AVQString@@PBD0@Z @ 2892 NONAME ; class QString QDeclarativeGradientStop::tr(char const *, char const *) + ?tr@QDeclarativeGradientStop@@SA?AVQString@@PBD0H@Z @ 2893 NONAME ; class QString QDeclarativeGradientStop::tr(char const *, char const *, int) + ?tr@QDeclarativeGraphicsObjectContainer@@SA?AVQString@@PBD0@Z @ 2894 NONAME ; class QString QDeclarativeGraphicsObjectContainer::tr(char const *, char const *) + ?tr@QDeclarativeGraphicsObjectContainer@@SA?AVQString@@PBD0H@Z @ 2895 NONAME ; class QString QDeclarativeGraphicsObjectContainer::tr(char const *, char const *, int) + ?tr@QDeclarativeGrid@@SA?AVQString@@PBD0@Z @ 2896 NONAME ; class QString QDeclarativeGrid::tr(char const *, char const *) + ?tr@QDeclarativeGrid@@SA?AVQString@@PBD0H@Z @ 2897 NONAME ; class QString QDeclarativeGrid::tr(char const *, char const *, int) + ?tr@QDeclarativeGridView@@SA?AVQString@@PBD0@Z @ 2898 NONAME ; class QString QDeclarativeGridView::tr(char const *, char const *) + ?tr@QDeclarativeGridView@@SA?AVQString@@PBD0H@Z @ 2899 NONAME ; class QString QDeclarativeGridView::tr(char const *, char const *, int) + ?tr@QDeclarativeImage@@SA?AVQString@@PBD0@Z @ 2900 NONAME ; class QString QDeclarativeImage::tr(char const *, char const *) + ?tr@QDeclarativeImage@@SA?AVQString@@PBD0H@Z @ 2901 NONAME ; class QString QDeclarativeImage::tr(char const *, char const *, int) + ?tr@QDeclarativeImageBase@@SA?AVQString@@PBD0@Z @ 2902 NONAME ; class QString QDeclarativeImageBase::tr(char const *, char const *) + ?tr@QDeclarativeImageBase@@SA?AVQString@@PBD0H@Z @ 2903 NONAME ; class QString QDeclarativeImageBase::tr(char const *, char const *, int) + ?tr@QDeclarativeItem@@SA?AVQString@@PBD0@Z @ 2904 NONAME ; class QString QDeclarativeItem::tr(char const *, char const *) + ?tr@QDeclarativeItem@@SA?AVQString@@PBD0H@Z @ 2905 NONAME ; class QString QDeclarativeItem::tr(char const *, char const *, int) + ?tr@QDeclarativeListModel@@SA?AVQString@@PBD0@Z @ 2906 NONAME ; class QString QDeclarativeListModel::tr(char const *, char const *) + ?tr@QDeclarativeListModel@@SA?AVQString@@PBD0H@Z @ 2907 NONAME ; class QString QDeclarativeListModel::tr(char const *, char const *, int) + ?tr@QDeclarativeListView@@SA?AVQString@@PBD0@Z @ 2908 NONAME ; class QString QDeclarativeListView::tr(char const *, char const *) + ?tr@QDeclarativeListView@@SA?AVQString@@PBD0H@Z @ 2909 NONAME ; class QString QDeclarativeListView::tr(char const *, char const *, int) + ?tr@QDeclarativeLoader@@SA?AVQString@@PBD0@Z @ 2910 NONAME ; class QString QDeclarativeLoader::tr(char const *, char const *) + ?tr@QDeclarativeLoader@@SA?AVQString@@PBD0H@Z @ 2911 NONAME ; class QString QDeclarativeLoader::tr(char const *, char const *, int) + ?tr@QDeclarativeMouseArea@@SA?AVQString@@PBD0@Z @ 2912 NONAME ; class QString QDeclarativeMouseArea::tr(char const *, char const *) + ?tr@QDeclarativeMouseArea@@SA?AVQString@@PBD0H@Z @ 2913 NONAME ; class QString QDeclarativeMouseArea::tr(char const *, char const *, int) + ?tr@QDeclarativeNumberFormatter@@SA?AVQString@@PBD0@Z @ 2914 NONAME ; class QString QDeclarativeNumberFormatter::tr(char const *, char const *) + ?tr@QDeclarativeNumberFormatter@@SA?AVQString@@PBD0H@Z @ 2915 NONAME ; class QString QDeclarativeNumberFormatter::tr(char const *, char const *, int) + ?tr@QDeclarativePaintedItem@@SA?AVQString@@PBD0@Z @ 2916 NONAME ; class QString QDeclarativePaintedItem::tr(char const *, char const *) + ?tr@QDeclarativePaintedItem@@SA?AVQString@@PBD0H@Z @ 2917 NONAME ; class QString QDeclarativePaintedItem::tr(char const *, char const *, int) + ?tr@QDeclarativeParentChange@@SA?AVQString@@PBD0@Z @ 2918 NONAME ; class QString QDeclarativeParentChange::tr(char const *, char const *) + ?tr@QDeclarativeParentChange@@SA?AVQString@@PBD0H@Z @ 2919 NONAME ; class QString QDeclarativeParentChange::tr(char const *, char const *, int) + ?tr@QDeclarativeParticleMotion@@SA?AVQString@@PBD0@Z @ 2920 NONAME ; class QString QDeclarativeParticleMotion::tr(char const *, char const *) + ?tr@QDeclarativeParticleMotion@@SA?AVQString@@PBD0H@Z @ 2921 NONAME ; class QString QDeclarativeParticleMotion::tr(char const *, char const *, int) + ?tr@QDeclarativeParticleMotionGravity@@SA?AVQString@@PBD0@Z @ 2922 NONAME ; class QString QDeclarativeParticleMotionGravity::tr(char const *, char const *) + ?tr@QDeclarativeParticleMotionGravity@@SA?AVQString@@PBD0H@Z @ 2923 NONAME ; class QString QDeclarativeParticleMotionGravity::tr(char const *, char const *, int) + ?tr@QDeclarativeParticleMotionLinear@@SA?AVQString@@PBD0@Z @ 2924 NONAME ; class QString QDeclarativeParticleMotionLinear::tr(char const *, char const *) + ?tr@QDeclarativeParticleMotionLinear@@SA?AVQString@@PBD0H@Z @ 2925 NONAME ; class QString QDeclarativeParticleMotionLinear::tr(char const *, char const *, int) + ?tr@QDeclarativeParticleMotionWander@@SA?AVQString@@PBD0@Z @ 2926 NONAME ; class QString QDeclarativeParticleMotionWander::tr(char const *, char const *) + ?tr@QDeclarativeParticleMotionWander@@SA?AVQString@@PBD0H@Z @ 2927 NONAME ; class QString QDeclarativeParticleMotionWander::tr(char const *, char const *, int) + ?tr@QDeclarativeParticles@@SA?AVQString@@PBD0@Z @ 2928 NONAME ; class QString QDeclarativeParticles::tr(char const *, char const *) + ?tr@QDeclarativeParticles@@SA?AVQString@@PBD0H@Z @ 2929 NONAME ; class QString QDeclarativeParticles::tr(char const *, char const *, int) + ?tr@QDeclarativePath@@SA?AVQString@@PBD0@Z @ 2930 NONAME ; class QString QDeclarativePath::tr(char const *, char const *) + ?tr@QDeclarativePath@@SA?AVQString@@PBD0H@Z @ 2931 NONAME ; class QString QDeclarativePath::tr(char const *, char const *, int) + ?tr@QDeclarativePathAttribute@@SA?AVQString@@PBD0@Z @ 2932 NONAME ; class QString QDeclarativePathAttribute::tr(char const *, char const *) + ?tr@QDeclarativePathAttribute@@SA?AVQString@@PBD0H@Z @ 2933 NONAME ; class QString QDeclarativePathAttribute::tr(char const *, char const *, int) + ?tr@QDeclarativePathCubic@@SA?AVQString@@PBD0@Z @ 2934 NONAME ; class QString QDeclarativePathCubic::tr(char const *, char const *) + ?tr@QDeclarativePathCubic@@SA?AVQString@@PBD0H@Z @ 2935 NONAME ; class QString QDeclarativePathCubic::tr(char const *, char const *, int) + ?tr@QDeclarativePathElement@@SA?AVQString@@PBD0@Z @ 2936 NONAME ; class QString QDeclarativePathElement::tr(char const *, char const *) + ?tr@QDeclarativePathElement@@SA?AVQString@@PBD0H@Z @ 2937 NONAME ; class QString QDeclarativePathElement::tr(char const *, char const *, int) + ?tr@QDeclarativePathLine@@SA?AVQString@@PBD0@Z @ 2938 NONAME ; class QString QDeclarativePathLine::tr(char const *, char const *) + ?tr@QDeclarativePathLine@@SA?AVQString@@PBD0H@Z @ 2939 NONAME ; class QString QDeclarativePathLine::tr(char const *, char const *, int) + ?tr@QDeclarativePathPercent@@SA?AVQString@@PBD0@Z @ 2940 NONAME ; class QString QDeclarativePathPercent::tr(char const *, char const *) + ?tr@QDeclarativePathPercent@@SA?AVQString@@PBD0H@Z @ 2941 NONAME ; class QString QDeclarativePathPercent::tr(char const *, char const *, int) + ?tr@QDeclarativePathQuad@@SA?AVQString@@PBD0@Z @ 2942 NONAME ; class QString QDeclarativePathQuad::tr(char const *, char const *) + ?tr@QDeclarativePathQuad@@SA?AVQString@@PBD0H@Z @ 2943 NONAME ; class QString QDeclarativePathQuad::tr(char const *, char const *, int) + ?tr@QDeclarativePathView@@SA?AVQString@@PBD0@Z @ 2944 NONAME ; class QString QDeclarativePathView::tr(char const *, char const *) + ?tr@QDeclarativePathView@@SA?AVQString@@PBD0H@Z @ 2945 NONAME ; class QString QDeclarativePathView::tr(char const *, char const *, int) + ?tr@QDeclarativePen@@SA?AVQString@@PBD0@Z @ 2946 NONAME ; class QString QDeclarativePen::tr(char const *, char const *) + ?tr@QDeclarativePen@@SA?AVQString@@PBD0H@Z @ 2947 NONAME ; class QString QDeclarativePen::tr(char const *, char const *, int) + ?tr@QDeclarativePixmapReply@@SA?AVQString@@PBD0@Z @ 2948 NONAME ; class QString QDeclarativePixmapReply::tr(char const *, char const *) + ?tr@QDeclarativePixmapReply@@SA?AVQString@@PBD0H@Z @ 2949 NONAME ; class QString QDeclarativePixmapReply::tr(char const *, char const *, int) + ?tr@QDeclarativePropertyChanges@@SA?AVQString@@PBD0@Z @ 2950 NONAME ; class QString QDeclarativePropertyChanges::tr(char const *, char const *) + ?tr@QDeclarativePropertyChanges@@SA?AVQString@@PBD0H@Z @ 2951 NONAME ; class QString QDeclarativePropertyChanges::tr(char const *, char const *, int) + ?tr@QDeclarativePropertyMap@@SA?AVQString@@PBD0@Z @ 2952 NONAME ; class QString QDeclarativePropertyMap::tr(char const *, char const *) + ?tr@QDeclarativePropertyMap@@SA?AVQString@@PBD0H@Z @ 2953 NONAME ; class QString QDeclarativePropertyMap::tr(char const *, char const *, int) + ?tr@QDeclarativeRectangle@@SA?AVQString@@PBD0@Z @ 2954 NONAME ; class QString QDeclarativeRectangle::tr(char const *, char const *) + ?tr@QDeclarativeRectangle@@SA?AVQString@@PBD0H@Z @ 2955 NONAME ; class QString QDeclarativeRectangle::tr(char const *, char const *, int) + ?tr@QDeclarativeRepeater@@SA?AVQString@@PBD0@Z @ 2956 NONAME ; class QString QDeclarativeRepeater::tr(char const *, char const *) + ?tr@QDeclarativeRepeater@@SA?AVQString@@PBD0H@Z @ 2957 NONAME ; class QString QDeclarativeRepeater::tr(char const *, char const *, int) + ?tr@QDeclarativeRow@@SA?AVQString@@PBD0@Z @ 2958 NONAME ; class QString QDeclarativeRow::tr(char const *, char const *) + ?tr@QDeclarativeRow@@SA?AVQString@@PBD0H@Z @ 2959 NONAME ; class QString QDeclarativeRow::tr(char const *, char const *, int) + ?tr@QDeclarativeScaleGrid@@SA?AVQString@@PBD0@Z @ 2960 NONAME ; class QString QDeclarativeScaleGrid::tr(char const *, char const *) + ?tr@QDeclarativeScaleGrid@@SA?AVQString@@PBD0H@Z @ 2961 NONAME ; class QString QDeclarativeScaleGrid::tr(char const *, char const *, int) + ?tr@QDeclarativeSpringFollow@@SA?AVQString@@PBD0@Z @ 2962 NONAME ; class QString QDeclarativeSpringFollow::tr(char const *, char const *) + ?tr@QDeclarativeSpringFollow@@SA?AVQString@@PBD0H@Z @ 2963 NONAME ; class QString QDeclarativeSpringFollow::tr(char const *, char const *, int) + ?tr@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 2964 NONAME ; class QString QDeclarativeState::tr(char const *, char const *) + ?tr@QDeclarativeState@@SA?AVQString@@PBD0H@Z @ 2965 NONAME ; class QString QDeclarativeState::tr(char const *, char const *, int) + ?tr@QDeclarativeStateChangeScript@@SA?AVQString@@PBD0@Z @ 2966 NONAME ; class QString QDeclarativeStateChangeScript::tr(char const *, char const *) + ?tr@QDeclarativeStateChangeScript@@SA?AVQString@@PBD0H@Z @ 2967 NONAME ; class QString QDeclarativeStateChangeScript::tr(char const *, char const *, int) + ?tr@QDeclarativeStateGroup@@SA?AVQString@@PBD0@Z @ 2968 NONAME ; class QString QDeclarativeStateGroup::tr(char const *, char const *) + ?tr@QDeclarativeStateGroup@@SA?AVQString@@PBD0H@Z @ 2969 NONAME ; class QString QDeclarativeStateGroup::tr(char const *, char const *, int) + ?tr@QDeclarativeStateOperation@@SA?AVQString@@PBD0@Z @ 2970 NONAME ; class QString QDeclarativeStateOperation::tr(char const *, char const *) + ?tr@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 2971 NONAME ; class QString QDeclarativeStateOperation::tr(char const *, char const *, int) + ?tr@QDeclarativeSystemPalette@@SA?AVQString@@PBD0@Z @ 2972 NONAME ; class QString QDeclarativeSystemPalette::tr(char const *, char const *) + ?tr@QDeclarativeSystemPalette@@SA?AVQString@@PBD0H@Z @ 2973 NONAME ; class QString QDeclarativeSystemPalette::tr(char const *, char const *, int) + ?tr@QDeclarativeText@@SA?AVQString@@PBD0@Z @ 2974 NONAME ; class QString QDeclarativeText::tr(char const *, char const *) + ?tr@QDeclarativeText@@SA?AVQString@@PBD0H@Z @ 2975 NONAME ; class QString QDeclarativeText::tr(char const *, char const *, int) + ?tr@QDeclarativeTextEdit@@SA?AVQString@@PBD0@Z @ 2976 NONAME ; class QString QDeclarativeTextEdit::tr(char const *, char const *) + ?tr@QDeclarativeTextEdit@@SA?AVQString@@PBD0H@Z @ 2977 NONAME ; class QString QDeclarativeTextEdit::tr(char const *, char const *, int) + ?tr@QDeclarativeTextInput@@SA?AVQString@@PBD0@Z @ 2978 NONAME ; class QString QDeclarativeTextInput::tr(char const *, char const *) + ?tr@QDeclarativeTextInput@@SA?AVQString@@PBD0H@Z @ 2979 NONAME ; class QString QDeclarativeTextInput::tr(char const *, char const *, int) + ?tr@QDeclarativeTimer@@SA?AVQString@@PBD0@Z @ 2980 NONAME ; class QString QDeclarativeTimer::tr(char const *, char const *) + ?tr@QDeclarativeTimer@@SA?AVQString@@PBD0H@Z @ 2981 NONAME ; class QString QDeclarativeTimer::tr(char const *, char const *, int) + ?tr@QDeclarativeTransition@@SA?AVQString@@PBD0@Z @ 2982 NONAME ; class QString QDeclarativeTransition::tr(char const *, char const *) + ?tr@QDeclarativeTransition@@SA?AVQString@@PBD0H@Z @ 2983 NONAME ; class QString QDeclarativeTransition::tr(char const *, char const *, int) + ?tr@QDeclarativeValueType@@SA?AVQString@@PBD0@Z @ 2984 NONAME ; class QString QDeclarativeValueType::tr(char const *, char const *) + ?tr@QDeclarativeValueType@@SA?AVQString@@PBD0H@Z @ 2985 NONAME ; class QString QDeclarativeValueType::tr(char const *, char const *, int) + ?tr@QDeclarativeView@@SA?AVQString@@PBD0@Z @ 2986 NONAME ; class QString QDeclarativeView::tr(char const *, char const *) + ?tr@QDeclarativeView@@SA?AVQString@@PBD0H@Z @ 2987 NONAME ; class QString QDeclarativeView::tr(char const *, char const *, int) + ?tr@QDeclarativeViewSection@@SA?AVQString@@PBD0@Z @ 2988 NONAME ; class QString QDeclarativeViewSection::tr(char const *, char const *) + ?tr@QDeclarativeViewSection@@SA?AVQString@@PBD0H@Z @ 2989 NONAME ; class QString QDeclarativeViewSection::tr(char const *, char const *, int) + ?tr@QDeclarativeVisualDataModel@@SA?AVQString@@PBD0@Z @ 2990 NONAME ; class QString QDeclarativeVisualDataModel::tr(char const *, char const *) + ?tr@QDeclarativeVisualDataModel@@SA?AVQString@@PBD0H@Z @ 2991 NONAME ; class QString QDeclarativeVisualDataModel::tr(char const *, char const *, int) + ?tr@QDeclarativeVisualItemModel@@SA?AVQString@@PBD0@Z @ 2992 NONAME ; class QString QDeclarativeVisualItemModel::tr(char const *, char const *) + ?tr@QDeclarativeVisualItemModel@@SA?AVQString@@PBD0H@Z @ 2993 NONAME ; class QString QDeclarativeVisualItemModel::tr(char const *, char const *, int) + ?tr@QDeclarativeVisualModel@@SA?AVQString@@PBD0@Z @ 2994 NONAME ; class QString QDeclarativeVisualModel::tr(char const *, char const *) + ?tr@QDeclarativeVisualModel@@SA?AVQString@@PBD0H@Z @ 2995 NONAME ; class QString QDeclarativeVisualModel::tr(char const *, char const *, int) + ?tr@QDeclarativeWebPage@@SA?AVQString@@PBD0@Z @ 2996 NONAME ; class QString QDeclarativeWebPage::tr(char const *, char const *) + ?tr@QDeclarativeWebPage@@SA?AVQString@@PBD0H@Z @ 2997 NONAME ; class QString QDeclarativeWebPage::tr(char const *, char const *, int) + ?tr@QDeclarativeWebView@@SA?AVQString@@PBD0@Z @ 2998 NONAME ; class QString QDeclarativeWebView::tr(char const *, char const *) + ?tr@QDeclarativeWebView@@SA?AVQString@@PBD0H@Z @ 2999 NONAME ; class QString QDeclarativeWebView::tr(char const *, char const *, int) + ?tr@QDeclarativeXmlListModel@@SA?AVQString@@PBD0@Z @ 3000 NONAME ; class QString QDeclarativeXmlListModel::tr(char const *, char const *) + ?tr@QDeclarativeXmlListModel@@SA?AVQString@@PBD0H@Z @ 3001 NONAME ; class QString QDeclarativeXmlListModel::tr(char const *, char const *, int) + ?tr@QDeclarativeXmlListModelRole@@SA?AVQString@@PBD0@Z @ 3002 NONAME ; class QString QDeclarativeXmlListModelRole::tr(char const *, char const *) + ?tr@QDeclarativeXmlListModelRole@@SA?AVQString@@PBD0H@Z @ 3003 NONAME ; class QString QDeclarativeXmlListModelRole::tr(char const *, char const *, int) + ?tr@QListModelInterface@@SA?AVQString@@PBD0@Z @ 3004 NONAME ; class QString QListModelInterface::tr(char const *, char const *) + ?tr@QListModelInterface@@SA?AVQString@@PBD0H@Z @ 3005 NONAME ; class QString QListModelInterface::tr(char const *, char const *, int) + ?tr@QPacketProtocol@@SA?AVQString@@PBD0@Z @ 3006 NONAME ; class QString QPacketProtocol::tr(char const *, char const *) + ?tr@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 3007 NONAME ; class QString QPacketProtocol::tr(char const *, char const *, int) + ?trUtf8@QDeclarativeAnchorChanges@@SA?AVQString@@PBD0@Z @ 3008 NONAME ; class QString QDeclarativeAnchorChanges::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeAnchorChanges@@SA?AVQString@@PBD0H@Z @ 3009 NONAME ; class QString QDeclarativeAnchorChanges::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeAnchors@@SA?AVQString@@PBD0@Z @ 3010 NONAME ; class QString QDeclarativeAnchors::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeAnchors@@SA?AVQString@@PBD0H@Z @ 3011 NONAME ; class QString QDeclarativeAnchors::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeAnimatedImage@@SA?AVQString@@PBD0@Z @ 3012 NONAME ; class QString QDeclarativeAnimatedImage::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeAnimatedImage@@SA?AVQString@@PBD0H@Z @ 3013 NONAME ; class QString QDeclarativeAnimatedImage::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeBasePositioner@@SA?AVQString@@PBD0@Z @ 3014 NONAME ; class QString QDeclarativeBasePositioner::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeBasePositioner@@SA?AVQString@@PBD0H@Z @ 3015 NONAME ; class QString QDeclarativeBasePositioner::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeBehavior@@SA?AVQString@@PBD0@Z @ 3016 NONAME ; class QString QDeclarativeBehavior::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeBehavior@@SA?AVQString@@PBD0H@Z @ 3017 NONAME ; class QString QDeclarativeBehavior::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeBind@@SA?AVQString@@PBD0@Z @ 3018 NONAME ; class QString QDeclarativeBind::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeBind@@SA?AVQString@@PBD0H@Z @ 3019 NONAME ; class QString QDeclarativeBind::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeBorderImage@@SA?AVQString@@PBD0@Z @ 3020 NONAME ; class QString QDeclarativeBorderImage::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeBorderImage@@SA?AVQString@@PBD0H@Z @ 3021 NONAME ; class QString QDeclarativeBorderImage::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeColumn@@SA?AVQString@@PBD0@Z @ 3022 NONAME ; class QString QDeclarativeColumn::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeColumn@@SA?AVQString@@PBD0H@Z @ 3023 NONAME ; class QString QDeclarativeColumn::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeComponent@@SA?AVQString@@PBD0@Z @ 3024 NONAME ; class QString QDeclarativeComponent::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeComponent@@SA?AVQString@@PBD0H@Z @ 3025 NONAME ; class QString QDeclarativeComponent::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeConnections@@SA?AVQString@@PBD0@Z @ 3026 NONAME ; class QString QDeclarativeConnections::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeConnections@@SA?AVQString@@PBD0H@Z @ 3027 NONAME ; class QString QDeclarativeConnections::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeContext@@SA?AVQString@@PBD0@Z @ 3028 NONAME ; class QString QDeclarativeContext::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeContext@@SA?AVQString@@PBD0H@Z @ 3029 NONAME ; class QString QDeclarativeContext::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeCurve@@SA?AVQString@@PBD0@Z @ 3030 NONAME ; class QString QDeclarativeCurve::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeCurve@@SA?AVQString@@PBD0H@Z @ 3031 NONAME ; class QString QDeclarativeCurve::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDateTimeFormatter@@SA?AVQString@@PBD0@Z @ 3032 NONAME ; class QString QDeclarativeDateTimeFormatter::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDateTimeFormatter@@SA?AVQString@@PBD0H@Z @ 3033 NONAME ; class QString QDeclarativeDateTimeFormatter::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDebugClient@@SA?AVQString@@PBD0@Z @ 3034 NONAME ; class QString QDeclarativeDebugClient::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDebugClient@@SA?AVQString@@PBD0H@Z @ 3035 NONAME ; class QString QDeclarativeDebugClient::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDebugConnection@@SA?AVQString@@PBD0@Z @ 3036 NONAME ; class QString QDeclarativeDebugConnection::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDebugConnection@@SA?AVQString@@PBD0H@Z @ 3037 NONAME ; class QString QDeclarativeDebugConnection::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0@Z @ 3038 NONAME ; class QString QDeclarativeDebugEnginesQuery::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0H@Z @ 3039 NONAME ; class QString QDeclarativeDebugEnginesQuery::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0@Z @ 3040 NONAME ; class QString QDeclarativeDebugExpressionQuery::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0H@Z @ 3041 NONAME ; class QString QDeclarativeDebugExpressionQuery::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0@Z @ 3042 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0H@Z @ 3043 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0@Z @ 3044 NONAME ; class QString QDeclarativeDebugObjectQuery::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0H@Z @ 3045 NONAME ; class QString QDeclarativeDebugObjectQuery::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0@Z @ 3046 NONAME ; class QString QDeclarativeDebugPropertyWatch::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0H@Z @ 3047 NONAME ; class QString QDeclarativeDebugPropertyWatch::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDebugQuery@@SA?AVQString@@PBD0@Z @ 3048 NONAME ; class QString QDeclarativeDebugQuery::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDebugQuery@@SA?AVQString@@PBD0H@Z @ 3049 NONAME ; class QString QDeclarativeDebugQuery::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0@Z @ 3050 NONAME ; class QString QDeclarativeDebugRootContextQuery::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0H@Z @ 3051 NONAME ; class QString QDeclarativeDebugRootContextQuery::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDebugService@@SA?AVQString@@PBD0@Z @ 3052 NONAME ; class QString QDeclarativeDebugService::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDebugService@@SA?AVQString@@PBD0H@Z @ 3053 NONAME ; class QString QDeclarativeDebugService::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDebugWatch@@SA?AVQString@@PBD0@Z @ 3054 NONAME ; class QString QDeclarativeDebugWatch::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDebugWatch@@SA?AVQString@@PBD0H@Z @ 3055 NONAME ; class QString QDeclarativeDebugWatch::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeDrag@@SA?AVQString@@PBD0@Z @ 3056 NONAME ; class QString QDeclarativeDrag::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeDrag@@SA?AVQString@@PBD0H@Z @ 3057 NONAME ; class QString QDeclarativeDrag::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeEaseFollow@@SA?AVQString@@PBD0@Z @ 3058 NONAME ; class QString QDeclarativeEaseFollow::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeEaseFollow@@SA?AVQString@@PBD0H@Z @ 3059 NONAME ; class QString QDeclarativeEaseFollow::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeEngine@@SA?AVQString@@PBD0@Z @ 3060 NONAME ; class QString QDeclarativeEngine::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeEngine@@SA?AVQString@@PBD0H@Z @ 3061 NONAME ; class QString QDeclarativeEngine::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0@Z @ 3062 NONAME ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0H@Z @ 3063 NONAME ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeExpression@@SA?AVQString@@PBD0@Z @ 3064 NONAME ; class QString QDeclarativeExpression::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeExpression@@SA?AVQString@@PBD0H@Z @ 3065 NONAME ; class QString QDeclarativeExpression::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0@Z @ 3066 NONAME ; class QString QDeclarativeExtensionPlugin::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0H@Z @ 3067 NONAME ; class QString QDeclarativeExtensionPlugin::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeFlickable@@SA?AVQString@@PBD0@Z @ 3068 NONAME ; class QString QDeclarativeFlickable::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeFlickable@@SA?AVQString@@PBD0H@Z @ 3069 NONAME ; class QString QDeclarativeFlickable::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeFlipable@@SA?AVQString@@PBD0@Z @ 3070 NONAME ; class QString QDeclarativeFlipable::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeFlipable@@SA?AVQString@@PBD0H@Z @ 3071 NONAME ; class QString QDeclarativeFlipable::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeFlow@@SA?AVQString@@PBD0@Z @ 3072 NONAME ; class QString QDeclarativeFlow::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeFlow@@SA?AVQString@@PBD0H@Z @ 3073 NONAME ; class QString QDeclarativeFlow::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeFocusPanel@@SA?AVQString@@PBD0@Z @ 3074 NONAME ; class QString QDeclarativeFocusPanel::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeFocusPanel@@SA?AVQString@@PBD0H@Z @ 3075 NONAME ; class QString QDeclarativeFocusPanel::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeFocusScope@@SA?AVQString@@PBD0@Z @ 3076 NONAME ; class QString QDeclarativeFocusScope::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeFocusScope@@SA?AVQString@@PBD0H@Z @ 3077 NONAME ; class QString QDeclarativeFocusScope::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeFontLoader@@SA?AVQString@@PBD0@Z @ 3078 NONAME ; class QString QDeclarativeFontLoader::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeFontLoader@@SA?AVQString@@PBD0H@Z @ 3079 NONAME ; class QString QDeclarativeFontLoader::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeGradient@@SA?AVQString@@PBD0@Z @ 3080 NONAME ; class QString QDeclarativeGradient::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeGradient@@SA?AVQString@@PBD0H@Z @ 3081 NONAME ; class QString QDeclarativeGradient::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeGradientStop@@SA?AVQString@@PBD0@Z @ 3082 NONAME ; class QString QDeclarativeGradientStop::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeGradientStop@@SA?AVQString@@PBD0H@Z @ 3083 NONAME ; class QString QDeclarativeGradientStop::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeGraphicsObjectContainer@@SA?AVQString@@PBD0@Z @ 3084 NONAME ; class QString QDeclarativeGraphicsObjectContainer::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeGraphicsObjectContainer@@SA?AVQString@@PBD0H@Z @ 3085 NONAME ; class QString QDeclarativeGraphicsObjectContainer::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeGrid@@SA?AVQString@@PBD0@Z @ 3086 NONAME ; class QString QDeclarativeGrid::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeGrid@@SA?AVQString@@PBD0H@Z @ 3087 NONAME ; class QString QDeclarativeGrid::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeGridView@@SA?AVQString@@PBD0@Z @ 3088 NONAME ; class QString QDeclarativeGridView::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeGridView@@SA?AVQString@@PBD0H@Z @ 3089 NONAME ; class QString QDeclarativeGridView::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeImage@@SA?AVQString@@PBD0@Z @ 3090 NONAME ; class QString QDeclarativeImage::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeImage@@SA?AVQString@@PBD0H@Z @ 3091 NONAME ; class QString QDeclarativeImage::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeImageBase@@SA?AVQString@@PBD0@Z @ 3092 NONAME ; class QString QDeclarativeImageBase::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeImageBase@@SA?AVQString@@PBD0H@Z @ 3093 NONAME ; class QString QDeclarativeImageBase::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeItem@@SA?AVQString@@PBD0@Z @ 3094 NONAME ; class QString QDeclarativeItem::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeItem@@SA?AVQString@@PBD0H@Z @ 3095 NONAME ; class QString QDeclarativeItem::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeListModel@@SA?AVQString@@PBD0@Z @ 3096 NONAME ; class QString QDeclarativeListModel::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeListModel@@SA?AVQString@@PBD0H@Z @ 3097 NONAME ; class QString QDeclarativeListModel::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeListView@@SA?AVQString@@PBD0@Z @ 3098 NONAME ; class QString QDeclarativeListView::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeListView@@SA?AVQString@@PBD0H@Z @ 3099 NONAME ; class QString QDeclarativeListView::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeLoader@@SA?AVQString@@PBD0@Z @ 3100 NONAME ; class QString QDeclarativeLoader::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeLoader@@SA?AVQString@@PBD0H@Z @ 3101 NONAME ; class QString QDeclarativeLoader::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeMouseArea@@SA?AVQString@@PBD0@Z @ 3102 NONAME ; class QString QDeclarativeMouseArea::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeMouseArea@@SA?AVQString@@PBD0H@Z @ 3103 NONAME ; class QString QDeclarativeMouseArea::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeNumberFormatter@@SA?AVQString@@PBD0@Z @ 3104 NONAME ; class QString QDeclarativeNumberFormatter::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeNumberFormatter@@SA?AVQString@@PBD0H@Z @ 3105 NONAME ; class QString QDeclarativeNumberFormatter::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePaintedItem@@SA?AVQString@@PBD0@Z @ 3106 NONAME ; class QString QDeclarativePaintedItem::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePaintedItem@@SA?AVQString@@PBD0H@Z @ 3107 NONAME ; class QString QDeclarativePaintedItem::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeParentChange@@SA?AVQString@@PBD0@Z @ 3108 NONAME ; class QString QDeclarativeParentChange::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeParentChange@@SA?AVQString@@PBD0H@Z @ 3109 NONAME ; class QString QDeclarativeParentChange::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeParticleMotion@@SA?AVQString@@PBD0@Z @ 3110 NONAME ; class QString QDeclarativeParticleMotion::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeParticleMotion@@SA?AVQString@@PBD0H@Z @ 3111 NONAME ; class QString QDeclarativeParticleMotion::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeParticleMotionGravity@@SA?AVQString@@PBD0@Z @ 3112 NONAME ; class QString QDeclarativeParticleMotionGravity::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeParticleMotionGravity@@SA?AVQString@@PBD0H@Z @ 3113 NONAME ; class QString QDeclarativeParticleMotionGravity::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeParticleMotionLinear@@SA?AVQString@@PBD0@Z @ 3114 NONAME ; class QString QDeclarativeParticleMotionLinear::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeParticleMotionLinear@@SA?AVQString@@PBD0H@Z @ 3115 NONAME ; class QString QDeclarativeParticleMotionLinear::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeParticleMotionWander@@SA?AVQString@@PBD0@Z @ 3116 NONAME ; class QString QDeclarativeParticleMotionWander::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeParticleMotionWander@@SA?AVQString@@PBD0H@Z @ 3117 NONAME ; class QString QDeclarativeParticleMotionWander::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeParticles@@SA?AVQString@@PBD0@Z @ 3118 NONAME ; class QString QDeclarativeParticles::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeParticles@@SA?AVQString@@PBD0H@Z @ 3119 NONAME ; class QString QDeclarativeParticles::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePath@@SA?AVQString@@PBD0@Z @ 3120 NONAME ; class QString QDeclarativePath::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePath@@SA?AVQString@@PBD0H@Z @ 3121 NONAME ; class QString QDeclarativePath::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePathAttribute@@SA?AVQString@@PBD0@Z @ 3122 NONAME ; class QString QDeclarativePathAttribute::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePathAttribute@@SA?AVQString@@PBD0H@Z @ 3123 NONAME ; class QString QDeclarativePathAttribute::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePathCubic@@SA?AVQString@@PBD0@Z @ 3124 NONAME ; class QString QDeclarativePathCubic::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePathCubic@@SA?AVQString@@PBD0H@Z @ 3125 NONAME ; class QString QDeclarativePathCubic::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePathElement@@SA?AVQString@@PBD0@Z @ 3126 NONAME ; class QString QDeclarativePathElement::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePathElement@@SA?AVQString@@PBD0H@Z @ 3127 NONAME ; class QString QDeclarativePathElement::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePathLine@@SA?AVQString@@PBD0@Z @ 3128 NONAME ; class QString QDeclarativePathLine::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePathLine@@SA?AVQString@@PBD0H@Z @ 3129 NONAME ; class QString QDeclarativePathLine::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePathPercent@@SA?AVQString@@PBD0@Z @ 3130 NONAME ; class QString QDeclarativePathPercent::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePathPercent@@SA?AVQString@@PBD0H@Z @ 3131 NONAME ; class QString QDeclarativePathPercent::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePathQuad@@SA?AVQString@@PBD0@Z @ 3132 NONAME ; class QString QDeclarativePathQuad::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePathQuad@@SA?AVQString@@PBD0H@Z @ 3133 NONAME ; class QString QDeclarativePathQuad::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePathView@@SA?AVQString@@PBD0@Z @ 3134 NONAME ; class QString QDeclarativePathView::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePathView@@SA?AVQString@@PBD0H@Z @ 3135 NONAME ; class QString QDeclarativePathView::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePen@@SA?AVQString@@PBD0@Z @ 3136 NONAME ; class QString QDeclarativePen::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePen@@SA?AVQString@@PBD0H@Z @ 3137 NONAME ; class QString QDeclarativePen::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePixmapReply@@SA?AVQString@@PBD0@Z @ 3138 NONAME ; class QString QDeclarativePixmapReply::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePixmapReply@@SA?AVQString@@PBD0H@Z @ 3139 NONAME ; class QString QDeclarativePixmapReply::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePropertyChanges@@SA?AVQString@@PBD0@Z @ 3140 NONAME ; class QString QDeclarativePropertyChanges::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePropertyChanges@@SA?AVQString@@PBD0H@Z @ 3141 NONAME ; class QString QDeclarativePropertyChanges::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePropertyMap@@SA?AVQString@@PBD0@Z @ 3142 NONAME ; class QString QDeclarativePropertyMap::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePropertyMap@@SA?AVQString@@PBD0H@Z @ 3143 NONAME ; class QString QDeclarativePropertyMap::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeRectangle@@SA?AVQString@@PBD0@Z @ 3144 NONAME ; class QString QDeclarativeRectangle::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeRectangle@@SA?AVQString@@PBD0H@Z @ 3145 NONAME ; class QString QDeclarativeRectangle::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeRepeater@@SA?AVQString@@PBD0@Z @ 3146 NONAME ; class QString QDeclarativeRepeater::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeRepeater@@SA?AVQString@@PBD0H@Z @ 3147 NONAME ; class QString QDeclarativeRepeater::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeRow@@SA?AVQString@@PBD0@Z @ 3148 NONAME ; class QString QDeclarativeRow::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeRow@@SA?AVQString@@PBD0H@Z @ 3149 NONAME ; class QString QDeclarativeRow::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeScaleGrid@@SA?AVQString@@PBD0@Z @ 3150 NONAME ; class QString QDeclarativeScaleGrid::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeScaleGrid@@SA?AVQString@@PBD0H@Z @ 3151 NONAME ; class QString QDeclarativeScaleGrid::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeSpringFollow@@SA?AVQString@@PBD0@Z @ 3152 NONAME ; class QString QDeclarativeSpringFollow::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeSpringFollow@@SA?AVQString@@PBD0H@Z @ 3153 NONAME ; class QString QDeclarativeSpringFollow::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 3154 NONAME ; class QString QDeclarativeState::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeState@@SA?AVQString@@PBD0H@Z @ 3155 NONAME ; class QString QDeclarativeState::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeStateChangeScript@@SA?AVQString@@PBD0@Z @ 3156 NONAME ; class QString QDeclarativeStateChangeScript::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeStateChangeScript@@SA?AVQString@@PBD0H@Z @ 3157 NONAME ; class QString QDeclarativeStateChangeScript::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeStateGroup@@SA?AVQString@@PBD0@Z @ 3158 NONAME ; class QString QDeclarativeStateGroup::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeStateGroup@@SA?AVQString@@PBD0H@Z @ 3159 NONAME ; class QString QDeclarativeStateGroup::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0@Z @ 3160 NONAME ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 3161 NONAME ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeSystemPalette@@SA?AVQString@@PBD0@Z @ 3162 NONAME ; class QString QDeclarativeSystemPalette::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeSystemPalette@@SA?AVQString@@PBD0H@Z @ 3163 NONAME ; class QString QDeclarativeSystemPalette::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeText@@SA?AVQString@@PBD0@Z @ 3164 NONAME ; class QString QDeclarativeText::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeText@@SA?AVQString@@PBD0H@Z @ 3165 NONAME ; class QString QDeclarativeText::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeTextEdit@@SA?AVQString@@PBD0@Z @ 3166 NONAME ; class QString QDeclarativeTextEdit::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeTextEdit@@SA?AVQString@@PBD0H@Z @ 3167 NONAME ; class QString QDeclarativeTextEdit::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeTextInput@@SA?AVQString@@PBD0@Z @ 3168 NONAME ; class QString QDeclarativeTextInput::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeTextInput@@SA?AVQString@@PBD0H@Z @ 3169 NONAME ; class QString QDeclarativeTextInput::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeTimer@@SA?AVQString@@PBD0@Z @ 3170 NONAME ; class QString QDeclarativeTimer::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeTimer@@SA?AVQString@@PBD0H@Z @ 3171 NONAME ; class QString QDeclarativeTimer::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeTransition@@SA?AVQString@@PBD0@Z @ 3172 NONAME ; class QString QDeclarativeTransition::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeTransition@@SA?AVQString@@PBD0H@Z @ 3173 NONAME ; class QString QDeclarativeTransition::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeValueType@@SA?AVQString@@PBD0@Z @ 3174 NONAME ; class QString QDeclarativeValueType::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeValueType@@SA?AVQString@@PBD0H@Z @ 3175 NONAME ; class QString QDeclarativeValueType::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeView@@SA?AVQString@@PBD0@Z @ 3176 NONAME ; class QString QDeclarativeView::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeView@@SA?AVQString@@PBD0H@Z @ 3177 NONAME ; class QString QDeclarativeView::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeViewSection@@SA?AVQString@@PBD0@Z @ 3178 NONAME ; class QString QDeclarativeViewSection::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeViewSection@@SA?AVQString@@PBD0H@Z @ 3179 NONAME ; class QString QDeclarativeViewSection::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeVisualDataModel@@SA?AVQString@@PBD0@Z @ 3180 NONAME ; class QString QDeclarativeVisualDataModel::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeVisualDataModel@@SA?AVQString@@PBD0H@Z @ 3181 NONAME ; class QString QDeclarativeVisualDataModel::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeVisualItemModel@@SA?AVQString@@PBD0@Z @ 3182 NONAME ; class QString QDeclarativeVisualItemModel::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeVisualItemModel@@SA?AVQString@@PBD0H@Z @ 3183 NONAME ; class QString QDeclarativeVisualItemModel::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeVisualModel@@SA?AVQString@@PBD0@Z @ 3184 NONAME ; class QString QDeclarativeVisualModel::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeVisualModel@@SA?AVQString@@PBD0H@Z @ 3185 NONAME ; class QString QDeclarativeVisualModel::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeWebPage@@SA?AVQString@@PBD0@Z @ 3186 NONAME ; class QString QDeclarativeWebPage::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeWebPage@@SA?AVQString@@PBD0H@Z @ 3187 NONAME ; class QString QDeclarativeWebPage::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeWebView@@SA?AVQString@@PBD0@Z @ 3188 NONAME ; class QString QDeclarativeWebView::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeWebView@@SA?AVQString@@PBD0H@Z @ 3189 NONAME ; class QString QDeclarativeWebView::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeXmlListModel@@SA?AVQString@@PBD0@Z @ 3190 NONAME ; class QString QDeclarativeXmlListModel::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeXmlListModel@@SA?AVQString@@PBD0H@Z @ 3191 NONAME ; class QString QDeclarativeXmlListModel::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeXmlListModelRole@@SA?AVQString@@PBD0@Z @ 3192 NONAME ; class QString QDeclarativeXmlListModelRole::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeXmlListModelRole@@SA?AVQString@@PBD0H@Z @ 3193 NONAME ; class QString QDeclarativeXmlListModelRole::trUtf8(char const *, char const *, int) + ?trUtf8@QListModelInterface@@SA?AVQString@@PBD0@Z @ 3194 NONAME ; class QString QListModelInterface::trUtf8(char const *, char const *) + ?trUtf8@QListModelInterface@@SA?AVQString@@PBD0H@Z @ 3195 NONAME ; class QString QListModelInterface::trUtf8(char const *, char const *, int) + ?trUtf8@QPacketProtocol@@SA?AVQString@@PBD0@Z @ 3196 NONAME ; class QString QPacketProtocol::trUtf8(char const *, char const *) + ?trUtf8@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 3197 NONAME ; class QString QPacketProtocol::trUtf8(char const *, char const *, int) + ?trackedPositionChanged@QDeclarativeGridView@@AAEXXZ @ 3198 NONAME ; void QDeclarativeGridView::trackedPositionChanged(void) + ?trackedPositionChanged@QDeclarativeListView@@AAEXXZ @ 3199 NONAME ; void QDeclarativeListView::trackedPositionChanged(void) + ?transform@QDeclarativeItem@@QAE?AU?$QDeclarativeListProperty@VQGraphicsTransform@@@@XZ @ 3200 NONAME ; struct QDeclarativeListProperty QDeclarativeItem::transform(void) + ?transformOrigin@QDeclarativeItem@@QBE?AW4TransformOrigin@1@XZ @ 3201 NONAME ; enum QDeclarativeItem::TransformOrigin QDeclarativeItem::transformOrigin(void) const + ?transformOriginChanged@QDeclarativeItem@@IAEXW4TransformOrigin@1@@Z @ 3202 NONAME ; void QDeclarativeItem::transformOriginChanged(enum QDeclarativeItem::TransformOrigin) + ?transitions@QDeclarativeItem@@QAE?AU?$QDeclarativeListProperty@VQDeclarativeTransition@@@@XZ @ 3203 NONAME ; struct QDeclarativeListProperty QDeclarativeItem::transitions(void) + ?transitionsProperty@QDeclarativeStateGroup@@QAE?AU?$QDeclarativeListProperty@VQDeclarativeTransition@@@@XZ @ 3204 NONAME ; struct QDeclarativeListProperty QDeclarativeStateGroup::transitionsProperty(void) + ?triggered@QDeclarativeTimer@@IAEXXZ @ 3205 NONAME ; void QDeclarativeTimer::triggered(void) + ?triggeredOnStart@QDeclarativeTimer@@QBE_NXZ @ 3206 NONAME ; bool QDeclarativeTimer::triggeredOnStart(void) const + ?type@QDeclarativeDomImport@@QBE?AW4Type@1@XZ @ 3207 NONAME ; enum QDeclarativeDomImport::Type QDeclarativeDomImport::type(void) const + ?type@QDeclarativeDomValue@@QBE?AW4Type@1@XZ @ 3208 NONAME ; enum QDeclarativeDomValue::Type QDeclarativeDomValue::type(void) const + ?type@QDeclarativeListAccessor@@QBE?AW4Type@1@XZ @ 3209 NONAME ; enum QDeclarativeListAccessor::Type QDeclarativeListAccessor::type(void) const + ?type@QDeclarativeOpenMetaObject@@QBEPAVQDeclarativeOpenMetaObjectType@@XZ @ 3210 NONAME ; class QDeclarativeOpenMetaObjectType * QDeclarativeOpenMetaObject::type(void) const + ?type@QDeclarativeProperty@@QBE?AW4Type@1@XZ @ 3211 NONAME ; enum QDeclarativeProperty::Type QDeclarativeProperty::type(void) const + ?type@QMetaPropertyBuilder@@QBE?AVQByteArray@@XZ @ 3212 NONAME ; class QByteArray QMetaPropertyBuilder::type(void) const + ?typeCategory@QDeclarativeMetaType@@SA?AW4TypeCategory@1@H@Z @ 3213 NONAME ; enum QDeclarativeMetaType::TypeCategory QDeclarativeMetaType::typeCategory(int) + ?typeId@QDeclarativeType@@QBEHXZ @ 3214 NONAME ; int QDeclarativeType::typeId(void) const + ?typeName@QDeclarativeAnchorChanges@@UBE?AVQString@@XZ @ 3215 NONAME ; class QString QDeclarativeAnchorChanges::typeName(void) const + ?typeName@QDeclarativeParentChange@@UBE?AVQString@@XZ @ 3216 NONAME ; class QString QDeclarativeParentChange::typeName(void) const + ?typeName@QDeclarativeStateChangeScript@@UBE?AVQString@@XZ @ 3217 NONAME ; class QString QDeclarativeStateChangeScript::typeName(void) const + ?typeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 3218 NONAME ; class QByteArray QDeclarativeType::typeName(void) const + ?update@QDeclarativeTimer@@AAEXXZ @ 3219 NONAME ; void QDeclarativeTimer::update(void) + ?updateAutoState@QDeclarativeStateGroup@@AAE_NXZ @ 3220 NONAME ; bool QDeclarativeStateGroup::updateAutoState(void) + ?updateGradient@QDeclarativeGradientStop@@AAEXXZ @ 3221 NONAME ; void QDeclarativeGradientStop::updateGradient(void) + ?updateImgCache@QDeclarativeTextEdit@@AAEXABVQRectF@@@Z @ 3222 NONAME ; void QDeclarativeTextEdit::updateImgCache(class QRectF const &) + ?updatePaintedGeometry@QDeclarativeImage@@IAEXXZ @ 3223 NONAME ; void QDeclarativeImage::updatePaintedGeometry(void) + ?updateRect@QDeclarativeTextInput@@AAEXABVQRect@@@Z @ 3224 NONAME ; void QDeclarativeTextInput::updateRect(class QRect const &) + ?updateSelectionMarkers@QDeclarativeTextEdit@@AAEXXZ @ 3225 NONAME ; void QDeclarativeTextEdit::updateSelectionMarkers(void) + ?updateSize@QDeclarativeTextEdit@@AAEXXZ @ 3226 NONAME ; void QDeclarativeTextEdit::updateSize(void) + ?updateSize@QDeclarativeTextInput@@AAEX_N@Z @ 3227 NONAME ; void QDeclarativeTextInput::updateSize(bool) + ?updated@QDeclarativeGradient@@IAEXXZ @ 3228 NONAME ; void QDeclarativeGradient::updated(void) + ?uri@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 3229 NONAME ; class QString QDeclarativeDomImport::uri(void) const + ?url@QDeclarativeComponent@@QBE?AVQUrl@@XZ @ 3230 NONAME ; class QUrl QDeclarativeComponent::url(void) const + ?url@QDeclarativeDebugFileReference@@QBE?AVQUrl@@XZ @ 3231 NONAME ; class QUrl QDeclarativeDebugFileReference::url(void) const + ?url@QDeclarativeDomObject@@QBE?AVQUrl@@XZ @ 3232 NONAME ; class QUrl QDeclarativeDomObject::url(void) const + ?url@QDeclarativeError@@QBE?AVQUrl@@XZ @ 3233 NONAME ; class QUrl QDeclarativeError::url(void) const + ?url@QDeclarativePixmapReply@@QBEABVQUrl@@XZ @ 3234 NONAME ; class QUrl const & QDeclarativePixmapReply::url(void) const + ?url@QDeclarativeWebView@@QBE?AVQUrl@@XZ @ 3235 NONAME ; class QUrl QDeclarativeWebView::url(void) const + ?urlChanged@QDeclarativeWebView@@IAEXXZ @ 3236 NONAME ; void QDeclarativeWebView::urlChanged(void) + ?usedAnchors@QDeclarativeAnchors@@QBE?AV?$QFlags@W4UsedAnchor@QDeclarativeAnchors@@@@XZ @ 3237 NONAME ; class QFlags QDeclarativeAnchors::usedAnchors(void) const + ?vAlign@QDeclarativeText@@QBE?AW4VAlignment@1@XZ @ 3238 NONAME ; enum QDeclarativeText::VAlignment QDeclarativeText::vAlign(void) const + ?vAlign@QDeclarativeTextEdit@@QBE?AW4VAlignment@1@XZ @ 3239 NONAME ; enum QDeclarativeTextEdit::VAlignment QDeclarativeTextEdit::vAlign(void) const + ?vHeight@QDeclarativeFlickable@@IBEMXZ @ 3240 NONAME ; float QDeclarativeFlickable::vHeight(void) const + ?vWidth@QDeclarativeFlickable@@IBEMXZ @ 3241 NONAME ; float QDeclarativeFlickable::vWidth(void) const + ?validator@QDeclarativeTextInput@@QBEPAVQValidator@@XZ @ 3242 NONAME ; class QValidator * QDeclarativeTextInput::validator(void) const + ?validatorChanged@QDeclarativeTextInput@@IAEXXZ @ 3243 NONAME ; void QDeclarativeTextInput::validatorChanged(void) + ?value@QDeclarativeBind@@QBE?AVQVariant@@XZ @ 3244 NONAME ; class QVariant QDeclarativeBind::value(void) const + ?value@QDeclarativeDebugPropertyReference@@QBE?AVQVariant@@XZ @ 3245 NONAME ; class QVariant QDeclarativeDebugPropertyReference::value(void) const + ?value@QDeclarativeDomProperty@@QBE?AVQDeclarativeDomValue@@XZ @ 3246 NONAME ; class QDeclarativeDomValue QDeclarativeDomProperty::value(void) const + ?value@QDeclarativeExpression@@QAE?AVQVariant@@PA_N@Z @ 3247 NONAME ; class QVariant QDeclarativeExpression::value(bool *) + ?value@QDeclarativeOpenMetaObject@@QBE?AVQVariant@@ABVQByteArray@@@Z @ 3248 NONAME ; class QVariant QDeclarativeOpenMetaObject::value(class QByteArray const &) const + ?value@QDeclarativeOpenMetaObject@@QBE?AVQVariant@@H@Z @ 3249 NONAME ; class QVariant QDeclarativeOpenMetaObject::value(int) const + ?value@QDeclarativePathAttribute@@QBEMXZ @ 3250 NONAME ; float QDeclarativePathAttribute::value(void) const + ?value@QDeclarativePathPercent@@QBEMXZ @ 3251 NONAME ; float QDeclarativePathPercent::value(void) const + ?value@QDeclarativePropertyMap@@QBE?AVQVariant@@ABVQString@@@Z @ 3252 NONAME ; class QVariant QDeclarativePropertyMap::value(class QString const &) const + ?value@QDeclarativeSpringFollow@@QBEMXZ @ 3253 NONAME ; float QDeclarativeSpringFollow::value(void) const + ?value@QMetaEnumBuilder@@QBEHH@Z @ 3254 NONAME ; int QMetaEnumBuilder::value(int) const + ?valueChanged@QDeclarativeDebugWatch@@IAEXABVQByteArray@@ABVQVariant@@@Z @ 3255 NONAME ; void QDeclarativeDebugWatch::valueChanged(class QByteArray const &, class QVariant const &) + ?valueChanged@QDeclarativeExpression@@IAEXXZ @ 3256 NONAME ; void QDeclarativeExpression::valueChanged(void) + ?valueChanged@QDeclarativePropertyMap@@IAEXABVQString@@@Z @ 3257 NONAME ; void QDeclarativePropertyMap::valueChanged(class QString const &) + ?valueChanged@QDeclarativeSpringFollow@@IAEXM@Z @ 3258 NONAME ; void QDeclarativeSpringFollow::valueChanged(float) + ?valueForNode@QDeclarativeListModel@@ABE?AVQVariant@@PAUModelNode@@@Z @ 3259 NONAME ; class QVariant QDeclarativeListModel::valueForNode(struct ModelNode *) const + ?valueType@QDeclarativeValueTypeFactory@@SAPAVQDeclarativeValueType@@H@Z @ 3260 NONAME ; class QDeclarativeValueType * QDeclarativeValueTypeFactory::valueType(int) + ?valueTypeName@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 3261 NONAME ; class QString QDeclarativeDebugPropertyReference::valueTypeName(void) const + ?values@QDeclarativeDomList@@QBE?AV?$QList@VQDeclarativeDomValue@@@@XZ @ 3262 NONAME ; class QList QDeclarativeDomList::values(void) const + ?variantFromString@QDeclarativeStringConverters@@YA?AVQVariant@@ABVQString@@@Z @ 3263 NONAME ; class QVariant QDeclarativeStringConverters::variantFromString(class QString const &) + ?variantFromString@QDeclarativeStringConverters@@YA?AVQVariant@@ABVQString@@HPA_N@Z @ 3264 NONAME ; class QVariant QDeclarativeStringConverters::variantFromString(class QString const &, int, bool *) + ?vector3DFromString@QDeclarativeStringConverters@@YA?AVQVector3D@@ABVQString@@PA_N@Z @ 3265 NONAME ; class QVector3D QDeclarativeStringConverters::vector3DFromString(class QString const &, bool *) + ?velocity@QDeclarativeEaseFollow@@QBEMXZ @ 3266 NONAME ; float QDeclarativeEaseFollow::velocity(void) const + ?velocity@QDeclarativeParticles@@QBEMXZ @ 3267 NONAME ; float QDeclarativeParticles::velocity(void) const + ?velocity@QDeclarativeSpringFollow@@QBEMXZ @ 3268 NONAME ; float QDeclarativeSpringFollow::velocity(void) const + ?velocityChanged@QDeclarativeEaseFollow@@IAEXXZ @ 3269 NONAME ; void QDeclarativeEaseFollow::velocityChanged(void) + ?velocityChanged@QDeclarativeParticles@@IAEXXZ @ 3270 NONAME ; void QDeclarativeParticles::velocityChanged(void) + ?velocityDeviation@QDeclarativeParticles@@QBEMXZ @ 3271 NONAME ; float QDeclarativeParticles::velocityDeviation(void) const + ?velocityDeviationChanged@QDeclarativeParticles@@IAEXXZ @ 3272 NONAME ; void QDeclarativeParticles::velocityDeviationChanged(void) + ?version@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 3273 NONAME ; class QString QDeclarativeDomImport::version(void) const + ?verticalAlignmentChanged@QDeclarativeText@@IAEXW4VAlignment@1@@Z @ 3274 NONAME ; void QDeclarativeText::verticalAlignmentChanged(enum QDeclarativeText::VAlignment) + ?verticalAlignmentChanged@QDeclarativeTextEdit@@IAEXW4VAlignment@1@@Z @ 3275 NONAME ; void QDeclarativeTextEdit::verticalAlignmentChanged(enum QDeclarativeTextEdit::VAlignment) + ?verticalCenter@QDeclarativeAnchorChanges@@QBE?AVQDeclarativeAnchorLine@@XZ @ 3276 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchorChanges::verticalCenter(void) const + ?verticalCenter@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 3277 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::verticalCenter(void) const + ?verticalCenter@QDeclarativeItem@@QBE?AVQDeclarativeAnchorLine@@XZ @ 3278 NONAME ; class QDeclarativeAnchorLine QDeclarativeItem::verticalCenter(void) const + ?verticalCenterChanged@QDeclarativeAnchors@@IAEXXZ @ 3279 NONAME ; void QDeclarativeAnchors::verticalCenterChanged(void) + ?verticalCenterOffset@QDeclarativeAnchors@@QBEMXZ @ 3280 NONAME ; float QDeclarativeAnchors::verticalCenterOffset(void) const + ?verticalCenterOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 3281 NONAME ; void QDeclarativeAnchors::verticalCenterOffsetChanged(void) + ?verticalTileMode@QDeclarativeBorderImage@@QBE?AW4TileMode@1@XZ @ 3282 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeBorderImage::verticalTileMode(void) const + ?verticalTileModeChanged@QDeclarativeBorderImage@@IAEXXZ @ 3283 NONAME ; void QDeclarativeBorderImage::verticalTileModeChanged(void) + ?verticalTileRule@QDeclarativeGridScaledImage@@QBE?AW4TileMode@QDeclarativeBorderImage@@XZ @ 3284 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::verticalTileRule(void) const + ?verticalVelocity@QDeclarativeFlickable@@QBEMXZ @ 3285 NONAME ; float QDeclarativeFlickable::verticalVelocity(void) const + ?verticalVelocityChanged@QDeclarativeFlickable@@IAEXXZ @ 3286 NONAME ; void QDeclarativeFlickable::verticalVelocityChanged(void) + ?viewItem@QDeclarativeWebPage@@AAEPAVQDeclarativeWebView@@XZ @ 3287 NONAME ; class QDeclarativeWebView * QDeclarativeWebPage::viewItem(void) + ?viewport@QDeclarativeFlickable@@QAEPAVQDeclarativeItem@@XZ @ 3288 NONAME ; class QDeclarativeItem * QDeclarativeFlickable::viewport(void) + ?viewportMoved@QDeclarativeFlickable@@MAEXXZ @ 3289 NONAME ; void QDeclarativeFlickable::viewportMoved(void) + ?viewportMoved@QDeclarativeGridView@@MAEXXZ @ 3290 NONAME ; void QDeclarativeGridView::viewportMoved(void) + ?viewportMoved@QDeclarativeListView@@MAEXXZ @ 3291 NONAME ; void QDeclarativeListView::viewportMoved(void) + ?visibleArea@QDeclarativeFlickable@@IAEPAVQDeclarativeFlickableVisibleArea@@XZ @ 3292 NONAME ; class QDeclarativeFlickableVisibleArea * QDeclarativeFlickable::visibleArea(void) + ?waitForClients@QDeclarativeDebugService@@SAXXZ @ 3293 NONAME ; void QDeclarativeDebugService::waitForClients(void) + ?wantsFocus@QDeclarativeItem@@QBE_NXZ @ 3294 NONAME ; bool QDeclarativeItem::wantsFocus(void) const + ?wantsFocusChanged@QDeclarativeItem@@IAEXXZ @ 3295 NONAME ; void QDeclarativeItem::wantsFocusChanged(void) + ?wheelEvent@QDeclarativeFlickable@@MAEXPAVQGraphicsSceneWheelEvent@@@Z @ 3296 NONAME ; void QDeclarativeFlickable::wheelEvent(class QGraphicsSceneWheelEvent *) + ?when@QDeclarativeBind@@QBE_NXZ @ 3297 NONAME ; bool QDeclarativeBind::when(void) const + ?when@QDeclarativeState@@QBEPAVQDeclarativeBinding@@XZ @ 3298 NONAME ; class QDeclarativeBinding * QDeclarativeState::when(void) const + ?width@QDeclarativeItem@@QBEMXZ @ 3299 NONAME ; float QDeclarativeItem::width(void) const + ?width@QDeclarativeParentChange@@QBEMXZ @ 3300 NONAME ; float QDeclarativeParentChange::width(void) const + ?width@QDeclarativePen@@QBEHXZ @ 3301 NONAME ; int QDeclarativePen::width(void) const + ?widthChange@QDeclarativeFlickable@@IAEXXZ @ 3302 NONAME ; void QDeclarativeFlickable::widthChange(void) + ?widthChanged@QDeclarativeItem@@IAEXXZ @ 3303 NONAME ; void QDeclarativeItem::widthChanged(void) + ?widthIsSet@QDeclarativeParentChange@@QBE_NXZ @ 3304 NONAME ; bool QDeclarativeParentChange::widthIsSet(void) const + ?widthValid@QDeclarativeItem@@IBE_NXZ @ 3305 NONAME ; bool QDeclarativeItem::widthValid(void) const + ?window@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 3306 NONAME ; class QColor QDeclarativeSystemPalette::window(void) const + ?windowObjectCleared@QDeclarativeWebView@@AAEXXZ @ 3307 NONAME ; void QDeclarativeWebView::windowObjectCleared(void) + ?windowText@QDeclarativeSystemPalette@@QBE?AVQColor@@XZ @ 3308 NONAME ; class QColor QDeclarativeSystemPalette::windowText(void) const + ?wrap@QDeclarativeText@@QBE_NXZ @ 3309 NONAME ; bool QDeclarativeText::wrap(void) const + ?wrap@QDeclarativeTextEdit@@QBE_NXZ @ 3310 NONAME ; bool QDeclarativeTextEdit::wrap(void) const + ?wrapChanged@QDeclarativeText@@IAEX_N@Z @ 3311 NONAME ; void QDeclarativeText::wrapChanged(bool) + ?wrapChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 3312 NONAME ; void QDeclarativeTextEdit::wrapChanged(bool) + ?write@QDeclarativeBehavior@@UAEXABVQVariant@@@Z @ 3313 NONAME ; void QDeclarativeBehavior::write(class QVariant const &) + ?write@QDeclarativeProperty@@QBE_NABVQVariant@@@Z @ 3314 NONAME ; bool QDeclarativeProperty::write(class QVariant const &) const + ?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@@Z @ 3315 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &) + ?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@PAVQDeclarativeContext@@@Z @ 3316 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &, class QDeclarativeContext *) + ?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@PAVQDeclarativeEngine@@@Z @ 3317 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &, class QDeclarativeEngine *) + ?x@QDeclarativeCurve@@QBEMXZ @ 3318 NONAME ; float QDeclarativeCurve::x(void) const + ?x@QDeclarativeParentChange@@QBEMXZ @ 3319 NONAME ; float QDeclarativeParentChange::x(void) const + ?xAttractor@QDeclarativeParticleMotionGravity@@QBEMXZ @ 3320 NONAME ; float QDeclarativeParticleMotionGravity::xAttractor(void) const + ?xIsSet@QDeclarativeParentChange@@QBE_NXZ @ 3321 NONAME ; bool QDeclarativeParentChange::xIsSet(void) const + ?xToPos@QDeclarativeTextInput@@QAEHH@Z @ 3322 NONAME ; int QDeclarativeTextInput::xToPos(int) + ?xVariance@QDeclarativeParticleMotionWander@@QBEMXZ @ 3323 NONAME ; float QDeclarativeParticleMotionWander::xVariance(void) const + ?xattractorChanged@QDeclarativeParticleMotionGravity@@IAEXXZ @ 3324 NONAME ; void QDeclarativeParticleMotionGravity::xattractorChanged(void) + ?xflick@QDeclarativeFlickable@@IBE_NXZ @ 3325 NONAME ; bool QDeclarativeFlickable::xflick(void) const + ?xmax@QDeclarativeDrag@@QBEMXZ @ 3326 NONAME ; float QDeclarativeDrag::xmax(void) const + ?xmin@QDeclarativeDrag@@QBEMXZ @ 3327 NONAME ; float QDeclarativeDrag::xmin(void) const + ?xml@QDeclarativeXmlListModel@@QBE?AVQString@@XZ @ 3328 NONAME ; class QString QDeclarativeXmlListModel::xml(void) const + ?xvarianceChanged@QDeclarativeParticleMotionWander@@IAEXXZ @ 3329 NONAME ; void QDeclarativeParticleMotionWander::xvarianceChanged(void) + ?y@QDeclarativeCurve@@QBEMXZ @ 3330 NONAME ; float QDeclarativeCurve::y(void) const + ?y@QDeclarativeParentChange@@QBEMXZ @ 3331 NONAME ; float QDeclarativeParentChange::y(void) const + ?yAttractor@QDeclarativeParticleMotionGravity@@QBEMXZ @ 3332 NONAME ; float QDeclarativeParticleMotionGravity::yAttractor(void) const + ?yIsSet@QDeclarativeParentChange@@QBE_NXZ @ 3333 NONAME ; bool QDeclarativeParentChange::yIsSet(void) const + ?yVariance@QDeclarativeParticleMotionWander@@QBEMXZ @ 3334 NONAME ; float QDeclarativeParticleMotionWander::yVariance(void) const + ?yattractorChanged@QDeclarativeParticleMotionGravity@@IAEXXZ @ 3335 NONAME ; void QDeclarativeParticleMotionGravity::yattractorChanged(void) + ?yflick@QDeclarativeFlickable@@IBE_NXZ @ 3336 NONAME ; bool QDeclarativeFlickable::yflick(void) const + ?ymax@QDeclarativeDrag@@QBEMXZ @ 3337 NONAME ; float QDeclarativeDrag::ymax(void) const + ?ymin@QDeclarativeDrag@@QBEMXZ @ 3338 NONAME ; float QDeclarativeDrag::ymin(void) const + ?yvarianceChanged@QDeclarativeParticleMotionWander@@IAEXXZ @ 3339 NONAME ; void QDeclarativeParticleMotionWander::yvarianceChanged(void) + ?zoomFactor@QDeclarativeWebView@@QBEMXZ @ 3340 NONAME ; float QDeclarativeWebView::zoomFactor(void) const + ?zoomFactorChanged@QDeclarativeWebView@@IAEXXZ @ 3341 NONAME ; void QDeclarativeWebView::zoomFactorChanged(void) + ?zoomTo@QDeclarativeWebView@@IAEXMHH@Z @ 3342 NONAME ; void QDeclarativeWebView::zoomTo(float, int, int) + ?staticMetaObject@QDeclarativePathElement@@2UQMetaObject@@B @ 3343 NONAME ; struct QMetaObject const QDeclarativePathElement::staticMetaObject + ?staticMetaObject@QDeclarativeDebugObjectQuery@@2UQMetaObject@@B @ 3344 NONAME ; struct QMetaObject const QDeclarativeDebugObjectQuery::staticMetaObject + ?staticMetaObject@QDeclarativeTextInput@@2UQMetaObject@@B @ 3345 NONAME ; struct QMetaObject const QDeclarativeTextInput::staticMetaObject + ?staticMetaObject@QDeclarativeListModel@@2UQMetaObject@@B @ 3346 NONAME ; struct QMetaObject const QDeclarativeListModel::staticMetaObject + ?staticMetaObject@QDeclarativeSpringFollow@@2UQMetaObject@@B @ 3347 NONAME ; struct QMetaObject const QDeclarativeSpringFollow::staticMetaObject + ?staticMetaObject@QDeclarativePen@@2UQMetaObject@@B @ 3348 NONAME ; struct QMetaObject const QDeclarativePen::staticMetaObject + ?staticMetaObject@QDeclarativeScaleGrid@@2UQMetaObject@@B @ 3349 NONAME ; struct QMetaObject const QDeclarativeScaleGrid::staticMetaObject + ?staticMetaObject@QDeclarativeItem@@2UQMetaObject@@B @ 3350 NONAME ; struct QMetaObject const QDeclarativeItem::staticMetaObject + ?staticMetaObject@QDeclarativeColumn@@2UQMetaObject@@B @ 3351 NONAME ; struct QMetaObject const QDeclarativeColumn::staticMetaObject + ?staticMetaObject@QDeclarativeGradient@@2UQMetaObject@@B @ 3352 NONAME ; struct QMetaObject const QDeclarativeGradient::staticMetaObject + ?staticMetaObject@QDeclarativeGraphicsObjectContainer@@2UQMetaObject@@B @ 3353 NONAME ; struct QMetaObject const QDeclarativeGraphicsObjectContainer::staticMetaObject + ?staticMetaObject@QDeclarativeDebugWatch@@2UQMetaObject@@B @ 3354 NONAME ; struct QMetaObject const QDeclarativeDebugWatch::staticMetaObject + ?staticMetaObject@QDeclarativeStateGroup@@2UQMetaObject@@B @ 3355 NONAME ; struct QMetaObject const QDeclarativeStateGroup::staticMetaObject + ?staticMetaObject@QPacketProtocol@@2UQMetaObject@@B @ 3356 NONAME ; struct QMetaObject const QPacketProtocol::staticMetaObject + ?staticMetaObject@QDeclarativeListView@@2UQMetaObject@@B @ 3357 NONAME ; struct QMetaObject const QDeclarativeListView::staticMetaObject + ?staticMetaObject@QDeclarativeLoader@@2UQMetaObject@@B @ 3358 NONAME ; struct QMetaObject const QDeclarativeLoader::staticMetaObject + ?staticMetaObject@QDeclarativeTransition@@2UQMetaObject@@B @ 3359 NONAME ; struct QMetaObject const QDeclarativeTransition::staticMetaObject + ?staticMetaObject@QDeclarativeStateChangeScript@@2UQMetaObject@@B @ 3360 NONAME ; struct QMetaObject const QDeclarativeStateChangeScript::staticMetaObject + ?staticMetaObject@QDeclarativeGridView@@2UQMetaObject@@B @ 3361 NONAME ; struct QMetaObject const QDeclarativeGridView::staticMetaObject + ?staticMetaObject@QDeclarativeFlow@@2UQMetaObject@@B @ 3362 NONAME ; struct QMetaObject const QDeclarativeFlow::staticMetaObject + ?staticMetaObject@QDeclarativeParentChange@@2UQMetaObject@@B @ 3363 NONAME ; struct QMetaObject const QDeclarativeParentChange::staticMetaObject + ?staticMetaObject@QDeclarativeCurve@@2UQMetaObject@@B @ 3364 NONAME ; struct QMetaObject const QDeclarativeCurve::staticMetaObject + ?staticMetaObject@QDeclarativeImage@@2UQMetaObject@@B @ 3365 NONAME ; struct QMetaObject const QDeclarativeImage::staticMetaObject + ?staticMetaObject@QDeclarativeEaseFollow@@2UQMetaObject@@B @ 3366 NONAME ; struct QMetaObject const QDeclarativeEaseFollow::staticMetaObject + ?staticMetaObject@QDeclarativePixmapReply@@2UQMetaObject@@B @ 3367 NONAME ; struct QMetaObject const QDeclarativePixmapReply::staticMetaObject + ?staticMetaObject@QDeclarativeDateTimeFormatter@@2UQMetaObject@@B @ 3368 NONAME ; struct QMetaObject const QDeclarativeDateTimeFormatter::staticMetaObject + ?staticMetaObject@QDeclarativePathQuad@@2UQMetaObject@@B @ 3369 NONAME ; struct QMetaObject const QDeclarativePathQuad::staticMetaObject + ?staticMetaObject@QDeclarativeContext@@2UQMetaObject@@B @ 3370 NONAME ; struct QMetaObject const QDeclarativeContext::staticMetaObject + ?staticMetaObject@QDeclarativeWebPage@@2UQMetaObject@@B @ 3371 NONAME ; struct QMetaObject const QDeclarativeWebPage::staticMetaObject + ?staticMetaObject@QDeclarativeAnchorChanges@@2UQMetaObject@@B @ 3372 NONAME ; struct QMetaObject const QDeclarativeAnchorChanges::staticMetaObject + ?staticMetaObject@QDeclarativeDebugService@@2UQMetaObject@@B @ 3373 NONAME ; struct QMetaObject const QDeclarativeDebugService::staticMetaObject + ?staticMetaObject@QDeclarativeEngine@@2UQMetaObject@@B @ 3374 NONAME ; struct QMetaObject const QDeclarativeEngine::staticMetaObject + ?staticMetaObject@QDeclarativeFlickable@@2UQMetaObject@@B @ 3375 NONAME ; struct QMetaObject const QDeclarativeFlickable::staticMetaObject + ?staticMetaObject@QDeclarativeParticleMotionGravity@@2UQMetaObject@@B @ 3376 NONAME ; struct QMetaObject const QDeclarativeParticleMotionGravity::staticMetaObject + ?staticMetaObject@QDeclarativePathCubic@@2UQMetaObject@@B @ 3377 NONAME ; struct QMetaObject const QDeclarativePathCubic::staticMetaObject + ?staticMetaObject@QDeclarativeBehavior@@2UQMetaObject@@B @ 3378 NONAME ; struct QMetaObject const QDeclarativeBehavior::staticMetaObject + ?staticMetaObject@QDeclarativeRepeater@@2UQMetaObject@@B @ 3379 NONAME ; struct QMetaObject const QDeclarativeRepeater::staticMetaObject + ?staticMetaObject@QDeclarativeVisualModel@@2UQMetaObject@@B @ 3380 NONAME ; struct QMetaObject const QDeclarativeVisualModel::staticMetaObject + ?staticMetaObject@QDeclarativeText@@2UQMetaObject@@B @ 3381 NONAME ; struct QMetaObject const QDeclarativeText::staticMetaObject + ?staticMetaObject@QDeclarativeExtensionPlugin@@2UQMetaObject@@B @ 3382 NONAME ; struct QMetaObject const QDeclarativeExtensionPlugin::staticMetaObject + ?staticMetaObject@QDeclarativeValueType@@2UQMetaObject@@B @ 3383 NONAME ; struct QMetaObject const QDeclarativeValueType::staticMetaObject + ?staticMetaObject@QDeclarativeRectangle@@2UQMetaObject@@B @ 3384 NONAME ; struct QMetaObject const QDeclarativeRectangle::staticMetaObject + ?staticMetaObject@QDeclarativeWebView@@2UQMetaObject@@B @ 3385 NONAME ; struct QMetaObject const QDeclarativeWebView::staticMetaObject + ?staticMetaObject@QDeclarativeRow@@2UQMetaObject@@B @ 3386 NONAME ; struct QMetaObject const QDeclarativeRow::staticMetaObject + ?staticMetaObject@QDeclarativeGrid@@2UQMetaObject@@B @ 3387 NONAME ; struct QMetaObject const QDeclarativeGrid::staticMetaObject + ?staticMetaObject@QDeclarativeEngineDebug@@2UQMetaObject@@B @ 3388 NONAME ; struct QMetaObject const QDeclarativeEngineDebug::staticMetaObject + ?staticMetaObject@QDeclarativeConnections@@2UQMetaObject@@B @ 3389 NONAME ; struct QMetaObject const QDeclarativeConnections::staticMetaObject + ?staticMetaObject@QDeclarativePathLine@@2UQMetaObject@@B @ 3390 NONAME ; struct QMetaObject const QDeclarativePathLine::staticMetaObject + ?staticMetaObject@QDeclarativePaintedItem@@2UQMetaObject@@B @ 3391 NONAME ; struct QMetaObject const QDeclarativePaintedItem::staticMetaObject + ?staticMetaObject@QDeclarativePropertyChanges@@2UQMetaObject@@B @ 3392 NONAME ; struct QMetaObject const QDeclarativePropertyChanges::staticMetaObject + ?staticMetaObject@QDeclarativeGradientStop@@2UQMetaObject@@B @ 3393 NONAME ; struct QMetaObject const QDeclarativeGradientStop::staticMetaObject + ?staticMetaObject@QDeclarativeImageBase@@2UQMetaObject@@B @ 3394 NONAME ; struct QMetaObject const QDeclarativeImageBase::staticMetaObject + ?staticMetaObject@QDeclarativeTimer@@2UQMetaObject@@B @ 3395 NONAME ; struct QMetaObject const QDeclarativeTimer::staticMetaObject + ?staticMetaObject@QDeclarativeDebugPropertyWatch@@2UQMetaObject@@B @ 3396 NONAME ; struct QMetaObject const QDeclarativeDebugPropertyWatch::staticMetaObject + ?staticMetaObject@QDeclarativeMouseArea@@2UQMetaObject@@B @ 3397 NONAME ; struct QMetaObject const QDeclarativeMouseArea::staticMetaObject + ?staticMetaObject@QDeclarativeAnchors@@2UQMetaObject@@B @ 3398 NONAME ; struct QMetaObject const QDeclarativeAnchors::staticMetaObject + ?staticMetaObject@QDeclarativePropertyMap@@2UQMetaObject@@B @ 3399 NONAME ; struct QMetaObject const QDeclarativePropertyMap::staticMetaObject + ?staticMetaObject@QListModelInterface@@2UQMetaObject@@B @ 3400 NONAME ; struct QMetaObject const QListModelInterface::staticMetaObject + ?staticMetaObject@QDeclarativePathAttribute@@2UQMetaObject@@B @ 3401 NONAME ; struct QMetaObject const QDeclarativePathAttribute::staticMetaObject + ?staticMetaObject@QDeclarativeVisualItemModel@@2UQMetaObject@@B @ 3402 NONAME ; struct QMetaObject const QDeclarativeVisualItemModel::staticMetaObject + ?staticMetaObject@QDeclarativeBind@@2UQMetaObject@@B @ 3403 NONAME ; struct QMetaObject const QDeclarativeBind::staticMetaObject + ?staticMetaObject@QDeclarativeAnimatedImage@@2UQMetaObject@@B @ 3404 NONAME ; struct QMetaObject const QDeclarativeAnimatedImage::staticMetaObject + ?staticMetaObject@QDeclarativeDebugRootContextQuery@@2UQMetaObject@@B @ 3405 NONAME ; struct QMetaObject const QDeclarativeDebugRootContextQuery::staticMetaObject + ?attachedProperties@QDeclarativePathView@@0V?$QHash@PAVQObject@@PAV1@@@A @ 3406 NONAME ; class QHash QDeclarativePathView::attachedProperties + ?staticMetaObject@QDeclarativeParticles@@2UQMetaObject@@B @ 3407 NONAME ; struct QMetaObject const QDeclarativeParticles::staticMetaObject + ?staticMetaObject@QDeclarativePath@@2UQMetaObject@@B @ 3408 NONAME ; struct QMetaObject const QDeclarativePath::staticMetaObject + ?staticMetaObject@QDeclarativeTextEdit@@2UQMetaObject@@B @ 3409 NONAME ; struct QMetaObject const QDeclarativeTextEdit::staticMetaObject + ?staticMetaObject@QDeclarativePathPercent@@2UQMetaObject@@B @ 3410 NONAME ; struct QMetaObject const QDeclarativePathPercent::staticMetaObject + ?staticMetaObject@QDeclarativeDebugObjectExpressionWatch@@2UQMetaObject@@B @ 3411 NONAME ; struct QMetaObject const QDeclarativeDebugObjectExpressionWatch::staticMetaObject + ?staticMetaObject@QDeclarativeDebugExpressionQuery@@2UQMetaObject@@B @ 3412 NONAME ; struct QMetaObject const QDeclarativeDebugExpressionQuery::staticMetaObject + ?staticMetaObject@QDeclarativeFlipable@@2UQMetaObject@@B @ 3413 NONAME ; struct QMetaObject const QDeclarativeFlipable::staticMetaObject + ?staticMetaObject@QDeclarativeBasePositioner@@2UQMetaObject@@B @ 3414 NONAME ; struct QMetaObject const QDeclarativeBasePositioner::staticMetaObject + ?staticMetaObject@QDeclarativeState@@2UQMetaObject@@B @ 3415 NONAME ; struct QMetaObject const QDeclarativeState::staticMetaObject + ?staticMetaObject@QDeclarativeParticleMotionWander@@2UQMetaObject@@B @ 3416 NONAME ; struct QMetaObject const QDeclarativeParticleMotionWander::staticMetaObject + ?staticMetaObject@QDeclarativePathView@@2UQMetaObject@@B @ 3417 NONAME ; struct QMetaObject const QDeclarativePathView::staticMetaObject + ?staticMetaObject@QDeclarativeExpression@@2UQMetaObject@@B @ 3418 NONAME ; struct QMetaObject const QDeclarativeExpression::staticMetaObject + ?staticMetaObject@QDeclarativeView@@2UQMetaObject@@B @ 3419 NONAME ; struct QMetaObject const QDeclarativeView::staticMetaObject + ?staticMetaObject@QDeclarativeDebugConnection@@2UQMetaObject@@B @ 3420 NONAME ; struct QMetaObject const QDeclarativeDebugConnection::staticMetaObject + ?staticMetaObject@QDeclarativeDebugEnginesQuery@@2UQMetaObject@@B @ 3421 NONAME ; struct QMetaObject const QDeclarativeDebugEnginesQuery::staticMetaObject + ?staticMetaObject@QDeclarativeStateOperation@@2UQMetaObject@@B @ 3422 NONAME ; struct QMetaObject const QDeclarativeStateOperation::staticMetaObject + ?staticMetaObject@QDeclarativeVisualDataModel@@2UQMetaObject@@B @ 3423 NONAME ; struct QMetaObject const QDeclarativeVisualDataModel::staticMetaObject + ?staticMetaObject@QDeclarativeNumberFormatter@@2UQMetaObject@@B @ 3424 NONAME ; struct QMetaObject const QDeclarativeNumberFormatter::staticMetaObject + ?staticMetaObject@QDeclarativeParticleMotionLinear@@2UQMetaObject@@B @ 3425 NONAME ; struct QMetaObject const QDeclarativeParticleMotionLinear::staticMetaObject + ?staticMetaObject@QDeclarativeFontLoader@@2UQMetaObject@@B @ 3426 NONAME ; struct QMetaObject const QDeclarativeFontLoader::staticMetaObject + ?staticMetaObject@QDeclarativeSystemPalette@@2UQMetaObject@@B @ 3427 NONAME ; struct QMetaObject const QDeclarativeSystemPalette::staticMetaObject + ?staticMetaObject@QDeclarativeParticleMotion@@2UQMetaObject@@B @ 3428 NONAME ; struct QMetaObject const QDeclarativeParticleMotion::staticMetaObject + ?staticMetaObject@QDeclarativeViewSection@@2UQMetaObject@@B @ 3429 NONAME ; struct QMetaObject const QDeclarativeViewSection::staticMetaObject + ?staticMetaObject@QDeclarativeXmlListModelRole@@2UQMetaObject@@B @ 3430 NONAME ; struct QMetaObject const QDeclarativeXmlListModelRole::staticMetaObject + ?staticMetaObject@QDeclarativeXmlListModel@@2UQMetaObject@@B @ 3431 NONAME ; struct QMetaObject const QDeclarativeXmlListModel::staticMetaObject + ?staticMetaObject@QDeclarativeBorderImage@@2UQMetaObject@@B @ 3432 NONAME ; struct QMetaObject const QDeclarativeBorderImage::staticMetaObject + ?staticMetaObject@QDeclarativeFocusPanel@@2UQMetaObject@@B @ 3433 NONAME ; struct QMetaObject const QDeclarativeFocusPanel::staticMetaObject + ?staticMetaObject@QDeclarativeFocusScope@@2UQMetaObject@@B @ 3434 NONAME ; struct QMetaObject const QDeclarativeFocusScope::staticMetaObject + ?staticMetaObject@QDeclarativeDebugQuery@@2UQMetaObject@@B @ 3435 NONAME ; struct QMetaObject const QDeclarativeDebugQuery::staticMetaObject + ?staticMetaObject@QDeclarativeDrag@@2UQMetaObject@@B @ 3436 NONAME ; struct QMetaObject const QDeclarativeDrag::staticMetaObject + ?staticMetaObject@QDeclarativeDebugClient@@2UQMetaObject@@B @ 3437 NONAME ; struct QMetaObject const QDeclarativeDebugClient::staticMetaObject + ?staticMetaObject@QDeclarativeComponent@@2UQMetaObject@@B @ 3438 NONAME ; struct QMetaObject const QDeclarativeComponent::staticMetaObject + diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def index 4f30cb5..9379163 100644 --- a/src/s60installs/bwins/QtGuiu.def +++ b/src/s60installs/bwins/QtGuiu.def @@ -3961,7 +3961,7 @@ EXPORTS ?drawPixmap@QPainter@@QAEXHHABVQPixmap@@HHHH@Z @ 3960 NONAME ; void QPainter::drawPixmap(int, int, class QPixmap const &, int, int, int, int) ?drawPixmap@QPainter@@QAEXHHHHABVQPixmap@@@Z @ 3961 NONAME ; void QPainter::drawPixmap(int, int, int, int, class QPixmap const &) ?drawPixmap@QPainter@@QAEXHHHHABVQPixmap@@HHHH@Z @ 3962 NONAME ; void QPainter::drawPixmap(int, int, int, int, class QPixmap const &, int, int, int, int) - ?drawPixmaps@QPaintEngineEx@@UAEXPBUData@QDrawPixmaps@@HABVQPixmap@@V?$QFlags@W4DrawingHint@QDrawPixmaps@@@@@Z @ 3963 NONAME ; void QPaintEngineEx::drawPixmaps(struct QDrawPixmaps::Data const *, int, class QPixmap const &, class QFlags) + ?drawPixmaps@QPaintEngineEx@@UAEXPBUData@QDrawPixmaps@@HABVQPixmap@@V?$QFlags@W4DrawingHint@QDrawPixmaps@@@@@Z @ 3963 NONAME ABSENT ; void QPaintEngineEx::drawPixmaps(struct QDrawPixmaps::Data const *, int, class QPixmap const &, class QFlags) ?drawPoint@QPainter@@QAEXABVQPoint@@@Z @ 3964 NONAME ; void QPainter::drawPoint(class QPoint const &) ?drawPoint@QPainter@@QAEXABVQPointF@@@Z @ 3965 NONAME ; void QPainter::drawPoint(class QPointF const &) ?drawPoint@QPainter@@QAEXHH@Z @ 3966 NONAME ; void QPainter::drawPoint(int, int) @@ -7291,7 +7291,7 @@ EXPORTS ?polishEvent@QGraphicsWidget@@MAEXXZ @ 7290 NONAME ; void QGraphicsWidget::polishEvent(void) ?polygon@QGraphicsPolygonItem@@QBE?AVQPolygonF@@XZ @ 7291 NONAME ; class QPolygonF QGraphicsPolygonItem::polygon(void) const ?polygonFlags@QVectorPath@@SAIW4PolygonDrawMode@QPaintEngine@@@Z @ 7292 NONAME ; unsigned int QVectorPath::polygonFlags(enum QPaintEngine::PolygonDrawMode) - ?populate@QTextureGlyphCache@@QAEXABVQTextItemInt@@ABV?$QVarLengthArray@I$0BAA@@@ABV?$QVarLengthArray@UQFixedPoint@@$0BAA@@@@Z @ 7293 NONAME ; void QTextureGlyphCache::populate(class QTextItemInt const &, class QVarLengthArray const &, class QVarLengthArray const &) + ?populate@QTextureGlyphCache@@QAEXABVQTextItemInt@@ABV?$QVarLengthArray@I$0BAA@@@ABV?$QVarLengthArray@UQFixedPoint@@$0BAA@@@@Z @ 7293 NONAME ABSENT ; void QTextureGlyphCache::populate(class QTextItemInt const &, class QVarLengthArray const &, class QVarLengthArray const &) ?popup@QCompleter@@QBEPAVQAbstractItemView@@XZ @ 7294 NONAME ; class QAbstractItemView * QCompleter::popup(void) const ?popup@QMenu@@QAEXABVQPoint@@PAVQAction@@@Z @ 7295 NONAME ; void QMenu::popup(class QPoint const &, class QAction *) ?popupMode@QToolButton@@QBE?AW4ToolButtonPopupMode@1@XZ @ 7296 NONAME ; enum QToolButton::ToolButtonPopupMode QToolButton::popupMode(void) const @@ -7389,7 +7389,7 @@ EXPORTS ?qAlpha@@YAHI@Z @ 7388 NONAME ; int qAlpha(unsigned int) ?qBlue@@YAHI@Z @ 7389 NONAME ; int qBlue(unsigned int) ?qDrawBorderPixmap@@YAXPAVQPainter@@ABVQRect@@ABVQMargins@@ABVQPixmap@@12ABUQTileRules@@V?$QFlags@W4DrawingHint@QDrawBorderPixmap@@@@@Z @ 7390 NONAME ; void qDrawBorderPixmap(class QPainter *, class QRect const &, class QMargins const &, class QPixmap const &, class QRect const &, class QMargins const &, struct QTileRules const &, class QFlags) - ?qDrawPixmaps@@YAXPAVQPainter@@PBUData@QDrawPixmaps@@HABVQPixmap@@V?$QFlags@W4DrawingHint@QDrawPixmaps@@@@@Z @ 7391 NONAME ; void qDrawPixmaps(class QPainter *, struct QDrawPixmaps::Data const *, int, class QPixmap const &, class QFlags) + ?qDrawPixmaps@@YAXPAVQPainter@@PBUData@QDrawPixmaps@@HABVQPixmap@@V?$QFlags@W4DrawingHint@QDrawPixmaps@@@@@Z @ 7391 NONAME ABSENT ; void qDrawPixmaps(class QPainter *, struct QDrawPixmaps::Data const *, int, class QPixmap const &, class QFlags) ?qDrawPlainRect@@YAXPAVQPainter@@ABVQRect@@ABVQColor@@HPBVQBrush@@@Z @ 7392 NONAME ; void qDrawPlainRect(class QPainter *, class QRect const &, class QColor const &, int, class QBrush const *) ?qDrawPlainRect@@YAXPAVQPainter@@HHHHABVQColor@@HPBVQBrush@@@Z @ 7393 NONAME ; void qDrawPlainRect(class QPainter *, int, int, int, int, class QColor const &, int, class QBrush const *) ?qDrawShadeLine@@YAXPAVQPainter@@ABVQPoint@@1ABVQPalette@@_NHH@Z @ 7394 NONAME ; void qDrawShadeLine(class QPainter *, class QPoint const &, class QPoint const &, class QPalette const &, bool, int, int) @@ -12601,4 +12601,125 @@ EXPORTS ?setPixelFormat@QEglProperties@@QAEXW4Format@QImage@@@Z @ 12600 NONAME ABSENT ; void QEglProperties::setPixelFormat(enum QImage::Format) ?currentContext@QEglContext@@CAPAV1@W4API@QEgl@@@Z @ 12601 NONAME ABSENT ; class QEglContext * QEglContext::currentContext(enum QEgl::API) ?errorString@QEglContext@@SA?AVQString@@H@Z @ 12602 NONAME ABSENT ; class QString QEglContext::errorString(int) + ??0FileInfo@QZipReader@@QAE@ABU01@@Z @ 12603 NONAME ; QZipReader::FileInfo::FileInfo(struct QZipReader::FileInfo const &) + ??0FileInfo@QZipReader@@QAE@XZ @ 12604 NONAME ; QZipReader::FileInfo::FileInfo(void) + ??0QAbstractScrollAreaPrivate@@QAE@XZ @ 12605 NONAME ; QAbstractScrollAreaPrivate::QAbstractScrollAreaPrivate(void) + ??0QGraphicsViewPrivate@@QAE@XZ @ 12606 NONAME ; QGraphicsViewPrivate::QGraphicsViewPrivate(void) + ??0QKeySequence@@QAE@ABVQString@@W4SequenceFormat@0@@Z @ 12607 NONAME ; QKeySequence::QKeySequence(class QString const &, enum QKeySequence::SequenceFormat) + ??0QStaticText@@QAE@ABV0@@Z @ 12608 NONAME ; QStaticText::QStaticText(class QStaticText const &) + ??0QStaticText@@QAE@ABVQString@@ABVQSizeF@@@Z @ 12609 NONAME ; QStaticText::QStaticText(class QString const &, class QSizeF const &) + ??0QStaticText@@QAE@XZ @ 12610 NONAME ; QStaticText::QStaticText(void) + ??0QStaticTextItem@@QAE@XZ @ 12611 NONAME ; QStaticTextItem::QStaticTextItem(void) + ??0QZipReader@@QAE@ABVQString@@V?$QFlags@W4OpenModeFlag@QIODevice@@@@@Z @ 12612 NONAME ; QZipReader::QZipReader(class QString const &, class QFlags) + ??0QZipReader@@QAE@PAVQIODevice@@@Z @ 12613 NONAME ; QZipReader::QZipReader(class QIODevice *) + ??1FileInfo@QZipReader@@QAE@XZ @ 12614 NONAME ; QZipReader::FileInfo::~FileInfo(void) + ??1QAbstractScrollAreaPrivate@@UAE@XZ @ 12615 NONAME ; QAbstractScrollAreaPrivate::~QAbstractScrollAreaPrivate(void) + ??1QGraphicsViewPrivate@@UAE@XZ @ 12616 NONAME ; QGraphicsViewPrivate::~QGraphicsViewPrivate(void) + ??1QStaticText@@QAE@XZ @ 12617 NONAME ; QStaticText::~QStaticText(void) + ??1QStaticTextItem@@QAE@XZ @ 12618 NONAME ; QStaticTextItem::~QStaticTextItem(void) + ??1QZipReader@@QAE@XZ @ 12619 NONAME ; QZipReader::~QZipReader(void) + ??4FileInfo@QZipReader@@QAEAAU01@ABU01@@Z @ 12620 NONAME ; struct QZipReader::FileInfo & QZipReader::FileInfo::operator=(struct QZipReader::FileInfo const &) + ??4QStaticText@@QAEAAV0@ABV0@@Z @ 12621 NONAME ; class QStaticText & QStaticText::operator=(class QStaticText const &) + ??8QStaticText@@QBE_NABV0@@Z @ 12622 NONAME ; bool QStaticText::operator==(class QStaticText const &) const + ??9QStaticText@@QBE_NABV0@@Z @ 12623 NONAME ; bool QStaticText::operator!=(class QStaticText const &) const + ??_EQAbstractScrollAreaPrivate@@UAE@I@Z @ 12624 NONAME ; QAbstractScrollAreaPrivate::~QAbstractScrollAreaPrivate(unsigned int) + ??_EQGraphicsViewPrivate@@UAE@I@Z @ 12625 NONAME ; QGraphicsViewPrivate::~QGraphicsViewPrivate(unsigned int) + ?_q_hslide@QAbstractScrollAreaPrivate@@QAEXH@Z @ 12626 NONAME ; void QAbstractScrollAreaPrivate::_q_hslide(int) + ?_q_setViewportCursor@QGraphicsViewPrivate@@QAEXABVQCursor@@@Z @ 12627 NONAME ; void QGraphicsViewPrivate::_q_setViewportCursor(class QCursor const &) + ?_q_showOrHideScrollBars@QAbstractScrollAreaPrivate@@QAEXXZ @ 12628 NONAME ; void QAbstractScrollAreaPrivate::_q_showOrHideScrollBars(void) + ?_q_unsetViewportCursor@QGraphicsViewPrivate@@QAEXXZ @ 12629 NONAME ; void QGraphicsViewPrivate::_q_unsetViewportCursor(void) + ?_q_vslide@QAbstractScrollAreaPrivate@@QAEXH@Z @ 12630 NONAME ; void QAbstractScrollAreaPrivate::_q_vslide(int) + ?allocStyleOptionsArray@QGraphicsViewPrivate@@QAEPAVQStyleOptionGraphicsItem@@H@Z @ 12631 NONAME ; class QStyleOptionGraphicsItem * QGraphicsViewPrivate::allocStyleOptionsArray(int) + ?anchorAt@QPlainTextEdit@@QBE?AVQString@@ABVQPoint@@@Z @ 12632 NONAME ; class QString QPlainTextEdit::anchorAt(class QPoint const &) const + ?assign@QKeySequence@@AAEHABVQString@@W4SequenceFormat@1@@Z @ 12633 NONAME ; int QKeySequence::assign(class QString const &, enum QKeySequence::SequenceFormat) + ?autoFillBackground@QGraphicsWidget@@QBE_NXZ @ 12634 NONAME ; bool QGraphicsWidget::autoFillBackground(void) const + ?canKeypadNavigate@QWidgetPrivate@@SA_NW4Orientation@Qt@@@Z @ 12635 NONAME ; bool QWidgetPrivate::canKeypadNavigate(enum Qt::Orientation) + ?centerView@QGraphicsViewPrivate@@QAEXW4ViewportAnchor@QGraphicsView@@@Z @ 12636 NONAME ; void QGraphicsViewPrivate::centerView(enum QGraphicsView::ViewportAnchor) + ?clearUndoRedoStacks@QTextDocument@@QAEXW4Stacks@1@@Z @ 12637 NONAME ; void QTextDocument::clearUndoRedoStacks(enum QTextDocument::Stacks) + ?close@QZipReader@@QAEXXZ @ 12638 NONAME ; void QZipReader::close(void) + ?constBits@QImage@@QBEPBEXZ @ 12639 NONAME ; unsigned char const * QImage::constBits(void) const + ?constScanLine@QImage@@QBEPBEH@Z @ 12640 NONAME ; unsigned char const * QImage::constScanLine(int) const + ?contentsOffset@QAbstractScrollAreaPrivate@@UBE?AVQPoint@@XZ @ 12641 NONAME ; class QPoint QAbstractScrollAreaPrivate::contentsOffset(void) const + ?convertFromImage@QPixmap@@QAE_NABVQImage@@V?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 12642 NONAME ; bool QPixmap::convertFromImage(class QImage const &, class QFlags) + ?count@QZipReader@@QBEHXZ @ 12643 NONAME ; int QZipReader::count(void) const + ?create@Fragment@QPainter@@SA?AV12@ABVQPointF@@ABVQRectF@@MMMM@Z @ 12644 NONAME ; class QPainter::Fragment QPainter::Fragment::create(class QPointF const &, class QRectF const &, float, float, float, float) + ?detach@QStaticText@@AAEXXZ @ 12645 NONAME ; void QStaticText::detach(void) + ?directoryLoaded@QFileSystemModel@@IAEXABVQString@@@Z @ 12646 NONAME ; void QFileSystemModel::directoryLoaded(class QString const &) + ?dispatchPendingUpdateRequests@QGraphicsViewPrivate@@QAEXXZ @ 12647 NONAME ; void QGraphicsViewPrivate::dispatchPendingUpdateRequests(void) + ?drawPixmapFragments@QPaintEngineEx@@UAEXPBVFragment@QPainter@@HABVQPixmap@@V?$QFlags@W4FragmentHint@QPainter@@@@@Z @ 12648 NONAME ; void QPaintEngineEx::drawPixmapFragments(class QPainter::Fragment const *, int, class QPixmap const &, class QFlags) + ?drawPixmapFragments@QPainter@@QAEXPBVFragment@1@HABVQPixmap@@V?$QFlags@W4FragmentHint@QPainter@@@@@Z @ 12649 NONAME ; void QPainter::drawPixmapFragments(class QPainter::Fragment const *, int, class QPixmap const &, class QFlags) + ?drawStaticText@QPainter@@QAEXABVQPoint@@ABVQStaticText@@@Z @ 12650 NONAME ; void QPainter::drawStaticText(class QPoint const &, class QStaticText const &) + ?drawStaticText@QPainter@@QAEXABVQPointF@@ABVQStaticText@@@Z @ 12651 NONAME ; void QPainter::drawStaticText(class QPointF const &, class QStaticText const &) + ?drawStaticText@QPainter@@QAEXHHABVQStaticText@@@Z @ 12652 NONAME ; void QPainter::drawStaticText(int, int, class QStaticText const &) + ?entryInfoAt@QZipReader@@QBE?AUFileInfo@1@H@Z @ 12653 NONAME ; struct QZipReader::FileInfo QZipReader::entryInfoAt(int) const + ?exists@QZipReader@@QBE_NXZ @ 12654 NONAME ; bool QZipReader::exists(void) const + ?extractAll@QZipReader@@QBE_NABVQString@@@Z @ 12655 NONAME ; bool QZipReader::extractAll(class QString const &) const + ?fileData@QZipReader@@QBE?AVQByteArray@@ABVQString@@@Z @ 12656 NONAME ; class QByteArray QZipReader::fileData(class QString const &) const + ?fileInfoList@QZipReader@@QBE?AV?$QList@UFileInfo@QZipReader@@@@XZ @ 12657 NONAME ; class QList QZipReader::fileInfoList(void) const + ?findItems@QGraphicsViewPrivate@@QBE?AV?$QList@PAVQGraphicsItem@@@@ABVQRegion@@PA_NABVQTransform@@@Z @ 12658 NONAME ; class QList QGraphicsViewPrivate::findItems(class QRegion const &, bool *, class QTransform const &) const + ?fixup@QIntValidator@@UBEXAAVQString@@@Z @ 12659 NONAME ; void QIntValidator::fixup(class QString &) const + ?freeStyleOptionsArray@QGraphicsViewPrivate@@QAEXPAVQStyleOptionGraphicsItem@@@Z @ 12660 NONAME ; void QGraphicsViewPrivate::freeStyleOptionsArray(class QStyleOptionGraphicsItem *) + ?getPixmapCursor@QApplicationPrivate@@QAE?AVQPixmap@@W4CursorShape@Qt@@@Z @ 12661 NONAME ; class QPixmap QApplicationPrivate::getPixmapCursor(enum Qt::CursorShape) + ?getSubRange@QBezier@@QBE?AV1@MM@Z @ 12662 NONAME ; class QBezier QBezier::getSubRange(float, float) const + ?hasSelectedText@QLabel@@QBE_NXZ @ 12663 NONAME ; bool QLabel::hasSelectedText(void) const + ?horizontalScroll@QGraphicsViewPrivate@@QBE_JXZ @ 12664 NONAME ; long long QGraphicsViewPrivate::horizontalScroll(void) const + ?inTabWidget@QWidgetPrivate@@SA_NPAVQWidget@@@Z @ 12665 NONAME ; bool QWidgetPrivate::inTabWidget(class QWidget *) + ?init@QAbstractScrollAreaPrivate@@QAEXXZ @ 12666 NONAME ; void QAbstractScrollAreaPrivate::init(void) + ?isImageCached@QImagePixmapCleanupHooks@@SA_NABVQImage@@@Z @ 12667 NONAME ; bool QImagePixmapCleanupHooks::isImageCached(class QImage const &) + ?isPixmapCached@QImagePixmapCleanupHooks@@SA_NABVQPixmap@@@Z @ 12668 NONAME ; bool QImagePixmapCleanupHooks::isPixmapCached(class QPixmap const &) + ?isReadable@QZipReader@@QBE_NXZ @ 12669 NONAME ; bool QZipReader::isReadable(void) const + ?isValidColor@QColor@@SA_NABVQString@@@Z @ 12670 NONAME ; bool QColor::isValidColor(class QString const &) + ?layoutChildren@QAbstractScrollAreaPrivate@@QAEXXZ @ 12671 NONAME ; void QAbstractScrollAreaPrivate::layoutChildren(void) + ?mapBy@QBezier@@QBE?AV1@ABVQTransform@@@Z @ 12672 NONAME ; class QBezier QBezier::mapBy(class QTransform const &) const + ?mapRectFromScene@QGraphicsViewPrivate@@QBE?AVQRectF@@ABV2@@Z @ 12673 NONAME ; class QRectF QGraphicsViewPrivate::mapRectFromScene(class QRectF const &) const + ?mapRectToScene@QGraphicsViewPrivate@@QBE?AVQRectF@@ABVQRect@@@Z @ 12674 NONAME ; class QRectF QGraphicsViewPrivate::mapRectToScene(class QRect const &) const + ?mapToScene@QGraphicsViewPrivate@@QBE?AVQPointF@@ABV2@@Z @ 12675 NONAME ; class QPointF QGraphicsViewPrivate::mapToScene(class QPointF const &) const + ?mapToScene@QGraphicsViewPrivate@@QBE?AVQRectF@@ABV2@@Z @ 12676 NONAME ; class QRectF QGraphicsViewPrivate::mapToScene(class QRectF const &) const + ?mapToViewRect@QGraphicsViewPrivate@@QBE?AVQRect@@PBVQGraphicsItem@@ABVQRectF@@@Z @ 12677 NONAME ; class QRect QGraphicsViewPrivate::mapToViewRect(class QGraphicsItem const *, class QRectF const &) const + ?mapToViewRegion@QGraphicsViewPrivate@@QBE?AVQRegion@@PBVQGraphicsItem@@ABVQRectF@@@Z @ 12678 NONAME ; class QRegion QGraphicsViewPrivate::mapToViewRegion(class QGraphicsItem const *, class QRectF const &) const + ?maximumSize@QStaticText@@QBE?AVQSizeF@@XZ @ 12679 NONAME ; class QSizeF QStaticText::maximumSize(void) const + ?mouseMoveEventHandler@QGraphicsViewPrivate@@QAEXPAVQMouseEvent@@@Z @ 12680 NONAME ; void QGraphicsViewPrivate::mouseMoveEventHandler(class QMouseEvent *) + ?performanceHint@QStaticText@@QBE?AW4PerformanceHint@1@XZ @ 12681 NONAME ; enum QStaticText::PerformanceHint QStaticText::performanceHint(void) const + ?populate@QTextureGlyphCache@@QAEXPAVQFontEngine@@HPBIPBUQFixedPoint@@@Z @ 12682 NONAME ; void QTextureGlyphCache::populate(class QFontEngine *, int, unsigned int const *, struct QFixedPoint const *) + ?populateSceneDragDropEvent@QGraphicsViewPrivate@@QAEXPAVQGraphicsSceneDragDropEvent@@PAVQDropEvent@@@Z @ 12683 NONAME ; void QGraphicsViewPrivate::populateSceneDragDropEvent(class QGraphicsSceneDragDropEvent *, class QDropEvent *) + ?positionInBlock@QTextCursor@@QBEHXZ @ 12684 NONAME ; int QTextCursor::positionInBlock(void) const + ?prepare@QStaticText@@QAEXABVQTransform@@ABVQFont@@@Z @ 12685 NONAME ; void QStaticText::prepare(class QTransform const &, class QFont const &) + ?processPendingUpdates@QGraphicsViewPrivate@@QAEXXZ @ 12686 NONAME ; void QGraphicsViewPrivate::processPendingUpdates(void) + ?q_func@QAbstractScrollAreaPrivate@@AAEPAVQAbstractScrollArea@@XZ @ 12687 NONAME ; class QAbstractScrollArea * QAbstractScrollAreaPrivate::q_func(void) + ?q_func@QAbstractScrollAreaPrivate@@ABEPBVQAbstractScrollArea@@XZ @ 12688 NONAME ; class QAbstractScrollArea const * QAbstractScrollAreaPrivate::q_func(void) const + ?q_func@QGraphicsViewPrivate@@AAEPAVQGraphicsView@@XZ @ 12689 NONAME ; class QGraphicsView * QGraphicsViewPrivate::q_func(void) + ?q_func@QGraphicsViewPrivate@@ABEPBVQGraphicsView@@XZ @ 12690 NONAME ; class QGraphicsView const * QGraphicsViewPrivate::q_func(void) const + ?qt_draw_glyphs@@YAXPAVQPainter@@PBIPBVQPointF@@H@Z @ 12691 NONAME ; void qt_draw_glyphs(class QPainter *, unsigned int const *, class QPointF const *, int) + ?recalculateContentSize@QGraphicsViewPrivate@@QAEXXZ @ 12692 NONAME ; void QGraphicsViewPrivate::recalculateContentSize(void) + ?render@QWidgetPrivate@@QAEXPAVQPaintDevice@@ABVQPoint@@ABVQRegion@@V?$QFlags@W4RenderFlag@QWidget@@@@_N@Z @ 12693 NONAME ; void QWidgetPrivate::render(class QPaintDevice *, class QPoint const &, class QRegion const &, class QFlags, bool) + ?replaceScrollBar@QAbstractScrollAreaPrivate@@QAEXPAVQScrollBar@@W4Orientation@Qt@@@Z @ 12694 NONAME ; void QAbstractScrollAreaPrivate::replaceScrollBar(class QScrollBar *, enum Qt::Orientation) + ?replayLastMouseEvent@QGraphicsViewPrivate@@QAEXXZ @ 12695 NONAME ; void QGraphicsViewPrivate::replayLastMouseEvent(void) + ?rubberBandRegion@QGraphicsViewPrivate@@QBE?AVQRegion@@PBVQWidget@@ABVQRect@@@Z @ 12696 NONAME ; class QRegion QGraphicsViewPrivate::rubberBandRegion(class QWidget const *, class QRect const &) const + ?scrollBarPolicyChanged@QAbstractScrollAreaPrivate@@UAEXW4Orientation@Qt@@W4ScrollBarPolicy@3@@Z @ 12697 NONAME ; void QAbstractScrollAreaPrivate::scrollBarPolicyChanged(enum Qt::Orientation, enum Qt::ScrollBarPolicy) + ?selectedText@QLabel@@QBE?AVQString@@XZ @ 12698 NONAME ; class QString QLabel::selectedText(void) const + ?selectionStart@QLabel@@QBEHXZ @ 12699 NONAME ; int QLabel::selectionStart(void) const + ?setAutoFillBackground@QGraphicsWidget@@QAEX_N@Z @ 12700 NONAME ; void QGraphicsWidget::setAutoFillBackground(bool) + ?setColorFromString@QColor@@AAE_NABVQString@@@Z @ 12701 NONAME ; bool QColor::setColorFromString(class QString const &) + ?setMaximumSize@QStaticText@@QAEXABVQSizeF@@@Z @ 12702 NONAME ; void QStaticText::setMaximumSize(class QSizeF const &) + ?setPerformanceHint@QStaticText@@QAEXW4PerformanceHint@1@@Z @ 12703 NONAME ; void QStaticText::setPerformanceHint(enum QStaticText::PerformanceHint) + ?setSelection@QLabel@@QAEXHH@Z @ 12704 NONAME ; void QLabel::setSelection(int, int) + ?setText@QStaticText@@QAEXABVQString@@@Z @ 12705 NONAME ; void QStaticText::setText(class QString const &) + ?setTextFormat@QStaticText@@QAEXW4TextFormat@Qt@@@Z @ 12706 NONAME ; void QStaticText::setTextFormat(enum Qt::TextFormat) + ?setUserData@QStaticTextItem@@QAEXPAVQStaticTextUserData@@@Z @ 12707 NONAME ; void QStaticTextItem::setUserData(class QStaticTextUserData *) + ?size@QStaticText@@QBE?AVQSizeF@@XZ @ 12708 NONAME ; class QSizeF QStaticText::size(void) const + ?status@QZipReader@@QBE?AW4Status@1@XZ @ 12709 NONAME ; enum QZipReader::Status QZipReader::status(void) const + ?storeDragDropEvent@QGraphicsViewPrivate@@QAEXPBVQGraphicsSceneDragDropEvent@@@Z @ 12710 NONAME ; void QGraphicsViewPrivate::storeDragDropEvent(class QGraphicsSceneDragDropEvent const *) + ?storeMouseEvent@QGraphicsViewPrivate@@QAEXPAVQMouseEvent@@@Z @ 12711 NONAME ; void QGraphicsViewPrivate::storeMouseEvent(class QMouseEvent *) + ?text@QStaticText@@QBE?AVQString@@XZ @ 12712 NONAME ; class QString QStaticText::text(void) const + ?textFormat@QStaticText@@QBE?AW4TextFormat@Qt@@XZ @ 12713 NONAME ; enum Qt::TextFormat QStaticText::textFormat(void) const + ?translateTouchEvent@QGraphicsViewPrivate@@SAXPAV1@PAVQTouchEvent@@@Z @ 12714 NONAME ; void QGraphicsViewPrivate::translateTouchEvent(class QGraphicsViewPrivate *, class QTouchEvent *) + ?updateAll@QGraphicsViewPrivate@@QAEXXZ @ 12715 NONAME ; void QGraphicsViewPrivate::updateAll(void) + ?updateInputMethodSensitivity@QGraphicsViewPrivate@@QAEXXZ @ 12716 NONAME ; void QGraphicsViewPrivate::updateInputMethodSensitivity(void) + ?updateLastCenterPoint@QGraphicsViewPrivate@@QAEXXZ @ 12717 NONAME ; void QGraphicsViewPrivate::updateLastCenterPoint(void) + ?updateRect@QGraphicsViewPrivate@@QAE_NABVQRect@@@Z @ 12718 NONAME ; bool QGraphicsViewPrivate::updateRect(class QRect const &) + ?updateRegion@QGraphicsViewPrivate@@QAE_NABVQRegion@@@Z @ 12719 NONAME ; bool QGraphicsViewPrivate::updateRegion(class QRegion const &) + ?updateScroll@QGraphicsViewPrivate@@QAEXXZ @ 12720 NONAME ; void QGraphicsViewPrivate::updateScroll(void) + ?verticalScroll@QGraphicsViewPrivate@@QBE_JXZ @ 12721 NONAME ; long long QGraphicsViewPrivate::verticalScroll(void) const + ?viewportEvent@QAbstractScrollAreaPrivate@@QAE_NPAVQEvent@@@Z @ 12722 NONAME ; bool QAbstractScrollAreaPrivate::viewportEvent(class QEvent *) + ?visibilityChanged@QToolBar@@IAEX_N@Z @ 12723 NONAME ; void QToolBar::visibilityChanged(bool) diff --git a/src/s60installs/bwins/QtMultimediau.def b/src/s60installs/bwins/QtMultimediau.def index 58532ce..629db33 100644 --- a/src/s60installs/bwins/QtMultimediau.def +++ b/src/s60installs/bwins/QtMultimediau.def @@ -268,4 +268,655 @@ EXPORTS ?staticMetaObject@QAbstractAudioOutput@@2UQMetaObject@@B @ 267 NONAME ; struct QMetaObject const QAbstractAudioOutput::staticMetaObject ?staticMetaObject@QAudioOutput@@2UQMetaObject@@B @ 268 NONAME ; struct QMetaObject const QAudioOutput::staticMetaObject ?staticMetaObject@QAbstractAudioInput@@2UQMetaObject@@B @ 269 NONAME ; struct QMetaObject const QAbstractAudioInput::staticMetaObject + ??0QGraphicsVideoItem@@QAE@PAVQGraphicsItem@@@Z @ 270 NONAME ; QGraphicsVideoItem::QGraphicsVideoItem(class QGraphicsItem *) + ??0QLocalMediaPlaylistProvider@@QAE@PAVQObject@@@Z @ 271 NONAME ; QLocalMediaPlaylistProvider::QLocalMediaPlaylistProvider(class QObject *) + ??0QMediaContent@@QAE@ABV0@@Z @ 272 NONAME ; QMediaContent::QMediaContent(class QMediaContent const &) + ??0QMediaContent@@QAE@ABV?$QList@VQMediaResource@@@@@Z @ 273 NONAME ; QMediaContent::QMediaContent(class QList const &) + ??0QMediaContent@@QAE@ABVQMediaResource@@@Z @ 274 NONAME ; QMediaContent::QMediaContent(class QMediaResource const &) + ??0QMediaContent@@QAE@ABVQNetworkRequest@@@Z @ 275 NONAME ; QMediaContent::QMediaContent(class QNetworkRequest const &) + ??0QMediaContent@@QAE@ABVQUrl@@@Z @ 276 NONAME ; QMediaContent::QMediaContent(class QUrl const &) + ??0QMediaContent@@QAE@XZ @ 277 NONAME ; QMediaContent::QMediaContent(void) + ??0QMediaControl@@IAE@AAVQMediaControlPrivate@@PAVQObject@@@Z @ 278 NONAME ; QMediaControl::QMediaControl(class QMediaControlPrivate &, class QObject *) + ??0QMediaControl@@IAE@PAVQObject@@@Z @ 279 NONAME ; QMediaControl::QMediaControl(class QObject *) + ??0QMediaObject@@IAE@AAVQMediaObjectPrivate@@PAVQObject@@PAVQMediaService@@@Z @ 280 NONAME ; QMediaObject::QMediaObject(class QMediaObjectPrivate &, class QObject *, class QMediaService *) + ??0QMediaObject@@IAE@PAVQObject@@PAVQMediaService@@@Z @ 281 NONAME ; QMediaObject::QMediaObject(class QObject *, class QMediaService *) + ??0QMediaPlayer@@QAE@PAVQObject@@V?$QFlags@W4Flag@QMediaPlayer@@@@PAVQMediaServiceProvider@@@Z @ 282 NONAME ; QMediaPlayer::QMediaPlayer(class QObject *, class QFlags, class QMediaServiceProvider *) + ??0QMediaPlayerControl@@IAE@PAVQObject@@@Z @ 283 NONAME ; QMediaPlayerControl::QMediaPlayerControl(class QObject *) + ??0QMediaPlaylist@@QAE@PAVQObject@@@Z @ 284 NONAME ; QMediaPlaylist::QMediaPlaylist(class QObject *) + ??0QMediaPlaylistControl@@IAE@PAVQObject@@@Z @ 285 NONAME ; QMediaPlaylistControl::QMediaPlaylistControl(class QObject *) + ??0QMediaPlaylistIOPlugin@@QAE@PAVQObject@@@Z @ 286 NONAME ; QMediaPlaylistIOPlugin::QMediaPlaylistIOPlugin(class QObject *) + ??0QMediaPlaylistNavigator@@QAE@PAVQMediaPlaylistProvider@@PAVQObject@@@Z @ 287 NONAME ; QMediaPlaylistNavigator::QMediaPlaylistNavigator(class QMediaPlaylistProvider *, class QObject *) + ??0QMediaPlaylistProvider@@IAE@AAVQMediaPlaylistProviderPrivate@@PAVQObject@@@Z @ 288 NONAME ; QMediaPlaylistProvider::QMediaPlaylistProvider(class QMediaPlaylistProviderPrivate &, class QObject *) + ??0QMediaPlaylistProvider@@QAE@PAVQObject@@@Z @ 289 NONAME ; QMediaPlaylistProvider::QMediaPlaylistProvider(class QObject *) + ??0QMediaResource@@QAE@ABV0@@Z @ 290 NONAME ; QMediaResource::QMediaResource(class QMediaResource const &) + ??0QMediaResource@@QAE@ABVQNetworkRequest@@ABVQString@@@Z @ 291 NONAME ; QMediaResource::QMediaResource(class QNetworkRequest const &, class QString const &) + ??0QMediaResource@@QAE@ABVQUrl@@ABVQString@@@Z @ 292 NONAME ; QMediaResource::QMediaResource(class QUrl const &, class QString const &) + ??0QMediaResource@@QAE@XZ @ 293 NONAME ; QMediaResource::QMediaResource(void) + ??0QMediaService@@IAE@AAVQMediaServicePrivate@@PAVQObject@@@Z @ 294 NONAME ; QMediaService::QMediaService(class QMediaServicePrivate &, class QObject *) + ??0QMediaService@@IAE@PAVQObject@@@Z @ 295 NONAME ; QMediaService::QMediaService(class QObject *) + ??0QMediaServiceProviderHint@@QAE@ABV0@@Z @ 296 NONAME ; QMediaServiceProviderHint::QMediaServiceProviderHint(class QMediaServiceProviderHint const &) + ??0QMediaServiceProviderHint@@QAE@ABVQByteArray@@@Z @ 297 NONAME ; QMediaServiceProviderHint::QMediaServiceProviderHint(class QByteArray const &) + ??0QMediaServiceProviderHint@@QAE@ABVQString@@ABVQStringList@@@Z @ 298 NONAME ; QMediaServiceProviderHint::QMediaServiceProviderHint(class QString const &, class QStringList const &) + ??0QMediaServiceProviderHint@@QAE@V?$QFlags@W4Feature@QMediaServiceProviderHint@@@@@Z @ 299 NONAME ; QMediaServiceProviderHint::QMediaServiceProviderHint(class QFlags) + ??0QMediaServiceProviderHint@@QAE@XZ @ 300 NONAME ; QMediaServiceProviderHint::QMediaServiceProviderHint(void) + ??0QMediaTimeInterval@@QAE@ABV0@@Z @ 301 NONAME ; QMediaTimeInterval::QMediaTimeInterval(class QMediaTimeInterval const &) + ??0QMediaTimeInterval@@QAE@XZ @ 302 NONAME ; QMediaTimeInterval::QMediaTimeInterval(void) + ??0QMediaTimeInterval@@QAE@_J0@Z @ 303 NONAME ; QMediaTimeInterval::QMediaTimeInterval(long long, long long) + ??0QMediaTimeRange@@QAE@ABV0@@Z @ 304 NONAME ; QMediaTimeRange::QMediaTimeRange(class QMediaTimeRange const &) + ??0QMediaTimeRange@@QAE@ABVQMediaTimeInterval@@@Z @ 305 NONAME ; QMediaTimeRange::QMediaTimeRange(class QMediaTimeInterval const &) + ??0QMediaTimeRange@@QAE@XZ @ 306 NONAME ; QMediaTimeRange::QMediaTimeRange(void) + ??0QMediaTimeRange@@QAE@_J0@Z @ 307 NONAME ; QMediaTimeRange::QMediaTimeRange(long long, long long) + ??0QMetaDataControl@@IAE@PAVQObject@@@Z @ 308 NONAME ; QMetaDataControl::QMetaDataControl(class QObject *) + ??0QPainterVideoSurface@@QAE@PAVQObject@@@Z @ 309 NONAME ; QPainterVideoSurface::QPainterVideoSurface(class QObject *) + ??0QVideoDeviceControl@@IAE@PAVQObject@@@Z @ 310 NONAME ; QVideoDeviceControl::QVideoDeviceControl(class QObject *) + ??0QVideoOutputControl@@IAE@PAVQObject@@@Z @ 311 NONAME ; QVideoOutputControl::QVideoOutputControl(class QObject *) + ??0QVideoRendererControl@@IAE@PAVQObject@@@Z @ 312 NONAME ; QVideoRendererControl::QVideoRendererControl(class QObject *) + ??0QVideoWidget@@QAE@PAVQWidget@@@Z @ 313 NONAME ; QVideoWidget::QVideoWidget(class QWidget *) + ??0QVideoWidgetControl@@IAE@PAVQObject@@@Z @ 314 NONAME ; QVideoWidgetControl::QVideoWidgetControl(class QObject *) + ??0QVideoWindowControl@@IAE@PAVQObject@@@Z @ 315 NONAME ; QVideoWindowControl::QVideoWindowControl(class QObject *) + ??1QGraphicsVideoItem@@UAE@XZ @ 316 NONAME ; QGraphicsVideoItem::~QGraphicsVideoItem(void) + ??1QLocalMediaPlaylistProvider@@UAE@XZ @ 317 NONAME ; QLocalMediaPlaylistProvider::~QLocalMediaPlaylistProvider(void) + ??1QMediaContent@@QAE@XZ @ 318 NONAME ; QMediaContent::~QMediaContent(void) + ??1QMediaControl@@UAE@XZ @ 319 NONAME ; QMediaControl::~QMediaControl(void) + ??1QMediaObject@@UAE@XZ @ 320 NONAME ; QMediaObject::~QMediaObject(void) + ??1QMediaPlayer@@UAE@XZ @ 321 NONAME ; QMediaPlayer::~QMediaPlayer(void) + ??1QMediaPlayerControl@@UAE@XZ @ 322 NONAME ; QMediaPlayerControl::~QMediaPlayerControl(void) + ??1QMediaPlaylist@@UAE@XZ @ 323 NONAME ; QMediaPlaylist::~QMediaPlaylist(void) + ??1QMediaPlaylistControl@@UAE@XZ @ 324 NONAME ; QMediaPlaylistControl::~QMediaPlaylistControl(void) + ??1QMediaPlaylistIOInterface@@UAE@XZ @ 325 NONAME ; QMediaPlaylistIOInterface::~QMediaPlaylistIOInterface(void) + ??1QMediaPlaylistIOPlugin@@UAE@XZ @ 326 NONAME ; QMediaPlaylistIOPlugin::~QMediaPlaylistIOPlugin(void) + ??1QMediaPlaylistNavigator@@UAE@XZ @ 327 NONAME ; QMediaPlaylistNavigator::~QMediaPlaylistNavigator(void) + ??1QMediaPlaylistProvider@@UAE@XZ @ 328 NONAME ; QMediaPlaylistProvider::~QMediaPlaylistProvider(void) + ??1QMediaPlaylistReader@@UAE@XZ @ 329 NONAME ; QMediaPlaylistReader::~QMediaPlaylistReader(void) + ??1QMediaPlaylistWriter@@UAE@XZ @ 330 NONAME ; QMediaPlaylistWriter::~QMediaPlaylistWriter(void) + ??1QMediaResource@@QAE@XZ @ 331 NONAME ; QMediaResource::~QMediaResource(void) + ??1QMediaService@@UAE@XZ @ 332 NONAME ; QMediaService::~QMediaService(void) + ??1QMediaServiceFeaturesInterface@@UAE@XZ @ 333 NONAME ; QMediaServiceFeaturesInterface::~QMediaServiceFeaturesInterface(void) + ??1QMediaServiceProvider@@UAE@XZ @ 334 NONAME ; QMediaServiceProvider::~QMediaServiceProvider(void) + ??1QMediaServiceProviderHint@@QAE@XZ @ 335 NONAME ; QMediaServiceProviderHint::~QMediaServiceProviderHint(void) + ??1QMediaServiceSupportedDevicesInterface@@UAE@XZ @ 336 NONAME ; QMediaServiceSupportedDevicesInterface::~QMediaServiceSupportedDevicesInterface(void) + ??1QMediaServiceSupportedFormatsInterface@@UAE@XZ @ 337 NONAME ; QMediaServiceSupportedFormatsInterface::~QMediaServiceSupportedFormatsInterface(void) + ??1QMediaTimeRange@@QAE@XZ @ 338 NONAME ; QMediaTimeRange::~QMediaTimeRange(void) + ??1QMetaDataControl@@UAE@XZ @ 339 NONAME ; QMetaDataControl::~QMetaDataControl(void) + ??1QPainterVideoSurface@@UAE@XZ @ 340 NONAME ; QPainterVideoSurface::~QPainterVideoSurface(void) + ??1QVideoDeviceControl@@UAE@XZ @ 341 NONAME ; QVideoDeviceControl::~QVideoDeviceControl(void) + ??1QVideoOutputControl@@UAE@XZ @ 342 NONAME ; QVideoOutputControl::~QVideoOutputControl(void) + ??1QVideoRendererControl@@UAE@XZ @ 343 NONAME ; QVideoRendererControl::~QVideoRendererControl(void) + ??1QVideoWidget@@UAE@XZ @ 344 NONAME ; QVideoWidget::~QVideoWidget(void) + ??1QVideoWidgetControl@@UAE@XZ @ 345 NONAME ; QVideoWidgetControl::~QVideoWidgetControl(void) + ??1QVideoWindowControl@@UAE@XZ @ 346 NONAME ; QVideoWindowControl::~QVideoWindowControl(void) + ??4QMediaContent@@QAEAAV0@ABV0@@Z @ 347 NONAME ; class QMediaContent & QMediaContent::operator=(class QMediaContent const &) + ??4QMediaResource@@QAEAAV0@ABV0@@Z @ 348 NONAME ; class QMediaResource & QMediaResource::operator=(class QMediaResource const &) + ??4QMediaServiceProviderHint@@QAEAAV0@ABV0@@Z @ 349 NONAME ; class QMediaServiceProviderHint & QMediaServiceProviderHint::operator=(class QMediaServiceProviderHint const &) + ??4QMediaTimeRange@@QAEAAV0@ABV0@@Z @ 350 NONAME ; class QMediaTimeRange & QMediaTimeRange::operator=(class QMediaTimeRange const &) + ??4QMediaTimeRange@@QAEAAV0@ABVQMediaTimeInterval@@@Z @ 351 NONAME ; class QMediaTimeRange & QMediaTimeRange::operator=(class QMediaTimeInterval const &) + ??8@YA_NABVQMediaTimeInterval@@0@Z @ 352 NONAME ; bool operator==(class QMediaTimeInterval const &, class QMediaTimeInterval const &) + ??8@YA_NABVQMediaTimeRange@@0@Z @ 353 NONAME ; bool operator==(class QMediaTimeRange const &, class QMediaTimeRange const &) + ??8QMediaContent@@QBE_NABV0@@Z @ 354 NONAME ; bool QMediaContent::operator==(class QMediaContent const &) const + ??8QMediaResource@@QBE_NABV0@@Z @ 355 NONAME ; bool QMediaResource::operator==(class QMediaResource const &) const + ??8QMediaServiceProviderHint@@QBE_NABV0@@Z @ 356 NONAME ; bool QMediaServiceProviderHint::operator==(class QMediaServiceProviderHint const &) const + ??9@YA_NABVQMediaTimeInterval@@0@Z @ 357 NONAME ; bool operator!=(class QMediaTimeInterval const &, class QMediaTimeInterval const &) + ??9@YA_NABVQMediaTimeRange@@0@Z @ 358 NONAME ; bool operator!=(class QMediaTimeRange const &, class QMediaTimeRange const &) + ??9QMediaContent@@QBE_NABV0@@Z @ 359 NONAME ; bool QMediaContent::operator!=(class QMediaContent const &) const + ??9QMediaResource@@QBE_NABV0@@Z @ 360 NONAME ; bool QMediaResource::operator!=(class QMediaResource const &) const + ??9QMediaServiceProviderHint@@QBE_NABV0@@Z @ 361 NONAME ; bool QMediaServiceProviderHint::operator!=(class QMediaServiceProviderHint const &) const + ??G@YA?AVQMediaTimeRange@@ABV0@0@Z @ 362 NONAME ; class QMediaTimeRange operator-(class QMediaTimeRange const &, class QMediaTimeRange const &) + ??H@YA?AVQMediaTimeRange@@ABV0@0@Z @ 363 NONAME ; class QMediaTimeRange operator+(class QMediaTimeRange const &, class QMediaTimeRange const &) + ??YQMediaTimeRange@@QAEAAV0@ABV0@@Z @ 364 NONAME ; class QMediaTimeRange & QMediaTimeRange::operator+=(class QMediaTimeRange const &) + ??YQMediaTimeRange@@QAEAAV0@ABVQMediaTimeInterval@@@Z @ 365 NONAME ; class QMediaTimeRange & QMediaTimeRange::operator+=(class QMediaTimeInterval const &) + ??ZQMediaTimeRange@@QAEAAV0@ABV0@@Z @ 366 NONAME ; class QMediaTimeRange & QMediaTimeRange::operator-=(class QMediaTimeRange const &) + ??ZQMediaTimeRange@@QAEAAV0@ABVQMediaTimeInterval@@@Z @ 367 NONAME ; class QMediaTimeRange & QMediaTimeRange::operator-=(class QMediaTimeInterval const &) + ??_EQGraphicsVideoItem@@UAE@I@Z @ 368 NONAME ; QGraphicsVideoItem::~QGraphicsVideoItem(unsigned int) + ??_EQLocalMediaPlaylistProvider@@UAE@I@Z @ 369 NONAME ; QLocalMediaPlaylistProvider::~QLocalMediaPlaylistProvider(unsigned int) + ??_EQMediaControl@@UAE@I@Z @ 370 NONAME ; QMediaControl::~QMediaControl(unsigned int) + ??_EQMediaObject@@UAE@I@Z @ 371 NONAME ; QMediaObject::~QMediaObject(unsigned int) + ??_EQMediaPlayer@@UAE@I@Z @ 372 NONAME ; QMediaPlayer::~QMediaPlayer(unsigned int) + ??_EQMediaPlayerControl@@UAE@I@Z @ 373 NONAME ; QMediaPlayerControl::~QMediaPlayerControl(unsigned int) + ??_EQMediaPlaylist@@UAE@I@Z @ 374 NONAME ; QMediaPlaylist::~QMediaPlaylist(unsigned int) + ??_EQMediaPlaylistControl@@UAE@I@Z @ 375 NONAME ; QMediaPlaylistControl::~QMediaPlaylistControl(unsigned int) + ??_EQMediaPlaylistIOInterface@@UAE@I@Z @ 376 NONAME ; QMediaPlaylistIOInterface::~QMediaPlaylistIOInterface(unsigned int) + ??_EQMediaPlaylistIOPlugin@@UAE@I@Z @ 377 NONAME ; QMediaPlaylistIOPlugin::~QMediaPlaylistIOPlugin(unsigned int) + ??_EQMediaPlaylistNavigator@@UAE@I@Z @ 378 NONAME ; QMediaPlaylistNavigator::~QMediaPlaylistNavigator(unsigned int) + ??_EQMediaPlaylistProvider@@UAE@I@Z @ 379 NONAME ; QMediaPlaylistProvider::~QMediaPlaylistProvider(unsigned int) + ??_EQMediaPlaylistReader@@UAE@I@Z @ 380 NONAME ; QMediaPlaylistReader::~QMediaPlaylistReader(unsigned int) + ??_EQMediaPlaylistWriter@@UAE@I@Z @ 381 NONAME ; QMediaPlaylistWriter::~QMediaPlaylistWriter(unsigned int) + ??_EQMediaService@@UAE@I@Z @ 382 NONAME ; QMediaService::~QMediaService(unsigned int) + ??_EQMediaServiceFeaturesInterface@@UAE@I@Z @ 383 NONAME ; QMediaServiceFeaturesInterface::~QMediaServiceFeaturesInterface(unsigned int) + ??_EQMediaServiceProvider@@UAE@I@Z @ 384 NONAME ; QMediaServiceProvider::~QMediaServiceProvider(unsigned int) + ??_EQMediaServiceSupportedDevicesInterface@@UAE@I@Z @ 385 NONAME ; QMediaServiceSupportedDevicesInterface::~QMediaServiceSupportedDevicesInterface(unsigned int) + ??_EQMediaServiceSupportedFormatsInterface@@UAE@I@Z @ 386 NONAME ; QMediaServiceSupportedFormatsInterface::~QMediaServiceSupportedFormatsInterface(unsigned int) + ??_EQMetaDataControl@@UAE@I@Z @ 387 NONAME ; QMetaDataControl::~QMetaDataControl(unsigned int) + ??_EQPainterVideoSurface@@UAE@I@Z @ 388 NONAME ; QPainterVideoSurface::~QPainterVideoSurface(unsigned int) + ??_EQVideoDeviceControl@@UAE@I@Z @ 389 NONAME ; QVideoDeviceControl::~QVideoDeviceControl(unsigned int) + ??_EQVideoOutputControl@@UAE@I@Z @ 390 NONAME ; QVideoOutputControl::~QVideoOutputControl(unsigned int) + ??_EQVideoRendererControl@@UAE@I@Z @ 391 NONAME ; QVideoRendererControl::~QVideoRendererControl(unsigned int) + ??_EQVideoWidget@@UAE@I@Z @ 392 NONAME ; QVideoWidget::~QVideoWidget(unsigned int) + ??_EQVideoWidgetControl@@UAE@I@Z @ 393 NONAME ; QVideoWidgetControl::~QVideoWidgetControl(unsigned int) + ??_EQVideoWindowControl@@UAE@I@Z @ 394 NONAME ; QVideoWindowControl::~QVideoWindowControl(unsigned int) + ?activated@QMediaPlaylistNavigator@@IAEXABVQMediaContent@@@Z @ 395 NONAME ; void QMediaPlaylistNavigator::activated(class QMediaContent const &) + ?addInterval@QMediaTimeRange@@QAEXABVQMediaTimeInterval@@@Z @ 396 NONAME ; void QMediaTimeRange::addInterval(class QMediaTimeInterval const &) + ?addInterval@QMediaTimeRange@@QAEX_J0@Z @ 397 NONAME ; void QMediaTimeRange::addInterval(long long, long long) + ?addMedia@QLocalMediaPlaylistProvider@@UAE_NABV?$QList@VQMediaContent@@@@@Z @ 398 NONAME ; bool QLocalMediaPlaylistProvider::addMedia(class QList const &) + ?addMedia@QLocalMediaPlaylistProvider@@UAE_NABVQMediaContent@@@Z @ 399 NONAME ; bool QLocalMediaPlaylistProvider::addMedia(class QMediaContent const &) + ?addMedia@QMediaPlaylist@@QAE_NABV?$QList@VQMediaContent@@@@@Z @ 400 NONAME ; bool QMediaPlaylist::addMedia(class QList const &) + ?addMedia@QMediaPlaylist@@QAE_NABVQMediaContent@@@Z @ 401 NONAME ; bool QMediaPlaylist::addMedia(class QMediaContent const &) + ?addMedia@QMediaPlaylistProvider@@UAE_NABV?$QList@VQMediaContent@@@@@Z @ 402 NONAME ; bool QMediaPlaylistProvider::addMedia(class QList const &) + ?addMedia@QMediaPlaylistProvider@@UAE_NABVQMediaContent@@@Z @ 403 NONAME ; bool QMediaPlaylistProvider::addMedia(class QMediaContent const &) + ?addPropertyWatch@QMediaObject@@IAEXABVQByteArray@@@Z @ 404 NONAME ; void QMediaObject::addPropertyWatch(class QByteArray const &) + ?addTimeRange@QMediaTimeRange@@QAEXABV1@@Z @ 405 NONAME ; void QMediaTimeRange::addTimeRange(class QMediaTimeRange const &) + ?aspectRatioMode@QGraphicsVideoItem@@QBE?AW4AspectRatioMode@Qt@@XZ @ 406 NONAME ; enum Qt::AspectRatioMode QGraphicsVideoItem::aspectRatioMode(void) const + ?aspectRatioMode@QVideoWidget@@QBE?AW4AspectRatioMode@1@XZ @ 407 NONAME ; enum QVideoWidget::AspectRatioMode QVideoWidget::aspectRatioMode(void) const + ?audioAvailableChanged@QMediaPlayer@@IAEX_N@Z @ 408 NONAME ; void QMediaPlayer::audioAvailableChanged(bool) + ?audioAvailableChanged@QMediaPlayerControl@@IAEX_N@Z @ 409 NONAME ; void QMediaPlayerControl::audioAvailableChanged(bool) + ?audioBitRate@QMediaResource@@QBEHXZ @ 410 NONAME ; int QMediaResource::audioBitRate(void) const + ?audioCodec@QMediaResource@@QBE?AVQString@@XZ @ 411 NONAME ; class QString QMediaResource::audioCodec(void) const + ?availabilityChanged@QMediaObject@@IAEX_N@Z @ 412 NONAME ; void QMediaObject::availabilityChanged(bool) + ?availabilityError@QMediaObject@@UBE?AW4AvailabilityError@QtMultimedia@@XZ @ 413 NONAME ; enum QtMultimedia::AvailabilityError QMediaObject::availabilityError(void) const + ?availableExtendedMetaData@QMediaObject@@QBE?AVQStringList@@XZ @ 414 NONAME ; class QStringList QMediaObject::availableExtendedMetaData(void) const + ?availableMetaData@QMediaObject@@QBE?AV?$QList@W4MetaData@QtMultimedia@@@@XZ @ 415 NONAME ; class QList QMediaObject::availableMetaData(void) const + ?availableOutputsChanged@QVideoOutputControl@@IAEXABV?$QList@W4Output@QVideoOutputControl@@@@@Z @ 416 NONAME ; void QVideoOutputControl::availableOutputsChanged(class QList const &) + ?availablePlaybackRangesChanged@QMediaPlayerControl@@IAEXABVQMediaTimeRange@@@Z @ 417 NONAME ; void QMediaPlayerControl::availablePlaybackRangesChanged(class QMediaTimeRange const &) + ?bind@QMediaObject@@UAEXPAVQObject@@@Z @ 418 NONAME ; void QMediaObject::bind(class QObject *) + ?bind@QMediaPlayer@@UAEXPAVQObject@@@Z @ 419 NONAME ; void QMediaPlayer::bind(class QObject *) + ?boundingRect@QGraphicsVideoItem@@UBE?AVQRectF@@XZ @ 420 NONAME ; class QRectF QGraphicsVideoItem::boundingRect(void) const + ?brightness@QPainterVideoSurface@@QBEHXZ @ 421 NONAME ; int QPainterVideoSurface::brightness(void) const + ?brightness@QVideoWidget@@QBEHXZ @ 422 NONAME ; int QVideoWidget::brightness(void) const + ?brightnessChanged@QVideoWidget@@IAEXH@Z @ 423 NONAME ; void QVideoWidget::brightnessChanged(int) + ?brightnessChanged@QVideoWidgetControl@@IAEXH@Z @ 424 NONAME ; void QVideoWidgetControl::brightnessChanged(int) + ?brightnessChanged@QVideoWindowControl@@IAEXH@Z @ 425 NONAME ; void QVideoWindowControl::brightnessChanged(int) + ?bufferStatus@QMediaPlayer@@QBEHXZ @ 426 NONAME ; int QMediaPlayer::bufferStatus(void) const + ?bufferStatusChanged@QMediaPlayer@@IAEXH@Z @ 427 NONAME ; void QMediaPlayer::bufferStatusChanged(int) + ?bufferStatusChanged@QMediaPlayerControl@@IAEXH@Z @ 428 NONAME ; void QMediaPlayerControl::bufferStatusChanged(int) + ?canonicalRequest@QMediaContent@@QBE?AVQNetworkRequest@@XZ @ 429 NONAME ; class QNetworkRequest QMediaContent::canonicalRequest(void) const + ?canonicalResource@QMediaContent@@QBE?AVQMediaResource@@XZ @ 430 NONAME ; class QMediaResource QMediaContent::canonicalResource(void) const + ?canonicalUrl@QMediaContent@@QBE?AVQUrl@@XZ @ 431 NONAME ; class QUrl QMediaContent::canonicalUrl(void) const + ?channelCount@QAudioFormat@@QBEHXZ @ 432 NONAME ; int QAudioFormat::channelCount(void) const + ?channelCount@QMediaResource@@QBEHXZ @ 433 NONAME ; int QMediaResource::channelCount(void) const + ?clear@QLocalMediaPlaylistProvider@@UAE_NXZ @ 434 NONAME ; bool QLocalMediaPlaylistProvider::clear(void) + ?clear@QMediaPlaylist@@QAE_NXZ @ 435 NONAME ; bool QMediaPlaylist::clear(void) + ?clear@QMediaPlaylistProvider@@UAE_NXZ @ 436 NONAME ; bool QMediaPlaylistProvider::clear(void) + ?clear@QMediaTimeRange@@QAEXXZ @ 437 NONAME ; void QMediaTimeRange::clear(void) + ?codecs@QMediaServiceProviderHint@@QBE?AVQStringList@@XZ @ 438 NONAME ; class QStringList QMediaServiceProviderHint::codecs(void) const + ?contains@QMediaTimeInterval@@QBE_N_J@Z @ 439 NONAME ; bool QMediaTimeInterval::contains(long long) const + ?contains@QMediaTimeRange@@QBE_N_J@Z @ 440 NONAME ; bool QMediaTimeRange::contains(long long) const + ?contrast@QPainterVideoSurface@@QBEHXZ @ 441 NONAME ; int QPainterVideoSurface::contrast(void) const + ?contrast@QVideoWidget@@QBEHXZ @ 442 NONAME ; int QVideoWidget::contrast(void) const + ?contrastChanged@QVideoWidget@@IAEXH@Z @ 443 NONAME ; void QVideoWidget::contrastChanged(int) + ?contrastChanged@QVideoWidgetControl@@IAEXH@Z @ 444 NONAME ; void QVideoWidgetControl::contrastChanged(int) + ?contrastChanged@QVideoWindowControl@@IAEXH@Z @ 445 NONAME ; void QVideoWindowControl::contrastChanged(int) + ?createPainter@QPainterVideoSurface@@AAEXXZ @ 446 NONAME ; void QPainterVideoSurface::createPainter(void) + ?currentIndex@QMediaPlaylist@@QBEHXZ @ 447 NONAME ; int QMediaPlaylist::currentIndex(void) const + ?currentIndex@QMediaPlaylistNavigator@@QBEHXZ @ 448 NONAME ; int QMediaPlaylistNavigator::currentIndex(void) const + ?currentIndexChanged@QMediaPlaylist@@IAEXH@Z @ 449 NONAME ; void QMediaPlaylist::currentIndexChanged(int) + ?currentIndexChanged@QMediaPlaylistControl@@IAEXH@Z @ 450 NONAME ; void QMediaPlaylistControl::currentIndexChanged(int) + ?currentIndexChanged@QMediaPlaylistNavigator@@IAEXH@Z @ 451 NONAME ; void QMediaPlaylistNavigator::currentIndexChanged(int) + ?currentItem@QMediaPlaylistNavigator@@QBE?AVQMediaContent@@XZ @ 452 NONAME ; class QMediaContent QMediaPlaylistNavigator::currentItem(void) const + ?currentMedia@QMediaPlaylist@@QBE?AVQMediaContent@@XZ @ 453 NONAME ; class QMediaContent QMediaPlaylist::currentMedia(void) const + ?currentMediaChanged@QMediaPlaylist@@IAEXABVQMediaContent@@@Z @ 454 NONAME ; void QMediaPlaylist::currentMediaChanged(class QMediaContent const &) + ?currentMediaChanged@QMediaPlaylistControl@@IAEXABVQMediaContent@@@Z @ 455 NONAME ; void QMediaPlaylistControl::currentMediaChanged(class QMediaContent const &) + ?d_func@QGraphicsVideoItem@@AAEPAVQGraphicsVideoItemPrivate@@XZ @ 456 NONAME ; class QGraphicsVideoItemPrivate * QGraphicsVideoItem::d_func(void) + ?d_func@QGraphicsVideoItem@@ABEPBVQGraphicsVideoItemPrivate@@XZ @ 457 NONAME ; class QGraphicsVideoItemPrivate const * QGraphicsVideoItem::d_func(void) const + ?d_func@QLocalMediaPlaylistProvider@@AAEPAVQLocalMediaPlaylistProviderPrivate@@XZ @ 458 NONAME ; class QLocalMediaPlaylistProviderPrivate * QLocalMediaPlaylistProvider::d_func(void) + ?d_func@QLocalMediaPlaylistProvider@@ABEPBVQLocalMediaPlaylistProviderPrivate@@XZ @ 459 NONAME ; class QLocalMediaPlaylistProviderPrivate const * QLocalMediaPlaylistProvider::d_func(void) const + ?d_func@QMediaControl@@AAEPAVQMediaControlPrivate@@XZ @ 460 NONAME ; class QMediaControlPrivate * QMediaControl::d_func(void) + ?d_func@QMediaControl@@ABEPBVQMediaControlPrivate@@XZ @ 461 NONAME ; class QMediaControlPrivate const * QMediaControl::d_func(void) const + ?d_func@QMediaObject@@AAEPAVQMediaObjectPrivate@@XZ @ 462 NONAME ; class QMediaObjectPrivate * QMediaObject::d_func(void) + ?d_func@QMediaObject@@ABEPBVQMediaObjectPrivate@@XZ @ 463 NONAME ; class QMediaObjectPrivate const * QMediaObject::d_func(void) const + ?d_func@QMediaPlayer@@AAEPAVQMediaPlayerPrivate@@XZ @ 464 NONAME ; class QMediaPlayerPrivate * QMediaPlayer::d_func(void) + ?d_func@QMediaPlayer@@ABEPBVQMediaPlayerPrivate@@XZ @ 465 NONAME ; class QMediaPlayerPrivate const * QMediaPlayer::d_func(void) const + ?d_func@QMediaPlaylist@@AAEPAVQMediaPlaylistPrivate@@XZ @ 466 NONAME ; class QMediaPlaylistPrivate * QMediaPlaylist::d_func(void) + ?d_func@QMediaPlaylist@@ABEPBVQMediaPlaylistPrivate@@XZ @ 467 NONAME ; class QMediaPlaylistPrivate const * QMediaPlaylist::d_func(void) const + ?d_func@QMediaPlaylistNavigator@@AAEPAVQMediaPlaylistNavigatorPrivate@@XZ @ 468 NONAME ; class QMediaPlaylistNavigatorPrivate * QMediaPlaylistNavigator::d_func(void) + ?d_func@QMediaPlaylistNavigator@@ABEPBVQMediaPlaylistNavigatorPrivate@@XZ @ 469 NONAME ; class QMediaPlaylistNavigatorPrivate const * QMediaPlaylistNavigator::d_func(void) const + ?d_func@QMediaPlaylistProvider@@AAEPAVQMediaPlaylistProviderPrivate@@XZ @ 470 NONAME ; class QMediaPlaylistProviderPrivate * QMediaPlaylistProvider::d_func(void) + ?d_func@QMediaPlaylistProvider@@ABEPBVQMediaPlaylistProviderPrivate@@XZ @ 471 NONAME ; class QMediaPlaylistProviderPrivate const * QMediaPlaylistProvider::d_func(void) const + ?d_func@QMediaService@@AAEPAVQMediaServicePrivate@@XZ @ 472 NONAME ; class QMediaServicePrivate * QMediaService::d_func(void) + ?d_func@QMediaService@@ABEPBVQMediaServicePrivate@@XZ @ 473 NONAME ; class QMediaServicePrivate const * QMediaService::d_func(void) const + ?d_func@QVideoWidget@@AAEPAVQVideoWidgetPrivate@@XZ @ 474 NONAME ; class QVideoWidgetPrivate * QVideoWidget::d_func(void) + ?d_func@QVideoWidget@@ABEPBVQVideoWidgetPrivate@@XZ @ 475 NONAME ; class QVideoWidgetPrivate const * QVideoWidget::d_func(void) const + ?dataSize@QMediaResource@@QBE_JXZ @ 476 NONAME ; long long QMediaResource::dataSize(void) const + ?defaultServiceProvider@QMediaServiceProvider@@SAPAV1@XZ @ 477 NONAME ; class QMediaServiceProvider * QMediaServiceProvider::defaultServiceProvider(void) + ?device@QMediaServiceProviderHint@@QBE?AVQByteArray@@XZ @ 478 NONAME ; class QByteArray QMediaServiceProviderHint::device(void) const + ?deviceDescription@QMediaServiceProvider@@UAE?AVQString@@ABVQByteArray@@0@Z @ 479 NONAME ; class QString QMediaServiceProvider::deviceDescription(class QByteArray const &, class QByteArray const &) + ?devices@QMediaServiceProvider@@UBE?AV?$QList@VQByteArray@@@@ABVQByteArray@@@Z @ 480 NONAME ; class QList QMediaServiceProvider::devices(class QByteArray const &) const + ?devicesChanged@QVideoDeviceControl@@IAEXXZ @ 481 NONAME ; void QVideoDeviceControl::devicesChanged(void) + ?duration@QMediaPlayer@@QBE_JXZ @ 482 NONAME ; long long QMediaPlayer::duration(void) const + ?durationChanged@QMediaPlayer@@IAEX_J@Z @ 483 NONAME ; void QMediaPlayer::durationChanged(long long) + ?durationChanged@QMediaPlayerControl@@IAEX_J@Z @ 484 NONAME ; void QMediaPlayerControl::durationChanged(long long) + ?earliestTime@QMediaTimeRange@@QBE_JXZ @ 485 NONAME ; long long QMediaTimeRange::earliestTime(void) const + ?end@QMediaTimeInterval@@QBE_JXZ @ 486 NONAME ; long long QMediaTimeInterval::end(void) const + ?error@QMediaPlayer@@IAEXW4Error@1@@Z @ 487 NONAME ; void QMediaPlayer::error(enum QMediaPlayer::Error) + ?error@QMediaPlayer@@QBE?AW4Error@1@XZ @ 488 NONAME ; enum QMediaPlayer::Error QMediaPlayer::error(void) const + ?error@QMediaPlayerControl@@IAEXHABVQString@@@Z @ 489 NONAME ; void QMediaPlayerControl::error(int, class QString const &) + ?error@QMediaPlaylist@@QBE?AW4Error@1@XZ @ 490 NONAME ; enum QMediaPlaylist::Error QMediaPlaylist::error(void) const + ?errorString@QMediaPlayer@@QBE?AVQString@@XZ @ 491 NONAME ; class QString QMediaPlayer::errorString(void) const + ?errorString@QMediaPlaylist@@QBE?AVQString@@XZ @ 492 NONAME ; class QString QMediaPlaylist::errorString(void) const + ?event@QVideoWidget@@MAE_NPAVQEvent@@@Z @ 493 NONAME ; bool QVideoWidget::event(class QEvent *) + ?extendedMetaData@QMediaObject@@QBE?AVQVariant@@ABVQString@@@Z @ 494 NONAME ; class QVariant QMediaObject::extendedMetaData(class QString const &) const + ?features@QMediaServiceProviderHint@@QBE?AV?$QFlags@W4Feature@QMediaServiceProviderHint@@@@XZ @ 495 NONAME ; class QFlags QMediaServiceProviderHint::features(void) const + ?frameChanged@QPainterVideoSurface@@IAEXXZ @ 496 NONAME ; void QPainterVideoSurface::frameChanged(void) + ?fullScreenChanged@QVideoWidget@@IAEX_N@Z @ 497 NONAME ; void QVideoWidget::fullScreenChanged(bool) + ?fullScreenChanged@QVideoWidgetControl@@IAEX_N@Z @ 498 NONAME ; void QVideoWidgetControl::fullScreenChanged(bool) + ?fullScreenChanged@QVideoWindowControl@@IAEX_N@Z @ 499 NONAME ; void QVideoWindowControl::fullScreenChanged(bool) + ?getStaticMetaObject@QGraphicsVideoItem@@SAABUQMetaObject@@XZ @ 500 NONAME ; struct QMetaObject const & QGraphicsVideoItem::getStaticMetaObject(void) + ?getStaticMetaObject@QLocalMediaPlaylistProvider@@SAABUQMetaObject@@XZ @ 501 NONAME ; struct QMetaObject const & QLocalMediaPlaylistProvider::getStaticMetaObject(void) + ?getStaticMetaObject@QMediaControl@@SAABUQMetaObject@@XZ @ 502 NONAME ; struct QMetaObject const & QMediaControl::getStaticMetaObject(void) + ?getStaticMetaObject@QMediaObject@@SAABUQMetaObject@@XZ @ 503 NONAME ; struct QMetaObject const & QMediaObject::getStaticMetaObject(void) + ?getStaticMetaObject@QMediaPlayer@@SAABUQMetaObject@@XZ @ 504 NONAME ; struct QMetaObject const & QMediaPlayer::getStaticMetaObject(void) + ?getStaticMetaObject@QMediaPlayerControl@@SAABUQMetaObject@@XZ @ 505 NONAME ; struct QMetaObject const & QMediaPlayerControl::getStaticMetaObject(void) + ?getStaticMetaObject@QMediaPlaylist@@SAABUQMetaObject@@XZ @ 506 NONAME ; struct QMetaObject const & QMediaPlaylist::getStaticMetaObject(void) + ?getStaticMetaObject@QMediaPlaylistControl@@SAABUQMetaObject@@XZ @ 507 NONAME ; struct QMetaObject const & QMediaPlaylistControl::getStaticMetaObject(void) + ?getStaticMetaObject@QMediaPlaylistIOPlugin@@SAABUQMetaObject@@XZ @ 508 NONAME ; struct QMetaObject const & QMediaPlaylistIOPlugin::getStaticMetaObject(void) + ?getStaticMetaObject@QMediaPlaylistNavigator@@SAABUQMetaObject@@XZ @ 509 NONAME ; struct QMetaObject const & QMediaPlaylistNavigator::getStaticMetaObject(void) + ?getStaticMetaObject@QMediaPlaylistProvider@@SAABUQMetaObject@@XZ @ 510 NONAME ; struct QMetaObject const & QMediaPlaylistProvider::getStaticMetaObject(void) + ?getStaticMetaObject@QMediaService@@SAABUQMetaObject@@XZ @ 511 NONAME ; struct QMetaObject const & QMediaService::getStaticMetaObject(void) + ?getStaticMetaObject@QMediaServiceProvider@@SAABUQMetaObject@@XZ @ 512 NONAME ; struct QMetaObject const & QMediaServiceProvider::getStaticMetaObject(void) + ?getStaticMetaObject@QMediaServiceProviderPlugin@@SAABUQMetaObject@@XZ @ 513 NONAME ; struct QMetaObject const & QMediaServiceProviderPlugin::getStaticMetaObject(void) + ?getStaticMetaObject@QMetaDataControl@@SAABUQMetaObject@@XZ @ 514 NONAME ; struct QMetaObject const & QMetaDataControl::getStaticMetaObject(void) + ?getStaticMetaObject@QPainterVideoSurface@@SAABUQMetaObject@@XZ @ 515 NONAME ; struct QMetaObject const & QPainterVideoSurface::getStaticMetaObject(void) + ?getStaticMetaObject@QVideoDeviceControl@@SAABUQMetaObject@@XZ @ 516 NONAME ; struct QMetaObject const & QVideoDeviceControl::getStaticMetaObject(void) + ?getStaticMetaObject@QVideoOutputControl@@SAABUQMetaObject@@XZ @ 517 NONAME ; struct QMetaObject const & QVideoOutputControl::getStaticMetaObject(void) + ?getStaticMetaObject@QVideoRendererControl@@SAABUQMetaObject@@XZ @ 518 NONAME ; struct QMetaObject const & QVideoRendererControl::getStaticMetaObject(void) + ?getStaticMetaObject@QVideoWidget@@SAABUQMetaObject@@XZ @ 519 NONAME ; struct QMetaObject const & QVideoWidget::getStaticMetaObject(void) + ?getStaticMetaObject@QVideoWidgetControl@@SAABUQMetaObject@@XZ @ 520 NONAME ; struct QMetaObject const & QVideoWidgetControl::getStaticMetaObject(void) + ?getStaticMetaObject@QVideoWindowControl@@SAABUQMetaObject@@XZ @ 521 NONAME ; struct QMetaObject const & QVideoWindowControl::getStaticMetaObject(void) + ?hasSupport@QMediaPlayer@@SA?AW4SupportEstimate@QtMultimedia@@ABVQString@@ABVQStringList@@V?$QFlags@W4Flag@QMediaPlayer@@@@@Z @ 522 NONAME ; enum QtMultimedia::SupportEstimate QMediaPlayer::hasSupport(class QString const &, class QStringList const &, class QFlags) + ?hasSupport@QMediaServiceProvider@@UBE?AW4SupportEstimate@QtMultimedia@@ABVQByteArray@@ABVQString@@ABVQStringList@@H@Z @ 523 NONAME ; enum QtMultimedia::SupportEstimate QMediaServiceProvider::hasSupport(class QByteArray const &, class QString const &, class QStringList const &, int) const + ?hideEvent@QVideoWidget@@MAEXPAVQHideEvent@@@Z @ 524 NONAME ; void QVideoWidget::hideEvent(class QHideEvent *) + ?hue@QPainterVideoSurface@@QBEHXZ @ 525 NONAME ; int QPainterVideoSurface::hue(void) const + ?hue@QVideoWidget@@QBEHXZ @ 526 NONAME ; int QVideoWidget::hue(void) const + ?hueChanged@QVideoWidget@@IAEXH@Z @ 527 NONAME ; void QVideoWidget::hueChanged(int) + ?hueChanged@QVideoWidgetControl@@IAEXH@Z @ 528 NONAME ; void QVideoWidgetControl::hueChanged(int) + ?hueChanged@QVideoWindowControl@@IAEXH@Z @ 529 NONAME ; void QVideoWindowControl::hueChanged(int) + ?insertMedia@QLocalMediaPlaylistProvider@@UAE_NHABV?$QList@VQMediaContent@@@@@Z @ 530 NONAME ; bool QLocalMediaPlaylistProvider::insertMedia(int, class QList const &) + ?insertMedia@QLocalMediaPlaylistProvider@@UAE_NHABVQMediaContent@@@Z @ 531 NONAME ; bool QLocalMediaPlaylistProvider::insertMedia(int, class QMediaContent const &) + ?insertMedia@QMediaPlaylist@@QAE_NHABV?$QList@VQMediaContent@@@@@Z @ 532 NONAME ; bool QMediaPlaylist::insertMedia(int, class QList const &) + ?insertMedia@QMediaPlaylist@@QAE_NHABVQMediaContent@@@Z @ 533 NONAME ; bool QMediaPlaylist::insertMedia(int, class QMediaContent const &) + ?insertMedia@QMediaPlaylistProvider@@UAE_NHABV?$QList@VQMediaContent@@@@@Z @ 534 NONAME ; bool QMediaPlaylistProvider::insertMedia(int, class QList const &) + ?insertMedia@QMediaPlaylistProvider@@UAE_NHABVQMediaContent@@@Z @ 535 NONAME ; bool QMediaPlaylistProvider::insertMedia(int, class QMediaContent const &) + ?intervals@QMediaTimeRange@@QBE?AV?$QList@VQMediaTimeInterval@@@@XZ @ 536 NONAME ; class QList QMediaTimeRange::intervals(void) const + ?isAudioAvailable@QMediaPlayer@@QBE_NXZ @ 537 NONAME ; bool QMediaPlayer::isAudioAvailable(void) const + ?isAvailable@QMediaObject@@UBE_NXZ @ 538 NONAME ; bool QMediaObject::isAvailable(void) const + ?isContinuous@QMediaTimeRange@@QBE_NXZ @ 539 NONAME ; bool QMediaTimeRange::isContinuous(void) const + ?isEmpty@QMediaPlaylist@@QBE_NXZ @ 540 NONAME ; bool QMediaPlaylist::isEmpty(void) const + ?isEmpty@QMediaTimeRange@@QBE_NXZ @ 541 NONAME ; bool QMediaTimeRange::isEmpty(void) const + ?isFormatSupported@QPainterVideoSurface@@QBE_NABVQVideoSurfaceFormat@@PAV2@@Z @ 542 NONAME ; bool QPainterVideoSurface::isFormatSupported(class QVideoSurfaceFormat const &, class QVideoSurfaceFormat *) const + ?isMetaDataAvailable@QMediaObject@@QBE_NXZ @ 543 NONAME ; bool QMediaObject::isMetaDataAvailable(void) const + ?isMetaDataWritable@QMediaObject@@QBE_NXZ @ 544 NONAME ; bool QMediaObject::isMetaDataWritable(void) const + ?isMuted@QMediaPlayer@@QBE_NXZ @ 545 NONAME ; bool QMediaPlayer::isMuted(void) const + ?isNormal@QMediaTimeInterval@@QBE_NXZ @ 546 NONAME ; bool QMediaTimeInterval::isNormal(void) const + ?isNull@QMediaContent@@QBE_NXZ @ 547 NONAME ; bool QMediaContent::isNull(void) const + ?isNull@QMediaResource@@QBE_NXZ @ 548 NONAME ; bool QMediaResource::isNull(void) const + ?isNull@QMediaServiceProviderHint@@QBE_NXZ @ 549 NONAME ; bool QMediaServiceProviderHint::isNull(void) const + ?isReadOnly@QLocalMediaPlaylistProvider@@UBE_NXZ @ 550 NONAME ; bool QLocalMediaPlaylistProvider::isReadOnly(void) const + ?isReadOnly@QMediaPlaylist@@QBE_NXZ @ 551 NONAME ; bool QMediaPlaylist::isReadOnly(void) const + ?isReadOnly@QMediaPlaylistProvider@@UBE_NXZ @ 552 NONAME ; bool QMediaPlaylistProvider::isReadOnly(void) const + ?isReady@QPainterVideoSurface@@QBE_NXZ @ 553 NONAME ; bool QPainterVideoSurface::isReady(void) const + ?isSeekable@QMediaPlayer@@QBE_NXZ @ 554 NONAME ; bool QMediaPlayer::isSeekable(void) const + ?isVideoAvailable@QMediaPlayer@@QBE_NXZ @ 555 NONAME ; bool QMediaPlayer::isVideoAvailable(void) const + ?itemAt@QMediaPlaylistNavigator@@QBE?AVQMediaContent@@H@Z @ 556 NONAME ; class QMediaContent QMediaPlaylistNavigator::itemAt(int) const + ?itemChange@QGraphicsVideoItem@@MAE?AVQVariant@@W4GraphicsItemChange@QGraphicsItem@@ABV2@@Z @ 557 NONAME ; class QVariant QGraphicsVideoItem::itemChange(enum QGraphicsItem::GraphicsItemChange, class QVariant const &) + ?jump@QMediaPlaylistNavigator@@QAEXH@Z @ 558 NONAME ; void QMediaPlaylistNavigator::jump(int) + ?language@QMediaResource@@QBE?AVQString@@XZ @ 559 NONAME ; class QString QMediaResource::language(void) const + ?latestTime@QMediaTimeRange@@QBE_JXZ @ 560 NONAME ; long long QMediaTimeRange::latestTime(void) const + ?load@QMediaPlaylist@@QAEXABVQUrl@@PBD@Z @ 561 NONAME ; void QMediaPlaylist::load(class QUrl const &, char const *) + ?load@QMediaPlaylist@@QAEXPAVQIODevice@@PBD@Z @ 562 NONAME ; void QMediaPlaylist::load(class QIODevice *, char const *) + ?load@QMediaPlaylistProvider@@UAE_NABVQUrl@@PBD@Z @ 563 NONAME ; bool QMediaPlaylistProvider::load(class QUrl const &, char const *) + ?load@QMediaPlaylistProvider@@UAE_NPAVQIODevice@@PBD@Z @ 564 NONAME ; bool QMediaPlaylistProvider::load(class QIODevice *, char const *) + ?loadFailed@QMediaPlaylist@@IAEXXZ @ 565 NONAME ; void QMediaPlaylist::loadFailed(void) + ?loadFailed@QMediaPlaylistProvider@@IAEXW4Error@QMediaPlaylist@@ABVQString@@@Z @ 566 NONAME ; void QMediaPlaylistProvider::loadFailed(enum QMediaPlaylist::Error, class QString const &) + ?loaded@QMediaPlaylist@@IAEXXZ @ 567 NONAME ; void QMediaPlaylist::loaded(void) + ?loaded@QMediaPlaylistProvider@@IAEXXZ @ 568 NONAME ; void QMediaPlaylistProvider::loaded(void) + ?media@QLocalMediaPlaylistProvider@@UBE?AVQMediaContent@@H@Z @ 569 NONAME ; class QMediaContent QLocalMediaPlaylistProvider::media(int) const + ?media@QMediaPlayer@@QBE?AVQMediaContent@@XZ @ 570 NONAME ; class QMediaContent QMediaPlayer::media(void) const + ?media@QMediaPlaylist@@QBE?AVQMediaContent@@H@Z @ 571 NONAME ; class QMediaContent QMediaPlaylist::media(int) const + ?mediaAboutToBeInserted@QMediaPlaylist@@IAEXHH@Z @ 572 NONAME ; void QMediaPlaylist::mediaAboutToBeInserted(int, int) + ?mediaAboutToBeInserted@QMediaPlaylistProvider@@IAEXHH@Z @ 573 NONAME ; void QMediaPlaylistProvider::mediaAboutToBeInserted(int, int) + ?mediaAboutToBeRemoved@QMediaPlaylist@@IAEXHH@Z @ 574 NONAME ; void QMediaPlaylist::mediaAboutToBeRemoved(int, int) + ?mediaAboutToBeRemoved@QMediaPlaylistProvider@@IAEXHH@Z @ 575 NONAME ; void QMediaPlaylistProvider::mediaAboutToBeRemoved(int, int) + ?mediaChanged@QMediaPlayer@@IAEXABVQMediaContent@@@Z @ 576 NONAME ; void QMediaPlayer::mediaChanged(class QMediaContent const &) + ?mediaChanged@QMediaPlayerControl@@IAEXABVQMediaContent@@@Z @ 577 NONAME ; void QMediaPlayerControl::mediaChanged(class QMediaContent const &) + ?mediaChanged@QMediaPlaylist@@IAEXHH@Z @ 578 NONAME ; void QMediaPlaylist::mediaChanged(int, int) + ?mediaChanged@QMediaPlaylistProvider@@IAEXHH@Z @ 579 NONAME ; void QMediaPlaylistProvider::mediaChanged(int, int) + ?mediaCount@QLocalMediaPlaylistProvider@@UBEHXZ @ 580 NONAME ; int QLocalMediaPlaylistProvider::mediaCount(void) const + ?mediaCount@QMediaPlaylist@@QBEHXZ @ 581 NONAME ; int QMediaPlaylist::mediaCount(void) const + ?mediaInserted@QMediaPlaylist@@IAEXHH@Z @ 582 NONAME ; void QMediaPlaylist::mediaInserted(int, int) + ?mediaInserted@QMediaPlaylistProvider@@IAEXHH@Z @ 583 NONAME ; void QMediaPlaylistProvider::mediaInserted(int, int) + ?mediaObject@QGraphicsVideoItem@@QBEPAVQMediaObject@@XZ @ 584 NONAME ; class QMediaObject * QGraphicsVideoItem::mediaObject(void) const + ?mediaObject@QMediaPlaylist@@QBEPAVQMediaObject@@XZ @ 585 NONAME ; class QMediaObject * QMediaPlaylist::mediaObject(void) const + ?mediaObject@QVideoWidget@@QBEPAVQMediaObject@@XZ @ 586 NONAME ; class QMediaObject * QVideoWidget::mediaObject(void) const + ?mediaRemoved@QMediaPlaylist@@IAEXHH@Z @ 587 NONAME ; void QMediaPlaylist::mediaRemoved(int, int) + ?mediaRemoved@QMediaPlaylistProvider@@IAEXHH@Z @ 588 NONAME ; void QMediaPlaylistProvider::mediaRemoved(int, int) + ?mediaStatus@QMediaPlayer@@QBE?AW4MediaStatus@1@XZ @ 589 NONAME ; enum QMediaPlayer::MediaStatus QMediaPlayer::mediaStatus(void) const + ?mediaStatusChanged@QMediaPlayer@@IAEXW4MediaStatus@1@@Z @ 590 NONAME ; void QMediaPlayer::mediaStatusChanged(enum QMediaPlayer::MediaStatus) + ?mediaStatusChanged@QMediaPlayerControl@@IAEXW4MediaStatus@QMediaPlayer@@@Z @ 591 NONAME ; void QMediaPlayerControl::mediaStatusChanged(enum QMediaPlayer::MediaStatus) + ?mediaStream@QMediaPlayer@@QBEPBVQIODevice@@XZ @ 592 NONAME ; class QIODevice const * QMediaPlayer::mediaStream(void) const + ?metaData@QMediaObject@@QBE?AVQVariant@@W4MetaData@QtMultimedia@@@Z @ 593 NONAME ; class QVariant QMediaObject::metaData(enum QtMultimedia::MetaData) const + ?metaDataAvailableChanged@QMediaObject@@IAEX_N@Z @ 594 NONAME ; void QMediaObject::metaDataAvailableChanged(bool) + ?metaDataAvailableChanged@QMetaDataControl@@IAEX_N@Z @ 595 NONAME ; void QMetaDataControl::metaDataAvailableChanged(bool) + ?metaDataChanged@QMediaObject@@IAEXXZ @ 596 NONAME ; void QMediaObject::metaDataChanged(void) + ?metaDataChanged@QMetaDataControl@@IAEXXZ @ 597 NONAME ; void QMetaDataControl::metaDataChanged(void) + ?metaDataWritableChanged@QMediaObject@@IAEX_N@Z @ 598 NONAME ; void QMediaObject::metaDataWritableChanged(bool) + ?metaObject@QGraphicsVideoItem@@UBEPBUQMetaObject@@XZ @ 599 NONAME ; struct QMetaObject const * QGraphicsVideoItem::metaObject(void) const + ?metaObject@QLocalMediaPlaylistProvider@@UBEPBUQMetaObject@@XZ @ 600 NONAME ; struct QMetaObject const * QLocalMediaPlaylistProvider::metaObject(void) const + ?metaObject@QMediaControl@@UBEPBUQMetaObject@@XZ @ 601 NONAME ; struct QMetaObject const * QMediaControl::metaObject(void) const + ?metaObject@QMediaObject@@UBEPBUQMetaObject@@XZ @ 602 NONAME ; struct QMetaObject const * QMediaObject::metaObject(void) const + ?metaObject@QMediaPlayer@@UBEPBUQMetaObject@@XZ @ 603 NONAME ; struct QMetaObject const * QMediaPlayer::metaObject(void) const + ?metaObject@QMediaPlayerControl@@UBEPBUQMetaObject@@XZ @ 604 NONAME ; struct QMetaObject const * QMediaPlayerControl::metaObject(void) const + ?metaObject@QMediaPlaylist@@UBEPBUQMetaObject@@XZ @ 605 NONAME ; struct QMetaObject const * QMediaPlaylist::metaObject(void) const + ?metaObject@QMediaPlaylistControl@@UBEPBUQMetaObject@@XZ @ 606 NONAME ; struct QMetaObject const * QMediaPlaylistControl::metaObject(void) const + ?metaObject@QMediaPlaylistIOPlugin@@UBEPBUQMetaObject@@XZ @ 607 NONAME ; struct QMetaObject const * QMediaPlaylistIOPlugin::metaObject(void) const + ?metaObject@QMediaPlaylistNavigator@@UBEPBUQMetaObject@@XZ @ 608 NONAME ; struct QMetaObject const * QMediaPlaylistNavigator::metaObject(void) const + ?metaObject@QMediaPlaylistProvider@@UBEPBUQMetaObject@@XZ @ 609 NONAME ; struct QMetaObject const * QMediaPlaylistProvider::metaObject(void) const + ?metaObject@QMediaService@@UBEPBUQMetaObject@@XZ @ 610 NONAME ; struct QMetaObject const * QMediaService::metaObject(void) const + ?metaObject@QMediaServiceProvider@@UBEPBUQMetaObject@@XZ @ 611 NONAME ; struct QMetaObject const * QMediaServiceProvider::metaObject(void) const + ?metaObject@QMediaServiceProviderPlugin@@UBEPBUQMetaObject@@XZ @ 612 NONAME ; struct QMetaObject const * QMediaServiceProviderPlugin::metaObject(void) const + ?metaObject@QMetaDataControl@@UBEPBUQMetaObject@@XZ @ 613 NONAME ; struct QMetaObject const * QMetaDataControl::metaObject(void) const + ?metaObject@QPainterVideoSurface@@UBEPBUQMetaObject@@XZ @ 614 NONAME ; struct QMetaObject const * QPainterVideoSurface::metaObject(void) const + ?metaObject@QVideoDeviceControl@@UBEPBUQMetaObject@@XZ @ 615 NONAME ; struct QMetaObject const * QVideoDeviceControl::metaObject(void) const + ?metaObject@QVideoOutputControl@@UBEPBUQMetaObject@@XZ @ 616 NONAME ; struct QMetaObject const * QVideoOutputControl::metaObject(void) const + ?metaObject@QVideoRendererControl@@UBEPBUQMetaObject@@XZ @ 617 NONAME ; struct QMetaObject const * QVideoRendererControl::metaObject(void) const + ?metaObject@QVideoWidget@@UBEPBUQMetaObject@@XZ @ 618 NONAME ; struct QMetaObject const * QVideoWidget::metaObject(void) const + ?metaObject@QVideoWidgetControl@@UBEPBUQMetaObject@@XZ @ 619 NONAME ; struct QMetaObject const * QVideoWidgetControl::metaObject(void) const + ?metaObject@QVideoWindowControl@@UBEPBUQMetaObject@@XZ @ 620 NONAME ; struct QMetaObject const * QVideoWindowControl::metaObject(void) const + ?mimeType@QMediaResource@@QBE?AVQString@@XZ @ 621 NONAME ; class QString QMediaResource::mimeType(void) const + ?mimeType@QMediaServiceProviderHint@@QBE?AVQString@@XZ @ 622 NONAME ; class QString QMediaServiceProviderHint::mimeType(void) const + ?moveEvent@QVideoWidget@@MAEXPAVQMoveEvent@@@Z @ 623 NONAME ; void QVideoWidget::moveEvent(class QMoveEvent *) + ?mutedChanged@QMediaPlayer@@IAEX_N@Z @ 624 NONAME ; void QMediaPlayer::mutedChanged(bool) + ?mutedChanged@QMediaPlayerControl@@IAEX_N@Z @ 625 NONAME ; void QMediaPlayerControl::mutedChanged(bool) + ?nativeSize@QGraphicsVideoItem@@QBE?AVQSizeF@@XZ @ 626 NONAME ; class QSizeF QGraphicsVideoItem::nativeSize(void) const + ?nativeSizeChanged@QGraphicsVideoItem@@IAEXABVQSizeF@@@Z @ 627 NONAME ; void QGraphicsVideoItem::nativeSizeChanged(class QSizeF const &) + ?nativeSizeChanged@QVideoWindowControl@@IAEXXZ @ 628 NONAME ; void QVideoWindowControl::nativeSizeChanged(void) + ?next@QMediaPlaylist@@QAEXXZ @ 629 NONAME ; void QMediaPlaylist::next(void) + ?next@QMediaPlaylistNavigator@@QAEXXZ @ 630 NONAME ; void QMediaPlaylistNavigator::next(void) + ?nextIndex@QMediaPlaylist@@QBEHH@Z @ 631 NONAME ; int QMediaPlaylist::nextIndex(int) const + ?nextIndex@QMediaPlaylistNavigator@@QBEHH@Z @ 632 NONAME ; int QMediaPlaylistNavigator::nextIndex(int) const + ?nextItem@QMediaPlaylistNavigator@@QBE?AVQMediaContent@@H@Z @ 633 NONAME ; class QMediaContent QMediaPlaylistNavigator::nextItem(int) const + ?normalized@QMediaTimeInterval@@QBE?AV1@XZ @ 634 NONAME ; class QMediaTimeInterval QMediaTimeInterval::normalized(void) const + ?notifyInterval@QMediaObject@@QBEHXZ @ 635 NONAME ; int QMediaObject::notifyInterval(void) const + ?notifyIntervalChanged@QMediaObject@@IAEXH@Z @ 636 NONAME ; void QMediaObject::notifyIntervalChanged(int) + ?offset@QGraphicsVideoItem@@QBE?AVQPointF@@XZ @ 637 NONAME ; class QPointF QGraphicsVideoItem::offset(void) const + ?paint@QGraphicsVideoItem@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 638 NONAME ; void QGraphicsVideoItem::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) + ?paint@QPainterVideoSurface@@QAEXPAVQPainter@@ABVQRectF@@1@Z @ 639 NONAME ; void QPainterVideoSurface::paint(class QPainter *, class QRectF const &, class QRectF const &) + ?paintEvent@QVideoWidget@@MAEXPAVQPaintEvent@@@Z @ 640 NONAME ; void QVideoWidget::paintEvent(class QPaintEvent *) + ?pause@QMediaPlayer@@QAEXXZ @ 641 NONAME ; void QMediaPlayer::pause(void) + ?play@QMediaPlayer@@QAEXXZ @ 642 NONAME ; void QMediaPlayer::play(void) + ?playbackMode@QMediaPlaylist@@QBE?AW4PlaybackMode@1@XZ @ 643 NONAME ; enum QMediaPlaylist::PlaybackMode QMediaPlaylist::playbackMode(void) const + ?playbackMode@QMediaPlaylistNavigator@@QBE?AW4PlaybackMode@QMediaPlaylist@@XZ @ 644 NONAME ; enum QMediaPlaylist::PlaybackMode QMediaPlaylistNavigator::playbackMode(void) const + ?playbackModeChanged@QMediaPlaylist@@IAEXW4PlaybackMode@1@@Z @ 645 NONAME ; void QMediaPlaylist::playbackModeChanged(enum QMediaPlaylist::PlaybackMode) + ?playbackModeChanged@QMediaPlaylistControl@@IAEXW4PlaybackMode@QMediaPlaylist@@@Z @ 646 NONAME ; void QMediaPlaylistControl::playbackModeChanged(enum QMediaPlaylist::PlaybackMode) + ?playbackModeChanged@QMediaPlaylistNavigator@@IAEXW4PlaybackMode@QMediaPlaylist@@@Z @ 647 NONAME ; void QMediaPlaylistNavigator::playbackModeChanged(enum QMediaPlaylist::PlaybackMode) + ?playbackRate@QMediaPlayer@@QBEMXZ @ 648 NONAME ; float QMediaPlayer::playbackRate(void) const + ?playbackRateChanged@QMediaPlayer@@IAEXM@Z @ 649 NONAME ; void QMediaPlayer::playbackRateChanged(float) + ?playbackRateChanged@QMediaPlayerControl@@IAEXM@Z @ 650 NONAME ; void QMediaPlayerControl::playbackRateChanged(float) + ?playlist@QMediaPlaylistNavigator@@QBEPAVQMediaPlaylistProvider@@XZ @ 651 NONAME ; class QMediaPlaylistProvider * QMediaPlaylistNavigator::playlist(void) const + ?playlistProviderChanged@QMediaPlaylistControl@@IAEXXZ @ 652 NONAME ; void QMediaPlaylistControl::playlistProviderChanged(void) + ?position@QMediaPlayer@@QBE_JXZ @ 653 NONAME ; long long QMediaPlayer::position(void) const + ?positionChanged@QMediaPlayer@@IAEX_J@Z @ 654 NONAME ; void QMediaPlayer::positionChanged(long long) + ?positionChanged@QMediaPlayerControl@@IAEX_J@Z @ 655 NONAME ; void QMediaPlayerControl::positionChanged(long long) + ?present@QPainterVideoSurface@@UAE_NABVQVideoFrame@@@Z @ 656 NONAME ; bool QPainterVideoSurface::present(class QVideoFrame const &) + ?previous@QMediaPlaylist@@QAEXXZ @ 657 NONAME ; void QMediaPlaylist::previous(void) + ?previous@QMediaPlaylistNavigator@@QAEXXZ @ 658 NONAME ; void QMediaPlaylistNavigator::previous(void) + ?previousIndex@QMediaPlaylist@@QBEHH@Z @ 659 NONAME ; int QMediaPlaylist::previousIndex(int) const + ?previousIndex@QMediaPlaylistNavigator@@QBEHH@Z @ 660 NONAME ; int QMediaPlaylistNavigator::previousIndex(int) const + ?previousItem@QMediaPlaylistNavigator@@QBE?AVQMediaContent@@H@Z @ 661 NONAME ; class QMediaContent QMediaPlaylistNavigator::previousItem(int) const + ?qRegisterDeclarativeElements@QtMultimedia@@YAXPBD@Z @ 662 NONAME ; void QtMultimedia::qRegisterDeclarativeElements(char const *) + ?qt_metacall@QGraphicsVideoItem@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 663 NONAME ; int QGraphicsVideoItem::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QLocalMediaPlaylistProvider@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 664 NONAME ; int QLocalMediaPlaylistProvider::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMediaControl@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 665 NONAME ; int QMediaControl::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMediaObject@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 666 NONAME ; int QMediaObject::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMediaPlayer@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 667 NONAME ; int QMediaPlayer::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMediaPlayerControl@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 668 NONAME ; int QMediaPlayerControl::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMediaPlaylist@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 669 NONAME ; int QMediaPlaylist::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMediaPlaylistControl@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 670 NONAME ; int QMediaPlaylistControl::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMediaPlaylistIOPlugin@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 671 NONAME ; int QMediaPlaylistIOPlugin::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMediaPlaylistNavigator@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 672 NONAME ; int QMediaPlaylistNavigator::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMediaPlaylistProvider@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 673 NONAME ; int QMediaPlaylistProvider::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMediaService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 674 NONAME ; int QMediaService::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMediaServiceProvider@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 675 NONAME ; int QMediaServiceProvider::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMediaServiceProviderPlugin@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 676 NONAME ; int QMediaServiceProviderPlugin::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QMetaDataControl@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 677 NONAME ; int QMetaDataControl::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QPainterVideoSurface@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 678 NONAME ; int QPainterVideoSurface::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QVideoDeviceControl@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 679 NONAME ; int QVideoDeviceControl::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QVideoOutputControl@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 680 NONAME ; int QVideoOutputControl::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QVideoRendererControl@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 681 NONAME ; int QVideoRendererControl::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QVideoWidget@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 682 NONAME ; int QVideoWidget::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QVideoWidgetControl@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 683 NONAME ; int QVideoWidgetControl::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QVideoWindowControl@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 684 NONAME ; int QVideoWindowControl::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacast@QGraphicsVideoItem@@UAEPAXPBD@Z @ 685 NONAME ; void * QGraphicsVideoItem::qt_metacast(char const *) + ?qt_metacast@QLocalMediaPlaylistProvider@@UAEPAXPBD@Z @ 686 NONAME ; void * QLocalMediaPlaylistProvider::qt_metacast(char const *) + ?qt_metacast@QMediaControl@@UAEPAXPBD@Z @ 687 NONAME ; void * QMediaControl::qt_metacast(char const *) + ?qt_metacast@QMediaObject@@UAEPAXPBD@Z @ 688 NONAME ; void * QMediaObject::qt_metacast(char const *) + ?qt_metacast@QMediaPlayer@@UAEPAXPBD@Z @ 689 NONAME ; void * QMediaPlayer::qt_metacast(char const *) + ?qt_metacast@QMediaPlayerControl@@UAEPAXPBD@Z @ 690 NONAME ; void * QMediaPlayerControl::qt_metacast(char const *) + ?qt_metacast@QMediaPlaylist@@UAEPAXPBD@Z @ 691 NONAME ; void * QMediaPlaylist::qt_metacast(char const *) + ?qt_metacast@QMediaPlaylistControl@@UAEPAXPBD@Z @ 692 NONAME ; void * QMediaPlaylistControl::qt_metacast(char const *) + ?qt_metacast@QMediaPlaylistIOPlugin@@UAEPAXPBD@Z @ 693 NONAME ; void * QMediaPlaylistIOPlugin::qt_metacast(char const *) + ?qt_metacast@QMediaPlaylistNavigator@@UAEPAXPBD@Z @ 694 NONAME ; void * QMediaPlaylistNavigator::qt_metacast(char const *) + ?qt_metacast@QMediaPlaylistProvider@@UAEPAXPBD@Z @ 695 NONAME ; void * QMediaPlaylistProvider::qt_metacast(char const *) + ?qt_metacast@QMediaService@@UAEPAXPBD@Z @ 696 NONAME ; void * QMediaService::qt_metacast(char const *) + ?qt_metacast@QMediaServiceProvider@@UAEPAXPBD@Z @ 697 NONAME ; void * QMediaServiceProvider::qt_metacast(char const *) + ?qt_metacast@QMediaServiceProviderPlugin@@UAEPAXPBD@Z @ 698 NONAME ; void * QMediaServiceProviderPlugin::qt_metacast(char const *) + ?qt_metacast@QMetaDataControl@@UAEPAXPBD@Z @ 699 NONAME ; void * QMetaDataControl::qt_metacast(char const *) + ?qt_metacast@QPainterVideoSurface@@UAEPAXPBD@Z @ 700 NONAME ; void * QPainterVideoSurface::qt_metacast(char const *) + ?qt_metacast@QVideoDeviceControl@@UAEPAXPBD@Z @ 701 NONAME ; void * QVideoDeviceControl::qt_metacast(char const *) + ?qt_metacast@QVideoOutputControl@@UAEPAXPBD@Z @ 702 NONAME ; void * QVideoOutputControl::qt_metacast(char const *) + ?qt_metacast@QVideoRendererControl@@UAEPAXPBD@Z @ 703 NONAME ; void * QVideoRendererControl::qt_metacast(char const *) + ?qt_metacast@QVideoWidget@@UAEPAXPBD@Z @ 704 NONAME ; void * QVideoWidget::qt_metacast(char const *) + ?qt_metacast@QVideoWidgetControl@@UAEPAXPBD@Z @ 705 NONAME ; void * QVideoWidgetControl::qt_metacast(char const *) + ?qt_metacast@QVideoWindowControl@@UAEPAXPBD@Z @ 706 NONAME ; void * QVideoWindowControl::qt_metacast(char const *) + ?removeInterval@QMediaTimeRange@@QAEXABVQMediaTimeInterval@@@Z @ 707 NONAME ; void QMediaTimeRange::removeInterval(class QMediaTimeInterval const &) + ?removeInterval@QMediaTimeRange@@QAEX_J0@Z @ 708 NONAME ; void QMediaTimeRange::removeInterval(long long, long long) + ?removeMedia@QLocalMediaPlaylistProvider@@UAE_NH@Z @ 709 NONAME ; bool QLocalMediaPlaylistProvider::removeMedia(int) + ?removeMedia@QLocalMediaPlaylistProvider@@UAE_NHH@Z @ 710 NONAME ; bool QLocalMediaPlaylistProvider::removeMedia(int, int) + ?removeMedia@QMediaPlaylist@@QAE_NH@Z @ 711 NONAME ; bool QMediaPlaylist::removeMedia(int) + ?removeMedia@QMediaPlaylist@@QAE_NHH@Z @ 712 NONAME ; bool QMediaPlaylist::removeMedia(int, int) + ?removeMedia@QMediaPlaylistProvider@@UAE_NH@Z @ 713 NONAME ; bool QMediaPlaylistProvider::removeMedia(int) + ?removeMedia@QMediaPlaylistProvider@@UAE_NHH@Z @ 714 NONAME ; bool QMediaPlaylistProvider::removeMedia(int, int) + ?removePropertyWatch@QMediaObject@@IAEXABVQByteArray@@@Z @ 715 NONAME ; void QMediaObject::removePropertyWatch(class QByteArray const &) + ?removeTimeRange@QMediaTimeRange@@QAEXABV1@@Z @ 716 NONAME ; void QMediaTimeRange::removeTimeRange(class QMediaTimeRange const &) + ?request@QMediaResource@@QBE?AVQNetworkRequest@@XZ @ 717 NONAME ; class QNetworkRequest QMediaResource::request(void) const + ?resizeEvent@QVideoWidget@@MAEXPAVQResizeEvent@@@Z @ 718 NONAME ; void QVideoWidget::resizeEvent(class QResizeEvent *) + ?resolution@QMediaResource@@QBE?AVQSize@@XZ @ 719 NONAME ; class QSize QMediaResource::resolution(void) const + ?resources@QMediaContent@@QBE?AV?$QList@VQMediaResource@@@@XZ @ 720 NONAME ; class QList QMediaContent::resources(void) const + ?sampleRate@QAudioFormat@@QBEHXZ @ 721 NONAME ; int QAudioFormat::sampleRate(void) const + ?sampleRate@QMediaResource@@QBEHXZ @ 722 NONAME ; int QMediaResource::sampleRate(void) const + ?saturation@QPainterVideoSurface@@QBEHXZ @ 723 NONAME ; int QPainterVideoSurface::saturation(void) const + ?saturation@QVideoWidget@@QBEHXZ @ 724 NONAME ; int QVideoWidget::saturation(void) const + ?saturationChanged@QVideoWidget@@IAEXH@Z @ 725 NONAME ; void QVideoWidget::saturationChanged(int) + ?saturationChanged@QVideoWidgetControl@@IAEXH@Z @ 726 NONAME ; void QVideoWidgetControl::saturationChanged(int) + ?saturationChanged@QVideoWindowControl@@IAEXH@Z @ 727 NONAME ; void QVideoWindowControl::saturationChanged(int) + ?save@QMediaPlaylist@@QAE_NABVQUrl@@PBD@Z @ 728 NONAME ; bool QMediaPlaylist::save(class QUrl const &, char const *) + ?save@QMediaPlaylist@@QAE_NPAVQIODevice@@PBD@Z @ 729 NONAME ; bool QMediaPlaylist::save(class QIODevice *, char const *) + ?save@QMediaPlaylistProvider@@UAE_NABVQUrl@@PBD@Z @ 730 NONAME ; bool QMediaPlaylistProvider::save(class QUrl const &, char const *) + ?save@QMediaPlaylistProvider@@UAE_NPAVQIODevice@@PBD@Z @ 731 NONAME ; bool QMediaPlaylistProvider::save(class QIODevice *, char const *) + ?seekableChanged@QMediaPlayer@@IAEX_N@Z @ 732 NONAME ; void QMediaPlayer::seekableChanged(bool) + ?seekableChanged@QMediaPlayerControl@@IAEX_N@Z @ 733 NONAME ; void QMediaPlayerControl::seekableChanged(bool) + ?selectedDeviceChanged@QVideoDeviceControl@@IAEXABVQString@@@Z @ 734 NONAME ; void QVideoDeviceControl::selectedDeviceChanged(class QString const &) + ?selectedDeviceChanged@QVideoDeviceControl@@IAEXH@Z @ 735 NONAME ; void QVideoDeviceControl::selectedDeviceChanged(int) + ?service@QMediaObject@@UBEPAVQMediaService@@XZ @ 736 NONAME ; class QMediaService * QMediaObject::service(void) const + ?setAspectRatioMode@QGraphicsVideoItem@@QAEXW4AspectRatioMode@Qt@@@Z @ 737 NONAME ; void QGraphicsVideoItem::setAspectRatioMode(enum Qt::AspectRatioMode) + ?setAspectRatioMode@QVideoWidget@@QAEXW4AspectRatioMode@1@@Z @ 738 NONAME ; void QVideoWidget::setAspectRatioMode(enum QVideoWidget::AspectRatioMode) + ?setAudioBitRate@QMediaResource@@QAEXH@Z @ 739 NONAME ; void QMediaResource::setAudioBitRate(int) + ?setAudioCodec@QMediaResource@@QAEXABVQString@@@Z @ 740 NONAME ; void QMediaResource::setAudioCodec(class QString const &) + ?setBrightness@QPainterVideoSurface@@QAEXH@Z @ 741 NONAME ; void QPainterVideoSurface::setBrightness(int) + ?setBrightness@QVideoWidget@@QAEXH@Z @ 742 NONAME ; void QVideoWidget::setBrightness(int) + ?setChannelCount@QAudioFormat@@QAEXH@Z @ 743 NONAME ; void QAudioFormat::setChannelCount(int) + ?setChannelCount@QMediaResource@@QAEXH@Z @ 744 NONAME ; void QMediaResource::setChannelCount(int) + ?setContrast@QPainterVideoSurface@@QAEXH@Z @ 745 NONAME ; void QPainterVideoSurface::setContrast(int) + ?setContrast@QVideoWidget@@QAEXH@Z @ 746 NONAME ; void QVideoWidget::setContrast(int) + ?setCurrentIndex@QMediaPlaylist@@QAEXH@Z @ 747 NONAME ; void QMediaPlaylist::setCurrentIndex(int) + ?setDataSize@QMediaResource@@QAEX_J@Z @ 748 NONAME ; void QMediaResource::setDataSize(long long) + ?setExtendedMetaData@QMediaObject@@QAEXABVQString@@ABVQVariant@@@Z @ 749 NONAME ; void QMediaObject::setExtendedMetaData(class QString const &, class QVariant const &) + ?setFullScreen@QVideoWidget@@QAEX_N@Z @ 750 NONAME ; void QVideoWidget::setFullScreen(bool) + ?setHue@QPainterVideoSurface@@QAEXH@Z @ 751 NONAME ; void QPainterVideoSurface::setHue(int) + ?setHue@QVideoWidget@@QAEXH@Z @ 752 NONAME ; void QVideoWidget::setHue(int) + ?setLanguage@QMediaResource@@QAEXABVQString@@@Z @ 753 NONAME ; void QMediaResource::setLanguage(class QString const &) + ?setMedia@QMediaPlayer@@QAEXABVQMediaContent@@PAVQIODevice@@@Z @ 754 NONAME ; void QMediaPlayer::setMedia(class QMediaContent const &, class QIODevice *) + ?setMediaObject@QGraphicsVideoItem@@QAEXPAVQMediaObject@@@Z @ 755 NONAME ; void QGraphicsVideoItem::setMediaObject(class QMediaObject *) + ?setMediaObject@QMediaPlaylist@@QAEXPAVQMediaObject@@@Z @ 756 NONAME ; void QMediaPlaylist::setMediaObject(class QMediaObject *) + ?setMediaObject@QVideoWidget@@QAEXPAVQMediaObject@@@Z @ 757 NONAME ; void QVideoWidget::setMediaObject(class QMediaObject *) + ?setMetaData@QMediaObject@@QAEXW4MetaData@QtMultimedia@@ABVQVariant@@@Z @ 758 NONAME ; void QMediaObject::setMetaData(enum QtMultimedia::MetaData, class QVariant const &) + ?setMuted@QMediaPlayer@@QAEX_N@Z @ 759 NONAME ; void QMediaPlayer::setMuted(bool) + ?setNotifyInterval@QMediaObject@@QAEXH@Z @ 760 NONAME ; void QMediaObject::setNotifyInterval(int) + ?setOffset@QGraphicsVideoItem@@QAEXABVQPointF@@@Z @ 761 NONAME ; void QGraphicsVideoItem::setOffset(class QPointF const &) + ?setPlaybackMode@QMediaPlaylist@@QAEXW4PlaybackMode@1@@Z @ 762 NONAME ; void QMediaPlaylist::setPlaybackMode(enum QMediaPlaylist::PlaybackMode) + ?setPlaybackMode@QMediaPlaylistNavigator@@QAEXW4PlaybackMode@QMediaPlaylist@@@Z @ 763 NONAME ; void QMediaPlaylistNavigator::setPlaybackMode(enum QMediaPlaylist::PlaybackMode) + ?setPlaybackRate@QMediaPlayer@@QAEXM@Z @ 764 NONAME ; void QMediaPlayer::setPlaybackRate(float) + ?setPlaylist@QMediaPlaylistNavigator@@QAEXPAVQMediaPlaylistProvider@@@Z @ 765 NONAME ; void QMediaPlaylistNavigator::setPlaylist(class QMediaPlaylistProvider *) + ?setPosition@QMediaPlayer@@QAEX_J@Z @ 766 NONAME ; void QMediaPlayer::setPosition(long long) + ?setReady@QPainterVideoSurface@@QAEX_N@Z @ 767 NONAME ; void QPainterVideoSurface::setReady(bool) + ?setResolution@QMediaResource@@QAEXABVQSize@@@Z @ 768 NONAME ; void QMediaResource::setResolution(class QSize const &) + ?setResolution@QMediaResource@@QAEXHH@Z @ 769 NONAME ; void QMediaResource::setResolution(int, int) + ?setSampleRate@QAudioFormat@@QAEXH@Z @ 770 NONAME ; void QAudioFormat::setSampleRate(int) + ?setSampleRate@QMediaResource@@QAEXH@Z @ 771 NONAME ; void QMediaResource::setSampleRate(int) + ?setSaturation@QPainterVideoSurface@@QAEXH@Z @ 772 NONAME ; void QPainterVideoSurface::setSaturation(int) + ?setSaturation@QVideoWidget@@QAEXH@Z @ 773 NONAME ; void QVideoWidget::setSaturation(int) + ?setSize@QGraphicsVideoItem@@QAEXABVQSizeF@@@Z @ 774 NONAME ; void QGraphicsVideoItem::setSize(class QSizeF const &) + ?setVideoBitRate@QMediaResource@@QAEXH@Z @ 775 NONAME ; void QMediaResource::setVideoBitRate(int) + ?setVideoCodec@QMediaResource@@QAEXABVQString@@@Z @ 776 NONAME ; void QMediaResource::setVideoCodec(class QString const &) + ?setVolume@QMediaPlayer@@QAEXH@Z @ 777 NONAME ; void QMediaPlayer::setVolume(int) + ?setupMetaData@QMediaObject@@AAEXXZ @ 778 NONAME ; void QMediaObject::setupMetaData(void) + ?showEvent@QVideoWidget@@MAEXPAVQShowEvent@@@Z @ 779 NONAME ; void QVideoWidget::showEvent(class QShowEvent *) + ?shuffle@QLocalMediaPlaylistProvider@@UAEXXZ @ 780 NONAME ; void QLocalMediaPlaylistProvider::shuffle(void) + ?shuffle@QMediaPlaylist@@QAEXXZ @ 781 NONAME ; void QMediaPlaylist::shuffle(void) + ?shuffle@QMediaPlaylistProvider@@UAEXXZ @ 782 NONAME ; void QMediaPlaylistProvider::shuffle(void) + ?size@QGraphicsVideoItem@@QBE?AVQSizeF@@XZ @ 783 NONAME ; class QSizeF QGraphicsVideoItem::size(void) const + ?sizeHint@QVideoWidget@@UBE?AVQSize@@XZ @ 784 NONAME ; class QSize QVideoWidget::sizeHint(void) const + ?start@QMediaTimeInterval@@QBE_JXZ @ 785 NONAME ; long long QMediaTimeInterval::start(void) const + ?start@QPainterVideoSurface@@UAE_NABVQVideoSurfaceFormat@@@Z @ 786 NONAME ; bool QPainterVideoSurface::start(class QVideoSurfaceFormat const &) + ?state@QMediaPlayer@@QBE?AW4State@1@XZ @ 787 NONAME ; enum QMediaPlayer::State QMediaPlayer::state(void) const + ?stateChanged@QMediaPlayer@@IAEXW4State@1@@Z @ 788 NONAME ; void QMediaPlayer::stateChanged(enum QMediaPlayer::State) + ?stateChanged@QMediaPlayerControl@@IAEXW4State@QMediaPlayer@@@Z @ 789 NONAME ; void QMediaPlayerControl::stateChanged(enum QMediaPlayer::State) + ?stop@QMediaPlayer@@QAEXXZ @ 790 NONAME ; void QMediaPlayer::stop(void) + ?stop@QPainterVideoSurface@@UAEXXZ @ 791 NONAME ; void QPainterVideoSurface::stop(void) + ?supportedChannelCounts@QAudioDeviceInfo@@QBE?AV?$QList@H@@XZ @ 792 NONAME ; class QList QAudioDeviceInfo::supportedChannelCounts(void) const + ?supportedMimeTypes@QMediaPlayer@@SA?AVQStringList@@V?$QFlags@W4Flag@QMediaPlayer@@@@@Z @ 793 NONAME ; class QStringList QMediaPlayer::supportedMimeTypes(class QFlags) + ?supportedMimeTypes@QMediaServiceProvider@@UBE?AVQStringList@@ABVQByteArray@@H@Z @ 794 NONAME ; class QStringList QMediaServiceProvider::supportedMimeTypes(class QByteArray const &, int) const + ?supportedPixelFormats@QPainterVideoSurface@@UBE?AV?$QList@W4PixelFormat@QVideoFrame@@@@W4HandleType@QAbstractVideoBuffer@@@Z @ 795 NONAME ; class QList QPainterVideoSurface::supportedPixelFormats(enum QAbstractVideoBuffer::HandleType) const + ?supportedSampleRates@QAudioDeviceInfo@@QBE?AV?$QList@H@@XZ @ 796 NONAME ; class QList QAudioDeviceInfo::supportedSampleRates(void) const + ?surroundingItemsChanged@QMediaPlaylistNavigator@@IAEXXZ @ 797 NONAME ; void QMediaPlaylistNavigator::surroundingItemsChanged(void) + ?tr@QGraphicsVideoItem@@SA?AVQString@@PBD0@Z @ 798 NONAME ; class QString QGraphicsVideoItem::tr(char const *, char const *) + ?tr@QGraphicsVideoItem@@SA?AVQString@@PBD0H@Z @ 799 NONAME ; class QString QGraphicsVideoItem::tr(char const *, char const *, int) + ?tr@QLocalMediaPlaylistProvider@@SA?AVQString@@PBD0@Z @ 800 NONAME ; class QString QLocalMediaPlaylistProvider::tr(char const *, char const *) + ?tr@QLocalMediaPlaylistProvider@@SA?AVQString@@PBD0H@Z @ 801 NONAME ; class QString QLocalMediaPlaylistProvider::tr(char const *, char const *, int) + ?tr@QMediaControl@@SA?AVQString@@PBD0@Z @ 802 NONAME ; class QString QMediaControl::tr(char const *, char const *) + ?tr@QMediaControl@@SA?AVQString@@PBD0H@Z @ 803 NONAME ; class QString QMediaControl::tr(char const *, char const *, int) + ?tr@QMediaObject@@SA?AVQString@@PBD0@Z @ 804 NONAME ; class QString QMediaObject::tr(char const *, char const *) + ?tr@QMediaObject@@SA?AVQString@@PBD0H@Z @ 805 NONAME ; class QString QMediaObject::tr(char const *, char const *, int) + ?tr@QMediaPlayer@@SA?AVQString@@PBD0@Z @ 806 NONAME ; class QString QMediaPlayer::tr(char const *, char const *) + ?tr@QMediaPlayer@@SA?AVQString@@PBD0H@Z @ 807 NONAME ; class QString QMediaPlayer::tr(char const *, char const *, int) + ?tr@QMediaPlayerControl@@SA?AVQString@@PBD0@Z @ 808 NONAME ; class QString QMediaPlayerControl::tr(char const *, char const *) + ?tr@QMediaPlayerControl@@SA?AVQString@@PBD0H@Z @ 809 NONAME ; class QString QMediaPlayerControl::tr(char const *, char const *, int) + ?tr@QMediaPlaylist@@SA?AVQString@@PBD0@Z @ 810 NONAME ; class QString QMediaPlaylist::tr(char const *, char const *) + ?tr@QMediaPlaylist@@SA?AVQString@@PBD0H@Z @ 811 NONAME ; class QString QMediaPlaylist::tr(char const *, char const *, int) + ?tr@QMediaPlaylistControl@@SA?AVQString@@PBD0@Z @ 812 NONAME ; class QString QMediaPlaylistControl::tr(char const *, char const *) + ?tr@QMediaPlaylistControl@@SA?AVQString@@PBD0H@Z @ 813 NONAME ; class QString QMediaPlaylistControl::tr(char const *, char const *, int) + ?tr@QMediaPlaylistIOPlugin@@SA?AVQString@@PBD0@Z @ 814 NONAME ; class QString QMediaPlaylistIOPlugin::tr(char const *, char const *) + ?tr@QMediaPlaylistIOPlugin@@SA?AVQString@@PBD0H@Z @ 815 NONAME ; class QString QMediaPlaylistIOPlugin::tr(char const *, char const *, int) + ?tr@QMediaPlaylistNavigator@@SA?AVQString@@PBD0@Z @ 816 NONAME ; class QString QMediaPlaylistNavigator::tr(char const *, char const *) + ?tr@QMediaPlaylistNavigator@@SA?AVQString@@PBD0H@Z @ 817 NONAME ; class QString QMediaPlaylistNavigator::tr(char const *, char const *, int) + ?tr@QMediaPlaylistProvider@@SA?AVQString@@PBD0@Z @ 818 NONAME ; class QString QMediaPlaylistProvider::tr(char const *, char const *) + ?tr@QMediaPlaylistProvider@@SA?AVQString@@PBD0H@Z @ 819 NONAME ; class QString QMediaPlaylistProvider::tr(char const *, char const *, int) + ?tr@QMediaService@@SA?AVQString@@PBD0@Z @ 820 NONAME ; class QString QMediaService::tr(char const *, char const *) + ?tr@QMediaService@@SA?AVQString@@PBD0H@Z @ 821 NONAME ; class QString QMediaService::tr(char const *, char const *, int) + ?tr@QMediaServiceProvider@@SA?AVQString@@PBD0@Z @ 822 NONAME ; class QString QMediaServiceProvider::tr(char const *, char const *) + ?tr@QMediaServiceProvider@@SA?AVQString@@PBD0H@Z @ 823 NONAME ; class QString QMediaServiceProvider::tr(char const *, char const *, int) + ?tr@QMediaServiceProviderPlugin@@SA?AVQString@@PBD0@Z @ 824 NONAME ; class QString QMediaServiceProviderPlugin::tr(char const *, char const *) + ?tr@QMediaServiceProviderPlugin@@SA?AVQString@@PBD0H@Z @ 825 NONAME ; class QString QMediaServiceProviderPlugin::tr(char const *, char const *, int) + ?tr@QMetaDataControl@@SA?AVQString@@PBD0@Z @ 826 NONAME ; class QString QMetaDataControl::tr(char const *, char const *) + ?tr@QMetaDataControl@@SA?AVQString@@PBD0H@Z @ 827 NONAME ; class QString QMetaDataControl::tr(char const *, char const *, int) + ?tr@QPainterVideoSurface@@SA?AVQString@@PBD0@Z @ 828 NONAME ; class QString QPainterVideoSurface::tr(char const *, char const *) + ?tr@QPainterVideoSurface@@SA?AVQString@@PBD0H@Z @ 829 NONAME ; class QString QPainterVideoSurface::tr(char const *, char const *, int) + ?tr@QVideoDeviceControl@@SA?AVQString@@PBD0@Z @ 830 NONAME ; class QString QVideoDeviceControl::tr(char const *, char const *) + ?tr@QVideoDeviceControl@@SA?AVQString@@PBD0H@Z @ 831 NONAME ; class QString QVideoDeviceControl::tr(char const *, char const *, int) + ?tr@QVideoOutputControl@@SA?AVQString@@PBD0@Z @ 832 NONAME ; class QString QVideoOutputControl::tr(char const *, char const *) + ?tr@QVideoOutputControl@@SA?AVQString@@PBD0H@Z @ 833 NONAME ; class QString QVideoOutputControl::tr(char const *, char const *, int) + ?tr@QVideoRendererControl@@SA?AVQString@@PBD0@Z @ 834 NONAME ; class QString QVideoRendererControl::tr(char const *, char const *) + ?tr@QVideoRendererControl@@SA?AVQString@@PBD0H@Z @ 835 NONAME ; class QString QVideoRendererControl::tr(char const *, char const *, int) + ?tr@QVideoWidget@@SA?AVQString@@PBD0@Z @ 836 NONAME ; class QString QVideoWidget::tr(char const *, char const *) + ?tr@QVideoWidget@@SA?AVQString@@PBD0H@Z @ 837 NONAME ; class QString QVideoWidget::tr(char const *, char const *, int) + ?tr@QVideoWidgetControl@@SA?AVQString@@PBD0@Z @ 838 NONAME ; class QString QVideoWidgetControl::tr(char const *, char const *) + ?tr@QVideoWidgetControl@@SA?AVQString@@PBD0H@Z @ 839 NONAME ; class QString QVideoWidgetControl::tr(char const *, char const *, int) + ?tr@QVideoWindowControl@@SA?AVQString@@PBD0@Z @ 840 NONAME ; class QString QVideoWindowControl::tr(char const *, char const *) + ?tr@QVideoWindowControl@@SA?AVQString@@PBD0H@Z @ 841 NONAME ; class QString QVideoWindowControl::tr(char const *, char const *, int) + ?trUtf8@QGraphicsVideoItem@@SA?AVQString@@PBD0@Z @ 842 NONAME ; class QString QGraphicsVideoItem::trUtf8(char const *, char const *) + ?trUtf8@QGraphicsVideoItem@@SA?AVQString@@PBD0H@Z @ 843 NONAME ; class QString QGraphicsVideoItem::trUtf8(char const *, char const *, int) + ?trUtf8@QLocalMediaPlaylistProvider@@SA?AVQString@@PBD0@Z @ 844 NONAME ; class QString QLocalMediaPlaylistProvider::trUtf8(char const *, char const *) + ?trUtf8@QLocalMediaPlaylistProvider@@SA?AVQString@@PBD0H@Z @ 845 NONAME ; class QString QLocalMediaPlaylistProvider::trUtf8(char const *, char const *, int) + ?trUtf8@QMediaControl@@SA?AVQString@@PBD0@Z @ 846 NONAME ; class QString QMediaControl::trUtf8(char const *, char const *) + ?trUtf8@QMediaControl@@SA?AVQString@@PBD0H@Z @ 847 NONAME ; class QString QMediaControl::trUtf8(char const *, char const *, int) + ?trUtf8@QMediaObject@@SA?AVQString@@PBD0@Z @ 848 NONAME ; class QString QMediaObject::trUtf8(char const *, char const *) + ?trUtf8@QMediaObject@@SA?AVQString@@PBD0H@Z @ 849 NONAME ; class QString QMediaObject::trUtf8(char const *, char const *, int) + ?trUtf8@QMediaPlayer@@SA?AVQString@@PBD0@Z @ 850 NONAME ; class QString QMediaPlayer::trUtf8(char const *, char const *) + ?trUtf8@QMediaPlayer@@SA?AVQString@@PBD0H@Z @ 851 NONAME ; class QString QMediaPlayer::trUtf8(char const *, char const *, int) + ?trUtf8@QMediaPlayerControl@@SA?AVQString@@PBD0@Z @ 852 NONAME ; class QString QMediaPlayerControl::trUtf8(char const *, char const *) + ?trUtf8@QMediaPlayerControl@@SA?AVQString@@PBD0H@Z @ 853 NONAME ; class QString QMediaPlayerControl::trUtf8(char const *, char const *, int) + ?trUtf8@QMediaPlaylist@@SA?AVQString@@PBD0@Z @ 854 NONAME ; class QString QMediaPlaylist::trUtf8(char const *, char const *) + ?trUtf8@QMediaPlaylist@@SA?AVQString@@PBD0H@Z @ 855 NONAME ; class QString QMediaPlaylist::trUtf8(char const *, char const *, int) + ?trUtf8@QMediaPlaylistControl@@SA?AVQString@@PBD0@Z @ 856 NONAME ; class QString QMediaPlaylistControl::trUtf8(char const *, char const *) + ?trUtf8@QMediaPlaylistControl@@SA?AVQString@@PBD0H@Z @ 857 NONAME ; class QString QMediaPlaylistControl::trUtf8(char const *, char const *, int) + ?trUtf8@QMediaPlaylistIOPlugin@@SA?AVQString@@PBD0@Z @ 858 NONAME ; class QString QMediaPlaylistIOPlugin::trUtf8(char const *, char const *) + ?trUtf8@QMediaPlaylistIOPlugin@@SA?AVQString@@PBD0H@Z @ 859 NONAME ; class QString QMediaPlaylistIOPlugin::trUtf8(char const *, char const *, int) + ?trUtf8@QMediaPlaylistNavigator@@SA?AVQString@@PBD0@Z @ 860 NONAME ; class QString QMediaPlaylistNavigator::trUtf8(char const *, char const *) + ?trUtf8@QMediaPlaylistNavigator@@SA?AVQString@@PBD0H@Z @ 861 NONAME ; class QString QMediaPlaylistNavigator::trUtf8(char const *, char const *, int) + ?trUtf8@QMediaPlaylistProvider@@SA?AVQString@@PBD0@Z @ 862 NONAME ; class QString QMediaPlaylistProvider::trUtf8(char const *, char const *) + ?trUtf8@QMediaPlaylistProvider@@SA?AVQString@@PBD0H@Z @ 863 NONAME ; class QString QMediaPlaylistProvider::trUtf8(char const *, char const *, int) + ?trUtf8@QMediaService@@SA?AVQString@@PBD0@Z @ 864 NONAME ; class QString QMediaService::trUtf8(char const *, char const *) + ?trUtf8@QMediaService@@SA?AVQString@@PBD0H@Z @ 865 NONAME ; class QString QMediaService::trUtf8(char const *, char const *, int) + ?trUtf8@QMediaServiceProvider@@SA?AVQString@@PBD0@Z @ 866 NONAME ; class QString QMediaServiceProvider::trUtf8(char const *, char const *) + ?trUtf8@QMediaServiceProvider@@SA?AVQString@@PBD0H@Z @ 867 NONAME ; class QString QMediaServiceProvider::trUtf8(char const *, char const *, int) + ?trUtf8@QMediaServiceProviderPlugin@@SA?AVQString@@PBD0@Z @ 868 NONAME ; class QString QMediaServiceProviderPlugin::trUtf8(char const *, char const *) + ?trUtf8@QMediaServiceProviderPlugin@@SA?AVQString@@PBD0H@Z @ 869 NONAME ; class QString QMediaServiceProviderPlugin::trUtf8(char const *, char const *, int) + ?trUtf8@QMetaDataControl@@SA?AVQString@@PBD0@Z @ 870 NONAME ; class QString QMetaDataControl::trUtf8(char const *, char const *) + ?trUtf8@QMetaDataControl@@SA?AVQString@@PBD0H@Z @ 871 NONAME ; class QString QMetaDataControl::trUtf8(char const *, char const *, int) + ?trUtf8@QPainterVideoSurface@@SA?AVQString@@PBD0@Z @ 872 NONAME ; class QString QPainterVideoSurface::trUtf8(char const *, char const *) + ?trUtf8@QPainterVideoSurface@@SA?AVQString@@PBD0H@Z @ 873 NONAME ; class QString QPainterVideoSurface::trUtf8(char const *, char const *, int) + ?trUtf8@QVideoDeviceControl@@SA?AVQString@@PBD0@Z @ 874 NONAME ; class QString QVideoDeviceControl::trUtf8(char const *, char const *) + ?trUtf8@QVideoDeviceControl@@SA?AVQString@@PBD0H@Z @ 875 NONAME ; class QString QVideoDeviceControl::trUtf8(char const *, char const *, int) + ?trUtf8@QVideoOutputControl@@SA?AVQString@@PBD0@Z @ 876 NONAME ; class QString QVideoOutputControl::trUtf8(char const *, char const *) + ?trUtf8@QVideoOutputControl@@SA?AVQString@@PBD0H@Z @ 877 NONAME ; class QString QVideoOutputControl::trUtf8(char const *, char const *, int) + ?trUtf8@QVideoRendererControl@@SA?AVQString@@PBD0@Z @ 878 NONAME ; class QString QVideoRendererControl::trUtf8(char const *, char const *) + ?trUtf8@QVideoRendererControl@@SA?AVQString@@PBD0H@Z @ 879 NONAME ; class QString QVideoRendererControl::trUtf8(char const *, char const *, int) + ?trUtf8@QVideoWidget@@SA?AVQString@@PBD0@Z @ 880 NONAME ; class QString QVideoWidget::trUtf8(char const *, char const *) + ?trUtf8@QVideoWidget@@SA?AVQString@@PBD0H@Z @ 881 NONAME ; class QString QVideoWidget::trUtf8(char const *, char const *, int) + ?trUtf8@QVideoWidgetControl@@SA?AVQString@@PBD0@Z @ 882 NONAME ; class QString QVideoWidgetControl::trUtf8(char const *, char const *) + ?trUtf8@QVideoWidgetControl@@SA?AVQString@@PBD0H@Z @ 883 NONAME ; class QString QVideoWidgetControl::trUtf8(char const *, char const *, int) + ?trUtf8@QVideoWindowControl@@SA?AVQString@@PBD0@Z @ 884 NONAME ; class QString QVideoWindowControl::trUtf8(char const *, char const *) + ?trUtf8@QVideoWindowControl@@SA?AVQString@@PBD0H@Z @ 885 NONAME ; class QString QVideoWindowControl::trUtf8(char const *, char const *, int) + ?translated@QMediaTimeInterval@@QBE?AV1@_J@Z @ 886 NONAME ; class QMediaTimeInterval QMediaTimeInterval::translated(long long) const + ?type@QMediaServiceProviderHint@@QBE?AW4Type@1@XZ @ 887 NONAME ; enum QMediaServiceProviderHint::Type QMediaServiceProviderHint::type(void) const + ?unbind@QMediaObject@@UAEXPAVQObject@@@Z @ 888 NONAME ; void QMediaObject::unbind(class QObject *) + ?unbind@QMediaPlayer@@UAEXPAVQObject@@@Z @ 889 NONAME ; void QMediaPlayer::unbind(class QObject *) + ?url@QMediaResource@@QBE?AVQUrl@@XZ @ 890 NONAME ; class QUrl QMediaResource::url(void) const + ?videoAvailableChanged@QMediaPlayer@@IAEX_N@Z @ 891 NONAME ; void QMediaPlayer::videoAvailableChanged(bool) + ?videoAvailableChanged@QMediaPlayerControl@@IAEX_N@Z @ 892 NONAME ; void QMediaPlayerControl::videoAvailableChanged(bool) + ?videoBitRate@QMediaResource@@QBEHXZ @ 893 NONAME ; int QMediaResource::videoBitRate(void) const + ?videoCodec@QMediaResource@@QBE?AVQString@@XZ @ 894 NONAME ; class QString QMediaResource::videoCodec(void) const + ?volume@QMediaPlayer@@QBEHXZ @ 895 NONAME ; int QMediaPlayer::volume(void) const + ?volumeChanged@QMediaPlayer@@IAEXH@Z @ 896 NONAME ; void QMediaPlayer::volumeChanged(int) + ?volumeChanged@QMediaPlayerControl@@IAEXH@Z @ 897 NONAME ; void QMediaPlayerControl::volumeChanged(int) + ?writableChanged@QMetaDataControl@@IAEX_N@Z @ 898 NONAME ; void QMetaDataControl::writableChanged(bool) + ?staticMetaObject@QMediaPlaylistProvider@@2UQMetaObject@@B @ 899 NONAME ; struct QMetaObject const QMediaPlaylistProvider::staticMetaObject + ?staticMetaObject@QVideoWidget@@2UQMetaObject@@B @ 900 NONAME ; struct QMetaObject const QVideoWidget::staticMetaObject + ?staticMetaObject@QMediaPlaylistControl@@2UQMetaObject@@B @ 901 NONAME ; struct QMetaObject const QMediaPlaylistControl::staticMetaObject + ?staticMetaObject@QMediaControl@@2UQMetaObject@@B @ 902 NONAME ; struct QMetaObject const QMediaControl::staticMetaObject + ?staticMetaObject@QLocalMediaPlaylistProvider@@2UQMetaObject@@B @ 903 NONAME ; struct QMetaObject const QLocalMediaPlaylistProvider::staticMetaObject + ?staticMetaObject@QMediaServiceProviderPlugin@@2UQMetaObject@@B @ 904 NONAME ; struct QMetaObject const QMediaServiceProviderPlugin::staticMetaObject + ?staticMetaObject@QVideoOutputControl@@2UQMetaObject@@B @ 905 NONAME ; struct QMetaObject const QVideoOutputControl::staticMetaObject + ?staticMetaObject@QMetaDataControl@@2UQMetaObject@@B @ 906 NONAME ; struct QMetaObject const QMetaDataControl::staticMetaObject + ?staticMetaObject@QMediaPlayer@@2UQMetaObject@@B @ 907 NONAME ; struct QMetaObject const QMediaPlayer::staticMetaObject + ?staticMetaObject@QMediaService@@2UQMetaObject@@B @ 908 NONAME ; struct QMetaObject const QMediaService::staticMetaObject + ?staticMetaObject@QMediaObject@@2UQMetaObject@@B @ 909 NONAME ; struct QMetaObject const QMediaObject::staticMetaObject + ?staticMetaObject@QMediaPlaylist@@2UQMetaObject@@B @ 910 NONAME ; struct QMetaObject const QMediaPlaylist::staticMetaObject + ?staticMetaObject@QMediaServiceProvider@@2UQMetaObject@@B @ 911 NONAME ; struct QMetaObject const QMediaServiceProvider::staticMetaObject + ?staticMetaObject@QMediaPlayerControl@@2UQMetaObject@@B @ 912 NONAME ; struct QMetaObject const QMediaPlayerControl::staticMetaObject + ?staticMetaObject@QMediaPlaylistNavigator@@2UQMetaObject@@B @ 913 NONAME ; struct QMetaObject const QMediaPlaylistNavigator::staticMetaObject + ?staticMetaObject@QVideoWidgetControl@@2UQMetaObject@@B @ 914 NONAME ; struct QMetaObject const QVideoWidgetControl::staticMetaObject + ?staticMetaObject@QVideoWindowControl@@2UQMetaObject@@B @ 915 NONAME ; struct QMetaObject const QVideoWindowControl::staticMetaObject + ?staticMetaObject@QVideoDeviceControl@@2UQMetaObject@@B @ 916 NONAME ; struct QMetaObject const QVideoDeviceControl::staticMetaObject + ?staticMetaObject@QVideoRendererControl@@2UQMetaObject@@B @ 917 NONAME ; struct QMetaObject const QVideoRendererControl::staticMetaObject + ?staticMetaObject@QPainterVideoSurface@@2UQMetaObject@@B @ 918 NONAME ; struct QMetaObject const QPainterVideoSurface::staticMetaObject + ?staticMetaObject@QMediaPlaylistIOPlugin@@2UQMetaObject@@B @ 919 NONAME ; struct QMetaObject const QMediaPlaylistIOPlugin::staticMetaObject + ?staticMetaObject@QGraphicsVideoItem@@2UQMetaObject@@B @ 920 NONAME ; struct QMetaObject const QGraphicsVideoItem::staticMetaObject diff --git a/src/s60installs/bwins/QtNetworku.def b/src/s60installs/bwins/QtNetworku.def index 3d604fc..a24e0f5 100644 --- a/src/s60installs/bwins/QtNetworku.def +++ b/src/s60installs/bwins/QtNetworku.def @@ -962,4 +962,168 @@ EXPORTS ?staticMetaObject@QTcpServer@@2UQMetaObject@@B @ 961 NONAME ; struct QMetaObject const QTcpServer::staticMetaObject ?staticMetaObject@QUdpSocket@@2UQMetaObject@@B @ 962 NONAME ; struct QMetaObject const QUdpSocket::staticMetaObject ?staticMetaObject@QAbstractSocket@@2UQMetaObject@@B @ 963 NONAME ; struct QMetaObject const QAbstractSocket::staticMetaObject + ??0QBearerEngine@@QAE@PAVQObject@@@Z @ 964 NONAME ; QBearerEngine::QBearerEngine(class QObject *) + ??0QBearerEnginePlugin@@QAE@PAVQObject@@@Z @ 965 NONAME ; QBearerEnginePlugin::QBearerEnginePlugin(class QObject *) + ??0QNetworkConfiguration@@QAE@ABV0@@Z @ 966 NONAME ; QNetworkConfiguration::QNetworkConfiguration(class QNetworkConfiguration const &) + ??0QNetworkConfiguration@@QAE@XZ @ 967 NONAME ; QNetworkConfiguration::QNetworkConfiguration(void) + ??0QNetworkConfigurationManager@@QAE@PAVQObject@@@Z @ 968 NONAME ; QNetworkConfigurationManager::QNetworkConfigurationManager(class QObject *) + ??0QNetworkConfigurationManagerPrivate@@QAE@XZ @ 969 NONAME ; QNetworkConfigurationManagerPrivate::QNetworkConfigurationManagerPrivate(void) + ??0QNetworkSession@@QAE@ABVQNetworkConfiguration@@PAVQObject@@@Z @ 970 NONAME ; QNetworkSession::QNetworkSession(class QNetworkConfiguration const &, class QObject *) + ??0QNetworkSessionPrivate@@QAE@XZ @ 971 NONAME ; QNetworkSessionPrivate::QNetworkSessionPrivate(void) + ??1QBearerEngine@@UAE@XZ @ 972 NONAME ; QBearerEngine::~QBearerEngine(void) + ??1QBearerEngineFactoryInterface@@UAE@XZ @ 973 NONAME ; QBearerEngineFactoryInterface::~QBearerEngineFactoryInterface(void) + ??1QBearerEnginePlugin@@UAE@XZ @ 974 NONAME ; QBearerEnginePlugin::~QBearerEnginePlugin(void) + ??1QNetworkConfiguration@@QAE@XZ @ 975 NONAME ; QNetworkConfiguration::~QNetworkConfiguration(void) + ??1QNetworkConfigurationManager@@UAE@XZ @ 976 NONAME ; QNetworkConfigurationManager::~QNetworkConfigurationManager(void) + ??1QNetworkConfigurationManagerPrivate@@UAE@XZ @ 977 NONAME ; QNetworkConfigurationManagerPrivate::~QNetworkConfigurationManagerPrivate(void) + ??1QNetworkSession@@UAE@XZ @ 978 NONAME ; QNetworkSession::~QNetworkSession(void) + ??1QNetworkSessionPrivate@@UAE@XZ @ 979 NONAME ; QNetworkSessionPrivate::~QNetworkSessionPrivate(void) + ??4QNetworkConfiguration@@QAEAAV0@ABV0@@Z @ 980 NONAME ; class QNetworkConfiguration & QNetworkConfiguration::operator=(class QNetworkConfiguration const &) + ??8QNetworkConfiguration@@QBE_NABV0@@Z @ 981 NONAME ; bool QNetworkConfiguration::operator==(class QNetworkConfiguration const &) const + ??9QNetworkConfiguration@@QBE_NABV0@@Z @ 982 NONAME ; bool QNetworkConfiguration::operator!=(class QNetworkConfiguration const &) const + ??_EQBearerEngine@@UAE@I@Z @ 983 NONAME ; QBearerEngine::~QBearerEngine(unsigned int) + ??_EQBearerEngineFactoryInterface@@UAE@I@Z @ 984 NONAME ; QBearerEngineFactoryInterface::~QBearerEngineFactoryInterface(unsigned int) + ??_EQBearerEnginePlugin@@UAE@I@Z @ 985 NONAME ; QBearerEnginePlugin::~QBearerEnginePlugin(unsigned int) + ??_EQNetworkConfigurationManager@@UAE@I@Z @ 986 NONAME ; QNetworkConfigurationManager::~QNetworkConfigurationManager(unsigned int) + ??_EQNetworkConfigurationManagerPrivate@@UAE@I@Z @ 987 NONAME ; QNetworkConfigurationManagerPrivate::~QNetworkConfigurationManagerPrivate(unsigned int) + ??_EQNetworkSession@@UAE@I@Z @ 988 NONAME ; QNetworkSession::~QNetworkSession(unsigned int) + ??_EQNetworkSessionPrivate@@UAE@I@Z @ 989 NONAME ; QNetworkSessionPrivate::~QNetworkSessionPrivate(unsigned int) + ?abort@QNetworkConfigurationManagerPrivate@@IAEXXZ @ 990 NONAME ; void QNetworkConfigurationManagerPrivate::abort(void) + ?accept@QNetworkSession@@QAEXXZ @ 991 NONAME ; void QNetworkSession::accept(void) + ?activeConfiguration@QNetworkAccessManager@@QBE?AVQNetworkConfiguration@@XZ @ 992 NONAME ; class QNetworkConfiguration QNetworkAccessManager::activeConfiguration(void) const + ?activeTime@QNetworkSession@@QBE_KXZ @ 993 NONAME ; unsigned long long QNetworkSession::activeTime(void) const + ?allConfigurations@QNetworkConfigurationManager@@QBE?AV?$QList@VQNetworkConfiguration@@@@V?$QFlags@W4StateFlag@QNetworkConfiguration@@@@@Z @ 994 NONAME ; class QList QNetworkConfigurationManager::allConfigurations(class QFlags) const + ?bearerName@QNetworkConfiguration@@QBE?AVQString@@XZ @ 995 NONAME ; class QString QNetworkConfiguration::bearerName(void) const + ?bytesReceived@QNetworkSession@@QBE_KXZ @ 996 NONAME ; unsigned long long QNetworkSession::bytesReceived(void) const + ?bytesWritten@QNetworkSession@@QBE_KXZ @ 997 NONAME ; unsigned long long QNetworkSession::bytesWritten(void) const + ?capabilities@QNetworkConfigurationManager@@QBE?AV?$QFlags@W4Capability@QNetworkConfigurationManager@@@@XZ @ 998 NONAME ; class QFlags QNetworkConfigurationManager::capabilities(void) const + ?children@QNetworkConfiguration@@QBE?AV?$QList@VQNetworkConfiguration@@@@XZ @ 999 NONAME ; class QList QNetworkConfiguration::children(void) const + ?close@QNetworkSession@@QAEXXZ @ 1000 NONAME ; void QNetworkSession::close(void) + ?closed@QNetworkSession@@IAEXXZ @ 1001 NONAME ; void QNetworkSession::closed(void) + ?closed@QNetworkSessionPrivate@@IAEXXZ @ 1002 NONAME ; void QNetworkSessionPrivate::closed(void) + ?configuration@QNetworkAccessManager@@QBE?AVQNetworkConfiguration@@XZ @ 1003 NONAME ; class QNetworkConfiguration QNetworkAccessManager::configuration(void) const + ?configuration@QNetworkSession@@QBE?AVQNetworkConfiguration@@XZ @ 1004 NONAME ; class QNetworkConfiguration QNetworkSession::configuration(void) const + ?configurationAdded@QBearerEngine@@IAEXV?$QExplicitlySharedDataPointer@VQNetworkConfigurationPrivate@@@@@Z @ 1005 NONAME ; void QBearerEngine::configurationAdded(class QExplicitlySharedDataPointer) + ?configurationAdded@QNetworkConfigurationManager@@IAEXABVQNetworkConfiguration@@@Z @ 1006 NONAME ; void QNetworkConfigurationManager::configurationAdded(class QNetworkConfiguration const &) + ?configurationAdded@QNetworkConfigurationManagerPrivate@@AAEXV?$QExplicitlySharedDataPointer@VQNetworkConfigurationPrivate@@@@@Z @ 1007 NONAME ; void QNetworkConfigurationManagerPrivate::configurationAdded(class QExplicitlySharedDataPointer) + ?configurationAdded@QNetworkConfigurationManagerPrivate@@IAEXABVQNetworkConfiguration@@@Z @ 1008 NONAME ; void QNetworkConfigurationManagerPrivate::configurationAdded(class QNetworkConfiguration const &) + ?configurationChanged@QBearerEngine@@IAEXV?$QExplicitlySharedDataPointer@VQNetworkConfigurationPrivate@@@@@Z @ 1009 NONAME ; void QBearerEngine::configurationChanged(class QExplicitlySharedDataPointer) + ?configurationChanged@QNetworkConfigurationManager@@IAEXABVQNetworkConfiguration@@@Z @ 1010 NONAME ; void QNetworkConfigurationManager::configurationChanged(class QNetworkConfiguration const &) + ?configurationChanged@QNetworkConfigurationManagerPrivate@@AAEXV?$QExplicitlySharedDataPointer@VQNetworkConfigurationPrivate@@@@@Z @ 1011 NONAME ; void QNetworkConfigurationManagerPrivate::configurationChanged(class QExplicitlySharedDataPointer) + ?configurationChanged@QNetworkConfigurationManagerPrivate@@IAEXABVQNetworkConfiguration@@@Z @ 1012 NONAME ; void QNetworkConfigurationManagerPrivate::configurationChanged(class QNetworkConfiguration const &) + ?configurationFromIdentifier@QNetworkConfigurationManager@@QBE?AVQNetworkConfiguration@@ABVQString@@@Z @ 1013 NONAME ; class QNetworkConfiguration QNetworkConfigurationManager::configurationFromIdentifier(class QString const &) const + ?configurationRemoved@QBearerEngine@@IAEXV?$QExplicitlySharedDataPointer@VQNetworkConfigurationPrivate@@@@@Z @ 1014 NONAME ; void QBearerEngine::configurationRemoved(class QExplicitlySharedDataPointer) + ?configurationRemoved@QNetworkConfigurationManager@@IAEXABVQNetworkConfiguration@@@Z @ 1015 NONAME ; void QNetworkConfigurationManager::configurationRemoved(class QNetworkConfiguration const &) + ?configurationRemoved@QNetworkConfigurationManagerPrivate@@AAEXV?$QExplicitlySharedDataPointer@VQNetworkConfigurationPrivate@@@@@Z @ 1016 NONAME ; void QNetworkConfigurationManagerPrivate::configurationRemoved(class QExplicitlySharedDataPointer) + ?configurationRemoved@QNetworkConfigurationManagerPrivate@@IAEXABVQNetworkConfiguration@@@Z @ 1017 NONAME ; void QNetworkConfigurationManagerPrivate::configurationRemoved(class QNetworkConfiguration const &) + ?configurationUpdateComplete@QNetworkConfigurationManagerPrivate@@IAEXXZ @ 1018 NONAME ; void QNetworkConfigurationManagerPrivate::configurationUpdateComplete(void) + ?connectNotify@QNetworkSession@@MAEXPBD@Z @ 1019 NONAME ; void QNetworkSession::connectNotify(char const *) + ?defaultConfiguration@QNetworkConfigurationManager@@QBE?AVQNetworkConfiguration@@XZ @ 1020 NONAME ; class QNetworkConfiguration QNetworkConfigurationManager::defaultConfiguration(void) const + ?disconnectNotify@QNetworkSession@@MAEXPBD@Z @ 1021 NONAME ; void QNetworkSession::disconnectNotify(char const *) + ?engines@QNetworkConfigurationManagerPrivate@@QAE?AV?$QList@PAVQBearerEngine@@@@XZ @ 1022 NONAME ; class QList QNetworkConfigurationManagerPrivate::engines(void) + ?error@QNetworkSession@@IAEXW4SessionError@1@@Z @ 1023 NONAME ; void QNetworkSession::error(enum QNetworkSession::SessionError) + ?error@QNetworkSession@@QBE?AW4SessionError@1@XZ @ 1024 NONAME ; enum QNetworkSession::SessionError QNetworkSession::error(void) const + ?error@QNetworkSessionPrivate@@IAEXW4SessionError@QNetworkSession@@@Z @ 1025 NONAME ; void QNetworkSessionPrivate::error(enum QNetworkSession::SessionError) + ?errorString@QNetworkSession@@QBE?AVQString@@XZ @ 1026 NONAME ; class QString QNetworkSession::errorString(void) const + ?getStaticMetaObject@QBearerEngine@@SAABUQMetaObject@@XZ @ 1027 NONAME ; struct QMetaObject const & QBearerEngine::getStaticMetaObject(void) + ?getStaticMetaObject@QBearerEnginePlugin@@SAABUQMetaObject@@XZ @ 1028 NONAME ; struct QMetaObject const & QBearerEnginePlugin::getStaticMetaObject(void) + ?getStaticMetaObject@QNetworkConfigurationManager@@SAABUQMetaObject@@XZ @ 1029 NONAME ; struct QMetaObject const & QNetworkConfigurationManager::getStaticMetaObject(void) + ?getStaticMetaObject@QNetworkConfigurationManagerPrivate@@SAABUQMetaObject@@XZ @ 1030 NONAME ; struct QMetaObject const & QNetworkConfigurationManagerPrivate::getStaticMetaObject(void) + ?getStaticMetaObject@QNetworkSession@@SAABUQMetaObject@@XZ @ 1031 NONAME ; struct QMetaObject const & QNetworkSession::getStaticMetaObject(void) + ?getStaticMetaObject@QNetworkSessionPrivate@@SAABUQMetaObject@@XZ @ 1032 NONAME ; struct QMetaObject const & QNetworkSessionPrivate::getStaticMetaObject(void) + ?identifier@QNetworkConfiguration@@QBE?AVQString@@XZ @ 1033 NONAME ; class QString QNetworkConfiguration::identifier(void) const + ?ignore@QNetworkSession@@QAEXXZ @ 1034 NONAME ; void QNetworkSession::ignore(void) + ?interface@QNetworkSession@@QBE?AVQNetworkInterface@@XZ @ 1035 NONAME ; class QNetworkInterface QNetworkSession::interface(void) const + ?isOnline@QNetworkConfigurationManager@@QBE_NXZ @ 1036 NONAME ; bool QNetworkConfigurationManager::isOnline(void) const + ?isOpen@QNetworkSession@@QBE_NXZ @ 1037 NONAME ; bool QNetworkSession::isOpen(void) const + ?isRoamingAvailable@QNetworkConfiguration@@QBE_NXZ @ 1038 NONAME ; bool QNetworkConfiguration::isRoamingAvailable(void) const + ?isValid@QNetworkConfiguration@@QBE_NXZ @ 1039 NONAME ; bool QNetworkConfiguration::isValid(void) const + ?metaObject@QBearerEngine@@UBEPBUQMetaObject@@XZ @ 1040 NONAME ; struct QMetaObject const * QBearerEngine::metaObject(void) const + ?metaObject@QBearerEnginePlugin@@UBEPBUQMetaObject@@XZ @ 1041 NONAME ; struct QMetaObject const * QBearerEnginePlugin::metaObject(void) const + ?metaObject@QNetworkConfigurationManager@@UBEPBUQMetaObject@@XZ @ 1042 NONAME ; struct QMetaObject const * QNetworkConfigurationManager::metaObject(void) const + ?metaObject@QNetworkConfigurationManagerPrivate@@UBEPBUQMetaObject@@XZ @ 1043 NONAME ; struct QMetaObject const * QNetworkConfigurationManagerPrivate::metaObject(void) const + ?metaObject@QNetworkSession@@UBEPBUQMetaObject@@XZ @ 1044 NONAME ; struct QMetaObject const * QNetworkSession::metaObject(void) const + ?metaObject@QNetworkSessionPrivate@@UBEPBUQMetaObject@@XZ @ 1045 NONAME ; struct QMetaObject const * QNetworkSessionPrivate::metaObject(void) const + ?migrate@QNetworkSession@@QAEXXZ @ 1046 NONAME ; void QNetworkSession::migrate(void) + ?name@QNetworkConfiguration@@QBE?AVQString@@XZ @ 1047 NONAME ; class QString QNetworkConfiguration::name(void) const + ?networkAccessChanged@QNetworkAccessManager@@IAEX_N@Z @ 1048 NONAME ; void QNetworkAccessManager::networkAccessChanged(bool) + ?networkAccessEnabled@QNetworkAccessManager@@QBE_NXZ @ 1049 NONAME ; bool QNetworkAccessManager::networkAccessEnabled(void) const + ?networkSessionOnline@QNetworkAccessManager@@IAEXXZ @ 1050 NONAME ; void QNetworkAccessManager::networkSessionOnline(void) + ?newConfigurationActivated@QNetworkSession@@IAEXXZ @ 1051 NONAME ; void QNetworkSession::newConfigurationActivated(void) + ?newConfigurationActivated@QNetworkSessionPrivate@@IAEXXZ @ 1052 NONAME ; void QNetworkSessionPrivate::newConfigurationActivated(void) + ?onlineStateChanged@QNetworkConfigurationManager@@IAEX_N@Z @ 1053 NONAME ; void QNetworkConfigurationManager::onlineStateChanged(bool) + ?onlineStateChanged@QNetworkConfigurationManagerPrivate@@IAEX_N@Z @ 1054 NONAME ; void QNetworkConfigurationManagerPrivate::onlineStateChanged(bool) + ?open@QNetworkSession@@QAEXXZ @ 1055 NONAME ; void QNetworkSession::open(void) + ?opened@QNetworkSession@@IAEXXZ @ 1056 NONAME ; void QNetworkSession::opened(void) + ?performAsyncConfigurationUpdate@QNetworkConfigurationManagerPrivate@@QAEXXZ @ 1057 NONAME ; void QNetworkConfigurationManagerPrivate::performAsyncConfigurationUpdate(void) + ?preferredConfigurationChanged@QNetworkSession@@IAEXABVQNetworkConfiguration@@_N@Z @ 1058 NONAME ; void QNetworkSession::preferredConfigurationChanged(class QNetworkConfiguration const &, bool) + ?preferredConfigurationChanged@QNetworkSessionPrivate@@IAEXABVQNetworkConfiguration@@_N@Z @ 1059 NONAME ; void QNetworkSessionPrivate::preferredConfigurationChanged(class QNetworkConfiguration const &, bool) + ?priority@QNetworkRequest@@QBE?AW4Priority@1@XZ @ 1060 NONAME ; enum QNetworkRequest::Priority QNetworkRequest::priority(void) const + ?privateConfiguration@QNetworkSessionPrivate@@IBE?AV?$QExplicitlySharedDataPointer@VQNetworkConfigurationPrivate@@@@ABVQNetworkConfiguration@@@Z @ 1061 NONAME ; class QExplicitlySharedDataPointer QNetworkSessionPrivate::privateConfiguration(class QNetworkConfiguration const &) const + ?purpose@QNetworkConfiguration@@QBE?AW4Purpose@1@XZ @ 1062 NONAME ; enum QNetworkConfiguration::Purpose QNetworkConfiguration::purpose(void) const + ?qNetworkConfigurationManagerPrivate@@YAPAVQNetworkConfigurationManagerPrivate@@XZ @ 1063 NONAME ; class QNetworkConfigurationManagerPrivate * qNetworkConfigurationManagerPrivate(void) + ?qt_metacall@QBearerEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1064 NONAME ; int QBearerEngine::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QBearerEnginePlugin@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1065 NONAME ; int QBearerEnginePlugin::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QNetworkConfigurationManager@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1066 NONAME ; int QNetworkConfigurationManager::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QNetworkConfigurationManagerPrivate@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1067 NONAME ; int QNetworkConfigurationManagerPrivate::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QNetworkSession@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1068 NONAME ; int QNetworkSession::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QNetworkSessionPrivate@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1069 NONAME ; int QNetworkSessionPrivate::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacast@QBearerEngine@@UAEPAXPBD@Z @ 1070 NONAME ; void * QBearerEngine::qt_metacast(char const *) + ?qt_metacast@QBearerEnginePlugin@@UAEPAXPBD@Z @ 1071 NONAME ; void * QBearerEnginePlugin::qt_metacast(char const *) + ?qt_metacast@QNetworkConfigurationManager@@UAEPAXPBD@Z @ 1072 NONAME ; void * QNetworkConfigurationManager::qt_metacast(char const *) + ?qt_metacast@QNetworkConfigurationManagerPrivate@@UAEPAXPBD@Z @ 1073 NONAME ; void * QNetworkConfigurationManagerPrivate::qt_metacast(char const *) + ?qt_metacast@QNetworkSession@@UAEPAXPBD@Z @ 1074 NONAME ; void * QNetworkSession::qt_metacast(char const *) + ?qt_metacast@QNetworkSessionPrivate@@UAEPAXPBD@Z @ 1075 NONAME ; void * QNetworkSessionPrivate::qt_metacast(char const *) + ?quitPendingWaitsForOpened@QNetworkSessionPrivate@@IAEXXZ @ 1076 NONAME ; void QNetworkSessionPrivate::quitPendingWaitsForOpened(void) + ?rawHeaderPairs@QNetworkReply@@QBEABV?$QList@U?$QPair@VQByteArray@@V1@@@@@XZ @ 1077 NONAME ; class QList > const & QNetworkReply::rawHeaderPairs(void) const + ?reject@QNetworkSession@@QAEXXZ @ 1078 NONAME ; void QNetworkSession::reject(void) + ?sendCustomRequest@QNetworkAccessManager@@QAEPAVQNetworkReply@@ABVQNetworkRequest@@ABVQByteArray@@PAVQIODevice@@@Z @ 1079 NONAME ; class QNetworkReply * QNetworkAccessManager::sendCustomRequest(class QNetworkRequest const &, class QByteArray const &, class QIODevice *) + ?sessionProperty@QNetworkSession@@QBE?AVQVariant@@ABVQString@@@Z @ 1080 NONAME ; class QVariant QNetworkSession::sessionProperty(class QString const &) const + ?setALREnabled@QNetworkSessionPrivate@@UAEX_N@Z @ 1081 NONAME ; void QNetworkSessionPrivate::setALREnabled(bool) + ?setConfiguration@QNetworkAccessManager@@QAEXABVQNetworkConfiguration@@@Z @ 1082 NONAME ; void QNetworkAccessManager::setConfiguration(class QNetworkConfiguration const &) + ?setNetworkAccessEnabled@QNetworkAccessManager@@QAEX_N@Z @ 1083 NONAME ; void QNetworkAccessManager::setNetworkAccessEnabled(bool) + ?setPriority@QNetworkRequest@@QAEXW4Priority@1@@Z @ 1084 NONAME ; void QNetworkRequest::setPriority(enum QNetworkRequest::Priority) + ?setPrivateConfiguration@QNetworkSessionPrivate@@IBEXAAVQNetworkConfiguration@@V?$QExplicitlySharedDataPointer@VQNetworkConfigurationPrivate@@@@@Z @ 1085 NONAME ; void QNetworkSessionPrivate::setPrivateConfiguration(class QNetworkConfiguration &, class QExplicitlySharedDataPointer) const + ?setSessionProperty@QNetworkSession@@QAEXABVQString@@ABVQVariant@@@Z @ 1086 NONAME ; void QNetworkSession::setSessionProperty(class QString const &, class QVariant const &) + ?state@QNetworkConfiguration@@QBE?AV?$QFlags@W4StateFlag@QNetworkConfiguration@@@@XZ @ 1087 NONAME ; class QFlags QNetworkConfiguration::state(void) const + ?state@QNetworkSession@@QBE?AW4State@1@XZ @ 1088 NONAME ; enum QNetworkSession::State QNetworkSession::state(void) const + ?stateChanged@QNetworkSession@@IAEXW4State@1@@Z @ 1089 NONAME ; void QNetworkSession::stateChanged(enum QNetworkSession::State) + ?stateChanged@QNetworkSessionPrivate@@IAEXW4State@QNetworkSession@@@Z @ 1090 NONAME ; void QNetworkSessionPrivate::stateChanged(enum QNetworkSession::State) + ?stop@QNetworkSession@@QAEXXZ @ 1091 NONAME ; void QNetworkSession::stop(void) + ?tr@QBearerEngine@@SA?AVQString@@PBD0@Z @ 1092 NONAME ; class QString QBearerEngine::tr(char const *, char const *) + ?tr@QBearerEngine@@SA?AVQString@@PBD0H@Z @ 1093 NONAME ; class QString QBearerEngine::tr(char const *, char const *, int) + ?tr@QBearerEnginePlugin@@SA?AVQString@@PBD0@Z @ 1094 NONAME ; class QString QBearerEnginePlugin::tr(char const *, char const *) + ?tr@QBearerEnginePlugin@@SA?AVQString@@PBD0H@Z @ 1095 NONAME ; class QString QBearerEnginePlugin::tr(char const *, char const *, int) + ?tr@QNetworkConfigurationManager@@SA?AVQString@@PBD0@Z @ 1096 NONAME ; class QString QNetworkConfigurationManager::tr(char const *, char const *) + ?tr@QNetworkConfigurationManager@@SA?AVQString@@PBD0H@Z @ 1097 NONAME ; class QString QNetworkConfigurationManager::tr(char const *, char const *, int) + ?tr@QNetworkConfigurationManagerPrivate@@SA?AVQString@@PBD0@Z @ 1098 NONAME ; class QString QNetworkConfigurationManagerPrivate::tr(char const *, char const *) + ?tr@QNetworkConfigurationManagerPrivate@@SA?AVQString@@PBD0H@Z @ 1099 NONAME ; class QString QNetworkConfigurationManagerPrivate::tr(char const *, char const *, int) + ?tr@QNetworkSession@@SA?AVQString@@PBD0@Z @ 1100 NONAME ; class QString QNetworkSession::tr(char const *, char const *) + ?tr@QNetworkSession@@SA?AVQString@@PBD0H@Z @ 1101 NONAME ; class QString QNetworkSession::tr(char const *, char const *, int) + ?tr@QNetworkSessionPrivate@@SA?AVQString@@PBD0@Z @ 1102 NONAME ; class QString QNetworkSessionPrivate::tr(char const *, char const *) + ?tr@QNetworkSessionPrivate@@SA?AVQString@@PBD0H@Z @ 1103 NONAME ; class QString QNetworkSessionPrivate::tr(char const *, char const *, int) + ?trUtf8@QBearerEngine@@SA?AVQString@@PBD0@Z @ 1104 NONAME ; class QString QBearerEngine::trUtf8(char const *, char const *) + ?trUtf8@QBearerEngine@@SA?AVQString@@PBD0H@Z @ 1105 NONAME ; class QString QBearerEngine::trUtf8(char const *, char const *, int) + ?trUtf8@QBearerEnginePlugin@@SA?AVQString@@PBD0@Z @ 1106 NONAME ; class QString QBearerEnginePlugin::trUtf8(char const *, char const *) + ?trUtf8@QBearerEnginePlugin@@SA?AVQString@@PBD0H@Z @ 1107 NONAME ; class QString QBearerEnginePlugin::trUtf8(char const *, char const *, int) + ?trUtf8@QNetworkConfigurationManager@@SA?AVQString@@PBD0@Z @ 1108 NONAME ; class QString QNetworkConfigurationManager::trUtf8(char const *, char const *) + ?trUtf8@QNetworkConfigurationManager@@SA?AVQString@@PBD0H@Z @ 1109 NONAME ; class QString QNetworkConfigurationManager::trUtf8(char const *, char const *, int) + ?trUtf8@QNetworkConfigurationManagerPrivate@@SA?AVQString@@PBD0@Z @ 1110 NONAME ; class QString QNetworkConfigurationManagerPrivate::trUtf8(char const *, char const *) + ?trUtf8@QNetworkConfigurationManagerPrivate@@SA?AVQString@@PBD0H@Z @ 1111 NONAME ; class QString QNetworkConfigurationManagerPrivate::trUtf8(char const *, char const *, int) + ?trUtf8@QNetworkSession@@SA?AVQString@@PBD0@Z @ 1112 NONAME ; class QString QNetworkSession::trUtf8(char const *, char const *) + ?trUtf8@QNetworkSession@@SA?AVQString@@PBD0H@Z @ 1113 NONAME ; class QString QNetworkSession::trUtf8(char const *, char const *, int) + ?trUtf8@QNetworkSessionPrivate@@SA?AVQString@@PBD0@Z @ 1114 NONAME ; class QString QNetworkSessionPrivate::trUtf8(char const *, char const *) + ?trUtf8@QNetworkSessionPrivate@@SA?AVQString@@PBD0H@Z @ 1115 NONAME ; class QString QNetworkSessionPrivate::trUtf8(char const *, char const *, int) + ?type@QNetworkConfiguration@@QBE?AW4Type@1@XZ @ 1116 NONAME ; enum QNetworkConfiguration::Type QNetworkConfiguration::type(void) const + ?updateCompleted@QBearerEngine@@IAEXXZ @ 1117 NONAME ; void QBearerEngine::updateCompleted(void) + ?updateCompleted@QNetworkConfigurationManager@@IAEXXZ @ 1118 NONAME ; void QNetworkConfigurationManager::updateCompleted(void) + ?updateConfigurations@QNetworkConfigurationManager@@QAEXXZ @ 1119 NONAME ; void QNetworkConfigurationManager::updateConfigurations(void) + ?updateConfigurations@QNetworkConfigurationManagerPrivate@@QAEXXZ @ 1120 NONAME ; void QNetworkConfigurationManagerPrivate::updateConfigurations(void) + ?waitForOpened@QNetworkSession@@QAE_NH@Z @ 1121 NONAME ; bool QNetworkSession::waitForOpened(int) + ?staticMetaObject@QNetworkSessionPrivate@@2UQMetaObject@@B @ 1122 NONAME ; struct QMetaObject const QNetworkSessionPrivate::staticMetaObject + ?staticMetaObject@QBearerEngine@@2UQMetaObject@@B @ 1123 NONAME ; struct QMetaObject const QBearerEngine::staticMetaObject + ?staticMetaObject@QNetworkSession@@2UQMetaObject@@B @ 1124 NONAME ; struct QMetaObject const QNetworkSession::staticMetaObject + ?staticMetaObject@QNetworkConfigurationManager@@2UQMetaObject@@B @ 1125 NONAME ; struct QMetaObject const QNetworkConfigurationManager::staticMetaObject + ?staticMetaObject@QBearerEnginePlugin@@2UQMetaObject@@B @ 1126 NONAME ; struct QMetaObject const QBearerEnginePlugin::staticMetaObject + ?staticMetaObject@QNetworkConfigurationManagerPrivate@@2UQMetaObject@@B @ 1127 NONAME ; struct QMetaObject const QNetworkConfigurationManagerPrivate::staticMetaObject diff --git a/src/s60installs/bwins/QtScriptu.def b/src/s60installs/bwins/QtScriptu.def index 19f7037..dd467ed 100644 --- a/src/s60installs/bwins/QtScriptu.def +++ b/src/s60installs/bwins/QtScriptu.def @@ -257,7 +257,7 @@ EXPORTS ?processEventsInterval@QScriptEngine@@QBEHXZ @ 256 NONAME ; int QScriptEngine::processEventsInterval(void) const ?property@QScriptClass@@UAE?AVQScriptValue@@ABV2@ABVQScriptString@@I@Z @ 257 NONAME ; class QScriptValue QScriptClass::property(class QScriptValue const &, class QScriptString const &, unsigned int) ?property@QScriptDeclarativeClass@@SA?AVQScriptValue@@ABV2@ABQAX@Z @ 258 NONAME ; class QScriptValue QScriptDeclarativeClass::property(class QScriptValue const &, void * const const &) - ?property@QScriptDeclarativeClass@@UAE?AVQScriptValue@@PAUObject@1@ABQAX@Z @ 259 NONAME ; class QScriptValue QScriptDeclarativeClass::property(struct QScriptDeclarativeClass::Object *, void * const const &) + ?property@QScriptDeclarativeClass@@UAE?AVQScriptValue@@PAUObject@1@ABQAX@Z @ 259 NONAME ABSENT ; class QScriptValue QScriptDeclarativeClass::property(struct QScriptDeclarativeClass::Object *, void * const const &) ?property@QScriptValue@@QBE?AV1@ABVQScriptString@@ABV?$QFlags@W4ResolveFlag@QScriptValue@@@@@Z @ 260 NONAME ; class QScriptValue QScriptValue::property(class QScriptString const &, class QFlags const &) const ?property@QScriptValue@@QBE?AV1@ABVQString@@ABV?$QFlags@W4ResolveFlag@QScriptValue@@@@@Z @ 261 NONAME ; class QScriptValue QScriptValue::property(class QString const &, class QFlags const &) const ?property@QScriptValue@@QBE?AV1@IABV?$QFlags@W4ResolveFlag@QScriptValue@@@@@Z @ 262 NONAME ; class QScriptValue QScriptValue::property(unsigned int, class QFlags const &) const @@ -370,4 +370,29 @@ EXPORTS ?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 + ??0Value@QScriptDeclarativeClass@@QAE@ABV01@@Z @ 372 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptDeclarativeClass::Value const &) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptContext@@ABVQScriptValue@@@Z @ 373 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptContext *, class QScriptValue const &) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptContext@@ABVQString@@@Z @ 374 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptContext *, class QString const &) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptContext@@H@Z @ 375 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptContext *, int) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptContext@@I@Z @ 376 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptContext *, unsigned int) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptContext@@M@Z @ 377 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptContext *, float) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptContext@@N@Z @ 378 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptContext *, double) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptContext@@_N@Z @ 379 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptContext *, bool) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptEngine@@ABVQScriptValue@@@Z @ 380 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptEngine *, class QScriptValue const &) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptEngine@@ABVQString@@@Z @ 381 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptEngine *, class QString const &) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptEngine@@H@Z @ 382 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptEngine *, int) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptEngine@@I@Z @ 383 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptEngine *, unsigned int) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptEngine@@M@Z @ 384 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptEngine *, float) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptEngine@@N@Z @ 385 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptEngine *, double) + ??0Value@QScriptDeclarativeClass@@QAE@PAVQScriptEngine@@_N@Z @ 386 NONAME ; QScriptDeclarativeClass::Value::Value(class QScriptEngine *, bool) + ??0Value@QScriptDeclarativeClass@@QAE@XZ @ 387 NONAME ; QScriptDeclarativeClass::Value::Value(void) + ??1Value@QScriptDeclarativeClass@@QAE@XZ @ 388 NONAME ; QScriptDeclarativeClass::Value::~Value(void) + ?call@QScriptDeclarativeClass@@UAE?AVValue@1@PAUObject@1@PAVQScriptContext@@@Z @ 389 NONAME ; class QScriptDeclarativeClass::Value QScriptDeclarativeClass::call(struct QScriptDeclarativeClass::Object *, class QScriptContext *) + ?functionValue@QScriptDeclarativeClass@@SA?AVValue@1@ABVQScriptValue@@ABQAX@Z @ 390 NONAME ; class QScriptDeclarativeClass::Value QScriptDeclarativeClass::functionValue(class QScriptValue const &, void * const const &) + ?newObjectValue@QScriptDeclarativeClass@@SA?AVValue@1@PAVQScriptEngine@@PAV1@PAUObject@1@@Z @ 391 NONAME ; class QScriptDeclarativeClass::Value QScriptDeclarativeClass::newObjectValue(class QScriptEngine *, class QScriptDeclarativeClass *, struct QScriptDeclarativeClass::Object *) + ?property@QScriptDeclarativeClass@@UAE?AVValue@1@PAUObject@1@ABQAX@Z @ 392 NONAME ; class QScriptDeclarativeClass::Value QScriptDeclarativeClass::property(struct QScriptDeclarativeClass::Object *, void * const const &) + ?propertyValue@QScriptDeclarativeClass@@SA?AVValue@1@ABVQScriptValue@@ABQAX@Z @ 393 NONAME ; class QScriptDeclarativeClass::Value QScriptDeclarativeClass::propertyValue(class QScriptValue const &, void * const const &) + ?setSupportsCall@QScriptDeclarativeClass@@QAEX_N@Z @ 394 NONAME ; void QScriptDeclarativeClass::setSupportsCall(bool) + ?supportsCall@QScriptDeclarativeClass@@QBE_NXZ @ 395 NONAME ; bool QScriptDeclarativeClass::supportsCall(void) const + ?toScriptValue@Value@QScriptDeclarativeClass@@QBE?AVQScriptValue@@PAVQScriptEngine@@@Z @ 396 NONAME ; class QScriptValue QScriptDeclarativeClass::Value::toScriptValue(class QScriptEngine *) const diff --git a/src/s60installs/bwins/QtTestu.def b/src/s60installs/bwins/QtTestu.def index 1da9c13..47198e2 100644 --- a/src/s60installs/bwins/QtTestu.def +++ b/src/s60installs/bwins/QtTestu.def @@ -24,7 +24,7 @@ EXPORTS ?defaultKeyDelay@QTest@@YAHXZ @ 23 NONAME ; int QTest::defaultKeyDelay(void) ?defaultKeyVerbose@QTest@@YA_NXZ @ 24 NONAME ; bool QTest::defaultKeyVerbose(void) ?defaultMouseDelay@QTest@@YAHXZ @ 25 NONAME ; int QTest::defaultMouseDelay(void) - ?endBenchmarkMeasurement@QTest@@YA_JXZ @ 26 NONAME ; long long QTest::endBenchmarkMeasurement(void) + ?endBenchmarkMeasurement@QTest@@YA_JXZ @ 26 NONAME ABSENT ; long long QTest::endBenchmarkMeasurement(void) ?enterLoop@QTestEventLoop@@QAEXH@Z @ 27 NONAME ; void QTestEventLoop::enterLoop(int) ?exitLoop@QTestEventLoop@@QAEXXZ @ 28 NONAME ; void QTestEventLoop::exitLoop(void) ?getStaticMetaObject@QTestEventLoop@@SAABUQMetaObject@@XZ @ 29 NONAME ; struct QMetaObject const & QTestEventLoop::getStaticMetaObject(void) @@ -75,4 +75,6 @@ EXPORTS ?trUtf8@QTestEventLoop@@SA?AVQString@@PBD0@Z @ 74 NONAME ; class QString QTestEventLoop::trUtf8(char const *, char const *) ?trUtf8@QTestEventLoop@@SA?AVQString@@PBD0H@Z @ 75 NONAME ; class QString QTestEventLoop::trUtf8(char const *, char const *, int) ?staticMetaObject@QTestEventLoop@@2UQMetaObject@@B @ 76 NONAME ; struct QMetaObject const QTestEventLoop::staticMetaObject + ?endBenchmarkMeasurement@QTest@@YA_KXZ @ 77 NONAME ; unsigned long long QTest::endBenchmarkMeasurement(void) + ?setBenchmarkResult@QTest@@YAXMW4QBenchmarkMetric@1@@Z @ 78 NONAME ; void QTest::setBenchmarkResult(float, enum QTest::QBenchmarkMetric) diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def index a427ff9..c86eb8c 100644 --- a/src/s60installs/eabi/QtCoreu.def +++ b/src/s60installs/eabi/QtCoreu.def @@ -3634,4 +3634,24 @@ EXPORTS _ZTVN13QStateMachine11SignalEventE @ 3633 NONAME _ZTVN13QStateMachine12WrappedEventE @ 3634 NONAME _ZN11QMetaObject13disconnectOneEPK7QObjectiS2_i @ 3635 NONAME + _Z14qDecodeDataUrlRK4QUrl @ 3636 NONAME + _Z18qDetectCPUFeaturesv @ 3637 NONAME + _ZN10QByteArray7replaceEiiPKci @ 3638 NONAME + _ZN12QTextDecoderC1EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3639 NONAME + _ZN12QTextDecoderC2EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3640 NONAME + _ZN12QTextEncoderC1EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3641 NONAME + _ZN12QTextEncoderC2EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3642 NONAME + _ZN7QStringC1EPK5QChar @ 3643 NONAME + _ZN7QStringC2EPK5QChar @ 3644 NONAME + _ZN8QVariantC1ERK12QEasingCurve @ 3645 NONAME + _ZN8QVariantC2ERK12QEasingCurve @ 3646 NONAME + _ZN9QListData11detach_growEPii @ 3647 NONAME + _ZN9QListData6appendEi @ 3648 NONAME + _ZN9QListData6detachEi @ 3649 NONAME + _ZN9QMetaType23registerStreamOperatorsEiPFvR11QDataStreamPKvEPFvS1_PvE @ 3650 NONAME + _ZNK10QTextCodec11makeDecoderE6QFlagsINS_14ConversionFlagEE @ 3651 NONAME + _ZNK10QTextCodec11makeEncoderE6QFlagsINS_14ConversionFlagEE @ 3652 NONAME + _ZNK8QVariant13toEasingCurveEv @ 3653 NONAME + _ZlsR11QDataStreamRK12QEasingCurve @ 3654 NONAME + _ZrsR11QDataStreamR12QEasingCurve @ 3655 NONAME diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def new file mode 100644 index 0000000..3708e21 --- /dev/null +++ b/src/s60installs/eabi/QtDeclarativeu.def @@ -0,0 +1,3479 @@ +EXPORTS + _Z10qmlContextPK7QObject @ 1 NONAME + _Z18qmlExecuteDeferredP7QObject @ 2 NONAME + _Z27qmlAttachedPropertiesObjectPiPK7QObjectPK11QMetaObjectb @ 3 NONAME + _Z31qmlAttachedPropertiesObjectByIdiPK7QObjectb @ 4 NONAME + _Z7qmlInfoPK7QObject @ 5 NONAME + _Z9qmlEnginePK7QObject @ 6 NONAME + _ZN15QDeclarativePen10penChangedEv @ 7 NONAME + _ZN15QDeclarativePen11qt_metacallEN11QMetaObject4CallEiPPv @ 8 NONAME + _ZN15QDeclarativePen11qt_metacastEPKc @ 9 NONAME + _ZN15QDeclarativePen16staticMetaObjectE @ 10 NONAME DATA 16 + _ZN15QDeclarativePen19getStaticMetaObjectEv @ 11 NONAME + _ZN15QDeclarativePen8setColorERK6QColor @ 12 NONAME + _ZN15QDeclarativePen8setWidthEi @ 13 NONAME + _ZN15QDeclarativeRow11qt_metacallEN11QMetaObject4CallEiPPv @ 14 NONAME + _ZN15QDeclarativeRow11qt_metacastEPKc @ 15 NONAME + _ZN15QDeclarativeRow13doPositioningEv @ 16 NONAME + _ZN15QDeclarativeRow16staticMetaObjectE @ 17 NONAME DATA 16 + _ZN15QDeclarativeRow19getStaticMetaObjectEv @ 18 NONAME + _ZN15QDeclarativeRowC1EP16QDeclarativeItem @ 19 NONAME + _ZN15QDeclarativeRowC2EP16QDeclarativeItem @ 20 NONAME + _ZN15QPacketAutoSendC1EP15QPacketProtocol @ 21 NONAME + _ZN15QPacketAutoSendC2EP15QPacketProtocol @ 22 NONAME + _ZN15QPacketAutoSendD0Ev @ 23 NONAME + _ZN15QPacketAutoSendD1Ev @ 24 NONAME + _ZN15QPacketAutoSendD2Ev @ 25 NONAME + _ZN15QPacketProtocol11qt_metacallEN11QMetaObject4CallEiPPv @ 26 NONAME + _ZN15QPacketProtocol11qt_metacastEPKc @ 27 NONAME + _ZN15QPacketProtocol13invalidPacketEv @ 28 NONAME + _ZN15QPacketProtocol13packetWrittenEv @ 29 NONAME + _ZN15QPacketProtocol16staticMetaObjectE @ 30 NONAME DATA 16 + _ZN15QPacketProtocol19getStaticMetaObjectEv @ 31 NONAME + _ZN15QPacketProtocol20setMaximumPacketSizeEi @ 32 NONAME + _ZN15QPacketProtocol4readEv @ 33 NONAME + _ZN15QPacketProtocol4sendERK7QPacket @ 34 NONAME + _ZN15QPacketProtocol4sendEv @ 35 NONAME + _ZN15QPacketProtocol5clearEv @ 36 NONAME + _ZN15QPacketProtocol6deviceEv @ 37 NONAME + _ZN15QPacketProtocol9readyReadEv @ 38 NONAME + _ZN15QPacketProtocolC1EP9QIODeviceP7QObject @ 39 NONAME + _ZN15QPacketProtocolC2EP9QIODeviceP7QObject @ 40 NONAME + _ZN15QPacketProtocolD0Ev @ 41 NONAME + _ZN15QPacketProtocolD1Ev @ 42 NONAME + _ZN15QPacketProtocolD2Ev @ 43 NONAME + _ZN15QPerformanceLog11displayDataEv @ 44 NONAME + _ZN15QPerformanceLog5clearEv @ 45 NONAME + _ZN16QDeclarativeBind11qt_metacallEN11QMetaObject4CallEiPPv @ 46 NONAME + _ZN16QDeclarativeBind11qt_metacastEPKc @ 47 NONAME + _ZN16QDeclarativeBind11setPropertyERK7QString @ 48 NONAME + _ZN16QDeclarativeBind16staticMetaObjectE @ 49 NONAME DATA 16 + _ZN16QDeclarativeBind17componentCompleteEv @ 50 NONAME + _ZN16QDeclarativeBind19getStaticMetaObjectEv @ 51 NONAME + _ZN16QDeclarativeBind4evalEv @ 52 NONAME + _ZN16QDeclarativeBind6objectEv @ 53 NONAME + _ZN16QDeclarativeBind7setWhenEb @ 54 NONAME + _ZN16QDeclarativeBind8setValueERK8QVariant @ 55 NONAME + _ZN16QDeclarativeBind9setObjectEP7QObject @ 56 NONAME + _ZN16QDeclarativeBindC1EP7QObject @ 57 NONAME + _ZN16QDeclarativeBindC2EP7QObject @ 58 NONAME + _ZN16QDeclarativeBindD0Ev @ 59 NONAME + _ZN16QDeclarativeBindD1Ev @ 60 NONAME + _ZN16QDeclarativeBindD2Ev @ 61 NONAME + _ZN16QDeclarativeDrag11axisChangedEv @ 62 NONAME + _ZN16QDeclarativeDrag11qt_metacallEN11QMetaObject4CallEiPPv @ 63 NONAME + _ZN16QDeclarativeDrag11qt_metacastEPKc @ 64 NONAME + _ZN16QDeclarativeDrag13targetChangedEv @ 65 NONAME + _ZN16QDeclarativeDrag15maximumXChangedEv @ 66 NONAME + _ZN16QDeclarativeDrag15maximumYChangedEv @ 67 NONAME + _ZN16QDeclarativeDrag15minimumXChangedEv @ 68 NONAME + _ZN16QDeclarativeDrag15minimumYChangedEv @ 69 NONAME + _ZN16QDeclarativeDrag16staticMetaObjectE @ 70 NONAME DATA 16 + _ZN16QDeclarativeDrag19getStaticMetaObjectEv @ 71 NONAME + _ZN16QDeclarativeDrag7setAxisENS_4AxisE @ 72 NONAME + _ZN16QDeclarativeDrag7setXmaxEf @ 73 NONAME + _ZN16QDeclarativeDrag7setXminEf @ 74 NONAME + _ZN16QDeclarativeDrag7setYmaxEf @ 75 NONAME + _ZN16QDeclarativeDrag7setYminEf @ 76 NONAME + _ZN16QDeclarativeDrag9setTargetEP16QDeclarativeItem @ 77 NONAME + _ZN16QDeclarativeDragC1EP7QObject @ 78 NONAME + _ZN16QDeclarativeDragC2EP7QObject @ 79 NONAME + _ZN16QDeclarativeDragD0Ev @ 80 NONAME + _ZN16QDeclarativeDragD1Ev @ 81 NONAME + _ZN16QDeclarativeDragD2Ev @ 82 NONAME + _ZN16QDeclarativeFlow11flowChangedEv @ 83 NONAME + _ZN16QDeclarativeFlow11qt_metacallEN11QMetaObject4CallEiPPv @ 84 NONAME + _ZN16QDeclarativeFlow11qt_metacastEPKc @ 85 NONAME + _ZN16QDeclarativeFlow13doPositioningEv @ 86 NONAME + _ZN16QDeclarativeFlow16staticMetaObjectE @ 87 NONAME DATA 16 + _ZN16QDeclarativeFlow19getStaticMetaObjectEv @ 88 NONAME + _ZN16QDeclarativeFlow7setFlowENS_4FlowE @ 89 NONAME + _ZN16QDeclarativeFlowC1EP16QDeclarativeItem @ 90 NONAME + _ZN16QDeclarativeFlowC2EP16QDeclarativeItem @ 91 NONAME + _ZN16QDeclarativeGrid10setColumnsEi @ 92 NONAME + _ZN16QDeclarativeGrid11qt_metacallEN11QMetaObject4CallEiPPv @ 93 NONAME + _ZN16QDeclarativeGrid11qt_metacastEPKc @ 94 NONAME + _ZN16QDeclarativeGrid11rowsChangedEv @ 95 NONAME + _ZN16QDeclarativeGrid13doPositioningEv @ 96 NONAME + _ZN16QDeclarativeGrid14columnsChangedEv @ 97 NONAME + _ZN16QDeclarativeGrid16staticMetaObjectE @ 98 NONAME DATA 16 + _ZN16QDeclarativeGrid19getStaticMetaObjectEv @ 99 NONAME + _ZN16QDeclarativeGrid7setRowsEi @ 100 NONAME + _ZN16QDeclarativeGridC1EP16QDeclarativeItem @ 101 NONAME + _ZN16QDeclarativeGridC2EP16QDeclarativeItem @ 102 NONAME + _ZN16QDeclarativeInfoC1EPK7QObject @ 103 NONAME + _ZN16QDeclarativeInfoC2EPK7QObject @ 104 NONAME + _ZN16QDeclarativeInfoD1Ev @ 105 NONAME + _ZN16QDeclarativeInfoD2Ev @ 106 NONAME + _ZN16QDeclarativeItem10classBeginEv @ 107 NONAME + _ZN16QDeclarativeItem10fxChildrenEv @ 108 NONAME + _ZN16QDeclarativeItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 109 NONAME + _ZN16QDeclarativeItem10resetWidthEv @ 110 NONAME + _ZN16QDeclarativeItem10sceneEventEP6QEvent @ 111 NONAME + _ZN16QDeclarativeItem11clipChangedEv @ 112 NONAME + _ZN16QDeclarativeItem11qt_metacallEN11QMetaObject4CallEiPPv @ 113 NONAME + _ZN16QDeclarativeItem11qt_metacastEPKc @ 114 NONAME + _ZN16QDeclarativeItem11resetHeightEv @ 115 NONAME + _ZN16QDeclarativeItem11transitionsEv @ 116 NONAME + _ZN16QDeclarativeItem12childrenRectEv @ 117 NONAME + _ZN16QDeclarativeItem12focusChangedEb @ 118 NONAME + _ZN16QDeclarativeItem12focusChangedEv @ 119 NONAME + _ZN16QDeclarativeItem12stateChangedERK7QString @ 120 NONAME + _ZN16QDeclarativeItem12widthChangedEv @ 121 NONAME + _ZN16QDeclarativeItem13heightChangedEv @ 122 NONAME + _ZN16QDeclarativeItem13keyPressEventEP9QKeyEvent @ 123 NONAME + _ZN16QDeclarativeItem13parentChangedEv @ 124 NONAME + _ZN16QDeclarativeItem13setParentItemEPS_ @ 125 NONAME + _ZN16QDeclarativeItem13smoothChangedEv @ 126 NONAME + _ZN16QDeclarativeItem15childrenChangedEv @ 127 NONAME + _ZN16QDeclarativeItem15geometryChangedERK6QRectFS2_ @ 128 NONAME + _ZN16QDeclarativeItem15keyReleaseEventEP9QKeyEvent @ 129 NONAME + _ZN16QDeclarativeItem16inputMethodEventEP17QInputMethodEvent @ 130 NONAME + _ZN16QDeclarativeItem16setImplicitWidthEf @ 131 NONAME + _ZN16QDeclarativeItem16setKeepMouseGrabEb @ 132 NONAME + _ZN16QDeclarativeItem16staticMetaObjectE @ 133 NONAME DATA 16 + _ZN16QDeclarativeItem17componentCompleteEv @ 134 NONAME + _ZN16QDeclarativeItem17setBaselineOffsetEf @ 135 NONAME + _ZN16QDeclarativeItem17setImplicitHeightEf @ 136 NONAME + _ZN16QDeclarativeItem17wantsFocusChangedEv @ 137 NONAME + _ZN16QDeclarativeItem18setTransformOriginENS_15TransformOriginE @ 138 NONAME + _ZN16QDeclarativeItem19childrenRectChangedEv @ 139 NONAME + _ZN16QDeclarativeItem19getStaticMetaObjectEv @ 140 NONAME + _ZN16QDeclarativeItem21baselineOffsetChangedEv @ 141 NONAME + _ZN16QDeclarativeItem22transformOriginChangedENS_15TransformOriginE @ 142 NONAME + _ZN16QDeclarativeItem4dataEv @ 143 NONAME + _ZN16QDeclarativeItem5eventEP6QEvent @ 144 NONAME + _ZN16QDeclarativeItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 145 NONAME + _ZN16QDeclarativeItem6statesEv @ 146 NONAME + _ZN16QDeclarativeItem7anchorsEv @ 147 NONAME + _ZN16QDeclarativeItem7setClipEb @ 148 NONAME + _ZN16QDeclarativeItem8setFocusEb @ 149 NONAME + _ZN16QDeclarativeItem8setStateERK7QString @ 150 NONAME + _ZN16QDeclarativeItem8setWidthEf @ 151 NONAME + _ZN16QDeclarativeItem9resourcesEv @ 152 NONAME + _ZN16QDeclarativeItem9setHeightEf @ 153 NONAME + _ZN16QDeclarativeItem9setSmoothEb @ 154 NONAME + _ZN16QDeclarativeItem9transformEv @ 155 NONAME + _ZN16QDeclarativeItemC1EPS_ @ 156 NONAME + _ZN16QDeclarativeItemC1ER23QDeclarativeItemPrivatePS_ @ 157 NONAME + _ZN16QDeclarativeItemC2EPS_ @ 158 NONAME + _ZN16QDeclarativeItemC2ER23QDeclarativeItemPrivatePS_ @ 159 NONAME + _ZN16QDeclarativeItemD0Ev @ 160 NONAME + _ZN16QDeclarativeItemD1Ev @ 161 NONAME + _ZN16QDeclarativeItemD2Ev @ 162 NONAME + _ZN16QDeclarativePath11interpolateEiRK7QStringf @ 163 NONAME + _ZN16QDeclarativePath11processPathEv @ 164 NONAME + _ZN16QDeclarativePath11qt_metacallEN11QMetaObject4CallEiPPv @ 165 NONAME + _ZN16QDeclarativePath11qt_metacastEPKc @ 166 NONAME + _ZN16QDeclarativePath12pathElementsEv @ 167 NONAME + _ZN16QDeclarativePath16staticMetaObjectE @ 168 NONAME DATA 16 + _ZN16QDeclarativePath17componentCompleteEv @ 169 NONAME + _ZN16QDeclarativePath19getStaticMetaObjectEv @ 170 NONAME + _ZN16QDeclarativePath7changedEv @ 171 NONAME + _ZN16QDeclarativePath8endpointERK7QString @ 172 NONAME + _ZN16QDeclarativePath9setStartXEf @ 173 NONAME + _ZN16QDeclarativePath9setStartYEf @ 174 NONAME + _ZN16QDeclarativePathC1EP7QObject @ 175 NONAME + _ZN16QDeclarativePathC2EP7QObject @ 176 NONAME + _ZN16QDeclarativePathD0Ev @ 177 NONAME + _ZN16QDeclarativePathD1Ev @ 178 NONAME + _ZN16QDeclarativePathD2Ev @ 179 NONAME + _ZN16QDeclarativeText11fontChangedERK5QFont @ 180 NONAME + _ZN16QDeclarativeText11qt_metacallEN11QMetaObject4CallEiPPv @ 181 NONAME + _ZN16QDeclarativeText11qt_metacastEPKc @ 182 NONAME + _ZN16QDeclarativeText11textChangedERK7QString @ 183 NONAME + _ZN16QDeclarativeText11wrapChangedEb @ 184 NONAME + _ZN16QDeclarativeText12colorChangedERK6QColor @ 185 NONAME + _ZN16QDeclarativeText12setElideModeENS_13TextElideModeE @ 186 NONAME + _ZN16QDeclarativeText12styleChangedENS_9TextStyleE @ 187 NONAME + _ZN16QDeclarativeText13linkActivatedERK7QString @ 188 NONAME + _ZN16QDeclarativeText13setStyleColorERK6QColor @ 189 NONAME + _ZN16QDeclarativeText13setTextFormatENS_10TextFormatE @ 190 NONAME + _ZN16QDeclarativeText15geometryChangedERK6QRectFS2_ @ 191 NONAME + _ZN16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 192 NONAME + _ZN16QDeclarativeText16elideModeChangedENS_13TextElideModeE @ 193 NONAME + _ZN16QDeclarativeText16staticMetaObjectE @ 194 NONAME DATA 16 + _ZN16QDeclarativeText17componentCompleteEv @ 195 NONAME + _ZN16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 196 NONAME + _ZN16QDeclarativeText17styleColorChangedERK6QColor @ 197 NONAME + _ZN16QDeclarativeText17textFormatChangedENS_10TextFormatE @ 198 NONAME + _ZN16QDeclarativeText19getStaticMetaObjectEv @ 199 NONAME + _ZN16QDeclarativeText24verticalAlignmentChangedENS_10VAlignmentE @ 200 NONAME + _ZN16QDeclarativeText26horizontalAlignmentChangedENS_10HAlignmentE @ 201 NONAME + _ZN16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 202 NONAME + _ZN16QDeclarativeText7setFontERK5QFont @ 203 NONAME + _ZN16QDeclarativeText7setTextERK7QString @ 204 NONAME + _ZN16QDeclarativeText7setWrapEb @ 205 NONAME + _ZN16QDeclarativeText8setColorERK6QColor @ 206 NONAME + _ZN16QDeclarativeText8setStyleENS_9TextStyleE @ 207 NONAME + _ZN16QDeclarativeText9setHAlignENS_10HAlignmentE @ 208 NONAME + _ZN16QDeclarativeText9setVAlignENS_10VAlignmentE @ 209 NONAME + _ZN16QDeclarativeTextC1EP16QDeclarativeItem @ 210 NONAME + _ZN16QDeclarativeTextC2EP16QDeclarativeItem @ 211 NONAME + _ZN16QDeclarativeTextD0Ev @ 212 NONAME + _ZN16QDeclarativeTextD1Ev @ 213 NONAME + _ZN16QDeclarativeTextD2Ev @ 214 NONAME + _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate12RegisterTypeE @ 215 NONAME + _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 216 NONAME + _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate12RegisterTypeE @ 217 NONAME + _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 218 NONAME + _ZN16QDeclarativeTypeD1Ev @ 219 NONAME + _ZN16QDeclarativeTypeD2Ev @ 220 NONAME + _ZN16QDeclarativeView10paintEventEP11QPaintEvent @ 221 NONAME + _ZN16QDeclarativeView10timerEventEP11QTimerEvent @ 222 NONAME + _ZN16QDeclarativeView11qt_metacallEN11QMetaObject4CallEiPPv @ 223 NONAME + _ZN16QDeclarativeView11qt_metacastEPKc @ 224 NONAME + _ZN16QDeclarativeView11resizeEventEP12QResizeEvent @ 225 NONAME + _ZN16QDeclarativeView11rootContextEv @ 226 NONAME + _ZN16QDeclarativeView11sizeChangedEv @ 227 NONAME + _ZN16QDeclarativeView12sceneResizedE5QSize @ 228 NONAME + _ZN16QDeclarativeView13setResizeModeENS_10ResizeModeE @ 229 NONAME + _ZN16QDeclarativeView13setRootObjectEP7QObject @ 230 NONAME + _ZN16QDeclarativeView13statusChangedENS_6StatusE @ 231 NONAME + _ZN16QDeclarativeView15continueExecuteEv @ 232 NONAME + _ZN16QDeclarativeView16staticMetaObjectE @ 233 NONAME DATA 16 + _ZN16QDeclarativeView19getStaticMetaObjectEv @ 234 NONAME + _ZN16QDeclarativeView6engineEv @ 235 NONAME + _ZN16QDeclarativeView9setSourceERK4QUrl @ 236 NONAME + _ZN16QDeclarativeViewC1EP7QWidget @ 237 NONAME + _ZN16QDeclarativeViewC1ERK4QUrlP7QWidget @ 238 NONAME + _ZN16QDeclarativeViewC2EP7QWidget @ 239 NONAME + _ZN16QDeclarativeViewC2ERK4QUrlP7QWidget @ 240 NONAME + _ZN16QDeclarativeViewD0Ev @ 241 NONAME + _ZN16QDeclarativeViewD1Ev @ 242 NONAME + _ZN16QDeclarativeViewD2Ev @ 243 NONAME + _ZN16QMetaEnumBuilder6addKeyERK10QByteArrayi @ 244 NONAME + _ZN16QMetaEnumBuilder9removeKeyEi @ 245 NONAME + _ZN16QMetaEnumBuilder9setIsFlagEb @ 246 NONAME + _ZN17QDeclarativeCurve11qt_metacallEN11QMetaObject4CallEiPPv @ 247 NONAME + _ZN17QDeclarativeCurve11qt_metacastEPKc @ 248 NONAME + _ZN17QDeclarativeCurve16staticMetaObjectE @ 249 NONAME DATA 16 + _ZN17QDeclarativeCurve19getStaticMetaObjectEv @ 250 NONAME + _ZN17QDeclarativeCurve4setXEf @ 251 NONAME + _ZN17QDeclarativeCurve4setYEf @ 252 NONAME + _ZN17QDeclarativeError14setDescriptionERK7QString @ 253 NONAME + _ZN17QDeclarativeError6setUrlERK4QUrl @ 254 NONAME + _ZN17QDeclarativeError7setLineEi @ 255 NONAME + _ZN17QDeclarativeError9setColumnEi @ 256 NONAME + _ZN17QDeclarativeErrorC1ERKS_ @ 257 NONAME + _ZN17QDeclarativeErrorC1Ev @ 258 NONAME + _ZN17QDeclarativeErrorC2ERKS_ @ 259 NONAME + _ZN17QDeclarativeErrorC2Ev @ 260 NONAME + _ZN17QDeclarativeErrorD1Ev @ 261 NONAME + _ZN17QDeclarativeErrorD2Ev @ 262 NONAME + _ZN17QDeclarativeErroraSERKS_ @ 263 NONAME + _ZN17QDeclarativeImage11qt_metacallEN11QMetaObject4CallEiPPv @ 264 NONAME + _ZN17QDeclarativeImage11qt_metacastEPKc @ 265 NONAME + _ZN17QDeclarativeImage11setFillModeENS_8FillModeE @ 266 NONAME + _ZN17QDeclarativeImage15fillModeChangedEv @ 267 NONAME + _ZN17QDeclarativeImage15geometryChangedERK6QRectFS2_ @ 268 NONAME + _ZN17QDeclarativeImage16staticMetaObjectE @ 269 NONAME DATA 16 + _ZN17QDeclarativeImage19getStaticMetaObjectEv @ 270 NONAME + _ZN17QDeclarativeImage21updatePaintedGeometryEv @ 271 NONAME + _ZN17QDeclarativeImage22paintedGeometryChangedEv @ 272 NONAME + _ZN17QDeclarativeImage5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 273 NONAME + _ZN17QDeclarativeImage9setPixmapERK7QPixmap @ 274 NONAME + _ZN17QDeclarativeImageC1EP16QDeclarativeItem @ 275 NONAME + _ZN17QDeclarativeImageC1ER24QDeclarativeImagePrivateP16QDeclarativeItem @ 276 NONAME + _ZN17QDeclarativeImageC2EP16QDeclarativeItem @ 277 NONAME + _ZN17QDeclarativeImageC2ER24QDeclarativeImagePrivateP16QDeclarativeItem @ 278 NONAME + _ZN17QDeclarativeImageD0Ev @ 279 NONAME + _ZN17QDeclarativeImageD1Ev @ 280 NONAME + _ZN17QDeclarativeImageD2Ev @ 281 NONAME + _ZN17QDeclarativeState10setExtendsERK7QString @ 282 NONAME + _ZN17QDeclarativeState11qt_metacallEN11QMetaObject4CallEiPPv @ 283 NONAME + _ZN17QDeclarativeState11qt_metacastEPKc @ 284 NONAME + _ZN17QDeclarativeState13setStateGroupEP22QDeclarativeStateGroup @ 285 NONAME + _ZN17QDeclarativeState16staticMetaObjectE @ 286 NONAME DATA 16 + _ZN17QDeclarativeState19getStaticMetaObjectEv @ 287 NONAME + _ZN17QDeclarativeState5applyEP22QDeclarativeStateGroupP22QDeclarativeTransitionPS_ @ 288 NONAME + _ZN17QDeclarativeState6cancelEv @ 289 NONAME + _ZN17QDeclarativeState7changesEv @ 290 NONAME + _ZN17QDeclarativeState7setNameERK7QString @ 291 NONAME + _ZN17QDeclarativeState7setWhenEP19QDeclarativeBinding @ 292 NONAME + _ZN17QDeclarativeState9completedEv @ 293 NONAME + _ZN17QDeclarativeStateC1EP7QObject @ 294 NONAME + _ZN17QDeclarativeStateC2EP7QObject @ 295 NONAME + _ZN17QDeclarativeStateD0Ev @ 296 NONAME + _ZN17QDeclarativeStateD1Ev @ 297 NONAME + _ZN17QDeclarativeStateD2Ev @ 298 NONAME + _ZN17QDeclarativeStatelsEP26QDeclarativeStateOperation @ 299 NONAME + _ZN17QDeclarativeTimer10classBeginEv @ 300 NONAME + _ZN17QDeclarativeTimer10setRunningEb @ 301 NONAME + _ZN17QDeclarativeTimer11qt_metacallEN11QMetaObject4CallEiPPv @ 302 NONAME + _ZN17QDeclarativeTimer11qt_metacastEPKc @ 303 NONAME + _ZN17QDeclarativeTimer11setIntervalEi @ 304 NONAME + _ZN17QDeclarativeTimer12setRepeatingEb @ 305 NONAME + _ZN17QDeclarativeTimer14runningChangedEv @ 306 NONAME + _ZN17QDeclarativeTimer16staticMetaObjectE @ 307 NONAME DATA 16 + _ZN17QDeclarativeTimer17componentCompleteEv @ 308 NONAME + _ZN17QDeclarativeTimer19getStaticMetaObjectEv @ 309 NONAME + _ZN17QDeclarativeTimer19setTriggeredOnStartEb @ 310 NONAME + _ZN17QDeclarativeTimer4stopEv @ 311 NONAME + _ZN17QDeclarativeTimer5startEv @ 312 NONAME + _ZN17QDeclarativeTimer6tickedEv @ 313 NONAME + _ZN17QDeclarativeTimer6updateEv @ 314 NONAME + _ZN17QDeclarativeTimer7restartEv @ 315 NONAME + _ZN17QDeclarativeTimer8finishedEv @ 316 NONAME + _ZN17QDeclarativeTimer9triggeredEv @ 317 NONAME + _ZN17QDeclarativeTimerC1EP7QObject @ 318 NONAME + _ZN17QDeclarativeTimerC2EP7QObject @ 319 NONAME + _ZN18QDeclarativeAction17deleteFromBindingEv @ 320 NONAME + _ZN18QDeclarativeActionC1EP7QObjectRK7QStringRK8QVariant @ 321 NONAME + _ZN18QDeclarativeActionC1Ev @ 322 NONAME + _ZN18QDeclarativeActionC2EP7QObjectRK7QStringRK8QVariant @ 323 NONAME + _ZN18QDeclarativeActionC2Ev @ 324 NONAME + _ZN18QDeclarativeColumn11qt_metacallEN11QMetaObject4CallEiPPv @ 325 NONAME + _ZN18QDeclarativeColumn11qt_metacastEPKc @ 326 NONAME + _ZN18QDeclarativeColumn13doPositioningEv @ 327 NONAME + _ZN18QDeclarativeColumn16staticMetaObjectE @ 328 NONAME DATA 16 + _ZN18QDeclarativeColumn19getStaticMetaObjectEv @ 329 NONAME + _ZN18QDeclarativeColumnC1EP16QDeclarativeItem @ 330 NONAME + _ZN18QDeclarativeColumnC2EP16QDeclarativeItem @ 331 NONAME + _ZN18QDeclarativeEngine10setBaseUrlERK4QUrl @ 332 NONAME + _ZN18QDeclarativeEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 333 NONAME + _ZN18QDeclarativeEngine11qt_metacastEPKc @ 334 NONAME + _ZN18QDeclarativeEngine11rootContextEv @ 335 NONAME + _ZN18QDeclarativeEngine13addImportPathERK7QString @ 336 NONAME + _ZN18QDeclarativeEngine15importExtensionERK7QStringS2_ @ 337 NONAME + _ZN18QDeclarativeEngine16addImageProviderERK7QStringP25QDeclarativeImageProvider @ 338 NONAME + _ZN18QDeclarativeEngine16contextForObjectEPK7QObject @ 339 NONAME + _ZN18QDeclarativeEngine16staticMetaObjectE @ 340 NONAME DATA 16 + _ZN18QDeclarativeEngine19clearComponentCacheEv @ 341 NONAME + _ZN18QDeclarativeEngine19getStaticMetaObjectEv @ 342 NONAME + _ZN18QDeclarativeEngine19removeImageProviderERK7QString @ 343 NONAME + _ZN18QDeclarativeEngine19setContextForObjectEP7QObjectP19QDeclarativeContext @ 344 NONAME + _ZN18QDeclarativeEngine21setOfflineStoragePathERK7QString @ 345 NONAME + _ZN18QDeclarativeEngine30setNetworkAccessManagerFactoryEP39QDeclarativeNetworkAccessManagerFactory @ 346 NONAME + _ZN18QDeclarativeEngine4quitEv @ 347 NONAME + _ZN18QDeclarativeEngineC1EP7QObject @ 348 NONAME + _ZN18QDeclarativeEngineC2EP7QObject @ 349 NONAME + _ZN18QDeclarativeEngineD0Ev @ 350 NONAME + _ZN18QDeclarativeEngineD1Ev @ 351 NONAME + _ZN18QDeclarativeEngineD2Ev @ 352 NONAME + _ZN18QDeclarativeLoader10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 353 NONAME + _ZN18QDeclarativeLoader11eventFilterEP7QObjectP6QEvent @ 354 NONAME + _ZN18QDeclarativeLoader11itemChangedEv @ 355 NONAME + _ZN18QDeclarativeLoader11qt_metacallEN11QMetaObject4CallEiPPv @ 356 NONAME + _ZN18QDeclarativeLoader11qt_metacastEPKc @ 357 NONAME + _ZN18QDeclarativeLoader13setResizeModeENS_10ResizeModeE @ 358 NONAME + _ZN18QDeclarativeLoader13sourceChangedEv @ 359 NONAME + _ZN18QDeclarativeLoader13statusChangedEv @ 360 NONAME + _ZN18QDeclarativeLoader15geometryChangedERK6QRectFS2_ @ 361 NONAME + _ZN18QDeclarativeLoader15progressChangedEv @ 362 NONAME + _ZN18QDeclarativeLoader16staticMetaObjectE @ 363 NONAME DATA 16 + _ZN18QDeclarativeLoader17resizeModeChangedEv @ 364 NONAME + _ZN18QDeclarativeLoader18setSourceComponentEP21QDeclarativeComponent @ 365 NONAME + _ZN18QDeclarativeLoader19getStaticMetaObjectEv @ 366 NONAME + _ZN18QDeclarativeLoader9setSourceERK4QUrl @ 367 NONAME + _ZN18QDeclarativeLoaderC1EP16QDeclarativeItem @ 368 NONAME + _ZN18QDeclarativeLoaderC2EP16QDeclarativeItem @ 369 NONAME + _ZN18QDeclarativeLoaderD0Ev @ 370 NONAME + _ZN18QDeclarativeLoaderD1Ev @ 371 NONAME + _ZN18QDeclarativeLoaderD2Ev @ 372 NONAME + _ZN18QMetaMethodBuilder13setAttributesEi @ 373 NONAME + _ZN18QMetaMethodBuilder13setReturnTypeERK10QByteArray @ 374 NONAME + _ZN18QMetaMethodBuilder17setParameterNamesERK5QListI10QByteArrayE @ 375 NONAME + _ZN18QMetaMethodBuilder6setTagERK10QByteArray @ 376 NONAME + _ZN18QMetaMethodBuilder9setAccessEN11QMetaMethod6AccessE @ 377 NONAME + _ZN18QMetaObjectBuilder11addPropertyERK10QByteArrayS2_i @ 378 NONAME + _ZN18QMetaObjectBuilder11addPropertyERK13QMetaProperty @ 379 NONAME + _ZN18QMetaObjectBuilder11deserializeER11QDataStreamRK4QMapI10QByteArrayPK11QMetaObjectE @ 380 NONAME + _ZN18QMetaObjectBuilder11indexOfSlotERK10QByteArray @ 381 NONAME + _ZN18QMetaObjectBuilder12addClassInfoERK10QByteArrayS2_ @ 382 NONAME + _ZN18QMetaObjectBuilder12removeMethodEi @ 383 NONAME + _ZN18QMetaObjectBuilder12setClassNameERK10QByteArray @ 384 NONAME + _ZN18QMetaObjectBuilder13addEnumeratorERK10QByteArray @ 385 NONAME + _ZN18QMetaObjectBuilder13addEnumeratorERK9QMetaEnum @ 386 NONAME + _ZN18QMetaObjectBuilder13addMetaObjectEPK11QMetaObject6QFlagsINS_9AddMemberEE @ 387 NONAME + _ZN18QMetaObjectBuilder13indexOfMethodERK10QByteArray @ 388 NONAME + _ZN18QMetaObjectBuilder13indexOfSignalERK10QByteArray @ 389 NONAME + _ZN18QMetaObjectBuilder13setSuperClassEPK11QMetaObject @ 390 NONAME + _ZN18QMetaObjectBuilder14addConstructorERK10QByteArray @ 391 NONAME + _ZN18QMetaObjectBuilder14addConstructorERK11QMetaMethod @ 392 NONAME + _ZN18QMetaObjectBuilder14removePropertyEi @ 393 NONAME + _ZN18QMetaObjectBuilder15indexOfPropertyERK10QByteArray @ 394 NONAME + _ZN18QMetaObjectBuilder15removeClassInfoEi @ 395 NONAME + _ZN18QMetaObjectBuilder16indexOfClassInfoERK10QByteArray @ 396 NONAME + _ZN18QMetaObjectBuilder16removeEnumeratorEi @ 397 NONAME + _ZN18QMetaObjectBuilder17indexOfEnumeratorERK10QByteArray @ 398 NONAME + _ZN18QMetaObjectBuilder17removeConstructorEi @ 399 NONAME + _ZN18QMetaObjectBuilder18indexOfConstructorERK10QByteArray @ 400 NONAME + _ZN18QMetaObjectBuilder19fromRelocatableDataEP11QMetaObjectPKS0_RK10QByteArray @ 401 NONAME + _ZN18QMetaObjectBuilder20addRelatedMetaObjectERKPFRK11QMetaObjectvE @ 402 NONAME + _ZN18QMetaObjectBuilder23removeRelatedMetaObjectEi @ 403 NONAME + _ZN18QMetaObjectBuilder25setStaticMetacallFunctionEPFiN11QMetaObject4CallEiPPvE @ 404 NONAME + _ZN18QMetaObjectBuilder7addSlotERK10QByteArray @ 405 NONAME + _ZN18QMetaObjectBuilder8setFlagsE6QFlagsINS_14MetaObjectFlagEE @ 406 NONAME + _ZN18QMetaObjectBuilder9addMethodERK10QByteArray @ 407 NONAME + _ZN18QMetaObjectBuilder9addMethodERK10QByteArrayS2_ @ 408 NONAME + _ZN18QMetaObjectBuilder9addMethodERK11QMetaMethod @ 409 NONAME + _ZN18QMetaObjectBuilder9addSignalERK10QByteArray @ 410 NONAME + _ZN18QMetaObjectBuilderC1EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 411 NONAME + _ZN18QMetaObjectBuilderC1Ev @ 412 NONAME + _ZN18QMetaObjectBuilderC2EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 413 NONAME + _ZN18QMetaObjectBuilderC2Ev @ 414 NONAME + _ZN18QMetaObjectBuilderD0Ev @ 415 NONAME + _ZN18QMetaObjectBuilderD1Ev @ 416 NONAME + _ZN18QMetaObjectBuilderD2Ev @ 417 NONAME + _ZN19QDeclarativeAnchors10classBeginEv @ 418 NONAME + _ZN19QDeclarativeAnchors10resetRightEv @ 419 NONAME + _ZN19QDeclarativeAnchors10setMarginsEf @ 420 NONAME + _ZN19QDeclarativeAnchors10topChangedEv @ 421 NONAME + _ZN19QDeclarativeAnchors11fillChangedEv @ 422 NONAME + _ZN19QDeclarativeAnchors11leftChangedEv @ 423 NONAME + _ZN19QDeclarativeAnchors11qt_metacallEN11QMetaObject4CallEiPPv @ 424 NONAME + _ZN19QDeclarativeAnchors11qt_metacastEPKc @ 425 NONAME + _ZN19QDeclarativeAnchors11resetBottomEv @ 426 NONAME + _ZN19QDeclarativeAnchors11setBaselineERK22QDeclarativeAnchorLine @ 427 NONAME + _ZN19QDeclarativeAnchors11setCenterInEP16QDeclarativeItem @ 428 NONAME + _ZN19QDeclarativeAnchors12rightChangedEv @ 429 NONAME + _ZN19QDeclarativeAnchors12setTopMarginEf @ 430 NONAME + _ZN19QDeclarativeAnchors13bottomChangedEv @ 431 NONAME + _ZN19QDeclarativeAnchors13resetBaselineEv @ 432 NONAME + _ZN19QDeclarativeAnchors13resetCenterInEv @ 433 NONAME + _ZN19QDeclarativeAnchors13setLeftMarginEf @ 434 NONAME + _ZN19QDeclarativeAnchors14marginsChangedEv @ 435 NONAME + _ZN19QDeclarativeAnchors14setRightMarginEf @ 436 NONAME + _ZN19QDeclarativeAnchors15baselineChangedEv @ 437 NONAME + _ZN19QDeclarativeAnchors15centerInChangedEv @ 438 NONAME + _ZN19QDeclarativeAnchors15setBottomMarginEf @ 439 NONAME + _ZN19QDeclarativeAnchors16staticMetaObjectE @ 440 NONAME DATA 16 + _ZN19QDeclarativeAnchors16topMarginChangedEv @ 441 NONAME + _ZN19QDeclarativeAnchors17componentCompleteEv @ 442 NONAME + _ZN19QDeclarativeAnchors17leftMarginChangedEv @ 443 NONAME + _ZN19QDeclarativeAnchors17setBaselineOffsetEf @ 444 NONAME + _ZN19QDeclarativeAnchors17setVerticalCenterERK22QDeclarativeAnchorLine @ 445 NONAME + _ZN19QDeclarativeAnchors18rightMarginChangedEv @ 446 NONAME + _ZN19QDeclarativeAnchors19bottomMarginChangedEv @ 447 NONAME + _ZN19QDeclarativeAnchors19getStaticMetaObjectEv @ 448 NONAME + _ZN19QDeclarativeAnchors19resetVerticalCenterEv @ 449 NONAME + _ZN19QDeclarativeAnchors19setHorizontalCenterERK22QDeclarativeAnchorLine @ 450 NONAME + _ZN19QDeclarativeAnchors21baselineOffsetChangedEv @ 451 NONAME + _ZN19QDeclarativeAnchors21resetHorizontalCenterEv @ 452 NONAME + _ZN19QDeclarativeAnchors21verticalCenterChangedEv @ 453 NONAME + _ZN19QDeclarativeAnchors23horizontalCenterChangedEv @ 454 NONAME + _ZN19QDeclarativeAnchors23setVerticalCenterOffsetEf @ 455 NONAME + _ZN19QDeclarativeAnchors25setHorizontalCenterOffsetEf @ 456 NONAME + _ZN19QDeclarativeAnchors27verticalCenterOffsetChangedEv @ 457 NONAME + _ZN19QDeclarativeAnchors29horizontalCenterOffsetChangedEv @ 458 NONAME + _ZN19QDeclarativeAnchors6setTopERK22QDeclarativeAnchorLine @ 459 NONAME + _ZN19QDeclarativeAnchors7setFillEP16QDeclarativeItem @ 460 NONAME + _ZN19QDeclarativeAnchors7setLeftERK22QDeclarativeAnchorLine @ 461 NONAME + _ZN19QDeclarativeAnchors8resetTopEv @ 462 NONAME + _ZN19QDeclarativeAnchors8setRightERK22QDeclarativeAnchorLine @ 463 NONAME + _ZN19QDeclarativeAnchors9resetFillEv @ 464 NONAME + _ZN19QDeclarativeAnchors9resetLeftEv @ 465 NONAME + _ZN19QDeclarativeAnchors9setBottomERK22QDeclarativeAnchorLine @ 466 NONAME + _ZN19QDeclarativeAnchorsC1EP16QDeclarativeItemP7QObject @ 467 NONAME + _ZN19QDeclarativeAnchorsC1EP7QObject @ 468 NONAME + _ZN19QDeclarativeAnchorsC2EP16QDeclarativeItemP7QObject @ 469 NONAME + _ZN19QDeclarativeAnchorsC2EP7QObject @ 470 NONAME + _ZN19QDeclarativeAnchorsD0Ev @ 471 NONAME + _ZN19QDeclarativeAnchorsD1Ev @ 472 NONAME + _ZN19QDeclarativeAnchorsD2Ev @ 473 NONAME + _ZN19QDeclarativeContext10setBaseUrlERK4QUrl @ 474 NONAME + _ZN19QDeclarativeContext11qt_metacallEN11QMetaObject4CallEiPPv @ 475 NONAME + _ZN19QDeclarativeContext11qt_metacastEPKc @ 476 NONAME + _ZN19QDeclarativeContext11resolvedUrlERK4QUrl @ 477 NONAME + _ZN19QDeclarativeContext16addDefaultObjectEP7QObject @ 478 NONAME + _ZN19QDeclarativeContext16staticMetaObjectE @ 479 NONAME DATA 16 + _ZN19QDeclarativeContext18setContextPropertyERK7QStringP7QObject @ 480 NONAME + _ZN19QDeclarativeContext18setContextPropertyERK7QStringRK8QVariant @ 481 NONAME + _ZN19QDeclarativeContext19getStaticMetaObjectEv @ 482 NONAME + _ZN19QDeclarativeContextC1EP18QDeclarativeEngineP7QObject @ 483 NONAME + _ZN19QDeclarativeContextC1EP18QDeclarativeEngineb @ 484 NONAME + _ZN19QDeclarativeContextC1EPS_P7QObject @ 485 NONAME + _ZN19QDeclarativeContextC1EPS_P7QObjectb @ 486 NONAME + _ZN19QDeclarativeContextC2EP18QDeclarativeEngineP7QObject @ 487 NONAME + _ZN19QDeclarativeContextC2EP18QDeclarativeEngineb @ 488 NONAME + _ZN19QDeclarativeContextC2EPS_P7QObject @ 489 NONAME + _ZN19QDeclarativeContextC2EPS_P7QObjectb @ 490 NONAME + _ZN19QDeclarativeContextD0Ev @ 491 NONAME + _ZN19QDeclarativeContextD1Ev @ 492 NONAME + _ZN19QDeclarativeContextD2Ev @ 493 NONAME + _ZN19QDeclarativeDomListC1ERKS_ @ 494 NONAME + _ZN19QDeclarativeDomListC1Ev @ 495 NONAME + _ZN19QDeclarativeDomListC2ERKS_ @ 496 NONAME + _ZN19QDeclarativeDomListC2Ev @ 497 NONAME + _ZN19QDeclarativeDomListD1Ev @ 498 NONAME + _ZN19QDeclarativeDomListD2Ev @ 499 NONAME + _ZN19QDeclarativeDomListaSERKS_ @ 500 NONAME + _ZN19QDeclarativePrivate12registerTypeERKNS_12RegisterTypeE @ 501 NONAME + _ZN19QDeclarativePrivate12registerTypeERKNS_17RegisterInterfaceE @ 502 NONAME + _ZN19QDeclarativeWebPage10chooseFileEP9QWebFrameRK7QString @ 503 NONAME + _ZN19QDeclarativeWebPage11qt_metacallEN11QMetaObject4CallEiPPv @ 504 NONAME + _ZN19QDeclarativeWebPage11qt_metacastEPKc @ 505 NONAME + _ZN19QDeclarativeWebPage12createPluginERK7QStringRK4QUrlRK11QStringListS8_ @ 506 NONAME + _ZN19QDeclarativeWebPage12createWindowEN8QWebPage13WebWindowTypeE @ 507 NONAME + _ZN19QDeclarativeWebPage15javaScriptAlertEP9QWebFrameRK7QString @ 508 NONAME + _ZN19QDeclarativeWebPage16javaScriptPromptEP9QWebFrameRK7QStringS4_PS2_ @ 509 NONAME + _ZN19QDeclarativeWebPage16staticMetaObjectE @ 510 NONAME DATA 16 + _ZN19QDeclarativeWebPage17javaScriptConfirmEP9QWebFrameRK7QString @ 511 NONAME + _ZN19QDeclarativeWebPage19getStaticMetaObjectEv @ 512 NONAME + _ZN19QDeclarativeWebPage24javaScriptConsoleMessageERK7QStringiS2_ @ 513 NONAME + _ZN19QDeclarativeWebPage8viewItemEv @ 514 NONAME + _ZN19QDeclarativeWebPageC1EP19QDeclarativeWebView @ 515 NONAME + _ZN19QDeclarativeWebPageC2EP19QDeclarativeWebView @ 516 NONAME + _ZN19QDeclarativeWebPageD0Ev @ 517 NONAME + _ZN19QDeclarativeWebPageD1Ev @ 518 NONAME + _ZN19QDeclarativeWebPageD2Ev @ 519 NONAME + _ZN19QDeclarativeWebView10loadFailedEv @ 520 NONAME + _ZN19QDeclarativeWebView10sceneEventEP6QEvent @ 521 NONAME + _ZN19QDeclarativeWebView10setContentERK10QByteArrayRK7QStringRK4QUrl @ 522 NONAME + _ZN19QDeclarativeWebView10timerEventEP11QTimerEvent @ 523 NONAME + _ZN19QDeclarativeWebView10urlChangedEv @ 524 NONAME + _ZN19QDeclarativeWebView11doubleClickEii @ 525 NONAME + _ZN19QDeclarativeWebView11htmlChangedEv @ 526 NONAME + _ZN19QDeclarativeWebView11iconChangedEv @ 527 NONAME + _ZN19QDeclarativeWebView11loadStartedEv @ 528 NONAME + _ZN19QDeclarativeWebView11qt_metacallEN11QMetaObject4CallEiPPv @ 529 NONAME + _ZN19QDeclarativeWebView11qt_metacastEPKc @ 530 NONAME + _ZN19QDeclarativeWebView12createWindowEN8QWebPage13WebWindowTypeE @ 531 NONAME + _ZN19QDeclarativeWebView12drawContentsEP8QPainterRK5QRect @ 532 NONAME + _ZN19QDeclarativeWebView12focusChangedEb @ 533 NONAME + _ZN19QDeclarativeWebView12loadFinishedEv @ 534 NONAME + _ZN19QDeclarativeWebView12titleChangedERK7QString @ 535 NONAME + _ZN19QDeclarativeWebView13doLoadStartedEv @ 536 NONAME + _ZN19QDeclarativeWebView13heuristicZoomEiif @ 537 NONAME + _ZN19QDeclarativeWebView13initialLayoutEv @ 538 NONAME + _ZN19QDeclarativeWebView13keyPressEventEP9QKeyEvent @ 539 NONAME + _ZN19QDeclarativeWebView13setStatusTextERK7QString @ 540 NONAME + _ZN19QDeclarativeWebView13setZoomFactorEf @ 541 NONAME + _ZN19QDeclarativeWebView13statusChangedENS_6StatusE @ 542 NONAME + _ZN19QDeclarativeWebView14doLoadFinishedEb @ 543 NONAME + _ZN19QDeclarativeWebView14doLoadProgressEi @ 544 NONAME + _ZN19QDeclarativeWebView14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 545 NONAME + _ZN19QDeclarativeWebView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 546 NONAME + _ZN19QDeclarativeWebView14pageUrlChangedEv @ 547 NONAME + _ZN19QDeclarativeWebView15expandToWebPageEv @ 548 NONAME + _ZN19QDeclarativeWebView15geometryChangedERK6QRectFS2_ @ 549 NONAME + _ZN19QDeclarativeWebView15keyReleaseEventEP9QKeyEvent @ 550 NONAME + _ZN19QDeclarativeWebView15mousePressEventEP24QGraphicsSceneMouseEvent @ 551 NONAME + _ZN19QDeclarativeWebView15progressChangedEv @ 552 NONAME + _ZN19QDeclarativeWebView16setPressGrabTimeEi @ 553 NONAME + _ZN19QDeclarativeWebView16staticMetaObjectE @ 554 NONAME DATA 16 + _ZN19QDeclarativeWebView17componentCompleteEv @ 555 NONAME + _ZN19QDeclarativeWebView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 556 NONAME + _ZN19QDeclarativeWebView17setPreferredWidthEi @ 557 NONAME + _ZN19QDeclarativeWebView17statusTextChangedEv @ 558 NONAME + _ZN19QDeclarativeWebView17zoomFactorChangedEv @ 559 NONAME + _ZN19QDeclarativeWebView18evaluateJavaScriptERK7QString @ 560 NONAME + _ZN19QDeclarativeWebView18setNewWindowParentEP16QDeclarativeItem @ 561 NONAME + _ZN19QDeclarativeWebView18setPreferredHeightEi @ 562 NONAME + _ZN19QDeclarativeWebView19getStaticMetaObjectEv @ 563 NONAME + _ZN19QDeclarativeWebView19setRenderingEnabledEb @ 564 NONAME + _ZN19QDeclarativeWebView19windowObjectClearedEv @ 565 NONAME + _ZN19QDeclarativeWebView20pressGrabTimeChangedEv @ 566 NONAME + _ZN19QDeclarativeWebView21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 567 NONAME + _ZN19QDeclarativeWebView21preferredWidthChangedEv @ 568 NONAME + _ZN19QDeclarativeWebView21qmlAttachedPropertiesEP7QObject @ 569 NONAME + _ZN19QDeclarativeWebView21setNewWindowComponentEP21QDeclarativeComponent @ 570 NONAME + _ZN19QDeclarativeWebView22newWindowParentChangedEv @ 571 NONAME + _ZN19QDeclarativeWebView22preferredHeightChangedEv @ 572 NONAME + _ZN19QDeclarativeWebView23javaScriptWindowObjectsEv @ 573 NONAME + _ZN19QDeclarativeWebView23noteContentsSizeChangedERK5QSize @ 574 NONAME + _ZN19QDeclarativeWebView23renderingEnabledChangedEv @ 575 NONAME + _ZN19QDeclarativeWebView25newWindowComponentChangedEv @ 576 NONAME + _ZN19QDeclarativeWebView27sceneMouseEventToMouseEventEP24QGraphicsSceneMouseEvent @ 577 NONAME + _ZN19QDeclarativeWebView31sceneHoverMoveEventToMouseEventEP24QGraphicsSceneHoverEvent @ 578 NONAME + _ZN19QDeclarativeWebView4initEv @ 579 NONAME + _ZN19QDeclarativeWebView4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 580 NONAME + _ZN19QDeclarativeWebView5alertERK7QString @ 581 NONAME + _ZN19QDeclarativeWebView6setUrlERK4QUrl @ 582 NONAME + _ZN19QDeclarativeWebView6zoomToEfii @ 583 NONAME + _ZN19QDeclarativeWebView7setHtmlERK7QStringRK4QUrl @ 584 NONAME + _ZN19QDeclarativeWebView7setPageEP8QWebPage @ 585 NONAME + _ZN19QDeclarativeWebView9paintPageERK5QRect @ 586 NONAME + _ZN19QDeclarativeWebViewC1EP16QDeclarativeItem @ 587 NONAME + _ZN19QDeclarativeWebViewC2EP16QDeclarativeItem @ 588 NONAME + _ZN19QDeclarativeWebViewD0Ev @ 589 NONAME + _ZN19QDeclarativeWebViewD1Ev @ 590 NONAME + _ZN19QDeclarativeWebViewD2Ev @ 591 NONAME + _ZN19QListModelInterface10itemsMovedEiii @ 592 NONAME + _ZN19QListModelInterface11qt_metacallEN11QMetaObject4CallEiPPv @ 593 NONAME + _ZN19QListModelInterface11qt_metacastEPKc @ 594 NONAME + _ZN19QListModelInterface12itemsChangedEiiRK5QListIiE @ 595 NONAME + _ZN19QListModelInterface12itemsRemovedEii @ 596 NONAME + _ZN19QListModelInterface13itemsInsertedEii @ 597 NONAME + _ZN19QListModelInterface16staticMetaObjectE @ 598 NONAME DATA 16 + _ZN19QListModelInterface19getStaticMetaObjectEv @ 599 NONAME + _ZN20QDeclarativeBehavior10setEnabledEb @ 600 NONAME + _ZN20QDeclarativeBehavior11qt_metacallEN11QMetaObject4CallEiPPv @ 601 NONAME + _ZN20QDeclarativeBehavior11qt_metacastEPKc @ 602 NONAME + _ZN20QDeclarativeBehavior12setAnimationEP29QDeclarativeAbstractAnimation @ 603 NONAME + _ZN20QDeclarativeBehavior14enabledChangedEv @ 604 NONAME + _ZN20QDeclarativeBehavior16staticMetaObjectE @ 605 NONAME DATA 16 + _ZN20QDeclarativeBehavior19getStaticMetaObjectEv @ 606 NONAME + _ZN20QDeclarativeBehavior5writeERK8QVariant @ 607 NONAME + _ZN20QDeclarativeBehavior9animationEv @ 608 NONAME + _ZN20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 609 NONAME + _ZN20QDeclarativeBehaviorC1EP7QObject @ 610 NONAME + _ZN20QDeclarativeBehaviorC2EP7QObject @ 611 NONAME + _ZN20QDeclarativeBehaviorD0Ev @ 612 NONAME + _ZN20QDeclarativeBehaviorD1Ev @ 613 NONAME + _ZN20QDeclarativeBehaviorD2Ev @ 614 NONAME + _ZN20QDeclarativeCompiler11buildObjectEPN18QDeclarativeParser6ObjectERKNS_14BindingContextE @ 615 NONAME + _ZN20QDeclarativeCompiler11buildScriptEPN18QDeclarativeParser6ObjectES2_ @ 616 NONAME + _ZN20QDeclarativeCompiler11buildSignalEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 617 NONAME + _ZN20QDeclarativeCompiler11compileTreeEPN18QDeclarativeParser6ObjectE @ 618 NONAME + _ZN20QDeclarativeCompiler12buildBindingEPN18QDeclarativeParser5ValueEPNS0_8PropertyERKNS_14BindingContextE @ 619 NONAME + _ZN20QDeclarativeCompiler12compileAliasER18QMetaObjectBuilderR10QByteArrayPN18QDeclarativeParser6ObjectERKNS5_15DynamicPropertyE @ 620 NONAME + _ZN20QDeclarativeCompiler12genComponentEPN18QDeclarativeParser6ObjectE @ 621 NONAME + _ZN20QDeclarativeCompiler13buildPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 622 NONAME + _ZN20QDeclarativeCompiler13genObjectBodyEPN18QDeclarativeParser6ObjectE @ 623 NONAME + _ZN20QDeclarativeCompiler14buildComponentEPN18QDeclarativeParser6ObjectERKNS_14BindingContextE @ 624 NONAME + _ZN20QDeclarativeCompiler14buildSubObjectEPN18QDeclarativeParser6ObjectERKNS_14BindingContextE @ 625 NONAME + _ZN20QDeclarativeCompiler14componentStateEPN18QDeclarativeParser6ObjectE @ 626 NONAME + _ZN20QDeclarativeCompiler15buildIdPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectE @ 627 NONAME + _ZN20QDeclarativeCompiler15genContextCacheEv @ 628 NONAME + _ZN20QDeclarativeCompiler15genListPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectE @ 629 NONAME + _ZN20QDeclarativeCompiler15genPropertyDataEPN18QDeclarativeParser8PropertyE @ 630 NONAME + _ZN20QDeclarativeCompiler16buildDynamicMetaEPN18QDeclarativeParser6ObjectENS_15DynamicMetaModeE @ 631 NONAME + _ZN20QDeclarativeCompiler16checkDynamicMetaEPN18QDeclarativeParser6ObjectE @ 632 NONAME + _ZN20QDeclarativeCompiler16componentTypeRefEv @ 633 NONAME + _ZN20QDeclarativeCompiler16findSignalByNameEPK11QMetaObjectRK10QByteArray @ 634 NONAME + _ZN20QDeclarativeCompiler16genValuePropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectE @ 635 NONAME + _ZN20QDeclarativeCompiler16genValueTypeDataEPN18QDeclarativeParser8PropertyES2_ @ 636 NONAME + _ZN20QDeclarativeCompiler17buildListPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 637 NONAME + _ZN20QDeclarativeCompiler17doesPropertyExistEPN18QDeclarativeParser8PropertyEPNS0_6ObjectE @ 638 NONAME + _ZN20QDeclarativeCompiler18deferredPropertiesEPN18QDeclarativeParser6ObjectE @ 639 NONAME + _ZN20QDeclarativeCompiler18saveComponentStateEv @ 640 NONAME + _ZN20QDeclarativeCompiler19addBindingReferenceERKNS_16BindingReferenceE @ 641 NONAME + _ZN20QDeclarativeCompiler20buildGroupedPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 642 NONAME + _ZN20QDeclarativeCompiler20genBindingAssignmentEPN18QDeclarativeParser5ValueEPNS0_8PropertyEPNS0_6ObjectES4_ @ 643 NONAME + _ZN20QDeclarativeCompiler20genLiteralAssignmentERK13QMetaPropertyPN18QDeclarativeParser5ValueE @ 644 NONAME + _ZN20QDeclarativeCompiler20isSignalPropertyNameERK10QByteArray @ 645 NONAME + _ZN20QDeclarativeCompiler21buildAttachedPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 646 NONAME + _ZN20QDeclarativeCompiler21genPropertyAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectES2_ @ 647 NONAME + _ZN20QDeclarativeCompiler21testLiteralAssignmentERK13QMetaPropertyPN18QDeclarativeParser5ValueE @ 648 NONAME + _ZN20QDeclarativeCompiler22buildComponentFromRootEPN18QDeclarativeParser6ObjectERKNS_14BindingContextE @ 649 NONAME + _ZN20QDeclarativeCompiler22buildValueTypePropertyEP7QObjectPN18QDeclarativeParser6ObjectES4_RKNS_14BindingContextE @ 650 NONAME + _ZN20QDeclarativeCompiler22completeComponentBuildEv @ 651 NONAME + _ZN20QDeclarativeCompiler22isAttachedPropertyNameERK10QByteArray @ 652 NONAME + _ZN20QDeclarativeCompiler23buildPropertyAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 653 NONAME + _ZN20QDeclarativeCompiler24buildPropertyInNamespaceEPN25QDeclarativeEnginePrivate17ImportedNamespaceEPN18QDeclarativeParser8PropertyEPNS3_6ObjectERKNS_14BindingContextE @ 654 NONAME + _ZN20QDeclarativeCompiler25buildScriptStringPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 655 NONAME + _ZN20QDeclarativeCompiler26mergeDynamicMetaPropertiesEPN18QDeclarativeParser6ObjectE @ 656 NONAME + _ZN20QDeclarativeCompiler27testQualifiedEnumAssignmentERK13QMetaPropertyPN18QDeclarativeParser6ObjectEPNS3_5ValueEPb @ 657 NONAME + _ZN20QDeclarativeCompiler29buildPropertyObjectAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectEPNS0_5ValueERKNS_14BindingContextE @ 658 NONAME + _ZN20QDeclarativeCompiler30buildPropertyLiteralAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectEPNS0_5ValueERKNS_14BindingContextE @ 659 NONAME + _ZN20QDeclarativeCompiler5addIdERK7QStringPN18QDeclarativeParser6ObjectE @ 660 NONAME + _ZN20QDeclarativeCompiler5resetEP24QDeclarativeCompiledData @ 661 NONAME + _ZN20QDeclarativeCompiler7compileEP18QDeclarativeEngineP29QDeclarativeCompositeTypeDataP24QDeclarativeCompiledData @ 662 NONAME + _ZN20QDeclarativeCompiler9canCoerceEiPN18QDeclarativeParser6ObjectE @ 663 NONAME + _ZN20QDeclarativeCompiler9canCoerceEii @ 664 NONAME + _ZN20QDeclarativeCompiler9dumpStatsEv @ 665 NONAME + _ZN20QDeclarativeCompiler9genObjectEPN18QDeclarativeParser6ObjectE @ 666 NONAME + _ZN20QDeclarativeCompiler9isValidIdERK7QString @ 667 NONAME + _ZN20QDeclarativeCompiler9toQmlTypeEPN18QDeclarativeParser6ObjectE @ 668 NONAME + _ZN20QDeclarativeCompilerC1Ev @ 669 NONAME + _ZN20QDeclarativeCompilerC2Ev @ 670 NONAME + _ZN20QDeclarativeDomValueC1ERKS_ @ 671 NONAME + _ZN20QDeclarativeDomValueC1Ev @ 672 NONAME + _ZN20QDeclarativeDomValueC2ERKS_ @ 673 NONAME + _ZN20QDeclarativeDomValueC2Ev @ 674 NONAME + _ZN20QDeclarativeDomValueD1Ev @ 675 NONAME + _ZN20QDeclarativeDomValueD2Ev @ 676 NONAME + _ZN20QDeclarativeDomValueaSERKS_ @ 677 NONAME + _ZN20QDeclarativeFlipable11qt_metacallEN11QMetaObject4CallEiPPv @ 678 NONAME + _ZN20QDeclarativeFlipable11qt_metacastEPKc @ 679 NONAME + _ZN20QDeclarativeFlipable11sideChangedEv @ 680 NONAME + _ZN20QDeclarativeFlipable16staticMetaObjectE @ 681 NONAME DATA 16 + _ZN20QDeclarativeFlipable19getStaticMetaObjectEv @ 682 NONAME + _ZN20QDeclarativeFlipable4backEv @ 683 NONAME + _ZN20QDeclarativeFlipable5frontEv @ 684 NONAME + _ZN20QDeclarativeFlipable7setBackEP16QDeclarativeItem @ 685 NONAME + _ZN20QDeclarativeFlipable8setFrontEP16QDeclarativeItem @ 686 NONAME + _ZN20QDeclarativeFlipableC1EP16QDeclarativeItem @ 687 NONAME + _ZN20QDeclarativeFlipableC2EP16QDeclarativeItem @ 688 NONAME + _ZN20QDeclarativeFlipableD0Ev @ 689 NONAME + _ZN20QDeclarativeFlipableD1Ev @ 690 NONAME + _ZN20QDeclarativeFlipableD2Ev @ 691 NONAME + _ZN20QDeclarativeGradient11qt_metacallEN11QMetaObject4CallEiPPv @ 692 NONAME + _ZN20QDeclarativeGradient11qt_metacastEPKc @ 693 NONAME + _ZN20QDeclarativeGradient16staticMetaObjectE @ 694 NONAME DATA 16 + _ZN20QDeclarativeGradient19getStaticMetaObjectEv @ 695 NONAME + _ZN20QDeclarativeGradient7updatedEv @ 696 NONAME + _ZN20QDeclarativeGradient8doUpdateEv @ 697 NONAME + _ZN20QDeclarativeGridView10itemsMovedEiii @ 698 NONAME + _ZN20QDeclarativeGridView10modelResetEv @ 699 NONAME + _ZN20QDeclarativeGridView10sizeChangeEv @ 700 NONAME + _ZN20QDeclarativeGridView11createdItemEiP16QDeclarativeItem @ 701 NONAME + _ZN20QDeclarativeGridView11currentItemEv @ 702 NONAME + _ZN20QDeclarativeGridView11qt_metacallEN11QMetaObject4CallEiPPv @ 703 NONAME + _ZN20QDeclarativeGridView11qt_metacastEPKc @ 704 NONAME + _ZN20QDeclarativeGridView11setDelegateEP21QDeclarativeComponent @ 705 NONAME + _ZN20QDeclarativeGridView12countChangedEv @ 706 NONAME + _ZN20QDeclarativeGridView12itemsRemovedEii @ 707 NONAME + _ZN20QDeclarativeGridView12setCellWidthEi @ 708 NONAME + _ZN20QDeclarativeGridView12setHighlightEP21QDeclarativeComponent @ 709 NONAME + _ZN20QDeclarativeGridView13highlightItemEv @ 710 NONAME + _ZN20QDeclarativeGridView13itemsInsertedEii @ 711 NONAME + _ZN20QDeclarativeGridView13keyPressEventEP9QKeyEvent @ 712 NONAME + _ZN20QDeclarativeGridView13setCellHeightEi @ 713 NONAME + _ZN20QDeclarativeGridView13viewportMovedEv @ 714 NONAME + _ZN20QDeclarativeGridView14destroyRemovedEv @ 715 NONAME + _ZN20QDeclarativeGridView14destroyingItemEP16QDeclarativeItem @ 716 NONAME + _ZN20QDeclarativeGridView14setCacheBufferEi @ 717 NONAME + _ZN20QDeclarativeGridView14setWrapEnabledEb @ 718 NONAME + _ZN20QDeclarativeGridView15setCurrentIndexEi @ 719 NONAME + _ZN20QDeclarativeGridView16cellWidthChangedEv @ 720 NONAME + _ZN20QDeclarativeGridView16highlightChangedEv @ 721 NONAME + _ZN20QDeclarativeGridView16staticMetaObjectE @ 722 NONAME DATA 16 + _ZN20QDeclarativeGridView17cellHeightChangedEv @ 723 NONAME + _ZN20QDeclarativeGridView17componentCompleteEv @ 724 NONAME + _ZN20QDeclarativeGridView18moveCurrentIndexUpEv @ 725 NONAME + _ZN20QDeclarativeGridView19currentIndexChangedEv @ 726 NONAME + _ZN20QDeclarativeGridView19getStaticMetaObjectEv @ 727 NONAME + _ZN20QDeclarativeGridView19positionViewAtIndexEi @ 728 NONAME + _ZN20QDeclarativeGridView20moveCurrentIndexDownEv @ 729 NONAME + _ZN20QDeclarativeGridView20moveCurrentIndexLeftEv @ 730 NONAME + _ZN20QDeclarativeGridView21moveCurrentIndexRightEv @ 731 NONAME + _ZN20QDeclarativeGridView21qmlAttachedPropertiesEP7QObject @ 732 NONAME + _ZN20QDeclarativeGridView22trackedPositionChangedEv @ 733 NONAME + _ZN20QDeclarativeGridView30setHighlightFollowsCurrentItemEb @ 734 NONAME + _ZN20QDeclarativeGridView6layoutEv @ 735 NONAME + _ZN20QDeclarativeGridView6refillEv @ 736 NONAME + _ZN20QDeclarativeGridView7setFlowENS_4FlowE @ 737 NONAME + _ZN20QDeclarativeGridView8setModelERK8QVariant @ 738 NONAME + _ZN20QDeclarativeGridViewC1EP16QDeclarativeItem @ 739 NONAME + _ZN20QDeclarativeGridViewC2EP16QDeclarativeItem @ 740 NONAME + _ZN20QDeclarativeGridViewD0Ev @ 741 NONAME + _ZN20QDeclarativeGridViewD1Ev @ 742 NONAME + _ZN20QDeclarativeGridViewD2Ev @ 743 NONAME + _ZN20QDeclarativeListView10itemsMovedEiii @ 744 NONAME + _ZN20QDeclarativeListView10modelResetEv @ 745 NONAME + _ZN20QDeclarativeListView10setSpacingEf @ 746 NONAME + _ZN20QDeclarativeListView11animStoppedEv @ 747 NONAME + _ZN20QDeclarativeListView11createdItemEiP16QDeclarativeItem @ 748 NONAME + _ZN20QDeclarativeListView11currentItemEv @ 749 NONAME + _ZN20QDeclarativeListView11qt_metacallEN11QMetaObject4CallEiPPv @ 750 NONAME + _ZN20QDeclarativeListView11qt_metacastEPKc @ 751 NONAME + _ZN20QDeclarativeListView11setDelegateEP21QDeclarativeComponent @ 752 NONAME + _ZN20QDeclarativeListView11setSnapModeENS_8SnapModeE @ 753 NONAME + _ZN20QDeclarativeListView12countChangedEv @ 754 NONAME + _ZN20QDeclarativeListView12itemsRemovedEii @ 755 NONAME + _ZN20QDeclarativeListView12setHighlightEP21QDeclarativeComponent @ 756 NONAME + _ZN20QDeclarativeListView13highlightItemEv @ 757 NONAME + _ZN20QDeclarativeListView13itemsInsertedEii @ 758 NONAME + _ZN20QDeclarativeListView13keyPressEventEP9QKeyEvent @ 759 NONAME + _ZN20QDeclarativeListView13viewportMovedEv @ 760 NONAME + _ZN20QDeclarativeListView14destroyRemovedEv @ 761 NONAME + _ZN20QDeclarativeListView14destroyingItemEP16QDeclarativeItem @ 762 NONAME + _ZN20QDeclarativeListView14setCacheBufferEi @ 763 NONAME + _ZN20QDeclarativeListView14setOrientationENS_11OrientationE @ 764 NONAME + _ZN20QDeclarativeListView14setWrapEnabledEb @ 765 NONAME + _ZN20QDeclarativeListView14spacingChangedEv @ 766 NONAME + _ZN20QDeclarativeListView15sectionCriteriaEv @ 767 NONAME + _ZN20QDeclarativeListView15setCurrentIndexEi @ 768 NONAME + _ZN20QDeclarativeListView16highlightChangedEv @ 769 NONAME + _ZN20QDeclarativeListView16staticMetaObjectE @ 770 NONAME DATA 16 + _ZN20QDeclarativeListView17componentCompleteEv @ 771 NONAME + _ZN20QDeclarativeListView18orientationChangedEv @ 772 NONAME + _ZN20QDeclarativeListView19currentIndexChangedEv @ 773 NONAME + _ZN20QDeclarativeListView19getStaticMetaObjectEv @ 774 NONAME + _ZN20QDeclarativeListView19positionViewAtIndexEi @ 775 NONAME + _ZN20QDeclarativeListView21currentSectionChangedEv @ 776 NONAME + _ZN20QDeclarativeListView21decrementCurrentIndexEv @ 777 NONAME + _ZN20QDeclarativeListView21incrementCurrentIndexEv @ 778 NONAME + _ZN20QDeclarativeListView21qmlAttachedPropertiesEP7QObject @ 779 NONAME + _ZN20QDeclarativeListView21setHighlightMoveSpeedEf @ 780 NONAME + _ZN20QDeclarativeListView21setHighlightRangeModeENS_18HighlightRangeModeE @ 781 NONAME + _ZN20QDeclarativeListView22trackedPositionChangedEv @ 782 NONAME + _ZN20QDeclarativeListView23setHighlightResizeSpeedEf @ 783 NONAME + _ZN20QDeclarativeListView24setPreferredHighlightEndEf @ 784 NONAME + _ZN20QDeclarativeListView25highlightMoveSpeedChangedEv @ 785 NONAME + _ZN20QDeclarativeListView26setPreferredHighlightBeginEf @ 786 NONAME + _ZN20QDeclarativeListView27highlightResizeSpeedChangedEv @ 787 NONAME + _ZN20QDeclarativeListView30setHighlightFollowsCurrentItemEb @ 788 NONAME + _ZN20QDeclarativeListView6refillEv @ 789 NONAME + _ZN20QDeclarativeListView8setModelERK8QVariant @ 790 NONAME + _ZN20QDeclarativeListView9setFooterEP21QDeclarativeComponent @ 791 NONAME + _ZN20QDeclarativeListView9setHeaderEP21QDeclarativeComponent @ 792 NONAME + _ZN20QDeclarativeListViewC1EP16QDeclarativeItem @ 793 NONAME + _ZN20QDeclarativeListViewC2EP16QDeclarativeItem @ 794 NONAME + _ZN20QDeclarativeListViewD0Ev @ 795 NONAME + _ZN20QDeclarativeListViewD1Ev @ 796 NONAME + _ZN20QDeclarativeListViewD2Ev @ 797 NONAME + _ZN20QDeclarativeMetaType11isInterfaceEi @ 798 NONAME + _ZN20QDeclarativeMetaType12interfaceIIdEi @ 799 NONAME + _ZN20QDeclarativeMetaType12qmlTypeNamesEv @ 800 NONAME + _ZN20QDeclarativeMetaType12typeCategoryEi @ 801 NONAME + _ZN20QDeclarativeMetaType13defaultMethodEP7QObject @ 802 NONAME + _ZN20QDeclarativeMetaType13defaultMethodEPK11QMetaObject @ 803 NONAME + _ZN20QDeclarativeMetaType15defaultPropertyEP7QObject @ 804 NONAME + _ZN20QDeclarativeMetaType15defaultPropertyEPK11QMetaObject @ 805 NONAME + _ZN20QDeclarativeMetaType21customStringConverterEi @ 806 NONAME + _ZN20QDeclarativeMetaType24attachedPropertiesFuncIdEPK11QMetaObject @ 807 NONAME + _ZN20QDeclarativeMetaType26attachedPropertiesFuncByIdEi @ 808 NONAME + _ZN20QDeclarativeMetaType29registerCustomStringConverterEiPF8QVariantRK7QStringE @ 809 NONAME + _ZN20QDeclarativeMetaType4copyEiPvPKv @ 810 NONAME + _ZN20QDeclarativeMetaType6isListEi @ 811 NONAME + _ZN20QDeclarativeMetaType7qmlTypeEPK11QMetaObject @ 812 NONAME + _ZN20QDeclarativeMetaType7qmlTypeERK10QByteArrayii @ 813 NONAME + _ZN20QDeclarativeMetaType7qmlTypeEi @ 814 NONAME + _ZN20QDeclarativeMetaType8listTypeEi @ 815 NONAME + _ZN20QDeclarativeMetaType8qmlTypesEv @ 816 NONAME + _ZN20QDeclarativeMetaType9isQObjectEi @ 817 NONAME + _ZN20QDeclarativeMetaType9toQObjectERK8QVariantPb @ 818 NONAME + _ZN20QDeclarativePathLine11qt_metacallEN11QMetaObject4CallEiPPv @ 819 NONAME + _ZN20QDeclarativePathLine11qt_metacastEPKc @ 820 NONAME + _ZN20QDeclarativePathLine16staticMetaObjectE @ 821 NONAME DATA 16 + _ZN20QDeclarativePathLine19getStaticMetaObjectEv @ 822 NONAME + _ZN20QDeclarativePathLine9addToPathER12QPainterPath @ 823 NONAME + _ZN20QDeclarativePathQuad11qt_metacallEN11QMetaObject4CallEiPPv @ 824 NONAME + _ZN20QDeclarativePathQuad11qt_metacastEPKc @ 825 NONAME + _ZN20QDeclarativePathQuad11setControlXEf @ 826 NONAME + _ZN20QDeclarativePathQuad11setControlYEf @ 827 NONAME + _ZN20QDeclarativePathQuad16staticMetaObjectE @ 828 NONAME DATA 16 + _ZN20QDeclarativePathQuad19getStaticMetaObjectEv @ 829 NONAME + _ZN20QDeclarativePathQuad9addToPathER12QPainterPath @ 830 NONAME + _ZN20QDeclarativePathView10modelResetEv @ 831 NONAME + _ZN20QDeclarativePathView11createdItemEiP16QDeclarativeItem @ 832 NONAME + _ZN20QDeclarativePathView11qt_metacallEN11QMetaObject4CallEiPPv @ 833 NONAME + _ZN20QDeclarativePathView11qt_metacastEPKc @ 834 NONAME + _ZN20QDeclarativePathView11setDelegateEP21QDeclarativeComponent @ 835 NONAME + _ZN20QDeclarativePathView12itemsRemovedEii @ 836 NONAME + _ZN20QDeclarativePathView13itemsInsertedEii @ 837 NONAME + _ZN20QDeclarativePathView13offsetChangedEv @ 838 NONAME + _ZN20QDeclarativePathView13setDragMarginEf @ 839 NONAME + _ZN20QDeclarativePathView14destroyingItemEP16QDeclarativeItem @ 840 NONAME + _ZN20QDeclarativePathView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 841 NONAME + _ZN20QDeclarativePathView14sendMouseEventEP24QGraphicsSceneMouseEvent @ 842 NONAME + _ZN20QDeclarativePathView15mousePressEventEP24QGraphicsSceneMouseEvent @ 843 NONAME + _ZN20QDeclarativePathView15setCurrentIndexEi @ 844 NONAME + _ZN20QDeclarativePathView15setSnapPositionEf @ 845 NONAME + _ZN20QDeclarativePathView16sceneEventFilterEP13QGraphicsItemP6QEvent @ 846 NONAME + _ZN20QDeclarativePathView16setPathItemCountEi @ 847 NONAME + _ZN20QDeclarativePathView16staticMetaObjectE @ 848 NONAME DATA 16 + _ZN20QDeclarativePathView17componentCompleteEv @ 849 NONAME + _ZN20QDeclarativePathView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 850 NONAME + _ZN20QDeclarativePathView18attachedPropertiesE @ 851 NONAME DATA 4 + _ZN20QDeclarativePathView19currentIndexChangedEv @ 852 NONAME + _ZN20QDeclarativePathView19getStaticMetaObjectEv @ 853 NONAME + _ZN20QDeclarativePathView21qmlAttachedPropertiesEP7QObject @ 854 NONAME + _ZN20QDeclarativePathView6refillEv @ 855 NONAME + _ZN20QDeclarativePathView6tickedEv @ 856 NONAME + _ZN20QDeclarativePathView7setPathEP16QDeclarativePath @ 857 NONAME + _ZN20QDeclarativePathView8setModelERK8QVariant @ 858 NONAME + _ZN20QDeclarativePathView9setOffsetEf @ 859 NONAME + _ZN20QDeclarativePathViewC1EP16QDeclarativeItem @ 860 NONAME + _ZN20QDeclarativePathViewC2EP16QDeclarativeItem @ 861 NONAME + _ZN20QDeclarativePathViewD0Ev @ 862 NONAME + _ZN20QDeclarativePathViewD1Ev @ 863 NONAME + _ZN20QDeclarativePathViewD2Ev @ 864 NONAME + _ZN20QDeclarativeProperty4readEP7QObjectRK7QString @ 865 NONAME + _ZN20QDeclarativeProperty4readEP7QObjectRK7QStringP18QDeclarativeEngine @ 866 NONAME + _ZN20QDeclarativeProperty4readEP7QObjectRK7QStringP19QDeclarativeContext @ 867 NONAME + _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariant @ 868 NONAME + _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariantP18QDeclarativeEngine @ 869 NONAME + _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariantP19QDeclarativeContext @ 870 NONAME + _ZN20QDeclarativePropertyC1EP7QObject @ 871 NONAME + _ZN20QDeclarativePropertyC1EP7QObjectP18QDeclarativeEngine @ 872 NONAME + _ZN20QDeclarativePropertyC1EP7QObjectP19QDeclarativeContext @ 873 NONAME + _ZN20QDeclarativePropertyC1EP7QObjectRK7QString @ 874 NONAME + _ZN20QDeclarativePropertyC1EP7QObjectRK7QStringP18QDeclarativeEngine @ 875 NONAME + _ZN20QDeclarativePropertyC1EP7QObjectRK7QStringP19QDeclarativeContext @ 876 NONAME + _ZN20QDeclarativePropertyC1ERKS_ @ 877 NONAME + _ZN20QDeclarativePropertyC1Ev @ 878 NONAME + _ZN20QDeclarativePropertyC2EP7QObject @ 879 NONAME + _ZN20QDeclarativePropertyC2EP7QObjectP18QDeclarativeEngine @ 880 NONAME + _ZN20QDeclarativePropertyC2EP7QObjectP19QDeclarativeContext @ 881 NONAME + _ZN20QDeclarativePropertyC2EP7QObjectRK7QString @ 882 NONAME + _ZN20QDeclarativePropertyC2EP7QObjectRK7QStringP18QDeclarativeEngine @ 883 NONAME + _ZN20QDeclarativePropertyC2EP7QObjectRK7QStringP19QDeclarativeContext @ 884 NONAME + _ZN20QDeclarativePropertyC2ERKS_ @ 885 NONAME + _ZN20QDeclarativePropertyC2Ev @ 886 NONAME + _ZN20QDeclarativePropertyD1Ev @ 887 NONAME + _ZN20QDeclarativePropertyD2Ev @ 888 NONAME + _ZN20QDeclarativePropertyaSERKS_ @ 889 NONAME + _ZN20QDeclarativeRepeater10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 890 NONAME + _ZN20QDeclarativeRepeater10itemsMovedEiii @ 891 NONAME + _ZN20QDeclarativeRepeater10modelResetEv @ 892 NONAME + _ZN20QDeclarativeRepeater10regenerateEv @ 893 NONAME + _ZN20QDeclarativeRepeater11qt_metacallEN11QMetaObject4CallEiPPv @ 894 NONAME + _ZN20QDeclarativeRepeater11qt_metacastEPKc @ 895 NONAME + _ZN20QDeclarativeRepeater11setDelegateEP21QDeclarativeComponent @ 896 NONAME + _ZN20QDeclarativeRepeater12countChangedEv @ 897 NONAME + _ZN20QDeclarativeRepeater12itemsRemovedEii @ 898 NONAME + _ZN20QDeclarativeRepeater12modelChangedEv @ 899 NONAME + _ZN20QDeclarativeRepeater13itemsInsertedEii @ 900 NONAME + _ZN20QDeclarativeRepeater15delegateChangedEv @ 901 NONAME + _ZN20QDeclarativeRepeater16staticMetaObjectE @ 902 NONAME DATA 16 + _ZN20QDeclarativeRepeater17componentCompleteEv @ 903 NONAME + _ZN20QDeclarativeRepeater19getStaticMetaObjectEv @ 904 NONAME + _ZN20QDeclarativeRepeater5clearEv @ 905 NONAME + _ZN20QDeclarativeRepeater8setModelERK8QVariant @ 906 NONAME + _ZN20QDeclarativeRepeaterC1EP16QDeclarativeItem @ 907 NONAME + _ZN20QDeclarativeRepeaterC2EP16QDeclarativeItem @ 908 NONAME + _ZN20QDeclarativeRepeaterD0Ev @ 909 NONAME + _ZN20QDeclarativeRepeaterD1Ev @ 910 NONAME + _ZN20QDeclarativeRepeaterD2Ev @ 911 NONAME + _ZN20QDeclarativeTextEdit10updateSizeEv @ 912 NONAME + _ZN20QDeclarativeTextEdit11fontChangedERK5QFont @ 913 NONAME + _ZN20QDeclarativeTextEdit11qt_metacallEN11QMetaObject4CallEiPPv @ 914 NONAME + _ZN20QDeclarativeTextEdit11qt_metacastEPKc @ 915 NONAME + _ZN20QDeclarativeTextEdit11setReadOnlyEb @ 916 NONAME + _ZN20QDeclarativeTextEdit11textChangedERK7QString @ 917 NONAME + _ZN20QDeclarativeTextEdit11wrapChangedEb @ 918 NONAME + _ZN20QDeclarativeTextEdit12colorChangedERK6QColor @ 919 NONAME + _ZN20QDeclarativeTextEdit12drawContentsEP8QPainterRK5QRect @ 920 NONAME + _ZN20QDeclarativeTextEdit12focusChangedEb @ 921 NONAME + _ZN20QDeclarativeTextEdit13keyPressEventEP9QKeyEvent @ 922 NONAME + _ZN20QDeclarativeTextEdit13q_textChangedEv @ 923 NONAME + _ZN20QDeclarativeTextEdit13setTextFormatENS_10TextFormatE @ 924 NONAME + _ZN20QDeclarativeTextEdit13setTextMarginEf @ 925 NONAME + _ZN20QDeclarativeTextEdit14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 926 NONAME + _ZN20QDeclarativeTextEdit14updateImgCacheERK6QRectF @ 927 NONAME + _ZN20QDeclarativeTextEdit15geometryChangedERK6QRectFS2_ @ 928 NONAME + _ZN20QDeclarativeTextEdit15keyReleaseEventEP9QKeyEvent @ 929 NONAME + _ZN20QDeclarativeTextEdit15mousePressEventEP24QGraphicsSceneMouseEvent @ 930 NONAME + _ZN20QDeclarativeTextEdit15readOnlyChangedEb @ 931 NONAME + _ZN20QDeclarativeTextEdit15setFocusOnPressEb @ 932 NONAME + _ZN20QDeclarativeTextEdit15setSelectionEndEi @ 933 NONAME + _ZN20QDeclarativeTextEdit16inputMethodEventEP17QInputMethodEvent @ 934 NONAME + _ZN20QDeclarativeTextEdit16selectionChangedEv @ 935 NONAME + _ZN20QDeclarativeTextEdit16setCursorVisibleEb @ 936 NONAME + _ZN20QDeclarativeTextEdit16staticMetaObjectE @ 937 NONAME DATA 16 + _ZN20QDeclarativeTextEdit17componentCompleteEv @ 938 NONAME + _ZN20QDeclarativeTextEdit17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 939 NONAME + _ZN20QDeclarativeTextEdit17setCursorDelegateEP21QDeclarativeComponent @ 940 NONAME + _ZN20QDeclarativeTextEdit17setCursorPositionEi @ 941 NONAME + _ZN20QDeclarativeTextEdit17setSelectionColorERK6QColor @ 942 NONAME + _ZN20QDeclarativeTextEdit17setSelectionStartEi @ 943 NONAME + _ZN20QDeclarativeTextEdit17textFormatChangedENS_10TextFormatE @ 944 NONAME + _ZN20QDeclarativeTextEdit17textMarginChangedEf @ 945 NONAME + _ZN20QDeclarativeTextEdit18loadCursorDelegateEv @ 946 NONAME + _ZN20QDeclarativeTextEdit18moveCursorDelegateEv @ 947 NONAME + _ZN20QDeclarativeTextEdit19focusOnPressChangedEb @ 948 NONAME + _ZN20QDeclarativeTextEdit19getStaticMetaObjectEv @ 949 NONAME + _ZN20QDeclarativeTextEdit19selectionEndChangedEv @ 950 NONAME + _ZN20QDeclarativeTextEdit20cursorVisibleChangedEb @ 951 NONAME + _ZN20QDeclarativeTextEdit20setSelectedTextColorERK6QColor @ 952 NONAME + _ZN20QDeclarativeTextEdit21cursorDelegateChangedEv @ 953 NONAME + _ZN20QDeclarativeTextEdit21cursorPositionChangedEv @ 954 NONAME + _ZN20QDeclarativeTextEdit21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 955 NONAME + _ZN20QDeclarativeTextEdit21selectionColorChangedERK6QColor @ 956 NONAME + _ZN20QDeclarativeTextEdit21selectionStartChangedEv @ 957 NONAME + _ZN20QDeclarativeTextEdit22setPersistentSelectionEb @ 958 NONAME + _ZN20QDeclarativeTextEdit22updateSelectionMarkersEv @ 959 NONAME + _ZN20QDeclarativeTextEdit23setTextInteractionFlagsE6QFlagsIN2Qt19TextInteractionFlagEE @ 960 NONAME + _ZN20QDeclarativeTextEdit24selectedTextColorChangedERK6QColor @ 961 NONAME + _ZN20QDeclarativeTextEdit24verticalAlignmentChangedENS_10VAlignmentE @ 962 NONAME + _ZN20QDeclarativeTextEdit26horizontalAlignmentChangedENS_10HAlignmentE @ 963 NONAME + _ZN20QDeclarativeTextEdit26persistentSelectionChangedEb @ 964 NONAME + _ZN20QDeclarativeTextEdit5eventEP6QEvent @ 965 NONAME + _ZN20QDeclarativeTextEdit7setFontERK5QFont @ 966 NONAME + _ZN20QDeclarativeTextEdit7setTextERK7QString @ 967 NONAME + _ZN20QDeclarativeTextEdit7setWrapEb @ 968 NONAME + _ZN20QDeclarativeTextEdit8setColorERK6QColor @ 969 NONAME + _ZN20QDeclarativeTextEdit9selectAllEv @ 970 NONAME + _ZN20QDeclarativeTextEdit9setHAlignENS_10HAlignmentE @ 971 NONAME + _ZN20QDeclarativeTextEdit9setVAlignENS_10VAlignmentE @ 972 NONAME + _ZN20QDeclarativeTextEditC1EP16QDeclarativeItem @ 973 NONAME + _ZN20QDeclarativeTextEditC2EP16QDeclarativeItem @ 974 NONAME + _ZN20QMetaPropertyBuilder10setDynamicEb @ 975 NONAME + _ZN20QMetaPropertyBuilder11setEditableEb @ 976 NONAME + _ZN20QMetaPropertyBuilder11setReadableEb @ 977 NONAME + _ZN20QMetaPropertyBuilder11setWritableEb @ 978 NONAME + _ZN20QMetaPropertyBuilder12setStdCppSetEb @ 979 NONAME + _ZN20QMetaPropertyBuilder13setDesignableEb @ 980 NONAME + _ZN20QMetaPropertyBuilder13setEnumOrFlagEb @ 981 NONAME + _ZN20QMetaPropertyBuilder13setResettableEb @ 982 NONAME + _ZN20QMetaPropertyBuilder13setScriptableEb @ 983 NONAME + _ZN20QMetaPropertyBuilder15setNotifySignalERK18QMetaMethodBuilder @ 984 NONAME + _ZN20QMetaPropertyBuilder18removeNotifySignalEv @ 985 NONAME + _ZN20QMetaPropertyBuilder7setUserEb @ 986 NONAME + _ZN20QMetaPropertyBuilder9setStoredEb @ 987 NONAME + _ZN21QDeclarativeComponent11beginCreateEP19QDeclarativeContext @ 988 NONAME + _ZN21QDeclarativeComponent11qt_metacallEN11QMetaObject4CallEiPPv @ 989 NONAME + _ZN21QDeclarativeComponent11qt_metacastEPKc @ 990 NONAME + _ZN21QDeclarativeComponent12createObjectEv @ 991 NONAME + _ZN21QDeclarativeComponent13statusChangedENS_6StatusE @ 992 NONAME + _ZN21QDeclarativeComponent14completeCreateEv @ 993 NONAME + _ZN21QDeclarativeComponent15progressChangedEf @ 994 NONAME + _ZN21QDeclarativeComponent16staticMetaObjectE @ 995 NONAME DATA 16 + _ZN21QDeclarativeComponent18setCreationContextEP19QDeclarativeContext @ 996 NONAME + _ZN21QDeclarativeComponent19getStaticMetaObjectEv @ 997 NONAME + _ZN21QDeclarativeComponent21qmlAttachedPropertiesEP7QObject @ 998 NONAME + _ZN21QDeclarativeComponent6createEP19QDeclarativeContext @ 999 NONAME + _ZN21QDeclarativeComponent7loadUrlERK4QUrl @ 1000 NONAME + _ZN21QDeclarativeComponent7setDataERK10QByteArrayRK4QUrl @ 1001 NONAME + _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineP24QDeclarativeCompiledDataiiP7QObject @ 1002 NONAME + _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineP7QObject @ 1003 NONAME + _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineRK4QUrlP7QObject @ 1004 NONAME + _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineRK7QStringP7QObject @ 1005 NONAME + _ZN21QDeclarativeComponentC1EP7QObject @ 1006 NONAME + _ZN21QDeclarativeComponentC1ER28QDeclarativeComponentPrivateP7QObject @ 1007 NONAME + _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineP24QDeclarativeCompiledDataiiP7QObject @ 1008 NONAME + _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineP7QObject @ 1009 NONAME + _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineRK4QUrlP7QObject @ 1010 NONAME + _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineRK7QStringP7QObject @ 1011 NONAME + _ZN21QDeclarativeComponentC2EP7QObject @ 1012 NONAME + _ZN21QDeclarativeComponentC2ER28QDeclarativeComponentPrivateP7QObject @ 1013 NONAME + _ZN21QDeclarativeComponentD0Ev @ 1014 NONAME + _ZN21QDeclarativeComponentD1Ev @ 1015 NONAME + _ZN21QDeclarativeComponentD2Ev @ 1016 NONAME + _ZN21QDeclarativeDomImportC1ERKS_ @ 1017 NONAME + _ZN21QDeclarativeDomImportC1Ev @ 1018 NONAME + _ZN21QDeclarativeDomImportC2ERKS_ @ 1019 NONAME + _ZN21QDeclarativeDomImportC2Ev @ 1020 NONAME + _ZN21QDeclarativeDomImportD1Ev @ 1021 NONAME + _ZN21QDeclarativeDomImportD2Ev @ 1022 NONAME + _ZN21QDeclarativeDomImportaSERKS_ @ 1023 NONAME + _ZN21QDeclarativeDomObjectC1ERKS_ @ 1024 NONAME + _ZN21QDeclarativeDomObjectC1Ev @ 1025 NONAME + _ZN21QDeclarativeDomObjectC2ERKS_ @ 1026 NONAME + _ZN21QDeclarativeDomObjectC2Ev @ 1027 NONAME + _ZN21QDeclarativeDomObjectD1Ev @ 1028 NONAME + _ZN21QDeclarativeDomObjectD2Ev @ 1029 NONAME + _ZN21QDeclarativeDomObjectaSERKS_ @ 1030 NONAME + _ZN21QDeclarativeFlickable10flickEndedEv @ 1031 NONAME + _ZN21QDeclarativeFlickable10timerEventEP11QTimerEvent @ 1032 NONAME + _ZN21QDeclarativeFlickable10wheelEventEP24QGraphicsSceneWheelEvent @ 1033 NONAME + _ZN21QDeclarativeFlickable11cancelFlickEv @ 1034 NONAME + _ZN21QDeclarativeFlickable11pageChangedEv @ 1035 NONAME + _ZN21QDeclarativeFlickable11qt_metacallEN11QMetaObject4CallEiPPv @ 1036 NONAME + _ZN21QDeclarativeFlickable11qt_metacastEPKc @ 1037 NONAME + _ZN21QDeclarativeFlickable11setContentXEf @ 1038 NONAME + _ZN21QDeclarativeFlickable11setContentYEf @ 1039 NONAME + _ZN21QDeclarativeFlickable11visibleAreaEv @ 1040 NONAME + _ZN21QDeclarativeFlickable11widthChangeEv @ 1041 NONAME + _ZN21QDeclarativeFlickable12flickStartedEv @ 1042 NONAME + _ZN21QDeclarativeFlickable12heightChangeEv @ 1043 NONAME + _ZN21QDeclarativeFlickable12setOverShootEb @ 1044 NONAME + _ZN21QDeclarativeFlickable13flickableDataEv @ 1045 NONAME + _ZN21QDeclarativeFlickable13movementEndedEv @ 1046 NONAME + _ZN21QDeclarativeFlickable13movingChangedEv @ 1047 NONAME + _ZN21QDeclarativeFlickable13setPressDelayEi @ 1048 NONAME + _ZN21QDeclarativeFlickable13viewportMovedEv @ 1049 NONAME + _ZN21QDeclarativeFlickable14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 1050 NONAME + _ZN21QDeclarativeFlickable14movementEndingEv @ 1051 NONAME + _ZN21QDeclarativeFlickable14sendMouseEventEP24QGraphicsSceneMouseEvent @ 1052 NONAME + _ZN21QDeclarativeFlickable14setInteractiveEb @ 1053 NONAME + _ZN21QDeclarativeFlickable15contentXChangedEv @ 1054 NONAME + _ZN21QDeclarativeFlickable15contentYChangedEv @ 1055 NONAME + _ZN21QDeclarativeFlickable15flickingChangedEv @ 1056 NONAME + _ZN21QDeclarativeFlickable15mousePressEventEP24QGraphicsSceneMouseEvent @ 1057 NONAME + _ZN21QDeclarativeFlickable15movementStartedEv @ 1058 NONAME + _ZN21QDeclarativeFlickable15setContentWidthEf @ 1059 NONAME + _ZN21QDeclarativeFlickable16movementStartingEv @ 1060 NONAME + _ZN21QDeclarativeFlickable16overShootChangedEv @ 1061 NONAME + _ZN21QDeclarativeFlickable16sceneEventFilterEP13QGraphicsItemP6QEvent @ 1062 NONAME + _ZN21QDeclarativeFlickable16setContentHeightEf @ 1063 NONAME + _ZN21QDeclarativeFlickable16staticMetaObjectE @ 1064 NONAME DATA 16 + _ZN21QDeclarativeFlickable17flickableChildrenEv @ 1065 NONAME + _ZN21QDeclarativeFlickable17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1066 NONAME + _ZN21QDeclarativeFlickable17pressDelayChangedEv @ 1067 NONAME + _ZN21QDeclarativeFlickable17setFlickDirectionENS_14FlickDirectionE @ 1068 NONAME + _ZN21QDeclarativeFlickable18interactiveChangedEv @ 1069 NONAME + _ZN21QDeclarativeFlickable19contentWidthChangedEv @ 1070 NONAME + _ZN21QDeclarativeFlickable19getStaticMetaObjectEv @ 1071 NONAME + _ZN21QDeclarativeFlickable19isAtBoundaryChangedEv @ 1072 NONAME + _ZN21QDeclarativeFlickable20contentHeightChangedEv @ 1073 NONAME + _ZN21QDeclarativeFlickable20setFlickDecelerationEf @ 1074 NONAME + _ZN21QDeclarativeFlickable21flickDirectionChangedEv @ 1075 NONAME + _ZN21QDeclarativeFlickable23setMaximumFlickVelocityEf @ 1076 NONAME + _ZN21QDeclarativeFlickable23verticalVelocityChangedEv @ 1077 NONAME + _ZN21QDeclarativeFlickable24flickDecelerationChangedEv @ 1078 NONAME + _ZN21QDeclarativeFlickable25horizontalVelocityChangedEv @ 1079 NONAME + _ZN21QDeclarativeFlickable27maximumFlickVelocityChangedEv @ 1080 NONAME + _ZN21QDeclarativeFlickable6tickedEv @ 1081 NONAME + _ZN21QDeclarativeFlickable8viewportEv @ 1082 NONAME + _ZN21QDeclarativeFlickableC1EP16QDeclarativeItem @ 1083 NONAME + _ZN21QDeclarativeFlickableC1ER28QDeclarativeFlickablePrivateP16QDeclarativeItem @ 1084 NONAME + _ZN21QDeclarativeFlickableC2EP16QDeclarativeItem @ 1085 NONAME + _ZN21QDeclarativeFlickableC2ER28QDeclarativeFlickablePrivateP16QDeclarativeItem @ 1086 NONAME + _ZN21QDeclarativeFlickableD0Ev @ 1087 NONAME + _ZN21QDeclarativeFlickableD1Ev @ 1088 NONAME + _ZN21QDeclarativeFlickableD2Ev @ 1089 NONAME + _ZN21QDeclarativeImageBase11qt_metacallEN11QMetaObject4CallEiPPv @ 1090 NONAME + _ZN21QDeclarativeImageBase11qt_metacastEPKc @ 1091 NONAME + _ZN21QDeclarativeImageBase13pixmapChangedEv @ 1092 NONAME + _ZN21QDeclarativeImageBase13sourceChangedERK4QUrl @ 1093 NONAME + _ZN21QDeclarativeImageBase13statusChangedENS_6StatusE @ 1094 NONAME + _ZN21QDeclarativeImageBase15progressChangedEf @ 1095 NONAME + _ZN21QDeclarativeImageBase15requestFinishedEv @ 1096 NONAME + _ZN21QDeclarativeImageBase15requestProgressExx @ 1097 NONAME + _ZN21QDeclarativeImageBase15setAsynchronousEb @ 1098 NONAME + _ZN21QDeclarativeImageBase16staticMetaObjectE @ 1099 NONAME DATA 16 + _ZN21QDeclarativeImageBase17componentCompleteEv @ 1100 NONAME + _ZN21QDeclarativeImageBase19asynchronousChangedEv @ 1101 NONAME + _ZN21QDeclarativeImageBase19getStaticMetaObjectEv @ 1102 NONAME + _ZN21QDeclarativeImageBase4loadEv @ 1103 NONAME + _ZN21QDeclarativeImageBase9setSourceERK4QUrl @ 1104 NONAME + _ZN21QDeclarativeImageBaseC1ER28QDeclarativeImageBasePrivateP16QDeclarativeItem @ 1105 NONAME + _ZN21QDeclarativeImageBaseC2ER28QDeclarativeImageBasePrivateP16QDeclarativeItem @ 1106 NONAME + _ZN21QDeclarativeImageBaseD0Ev @ 1107 NONAME + _ZN21QDeclarativeImageBaseD1Ev @ 1108 NONAME + _ZN21QDeclarativeImageBaseD2Ev @ 1109 NONAME + _ZN21QDeclarativeListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1110 NONAME + _ZN21QDeclarativeListModel11qt_metacastEPKc @ 1111 NONAME + _ZN21QDeclarativeListModel11setPropertyEiRK7QStringRK8QVariant @ 1112 NONAME + _ZN21QDeclarativeListModel12countChangedEi @ 1113 NONAME + _ZN21QDeclarativeListModel16staticMetaObjectE @ 1114 NONAME DATA 16 + _ZN21QDeclarativeListModel19getStaticMetaObjectEv @ 1115 NONAME + _ZN21QDeclarativeListModel3setEiRK12QScriptValue @ 1116 NONAME + _ZN21QDeclarativeListModel4moveEiii @ 1117 NONAME + _ZN21QDeclarativeListModel5clearEv @ 1118 NONAME + _ZN21QDeclarativeListModel6appendERK12QScriptValue @ 1119 NONAME + _ZN21QDeclarativeListModel6insertEiRK12QScriptValue @ 1120 NONAME + _ZN21QDeclarativeListModel6removeEi @ 1121 NONAME + _ZN21QDeclarativeListModelC1EP7QObject @ 1122 NONAME + _ZN21QDeclarativeListModelC2EP7QObject @ 1123 NONAME + _ZN21QDeclarativeListModelD0Ev @ 1124 NONAME + _ZN21QDeclarativeListModelD1Ev @ 1125 NONAME + _ZN21QDeclarativeListModelD2Ev @ 1126 NONAME + _ZN21QDeclarativeMouseArea10sceneEventEP6QEvent @ 1127 NONAME + _ZN21QDeclarativeMouseArea10setEnabledEb @ 1128 NONAME + _ZN21QDeclarativeMouseArea10setHoveredEb @ 1129 NONAME + _ZN21QDeclarativeMouseArea10setPressedEb @ 1130 NONAME + _ZN21QDeclarativeMouseArea10timerEventEP11QTimerEvent @ 1131 NONAME + _ZN21QDeclarativeMouseArea11qt_metacallEN11QMetaObject4CallEiPPv @ 1132 NONAME + _ZN21QDeclarativeMouseArea11qt_metacastEPKc @ 1133 NONAME + _ZN21QDeclarativeMouseArea12pressAndHoldEP22QDeclarativeMouseEvent @ 1134 NONAME + _ZN21QDeclarativeMouseArea13doubleClickedEP22QDeclarativeMouseEvent @ 1135 NONAME + _ZN21QDeclarativeMouseArea14enabledChangedEv @ 1136 NONAME + _ZN21QDeclarativeMouseArea14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 1137 NONAME + _ZN21QDeclarativeMouseArea14hoveredChangedEv @ 1138 NONAME + _ZN21QDeclarativeMouseArea14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 1139 NONAME + _ZN21QDeclarativeMouseArea14pressedChangedEv @ 1140 NONAME + _ZN21QDeclarativeMouseArea15hoverEnterEventEP24QGraphicsSceneHoverEvent @ 1141 NONAME + _ZN21QDeclarativeMouseArea15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 1142 NONAME + _ZN21QDeclarativeMouseArea15mousePressEventEP24QGraphicsSceneMouseEvent @ 1143 NONAME + _ZN21QDeclarativeMouseArea15positionChangedEP22QDeclarativeMouseEvent @ 1144 NONAME + _ZN21QDeclarativeMouseArea16staticMetaObjectE @ 1145 NONAME DATA 16 + _ZN21QDeclarativeMouseArea17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1146 NONAME + _ZN21QDeclarativeMouseArea18setAcceptedButtonsE6QFlagsIN2Qt11MouseButtonEE @ 1147 NONAME + _ZN21QDeclarativeMouseArea19getStaticMetaObjectEv @ 1148 NONAME + _ZN21QDeclarativeMouseArea21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 1149 NONAME + _ZN21QDeclarativeMouseArea22acceptedButtonsChangedEv @ 1150 NONAME + _ZN21QDeclarativeMouseArea4dragEv @ 1151 NONAME + _ZN21QDeclarativeMouseArea6exitedEv @ 1152 NONAME + _ZN21QDeclarativeMouseArea7clickedEP22QDeclarativeMouseEvent @ 1153 NONAME + _ZN21QDeclarativeMouseArea7enteredEv @ 1154 NONAME + _ZN21QDeclarativeMouseArea7pressedEP22QDeclarativeMouseEvent @ 1155 NONAME + _ZN21QDeclarativeMouseArea8releasedEP22QDeclarativeMouseEvent @ 1156 NONAME + _ZN21QDeclarativeMouseAreaC1EP16QDeclarativeItem @ 1157 NONAME + _ZN21QDeclarativeMouseAreaC2EP16QDeclarativeItem @ 1158 NONAME + _ZN21QDeclarativeMouseAreaD0Ev @ 1159 NONAME + _ZN21QDeclarativeMouseAreaD1Ev @ 1160 NONAME + _ZN21QDeclarativeMouseAreaD2Ev @ 1161 NONAME + _ZN21QDeclarativeParticles11imageLoadedEv @ 1162 NONAME + _ZN21QDeclarativeParticles11qt_metacallEN11QMetaObject4CallEiPPv @ 1163 NONAME + _ZN21QDeclarativeParticles11qt_metacastEPKc @ 1164 NONAME + _ZN21QDeclarativeParticles11setLifeSpanEi @ 1165 NONAME + _ZN21QDeclarativeParticles11setVelocityEf @ 1166 NONAME + _ZN21QDeclarativeParticles12angleChangedEv @ 1167 NONAME + _ZN21QDeclarativeParticles12countChangedEv @ 1168 NONAME + _ZN21QDeclarativeParticles13motionChangedEv @ 1169 NONAME + _ZN21QDeclarativeParticles13sourceChangedEv @ 1170 NONAME + _ZN21QDeclarativeParticles15emittingChangedEv @ 1171 NONAME + _ZN21QDeclarativeParticles15lifeSpanChangedEv @ 1172 NONAME + _ZN21QDeclarativeParticles15setEmissionRateEi @ 1173 NONAME + _ZN21QDeclarativeParticles15velocityChangedEv @ 1174 NONAME + _ZN21QDeclarativeParticles16staticMetaObjectE @ 1175 NONAME DATA 16 + _ZN21QDeclarativeParticles17componentCompleteEv @ 1176 NONAME + _ZN21QDeclarativeParticles17setAngleDeviationEf @ 1177 NONAME + _ZN21QDeclarativeParticles17setFadeInDurationEi @ 1178 NONAME + _ZN21QDeclarativeParticles18setFadeOutDurationEi @ 1179 NONAME + _ZN21QDeclarativeParticles19emissionRateChangedEv @ 1180 NONAME + _ZN21QDeclarativeParticles19getStaticMetaObjectEv @ 1181 NONAME + _ZN21QDeclarativeParticles19setEmissionVarianceEf @ 1182 NONAME + _ZN21QDeclarativeParticles20setLifeSpanDeviationEi @ 1183 NONAME + _ZN21QDeclarativeParticles20setVelocityDeviationEf @ 1184 NONAME + _ZN21QDeclarativeParticles21angleDeviationChangedEv @ 1185 NONAME + _ZN21QDeclarativeParticles21fadeInDurationChangedEv @ 1186 NONAME + _ZN21QDeclarativeParticles22fadeOutDurationChangedEv @ 1187 NONAME + _ZN21QDeclarativeParticles23emissionVarianceChangedEv @ 1188 NONAME + _ZN21QDeclarativeParticles24lifeSpanDeviationChangedEv @ 1189 NONAME + _ZN21QDeclarativeParticles24velocityDeviationChangedEv @ 1190 NONAME + _ZN21QDeclarativeParticles5burstEii @ 1191 NONAME + _ZN21QDeclarativeParticles5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1192 NONAME + _ZN21QDeclarativeParticles8setAngleEf @ 1193 NONAME + _ZN21QDeclarativeParticles8setCountEi @ 1194 NONAME + _ZN21QDeclarativeParticles9setMotionEP26QDeclarativeParticleMotion @ 1195 NONAME + _ZN21QDeclarativeParticles9setSourceERK4QUrl @ 1196 NONAME + _ZN21QDeclarativeParticlesC1EP16QDeclarativeItem @ 1197 NONAME + _ZN21QDeclarativeParticlesC2EP16QDeclarativeItem @ 1198 NONAME + _ZN21QDeclarativeParticlesD0Ev @ 1199 NONAME + _ZN21QDeclarativeParticlesD1Ev @ 1200 NONAME + _ZN21QDeclarativeParticlesD2Ev @ 1201 NONAME + _ZN21QDeclarativePathCubic11qt_metacallEN11QMetaObject4CallEiPPv @ 1202 NONAME + _ZN21QDeclarativePathCubic11qt_metacastEPKc @ 1203 NONAME + _ZN21QDeclarativePathCubic12setControl1XEf @ 1204 NONAME + _ZN21QDeclarativePathCubic12setControl1YEf @ 1205 NONAME + _ZN21QDeclarativePathCubic12setControl2XEf @ 1206 NONAME + _ZN21QDeclarativePathCubic12setControl2YEf @ 1207 NONAME + _ZN21QDeclarativePathCubic16staticMetaObjectE @ 1208 NONAME DATA 16 + _ZN21QDeclarativePathCubic19getStaticMetaObjectEv @ 1209 NONAME + _ZN21QDeclarativePathCubic9addToPathER12QPainterPath @ 1210 NONAME + _ZN21QDeclarativeRectangle11qt_metacallEN11QMetaObject4CallEiPPv @ 1211 NONAME + _ZN21QDeclarativeRectangle11qt_metacastEPKc @ 1212 NONAME + _ZN21QDeclarativeRectangle11setGradientEP20QDeclarativeGradient @ 1213 NONAME + _ZN21QDeclarativeRectangle12colorChangedEv @ 1214 NONAME + _ZN21QDeclarativeRectangle13radiusChangedEv @ 1215 NONAME + _ZN21QDeclarativeRectangle16staticMetaObjectE @ 1216 NONAME DATA 16 + _ZN21QDeclarativeRectangle19generateRoundedRectEv @ 1217 NONAME + _ZN21QDeclarativeRectangle19getStaticMetaObjectEv @ 1218 NONAME + _ZN21QDeclarativeRectangle20generateBorderedRectEv @ 1219 NONAME + _ZN21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1220 NONAME + _ZN21QDeclarativeRectangle6borderEv @ 1221 NONAME + _ZN21QDeclarativeRectangle8doUpdateEv @ 1222 NONAME + _ZN21QDeclarativeRectangle8drawRectER8QPainter @ 1223 NONAME + _ZN21QDeclarativeRectangle8setColorERK6QColor @ 1224 NONAME + _ZN21QDeclarativeRectangle9setRadiusEf @ 1225 NONAME + _ZN21QDeclarativeRectangleC1EP16QDeclarativeItem @ 1226 NONAME + _ZN21QDeclarativeRectangleC2EP16QDeclarativeItem @ 1227 NONAME + _ZN21QDeclarativeScaleGrid11qt_metacallEN11QMetaObject4CallEiPPv @ 1228 NONAME + _ZN21QDeclarativeScaleGrid11qt_metacastEPKc @ 1229 NONAME + _ZN21QDeclarativeScaleGrid13borderChangedEv @ 1230 NONAME + _ZN21QDeclarativeScaleGrid16staticMetaObjectE @ 1231 NONAME DATA 16 + _ZN21QDeclarativeScaleGrid19getStaticMetaObjectEv @ 1232 NONAME + _ZN21QDeclarativeScaleGrid6setTopEi @ 1233 NONAME + _ZN21QDeclarativeScaleGrid7setLeftEi @ 1234 NONAME + _ZN21QDeclarativeScaleGrid8setRightEi @ 1235 NONAME + _ZN21QDeclarativeScaleGrid9setBottomEi @ 1236 NONAME + _ZN21QDeclarativeScaleGridC1EP7QObject @ 1237 NONAME + _ZN21QDeclarativeScaleGridC2EP7QObject @ 1238 NONAME + _ZN21QDeclarativeScaleGridD0Ev @ 1239 NONAME + _ZN21QDeclarativeScaleGridD1Ev @ 1240 NONAME + _ZN21QDeclarativeScaleGridD2Ev @ 1241 NONAME + _ZN21QDeclarativeTextInput10moveCursorEv @ 1242 NONAME + _ZN21QDeclarativeTextInput10updateRectERK5QRect @ 1243 NONAME + _ZN21QDeclarativeTextInput10updateSizeEb @ 1244 NONAME + _ZN21QDeclarativeTextInput11fontChangedERK5QFont @ 1245 NONAME + _ZN21QDeclarativeTextInput11qt_metacallEN11QMetaObject4CallEiPPv @ 1246 NONAME + _ZN21QDeclarativeTextInput11qt_metacastEPKc @ 1247 NONAME + _ZN21QDeclarativeTextInput11setEchoModeENS_8EchoModeE @ 1248 NONAME + _ZN21QDeclarativeTextInput11setReadOnlyEb @ 1249 NONAME + _ZN21QDeclarativeTextInput11textChangedEv @ 1250 NONAME + _ZN21QDeclarativeTextInput12colorChangedERK6QColor @ 1251 NONAME + _ZN21QDeclarativeTextInput12createCursorEv @ 1252 NONAME + _ZN21QDeclarativeTextInput12drawContentsEP8QPainterRK5QRect @ 1253 NONAME + _ZN21QDeclarativeTextInput12focusChangedEb @ 1254 NONAME + _ZN21QDeclarativeTextInput12setInputMaskERK7QString @ 1255 NONAME + _ZN21QDeclarativeTextInput12setMaxLengthEi @ 1256 NONAME + _ZN21QDeclarativeTextInput12setValidatorEP10QValidator @ 1257 NONAME + _ZN21QDeclarativeTextInput13keyPressEventEP9QKeyEvent @ 1258 NONAME + _ZN21QDeclarativeTextInput13q_textChangedEv @ 1259 NONAME + _ZN21QDeclarativeTextInput15echoModeChangedENS_8EchoModeE @ 1260 NONAME + _ZN21QDeclarativeTextInput15geometryChangedERK6QRectFS2_ @ 1261 NONAME + _ZN21QDeclarativeTextInput15mousePressEventEP24QGraphicsSceneMouseEvent @ 1262 NONAME + _ZN21QDeclarativeTextInput15readOnlyChangedEb @ 1263 NONAME + _ZN21QDeclarativeTextInput15setFocusOnPressEb @ 1264 NONAME + _ZN21QDeclarativeTextInput15setSelectionEndEi @ 1265 NONAME + _ZN21QDeclarativeTextInput16cursorPosChangedEv @ 1266 NONAME + _ZN21QDeclarativeTextInput16inputMaskChangedERK7QString @ 1267 NONAME + _ZN21QDeclarativeTextInput16selectionChangedEv @ 1268 NONAME + _ZN21QDeclarativeTextInput16setCursorVisibleEb @ 1269 NONAME + _ZN21QDeclarativeTextInput16staticMetaObjectE @ 1270 NONAME DATA 16 + _ZN21QDeclarativeTextInput16validatorChangedEv @ 1271 NONAME + _ZN21QDeclarativeTextInput17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1272 NONAME + _ZN21QDeclarativeTextInput17setCursorDelegateEP21QDeclarativeComponent @ 1273 NONAME + _ZN21QDeclarativeTextInput17setCursorPositionEi @ 1274 NONAME + _ZN21QDeclarativeTextInput17setSelectionColorERK6QColor @ 1275 NONAME + _ZN21QDeclarativeTextInput17setSelectionStartEi @ 1276 NONAME + _ZN21QDeclarativeTextInput19focusOnPressChangedEb @ 1277 NONAME + _ZN21QDeclarativeTextInput19getStaticMetaObjectEv @ 1278 NONAME + _ZN21QDeclarativeTextInput19selectedTextChangedEv @ 1279 NONAME + _ZN21QDeclarativeTextInput19selectionEndChangedEv @ 1280 NONAME + _ZN21QDeclarativeTextInput20cursorVisibleChangedEb @ 1281 NONAME + _ZN21QDeclarativeTextInput20maximumLengthChangedEi @ 1282 NONAME + _ZN21QDeclarativeTextInput20setSelectedTextColorERK6QColor @ 1283 NONAME + _ZN21QDeclarativeTextInput21cursorDelegateChangedEv @ 1284 NONAME + _ZN21QDeclarativeTextInput21cursorPositionChangedEv @ 1285 NONAME + _ZN21QDeclarativeTextInput21selectionColorChangedERK6QColor @ 1286 NONAME + _ZN21QDeclarativeTextInput21selectionStartChangedEv @ 1287 NONAME + _ZN21QDeclarativeTextInput22acceptableInputChangedEv @ 1288 NONAME + _ZN21QDeclarativeTextInput24selectedTextColorChangedERK6QColor @ 1289 NONAME + _ZN21QDeclarativeTextInput26horizontalAlignmentChangedENS_10HAlignmentE @ 1290 NONAME + _ZN21QDeclarativeTextInput5eventEP6QEvent @ 1291 NONAME + _ZN21QDeclarativeTextInput6xToPosEi @ 1292 NONAME + _ZN21QDeclarativeTextInput7setFontERK5QFont @ 1293 NONAME + _ZN21QDeclarativeTextInput7setTextERK7QString @ 1294 NONAME + _ZN21QDeclarativeTextInput8acceptedEv @ 1295 NONAME + _ZN21QDeclarativeTextInput8setColorERK6QColor @ 1296 NONAME + _ZN21QDeclarativeTextInput9selectAllEv @ 1297 NONAME + _ZN21QDeclarativeTextInput9setHAlignENS_10HAlignmentE @ 1298 NONAME + _ZN21QDeclarativeTextInputC1EP16QDeclarativeItem @ 1299 NONAME + _ZN21QDeclarativeTextInputC2EP16QDeclarativeItem @ 1300 NONAME + _ZN21QDeclarativeTextInputD0Ev @ 1301 NONAME + _ZN21QDeclarativeTextInputD1Ev @ 1302 NONAME + _ZN21QDeclarativeTextInputD2Ev @ 1303 NONAME + _ZN21QDeclarativeValueType11qt_metacallEN11QMetaObject4CallEiPPv @ 1304 NONAME + _ZN21QDeclarativeValueType11qt_metacastEPKc @ 1305 NONAME + _ZN21QDeclarativeValueType16staticMetaObjectE @ 1306 NONAME DATA 16 + _ZN21QDeclarativeValueType19getStaticMetaObjectEv @ 1307 NONAME + _ZN21QDeclarativeValueTypeC2EP7QObject @ 1308 NONAME + _ZN22QDeclarativeDebugQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1309 NONAME + _ZN22QDeclarativeDebugQuery11qt_metacastEPKc @ 1310 NONAME + _ZN22QDeclarativeDebugQuery12stateChangedENS_5StateE @ 1311 NONAME + _ZN22QDeclarativeDebugQuery16staticMetaObjectE @ 1312 NONAME DATA 16 + _ZN22QDeclarativeDebugQuery19getStaticMetaObjectEv @ 1313 NONAME + _ZN22QDeclarativeDebugQuery8setStateENS_5StateE @ 1314 NONAME + _ZN22QDeclarativeDebugQueryC1EP7QObject @ 1315 NONAME + _ZN22QDeclarativeDebugQueryC2EP7QObject @ 1316 NONAME + _ZN22QDeclarativeDebugWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 1317 NONAME + _ZN22QDeclarativeDebugWatch11qt_metacastEPKc @ 1318 NONAME + _ZN22QDeclarativeDebugWatch12stateChangedENS_5StateE @ 1319 NONAME + _ZN22QDeclarativeDebugWatch12valueChangedERK10QByteArrayRK8QVariant @ 1320 NONAME + _ZN22QDeclarativeDebugWatch16staticMetaObjectE @ 1321 NONAME DATA 16 + _ZN22QDeclarativeDebugWatch19getStaticMetaObjectEv @ 1322 NONAME + _ZN22QDeclarativeDebugWatch8setStateENS_5StateE @ 1323 NONAME + _ZN22QDeclarativeDebugWatchC1EP7QObject @ 1324 NONAME + _ZN22QDeclarativeDebugWatchC2EP7QObject @ 1325 NONAME + _ZN22QDeclarativeDebugWatchD0Ev @ 1326 NONAME + _ZN22QDeclarativeDebugWatchD1Ev @ 1327 NONAME + _ZN22QDeclarativeDebugWatchD2Ev @ 1328 NONAME + _ZN22QDeclarativeEaseFollow10setEnabledEb @ 1329 NONAME + _ZN22QDeclarativeEaseFollow11qt_metacallEN11QMetaObject4CallEiPPv @ 1330 NONAME + _ZN22QDeclarativeEaseFollow11qt_metacastEPKc @ 1331 NONAME + _ZN22QDeclarativeEaseFollow11setDurationEf @ 1332 NONAME + _ZN22QDeclarativeEaseFollow11setVelocityEf @ 1333 NONAME + _ZN22QDeclarativeEaseFollow13sourceChangedEv @ 1334 NONAME + _ZN22QDeclarativeEaseFollow14enabledChangedEv @ 1335 NONAME + _ZN22QDeclarativeEaseFollow14setSourceValueEf @ 1336 NONAME + _ZN22QDeclarativeEaseFollow15durationChangedEv @ 1337 NONAME + _ZN22QDeclarativeEaseFollow15velocityChangedEv @ 1338 NONAME + _ZN22QDeclarativeEaseFollow16setReversingModeENS_13ReversingModeE @ 1339 NONAME + _ZN22QDeclarativeEaseFollow16staticMetaObjectE @ 1340 NONAME DATA 16 + _ZN22QDeclarativeEaseFollow19getStaticMetaObjectEv @ 1341 NONAME + _ZN22QDeclarativeEaseFollow20reversingModeChangedEv @ 1342 NONAME + _ZN22QDeclarativeEaseFollow20setMaximumEasingTimeEf @ 1343 NONAME + _ZN22QDeclarativeEaseFollow24maximumEasingTimeChangedEv @ 1344 NONAME + _ZN22QDeclarativeEaseFollow9setTargetERK20QDeclarativeProperty @ 1345 NONAME + _ZN22QDeclarativeEaseFollowC1EP7QObject @ 1346 NONAME + _ZN22QDeclarativeEaseFollowC2EP7QObject @ 1347 NONAME + _ZN22QDeclarativeEaseFollowD0Ev @ 1348 NONAME + _ZN22QDeclarativeEaseFollowD1Ev @ 1349 NONAME + _ZN22QDeclarativeEaseFollowD2Ev @ 1350 NONAME + _ZN22QDeclarativeExpression10__q_notifyEv @ 1351 NONAME + _ZN22QDeclarativeExpression10clearErrorEv @ 1352 NONAME + _ZN22QDeclarativeExpression11qt_metacallEN11QMetaObject4CallEiPPv @ 1353 NONAME + _ZN22QDeclarativeExpression11qt_metacastEPKc @ 1354 NONAME + _ZN22QDeclarativeExpression12valueChangedEv @ 1355 NONAME + _ZN22QDeclarativeExpression13setExpressionERK7QString @ 1356 NONAME + _ZN22QDeclarativeExpression16staticMetaObjectE @ 1357 NONAME DATA 16 + _ZN22QDeclarativeExpression17setSourceLocationERK7QStringi @ 1358 NONAME + _ZN22QDeclarativeExpression19getStaticMetaObjectEv @ 1359 NONAME + _ZN22QDeclarativeExpression23setNotifyOnValueChangedEb @ 1360 NONAME + _ZN22QDeclarativeExpression5valueEPb @ 1361 NONAME + _ZN22QDeclarativeExpressionC1EP19QDeclarativeContextPvP20QDeclarativeRefCountP7QObjectRK7QStringiR29QDeclarativeExpressionPrivate @ 1362 NONAME + _ZN22QDeclarativeExpressionC1EP19QDeclarativeContextRK7QStringP7QObject @ 1363 NONAME + _ZN22QDeclarativeExpressionC1EP19QDeclarativeContextRK7QStringP7QObjectR29QDeclarativeExpressionPrivate @ 1364 NONAME + _ZN22QDeclarativeExpressionC1Ev @ 1365 NONAME + _ZN22QDeclarativeExpressionC2EP19QDeclarativeContextPvP20QDeclarativeRefCountP7QObjectRK7QStringiR29QDeclarativeExpressionPrivate @ 1366 NONAME + _ZN22QDeclarativeExpressionC2EP19QDeclarativeContextRK7QStringP7QObject @ 1367 NONAME + _ZN22QDeclarativeExpressionC2EP19QDeclarativeContextRK7QStringP7QObjectR29QDeclarativeExpressionPrivate @ 1368 NONAME + _ZN22QDeclarativeExpressionC2Ev @ 1369 NONAME + _ZN22QDeclarativeExpressionD0Ev @ 1370 NONAME + _ZN22QDeclarativeExpressionD1Ev @ 1371 NONAME + _ZN22QDeclarativeExpressionD2Ev @ 1372 NONAME + _ZN22QDeclarativeFocusPanel10sceneEventEP6QEvent @ 1373 NONAME + _ZN22QDeclarativeFocusPanel11qt_metacallEN11QMetaObject4CallEiPPv @ 1374 NONAME + _ZN22QDeclarativeFocusPanel11qt_metacastEPKc @ 1375 NONAME + _ZN22QDeclarativeFocusPanel13activeChangedEv @ 1376 NONAME + _ZN22QDeclarativeFocusPanel16staticMetaObjectE @ 1377 NONAME DATA 16 + _ZN22QDeclarativeFocusPanel19getStaticMetaObjectEv @ 1378 NONAME + _ZN22QDeclarativeFocusPanelC1EP16QDeclarativeItem @ 1379 NONAME + _ZN22QDeclarativeFocusPanelC2EP16QDeclarativeItem @ 1380 NONAME + _ZN22QDeclarativeFocusPanelD0Ev @ 1381 NONAME + _ZN22QDeclarativeFocusPanelD1Ev @ 1382 NONAME + _ZN22QDeclarativeFocusPanelD2Ev @ 1383 NONAME + _ZN22QDeclarativeFocusScope11qt_metacallEN11QMetaObject4CallEiPPv @ 1384 NONAME + _ZN22QDeclarativeFocusScope11qt_metacastEPKc @ 1385 NONAME + _ZN22QDeclarativeFocusScope16staticMetaObjectE @ 1386 NONAME DATA 16 + _ZN22QDeclarativeFocusScope19getStaticMetaObjectEv @ 1387 NONAME + _ZN22QDeclarativeFocusScopeC1EP16QDeclarativeItem @ 1388 NONAME + _ZN22QDeclarativeFocusScopeC2EP16QDeclarativeItem @ 1389 NONAME + _ZN22QDeclarativeFocusScopeD0Ev @ 1390 NONAME + _ZN22QDeclarativeFocusScopeD1Ev @ 1391 NONAME + _ZN22QDeclarativeFocusScopeD2Ev @ 1392 NONAME + _ZN22QDeclarativeFontLoader11nameChangedEv @ 1393 NONAME + _ZN22QDeclarativeFontLoader11qt_metacallEN11QMetaObject4CallEiPPv @ 1394 NONAME + _ZN22QDeclarativeFontLoader11qt_metacastEPKc @ 1395 NONAME + _ZN22QDeclarativeFontLoader13replyFinishedEv @ 1396 NONAME + _ZN22QDeclarativeFontLoader13statusChangedEv @ 1397 NONAME + _ZN22QDeclarativeFontLoader16staticMetaObjectE @ 1398 NONAME DATA 16 + _ZN22QDeclarativeFontLoader19getStaticMetaObjectEv @ 1399 NONAME + _ZN22QDeclarativeFontLoader7setNameERK7QString @ 1400 NONAME + _ZN22QDeclarativeFontLoader9setSourceERK4QUrl @ 1401 NONAME + _ZN22QDeclarativeFontLoaderC1EP7QObject @ 1402 NONAME + _ZN22QDeclarativeFontLoaderC2EP7QObject @ 1403 NONAME + _ZN22QDeclarativeFontLoaderD0Ev @ 1404 NONAME + _ZN22QDeclarativeFontLoaderD1Ev @ 1405 NONAME + _ZN22QDeclarativeFontLoaderD2Ev @ 1406 NONAME + _ZN22QDeclarativeStateGroup10classBeginEv @ 1407 NONAME + _ZN22QDeclarativeStateGroup11qt_metacallEN11QMetaObject4CallEiPPv @ 1408 NONAME + _ZN22QDeclarativeStateGroup11qt_metacastEPKc @ 1409 NONAME + _ZN22QDeclarativeStateGroup11removeStateEP17QDeclarativeState @ 1410 NONAME + _ZN22QDeclarativeStateGroup12stateChangedERK7QString @ 1411 NONAME + _ZN22QDeclarativeStateGroup14statesPropertyEv @ 1412 NONAME + _ZN22QDeclarativeStateGroup15updateAutoStateEv @ 1413 NONAME + _ZN22QDeclarativeStateGroup16staticMetaObjectE @ 1414 NONAME DATA 16 + _ZN22QDeclarativeStateGroup17componentCompleteEv @ 1415 NONAME + _ZN22QDeclarativeStateGroup19getStaticMetaObjectEv @ 1416 NONAME + _ZN22QDeclarativeStateGroup19transitionsPropertyEv @ 1417 NONAME + _ZN22QDeclarativeStateGroup8setStateERK7QString @ 1418 NONAME + _ZN22QDeclarativeStateGroupC1EP7QObject @ 1419 NONAME + _ZN22QDeclarativeStateGroupC2EP7QObject @ 1420 NONAME + _ZN22QDeclarativeStateGroupD0Ev @ 1421 NONAME + _ZN22QDeclarativeStateGroupD1Ev @ 1422 NONAME + _ZN22QDeclarativeStateGroupD2Ev @ 1423 NONAME + _ZN22QDeclarativeStyledText5parseERK7QStringR11QTextLayout @ 1424 NONAME + _ZN22QDeclarativeStyledTextC1ERK7QStringR11QTextLayout @ 1425 NONAME + _ZN22QDeclarativeStyledTextC2ERK7QStringR11QTextLayout @ 1426 NONAME + _ZN22QDeclarativeStyledTextD1Ev @ 1427 NONAME + _ZN22QDeclarativeStyledTextD2Ev @ 1428 NONAME + _ZN22QDeclarativeTransition10animationsEv @ 1429 NONAME + _ZN22QDeclarativeTransition10setToStateERK7QString @ 1430 NONAME + _ZN22QDeclarativeTransition11qt_metacallEN11QMetaObject4CallEiPPv @ 1431 NONAME + _ZN22QDeclarativeTransition11qt_metacastEPKc @ 1432 NONAME + _ZN22QDeclarativeTransition11setReversedEb @ 1433 NONAME + _ZN22QDeclarativeTransition12setFromStateERK7QString @ 1434 NONAME + _ZN22QDeclarativeTransition13setReversibleEb @ 1435 NONAME + _ZN22QDeclarativeTransition16staticMetaObjectE @ 1436 NONAME DATA 16 + _ZN22QDeclarativeTransition19getStaticMetaObjectEv @ 1437 NONAME + _ZN22QDeclarativeTransition4stopEv @ 1438 NONAME + _ZN22QDeclarativeTransition7prepareER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyEP29QDeclarativeTransitionManager @ 1439 NONAME + _ZN22QDeclarativeTransitionC1EP7QObject @ 1440 NONAME + _ZN22QDeclarativeTransitionC2EP7QObject @ 1441 NONAME + _ZN22QDeclarativeTransitionD0Ev @ 1442 NONAME + _ZN22QDeclarativeTransitionD1Ev @ 1443 NONAME + _ZN22QDeclarativeTransitionD2Ev @ 1444 NONAME + _ZN23QDeclarativeBorderImage11qt_metacallEN11QMetaObject4CallEiPPv @ 1445 NONAME + _ZN23QDeclarativeBorderImage11qt_metacastEPKc @ 1446 NONAME + _ZN23QDeclarativeBorderImage15requestFinishedEv @ 1447 NONAME + _ZN23QDeclarativeBorderImage16staticMetaObjectE @ 1448 NONAME DATA 16 + _ZN23QDeclarativeBorderImage18sciRequestFinishedEv @ 1449 NONAME + _ZN23QDeclarativeBorderImage18setGridScaledImageERK27QDeclarativeGridScaledImage @ 1450 NONAME + _ZN23QDeclarativeBorderImage19getStaticMetaObjectEv @ 1451 NONAME + _ZN23QDeclarativeBorderImage19setVerticalTileModeENS_8TileModeE @ 1452 NONAME + _ZN23QDeclarativeBorderImage21setHorizontalTileModeENS_8TileModeE @ 1453 NONAME + _ZN23QDeclarativeBorderImage23verticalTileModeChangedEv @ 1454 NONAME + _ZN23QDeclarativeBorderImage25horizontalTileModeChangedEv @ 1455 NONAME + _ZN23QDeclarativeBorderImage4loadEv @ 1456 NONAME + _ZN23QDeclarativeBorderImage5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1457 NONAME + _ZN23QDeclarativeBorderImage6borderEv @ 1458 NONAME + _ZN23QDeclarativeBorderImage9setSourceERK4QUrl @ 1459 NONAME + _ZN23QDeclarativeBorderImageC1EP16QDeclarativeItem @ 1460 NONAME + _ZN23QDeclarativeBorderImageC2EP16QDeclarativeItem @ 1461 NONAME + _ZN23QDeclarativeBorderImageD0Ev @ 1462 NONAME + _ZN23QDeclarativeBorderImageD1Ev @ 1463 NONAME + _ZN23QDeclarativeBorderImageD2Ev @ 1464 NONAME + _ZN23QDeclarativeConnections11qt_metacallEN11QMetaObject4CallEiPPv @ 1465 NONAME + _ZN23QDeclarativeConnections11qt_metacastEPKc @ 1466 NONAME + _ZN23QDeclarativeConnections13targetChangedEv @ 1467 NONAME + _ZN23QDeclarativeConnections14connectSignalsEv @ 1468 NONAME + _ZN23QDeclarativeConnections16staticMetaObjectE @ 1469 NONAME DATA 16 + _ZN23QDeclarativeConnections17componentCompleteEv @ 1470 NONAME + _ZN23QDeclarativeConnections19getStaticMetaObjectEv @ 1471 NONAME + _ZN23QDeclarativeConnections9setTargetEP7QObject @ 1472 NONAME + _ZN23QDeclarativeConnectionsC1EP7QObject @ 1473 NONAME + _ZN23QDeclarativeConnectionsC2EP7QObject @ 1474 NONAME + _ZN23QDeclarativeConnectionsD0Ev @ 1475 NONAME + _ZN23QDeclarativeConnectionsD1Ev @ 1476 NONAME + _ZN23QDeclarativeConnectionsD2Ev @ 1477 NONAME + _ZN23QDeclarativeDebugClient10setEnabledEb @ 1478 NONAME + _ZN23QDeclarativeDebugClient11qt_metacallEN11QMetaObject4CallEiPPv @ 1479 NONAME + _ZN23QDeclarativeDebugClient11qt_metacastEPKc @ 1480 NONAME + _ZN23QDeclarativeDebugClient11sendMessageERK10QByteArray @ 1481 NONAME + _ZN23QDeclarativeDebugClient15messageReceivedERK10QByteArray @ 1482 NONAME + _ZN23QDeclarativeDebugClient16staticMetaObjectE @ 1483 NONAME DATA 16 + _ZN23QDeclarativeDebugClient19getStaticMetaObjectEv @ 1484 NONAME + _ZN23QDeclarativeDebugClientC1ERK7QStringP27QDeclarativeDebugConnection @ 1485 NONAME + _ZN23QDeclarativeDebugClientC2ERK7QStringP27QDeclarativeDebugConnection @ 1486 NONAME + _ZN23QDeclarativeDomDocument4loadEP18QDeclarativeEngineRK10QByteArrayRK4QUrl @ 1487 NONAME + _ZN23QDeclarativeDomDocumentC1ERKS_ @ 1488 NONAME + _ZN23QDeclarativeDomDocumentC1Ev @ 1489 NONAME + _ZN23QDeclarativeDomDocumentC2ERKS_ @ 1490 NONAME + _ZN23QDeclarativeDomDocumentC2Ev @ 1491 NONAME + _ZN23QDeclarativeDomDocumentD1Ev @ 1492 NONAME + _ZN23QDeclarativeDomDocumentD2Ev @ 1493 NONAME + _ZN23QDeclarativeDomDocumentaSERKS_ @ 1494 NONAME + _ZN23QDeclarativeDomPropertyC1ERKS_ @ 1495 NONAME + _ZN23QDeclarativeDomPropertyC1Ev @ 1496 NONAME + _ZN23QDeclarativeDomPropertyC2ERKS_ @ 1497 NONAME + _ZN23QDeclarativeDomPropertyC2Ev @ 1498 NONAME + _ZN23QDeclarativeDomPropertyD1Ev @ 1499 NONAME + _ZN23QDeclarativeDomPropertyD2Ev @ 1500 NONAME + _ZN23QDeclarativeDomPropertyaSERKS_ @ 1501 NONAME + _ZN23QDeclarativeEngineDebug11qt_metacallEN11QMetaObject4CallEiPPv @ 1502 NONAME + _ZN23QDeclarativeEngineDebug11qt_metacastEPKc @ 1503 NONAME + _ZN23QDeclarativeEngineDebug11queryObjectERK32QDeclarativeDebugObjectReferenceP7QObject @ 1504 NONAME + _ZN23QDeclarativeEngineDebug11removeWatchEP22QDeclarativeDebugWatch @ 1505 NONAME + _ZN23QDeclarativeEngineDebug16staticMetaObjectE @ 1506 NONAME DATA 16 + _ZN23QDeclarativeEngineDebug17queryRootContextsERK32QDeclarativeDebugEngineReferenceP7QObject @ 1507 NONAME + _ZN23QDeclarativeEngineDebug19getStaticMetaObjectEv @ 1508 NONAME + _ZN23QDeclarativeEngineDebug20queryObjectRecursiveERK32QDeclarativeDebugObjectReferenceP7QObject @ 1509 NONAME + _ZN23QDeclarativeEngineDebug21queryAvailableEnginesEP7QObject @ 1510 NONAME + _ZN23QDeclarativeEngineDebug21queryExpressionResultEiRK7QStringP7QObject @ 1511 NONAME + _ZN23QDeclarativeEngineDebug8addWatchERK30QDeclarativeDebugFileReferenceP7QObject @ 1512 NONAME + _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceP7QObject @ 1513 NONAME + _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceRK7QStringP7QObject @ 1514 NONAME + _ZN23QDeclarativeEngineDebug8addWatchERK33QDeclarativeDebugContextReferenceRK7QStringP7QObject @ 1515 NONAME + _ZN23QDeclarativeEngineDebug8addWatchERK34QDeclarativeDebugPropertyReferenceP7QObject @ 1516 NONAME + _ZN23QDeclarativeEngineDebugC1EP27QDeclarativeDebugConnectionP7QObject @ 1517 NONAME + _ZN23QDeclarativeEngineDebugC2EP27QDeclarativeDebugConnectionP7QObject @ 1518 NONAME + _ZN23QDeclarativeItemPrivate17setConsistentTimeEi @ 1519 NONAME + _ZN23QDeclarativePaintedItem10clearCacheEv @ 1520 NONAME + _ZN23QDeclarativePaintedItem10dirtyCacheERK5QRect @ 1521 NONAME + _ZN23QDeclarativePaintedItem11qt_metacallEN11QMetaObject4CallEiPPv @ 1522 NONAME + _ZN23QDeclarativePaintedItem11qt_metacastEPKc @ 1523 NONAME + _ZN23QDeclarativePaintedItem12setFillColorERK6QColor @ 1524 NONAME + _ZN23QDeclarativePaintedItem14setCacheFrozenEb @ 1525 NONAME + _ZN23QDeclarativePaintedItem14setSmoothCacheEb @ 1526 NONAME + _ZN23QDeclarativePaintedItem15setContentsSizeERK5QSize @ 1527 NONAME + _ZN23QDeclarativePaintedItem16fillColorChangedEv @ 1528 NONAME + _ZN23QDeclarativePaintedItem16setContentsScaleEf @ 1529 NONAME + _ZN23QDeclarativePaintedItem16staticMetaObjectE @ 1530 NONAME DATA 16 + _ZN23QDeclarativePaintedItem17setPixelCacheSizeEi @ 1531 NONAME + _ZN23QDeclarativePaintedItem19contentsSizeChangedEv @ 1532 NONAME + _ZN23QDeclarativePaintedItem19getStaticMetaObjectEv @ 1533 NONAME + _ZN23QDeclarativePaintedItem20contentsScaleChangedEv @ 1534 NONAME + _ZN23QDeclarativePaintedItem4initEv @ 1535 NONAME + _ZN23QDeclarativePaintedItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1536 NONAME + _ZN23QDeclarativePaintedItemC2EP16QDeclarativeItem @ 1537 NONAME + _ZN23QDeclarativePaintedItemC2ER30QDeclarativePaintedItemPrivateP16QDeclarativeItem @ 1538 NONAME + _ZN23QDeclarativePaintedItemD0Ev @ 1539 NONAME + _ZN23QDeclarativePaintedItemD1Ev @ 1540 NONAME + _ZN23QDeclarativePaintedItemD2Ev @ 1541 NONAME + _ZN23QDeclarativePathElement11qt_metacallEN11QMetaObject4CallEiPPv @ 1542 NONAME + _ZN23QDeclarativePathElement11qt_metacastEPKc @ 1543 NONAME + _ZN23QDeclarativePathElement16staticMetaObjectE @ 1544 NONAME DATA 16 + _ZN23QDeclarativePathElement19getStaticMetaObjectEv @ 1545 NONAME + _ZN23QDeclarativePathElement7changedEv @ 1546 NONAME + _ZN23QDeclarativePathPercent11qt_metacallEN11QMetaObject4CallEiPPv @ 1547 NONAME + _ZN23QDeclarativePathPercent11qt_metacastEPKc @ 1548 NONAME + _ZN23QDeclarativePathPercent16staticMetaObjectE @ 1549 NONAME DATA 16 + _ZN23QDeclarativePathPercent19getStaticMetaObjectEv @ 1550 NONAME + _ZN23QDeclarativePathPercent8setValueEf @ 1551 NONAME + _ZN23QDeclarativePixmapCache15pendingRequestsEv @ 1552 NONAME + _ZN23QDeclarativePixmapCache3getERK4QUrlP7QPixmapb @ 1553 NONAME + _ZN23QDeclarativePixmapCache6cancelERK4QUrlP7QObject @ 1554 NONAME + _ZN23QDeclarativePixmapCache7requestEP18QDeclarativeEngineRK4QUrl @ 1555 NONAME + _ZN23QDeclarativePixmapReply10setLoadingEv @ 1556 NONAME + _ZN23QDeclarativePixmapReply11qt_metacallEN11QMetaObject4CallEiPPv @ 1557 NONAME + _ZN23QDeclarativePixmapReply11qt_metacastEPKc @ 1558 NONAME + _ZN23QDeclarativePixmapReply16downloadProgressExx @ 1559 NONAME + _ZN23QDeclarativePixmapReply16staticMetaObjectE @ 1560 NONAME DATA 16 + _ZN23QDeclarativePixmapReply19getStaticMetaObjectEv @ 1561 NONAME + _ZN23QDeclarativePixmapReply5eventEP6QEvent @ 1562 NONAME + _ZN23QDeclarativePixmapReply6addRefEv @ 1563 NONAME + _ZN23QDeclarativePixmapReply7releaseEb @ 1564 NONAME + _ZN23QDeclarativePixmapReply8finishedEv @ 1565 NONAME + _ZN23QDeclarativePixmapReplyC1EP23QDeclarativeImageReaderRK4QUrl @ 1566 NONAME + _ZN23QDeclarativePixmapReplyC2EP23QDeclarativeImageReaderRK4QUrl @ 1567 NONAME + _ZN23QDeclarativePixmapReplyD0Ev @ 1568 NONAME + _ZN23QDeclarativePixmapReplyD1Ev @ 1569 NONAME + _ZN23QDeclarativePixmapReplyD2Ev @ 1570 NONAME + _ZN23QDeclarativePropertyMap11qt_metacallEN11QMetaObject4CallEiPPv @ 1571 NONAME + _ZN23QDeclarativePropertyMap11qt_metacastEPKc @ 1572 NONAME + _ZN23QDeclarativePropertyMap12valueChangedERK7QString @ 1573 NONAME + _ZN23QDeclarativePropertyMap16staticMetaObjectE @ 1574 NONAME DATA 16 + _ZN23QDeclarativePropertyMap19getStaticMetaObjectEv @ 1575 NONAME + _ZN23QDeclarativePropertyMap5clearERK7QString @ 1576 NONAME + _ZN23QDeclarativePropertyMap6insertERK7QStringRK8QVariant @ 1577 NONAME + _ZN23QDeclarativePropertyMapC1EP7QObject @ 1578 NONAME + _ZN23QDeclarativePropertyMapC2EP7QObject @ 1579 NONAME + _ZN23QDeclarativePropertyMapD0Ev @ 1580 NONAME + _ZN23QDeclarativePropertyMapD1Ev @ 1581 NONAME + _ZN23QDeclarativePropertyMapD2Ev @ 1582 NONAME + _ZN23QDeclarativePropertyMapixERK7QString @ 1583 NONAME + _ZN23QDeclarativeViewSection11qt_metacallEN11QMetaObject4CallEiPPv @ 1584 NONAME + _ZN23QDeclarativeViewSection11qt_metacastEPKc @ 1585 NONAME + _ZN23QDeclarativeViewSection11setCriteriaENS_15SectionCriteriaE @ 1586 NONAME + _ZN23QDeclarativeViewSection11setDelegateEP21QDeclarativeComponent @ 1587 NONAME + _ZN23QDeclarativeViewSection11setPropertyERK7QString @ 1588 NONAME + _ZN23QDeclarativeViewSection13sectionStringERK7QString @ 1589 NONAME + _ZN23QDeclarativeViewSection15delegateChangedEv @ 1590 NONAME + _ZN23QDeclarativeViewSection16staticMetaObjectE @ 1591 NONAME DATA 16 + _ZN23QDeclarativeViewSection19getStaticMetaObjectEv @ 1592 NONAME + _ZN23QDeclarativeViewSection7changedEv @ 1593 NONAME + _ZN23QDeclarativeVisualModel10itemsMovedEiii @ 1594 NONAME + _ZN23QDeclarativeVisualModel10modelResetEv @ 1595 NONAME + _ZN23QDeclarativeVisualModel11createdItemEiP16QDeclarativeItem @ 1596 NONAME + _ZN23QDeclarativeVisualModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1597 NONAME + _ZN23QDeclarativeVisualModel11qt_metacastEPKc @ 1598 NONAME + _ZN23QDeclarativeVisualModel12countChangedEv @ 1599 NONAME + _ZN23QDeclarativeVisualModel12itemsRemovedEii @ 1600 NONAME + _ZN23QDeclarativeVisualModel13itemsInsertedEii @ 1601 NONAME + _ZN23QDeclarativeVisualModel14destroyingItemEP16QDeclarativeItem @ 1602 NONAME + _ZN23QDeclarativeVisualModel16staticMetaObjectE @ 1603 NONAME DATA 16 + _ZN23QDeclarativeVisualModel19getStaticMetaObjectEv @ 1604 NONAME + _ZN24QDeclarativeCustomParser11clearErrorsEv @ 1605 NONAME + _ZN24QDeclarativeCustomParser5errorERK28QDeclarativeCustomParserNodeRK7QString @ 1606 NONAME + _ZN24QDeclarativeCustomParser5errorERK32QDeclarativeCustomParserPropertyRK7QString @ 1607 NONAME + _ZN24QDeclarativeDebugService11idForObjectEP7QObject @ 1608 NONAME + _ZN24QDeclarativeDebugService11objectForIdEi @ 1609 NONAME + _ZN24QDeclarativeDebugService11qt_metacallEN11QMetaObject4CallEiPPv @ 1610 NONAME + _ZN24QDeclarativeDebugService11qt_metacastEPKc @ 1611 NONAME + _ZN24QDeclarativeDebugService11sendMessageERK10QByteArray @ 1612 NONAME + _ZN24QDeclarativeDebugService14enabledChangedEb @ 1613 NONAME + _ZN24QDeclarativeDebugService14objectToStringEP7QObject @ 1614 NONAME + _ZN24QDeclarativeDebugService14waitForClientsEv @ 1615 NONAME + _ZN24QDeclarativeDebugService15messageReceivedERK10QByteArray @ 1616 NONAME + _ZN24QDeclarativeDebugService16staticMetaObjectE @ 1617 NONAME DATA 16 + _ZN24QDeclarativeDebugService18isDebuggingEnabledEv @ 1618 NONAME + _ZN24QDeclarativeDebugService19getStaticMetaObjectEv @ 1619 NONAME + _ZN24QDeclarativeDebugService19notifyOnServerStartEP7QObjectPKc @ 1620 NONAME + _ZN24QDeclarativeDebugServiceC1ERK7QStringP7QObject @ 1621 NONAME + _ZN24QDeclarativeDebugServiceC2ERK7QStringP7QObject @ 1622 NONAME + _ZN24QDeclarativeDomComponentC1ERKS_ @ 1623 NONAME + _ZN24QDeclarativeDomComponentC1Ev @ 1624 NONAME + _ZN24QDeclarativeDomComponentC2ERKS_ @ 1625 NONAME + _ZN24QDeclarativeDomComponentC2Ev @ 1626 NONAME + _ZN24QDeclarativeDomComponentD1Ev @ 1627 NONAME + _ZN24QDeclarativeDomComponentD2Ev @ 1628 NONAME + _ZN24QDeclarativeDomComponentaSERKS_ @ 1629 NONAME + _ZN24QDeclarativeGradientStop11qt_metacallEN11QMetaObject4CallEiPPv @ 1630 NONAME + _ZN24QDeclarativeGradientStop11qt_metacastEPKc @ 1631 NONAME + _ZN24QDeclarativeGradientStop14updateGradientEv @ 1632 NONAME + _ZN24QDeclarativeGradientStop16staticMetaObjectE @ 1633 NONAME DATA 16 + _ZN24QDeclarativeGradientStop19getStaticMetaObjectEv @ 1634 NONAME + _ZN24QDeclarativeListAccessor7setListERK8QVariantP18QDeclarativeEngine @ 1635 NONAME + _ZN24QDeclarativeListAccessorC1Ev @ 1636 NONAME + _ZN24QDeclarativeListAccessorC2Ev @ 1637 NONAME + _ZN24QDeclarativeListAccessorD1Ev @ 1638 NONAME + _ZN24QDeclarativeListAccessorD2Ev @ 1639 NONAME + _ZN24QDeclarativeParentChange11qt_metacallEN11QMetaObject4CallEiPPv @ 1640 NONAME + _ZN24QDeclarativeParentChange11qt_metacastEPKc @ 1641 NONAME + _ZN24QDeclarativeParentChange11setRotationEf @ 1642 NONAME + _ZN24QDeclarativeParentChange12isReversableEv @ 1643 NONAME + _ZN24QDeclarativeParentChange13saveOriginalsEv @ 1644 NONAME + _ZN24QDeclarativeParentChange16staticMetaObjectE @ 1645 NONAME DATA 16 + _ZN24QDeclarativeParentChange17saveCurrentValuesEv @ 1646 NONAME + _ZN24QDeclarativeParentChange19getStaticMetaObjectEv @ 1647 NONAME + _ZN24QDeclarativeParentChange4setXEf @ 1648 NONAME + _ZN24QDeclarativeParentChange4setYEf @ 1649 NONAME + _ZN24QDeclarativeParentChange6rewindEv @ 1650 NONAME + _ZN24QDeclarativeParentChange7actionsEv @ 1651 NONAME + _ZN24QDeclarativeParentChange7executeEv @ 1652 NONAME + _ZN24QDeclarativeParentChange7reverseEv @ 1653 NONAME + _ZN24QDeclarativeParentChange8overrideEP23QDeclarativeActionEvent @ 1654 NONAME + _ZN24QDeclarativeParentChange8setScaleEf @ 1655 NONAME + _ZN24QDeclarativeParentChange8setWidthEf @ 1656 NONAME + _ZN24QDeclarativeParentChange9setHeightEf @ 1657 NONAME + _ZN24QDeclarativeParentChange9setObjectEP16QDeclarativeItem @ 1658 NONAME + _ZN24QDeclarativeParentChange9setParentEP16QDeclarativeItem @ 1659 NONAME + _ZN24QDeclarativeParentChangeC1EP7QObject @ 1660 NONAME + _ZN24QDeclarativeParentChangeC2EP7QObject @ 1661 NONAME + _ZN24QDeclarativeParentChangeD0Ev @ 1662 NONAME + _ZN24QDeclarativeParentChangeD1Ev @ 1663 NONAME + _ZN24QDeclarativeParentChangeD2Ev @ 1664 NONAME + _ZN24QDeclarativeParserStatus10classBeginEv @ 1665 NONAME + _ZN24QDeclarativeParserStatus17componentCompleteEv @ 1666 NONAME + _ZN24QDeclarativeParserStatusC1Ev @ 1667 NONAME + _ZN24QDeclarativeParserStatusC2Ev @ 1668 NONAME + _ZN24QDeclarativeParserStatusD0Ev @ 1669 NONAME + _ZN24QDeclarativeParserStatusD1Ev @ 1670 NONAME + _ZN24QDeclarativeParserStatusD2Ev @ 1671 NONAME + _ZN24QDeclarativeScriptString10setContextEP19QDeclarativeContext @ 1672 NONAME + _ZN24QDeclarativeScriptString14setScopeObjectEP7QObject @ 1673 NONAME + _ZN24QDeclarativeScriptString9setScriptERK7QString @ 1674 NONAME + _ZN24QDeclarativeScriptStringC1ERKS_ @ 1675 NONAME + _ZN24QDeclarativeScriptStringC1Ev @ 1676 NONAME + _ZN24QDeclarativeScriptStringC2ERKS_ @ 1677 NONAME + _ZN24QDeclarativeScriptStringC2Ev @ 1678 NONAME + _ZN24QDeclarativeScriptStringD1Ev @ 1679 NONAME + _ZN24QDeclarativeScriptStringD2Ev @ 1680 NONAME + _ZN24QDeclarativeScriptStringaSERKS_ @ 1681 NONAME + _ZN24QDeclarativeSpringFollow10setDampingEf @ 1682 NONAME + _ZN24QDeclarativeSpringFollow10setEnabledEb @ 1683 NONAME + _ZN24QDeclarativeSpringFollow10setEpsilonEf @ 1684 NONAME + _ZN24QDeclarativeSpringFollow10setModulusEf @ 1685 NONAME + _ZN24QDeclarativeSpringFollow11massChangedEv @ 1686 NONAME + _ZN24QDeclarativeSpringFollow11qt_metacallEN11QMetaObject4CallEiPPv @ 1687 NONAME + _ZN24QDeclarativeSpringFollow11qt_metacastEPKc @ 1688 NONAME + _ZN24QDeclarativeSpringFollow11setVelocityEf @ 1689 NONAME + _ZN24QDeclarativeSpringFollow11syncChangedEv @ 1690 NONAME + _ZN24QDeclarativeSpringFollow12valueChangedEf @ 1691 NONAME + _ZN24QDeclarativeSpringFollow14modulusChangedEv @ 1692 NONAME + _ZN24QDeclarativeSpringFollow14setSourceValueEf @ 1693 NONAME + _ZN24QDeclarativeSpringFollow16staticMetaObjectE @ 1694 NONAME DATA 16 + _ZN24QDeclarativeSpringFollow19getStaticMetaObjectEv @ 1695 NONAME + _ZN24QDeclarativeSpringFollow7setMassEf @ 1696 NONAME + _ZN24QDeclarativeSpringFollow9setSpringEf @ 1697 NONAME + _ZN24QDeclarativeSpringFollow9setTargetERK20QDeclarativeProperty @ 1698 NONAME + _ZN24QDeclarativeSpringFollowC1EP7QObject @ 1699 NONAME + _ZN24QDeclarativeSpringFollowC2EP7QObject @ 1700 NONAME + _ZN24QDeclarativeSpringFollowD0Ev @ 1701 NONAME + _ZN24QDeclarativeSpringFollowD1Ev @ 1702 NONAME + _ZN24QDeclarativeSpringFollowD2Ev @ 1703 NONAME + _ZN24QDeclarativeXmlListModel10classBeginEv @ 1704 NONAME + _ZN24QDeclarativeXmlListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1705 NONAME + _ZN24QDeclarativeXmlListModel11qt_metacastEPKc @ 1706 NONAME + _ZN24QDeclarativeXmlListModel11roleObjectsEv @ 1707 NONAME + _ZN24QDeclarativeXmlListModel12countChangedEv @ 1708 NONAME + _ZN24QDeclarativeXmlListModel13statusChangedENS_6StatusE @ 1709 NONAME + _ZN24QDeclarativeXmlListModel14queryCompletedEii @ 1710 NONAME + _ZN24QDeclarativeXmlListModel15progressChangedEf @ 1711 NONAME + _ZN24QDeclarativeXmlListModel15requestFinishedEv @ 1712 NONAME + _ZN24QDeclarativeXmlListModel15requestProgressExx @ 1713 NONAME + _ZN24QDeclarativeXmlListModel16staticMetaObjectE @ 1714 NONAME DATA 16 + _ZN24QDeclarativeXmlListModel17componentCompleteEv @ 1715 NONAME + _ZN24QDeclarativeXmlListModel19getStaticMetaObjectEv @ 1716 NONAME + _ZN24QDeclarativeXmlListModel24setNamespaceDeclarationsERK7QString @ 1717 NONAME + _ZN24QDeclarativeXmlListModel6reloadEv @ 1718 NONAME + _ZN24QDeclarativeXmlListModel6setXmlERK7QString @ 1719 NONAME + _ZN24QDeclarativeXmlListModel8setQueryERK7QString @ 1720 NONAME + _ZN24QDeclarativeXmlListModel9setSourceERK4QUrl @ 1721 NONAME + _ZN24QDeclarativeXmlListModelC1EP7QObject @ 1722 NONAME + _ZN24QDeclarativeXmlListModelC2EP7QObject @ 1723 NONAME + _ZN24QDeclarativeXmlListModelD0Ev @ 1724 NONAME + _ZN24QDeclarativeXmlListModelD1Ev @ 1725 NONAME + _ZN24QDeclarativeXmlListModelD2Ev @ 1726 NONAME + _ZN25QDeclarativeAnchorChanges11qt_metacallEN11QMetaObject4CallEiPPv @ 1727 NONAME + _ZN25QDeclarativeAnchorChanges11qt_metacastEPKc @ 1728 NONAME + _ZN25QDeclarativeAnchorChanges11setBaselineERK22QDeclarativeAnchorLine @ 1729 NONAME + _ZN25QDeclarativeAnchorChanges12extraActionsEv @ 1730 NONAME + _ZN25QDeclarativeAnchorChanges12isReversableEv @ 1731 NONAME + _ZN25QDeclarativeAnchorChanges13saveOriginalsEv @ 1732 NONAME + _ZN25QDeclarativeAnchorChanges15changesBindingsEv @ 1733 NONAME + _ZN25QDeclarativeAnchorChanges16staticMetaObjectE @ 1734 NONAME DATA 16 + _ZN25QDeclarativeAnchorChanges17saveCurrentValuesEv @ 1735 NONAME + _ZN25QDeclarativeAnchorChanges17setVerticalCenterERK22QDeclarativeAnchorLine @ 1736 NONAME + _ZN25QDeclarativeAnchorChanges19getStaticMetaObjectEv @ 1737 NONAME + _ZN25QDeclarativeAnchorChanges19setHorizontalCenterERK22QDeclarativeAnchorLine @ 1738 NONAME + _ZN25QDeclarativeAnchorChanges20clearForwardBindingsEv @ 1739 NONAME + _ZN25QDeclarativeAnchorChanges20clearReverseBindingsEv @ 1740 NONAME + _ZN25QDeclarativeAnchorChanges6rewindEv @ 1741 NONAME + _ZN25QDeclarativeAnchorChanges6setTopERK22QDeclarativeAnchorLine @ 1742 NONAME + _ZN25QDeclarativeAnchorChanges7actionsEv @ 1743 NONAME + _ZN25QDeclarativeAnchorChanges7executeEv @ 1744 NONAME + _ZN25QDeclarativeAnchorChanges7reverseEv @ 1745 NONAME + _ZN25QDeclarativeAnchorChanges7setLeftERK22QDeclarativeAnchorLine @ 1746 NONAME + _ZN25QDeclarativeAnchorChanges8overrideEP23QDeclarativeActionEvent @ 1747 NONAME + _ZN25QDeclarativeAnchorChanges8setResetERK7QString @ 1748 NONAME + _ZN25QDeclarativeAnchorChanges8setRightERK22QDeclarativeAnchorLine @ 1749 NONAME + _ZN25QDeclarativeAnchorChanges9setBottomERK22QDeclarativeAnchorLine @ 1750 NONAME + _ZN25QDeclarativeAnchorChanges9setObjectEP16QDeclarativeItem @ 1751 NONAME + _ZN25QDeclarativeAnchorChangesC1EP7QObject @ 1752 NONAME + _ZN25QDeclarativeAnchorChangesC2EP7QObject @ 1753 NONAME + _ZN25QDeclarativeAnchorChangesD0Ev @ 1754 NONAME + _ZN25QDeclarativeAnchorChangesD1Ev @ 1755 NONAME + _ZN25QDeclarativeAnchorChangesD2Ev @ 1756 NONAME + _ZN25QDeclarativeAnimatedImage10setPlayingEb @ 1757 NONAME + _ZN25QDeclarativeAnimatedImage11movieUpdateEv @ 1758 NONAME + _ZN25QDeclarativeAnimatedImage11qt_metacallEN11QMetaObject4CallEiPPv @ 1759 NONAME + _ZN25QDeclarativeAnimatedImage11qt_metacastEPKc @ 1760 NONAME + _ZN25QDeclarativeAnimatedImage12frameChangedEv @ 1761 NONAME + _ZN25QDeclarativeAnimatedImage13pausedChangedEv @ 1762 NONAME + _ZN25QDeclarativeAnimatedImage14playingChangedEv @ 1763 NONAME + _ZN25QDeclarativeAnimatedImage15setCurrentFrameEi @ 1764 NONAME + _ZN25QDeclarativeAnimatedImage16staticMetaObjectE @ 1765 NONAME DATA 16 + _ZN25QDeclarativeAnimatedImage17componentCompleteEv @ 1766 NONAME + _ZN25QDeclarativeAnimatedImage19getStaticMetaObjectEv @ 1767 NONAME + _ZN25QDeclarativeAnimatedImage20movieRequestFinishedEv @ 1768 NONAME + _ZN25QDeclarativeAnimatedImage20playingStatusChangedEv @ 1769 NONAME + _ZN25QDeclarativeAnimatedImage9setPausedEb @ 1770 NONAME + _ZN25QDeclarativeAnimatedImage9setSourceERK4QUrl @ 1771 NONAME + _ZN25QDeclarativeAnimatedImageC1EP16QDeclarativeItem @ 1772 NONAME + _ZN25QDeclarativeAnimatedImageC2EP16QDeclarativeItem @ 1773 NONAME + _ZN25QDeclarativeAnimatedImageD0Ev @ 1774 NONAME + _ZN25QDeclarativeAnimatedImageD1Ev @ 1775 NONAME + _ZN25QDeclarativeAnimatedImageD2Ev @ 1776 NONAME + _ZN25QDeclarativeImageProviderD0Ev @ 1777 NONAME + _ZN25QDeclarativeImageProviderD1Ev @ 1778 NONAME + _ZN25QDeclarativeImageProviderD2Ev @ 1779 NONAME + _ZN25QDeclarativeListReferenceC1EP7QObjectPKcP18QDeclarativeEngine @ 1780 NONAME + _ZN25QDeclarativeListReferenceC1ERKS_ @ 1781 NONAME + _ZN25QDeclarativeListReferenceC1Ev @ 1782 NONAME + _ZN25QDeclarativeListReferenceC2EP7QObjectPKcP18QDeclarativeEngine @ 1783 NONAME + _ZN25QDeclarativeListReferenceC2ERKS_ @ 1784 NONAME + _ZN25QDeclarativeListReferenceC2Ev @ 1785 NONAME + _ZN25QDeclarativeListReferenceD1Ev @ 1786 NONAME + _ZN25QDeclarativeListReferenceD2Ev @ 1787 NONAME + _ZN25QDeclarativeListReferenceaSERKS_ @ 1788 NONAME + _ZN25QDeclarativePathAttribute11qt_metacallEN11QMetaObject4CallEiPPv @ 1789 NONAME + _ZN25QDeclarativePathAttribute11qt_metacastEPKc @ 1790 NONAME + _ZN25QDeclarativePathAttribute16staticMetaObjectE @ 1791 NONAME DATA 16 + _ZN25QDeclarativePathAttribute19getStaticMetaObjectEv @ 1792 NONAME + _ZN25QDeclarativePathAttribute7setNameERK7QString @ 1793 NONAME + _ZN25QDeclarativePathAttribute8setValueEf @ 1794 NONAME + _ZN25QDeclarativeSystemPalette11eventFilterEP7QObjectP6QEvent @ 1795 NONAME + _ZN25QDeclarativeSystemPalette11qt_metacallEN11QMetaObject4CallEiPPv @ 1796 NONAME + _ZN25QDeclarativeSystemPalette11qt_metacastEPKc @ 1797 NONAME + _ZN25QDeclarativeSystemPalette13setColorGroupENS_10ColorGroupE @ 1798 NONAME + _ZN25QDeclarativeSystemPalette14paletteChangedEv @ 1799 NONAME + _ZN25QDeclarativeSystemPalette16staticMetaObjectE @ 1800 NONAME DATA 16 + _ZN25QDeclarativeSystemPalette19getStaticMetaObjectEv @ 1801 NONAME + _ZN25QDeclarativeSystemPalette5eventEP6QEvent @ 1802 NONAME + _ZN25QDeclarativeSystemPaletteC1EP7QObject @ 1803 NONAME + _ZN25QDeclarativeSystemPaletteC2EP7QObject @ 1804 NONAME + _ZN25QDeclarativeSystemPaletteD0Ev @ 1805 NONAME + _ZN25QDeclarativeSystemPaletteD1Ev @ 1806 NONAME + _ZN25QDeclarativeSystemPaletteD2Ev @ 1807 NONAME + _ZN26QDeclarativeBasePositioner10addChangedEv @ 1808 NONAME + _ZN26QDeclarativeBasePositioner10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 1809 NONAME + _ZN26QDeclarativeBasePositioner10setSpacingEi @ 1810 NONAME + _ZN26QDeclarativeBasePositioner11moveChangedEv @ 1811 NONAME + _ZN26QDeclarativeBasePositioner11qt_metacallEN11QMetaObject4CallEiPPv @ 1812 NONAME + _ZN26QDeclarativeBasePositioner11qt_metacastEPKc @ 1813 NONAME + _ZN26QDeclarativeBasePositioner14prePositioningEv @ 1814 NONAME + _ZN26QDeclarativeBasePositioner14spacingChangedEv @ 1815 NONAME + _ZN26QDeclarativeBasePositioner16staticMetaObjectE @ 1816 NONAME DATA 16 + _ZN26QDeclarativeBasePositioner17componentCompleteEv @ 1817 NONAME + _ZN26QDeclarativeBasePositioner19getStaticMetaObjectEv @ 1818 NONAME + _ZN26QDeclarativeBasePositioner22finishApplyTransitionsEv @ 1819 NONAME + _ZN26QDeclarativeBasePositioner6setAddEP22QDeclarativeTransition @ 1820 NONAME + _ZN26QDeclarativeBasePositioner7setMoveEP22QDeclarativeTransition @ 1821 NONAME + _ZN26QDeclarativeBasePositioner9positionXEiRKNS_14PositionedItemE @ 1822 NONAME + _ZN26QDeclarativeBasePositioner9positionYEiRKNS_14PositionedItemE @ 1823 NONAME + _ZN26QDeclarativeBasePositionerC2ENS_14PositionerTypeEP16QDeclarativeItem @ 1824 NONAME + _ZN26QDeclarativeBasePositionerC2ER33QDeclarativeBasePositionerPrivateNS_14PositionerTypeEP16QDeclarativeItem @ 1825 NONAME + _ZN26QDeclarativeBasePositionerD0Ev @ 1826 NONAME + _ZN26QDeclarativeBasePositionerD1Ev @ 1827 NONAME + _ZN26QDeclarativeBasePositionerD2Ev @ 1828 NONAME + _ZN26QDeclarativeContextPrivate10context_atEP24QDeclarativeListPropertyI7QObjectEi @ 1829 NONAME + _ZN26QDeclarativeContextPrivate13context_countEP24QDeclarativeListPropertyI7QObjectE @ 1830 NONAME + _ZN26QDeclarativeContextPrivate13setIdPropertyEiP7QObject @ 1831 NONAME + _ZN26QDeclarativeContextPrivate17invalidateEnginesEv @ 1832 NONAME + _ZN26QDeclarativeContextPrivate17setIdPropertyDataEP24QDeclarativeIntegerCache @ 1833 NONAME + _ZN26QDeclarativeContextPrivate18refreshExpressionsEv @ 1834 NONAME + _ZN26QDeclarativeContextPrivate4initEv @ 1835 NONAME + _ZN26QDeclarativeContextPrivate9addScriptERKN18QDeclarativeParser6Object11ScriptBlockEP7QObject @ 1836 NONAME + _ZN26QDeclarativeContextPrivate9destroyedEPNS_12ContextGuardE @ 1837 NONAME + _ZN26QDeclarativeContextPrivateC1Ev @ 1838 NONAME + _ZN26QDeclarativeContextPrivateC2Ev @ 1839 NONAME + _ZN26QDeclarativeDebuggerStatus16setSelectedStateEb @ 1840 NONAME + _ZN26QDeclarativeDebuggerStatusD0Ev @ 1841 NONAME + _ZN26QDeclarativeDebuggerStatusD1Ev @ 1842 NONAME + _ZN26QDeclarativeDebuggerStatusD2Ev @ 1843 NONAME + _ZN26QDeclarativeOpenMetaObject12initialValueEi @ 1844 NONAME + _ZN26QDeclarativeOpenMetaObject12propertyReadEi @ 1845 NONAME + _ZN26QDeclarativeOpenMetaObject13propertyWriteEi @ 1846 NONAME + _ZN26QDeclarativeOpenMetaObject14createPropertyEPKcS1_ @ 1847 NONAME + _ZN26QDeclarativeOpenMetaObject15propertyCreatedEiR20QMetaPropertyBuilder @ 1848 NONAME + _ZN26QDeclarativeOpenMetaObject8metaCallEN11QMetaObject4CallEiPPv @ 1849 NONAME + _ZN26QDeclarativeOpenMetaObject8setValueERK10QByteArrayRK8QVariant @ 1850 NONAME + _ZN26QDeclarativeOpenMetaObject8setValueEiRK8QVariant @ 1851 NONAME + _ZN26QDeclarativeOpenMetaObject9setCachedEb @ 1852 NONAME + _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 1853 NONAME + _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectb @ 1854 NONAME + _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 1855 NONAME + _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectb @ 1856 NONAME + _ZN26QDeclarativeOpenMetaObjectD0Ev @ 1857 NONAME + _ZN26QDeclarativeOpenMetaObjectD1Ev @ 1858 NONAME + _ZN26QDeclarativeOpenMetaObjectD2Ev @ 1859 NONAME + _ZN26QDeclarativeOpenMetaObjectixERK10QByteArray @ 1860 NONAME + _ZN26QDeclarativeParticleMotion11qt_metacallEN11QMetaObject4CallEiPPv @ 1861 NONAME + _ZN26QDeclarativeParticleMotion11qt_metacastEPKc @ 1862 NONAME + _ZN26QDeclarativeParticleMotion16staticMetaObjectE @ 1863 NONAME DATA 16 + _ZN26QDeclarativeParticleMotion19getStaticMetaObjectEv @ 1864 NONAME + _ZN26QDeclarativeParticleMotion7advanceER20QDeclarativeParticlei @ 1865 NONAME + _ZN26QDeclarativeParticleMotion7createdER20QDeclarativeParticle @ 1866 NONAME + _ZN26QDeclarativeParticleMotion7destroyER20QDeclarativeParticle @ 1867 NONAME + _ZN26QDeclarativeParticleMotionC1EP7QObject @ 1868 NONAME + _ZN26QDeclarativeParticleMotionC2EP7QObject @ 1869 NONAME + _ZN26QDeclarativeStateOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 1870 NONAME + _ZN26QDeclarativeStateOperation11qt_metacastEPKc @ 1871 NONAME + _ZN26QDeclarativeStateOperation16staticMetaObjectE @ 1872 NONAME DATA 16 + _ZN26QDeclarativeStateOperation19getStaticMetaObjectEv @ 1873 NONAME + _ZN26QDeclarativeStateOperation7actionsEv @ 1874 NONAME + _ZN26QDeclarativeStateOperationC1ER14QObjectPrivateP7QObject @ 1875 NONAME + _ZN26QDeclarativeStateOperationC2ER14QObjectPrivateP7QObject @ 1876 NONAME + _ZN27QDeclarativeDebugConnection11qt_metacallEN11QMetaObject4CallEiPPv @ 1877 NONAME + _ZN27QDeclarativeDebugConnection11qt_metacastEPKc @ 1878 NONAME + _ZN27QDeclarativeDebugConnection16staticMetaObjectE @ 1879 NONAME DATA 16 + _ZN27QDeclarativeDebugConnection19getStaticMetaObjectEv @ 1880 NONAME + _ZN27QDeclarativeDebugConnectionC1EP7QObject @ 1881 NONAME + _ZN27QDeclarativeDebugConnectionC2EP7QObject @ 1882 NONAME + _ZN27QDeclarativeDomValueBindingC1ERKS_ @ 1883 NONAME + _ZN27QDeclarativeDomValueBindingC1Ev @ 1884 NONAME + _ZN27QDeclarativeDomValueBindingC2ERKS_ @ 1885 NONAME + _ZN27QDeclarativeDomValueBindingC2Ev @ 1886 NONAME + _ZN27QDeclarativeDomValueBindingD1Ev @ 1887 NONAME + _ZN27QDeclarativeDomValueBindingD2Ev @ 1888 NONAME + _ZN27QDeclarativeDomValueBindingaSERKS_ @ 1889 NONAME + _ZN27QDeclarativeDomValueLiteralC1ERKS_ @ 1890 NONAME + _ZN27QDeclarativeDomValueLiteralC1Ev @ 1891 NONAME + _ZN27QDeclarativeDomValueLiteralC2ERKS_ @ 1892 NONAME + _ZN27QDeclarativeDomValueLiteralC2Ev @ 1893 NONAME + _ZN27QDeclarativeDomValueLiteralD1Ev @ 1894 NONAME + _ZN27QDeclarativeDomValueLiteralD2Ev @ 1895 NONAME + _ZN27QDeclarativeDomValueLiteralaSERKS_ @ 1896 NONAME + _ZN27QDeclarativeExtensionPlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 1897 NONAME + _ZN27QDeclarativeExtensionPlugin11qt_metacastEPKc @ 1898 NONAME + _ZN27QDeclarativeExtensionPlugin16initializeEngineEP18QDeclarativeEnginePKc @ 1899 NONAME + _ZN27QDeclarativeExtensionPlugin16staticMetaObjectE @ 1900 NONAME DATA 16 + _ZN27QDeclarativeExtensionPlugin19getStaticMetaObjectEv @ 1901 NONAME + _ZN27QDeclarativeExtensionPluginC2EP7QObject @ 1902 NONAME + _ZN27QDeclarativeExtensionPluginD0Ev @ 1903 NONAME + _ZN27QDeclarativeExtensionPluginD1Ev @ 1904 NONAME + _ZN27QDeclarativeExtensionPluginD2Ev @ 1905 NONAME + _ZN27QDeclarativeGridScaledImage12stringToRuleERK7QString @ 1906 NONAME + _ZN27QDeclarativeGridScaledImageC1EP9QIODevice @ 1907 NONAME + _ZN27QDeclarativeGridScaledImageC1ERKS_ @ 1908 NONAME + _ZN27QDeclarativeGridScaledImageC1Ev @ 1909 NONAME + _ZN27QDeclarativeGridScaledImageC2EP9QIODevice @ 1910 NONAME + _ZN27QDeclarativeGridScaledImageC2ERKS_ @ 1911 NONAME + _ZN27QDeclarativeGridScaledImageC2Ev @ 1912 NONAME + _ZN27QDeclarativeGridScaledImageaSERKS_ @ 1913 NONAME + _ZN27QDeclarativeNumberFormatter10classBeginEv @ 1914 NONAME + _ZN27QDeclarativeNumberFormatter11qt_metacallEN11QMetaObject4CallEiPPv @ 1915 NONAME + _ZN27QDeclarativeNumberFormatter11qt_metacastEPKc @ 1916 NONAME + _ZN27QDeclarativeNumberFormatter11textChangedEv @ 1917 NONAME + _ZN27QDeclarativeNumberFormatter16staticMetaObjectE @ 1918 NONAME DATA 16 + _ZN27QDeclarativeNumberFormatter17componentCompleteEv @ 1919 NONAME + _ZN27QDeclarativeNumberFormatter19getStaticMetaObjectEv @ 1920 NONAME + _ZN27QDeclarativeNumberFormatter9setFormatERK7QString @ 1921 NONAME + _ZN27QDeclarativeNumberFormatter9setNumberERKf @ 1922 NONAME + _ZN27QDeclarativeNumberFormatterC1EP7QObject @ 1923 NONAME + _ZN27QDeclarativeNumberFormatterC2EP7QObject @ 1924 NONAME + _ZN27QDeclarativeNumberFormatterD0Ev @ 1925 NONAME + _ZN27QDeclarativeNumberFormatterD1Ev @ 1926 NONAME + _ZN27QDeclarativeNumberFormatterD2Ev @ 1927 NONAME + _ZN27QDeclarativePropertyChanges11qt_metacallEN11QMetaObject4CallEiPPv @ 1928 NONAME + _ZN27QDeclarativePropertyChanges11qt_metacastEPKc @ 1929 NONAME + _ZN27QDeclarativePropertyChanges13setIsExplicitEb @ 1930 NONAME + _ZN27QDeclarativePropertyChanges16staticMetaObjectE @ 1931 NONAME DATA 16 + _ZN27QDeclarativePropertyChanges19getStaticMetaObjectEv @ 1932 NONAME + _ZN27QDeclarativePropertyChanges21setRestoreEntryValuesEb @ 1933 NONAME + _ZN27QDeclarativePropertyChanges7actionsEv @ 1934 NONAME + _ZN27QDeclarativePropertyChanges9setObjectEP7QObject @ 1935 NONAME + _ZN27QDeclarativePropertyChangesC1Ev @ 1936 NONAME + _ZN27QDeclarativePropertyChangesC2Ev @ 1937 NONAME + _ZN27QDeclarativePropertyChangesD0Ev @ 1938 NONAME + _ZN27QDeclarativePropertyChangesD1Ev @ 1939 NONAME + _ZN27QDeclarativePropertyChangesD2Ev @ 1940 NONAME + _ZN27QDeclarativeVisualDataModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1941 NONAME + _ZN27QDeclarativeVisualDataModel11qt_metacastEPKc @ 1942 NONAME + _ZN27QDeclarativeVisualDataModel11setDelegateEP21QDeclarativeComponent @ 1943 NONAME + _ZN27QDeclarativeVisualDataModel11stringValueEiRK7QString @ 1944 NONAME + _ZN27QDeclarativeVisualDataModel12_q_rowsMovedERK11QModelIndexiiS2_i @ 1945 NONAME + _ZN27QDeclarativeVisualDataModel12completeItemEv @ 1946 NONAME + _ZN27QDeclarativeVisualDataModel12setRootIndexERK11QModelIndex @ 1947 NONAME + _ZN27QDeclarativeVisualDataModel13_q_itemsMovedEiii @ 1948 NONAME + _ZN27QDeclarativeVisualDataModel13_q_modelResetEv @ 1949 NONAME + _ZN27QDeclarativeVisualDataModel14_q_dataChangedERK11QModelIndexS2_ @ 1950 NONAME + _ZN27QDeclarativeVisualDataModel14_q_rowsRemovedERK11QModelIndexii @ 1951 NONAME + _ZN27QDeclarativeVisualDataModel14createdPackageEiP19QDeclarativePackage @ 1952 NONAME + _ZN27QDeclarativeVisualDataModel15_q_itemsChangedEiiRK5QListIiE @ 1953 NONAME + _ZN27QDeclarativeVisualDataModel15_q_itemsRemovedEii @ 1954 NONAME + _ZN27QDeclarativeVisualDataModel15_q_rowsInsertedERK11QModelIndexii @ 1955 NONAME + _ZN27QDeclarativeVisualDataModel16_q_itemsInsertedEii @ 1956 NONAME + _ZN27QDeclarativeVisualDataModel16rootIndexChangedEv @ 1957 NONAME + _ZN27QDeclarativeVisualDataModel16staticMetaObjectE @ 1958 NONAME DATA 16 + _ZN27QDeclarativeVisualDataModel17_q_createdPackageEiP19QDeclarativePackage @ 1959 NONAME + _ZN27QDeclarativeVisualDataModel17destroyingPackageEP19QDeclarativePackage @ 1960 NONAME + _ZN27QDeclarativeVisualDataModel19getStaticMetaObjectEv @ 1961 NONAME + _ZN27QDeclarativeVisualDataModel20_q_destroyingPackageEP19QDeclarativePackage @ 1962 NONAME + _ZN27QDeclarativeVisualDataModel4itemEiRK10QByteArrayb @ 1963 NONAME + _ZN27QDeclarativeVisualDataModel4itemEib @ 1964 NONAME + _ZN27QDeclarativeVisualDataModel5partsEv @ 1965 NONAME + _ZN27QDeclarativeVisualDataModel7releaseEP16QDeclarativeItem @ 1966 NONAME + _ZN27QDeclarativeVisualDataModel7setPartERK7QString @ 1967 NONAME + _ZN27QDeclarativeVisualDataModel8evaluateEiRK7QStringP7QObject @ 1968 NONAME + _ZN27QDeclarativeVisualDataModel8setModelERK8QVariant @ 1969 NONAME + _ZN27QDeclarativeVisualDataModelC1EP19QDeclarativeContext @ 1970 NONAME + _ZN27QDeclarativeVisualDataModelC1Ev @ 1971 NONAME + _ZN27QDeclarativeVisualDataModelC2EP19QDeclarativeContext @ 1972 NONAME + _ZN27QDeclarativeVisualDataModelC2Ev @ 1973 NONAME + _ZN27QDeclarativeVisualDataModelD0Ev @ 1974 NONAME + _ZN27QDeclarativeVisualDataModelD1Ev @ 1975 NONAME + _ZN27QDeclarativeVisualDataModelD2Ev @ 1976 NONAME + _ZN27QDeclarativeVisualItemModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1977 NONAME + _ZN27QDeclarativeVisualItemModel11qt_metacastEPKc @ 1978 NONAME + _ZN27QDeclarativeVisualItemModel11stringValueEiRK7QString @ 1979 NONAME + _ZN27QDeclarativeVisualItemModel12completeItemEv @ 1980 NONAME + _ZN27QDeclarativeVisualItemModel15childrenChangedEv @ 1981 NONAME + _ZN27QDeclarativeVisualItemModel16staticMetaObjectE @ 1982 NONAME DATA 16 + _ZN27QDeclarativeVisualItemModel19getStaticMetaObjectEv @ 1983 NONAME + _ZN27QDeclarativeVisualItemModel21qmlAttachedPropertiesEP7QObject @ 1984 NONAME + _ZN27QDeclarativeVisualItemModel4itemEib @ 1985 NONAME + _ZN27QDeclarativeVisualItemModel7releaseEP16QDeclarativeItem @ 1986 NONAME + _ZN27QDeclarativeVisualItemModel8childrenEv @ 1987 NONAME + _ZN27QDeclarativeVisualItemModel8evaluateEiRK7QStringP7QObject @ 1988 NONAME + _ZN27QDeclarativeVisualItemModelC1Ev @ 1989 NONAME + _ZN27QDeclarativeVisualItemModelC2Ev @ 1990 NONAME + _ZN28QDeclarativeCustomParserNodeC1ERKS_ @ 1991 NONAME + _ZN28QDeclarativeCustomParserNodeC1Ev @ 1992 NONAME + _ZN28QDeclarativeCustomParserNodeC2ERKS_ @ 1993 NONAME + _ZN28QDeclarativeCustomParserNodeC2Ev @ 1994 NONAME + _ZN28QDeclarativeCustomParserNodeD1Ev @ 1995 NONAME + _ZN28QDeclarativeCustomParserNodeD2Ev @ 1996 NONAME + _ZN28QDeclarativeCustomParserNodeaSERKS_ @ 1997 NONAME + _ZN28QDeclarativeDebugObjectQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1998 NONAME + _ZN28QDeclarativeDebugObjectQuery11qt_metacastEPKc @ 1999 NONAME + _ZN28QDeclarativeDebugObjectQuery16staticMetaObjectE @ 2000 NONAME DATA 16 + _ZN28QDeclarativeDebugObjectQuery19getStaticMetaObjectEv @ 2001 NONAME + _ZN28QDeclarativeDebugObjectQueryC1EP7QObject @ 2002 NONAME + _ZN28QDeclarativeDebugObjectQueryC2EP7QObject @ 2003 NONAME + _ZN28QDeclarativeDebugObjectQueryD0Ev @ 2004 NONAME + _ZN28QDeclarativeDebugObjectQueryD1Ev @ 2005 NONAME + _ZN28QDeclarativeDebugObjectQueryD2Ev @ 2006 NONAME + _ZN28QDeclarativeStringConverters14dateFromStringERK7QStringPb @ 2007 NONAME + _ZN28QDeclarativeStringConverters14timeFromStringERK7QStringPb @ 2008 NONAME + _ZN28QDeclarativeStringConverters15colorFromStringERK7QStringPb @ 2009 NONAME + _ZN28QDeclarativeStringConverters15rectFFromStringERK7QStringPb @ 2010 NONAME + _ZN28QDeclarativeStringConverters15sizeFFromStringERK7QStringPb @ 2011 NONAME + _ZN28QDeclarativeStringConverters16pointFFromStringERK7QStringPb @ 2012 NONAME + _ZN28QDeclarativeStringConverters17variantFromStringERK7QString @ 2013 NONAME + _ZN28QDeclarativeStringConverters17variantFromStringERK7QStringiPb @ 2014 NONAME + _ZN28QDeclarativeStringConverters18dateTimeFromStringERK7QStringPb @ 2015 NONAME + _ZN28QDeclarativeStringConverters18vector3DFromStringERK7QStringPb @ 2016 NONAME + _ZN28QDeclarativeValueTypeFactory9valueTypeEi @ 2017 NONAME + _ZN28QDeclarativeValueTypeFactoryC1Ev @ 2018 NONAME + _ZN28QDeclarativeValueTypeFactoryC2Ev @ 2019 NONAME + _ZN28QDeclarativeValueTypeFactoryD1Ev @ 2020 NONAME + _ZN28QDeclarativeValueTypeFactoryD2Ev @ 2021 NONAME + _ZN28QDeclarativeXmlListModelRole11qt_metacallEN11QMetaObject4CallEiPPv @ 2022 NONAME + _ZN28QDeclarativeXmlListModelRole11qt_metacastEPKc @ 2023 NONAME + _ZN28QDeclarativeXmlListModelRole16staticMetaObjectE @ 2024 NONAME DATA 16 + _ZN28QDeclarativeXmlListModelRole19getStaticMetaObjectEv @ 2025 NONAME + _ZN29QDeclarativeDateTimeFormatter10classBeginEv @ 2026 NONAME + _ZN29QDeclarativeDateTimeFormatter11qt_metacallEN11QMetaObject4CallEiPPv @ 2027 NONAME + _ZN29QDeclarativeDateTimeFormatter11qt_metacastEPKc @ 2028 NONAME + _ZN29QDeclarativeDateTimeFormatter11setDateTimeERK9QDateTime @ 2029 NONAME + _ZN29QDeclarativeDateTimeFormatter11textChangedEv @ 2030 NONAME + _ZN29QDeclarativeDateTimeFormatter12setLongStyleEb @ 2031 NONAME + _ZN29QDeclarativeDateTimeFormatter13setDateFormatERK7QString @ 2032 NONAME + _ZN29QDeclarativeDateTimeFormatter13setTimeFormatERK7QString @ 2033 NONAME + _ZN29QDeclarativeDateTimeFormatter16staticMetaObjectE @ 2034 NONAME DATA 16 + _ZN29QDeclarativeDateTimeFormatter17componentCompleteEv @ 2035 NONAME + _ZN29QDeclarativeDateTimeFormatter17setDateTimeFormatERK7QString @ 2036 NONAME + _ZN29QDeclarativeDateTimeFormatter19getStaticMetaObjectEv @ 2037 NONAME + _ZN29QDeclarativeDateTimeFormatter7setDateERK5QDate @ 2038 NONAME + _ZN29QDeclarativeDateTimeFormatter7setTimeERK5QTime @ 2039 NONAME + _ZN29QDeclarativeDateTimeFormatterC1EP7QObject @ 2040 NONAME + _ZN29QDeclarativeDateTimeFormatterC2EP7QObject @ 2041 NONAME + _ZN29QDeclarativeDateTimeFormatterD0Ev @ 2042 NONAME + _ZN29QDeclarativeDateTimeFormatterD1Ev @ 2043 NONAME + _ZN29QDeclarativeDateTimeFormatterD2Ev @ 2044 NONAME + _ZN29QDeclarativeDebugEnginesQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 2045 NONAME + _ZN29QDeclarativeDebugEnginesQuery11qt_metacastEPKc @ 2046 NONAME + _ZN29QDeclarativeDebugEnginesQuery16staticMetaObjectE @ 2047 NONAME DATA 16 + _ZN29QDeclarativeDebugEnginesQuery19getStaticMetaObjectEv @ 2048 NONAME + _ZN29QDeclarativeDebugEnginesQueryC1EP7QObject @ 2049 NONAME + _ZN29QDeclarativeDebugEnginesQueryC2EP7QObject @ 2050 NONAME + _ZN29QDeclarativeDebugEnginesQueryD0Ev @ 2051 NONAME + _ZN29QDeclarativeDebugEnginesQueryD1Ev @ 2052 NONAME + _ZN29QDeclarativeDebugEnginesQueryD2Ev @ 2053 NONAME + _ZN29QDeclarativeStateChangeScript11qt_metacallEN11QMetaObject4CallEiPPv @ 2054 NONAME + _ZN29QDeclarativeStateChangeScript11qt_metacastEPKc @ 2055 NONAME + _ZN29QDeclarativeStateChangeScript16staticMetaObjectE @ 2056 NONAME DATA 16 + _ZN29QDeclarativeStateChangeScript19getStaticMetaObjectEv @ 2057 NONAME + _ZN29QDeclarativeStateChangeScript7actionsEv @ 2058 NONAME + _ZN29QDeclarativeStateChangeScript7executeEv @ 2059 NONAME + _ZN29QDeclarativeStateChangeScript7setNameERK7QString @ 2060 NONAME + _ZN29QDeclarativeStateChangeScript9setScriptERK24QDeclarativeScriptString @ 2061 NONAME + _ZN29QDeclarativeStateChangeScriptC1EP7QObject @ 2062 NONAME + _ZN29QDeclarativeStateChangeScriptC2EP7QObject @ 2063 NONAME + _ZN29QDeclarativeStateChangeScriptD0Ev @ 2064 NONAME + _ZN29QDeclarativeStateChangeScriptD1Ev @ 2065 NONAME + _ZN29QDeclarativeStateChangeScriptD2Ev @ 2066 NONAME + _ZN30QDeclarativeDebugFileReference13setLineNumberEi @ 2067 NONAME + _ZN30QDeclarativeDebugFileReference15setColumnNumberEi @ 2068 NONAME + _ZN30QDeclarativeDebugFileReference6setUrlERK4QUrl @ 2069 NONAME + _ZN30QDeclarativeDebugFileReferenceC1ERKS_ @ 2070 NONAME + _ZN30QDeclarativeDebugFileReferenceC1Ev @ 2071 NONAME + _ZN30QDeclarativeDebugFileReferenceC2ERKS_ @ 2072 NONAME + _ZN30QDeclarativeDebugFileReferenceC2Ev @ 2073 NONAME + _ZN30QDeclarativeDebugFileReferenceaSERKS_ @ 2074 NONAME + _ZN30QDeclarativeDebugPropertyWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 2075 NONAME + _ZN30QDeclarativeDebugPropertyWatch11qt_metacastEPKc @ 2076 NONAME + _ZN30QDeclarativeDebugPropertyWatch16staticMetaObjectE @ 2077 NONAME DATA 16 + _ZN30QDeclarativeDebugPropertyWatch19getStaticMetaObjectEv @ 2078 NONAME + _ZN30QDeclarativeDebugPropertyWatchC1EP7QObject @ 2079 NONAME + _ZN30QDeclarativeDebugPropertyWatchC2EP7QObject @ 2080 NONAME + _ZN30QDeclarativeDomDynamicPropertyC1ERKS_ @ 2081 NONAME + _ZN30QDeclarativeDomDynamicPropertyC1Ev @ 2082 NONAME + _ZN30QDeclarativeDomDynamicPropertyC2ERKS_ @ 2083 NONAME + _ZN30QDeclarativeDomDynamicPropertyC2Ev @ 2084 NONAME + _ZN30QDeclarativeDomDynamicPropertyD1Ev @ 2085 NONAME + _ZN30QDeclarativeDomDynamicPropertyD2Ev @ 2086 NONAME + _ZN30QDeclarativeDomDynamicPropertyaSERKS_ @ 2087 NONAME + _ZN30QDeclarativeOpenMetaObjectType14createPropertyERK10QByteArray @ 2088 NONAME + _ZN30QDeclarativeOpenMetaObjectType15propertyCreatedEiR20QMetaPropertyBuilder @ 2089 NONAME + _ZN30QDeclarativeOpenMetaObjectTypeC1EPK11QMetaObjectP18QDeclarativeEngine @ 2090 NONAME + _ZN30QDeclarativeOpenMetaObjectTypeC2EPK11QMetaObjectP18QDeclarativeEngine @ 2091 NONAME + _ZN30QDeclarativeOpenMetaObjectTypeD0Ev @ 2092 NONAME + _ZN30QDeclarativeOpenMetaObjectTypeD1Ev @ 2093 NONAME + _ZN30QDeclarativeOpenMetaObjectTypeD2Ev @ 2094 NONAME + _ZN31QDeclarativeDomValueValueSourceC1ERKS_ @ 2095 NONAME + _ZN31QDeclarativeDomValueValueSourceC1Ev @ 2096 NONAME + _ZN31QDeclarativeDomValueValueSourceC2ERKS_ @ 2097 NONAME + _ZN31QDeclarativeDomValueValueSourceC2Ev @ 2098 NONAME + _ZN31QDeclarativeDomValueValueSourceD1Ev @ 2099 NONAME + _ZN31QDeclarativeDomValueValueSourceD2Ev @ 2100 NONAME + _ZN31QDeclarativeDomValueValueSourceaSERKS_ @ 2101 NONAME + _ZN31QDeclarativePropertyValueSourceC2Ev @ 2102 NONAME + _ZN31QDeclarativePropertyValueSourceD0Ev @ 2103 NONAME + _ZN31QDeclarativePropertyValueSourceD1Ev @ 2104 NONAME + _ZN31QDeclarativePropertyValueSourceD2Ev @ 2105 NONAME + _ZN32QDeclarativeCustomParserPropertyC1ERKS_ @ 2106 NONAME + _ZN32QDeclarativeCustomParserPropertyC1Ev @ 2107 NONAME + _ZN32QDeclarativeCustomParserPropertyC2ERKS_ @ 2108 NONAME + _ZN32QDeclarativeCustomParserPropertyC2Ev @ 2109 NONAME + _ZN32QDeclarativeCustomParserPropertyD1Ev @ 2110 NONAME + _ZN32QDeclarativeCustomParserPropertyD2Ev @ 2111 NONAME + _ZN32QDeclarativeCustomParserPropertyaSERKS_ @ 2112 NONAME + _ZN32QDeclarativeDebugEngineReferenceC1ERKS_ @ 2113 NONAME + _ZN32QDeclarativeDebugEngineReferenceC1Ei @ 2114 NONAME + _ZN32QDeclarativeDebugEngineReferenceC1Ev @ 2115 NONAME + _ZN32QDeclarativeDebugEngineReferenceC2ERKS_ @ 2116 NONAME + _ZN32QDeclarativeDebugEngineReferenceC2Ei @ 2117 NONAME + _ZN32QDeclarativeDebugEngineReferenceC2Ev @ 2118 NONAME + _ZN32QDeclarativeDebugEngineReferenceaSERKS_ @ 2119 NONAME + _ZN32QDeclarativeDebugExpressionQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 2120 NONAME + _ZN32QDeclarativeDebugExpressionQuery11qt_metacastEPKc @ 2121 NONAME + _ZN32QDeclarativeDebugExpressionQuery16staticMetaObjectE @ 2122 NONAME DATA 16 + _ZN32QDeclarativeDebugExpressionQuery19getStaticMetaObjectEv @ 2123 NONAME + _ZN32QDeclarativeDebugExpressionQueryC1EP7QObject @ 2124 NONAME + _ZN32QDeclarativeDebugExpressionQueryC2EP7QObject @ 2125 NONAME + _ZN32QDeclarativeDebugExpressionQueryD0Ev @ 2126 NONAME + _ZN32QDeclarativeDebugExpressionQueryD1Ev @ 2127 NONAME + _ZN32QDeclarativeDebugExpressionQueryD2Ev @ 2128 NONAME + _ZN32QDeclarativeDebugObjectReferenceC1ERKS_ @ 2129 NONAME + _ZN32QDeclarativeDebugObjectReferenceC1Ei @ 2130 NONAME + _ZN32QDeclarativeDebugObjectReferenceC1Ev @ 2131 NONAME + _ZN32QDeclarativeDebugObjectReferenceC2ERKS_ @ 2132 NONAME + _ZN32QDeclarativeDebugObjectReferenceC2Ei @ 2133 NONAME + _ZN32QDeclarativeDebugObjectReferenceC2Ev @ 2134 NONAME + _ZN32QDeclarativeDebugObjectReferenceaSERKS_ @ 2135 NONAME + _ZN32QDeclarativeParticleMotionLinear11qt_metacallEN11QMetaObject4CallEiPPv @ 2136 NONAME + _ZN32QDeclarativeParticleMotionLinear11qt_metacastEPKc @ 2137 NONAME + _ZN32QDeclarativeParticleMotionLinear16staticMetaObjectE @ 2138 NONAME DATA 16 + _ZN32QDeclarativeParticleMotionLinear19getStaticMetaObjectEv @ 2139 NONAME + _ZN32QDeclarativeParticleMotionLinear7advanceER20QDeclarativeParticlei @ 2140 NONAME + _ZN32QDeclarativeParticleMotionWander11paceChangedEv @ 2141 NONAME + _ZN32QDeclarativeParticleMotionWander11qt_metacallEN11QMetaObject4CallEiPPv @ 2142 NONAME + _ZN32QDeclarativeParticleMotionWander11qt_metacastEPKc @ 2143 NONAME + _ZN32QDeclarativeParticleMotionWander12setXVarianceEf @ 2144 NONAME + _ZN32QDeclarativeParticleMotionWander12setYVarianceEf @ 2145 NONAME + _ZN32QDeclarativeParticleMotionWander16staticMetaObjectE @ 2146 NONAME DATA 16 + _ZN32QDeclarativeParticleMotionWander16xvarianceChangedEv @ 2147 NONAME + _ZN32QDeclarativeParticleMotionWander16yvarianceChangedEv @ 2148 NONAME + _ZN32QDeclarativeParticleMotionWander19getStaticMetaObjectEv @ 2149 NONAME + _ZN32QDeclarativeParticleMotionWander7advanceER20QDeclarativeParticlei @ 2150 NONAME + _ZN32QDeclarativeParticleMotionWander7createdER20QDeclarativeParticle @ 2151 NONAME + _ZN32QDeclarativeParticleMotionWander7destroyER20QDeclarativeParticle @ 2152 NONAME + _ZN32QDeclarativeParticleMotionWander7setPaceEf @ 2153 NONAME + _ZN33QDeclarativeDebugContextReferenceC1ERKS_ @ 2154 NONAME + _ZN33QDeclarativeDebugContextReferenceC1Ev @ 2155 NONAME + _ZN33QDeclarativeDebugContextReferenceC2ERKS_ @ 2156 NONAME + _ZN33QDeclarativeDebugContextReferenceC2Ev @ 2157 NONAME + _ZN33QDeclarativeDebugContextReferenceaSERKS_ @ 2158 NONAME + _ZN33QDeclarativeDebugRootContextQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 2159 NONAME + _ZN33QDeclarativeDebugRootContextQuery11qt_metacastEPKc @ 2160 NONAME + _ZN33QDeclarativeDebugRootContextQuery16staticMetaObjectE @ 2161 NONAME DATA 16 + _ZN33QDeclarativeDebugRootContextQuery19getStaticMetaObjectEv @ 2162 NONAME + _ZN33QDeclarativeDebugRootContextQueryC1EP7QObject @ 2163 NONAME + _ZN33QDeclarativeDebugRootContextQueryC2EP7QObject @ 2164 NONAME + _ZN33QDeclarativeDebugRootContextQueryD0Ev @ 2165 NONAME + _ZN33QDeclarativeDebugRootContextQueryD1Ev @ 2166 NONAME + _ZN33QDeclarativeDebugRootContextQueryD2Ev @ 2167 NONAME + _ZN33QDeclarativeParticleMotionGravity11qt_metacallEN11QMetaObject4CallEiPPv @ 2168 NONAME + _ZN33QDeclarativeParticleMotionGravity11qt_metacastEPKc @ 2169 NONAME + _ZN33QDeclarativeParticleMotionGravity13setXAttractorEf @ 2170 NONAME + _ZN33QDeclarativeParticleMotionGravity13setYAttractorEf @ 2171 NONAME + _ZN33QDeclarativeParticleMotionGravity15setAccelerationEf @ 2172 NONAME + _ZN33QDeclarativeParticleMotionGravity16staticMetaObjectE @ 2173 NONAME DATA 16 + _ZN33QDeclarativeParticleMotionGravity17xattractorChangedEv @ 2174 NONAME + _ZN33QDeclarativeParticleMotionGravity17yattractorChangedEv @ 2175 NONAME + _ZN33QDeclarativeParticleMotionGravity19accelerationChangedEv @ 2176 NONAME + _ZN33QDeclarativeParticleMotionGravity19getStaticMetaObjectEv @ 2177 NONAME + _ZN33QDeclarativeParticleMotionGravity7advanceER20QDeclarativeParticlei @ 2178 NONAME + _ZN34QDeclarativeDebugPropertyReferenceC1ERKS_ @ 2179 NONAME + _ZN34QDeclarativeDebugPropertyReferenceC1Ev @ 2180 NONAME + _ZN34QDeclarativeDebugPropertyReferenceC2ERKS_ @ 2181 NONAME + _ZN34QDeclarativeDebugPropertyReferenceC2Ev @ 2182 NONAME + _ZN34QDeclarativeDebugPropertyReferenceaSERKS_ @ 2183 NONAME + _ZN35QDeclarativeGraphicsObjectContainer10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 2184 NONAME + _ZN35QDeclarativeGraphicsObjectContainer11eventFilterEP7QObjectP6QEvent @ 2185 NONAME + _ZN35QDeclarativeGraphicsObjectContainer11qt_metacallEN11QMetaObject4CallEiPPv @ 2186 NONAME + _ZN35QDeclarativeGraphicsObjectContainer11qt_metacastEPKc @ 2187 NONAME + _ZN35QDeclarativeGraphicsObjectContainer16staticMetaObjectE @ 2188 NONAME DATA 16 + _ZN35QDeclarativeGraphicsObjectContainer17setGraphicsObjectEP15QGraphicsObject @ 2189 NONAME + _ZN35QDeclarativeGraphicsObjectContainer19getStaticMetaObjectEv @ 2190 NONAME + _ZN35QDeclarativeGraphicsObjectContainer23setSynchronizedResizingEb @ 2191 NONAME + _ZN35QDeclarativeGraphicsObjectContainerC1EP16QDeclarativeItem @ 2192 NONAME + _ZN35QDeclarativeGraphicsObjectContainerC2EP16QDeclarativeItem @ 2193 NONAME + _ZN35QDeclarativeGraphicsObjectContainerD0Ev @ 2194 NONAME + _ZN35QDeclarativeGraphicsObjectContainerD1Ev @ 2195 NONAME + _ZN35QDeclarativeGraphicsObjectContainerD2Ev @ 2196 NONAME + _ZN36QDeclarativeDomValueValueInterceptorC1ERKS_ @ 2197 NONAME + _ZN36QDeclarativeDomValueValueInterceptorC1Ev @ 2198 NONAME + _ZN36QDeclarativeDomValueValueInterceptorC2ERKS_ @ 2199 NONAME + _ZN36QDeclarativeDomValueValueInterceptorC2Ev @ 2200 NONAME + _ZN36QDeclarativeDomValueValueInterceptorD1Ev @ 2201 NONAME + _ZN36QDeclarativeDomValueValueInterceptorD2Ev @ 2202 NONAME + _ZN36QDeclarativeDomValueValueInterceptoraSERKS_ @ 2203 NONAME + _ZN36QDeclarativePropertyValueInterceptorC2Ev @ 2204 NONAME + _ZN36QDeclarativePropertyValueInterceptorD0Ev @ 2205 NONAME + _ZN36QDeclarativePropertyValueInterceptorD1Ev @ 2206 NONAME + _ZN36QDeclarativePropertyValueInterceptorD2Ev @ 2207 NONAME + _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 2208 NONAME + _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacastEPKc @ 2209 NONAME + _ZN38QDeclarativeDebugObjectExpressionWatch16staticMetaObjectE @ 2210 NONAME DATA 16 + _ZN38QDeclarativeDebugObjectExpressionWatch19getStaticMetaObjectEv @ 2211 NONAME + _ZN38QDeclarativeDebugObjectExpressionWatchC1EP7QObject @ 2212 NONAME + _ZN38QDeclarativeDebugObjectExpressionWatchC2EP7QObject @ 2213 NONAME + _ZN39QDeclarativeNetworkAccessManagerFactoryD0Ev @ 2214 NONAME + _ZN39QDeclarativeNetworkAccessManagerFactoryD1Ev @ 2215 NONAME + _ZN39QDeclarativeNetworkAccessManagerFactoryD2Ev @ 2216 NONAME + _ZN7QPacket5clearEv @ 2217 NONAME + _ZN7QPacketC1ERK10QByteArray @ 2218 NONAME + _ZN7QPacketC1ERKS_ @ 2219 NONAME + _ZN7QPacketC1Ev @ 2220 NONAME + _ZN7QPacketC2ERK10QByteArray @ 2221 NONAME + _ZN7QPacketC2ERKS_ @ 2222 NONAME + _ZN7QPacketC2Ev @ 2223 NONAME + _ZN7QPacketD0Ev @ 2224 NONAME + _ZN7QPacketD1Ev @ 2225 NONAME + _ZN7QPacketD2Ev @ 2226 NONAME + _ZNK15QDeclarativePen10metaObjectEv @ 2227 NONAME + _ZNK15QDeclarativeRow10metaObjectEv @ 2228 NONAME + _ZNK15QPacketProtocol10metaObjectEv @ 2229 NONAME + _ZNK15QPacketProtocol16packetsAvailableEv @ 2230 NONAME + _ZNK15QPacketProtocol17maximumPacketSizeEv @ 2231 NONAME + _ZNK16QDeclarativeBind10metaObjectEv @ 2232 NONAME + _ZNK16QDeclarativeBind4whenEv @ 2233 NONAME + _ZNK16QDeclarativeBind5valueEv @ 2234 NONAME + _ZNK16QDeclarativeBind8propertyEv @ 2235 NONAME + _ZNK16QDeclarativeDrag10metaObjectEv @ 2236 NONAME + _ZNK16QDeclarativeDrag4axisEv @ 2237 NONAME + _ZNK16QDeclarativeDrag4xmaxEv @ 2238 NONAME + _ZNK16QDeclarativeDrag4xminEv @ 2239 NONAME + _ZNK16QDeclarativeDrag4ymaxEv @ 2240 NONAME + _ZNK16QDeclarativeDrag4yminEv @ 2241 NONAME + _ZNK16QDeclarativeDrag6targetEv @ 2242 NONAME + _ZNK16QDeclarativeFlow10metaObjectEv @ 2243 NONAME + _ZNK16QDeclarativeFlow4flowEv @ 2244 NONAME + _ZNK16QDeclarativeGrid10metaObjectEv @ 2245 NONAME + _ZNK16QDeclarativeItem10metaObjectEv @ 2246 NONAME + _ZNK16QDeclarativeItem10parentItemEv @ 2247 NONAME + _ZNK16QDeclarativeItem10wantsFocusEv @ 2248 NONAME + _ZNK16QDeclarativeItem10widthValidEv @ 2249 NONAME + _ZNK16QDeclarativeItem11heightValidEv @ 2250 NONAME + _ZNK16QDeclarativeItem12boundingRectEv @ 2251 NONAME + _ZNK16QDeclarativeItem13implicitWidthEv @ 2252 NONAME + _ZNK16QDeclarativeItem13keepMouseGrabEv @ 2253 NONAME + _ZNK16QDeclarativeItem14baselineOffsetEv @ 2254 NONAME + _ZNK16QDeclarativeItem14implicitHeightEv @ 2255 NONAME + _ZNK16QDeclarativeItem14verticalCenterEv @ 2256 NONAME + _ZNK16QDeclarativeItem15transformOriginEv @ 2257 NONAME + _ZNK16QDeclarativeItem16horizontalCenterEv @ 2258 NONAME + _ZNK16QDeclarativeItem16inputMethodQueryEN2Qt16InputMethodQueryE @ 2259 NONAME + _ZNK16QDeclarativeItem19isComponentCompleteEv @ 2260 NONAME + _ZNK16QDeclarativeItem3topEv @ 2261 NONAME + _ZNK16QDeclarativeItem4clipEv @ 2262 NONAME + _ZNK16QDeclarativeItem4leftEv @ 2263 NONAME + _ZNK16QDeclarativeItem5rightEv @ 2264 NONAME + _ZNK16QDeclarativeItem5stateEv @ 2265 NONAME + _ZNK16QDeclarativeItem5widthEv @ 2266 NONAME + _ZNK16QDeclarativeItem6bottomEv @ 2267 NONAME + _ZNK16QDeclarativeItem6heightEv @ 2268 NONAME + _ZNK16QDeclarativeItem6smoothEv @ 2269 NONAME + _ZNK16QDeclarativeItem8baselineEv @ 2270 NONAME + _ZNK16QDeclarativeItem8hasFocusEv @ 2271 NONAME + _ZNK16QDeclarativePath10attributesEv @ 2272 NONAME + _ZNK16QDeclarativePath10metaObjectEv @ 2273 NONAME + _ZNK16QDeclarativePath11attributeAtERK7QStringf @ 2274 NONAME + _ZNK16QDeclarativePath16createPointCacheEv @ 2275 NONAME + _ZNK16QDeclarativePath4pathEv @ 2276 NONAME + _ZNK16QDeclarativePath6startXEv @ 2277 NONAME + _ZNK16QDeclarativePath6startYEv @ 2278 NONAME + _ZNK16QDeclarativePath7pointAtEf @ 2279 NONAME + _ZNK16QDeclarativePath8isClosedEv @ 2280 NONAME + _ZNK16QDeclarativeText10metaObjectEv @ 2281 NONAME + _ZNK16QDeclarativeText10styleColorEv @ 2282 NONAME + _ZNK16QDeclarativeText10textFormatEv @ 2283 NONAME + _ZNK16QDeclarativeText4fontEv @ 2284 NONAME + _ZNK16QDeclarativeText4textEv @ 2285 NONAME + _ZNK16QDeclarativeText4wrapEv @ 2286 NONAME + _ZNK16QDeclarativeText5colorEv @ 2287 NONAME + _ZNK16QDeclarativeText5styleEv @ 2288 NONAME + _ZNK16QDeclarativeText6hAlignEv @ 2289 NONAME + _ZNK16QDeclarativeText6vAlignEv @ 2290 NONAME + _ZNK16QDeclarativeText9elideModeEv @ 2291 NONAME + _ZNK16QDeclarativeType10metaObjectEv @ 2292 NONAME + _ZNK16QDeclarativeType11isInterfaceEv @ 2293 NONAME + _ZNK16QDeclarativeType11qListTypeIdEv @ 2294 NONAME + _ZNK16QDeclarativeType11qmlTypeNameEv @ 2295 NONAME + _ZNK16QDeclarativeType12customParserEv @ 2296 NONAME + _ZNK16QDeclarativeType12interfaceIIdEv @ 2297 NONAME + _ZNK16QDeclarativeType12majorVersionEv @ 2298 NONAME + _ZNK16QDeclarativeType12minorVersionEv @ 2299 NONAME + _ZNK16QDeclarativeType14baseMetaObjectEv @ 2300 NONAME + _ZNK16QDeclarativeType16parserStatusCastEv @ 2301 NONAME + _ZNK16QDeclarativeType18availableInVersionEii @ 2302 NONAME + _ZNK16QDeclarativeType22attachedPropertiesTypeEv @ 2303 NONAME + _ZNK16QDeclarativeType23propertyValueSourceCastEv @ 2304 NONAME + _ZNK16QDeclarativeType26attachedPropertiesFunctionEv @ 2305 NONAME + _ZNK16QDeclarativeType28propertyValueInterceptorCastEv @ 2306 NONAME + _ZNK16QDeclarativeType5indexEv @ 2307 NONAME + _ZNK16QDeclarativeType6createEv @ 2308 NONAME + _ZNK16QDeclarativeType6typeIdEv @ 2309 NONAME + _ZNK16QDeclarativeType8typeNameEv @ 2310 NONAME + _ZNK16QDeclarativeView10metaObjectEv @ 2311 NONAME + _ZNK16QDeclarativeView10resizeModeEv @ 2312 NONAME + _ZNK16QDeclarativeView10rootObjectEv @ 2313 NONAME + _ZNK16QDeclarativeView6errorsEv @ 2314 NONAME + _ZNK16QDeclarativeView6sourceEv @ 2315 NONAME + _ZNK16QDeclarativeView6statusEv @ 2316 NONAME + _ZNK16QDeclarativeView8sizeHintEv @ 2317 NONAME + _ZNK16QMetaEnumBuilder3keyEi @ 2318 NONAME + _ZNK16QMetaEnumBuilder4nameEv @ 2319 NONAME + _ZNK16QMetaEnumBuilder5valueEi @ 2320 NONAME + _ZNK16QMetaEnumBuilder6d_funcEv @ 2321 NONAME + _ZNK16QMetaEnumBuilder6isFlagEv @ 2322 NONAME + _ZNK16QMetaEnumBuilder8keyCountEv @ 2323 NONAME + _ZNK17QDeclarativeCurve10metaObjectEv @ 2324 NONAME + _ZNK17QDeclarativeCurve1xEv @ 2325 NONAME + _ZNK17QDeclarativeCurve1yEv @ 2326 NONAME + _ZNK17QDeclarativeError11descriptionEv @ 2327 NONAME + _ZNK17QDeclarativeError3urlEv @ 2328 NONAME + _ZNK17QDeclarativeError4lineEv @ 2329 NONAME + _ZNK17QDeclarativeError6columnEv @ 2330 NONAME + _ZNK17QDeclarativeError7isValidEv @ 2331 NONAME + _ZNK17QDeclarativeError8toStringEv @ 2332 NONAME + _ZNK17QDeclarativeImage10metaObjectEv @ 2333 NONAME + _ZNK17QDeclarativeImage12paintedWidthEv @ 2334 NONAME + _ZNK17QDeclarativeImage13paintedHeightEv @ 2335 NONAME + _ZNK17QDeclarativeImage6pixmapEv @ 2336 NONAME + _ZNK17QDeclarativeImage8fillModeEv @ 2337 NONAME + _ZNK17QDeclarativeState10metaObjectEv @ 2338 NONAME + _ZNK17QDeclarativeState10stateGroupEv @ 2339 NONAME + _ZNK17QDeclarativeState11isWhenKnownEv @ 2340 NONAME + _ZNK17QDeclarativeState11operationAtEi @ 2341 NONAME + _ZNK17QDeclarativeState14operationCountEv @ 2342 NONAME + _ZNK17QDeclarativeState4nameEv @ 2343 NONAME + _ZNK17QDeclarativeState4whenEv @ 2344 NONAME + _ZNK17QDeclarativeState7extendsEv @ 2345 NONAME + _ZNK17QDeclarativeTimer10metaObjectEv @ 2346 NONAME + _ZNK17QDeclarativeTimer11isRepeatingEv @ 2347 NONAME + _ZNK17QDeclarativeTimer16triggeredOnStartEv @ 2348 NONAME + _ZNK17QDeclarativeTimer8intervalEv @ 2349 NONAME + _ZNK17QDeclarativeTimer9isRunningEv @ 2350 NONAME + _ZNK18QDeclarativeColumn10metaObjectEv @ 2351 NONAME + _ZNK18QDeclarativeEngine10metaObjectEv @ 2352 NONAME + _ZNK18QDeclarativeEngine13imageProviderERK7QString @ 2353 NONAME + _ZNK18QDeclarativeEngine18offlineStoragePathEv @ 2354 NONAME + _ZNK18QDeclarativeEngine20networkAccessManagerEv @ 2355 NONAME + _ZNK18QDeclarativeEngine27networkAccessManagerFactoryEv @ 2356 NONAME + _ZNK18QDeclarativeEngine7baseUrlEv @ 2357 NONAME + _ZNK18QDeclarativeLoader10metaObjectEv @ 2358 NONAME + _ZNK18QDeclarativeLoader10resizeModeEv @ 2359 NONAME + _ZNK18QDeclarativeLoader15sourceComponentEv @ 2360 NONAME + _ZNK18QDeclarativeLoader4itemEv @ 2361 NONAME + _ZNK18QDeclarativeLoader6sourceEv @ 2362 NONAME + _ZNK18QDeclarativeLoader6statusEv @ 2363 NONAME + _ZNK18QDeclarativeLoader8progressEv @ 2364 NONAME + _ZNK18QMetaMethodBuilder10attributesEv @ 2365 NONAME + _ZNK18QMetaMethodBuilder10methodTypeEv @ 2366 NONAME + _ZNK18QMetaMethodBuilder10returnTypeEv @ 2367 NONAME + _ZNK18QMetaMethodBuilder14parameterNamesEv @ 2368 NONAME + _ZNK18QMetaMethodBuilder3tagEv @ 2369 NONAME + _ZNK18QMetaMethodBuilder5indexEv @ 2370 NONAME + _ZNK18QMetaMethodBuilder6accessEv @ 2371 NONAME + _ZNK18QMetaMethodBuilder6d_funcEv @ 2372 NONAME + _ZNK18QMetaMethodBuilder9signatureEv @ 2373 NONAME + _ZNK18QMetaObjectBuilder10enumeratorEi @ 2374 NONAME + _ZNK18QMetaObjectBuilder10superClassEv @ 2375 NONAME + _ZNK18QMetaObjectBuilder11constructorEi @ 2376 NONAME + _ZNK18QMetaObjectBuilder11methodCountEv @ 2377 NONAME + _ZNK18QMetaObjectBuilder12toMetaObjectEv @ 2378 NONAME + _ZNK18QMetaObjectBuilder13classInfoNameEi @ 2379 NONAME + _ZNK18QMetaObjectBuilder13propertyCountEv @ 2380 NONAME + _ZNK18QMetaObjectBuilder14classInfoCountEv @ 2381 NONAME + _ZNK18QMetaObjectBuilder14classInfoValueEi @ 2382 NONAME + _ZNK18QMetaObjectBuilder15enumeratorCountEv @ 2383 NONAME + _ZNK18QMetaObjectBuilder16constructorCountEv @ 2384 NONAME + _ZNK18QMetaObjectBuilder17relatedMetaObjectEi @ 2385 NONAME + _ZNK18QMetaObjectBuilder17toRelocatableDataEPb @ 2386 NONAME + _ZNK18QMetaObjectBuilder22relatedMetaObjectCountEv @ 2387 NONAME + _ZNK18QMetaObjectBuilder22staticMetacallFunctionEv @ 2388 NONAME + _ZNK18QMetaObjectBuilder5flagsEv @ 2389 NONAME + _ZNK18QMetaObjectBuilder6methodEi @ 2390 NONAME + _ZNK18QMetaObjectBuilder8propertyEi @ 2391 NONAME + _ZNK18QMetaObjectBuilder9classNameEv @ 2392 NONAME + _ZNK18QMetaObjectBuilder9serializeER11QDataStream @ 2393 NONAME + _ZNK19QDeclarativeAnchors10leftMarginEv @ 2394 NONAME + _ZNK19QDeclarativeAnchors10metaObjectEv @ 2395 NONAME + _ZNK19QDeclarativeAnchors11rightMarginEv @ 2396 NONAME + _ZNK19QDeclarativeAnchors11usedAnchorsEv @ 2397 NONAME + _ZNK19QDeclarativeAnchors12bottomMarginEv @ 2398 NONAME + _ZNK19QDeclarativeAnchors14baselineOffsetEv @ 2399 NONAME + _ZNK19QDeclarativeAnchors14verticalCenterEv @ 2400 NONAME + _ZNK19QDeclarativeAnchors16horizontalCenterEv @ 2401 NONAME + _ZNK19QDeclarativeAnchors20verticalCenterOffsetEv @ 2402 NONAME + _ZNK19QDeclarativeAnchors22horizontalCenterOffsetEv @ 2403 NONAME + _ZNK19QDeclarativeAnchors3topEv @ 2404 NONAME + _ZNK19QDeclarativeAnchors4fillEv @ 2405 NONAME + _ZNK19QDeclarativeAnchors4leftEv @ 2406 NONAME + _ZNK19QDeclarativeAnchors5rightEv @ 2407 NONAME + _ZNK19QDeclarativeAnchors6bottomEv @ 2408 NONAME + _ZNK19QDeclarativeAnchors7marginsEv @ 2409 NONAME + _ZNK19QDeclarativeAnchors8baselineEv @ 2410 NONAME + _ZNK19QDeclarativeAnchors8centerInEv @ 2411 NONAME + _ZNK19QDeclarativeAnchors9topMarginEv @ 2412 NONAME + _ZNK19QDeclarativeContext10metaObjectEv @ 2413 NONAME + _ZNK19QDeclarativeContext13parentContextEv @ 2414 NONAME + _ZNK19QDeclarativeContext15contextPropertyERK7QString @ 2415 NONAME + _ZNK19QDeclarativeContext6engineEv @ 2416 NONAME + _ZNK19QDeclarativeContext7baseUrlEv @ 2417 NONAME + _ZNK19QDeclarativeDomList14commaPositionsEv @ 2418 NONAME + _ZNK19QDeclarativeDomList6lengthEv @ 2419 NONAME + _ZNK19QDeclarativeDomList6valuesEv @ 2420 NONAME + _ZNK19QDeclarativeDomList8positionEv @ 2421 NONAME + _ZNK19QDeclarativeWebPage10metaObjectEv @ 2422 NONAME + _ZNK19QDeclarativeWebView10backActionEv @ 2423 NONAME + _ZNK19QDeclarativeWebView10metaObjectEv @ 2424 NONAME + _ZNK19QDeclarativeWebView10statusTextEv @ 2425 NONAME + _ZNK19QDeclarativeWebView10stopActionEv @ 2426 NONAME + _ZNK19QDeclarativeWebView10zoomFactorEv @ 2427 NONAME + _ZNK19QDeclarativeWebView12reloadActionEv @ 2428 NONAME + _ZNK19QDeclarativeWebView13elementAreaAtEiiii @ 2429 NONAME + _ZNK19QDeclarativeWebView13forwardActionEv @ 2430 NONAME + _ZNK19QDeclarativeWebView13pressGrabTimeEv @ 2431 NONAME + _ZNK19QDeclarativeWebView14preferredWidthEv @ 2432 NONAME + _ZNK19QDeclarativeWebView14settingsObjectEv @ 2433 NONAME + _ZNK19QDeclarativeWebView15newWindowParentEv @ 2434 NONAME + _ZNK19QDeclarativeWebView15preferredHeightEv @ 2435 NONAME + _ZNK19QDeclarativeWebView16renderingEnabledEv @ 2436 NONAME + _ZNK19QDeclarativeWebView18newWindowComponentEv @ 2437 NONAME + _ZNK19QDeclarativeWebView3urlEv @ 2438 NONAME + _ZNK19QDeclarativeWebView4htmlEv @ 2439 NONAME + _ZNK19QDeclarativeWebView4iconEv @ 2440 NONAME + _ZNK19QDeclarativeWebView4pageEv @ 2441 NONAME + _ZNK19QDeclarativeWebView5titleEv @ 2442 NONAME + _ZNK19QDeclarativeWebView6statusEv @ 2443 NONAME + _ZNK19QDeclarativeWebView7historyEv @ 2444 NONAME + _ZNK19QDeclarativeWebView8progressEv @ 2445 NONAME + _ZNK19QDeclarativeWebView8settingsEv @ 2446 NONAME + _ZNK19QListModelInterface10metaObjectEv @ 2447 NONAME + _ZNK20QDeclarativeBehavior10metaObjectEv @ 2448 NONAME + _ZNK20QDeclarativeBehavior7enabledEv @ 2449 NONAME + _ZNK20QDeclarativeCompiler6errorsEv @ 2450 NONAME + _ZNK20QDeclarativeCompiler7isErrorEv @ 2451 NONAME + _ZNK20QDeclarativeDomValue13isValueSourceEv @ 2452 NONAME + _ZNK20QDeclarativeDomValue13toValueSourceEv @ 2453 NONAME + _ZNK20QDeclarativeDomValue18isValueInterceptorEv @ 2454 NONAME + _ZNK20QDeclarativeDomValue18toValueInterceptorEv @ 2455 NONAME + _ZNK20QDeclarativeDomValue4typeEv @ 2456 NONAME + _ZNK20QDeclarativeDomValue6isListEv @ 2457 NONAME + _ZNK20QDeclarativeDomValue6lengthEv @ 2458 NONAME + _ZNK20QDeclarativeDomValue6toListEv @ 2459 NONAME + _ZNK20QDeclarativeDomValue8isObjectEv @ 2460 NONAME + _ZNK20QDeclarativeDomValue8positionEv @ 2461 NONAME + _ZNK20QDeclarativeDomValue8toObjectEv @ 2462 NONAME + _ZNK20QDeclarativeDomValue9isBindingEv @ 2463 NONAME + _ZNK20QDeclarativeDomValue9isInvalidEv @ 2464 NONAME + _ZNK20QDeclarativeDomValue9isLiteralEv @ 2465 NONAME + _ZNK20QDeclarativeDomValue9toBindingEv @ 2466 NONAME + _ZNK20QDeclarativeDomValue9toLiteralEv @ 2467 NONAME + _ZNK20QDeclarativeFlipable10metaObjectEv @ 2468 NONAME + _ZNK20QDeclarativeFlipable4sideEv @ 2469 NONAME + _ZNK20QDeclarativeGradient10metaObjectEv @ 2470 NONAME + _ZNK20QDeclarativeGradient8gradientEv @ 2471 NONAME + _ZNK20QDeclarativeGridView10cellHeightEv @ 2472 NONAME + _ZNK20QDeclarativeGridView10maxXExtentEv @ 2473 NONAME + _ZNK20QDeclarativeGridView10maxYExtentEv @ 2474 NONAME + _ZNK20QDeclarativeGridView10metaObjectEv @ 2475 NONAME + _ZNK20QDeclarativeGridView10minXExtentEv @ 2476 NONAME + _ZNK20QDeclarativeGridView10minYExtentEv @ 2477 NONAME + _ZNK20QDeclarativeGridView11cacheBufferEv @ 2478 NONAME + _ZNK20QDeclarativeGridView12currentIndexEv @ 2479 NONAME + _ZNK20QDeclarativeGridView13isWrapEnabledEv @ 2480 NONAME + _ZNK20QDeclarativeGridView27highlightFollowsCurrentItemEv @ 2481 NONAME + _ZNK20QDeclarativeGridView4flowEv @ 2482 NONAME + _ZNK20QDeclarativeGridView5countEv @ 2483 NONAME + _ZNK20QDeclarativeGridView5modelEv @ 2484 NONAME + _ZNK20QDeclarativeGridView8delegateEv @ 2485 NONAME + _ZNK20QDeclarativeGridView9cellWidthEv @ 2486 NONAME + _ZNK20QDeclarativeGridView9highlightEv @ 2487 NONAME + _ZNK20QDeclarativeListView10maxXExtentEv @ 2488 NONAME + _ZNK20QDeclarativeListView10maxYExtentEv @ 2489 NONAME + _ZNK20QDeclarativeListView10metaObjectEv @ 2490 NONAME + _ZNK20QDeclarativeListView10minXExtentEv @ 2491 NONAME + _ZNK20QDeclarativeListView10minYExtentEv @ 2492 NONAME + _ZNK20QDeclarativeListView11cacheBufferEv @ 2493 NONAME + _ZNK20QDeclarativeListView11orientationEv @ 2494 NONAME + _ZNK20QDeclarativeListView12currentIndexEv @ 2495 NONAME + _ZNK20QDeclarativeListView13isWrapEnabledEv @ 2496 NONAME + _ZNK20QDeclarativeListView14currentSectionEv @ 2497 NONAME + _ZNK20QDeclarativeListView18highlightMoveSpeedEv @ 2498 NONAME + _ZNK20QDeclarativeListView18highlightRangeModeEv @ 2499 NONAME + _ZNK20QDeclarativeListView20highlightResizeSpeedEv @ 2500 NONAME + _ZNK20QDeclarativeListView21preferredHighlightEndEv @ 2501 NONAME + _ZNK20QDeclarativeListView23preferredHighlightBeginEv @ 2502 NONAME + _ZNK20QDeclarativeListView27highlightFollowsCurrentItemEv @ 2503 NONAME + _ZNK20QDeclarativeListView5countEv @ 2504 NONAME + _ZNK20QDeclarativeListView5modelEv @ 2505 NONAME + _ZNK20QDeclarativeListView6footerEv @ 2506 NONAME + _ZNK20QDeclarativeListView6headerEv @ 2507 NONAME + _ZNK20QDeclarativeListView7spacingEv @ 2508 NONAME + _ZNK20QDeclarativeListView8delegateEv @ 2509 NONAME + _ZNK20QDeclarativeListView8snapModeEv @ 2510 NONAME + _ZNK20QDeclarativeListView9highlightEv @ 2511 NONAME + _ZNK20QDeclarativePathLine10metaObjectEv @ 2512 NONAME + _ZNK20QDeclarativePathQuad10metaObjectEv @ 2513 NONAME + _ZNK20QDeclarativePathQuad8controlXEv @ 2514 NONAME + _ZNK20QDeclarativePathQuad8controlYEv @ 2515 NONAME + _ZNK20QDeclarativePathView10dragMarginEv @ 2516 NONAME + _ZNK20QDeclarativePathView10metaObjectEv @ 2517 NONAME + _ZNK20QDeclarativePathView12currentIndexEv @ 2518 NONAME + _ZNK20QDeclarativePathView12snapPositionEv @ 2519 NONAME + _ZNK20QDeclarativePathView13pathItemCountEv @ 2520 NONAME + _ZNK20QDeclarativePathView4pathEv @ 2521 NONAME + _ZNK20QDeclarativePathView5countEv @ 2522 NONAME + _ZNK20QDeclarativePathView5modelEv @ 2523 NONAME + _ZNK20QDeclarativePathView6offsetEv @ 2524 NONAME + _ZNK20QDeclarativePathView8delegateEv @ 2525 NONAME + _ZNK20QDeclarativeProperty10isPropertyEv @ 2526 NONAME + _ZNK20QDeclarativeProperty10isWritableEv @ 2527 NONAME + _ZNK20QDeclarativeProperty12isDesignableEv @ 2528 NONAME + _ZNK20QDeclarativeProperty12isResettableEv @ 2529 NONAME + _ZNK20QDeclarativeProperty12propertyTypeEv @ 2530 NONAME + _ZNK20QDeclarativeProperty15hasNotifySignalEv @ 2531 NONAME + _ZNK20QDeclarativeProperty16isSignalPropertyEv @ 2532 NONAME + _ZNK20QDeclarativeProperty16propertyTypeNameEv @ 2533 NONAME + _ZNK20QDeclarativeProperty17needsNotifySignalEv @ 2534 NONAME + _ZNK20QDeclarativeProperty19connectNotifySignalEP7QObjectPKc @ 2535 NONAME + _ZNK20QDeclarativeProperty19connectNotifySignalEP7QObjecti @ 2536 NONAME + _ZNK20QDeclarativeProperty20propertyTypeCategoryEv @ 2537 NONAME + _ZNK20QDeclarativeProperty4nameEv @ 2538 NONAME + _ZNK20QDeclarativeProperty4readEv @ 2539 NONAME + _ZNK20QDeclarativeProperty4typeEv @ 2540 NONAME + _ZNK20QDeclarativeProperty5indexEv @ 2541 NONAME + _ZNK20QDeclarativeProperty5resetEv @ 2542 NONAME + _ZNK20QDeclarativeProperty5writeERK8QVariant @ 2543 NONAME + _ZNK20QDeclarativeProperty6methodEv @ 2544 NONAME + _ZNK20QDeclarativeProperty6objectEv @ 2545 NONAME + _ZNK20QDeclarativeProperty7isValidEv @ 2546 NONAME + _ZNK20QDeclarativeProperty8propertyEv @ 2547 NONAME + _ZNK20QDeclarativePropertyeqERKS_ @ 2548 NONAME + _ZNK20QDeclarativeRepeater10metaObjectEv @ 2549 NONAME + _ZNK20QDeclarativeRepeater5countEv @ 2550 NONAME + _ZNK20QDeclarativeRepeater5modelEv @ 2551 NONAME + _ZNK20QDeclarativeRepeater8delegateEv @ 2552 NONAME + _ZNK20QDeclarativeTextEdit10cursorRectEv @ 2553 NONAME + _ZNK20QDeclarativeTextEdit10isReadOnlyEv @ 2554 NONAME + _ZNK20QDeclarativeTextEdit10metaObjectEv @ 2555 NONAME + _ZNK20QDeclarativeTextEdit10textFormatEv @ 2556 NONAME + _ZNK20QDeclarativeTextEdit10textMarginEv @ 2557 NONAME + _ZNK20QDeclarativeTextEdit12focusOnPressEv @ 2558 NONAME + _ZNK20QDeclarativeTextEdit12selectedTextEv @ 2559 NONAME + _ZNK20QDeclarativeTextEdit12selectionEndEv @ 2560 NONAME + _ZNK20QDeclarativeTextEdit14cursorDelegateEv @ 2561 NONAME + _ZNK20QDeclarativeTextEdit14cursorPositionEv @ 2562 NONAME + _ZNK20QDeclarativeTextEdit14selectionColorEv @ 2563 NONAME + _ZNK20QDeclarativeTextEdit14selectionStartEv @ 2564 NONAME + _ZNK20QDeclarativeTextEdit15isCursorVisibleEv @ 2565 NONAME + _ZNK20QDeclarativeTextEdit16inputMethodQueryEN2Qt16InputMethodQueryE @ 2566 NONAME + _ZNK20QDeclarativeTextEdit17selectedTextColorEv @ 2567 NONAME + _ZNK20QDeclarativeTextEdit19persistentSelectionEv @ 2568 NONAME + _ZNK20QDeclarativeTextEdit20textInteractionFlagsEv @ 2569 NONAME + _ZNK20QDeclarativeTextEdit4fontEv @ 2570 NONAME + _ZNK20QDeclarativeTextEdit4textEv @ 2571 NONAME + _ZNK20QDeclarativeTextEdit4wrapEv @ 2572 NONAME + _ZNK20QDeclarativeTextEdit5colorEv @ 2573 NONAME + _ZNK20QDeclarativeTextEdit6hAlignEv @ 2574 NONAME + _ZNK20QDeclarativeTextEdit6vAlignEv @ 2575 NONAME + _ZNK20QMetaPropertyBuilder10isEditableEv @ 2576 NONAME + _ZNK20QMetaPropertyBuilder10isReadableEv @ 2577 NONAME + _ZNK20QMetaPropertyBuilder10isWritableEv @ 2578 NONAME + _ZNK20QMetaPropertyBuilder12hasStdCppSetEv @ 2579 NONAME + _ZNK20QMetaPropertyBuilder12isDesignableEv @ 2580 NONAME + _ZNK20QMetaPropertyBuilder12isEnumOrFlagEv @ 2581 NONAME + _ZNK20QMetaPropertyBuilder12isResettableEv @ 2582 NONAME + _ZNK20QMetaPropertyBuilder12isScriptableEv @ 2583 NONAME + _ZNK20QMetaPropertyBuilder12notifySignalEv @ 2584 NONAME + _ZNK20QMetaPropertyBuilder15hasNotifySignalEv @ 2585 NONAME + _ZNK20QMetaPropertyBuilder4nameEv @ 2586 NONAME + _ZNK20QMetaPropertyBuilder4typeEv @ 2587 NONAME + _ZNK20QMetaPropertyBuilder6d_funcEv @ 2588 NONAME + _ZNK20QMetaPropertyBuilder6isUserEv @ 2589 NONAME + _ZNK20QMetaPropertyBuilder8isStoredEv @ 2590 NONAME + _ZNK20QMetaPropertyBuilder9isDynamicEv @ 2591 NONAME + _ZNK21QDeclarativeComponent10metaObjectEv @ 2592 NONAME + _ZNK21QDeclarativeComponent12errorsStringEv @ 2593 NONAME + _ZNK21QDeclarativeComponent15creationContextEv @ 2594 NONAME + _ZNK21QDeclarativeComponent3urlEv @ 2595 NONAME + _ZNK21QDeclarativeComponent6errorsEv @ 2596 NONAME + _ZNK21QDeclarativeComponent6isNullEv @ 2597 NONAME + _ZNK21QDeclarativeComponent6statusEv @ 2598 NONAME + _ZNK21QDeclarativeComponent7isErrorEv @ 2599 NONAME + _ZNK21QDeclarativeComponent7isReadyEv @ 2600 NONAME + _ZNK21QDeclarativeComponent8progressEv @ 2601 NONAME + _ZNK21QDeclarativeComponent9isLoadingEv @ 2602 NONAME + _ZNK21QDeclarativeDomImport3uriEv @ 2603 NONAME + _ZNK21QDeclarativeDomImport4typeEv @ 2604 NONAME + _ZNK21QDeclarativeDomImport7versionEv @ 2605 NONAME + _ZNK21QDeclarativeDomImport9qualifierEv @ 2606 NONAME + _ZNK21QDeclarativeDomObject10objectTypeEv @ 2607 NONAME + _ZNK21QDeclarativeDomObject10propertiesEv @ 2608 NONAME + _ZNK21QDeclarativeDomObject11isComponentEv @ 2609 NONAME + _ZNK21QDeclarativeDomObject11toComponentEv @ 2610 NONAME + _ZNK21QDeclarativeDomObject12isCustomTypeEv @ 2611 NONAME + _ZNK21QDeclarativeDomObject14customTypeDataEv @ 2612 NONAME + _ZNK21QDeclarativeDomObject15dynamicPropertyERK10QByteArray @ 2613 NONAME + _ZNK21QDeclarativeDomObject15objectClassNameEv @ 2614 NONAME + _ZNK21QDeclarativeDomObject17dynamicPropertiesEv @ 2615 NONAME + _ZNK21QDeclarativeDomObject22objectTypeMajorVersionEv @ 2616 NONAME + _ZNK21QDeclarativeDomObject22objectTypeMinorVersionEv @ 2617 NONAME + _ZNK21QDeclarativeDomObject3urlEv @ 2618 NONAME + _ZNK21QDeclarativeDomObject6lengthEv @ 2619 NONAME + _ZNK21QDeclarativeDomObject7isValidEv @ 2620 NONAME + _ZNK21QDeclarativeDomObject8objectIdEv @ 2621 NONAME + _ZNK21QDeclarativeDomObject8positionEv @ 2622 NONAME + _ZNK21QDeclarativeDomObject8propertyERK10QByteArray @ 2623 NONAME + _ZNK21QDeclarativeFlickable10isFlickingEv @ 2624 NONAME + _ZNK21QDeclarativeFlickable10maxXExtentEv @ 2625 NONAME + _ZNK21QDeclarativeFlickable10maxYExtentEv @ 2626 NONAME + _ZNK21QDeclarativeFlickable10metaObjectEv @ 2627 NONAME + _ZNK21QDeclarativeFlickable10minXExtentEv @ 2628 NONAME + _ZNK21QDeclarativeFlickable10minYExtentEv @ 2629 NONAME + _ZNK21QDeclarativeFlickable10pressDelayEv @ 2630 NONAME + _ZNK21QDeclarativeFlickable12contentWidthEv @ 2631 NONAME + _ZNK21QDeclarativeFlickable13contentHeightEv @ 2632 NONAME + _ZNK21QDeclarativeFlickable13isInteractiveEv @ 2633 NONAME + _ZNK21QDeclarativeFlickable14flickDirectionEv @ 2634 NONAME + _ZNK21QDeclarativeFlickable14isAtXBeginningEv @ 2635 NONAME + _ZNK21QDeclarativeFlickable14isAtYBeginningEv @ 2636 NONAME + _ZNK21QDeclarativeFlickable16verticalVelocityEv @ 2637 NONAME + _ZNK21QDeclarativeFlickable17flickDecelerationEv @ 2638 NONAME + _ZNK21QDeclarativeFlickable18horizontalVelocityEv @ 2639 NONAME + _ZNK21QDeclarativeFlickable20maximumFlickVelocityEv @ 2640 NONAME + _ZNK21QDeclarativeFlickable6vWidthEv @ 2641 NONAME + _ZNK21QDeclarativeFlickable6xflickEv @ 2642 NONAME + _ZNK21QDeclarativeFlickable6yflickEv @ 2643 NONAME + _ZNK21QDeclarativeFlickable7vHeightEv @ 2644 NONAME + _ZNK21QDeclarativeFlickable8contentXEv @ 2645 NONAME + _ZNK21QDeclarativeFlickable8contentYEv @ 2646 NONAME + _ZNK21QDeclarativeFlickable8isAtXEndEv @ 2647 NONAME + _ZNK21QDeclarativeFlickable8isAtYEndEv @ 2648 NONAME + _ZNK21QDeclarativeFlickable8isMovingEv @ 2649 NONAME + _ZNK21QDeclarativeFlickable9overShootEv @ 2650 NONAME + _ZNK21QDeclarativeImageBase10metaObjectEv @ 2651 NONAME + _ZNK21QDeclarativeImageBase12asynchronousEv @ 2652 NONAME + _ZNK21QDeclarativeImageBase6sourceEv @ 2653 NONAME + _ZNK21QDeclarativeImageBase6statusEv @ 2654 NONAME + _ZNK21QDeclarativeImageBase8progressEv @ 2655 NONAME + _ZNK21QDeclarativeListModel10checkRolesEv @ 2656 NONAME + _ZNK21QDeclarativeListModel10metaObjectEv @ 2657 NONAME + _ZNK21QDeclarativeListModel12valueForNodeEP9ModelNode @ 2658 NONAME + _ZNK21QDeclarativeListModel3getEi @ 2659 NONAME + _ZNK21QDeclarativeListModel4dataEiRK5QListIiE @ 2660 NONAME + _ZNK21QDeclarativeListModel4dataEii @ 2661 NONAME + _ZNK21QDeclarativeListModel5countEv @ 2662 NONAME + _ZNK21QDeclarativeListModel5rolesEv @ 2663 NONAME + _ZNK21QDeclarativeListModel7addRoleERK7QString @ 2664 NONAME + _ZNK21QDeclarativeListModel8toStringEi @ 2665 NONAME + _ZNK21QDeclarativeMouseArea10metaObjectEv @ 2666 NONAME + _ZNK21QDeclarativeMouseArea14pressedButtonsEv @ 2667 NONAME + _ZNK21QDeclarativeMouseArea15acceptedButtonsEv @ 2668 NONAME + _ZNK21QDeclarativeMouseArea6mouseXEv @ 2669 NONAME + _ZNK21QDeclarativeMouseArea6mouseYEv @ 2670 NONAME + _ZNK21QDeclarativeMouseArea7hoveredEv @ 2671 NONAME + _ZNK21QDeclarativeMouseArea7pressedEv @ 2672 NONAME + _ZNK21QDeclarativeMouseArea9isEnabledEv @ 2673 NONAME + _ZNK21QDeclarativeParticles10metaObjectEv @ 2674 NONAME + _ZNK21QDeclarativeParticles12emissionRateEv @ 2675 NONAME + _ZNK21QDeclarativeParticles14angleDeviationEv @ 2676 NONAME + _ZNK21QDeclarativeParticles14fadeInDurationEv @ 2677 NONAME + _ZNK21QDeclarativeParticles15fadeOutDurationEv @ 2678 NONAME + _ZNK21QDeclarativeParticles16emissionVarianceEv @ 2679 NONAME + _ZNK21QDeclarativeParticles17lifeSpanDeviationEv @ 2680 NONAME + _ZNK21QDeclarativeParticles17velocityDeviationEv @ 2681 NONAME + _ZNK21QDeclarativeParticles5angleEv @ 2682 NONAME + _ZNK21QDeclarativeParticles5countEv @ 2683 NONAME + _ZNK21QDeclarativeParticles6motionEv @ 2684 NONAME + _ZNK21QDeclarativeParticles6sourceEv @ 2685 NONAME + _ZNK21QDeclarativeParticles8lifeSpanEv @ 2686 NONAME + _ZNK21QDeclarativeParticles8velocityEv @ 2687 NONAME + _ZNK21QDeclarativePathCubic10metaObjectEv @ 2688 NONAME + _ZNK21QDeclarativePathCubic9control1XEv @ 2689 NONAME + _ZNK21QDeclarativePathCubic9control1YEv @ 2690 NONAME + _ZNK21QDeclarativePathCubic9control2XEv @ 2691 NONAME + _ZNK21QDeclarativePathCubic9control2YEv @ 2692 NONAME + _ZNK21QDeclarativeRectangle10metaObjectEv @ 2693 NONAME + _ZNK21QDeclarativeRectangle12boundingRectEv @ 2694 NONAME + _ZNK21QDeclarativeRectangle5colorEv @ 2695 NONAME + _ZNK21QDeclarativeRectangle6radiusEv @ 2696 NONAME + _ZNK21QDeclarativeRectangle8gradientEv @ 2697 NONAME + _ZNK21QDeclarativeScaleGrid10metaObjectEv @ 2698 NONAME + _ZNK21QDeclarativeScaleGrid6isNullEv @ 2699 NONAME + _ZNK21QDeclarativeTextInput10cursorRectEv @ 2700 NONAME + _ZNK21QDeclarativeTextInput10isReadOnlyEv @ 2701 NONAME + _ZNK21QDeclarativeTextInput10metaObjectEv @ 2702 NONAME + _ZNK21QDeclarativeTextInput12focusOnPressEv @ 2703 NONAME + _ZNK21QDeclarativeTextInput12selectedTextEv @ 2704 NONAME + _ZNK21QDeclarativeTextInput12selectionEndEv @ 2705 NONAME + _ZNK21QDeclarativeTextInput14cursorDelegateEv @ 2706 NONAME + _ZNK21QDeclarativeTextInput14cursorPositionEv @ 2707 NONAME + _ZNK21QDeclarativeTextInput14selectionColorEv @ 2708 NONAME + _ZNK21QDeclarativeTextInput14selectionStartEv @ 2709 NONAME + _ZNK21QDeclarativeTextInput15isCursorVisibleEv @ 2710 NONAME + _ZNK21QDeclarativeTextInput16inputMethodQueryEN2Qt16InputMethodQueryE @ 2711 NONAME + _ZNK21QDeclarativeTextInput17selectedTextColorEv @ 2712 NONAME + _ZNK21QDeclarativeTextInput18hasAcceptableInputEv @ 2713 NONAME + _ZNK21QDeclarativeTextInput4fontEv @ 2714 NONAME + _ZNK21QDeclarativeTextInput4textEv @ 2715 NONAME + _ZNK21QDeclarativeTextInput5colorEv @ 2716 NONAME + _ZNK21QDeclarativeTextInput6hAlignEv @ 2717 NONAME + _ZNK21QDeclarativeTextInput8echoModeEv @ 2718 NONAME + _ZNK21QDeclarativeTextInput9inputMaskEv @ 2719 NONAME + _ZNK21QDeclarativeTextInput9maxLengthEv @ 2720 NONAME + _ZNK21QDeclarativeTextInput9validatorEv @ 2721 NONAME + _ZNK21QDeclarativeValueType10metaObjectEv @ 2722 NONAME + _ZNK22QDeclarativeDebugQuery10metaObjectEv @ 2723 NONAME + _ZNK22QDeclarativeDebugQuery5stateEv @ 2724 NONAME + _ZNK22QDeclarativeDebugQuery9isWaitingEv @ 2725 NONAME + _ZNK22QDeclarativeDebugWatch10metaObjectEv @ 2726 NONAME + _ZNK22QDeclarativeDebugWatch13objectDebugIdEv @ 2727 NONAME + _ZNK22QDeclarativeDebugWatch5stateEv @ 2728 NONAME + _ZNK22QDeclarativeDebugWatch7queryIdEv @ 2729 NONAME + _ZNK22QDeclarativeEaseFollow10metaObjectEv @ 2730 NONAME + _ZNK22QDeclarativeEaseFollow11sourceValueEv @ 2731 NONAME + _ZNK22QDeclarativeEaseFollow13reversingModeEv @ 2732 NONAME + _ZNK22QDeclarativeEaseFollow17maximumEasingTimeEv @ 2733 NONAME + _ZNK22QDeclarativeEaseFollow7enabledEv @ 2734 NONAME + _ZNK22QDeclarativeEaseFollow8durationEv @ 2735 NONAME + _ZNK22QDeclarativeEaseFollow8velocityEv @ 2736 NONAME + _ZNK22QDeclarativeExpression10expressionEv @ 2737 NONAME + _ZNK22QDeclarativeExpression10lineNumberEv @ 2738 NONAME + _ZNK22QDeclarativeExpression10metaObjectEv @ 2739 NONAME + _ZNK22QDeclarativeExpression10sourceFileEv @ 2740 NONAME + _ZNK22QDeclarativeExpression11scopeObjectEv @ 2741 NONAME + _ZNK22QDeclarativeExpression20notifyOnValueChangedEv @ 2742 NONAME + _ZNK22QDeclarativeExpression5errorEv @ 2743 NONAME + _ZNK22QDeclarativeExpression6engineEv @ 2744 NONAME + _ZNK22QDeclarativeExpression7contextEv @ 2745 NONAME + _ZNK22QDeclarativeExpression8hasErrorEv @ 2746 NONAME + _ZNK22QDeclarativeFocusPanel10metaObjectEv @ 2747 NONAME + _ZNK22QDeclarativeFocusScope10metaObjectEv @ 2748 NONAME + _ZNK22QDeclarativeFontLoader10metaObjectEv @ 2749 NONAME + _ZNK22QDeclarativeFontLoader4nameEv @ 2750 NONAME + _ZNK22QDeclarativeFontLoader6sourceEv @ 2751 NONAME + _ZNK22QDeclarativeFontLoader6statusEv @ 2752 NONAME + _ZNK22QDeclarativeStateGroup10metaObjectEv @ 2753 NONAME + _ZNK22QDeclarativeStateGroup5stateEv @ 2754 NONAME + _ZNK22QDeclarativeStateGroup6statesEv @ 2755 NONAME + _ZNK22QDeclarativeStateGroup9findStateERK7QString @ 2756 NONAME + _ZNK22QDeclarativeTransition10metaObjectEv @ 2757 NONAME + _ZNK22QDeclarativeTransition10reversibleEv @ 2758 NONAME + _ZNK22QDeclarativeTransition7toStateEv @ 2759 NONAME + _ZNK22QDeclarativeTransition9fromStateEv @ 2760 NONAME + _ZNK23QDeclarativeBorderImage10metaObjectEv @ 2761 NONAME + _ZNK23QDeclarativeBorderImage16verticalTileModeEv @ 2762 NONAME + _ZNK23QDeclarativeBorderImage18horizontalTileModeEv @ 2763 NONAME + _ZNK23QDeclarativeConnections10metaObjectEv @ 2764 NONAME + _ZNK23QDeclarativeConnections6targetEv @ 2765 NONAME + _ZNK23QDeclarativeDebugClient10metaObjectEv @ 2766 NONAME + _ZNK23QDeclarativeDebugClient11isConnectedEv @ 2767 NONAME + _ZNK23QDeclarativeDebugClient4nameEv @ 2768 NONAME + _ZNK23QDeclarativeDebugClient9isEnabledEv @ 2769 NONAME + _ZNK23QDeclarativeDomDocument10rootObjectEv @ 2770 NONAME + _ZNK23QDeclarativeDomDocument6errorsEv @ 2771 NONAME + _ZNK23QDeclarativeDomDocument7importsEv @ 2772 NONAME + _ZNK23QDeclarativeDomProperty12propertyNameEv @ 2773 NONAME + _ZNK23QDeclarativeDomProperty17isDefaultPropertyEv @ 2774 NONAME + _ZNK23QDeclarativeDomProperty17propertyNamePartsEv @ 2775 NONAME + _ZNK23QDeclarativeDomProperty5valueEv @ 2776 NONAME + _ZNK23QDeclarativeDomProperty6lengthEv @ 2777 NONAME + _ZNK23QDeclarativeDomProperty7isValidEv @ 2778 NONAME + _ZNK23QDeclarativeDomProperty8positionEv @ 2779 NONAME + _ZNK23QDeclarativeEngineDebug10metaObjectEv @ 2780 NONAME + _ZNK23QDeclarativePaintedItem10metaObjectEv @ 2781 NONAME + _ZNK23QDeclarativePaintedItem11smoothCacheEv @ 2782 NONAME + _ZNK23QDeclarativePaintedItem12contentsSizeEv @ 2783 NONAME + _ZNK23QDeclarativePaintedItem13contentsScaleEv @ 2784 NONAME + _ZNK23QDeclarativePaintedItem14pixelCacheSizeEv @ 2785 NONAME + _ZNK23QDeclarativePaintedItem9fillColorEv @ 2786 NONAME + _ZNK23QDeclarativePathElement10metaObjectEv @ 2787 NONAME + _ZNK23QDeclarativePathPercent10metaObjectEv @ 2788 NONAME + _ZNK23QDeclarativePathPercent5valueEv @ 2789 NONAME + _ZNK23QDeclarativePixmapReply10metaObjectEv @ 2790 NONAME + _ZNK23QDeclarativePixmapReply3urlEv @ 2791 NONAME + _ZNK23QDeclarativePixmapReply6statusEv @ 2792 NONAME + _ZNK23QDeclarativePixmapReply9isLoadingEv @ 2793 NONAME + _ZNK23QDeclarativePropertyMap10metaObjectEv @ 2794 NONAME + _ZNK23QDeclarativePropertyMap4keysEv @ 2795 NONAME + _ZNK23QDeclarativePropertyMap4sizeEv @ 2796 NONAME + _ZNK23QDeclarativePropertyMap5countEv @ 2797 NONAME + _ZNK23QDeclarativePropertyMap5valueERK7QString @ 2798 NONAME + _ZNK23QDeclarativePropertyMap7isEmptyEv @ 2799 NONAME + _ZNK23QDeclarativePropertyMap8containsERK7QString @ 2800 NONAME + _ZNK23QDeclarativePropertyMapixERK7QString @ 2801 NONAME + _ZNK23QDeclarativeViewSection10metaObjectEv @ 2802 NONAME + _ZNK23QDeclarativeVisualModel10metaObjectEv @ 2803 NONAME + _ZNK24QDeclarativeDebugService10metaObjectEv @ 2804 NONAME + _ZNK24QDeclarativeDebugService4nameEv @ 2805 NONAME + _ZNK24QDeclarativeDebugService9isEnabledEv @ 2806 NONAME + _ZNK24QDeclarativeDomComponent13componentRootEv @ 2807 NONAME + _ZNK24QDeclarativeGradientStop10metaObjectEv @ 2808 NONAME + _ZNK24QDeclarativeListAccessor2atEi @ 2809 NONAME + _ZNK24QDeclarativeListAccessor4listEv @ 2810 NONAME + _ZNK24QDeclarativeListAccessor5countEv @ 2811 NONAME + _ZNK24QDeclarativeListAccessor7isValidEv @ 2812 NONAME + _ZNK24QDeclarativeParentChange10metaObjectEv @ 2813 NONAME + _ZNK24QDeclarativeParentChange10scaleIsSetEv @ 2814 NONAME + _ZNK24QDeclarativeParentChange10widthIsSetEv @ 2815 NONAME + _ZNK24QDeclarativeParentChange11heightIsSetEv @ 2816 NONAME + _ZNK24QDeclarativeParentChange13rotationIsSetEv @ 2817 NONAME + _ZNK24QDeclarativeParentChange14originalParentEv @ 2818 NONAME + _ZNK24QDeclarativeParentChange1xEv @ 2819 NONAME + _ZNK24QDeclarativeParentChange1yEv @ 2820 NONAME + _ZNK24QDeclarativeParentChange5scaleEv @ 2821 NONAME + _ZNK24QDeclarativeParentChange5widthEv @ 2822 NONAME + _ZNK24QDeclarativeParentChange6heightEv @ 2823 NONAME + _ZNK24QDeclarativeParentChange6objectEv @ 2824 NONAME + _ZNK24QDeclarativeParentChange6parentEv @ 2825 NONAME + _ZNK24QDeclarativeParentChange6xIsSetEv @ 2826 NONAME + _ZNK24QDeclarativeParentChange6yIsSetEv @ 2827 NONAME + _ZNK24QDeclarativeParentChange8rotationEv @ 2828 NONAME + _ZNK24QDeclarativeParentChange8typeNameEv @ 2829 NONAME + _ZNK24QDeclarativeScriptString11scopeObjectEv @ 2830 NONAME + _ZNK24QDeclarativeScriptString6scriptEv @ 2831 NONAME + _ZNK24QDeclarativeScriptString7contextEv @ 2832 NONAME + _ZNK24QDeclarativeSpringFollow10metaObjectEv @ 2833 NONAME + _ZNK24QDeclarativeSpringFollow11sourceValueEv @ 2834 NONAME + _ZNK24QDeclarativeSpringFollow4massEv @ 2835 NONAME + _ZNK24QDeclarativeSpringFollow5valueEv @ 2836 NONAME + _ZNK24QDeclarativeSpringFollow6inSyncEv @ 2837 NONAME + _ZNK24QDeclarativeSpringFollow6springEv @ 2838 NONAME + _ZNK24QDeclarativeSpringFollow7dampingEv @ 2839 NONAME + _ZNK24QDeclarativeSpringFollow7enabledEv @ 2840 NONAME + _ZNK24QDeclarativeSpringFollow7epsilonEv @ 2841 NONAME + _ZNK24QDeclarativeSpringFollow7modulusEv @ 2842 NONAME + _ZNK24QDeclarativeSpringFollow8velocityEv @ 2843 NONAME + _ZNK24QDeclarativeXmlListModel10metaObjectEv @ 2844 NONAME + _ZNK24QDeclarativeXmlListModel21namespaceDeclarationsEv @ 2845 NONAME + _ZNK24QDeclarativeXmlListModel3xmlEv @ 2846 NONAME + _ZNK24QDeclarativeXmlListModel4dataEiRK5QListIiE @ 2847 NONAME + _ZNK24QDeclarativeXmlListModel4dataEii @ 2848 NONAME + _ZNK24QDeclarativeXmlListModel5countEv @ 2849 NONAME + _ZNK24QDeclarativeXmlListModel5queryEv @ 2850 NONAME + _ZNK24QDeclarativeXmlListModel5rolesEv @ 2851 NONAME + _ZNK24QDeclarativeXmlListModel6sourceEv @ 2852 NONAME + _ZNK24QDeclarativeXmlListModel6statusEv @ 2853 NONAME + _ZNK24QDeclarativeXmlListModel8progressEv @ 2854 NONAME + _ZNK24QDeclarativeXmlListModel8toStringEi @ 2855 NONAME + _ZNK25QDeclarativeAnchorChanges10metaObjectEv @ 2856 NONAME + _ZNK25QDeclarativeAnchorChanges14verticalCenterEv @ 2857 NONAME + _ZNK25QDeclarativeAnchorChanges16horizontalCenterEv @ 2858 NONAME + _ZNK25QDeclarativeAnchorChanges3topEv @ 2859 NONAME + _ZNK25QDeclarativeAnchorChanges4leftEv @ 2860 NONAME + _ZNK25QDeclarativeAnchorChanges5resetEv @ 2861 NONAME + _ZNK25QDeclarativeAnchorChanges5rightEv @ 2862 NONAME + _ZNK25QDeclarativeAnchorChanges6bottomEv @ 2863 NONAME + _ZNK25QDeclarativeAnchorChanges6objectEv @ 2864 NONAME + _ZNK25QDeclarativeAnchorChanges8baselineEv @ 2865 NONAME + _ZNK25QDeclarativeAnchorChanges8typeNameEv @ 2866 NONAME + _ZNK25QDeclarativeAnimatedImage10frameCountEv @ 2867 NONAME + _ZNK25QDeclarativeAnimatedImage10metaObjectEv @ 2868 NONAME + _ZNK25QDeclarativeAnimatedImage12currentFrameEv @ 2869 NONAME + _ZNK25QDeclarativeAnimatedImage8isPausedEv @ 2870 NONAME + _ZNK25QDeclarativeAnimatedImage9isPlayingEv @ 2871 NONAME + _ZNK25QDeclarativeListReference15listElementTypeEv @ 2872 NONAME + _ZNK25QDeclarativeListReference2atEi @ 2873 NONAME + _ZNK25QDeclarativeListReference5canAtEv @ 2874 NONAME + _ZNK25QDeclarativeListReference5clearEv @ 2875 NONAME + _ZNK25QDeclarativeListReference5countEv @ 2876 NONAME + _ZNK25QDeclarativeListReference6appendEP7QObject @ 2877 NONAME + _ZNK25QDeclarativeListReference6objectEv @ 2878 NONAME + _ZNK25QDeclarativeListReference7isValidEv @ 2879 NONAME + _ZNK25QDeclarativeListReference8canClearEv @ 2880 NONAME + _ZNK25QDeclarativeListReference8canCountEv @ 2881 NONAME + _ZNK25QDeclarativeListReference9canAppendEv @ 2882 NONAME + _ZNK25QDeclarativePathAttribute10metaObjectEv @ 2883 NONAME + _ZNK25QDeclarativePathAttribute4nameEv @ 2884 NONAME + _ZNK25QDeclarativePathAttribute5valueEv @ 2885 NONAME + _ZNK25QDeclarativeSystemPalette10buttonTextEv @ 2886 NONAME + _ZNK25QDeclarativeSystemPalette10colorGroupEv @ 2887 NONAME + _ZNK25QDeclarativeSystemPalette10metaObjectEv @ 2888 NONAME + _ZNK25QDeclarativeSystemPalette10windowTextEv @ 2889 NONAME + _ZNK25QDeclarativeSystemPalette13alternateBaseEv @ 2890 NONAME + _ZNK25QDeclarativeSystemPalette15highlightedTextEv @ 2891 NONAME + _ZNK25QDeclarativeSystemPalette3midEv @ 2892 NONAME + _ZNK25QDeclarativeSystemPalette4baseEv @ 2893 NONAME + _ZNK25QDeclarativeSystemPalette4darkEv @ 2894 NONAME + _ZNK25QDeclarativeSystemPalette4textEv @ 2895 NONAME + _ZNK25QDeclarativeSystemPalette5lightEv @ 2896 NONAME + _ZNK25QDeclarativeSystemPalette6buttonEv @ 2897 NONAME + _ZNK25QDeclarativeSystemPalette6shadowEv @ 2898 NONAME + _ZNK25QDeclarativeSystemPalette6windowEv @ 2899 NONAME + _ZNK25QDeclarativeSystemPalette8midlightEv @ 2900 NONAME + _ZNK25QDeclarativeSystemPalette9highlightEv @ 2901 NONAME + _ZNK26QDeclarativeBasePositioner10metaObjectEv @ 2902 NONAME + _ZNK26QDeclarativeBasePositioner3addEv @ 2903 NONAME + _ZNK26QDeclarativeBasePositioner4moveEv @ 2904 NONAME + _ZNK26QDeclarativeBasePositioner7spacingEv @ 2905 NONAME + _ZNK26QDeclarativeOpenMetaObject4nameEi @ 2906 NONAME + _ZNK26QDeclarativeOpenMetaObject4typeEv @ 2907 NONAME + _ZNK26QDeclarativeOpenMetaObject5countEv @ 2908 NONAME + _ZNK26QDeclarativeOpenMetaObject5valueERK10QByteArray @ 2909 NONAME + _ZNK26QDeclarativeOpenMetaObject5valueEi @ 2910 NONAME + _ZNK26QDeclarativeOpenMetaObject6objectEv @ 2911 NONAME + _ZNK26QDeclarativeOpenMetaObject6parentEv @ 2912 NONAME + _ZNK26QDeclarativeParticleMotion10metaObjectEv @ 2913 NONAME + _ZNK26QDeclarativeStateOperation10metaObjectEv @ 2914 NONAME + _ZNK27QDeclarativeDebugConnection10metaObjectEv @ 2915 NONAME + _ZNK27QDeclarativeDebugConnection11isConnectedEv @ 2916 NONAME + _ZNK27QDeclarativeDomValueBinding7bindingEv @ 2917 NONAME + _ZNK27QDeclarativeDomValueLiteral7literalEv @ 2918 NONAME + _ZNK27QDeclarativeExtensionPlugin10metaObjectEv @ 2919 NONAME + _ZNK27QDeclarativeGridScaledImage10gridBottomEv @ 2920 NONAME + _ZNK27QDeclarativeGridScaledImage7gridTopEv @ 2921 NONAME + _ZNK27QDeclarativeGridScaledImage7isValidEv @ 2922 NONAME + _ZNK27QDeclarativeGridScaledImage8gridLeftEv @ 2923 NONAME + _ZNK27QDeclarativeGridScaledImage9gridRightEv @ 2924 NONAME + _ZNK27QDeclarativeGridScaledImage9pixmapUrlEv @ 2925 NONAME + _ZNK27QDeclarativeNumberFormatter10metaObjectEv @ 2926 NONAME + _ZNK27QDeclarativeNumberFormatter4textEv @ 2927 NONAME + _ZNK27QDeclarativeNumberFormatter6formatEv @ 2928 NONAME + _ZNK27QDeclarativeNumberFormatter6numberEv @ 2929 NONAME + _ZNK27QDeclarativePropertyChanges10isExplicitEv @ 2930 NONAME + _ZNK27QDeclarativePropertyChanges10metaObjectEv @ 2931 NONAME + _ZNK27QDeclarativePropertyChanges18restoreEntryValuesEv @ 2932 NONAME + _ZNK27QDeclarativePropertyChanges6objectEv @ 2933 NONAME + _ZNK27QDeclarativeVisualDataModel10metaObjectEv @ 2934 NONAME + _ZNK27QDeclarativeVisualDataModel4partEv @ 2935 NONAME + _ZNK27QDeclarativeVisualDataModel5countEv @ 2936 NONAME + _ZNK27QDeclarativeVisualDataModel5modelEv @ 2937 NONAME + _ZNK27QDeclarativeVisualDataModel7indexOfEP16QDeclarativeItemP7QObject @ 2938 NONAME + _ZNK27QDeclarativeVisualDataModel8delegateEv @ 2939 NONAME + _ZNK27QDeclarativeVisualDataModel9rootIndexEv @ 2940 NONAME + _ZNK27QDeclarativeVisualItemModel10metaObjectEv @ 2941 NONAME + _ZNK27QDeclarativeVisualItemModel5countEv @ 2942 NONAME + _ZNK27QDeclarativeVisualItemModel7indexOfEP16QDeclarativeItemP7QObject @ 2943 NONAME + _ZNK27QDeclarativeVisualItemModel7isValidEv @ 2944 NONAME + _ZNK28QDeclarativeCustomParserNode10propertiesEv @ 2945 NONAME + _ZNK28QDeclarativeCustomParserNode4nameEv @ 2946 NONAME + _ZNK28QDeclarativeCustomParserNode8locationEv @ 2947 NONAME + _ZNK28QDeclarativeDebugObjectQuery10metaObjectEv @ 2948 NONAME + _ZNK28QDeclarativeDebugObjectQuery6objectEv @ 2949 NONAME + _ZNK28QDeclarativeXmlListModelRole10metaObjectEv @ 2950 NONAME + _ZNK29QDeclarativeDateTimeFormatter10dateFormatEv @ 2951 NONAME + _ZNK29QDeclarativeDateTimeFormatter10metaObjectEv @ 2952 NONAME + _ZNK29QDeclarativeDateTimeFormatter10timeFormatEv @ 2953 NONAME + _ZNK29QDeclarativeDateTimeFormatter12dateTimeTextEv @ 2954 NONAME + _ZNK29QDeclarativeDateTimeFormatter14dateTimeFormatEv @ 2955 NONAME + _ZNK29QDeclarativeDateTimeFormatter4dateEv @ 2956 NONAME + _ZNK29QDeclarativeDateTimeFormatter4timeEv @ 2957 NONAME + _ZNK29QDeclarativeDateTimeFormatter8dateTextEv @ 2958 NONAME + _ZNK29QDeclarativeDateTimeFormatter8dateTimeEv @ 2959 NONAME + _ZNK29QDeclarativeDateTimeFormatter8timeTextEv @ 2960 NONAME + _ZNK29QDeclarativeDateTimeFormatter9longStyleEv @ 2961 NONAME + _ZNK29QDeclarativeDebugEnginesQuery10metaObjectEv @ 2962 NONAME + _ZNK29QDeclarativeDebugEnginesQuery7enginesEv @ 2963 NONAME + _ZNK29QDeclarativeStateChangeScript10metaObjectEv @ 2964 NONAME + _ZNK29QDeclarativeStateChangeScript4nameEv @ 2965 NONAME + _ZNK29QDeclarativeStateChangeScript6scriptEv @ 2966 NONAME + _ZNK29QDeclarativeStateChangeScript8typeNameEv @ 2967 NONAME + _ZNK30QDeclarativeDebugFileReference10lineNumberEv @ 2968 NONAME + _ZNK30QDeclarativeDebugFileReference12columnNumberEv @ 2969 NONAME + _ZNK30QDeclarativeDebugFileReference3urlEv @ 2970 NONAME + _ZNK30QDeclarativeDebugPropertyWatch10metaObjectEv @ 2971 NONAME + _ZNK30QDeclarativeDebugPropertyWatch4nameEv @ 2972 NONAME + _ZNK30QDeclarativeDomDynamicProperty12defaultValueEv @ 2973 NONAME + _ZNK30QDeclarativeDomDynamicProperty12propertyNameEv @ 2974 NONAME + _ZNK30QDeclarativeDomDynamicProperty12propertyTypeEv @ 2975 NONAME + _ZNK30QDeclarativeDomDynamicProperty16propertyTypeNameEv @ 2976 NONAME + _ZNK30QDeclarativeDomDynamicProperty17isDefaultPropertyEv @ 2977 NONAME + _ZNK30QDeclarativeDomDynamicProperty6lengthEv @ 2978 NONAME + _ZNK30QDeclarativeDomDynamicProperty7isAliasEv @ 2979 NONAME + _ZNK30QDeclarativeDomDynamicProperty7isValidEv @ 2980 NONAME + _ZNK30QDeclarativeDomDynamicProperty8positionEv @ 2981 NONAME + _ZNK30QDeclarativeOpenMetaObjectType12signalOffsetEv @ 2982 NONAME + _ZNK30QDeclarativeOpenMetaObjectType14propertyOffsetEv @ 2983 NONAME + _ZNK31QDeclarativeDomValueValueSource6objectEv @ 2984 NONAME + _ZNK32QDeclarativeCustomParserProperty14assignedValuesEv @ 2985 NONAME + _ZNK32QDeclarativeCustomParserProperty4nameEv @ 2986 NONAME + _ZNK32QDeclarativeCustomParserProperty6isListEv @ 2987 NONAME + _ZNK32QDeclarativeCustomParserProperty8locationEv @ 2988 NONAME + _ZNK32QDeclarativeDebugEngineReference4nameEv @ 2989 NONAME + _ZNK32QDeclarativeDebugEngineReference7debugIdEv @ 2990 NONAME + _ZNK32QDeclarativeDebugExpressionQuery10expressionEv @ 2991 NONAME + _ZNK32QDeclarativeDebugExpressionQuery10metaObjectEv @ 2992 NONAME + _ZNK32QDeclarativeDebugExpressionQuery6resultEv @ 2993 NONAME + _ZNK32QDeclarativeDebugObjectReference10propertiesEv @ 2994 NONAME + _ZNK32QDeclarativeDebugObjectReference14contextDebugIdEv @ 2995 NONAME + _ZNK32QDeclarativeDebugObjectReference4nameEv @ 2996 NONAME + _ZNK32QDeclarativeDebugObjectReference6sourceEv @ 2997 NONAME + _ZNK32QDeclarativeDebugObjectReference7debugIdEv @ 2998 NONAME + _ZNK32QDeclarativeDebugObjectReference8childrenEv @ 2999 NONAME + _ZNK32QDeclarativeDebugObjectReference9classNameEv @ 3000 NONAME + _ZNK32QDeclarativeParticleMotionLinear10metaObjectEv @ 3001 NONAME + _ZNK32QDeclarativeParticleMotionWander10metaObjectEv @ 3002 NONAME + _ZNK33QDeclarativeDebugContextReference4nameEv @ 3003 NONAME + _ZNK33QDeclarativeDebugContextReference7debugIdEv @ 3004 NONAME + _ZNK33QDeclarativeDebugContextReference7objectsEv @ 3005 NONAME + _ZNK33QDeclarativeDebugContextReference8contextsEv @ 3006 NONAME + _ZNK33QDeclarativeDebugRootContextQuery10metaObjectEv @ 3007 NONAME + _ZNK33QDeclarativeDebugRootContextQuery11rootContextEv @ 3008 NONAME + _ZNK33QDeclarativeParticleMotionGravity10metaObjectEv @ 3009 NONAME + _ZNK34QDeclarativeDebugPropertyReference13objectDebugIdEv @ 3010 NONAME + _ZNK34QDeclarativeDebugPropertyReference13valueTypeNameEv @ 3011 NONAME + _ZNK34QDeclarativeDebugPropertyReference15hasNotifySignalEv @ 3012 NONAME + _ZNK34QDeclarativeDebugPropertyReference4nameEv @ 3013 NONAME + _ZNK34QDeclarativeDebugPropertyReference5valueEv @ 3014 NONAME + _ZNK34QDeclarativeDebugPropertyReference7bindingEv @ 3015 NONAME + _ZNK35QDeclarativeGraphicsObjectContainer10metaObjectEv @ 3016 NONAME + _ZNK35QDeclarativeGraphicsObjectContainer14graphicsObjectEv @ 3017 NONAME + _ZNK35QDeclarativeGraphicsObjectContainer20synchronizedResizingEv @ 3018 NONAME + _ZNK36QDeclarativeDomValueValueInterceptor6objectEv @ 3019 NONAME + _ZNK38QDeclarativeDebugObjectExpressionWatch10expressionEv @ 3020 NONAME + _ZNK38QDeclarativeDebugObjectExpressionWatch10metaObjectEv @ 3021 NONAME + _ZNK7QPacket7isEmptyEv @ 3022 NONAME + _ZTI15QDeclarativePen @ 3023 NONAME + _ZTI15QDeclarativeRow @ 3024 NONAME + _ZTI15QPacketAutoSend @ 3025 NONAME + _ZTI15QPacketProtocol @ 3026 NONAME + _ZTI16QDeclarativeBind @ 3027 NONAME + _ZTI16QDeclarativeDrag @ 3028 NONAME + _ZTI16QDeclarativeFlow @ 3029 NONAME + _ZTI16QDeclarativeGrid @ 3030 NONAME + _ZTI16QDeclarativeItem @ 3031 NONAME + _ZTI16QDeclarativePath @ 3032 NONAME + _ZTI16QDeclarativeText @ 3033 NONAME + _ZTI16QDeclarativeView @ 3034 NONAME + _ZTI17QDeclarativeCurve @ 3035 NONAME + _ZTI17QDeclarativeImage @ 3036 NONAME + _ZTI17QDeclarativeState @ 3037 NONAME + _ZTI17QDeclarativeTimer @ 3038 NONAME + _ZTI18QDeclarativeColumn @ 3039 NONAME + _ZTI18QDeclarativeEngine @ 3040 NONAME + _ZTI18QDeclarativeLoader @ 3041 NONAME + _ZTI18QMetaObjectBuilder @ 3042 NONAME + _ZTI19QDeclarativeAnchors @ 3043 NONAME + _ZTI19QDeclarativeContext @ 3044 NONAME + _ZTI19QDeclarativeWebPage @ 3045 NONAME + _ZTI19QDeclarativeWebView @ 3046 NONAME + _ZTI19QListModelInterface @ 3047 NONAME + _ZTI20QDeclarativeBehavior @ 3048 NONAME + _ZTI20QDeclarativeFlipable @ 3049 NONAME + _ZTI20QDeclarativeGradient @ 3050 NONAME + _ZTI20QDeclarativeGridView @ 3051 NONAME + _ZTI20QDeclarativeListView @ 3052 NONAME + _ZTI20QDeclarativePathLine @ 3053 NONAME + _ZTI20QDeclarativePathQuad @ 3054 NONAME + _ZTI20QDeclarativePathView @ 3055 NONAME + _ZTI20QDeclarativeRepeater @ 3056 NONAME + _ZTI20QDeclarativeTextEdit @ 3057 NONAME + _ZTI21QDeclarativeComponent @ 3058 NONAME + _ZTI21QDeclarativeFlickable @ 3059 NONAME + _ZTI21QDeclarativeImageBase @ 3060 NONAME + _ZTI21QDeclarativeListModel @ 3061 NONAME + _ZTI21QDeclarativeMouseArea @ 3062 NONAME + _ZTI21QDeclarativeParticles @ 3063 NONAME + _ZTI21QDeclarativePathCubic @ 3064 NONAME + _ZTI21QDeclarativeRectangle @ 3065 NONAME + _ZTI21QDeclarativeScaleGrid @ 3066 NONAME + _ZTI21QDeclarativeTextInput @ 3067 NONAME + _ZTI21QDeclarativeValueType @ 3068 NONAME + _ZTI22QDeclarativeDebugQuery @ 3069 NONAME + _ZTI22QDeclarativeDebugWatch @ 3070 NONAME + _ZTI22QDeclarativeEaseFollow @ 3071 NONAME + _ZTI22QDeclarativeExpression @ 3072 NONAME + _ZTI22QDeclarativeFocusPanel @ 3073 NONAME + _ZTI22QDeclarativeFocusScope @ 3074 NONAME + _ZTI22QDeclarativeFontLoader @ 3075 NONAME + _ZTI22QDeclarativeStateGroup @ 3076 NONAME + _ZTI22QDeclarativeTransition @ 3077 NONAME + _ZTI23QDeclarativeBorderImage @ 3078 NONAME + _ZTI23QDeclarativeConnections @ 3079 NONAME + _ZTI23QDeclarativeDebugClient @ 3080 NONAME + _ZTI23QDeclarativeEngineDebug @ 3081 NONAME + _ZTI23QDeclarativePaintedItem @ 3082 NONAME + _ZTI23QDeclarativePathElement @ 3083 NONAME + _ZTI23QDeclarativePathPercent @ 3084 NONAME + _ZTI23QDeclarativePixmapReply @ 3085 NONAME + _ZTI23QDeclarativePropertyMap @ 3086 NONAME + _ZTI23QDeclarativeViewSection @ 3087 NONAME + _ZTI23QDeclarativeVisualModel @ 3088 NONAME + _ZTI24QDeclarativeCustomParser @ 3089 NONAME + _ZTI24QDeclarativeDebugService @ 3090 NONAME + _ZTI24QDeclarativeGradientStop @ 3091 NONAME + _ZTI24QDeclarativeParentChange @ 3092 NONAME + _ZTI24QDeclarativeParserStatus @ 3093 NONAME + _ZTI24QDeclarativeSpringFollow @ 3094 NONAME + _ZTI24QDeclarativeXmlListModel @ 3095 NONAME + _ZTI25QDeclarativeAnchorChanges @ 3096 NONAME + _ZTI25QDeclarativeAnimatedImage @ 3097 NONAME + _ZTI25QDeclarativeImageProvider @ 3098 NONAME + _ZTI25QDeclarativePathAttribute @ 3099 NONAME + _ZTI25QDeclarativeSystemPalette @ 3100 NONAME + _ZTI26QDeclarativeBasePositioner @ 3101 NONAME + _ZTI26QDeclarativeContextPrivate @ 3102 NONAME + _ZTI26QDeclarativeDebuggerStatus @ 3103 NONAME + _ZTI26QDeclarativeOpenMetaObject @ 3104 NONAME + _ZTI26QDeclarativeParticleMotion @ 3105 NONAME + _ZTI26QDeclarativeStateOperation @ 3106 NONAME + _ZTI27QDeclarativeDebugConnection @ 3107 NONAME + _ZTI27QDeclarativeExtensionPlugin @ 3108 NONAME + _ZTI27QDeclarativeNumberFormatter @ 3109 NONAME + _ZTI27QDeclarativePropertyChanges @ 3110 NONAME + _ZTI27QDeclarativeVisualDataModel @ 3111 NONAME + _ZTI27QDeclarativeVisualItemModel @ 3112 NONAME + _ZTI28QDeclarativeDebugObjectQuery @ 3113 NONAME + _ZTI28QDeclarativeXmlListModelRole @ 3114 NONAME + _ZTI29QDeclarativeDateTimeFormatter @ 3115 NONAME + _ZTI29QDeclarativeDebugEnginesQuery @ 3116 NONAME + _ZTI29QDeclarativeStateChangeScript @ 3117 NONAME + _ZTI30QDeclarativeDebugPropertyWatch @ 3118 NONAME + _ZTI30QDeclarativeExtensionInterface @ 3119 NONAME + _ZTI30QDeclarativeOpenMetaObjectType @ 3120 NONAME + _ZTI31QDeclarativePropertyValueSource @ 3121 NONAME + _ZTI32QDeclarativeDebugExpressionQuery @ 3122 NONAME + _ZTI32QDeclarativeParticleMotionLinear @ 3123 NONAME + _ZTI32QDeclarativeParticleMotionWander @ 3124 NONAME + _ZTI33QDeclarativeDebugRootContextQuery @ 3125 NONAME + _ZTI33QDeclarativeParticleMotionGravity @ 3126 NONAME + _ZTI35QDeclarativeGraphicsObjectContainer @ 3127 NONAME + _ZTI36QDeclarativePropertyValueInterceptor @ 3128 NONAME + _ZTI38QDeclarativeDebugObjectExpressionWatch @ 3129 NONAME + _ZTI39QDeclarativeNetworkAccessManagerFactory @ 3130 NONAME + _ZTI7QPacket @ 3131 NONAME + _ZTV15QDeclarativePen @ 3132 NONAME + _ZTV15QDeclarativeRow @ 3133 NONAME + _ZTV15QPacketAutoSend @ 3134 NONAME + _ZTV15QPacketProtocol @ 3135 NONAME + _ZTV16QDeclarativeBind @ 3136 NONAME + _ZTV16QDeclarativeDrag @ 3137 NONAME + _ZTV16QDeclarativeFlow @ 3138 NONAME + _ZTV16QDeclarativeGrid @ 3139 NONAME + _ZTV16QDeclarativeItem @ 3140 NONAME + _ZTV16QDeclarativePath @ 3141 NONAME + _ZTV16QDeclarativeText @ 3142 NONAME + _ZTV16QDeclarativeView @ 3143 NONAME + _ZTV17QDeclarativeCurve @ 3144 NONAME + _ZTV17QDeclarativeImage @ 3145 NONAME + _ZTV17QDeclarativeState @ 3146 NONAME + _ZTV17QDeclarativeTimer @ 3147 NONAME + _ZTV18QDeclarativeColumn @ 3148 NONAME + _ZTV18QDeclarativeEngine @ 3149 NONAME + _ZTV18QDeclarativeLoader @ 3150 NONAME + _ZTV18QMetaObjectBuilder @ 3151 NONAME + _ZTV19QDeclarativeAnchors @ 3152 NONAME + _ZTV19QDeclarativeContext @ 3153 NONAME + _ZTV19QDeclarativeWebPage @ 3154 NONAME + _ZTV19QDeclarativeWebView @ 3155 NONAME + _ZTV19QListModelInterface @ 3156 NONAME + _ZTV20QDeclarativeBehavior @ 3157 NONAME + _ZTV20QDeclarativeFlipable @ 3158 NONAME + _ZTV20QDeclarativeGradient @ 3159 NONAME + _ZTV20QDeclarativeGridView @ 3160 NONAME + _ZTV20QDeclarativeListView @ 3161 NONAME + _ZTV20QDeclarativePathLine @ 3162 NONAME + _ZTV20QDeclarativePathQuad @ 3163 NONAME + _ZTV20QDeclarativePathView @ 3164 NONAME + _ZTV20QDeclarativeRepeater @ 3165 NONAME + _ZTV20QDeclarativeTextEdit @ 3166 NONAME + _ZTV21QDeclarativeComponent @ 3167 NONAME + _ZTV21QDeclarativeFlickable @ 3168 NONAME + _ZTV21QDeclarativeImageBase @ 3169 NONAME + _ZTV21QDeclarativeListModel @ 3170 NONAME + _ZTV21QDeclarativeMouseArea @ 3171 NONAME + _ZTV21QDeclarativeParticles @ 3172 NONAME + _ZTV21QDeclarativePathCubic @ 3173 NONAME + _ZTV21QDeclarativeRectangle @ 3174 NONAME + _ZTV21QDeclarativeScaleGrid @ 3175 NONAME + _ZTV21QDeclarativeTextInput @ 3176 NONAME + _ZTV21QDeclarativeValueType @ 3177 NONAME + _ZTV22QDeclarativeDebugQuery @ 3178 NONAME + _ZTV22QDeclarativeDebugWatch @ 3179 NONAME + _ZTV22QDeclarativeEaseFollow @ 3180 NONAME + _ZTV22QDeclarativeExpression @ 3181 NONAME + _ZTV22QDeclarativeFocusPanel @ 3182 NONAME + _ZTV22QDeclarativeFocusScope @ 3183 NONAME + _ZTV22QDeclarativeFontLoader @ 3184 NONAME + _ZTV22QDeclarativeStateGroup @ 3185 NONAME + _ZTV22QDeclarativeTransition @ 3186 NONAME + _ZTV23QDeclarativeBorderImage @ 3187 NONAME + _ZTV23QDeclarativeConnections @ 3188 NONAME + _ZTV23QDeclarativeDebugClient @ 3189 NONAME + _ZTV23QDeclarativeEngineDebug @ 3190 NONAME + _ZTV23QDeclarativePaintedItem @ 3191 NONAME + _ZTV23QDeclarativePathElement @ 3192 NONAME + _ZTV23QDeclarativePathPercent @ 3193 NONAME + _ZTV23QDeclarativePixmapReply @ 3194 NONAME + _ZTV23QDeclarativePropertyMap @ 3195 NONAME + _ZTV23QDeclarativeViewSection @ 3196 NONAME + _ZTV23QDeclarativeVisualModel @ 3197 NONAME + _ZTV24QDeclarativeCustomParser @ 3198 NONAME + _ZTV24QDeclarativeDebugService @ 3199 NONAME + _ZTV24QDeclarativeGradientStop @ 3200 NONAME + _ZTV24QDeclarativeParentChange @ 3201 NONAME + _ZTV24QDeclarativeParserStatus @ 3202 NONAME + _ZTV24QDeclarativeSpringFollow @ 3203 NONAME + _ZTV24QDeclarativeXmlListModel @ 3204 NONAME + _ZTV25QDeclarativeAnchorChanges @ 3205 NONAME + _ZTV25QDeclarativeAnimatedImage @ 3206 NONAME + _ZTV25QDeclarativeImageProvider @ 3207 NONAME + _ZTV25QDeclarativePathAttribute @ 3208 NONAME + _ZTV25QDeclarativeSystemPalette @ 3209 NONAME + _ZTV26QDeclarativeBasePositioner @ 3210 NONAME + _ZTV26QDeclarativeContextPrivate @ 3211 NONAME + _ZTV26QDeclarativeDebuggerStatus @ 3212 NONAME + _ZTV26QDeclarativeOpenMetaObject @ 3213 NONAME + _ZTV26QDeclarativeParticleMotion @ 3214 NONAME + _ZTV26QDeclarativeStateOperation @ 3215 NONAME + _ZTV27QDeclarativeDebugConnection @ 3216 NONAME + _ZTV27QDeclarativeExtensionPlugin @ 3217 NONAME + _ZTV27QDeclarativeNumberFormatter @ 3218 NONAME + _ZTV27QDeclarativePropertyChanges @ 3219 NONAME + _ZTV27QDeclarativeVisualDataModel @ 3220 NONAME + _ZTV27QDeclarativeVisualItemModel @ 3221 NONAME + _ZTV28QDeclarativeDebugObjectQuery @ 3222 NONAME + _ZTV28QDeclarativeXmlListModelRole @ 3223 NONAME + _ZTV29QDeclarativeDateTimeFormatter @ 3224 NONAME + _ZTV29QDeclarativeDebugEnginesQuery @ 3225 NONAME + _ZTV29QDeclarativeStateChangeScript @ 3226 NONAME + _ZTV30QDeclarativeDebugPropertyWatch @ 3227 NONAME + _ZTV30QDeclarativeOpenMetaObjectType @ 3228 NONAME + _ZTV31QDeclarativePropertyValueSource @ 3229 NONAME + _ZTV32QDeclarativeDebugExpressionQuery @ 3230 NONAME + _ZTV32QDeclarativeParticleMotionLinear @ 3231 NONAME + _ZTV32QDeclarativeParticleMotionWander @ 3232 NONAME + _ZTV33QDeclarativeDebugRootContextQuery @ 3233 NONAME + _ZTV33QDeclarativeParticleMotionGravity @ 3234 NONAME + _ZTV35QDeclarativeGraphicsObjectContainer @ 3235 NONAME + _ZTV36QDeclarativePropertyValueInterceptor @ 3236 NONAME + _ZTV38QDeclarativeDebugObjectExpressionWatch @ 3237 NONAME + _ZTV39QDeclarativeNetworkAccessManagerFactory @ 3238 NONAME + _ZTV7QPacket @ 3239 NONAME + _ZThn16_N16QDeclarativeItem10classBeginEv @ 3240 NONAME + _ZThn16_N16QDeclarativeItem17componentCompleteEv @ 3241 NONAME + _ZThn16_N16QDeclarativeItemD0Ev @ 3242 NONAME + _ZThn16_N16QDeclarativeItemD1Ev @ 3243 NONAME + _ZThn16_N16QDeclarativeText17componentCompleteEv @ 3244 NONAME + _ZThn16_N16QDeclarativeTextD0Ev @ 3245 NONAME + _ZThn16_N16QDeclarativeTextD1Ev @ 3246 NONAME + _ZThn16_N17QDeclarativeImageD0Ev @ 3247 NONAME + _ZThn16_N17QDeclarativeImageD1Ev @ 3248 NONAME + _ZThn16_N18QDeclarativeLoaderD0Ev @ 3249 NONAME + _ZThn16_N18QDeclarativeLoaderD1Ev @ 3250 NONAME + _ZThn16_N19QDeclarativeWebView17componentCompleteEv @ 3251 NONAME + _ZThn16_N19QDeclarativeWebViewD0Ev @ 3252 NONAME + _ZThn16_N19QDeclarativeWebViewD1Ev @ 3253 NONAME + _ZThn16_N20QDeclarativeFlipableD0Ev @ 3254 NONAME + _ZThn16_N20QDeclarativeFlipableD1Ev @ 3255 NONAME + _ZThn16_N20QDeclarativeGridView17componentCompleteEv @ 3256 NONAME + _ZThn16_N20QDeclarativeGridViewD0Ev @ 3257 NONAME + _ZThn16_N20QDeclarativeGridViewD1Ev @ 3258 NONAME + _ZThn16_N20QDeclarativeListView17componentCompleteEv @ 3259 NONAME + _ZThn16_N20QDeclarativeListViewD0Ev @ 3260 NONAME + _ZThn16_N20QDeclarativeListViewD1Ev @ 3261 NONAME + _ZThn16_N20QDeclarativePathView17componentCompleteEv @ 3262 NONAME + _ZThn16_N20QDeclarativePathViewD0Ev @ 3263 NONAME + _ZThn16_N20QDeclarativePathViewD1Ev @ 3264 NONAME + _ZThn16_N20QDeclarativeRepeater17componentCompleteEv @ 3265 NONAME + _ZThn16_N20QDeclarativeRepeaterD0Ev @ 3266 NONAME + _ZThn16_N20QDeclarativeRepeaterD1Ev @ 3267 NONAME + _ZThn16_N20QDeclarativeTextEdit17componentCompleteEv @ 3268 NONAME + _ZThn16_N21QDeclarativeFlickableD0Ev @ 3269 NONAME + _ZThn16_N21QDeclarativeFlickableD1Ev @ 3270 NONAME + _ZThn16_N21QDeclarativeImageBase17componentCompleteEv @ 3271 NONAME + _ZThn16_N21QDeclarativeImageBaseD0Ev @ 3272 NONAME + _ZThn16_N21QDeclarativeImageBaseD1Ev @ 3273 NONAME + _ZThn16_N21QDeclarativeMouseAreaD0Ev @ 3274 NONAME + _ZThn16_N21QDeclarativeMouseAreaD1Ev @ 3275 NONAME + _ZThn16_N21QDeclarativeParticles17componentCompleteEv @ 3276 NONAME + _ZThn16_N21QDeclarativeParticlesD0Ev @ 3277 NONAME + _ZThn16_N21QDeclarativeParticlesD1Ev @ 3278 NONAME + _ZThn16_N21QDeclarativeTextInputD0Ev @ 3279 NONAME + _ZThn16_N21QDeclarativeTextInputD1Ev @ 3280 NONAME + _ZThn16_N22QDeclarativeFocusPanelD0Ev @ 3281 NONAME + _ZThn16_N22QDeclarativeFocusPanelD1Ev @ 3282 NONAME + _ZThn16_N22QDeclarativeFocusScopeD0Ev @ 3283 NONAME + _ZThn16_N22QDeclarativeFocusScopeD1Ev @ 3284 NONAME + _ZThn16_N23QDeclarativeBorderImageD0Ev @ 3285 NONAME + _ZThn16_N23QDeclarativeBorderImageD1Ev @ 3286 NONAME + _ZThn16_N23QDeclarativePaintedItemD0Ev @ 3287 NONAME + _ZThn16_N23QDeclarativePaintedItemD1Ev @ 3288 NONAME + _ZThn16_N25QDeclarativeAnimatedImage17componentCompleteEv @ 3289 NONAME + _ZThn16_N25QDeclarativeAnimatedImageD0Ev @ 3290 NONAME + _ZThn16_N25QDeclarativeAnimatedImageD1Ev @ 3291 NONAME + _ZThn16_N26QDeclarativeBasePositioner17componentCompleteEv @ 3292 NONAME + _ZThn16_N26QDeclarativeBasePositionerD0Ev @ 3293 NONAME + _ZThn16_N26QDeclarativeBasePositionerD1Ev @ 3294 NONAME + _ZThn16_N35QDeclarativeGraphicsObjectContainerD0Ev @ 3295 NONAME + _ZThn16_N35QDeclarativeGraphicsObjectContainerD1Ev @ 3296 NONAME + _ZThn8_N16QDeclarativeBind17componentCompleteEv @ 3297 NONAME + _ZThn8_N16QDeclarativeBindD0Ev @ 3298 NONAME + _ZThn8_N16QDeclarativeBindD1Ev @ 3299 NONAME + _ZThn8_N16QDeclarativeItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3300 NONAME + _ZThn8_N16QDeclarativeItem10sceneEventEP6QEvent @ 3301 NONAME + _ZThn8_N16QDeclarativeItem13keyPressEventEP9QKeyEvent @ 3302 NONAME + _ZThn8_N16QDeclarativeItem15keyReleaseEventEP9QKeyEvent @ 3303 NONAME + _ZThn8_N16QDeclarativeItem16inputMethodEventEP17QInputMethodEvent @ 3304 NONAME + _ZThn8_N16QDeclarativeItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3305 NONAME + _ZThn8_N16QDeclarativeItemD0Ev @ 3306 NONAME + _ZThn8_N16QDeclarativeItemD1Ev @ 3307 NONAME + _ZThn8_N16QDeclarativePath17componentCompleteEv @ 3308 NONAME + _ZThn8_N16QDeclarativePathD0Ev @ 3309 NONAME + _ZThn8_N16QDeclarativePathD1Ev @ 3310 NONAME + _ZThn8_N16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 3311 NONAME + _ZThn8_N16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3312 NONAME + _ZThn8_N16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3313 NONAME + _ZThn8_N16QDeclarativeTextD0Ev @ 3314 NONAME + _ZThn8_N16QDeclarativeTextD1Ev @ 3315 NONAME + _ZThn8_N16QDeclarativeViewD0Ev @ 3316 NONAME + _ZThn8_N16QDeclarativeViewD1Ev @ 3317 NONAME + _ZThn8_N17QDeclarativeImage5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3318 NONAME + _ZThn8_N17QDeclarativeImageD0Ev @ 3319 NONAME + _ZThn8_N17QDeclarativeImageD1Ev @ 3320 NONAME + _ZThn8_N17QDeclarativeTimer10classBeginEv @ 3321 NONAME + _ZThn8_N17QDeclarativeTimer17componentCompleteEv @ 3322 NONAME + _ZThn8_N18QDeclarativeLoader10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3323 NONAME + _ZThn8_N18QDeclarativeLoaderD0Ev @ 3324 NONAME + _ZThn8_N18QDeclarativeLoaderD1Ev @ 3325 NONAME + _ZThn8_N19QDeclarativeWebView10sceneEventEP6QEvent @ 3326 NONAME + _ZThn8_N19QDeclarativeWebView13keyPressEventEP9QKeyEvent @ 3327 NONAME + _ZThn8_N19QDeclarativeWebView14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 3328 NONAME + _ZThn8_N19QDeclarativeWebView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3329 NONAME + _ZThn8_N19QDeclarativeWebView15keyReleaseEventEP9QKeyEvent @ 3330 NONAME + _ZThn8_N19QDeclarativeWebView15mousePressEventEP24QGraphicsSceneMouseEvent @ 3331 NONAME + _ZThn8_N19QDeclarativeWebView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3332 NONAME + _ZThn8_N19QDeclarativeWebView21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 3333 NONAME + _ZThn8_N19QDeclarativeWebViewD0Ev @ 3334 NONAME + _ZThn8_N19QDeclarativeWebViewD1Ev @ 3335 NONAME + _ZThn8_N20QDeclarativeBehavior5writeERK8QVariant @ 3336 NONAME + _ZThn8_N20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 3337 NONAME + _ZThn8_N20QDeclarativeBehaviorD0Ev @ 3338 NONAME + _ZThn8_N20QDeclarativeBehaviorD1Ev @ 3339 NONAME + _ZThn8_N20QDeclarativeFlipableD0Ev @ 3340 NONAME + _ZThn8_N20QDeclarativeFlipableD1Ev @ 3341 NONAME + _ZThn8_N20QDeclarativeGridView13keyPressEventEP9QKeyEvent @ 3342 NONAME + _ZThn8_N20QDeclarativeGridViewD0Ev @ 3343 NONAME + _ZThn8_N20QDeclarativeGridViewD1Ev @ 3344 NONAME + _ZThn8_N20QDeclarativeListView13keyPressEventEP9QKeyEvent @ 3345 NONAME + _ZThn8_N20QDeclarativeListViewD0Ev @ 3346 NONAME + _ZThn8_N20QDeclarativeListViewD1Ev @ 3347 NONAME + _ZThn8_N20QDeclarativePathView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3348 NONAME + _ZThn8_N20QDeclarativePathView15mousePressEventEP24QGraphicsSceneMouseEvent @ 3349 NONAME + _ZThn8_N20QDeclarativePathView16sceneEventFilterEP13QGraphicsItemP6QEvent @ 3350 NONAME + _ZThn8_N20QDeclarativePathView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3351 NONAME + _ZThn8_N20QDeclarativePathViewD0Ev @ 3352 NONAME + _ZThn8_N20QDeclarativePathViewD1Ev @ 3353 NONAME + _ZThn8_N20QDeclarativeRepeater10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3354 NONAME + _ZThn8_N20QDeclarativeRepeaterD0Ev @ 3355 NONAME + _ZThn8_N20QDeclarativeRepeaterD1Ev @ 3356 NONAME + _ZThn8_N20QDeclarativeTextEdit13keyPressEventEP9QKeyEvent @ 3357 NONAME + _ZThn8_N20QDeclarativeTextEdit14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3358 NONAME + _ZThn8_N20QDeclarativeTextEdit15keyReleaseEventEP9QKeyEvent @ 3359 NONAME + _ZThn8_N20QDeclarativeTextEdit15mousePressEventEP24QGraphicsSceneMouseEvent @ 3360 NONAME + _ZThn8_N20QDeclarativeTextEdit16inputMethodEventEP17QInputMethodEvent @ 3361 NONAME + _ZThn8_N20QDeclarativeTextEdit17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3362 NONAME + _ZThn8_N20QDeclarativeTextEdit21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 3363 NONAME + _ZThn8_N21QDeclarativeFlickable10wheelEventEP24QGraphicsSceneWheelEvent @ 3364 NONAME + _ZThn8_N21QDeclarativeFlickable14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3365 NONAME + _ZThn8_N21QDeclarativeFlickable15mousePressEventEP24QGraphicsSceneMouseEvent @ 3366 NONAME + _ZThn8_N21QDeclarativeFlickable16sceneEventFilterEP13QGraphicsItemP6QEvent @ 3367 NONAME + _ZThn8_N21QDeclarativeFlickable17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3368 NONAME + _ZThn8_N21QDeclarativeFlickableD0Ev @ 3369 NONAME + _ZThn8_N21QDeclarativeFlickableD1Ev @ 3370 NONAME + _ZThn8_N21QDeclarativeImageBaseD0Ev @ 3371 NONAME + _ZThn8_N21QDeclarativeImageBaseD1Ev @ 3372 NONAME + _ZThn8_N21QDeclarativeMouseArea10sceneEventEP6QEvent @ 3373 NONAME + _ZThn8_N21QDeclarativeMouseArea14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 3374 NONAME + _ZThn8_N21QDeclarativeMouseArea14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3375 NONAME + _ZThn8_N21QDeclarativeMouseArea15hoverEnterEventEP24QGraphicsSceneHoverEvent @ 3376 NONAME + _ZThn8_N21QDeclarativeMouseArea15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 3377 NONAME + _ZThn8_N21QDeclarativeMouseArea15mousePressEventEP24QGraphicsSceneMouseEvent @ 3378 NONAME + _ZThn8_N21QDeclarativeMouseArea17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3379 NONAME + _ZThn8_N21QDeclarativeMouseArea21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 3380 NONAME + _ZThn8_N21QDeclarativeMouseAreaD0Ev @ 3381 NONAME + _ZThn8_N21QDeclarativeMouseAreaD1Ev @ 3382 NONAME + _ZThn8_N21QDeclarativeParticles5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3383 NONAME + _ZThn8_N21QDeclarativeParticlesD0Ev @ 3384 NONAME + _ZThn8_N21QDeclarativeParticlesD1Ev @ 3385 NONAME + _ZThn8_N21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3386 NONAME + _ZThn8_N21QDeclarativeTextInput13keyPressEventEP9QKeyEvent @ 3387 NONAME + _ZThn8_N21QDeclarativeTextInput15mousePressEventEP24QGraphicsSceneMouseEvent @ 3388 NONAME + _ZThn8_N21QDeclarativeTextInput17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3389 NONAME + _ZThn8_N21QDeclarativeTextInputD0Ev @ 3390 NONAME + _ZThn8_N21QDeclarativeTextInputD1Ev @ 3391 NONAME + _ZThn8_N22QDeclarativeEaseFollow9setTargetERK20QDeclarativeProperty @ 3392 NONAME + _ZThn8_N22QDeclarativeEaseFollowD0Ev @ 3393 NONAME + _ZThn8_N22QDeclarativeEaseFollowD1Ev @ 3394 NONAME + _ZThn8_N22QDeclarativeFocusPanel10sceneEventEP6QEvent @ 3395 NONAME + _ZThn8_N22QDeclarativeFocusPanelD0Ev @ 3396 NONAME + _ZThn8_N22QDeclarativeFocusPanelD1Ev @ 3397 NONAME + _ZThn8_N22QDeclarativeFocusScopeD0Ev @ 3398 NONAME + _ZThn8_N22QDeclarativeFocusScopeD1Ev @ 3399 NONAME + _ZThn8_N22QDeclarativeStateGroup10classBeginEv @ 3400 NONAME + _ZThn8_N22QDeclarativeStateGroup17componentCompleteEv @ 3401 NONAME + _ZThn8_N22QDeclarativeStateGroupD0Ev @ 3402 NONAME + _ZThn8_N22QDeclarativeStateGroupD1Ev @ 3403 NONAME + _ZThn8_N23QDeclarativeBorderImage5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3404 NONAME + _ZThn8_N23QDeclarativeBorderImageD0Ev @ 3405 NONAME + _ZThn8_N23QDeclarativeBorderImageD1Ev @ 3406 NONAME + _ZThn8_N23QDeclarativeConnections17componentCompleteEv @ 3407 NONAME + _ZThn8_N23QDeclarativeConnectionsD0Ev @ 3408 NONAME + _ZThn8_N23QDeclarativeConnectionsD1Ev @ 3409 NONAME + _ZThn8_N23QDeclarativePaintedItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3410 NONAME + _ZThn8_N23QDeclarativePaintedItemD0Ev @ 3411 NONAME + _ZThn8_N23QDeclarativePaintedItemD1Ev @ 3412 NONAME + _ZThn8_N24QDeclarativeParentChange12isReversableEv @ 3413 NONAME + _ZThn8_N24QDeclarativeParentChange13saveOriginalsEv @ 3414 NONAME + _ZThn8_N24QDeclarativeParentChange17saveCurrentValuesEv @ 3415 NONAME + _ZThn8_N24QDeclarativeParentChange6rewindEv @ 3416 NONAME + _ZThn8_N24QDeclarativeParentChange7executeEv @ 3417 NONAME + _ZThn8_N24QDeclarativeParentChange7reverseEv @ 3418 NONAME + _ZThn8_N24QDeclarativeParentChange8overrideEP23QDeclarativeActionEvent @ 3419 NONAME + _ZThn8_N24QDeclarativeParentChangeD0Ev @ 3420 NONAME + _ZThn8_N24QDeclarativeParentChangeD1Ev @ 3421 NONAME + _ZThn8_N24QDeclarativeSpringFollow9setTargetERK20QDeclarativeProperty @ 3422 NONAME + _ZThn8_N24QDeclarativeSpringFollowD0Ev @ 3423 NONAME + _ZThn8_N24QDeclarativeSpringFollowD1Ev @ 3424 NONAME + _ZThn8_N24QDeclarativeXmlListModel10classBeginEv @ 3425 NONAME + _ZThn8_N24QDeclarativeXmlListModel17componentCompleteEv @ 3426 NONAME + _ZThn8_N24QDeclarativeXmlListModelD0Ev @ 3427 NONAME + _ZThn8_N24QDeclarativeXmlListModelD1Ev @ 3428 NONAME + _ZThn8_N25QDeclarativeAnchorChanges12extraActionsEv @ 3429 NONAME + _ZThn8_N25QDeclarativeAnchorChanges12isReversableEv @ 3430 NONAME + _ZThn8_N25QDeclarativeAnchorChanges13saveOriginalsEv @ 3431 NONAME + _ZThn8_N25QDeclarativeAnchorChanges15changesBindingsEv @ 3432 NONAME + _ZThn8_N25QDeclarativeAnchorChanges17saveCurrentValuesEv @ 3433 NONAME + _ZThn8_N25QDeclarativeAnchorChanges20clearForwardBindingsEv @ 3434 NONAME + _ZThn8_N25QDeclarativeAnchorChanges20clearReverseBindingsEv @ 3435 NONAME + _ZThn8_N25QDeclarativeAnchorChanges6rewindEv @ 3436 NONAME + _ZThn8_N25QDeclarativeAnchorChanges7executeEv @ 3437 NONAME + _ZThn8_N25QDeclarativeAnchorChanges7reverseEv @ 3438 NONAME + _ZThn8_N25QDeclarativeAnchorChanges8overrideEP23QDeclarativeActionEvent @ 3439 NONAME + _ZThn8_N25QDeclarativeAnchorChangesD0Ev @ 3440 NONAME + _ZThn8_N25QDeclarativeAnchorChangesD1Ev @ 3441 NONAME + _ZThn8_N25QDeclarativeAnimatedImageD0Ev @ 3442 NONAME + _ZThn8_N25QDeclarativeAnimatedImageD1Ev @ 3443 NONAME + _ZThn8_N26QDeclarativeBasePositioner10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3444 NONAME + _ZThn8_N26QDeclarativeBasePositionerD0Ev @ 3445 NONAME + _ZThn8_N26QDeclarativeBasePositionerD1Ev @ 3446 NONAME + _ZThn8_N27QDeclarativeExtensionPlugin16initializeEngineEP18QDeclarativeEnginePKc @ 3447 NONAME + _ZThn8_N27QDeclarativeExtensionPluginD0Ev @ 3448 NONAME + _ZThn8_N27QDeclarativeExtensionPluginD1Ev @ 3449 NONAME + _ZThn8_N27QDeclarativeNumberFormatter10classBeginEv @ 3450 NONAME + _ZThn8_N27QDeclarativeNumberFormatter17componentCompleteEv @ 3451 NONAME + _ZThn8_N27QDeclarativeNumberFormatterD0Ev @ 3452 NONAME + _ZThn8_N27QDeclarativeNumberFormatterD1Ev @ 3453 NONAME + _ZThn8_N29QDeclarativeDateTimeFormatter10classBeginEv @ 3454 NONAME + _ZThn8_N29QDeclarativeDateTimeFormatter17componentCompleteEv @ 3455 NONAME + _ZThn8_N29QDeclarativeDateTimeFormatterD0Ev @ 3456 NONAME + _ZThn8_N29QDeclarativeDateTimeFormatterD1Ev @ 3457 NONAME + _ZThn8_N29QDeclarativeStateChangeScript7executeEv @ 3458 NONAME + _ZThn8_N29QDeclarativeStateChangeScriptD0Ev @ 3459 NONAME + _ZThn8_N29QDeclarativeStateChangeScriptD1Ev @ 3460 NONAME + _ZThn8_N35QDeclarativeGraphicsObjectContainer10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3461 NONAME + _ZThn8_N35QDeclarativeGraphicsObjectContainerD0Ev @ 3462 NONAME + _ZThn8_N35QDeclarativeGraphicsObjectContainerD1Ev @ 3463 NONAME + _ZThn8_NK16QDeclarativeItem12boundingRectEv @ 3464 NONAME + _ZThn8_NK16QDeclarativeItem16inputMethodQueryEN2Qt16InputMethodQueryE @ 3465 NONAME + _ZThn8_NK20QDeclarativeTextEdit16inputMethodQueryEN2Qt16InputMethodQueryE @ 3466 NONAME + _ZThn8_NK21QDeclarativeRectangle12boundingRectEv @ 3467 NONAME + _ZThn8_NK21QDeclarativeTextInput16inputMethodQueryEN2Qt16InputMethodQueryE @ 3468 NONAME + _ZThn8_NK24QDeclarativeParentChange8typeNameEv @ 3469 NONAME + _ZThn8_NK25QDeclarativeAnchorChanges8typeNameEv @ 3470 NONAME + _ZThn8_NK29QDeclarativeStateChangeScript8typeNameEv @ 3471 NONAME + _Zls6QDebugP16QDeclarativeItem @ 3472 NONAME + _Zls6QDebugRK17QDeclarativeError @ 3473 NONAME + _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 3474 NONAME + _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 3475 NONAME + _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 3476 NONAME + _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 3477 NONAME + diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def index 5cf700b..b82fe4c 100644 --- a/src/s60installs/eabi/QtGuiu.def +++ b/src/s60installs/eabi/QtGuiu.def @@ -1,7 +1,7 @@ EXPORTS _Z11qFadeEffectP7QWidgeti @ 1 NONAME _Z11qt_image_idRK6QImage @ 2 NONAME - _Z12qDrawPixmapsP8QPainterPKN12QDrawPixmaps4DataEiRK7QPixmap6QFlagsINS1_11DrawingHintEE @ 3 NONAME + _Z12qDrawPixmapsP8QPainterPKN12QDrawPixmaps4DataEiRK7QPixmap6QFlagsINS1_11DrawingHintEE @ 3 NONAME ABSENT _Z12qt_pixmap_idRK7QPixmap @ 4 NONAME _Z13qDrawWinPanelP8QPainterRK5QRectRK8QPalettebPK6QBrush @ 5 NONAME _Z13qDrawWinPanelP8QPainteriiiiRK8QPalettebPK6QBrush @ 6 NONAME @@ -2906,7 +2906,7 @@ EXPORTS _ZN14QPaintEngineEx10drawPointsEPK7QPointFi @ 2905 NONAME _ZN14QPaintEngineEx11drawEllipseERK5QRect @ 2906 NONAME _ZN14QPaintEngineEx11drawEllipseERK6QRectF @ 2907 NONAME - _ZN14QPaintEngineEx11drawPixmapsEPKN12QDrawPixmaps4DataEiRK7QPixmap6QFlagsINS0_11DrawingHintEE @ 2908 NONAME + _ZN14QPaintEngineEx11drawPixmapsEPKN12QDrawPixmaps4DataEiRK7QPixmap6QFlagsINS0_11DrawingHintEE @ 2908 NONAME ABSENT _ZN14QPaintEngineEx11drawPolygonEPK6QPointiN12QPaintEngine15PolygonDrawModeE @ 2909 NONAME _ZN14QPaintEngineEx11drawPolygonEPK7QPointFiN12QPaintEngine15PolygonDrawModeE @ 2910 NONAME _ZN14QPaintEngineEx11updateStateERK17QPaintEngineState @ 2911 NONAME @@ -4223,7 +4223,7 @@ EXPORTS _ZN18QTextBlockUserDataD0Ev @ 4222 NONAME _ZN18QTextBlockUserDataD1Ev @ 4223 NONAME _ZN18QTextBlockUserDataD2Ev @ 4224 NONAME - _ZN18QTextureGlyphCache8populateERK12QTextItemIntRK15QVarLengthArrayIjLi256EERKS3_I11QFixedPointLi256EE @ 4225 NONAME + _ZN18QTextureGlyphCache8populateERK12QTextItemIntRK15QVarLengthArrayIjLi256EERKS3_I11QFixedPointLi256EE @ 4225 NONAME ABSENT _ZN19QAbstractProxyModel11qt_metacallEN11QMetaObject4CallEiPPv @ 4226 NONAME _ZN19QAbstractProxyModel11qt_metacastEPKc @ 4227 NONAME _ZN19QAbstractProxyModel13setHeaderDataEiN2Qt11OrientationERK8QVarianti @ 4228 NONAME @@ -11805,4 +11805,125 @@ EXPORTS _ZN24QImagePixmapCleanupHooks34executePixmapDataModificationHooksEP11QPixmapData @ 11804 NONAME _ZN9QS60Style10timerEventEP11QTimerEvent @ 11805 NONAME _ZN9QS60Style11eventFilterEP7QObjectP6QEvent @ 11806 NONAME + _Z14qt_draw_glyphsP8QPainterPKjPK7QPointFi @ 11807 NONAME + _ZN10QZipReader5closeEv @ 11808 NONAME + _ZN10QZipReader8FileInfoC1ERKS0_ @ 11809 NONAME + _ZN10QZipReader8FileInfoC1Ev @ 11810 NONAME + _ZN10QZipReader8FileInfoC2ERKS0_ @ 11811 NONAME + _ZN10QZipReader8FileInfoC2Ev @ 11812 NONAME + _ZN10QZipReader8FileInfoD1Ev @ 11813 NONAME + _ZN10QZipReader8FileInfoD2Ev @ 11814 NONAME + _ZN10QZipReader8FileInfoaSERKS0_ @ 11815 NONAME + _ZN10QZipReaderC1EP9QIODevice @ 11816 NONAME + _ZN10QZipReaderC1ERK7QString6QFlagsIN9QIODevice12OpenModeFlagEE @ 11817 NONAME + _ZN10QZipReaderC2EP9QIODevice @ 11818 NONAME + _ZN10QZipReaderC2ERK7QString6QFlagsIN9QIODevice12OpenModeFlagEE @ 11819 NONAME + _ZN10QZipReaderD1Ev @ 11820 NONAME + _ZN10QZipReaderD2Ev @ 11821 NONAME + _ZN11QStaticText13setTextFormatEN2Qt10TextFormatE @ 11822 NONAME + _ZN11QStaticText14setMaximumSizeERK6QSizeF @ 11823 NONAME + _ZN11QStaticText18setPerformanceHintENS_15PerformanceHintE @ 11824 NONAME + _ZN11QStaticText6detachEv @ 11825 NONAME + _ZN11QStaticText7prepareERK10QTransformRK5QFont @ 11826 NONAME + _ZN11QStaticText7setTextERK7QString @ 11827 NONAME + _ZN11QStaticTextC1ERK7QStringRK6QSizeF @ 11828 NONAME + _ZN11QStaticTextC1ERKS_ @ 11829 NONAME + _ZN11QStaticTextC1Ev @ 11830 NONAME + _ZN11QStaticTextC2ERK7QStringRK6QSizeF @ 11831 NONAME + _ZN11QStaticTextC2ERKS_ @ 11832 NONAME + _ZN11QStaticTextC2Ev @ 11833 NONAME + _ZN11QStaticTextD1Ev @ 11834 NONAME + _ZN11QStaticTextD2Ev @ 11835 NONAME + _ZN11QStaticTextaSERKS_ @ 11836 NONAME + _ZN12QKeySequence6assignERK7QStringNS_14SequenceFormatE @ 11837 NONAME + _ZN12QKeySequenceC1ERK7QStringNS_14SequenceFormatE @ 11838 NONAME + _ZN12QKeySequenceC2ERK7QStringNS_14SequenceFormatE @ 11839 NONAME + _ZN13QTextDocument19clearUndoRedoStacksENS_6StacksE @ 11840 NONAME + _ZN14QPaintEngineEx19drawPixmapFragmentsEPKN8QPainter8FragmentEiRK7QPixmap6QFlagsINS0_12FragmentHintEE @ 11841 NONAME + _ZN14QWidgetPrivate11inTabWidgetEP7QWidget @ 11842 NONAME + _ZN14QWidgetPrivate17canKeypadNavigateEN2Qt11OrientationE @ 11843 NONAME + _ZN14QWidgetPrivate6renderEP12QPaintDeviceRK6QPointRK7QRegion6QFlagsIN7QWidget10RenderFlagEEb @ 11844 NONAME + _ZN15QGraphicsWidget21setAutoFillBackgroundEb @ 11845 NONAME + _ZN16QFileSystemModel15directoryLoadedERK7QString @ 11846 NONAME + _ZN18QTextureGlyphCache8populateEP11QFontEngineiPKjPK11QFixedPoint @ 11847 NONAME + _ZN19QApplicationPrivate15getPixmapCursorEN2Qt11CursorShapeE @ 11848 NONAME + _ZN20QGraphicsViewPrivate10centerViewEN13QGraphicsView14ViewportAnchorE @ 11849 NONAME + _ZN20QGraphicsViewPrivate10updateRectERK5QRect @ 11850 NONAME + _ZN20QGraphicsViewPrivate12updateRegionERK7QRegion @ 11851 NONAME + _ZN20QGraphicsViewPrivate12updateScrollEv @ 11852 NONAME + _ZN20QGraphicsViewPrivate15storeMouseEventEP11QMouseEvent @ 11853 NONAME + _ZN20QGraphicsViewPrivate18storeDragDropEventEPK27QGraphicsSceneDragDropEvent @ 11854 NONAME + _ZN20QGraphicsViewPrivate19translateTouchEventEPS_P11QTouchEvent @ 11855 NONAME + _ZN20QGraphicsViewPrivate20_q_setViewportCursorERK7QCursor @ 11856 NONAME + _ZN20QGraphicsViewPrivate20replayLastMouseEventEv @ 11857 NONAME + _ZN20QGraphicsViewPrivate21freeStyleOptionsArrayEP24QStyleOptionGraphicsItem @ 11858 NONAME + _ZN20QGraphicsViewPrivate21mouseMoveEventHandlerEP11QMouseEvent @ 11859 NONAME + _ZN20QGraphicsViewPrivate21processPendingUpdatesEv @ 11860 NONAME + _ZN20QGraphicsViewPrivate21updateLastCenterPointEv @ 11861 NONAME + _ZN20QGraphicsViewPrivate22_q_unsetViewportCursorEv @ 11862 NONAME + _ZN20QGraphicsViewPrivate22allocStyleOptionsArrayEi @ 11863 NONAME + _ZN20QGraphicsViewPrivate22recalculateContentSizeEv @ 11864 NONAME + _ZN20QGraphicsViewPrivate26populateSceneDragDropEventEP27QGraphicsSceneDragDropEventP10QDropEvent @ 11865 NONAME + _ZN20QGraphicsViewPrivate28updateInputMethodSensitivityEv @ 11866 NONAME + _ZN20QGraphicsViewPrivateC1Ev @ 11867 NONAME + _ZN20QGraphicsViewPrivateC2Ev @ 11868 NONAME + _ZN24QImagePixmapCleanupHooks13isImageCachedERK6QImage @ 11869 NONAME + _ZN24QImagePixmapCleanupHooks14isPixmapCachedERK7QPixmap @ 11870 NONAME + _ZN26QAbstractScrollAreaPrivate14layoutChildrenEv @ 11871 NONAME + _ZN26QAbstractScrollAreaPrivate16replaceScrollBarEP10QScrollBarN2Qt11OrientationE @ 11872 NONAME + _ZN26QAbstractScrollAreaPrivate23_q_showOrHideScrollBarsEv @ 11873 NONAME + _ZN26QAbstractScrollAreaPrivate4initEv @ 11874 NONAME + _ZN26QAbstractScrollAreaPrivate9_q_hslideEi @ 11875 NONAME + _ZN26QAbstractScrollAreaPrivate9_q_vslideEi @ 11876 NONAME + _ZN26QAbstractScrollAreaPrivateC1Ev @ 11877 NONAME + _ZN26QAbstractScrollAreaPrivateC2Ev @ 11878 NONAME + _ZN6QColor12isValidColorERK7QString @ 11879 NONAME + _ZN6QColor18setColorFromStringERK7QString @ 11880 NONAME + _ZN6QLabel12setSelectionEii @ 11881 NONAME + _ZN7QPixmap16convertFromImageERK6QImage6QFlagsIN2Qt19ImageConversionFlagEE @ 11882 NONAME + _ZN8QPainter14drawStaticTextERK7QPointFRK11QStaticText @ 11883 NONAME + _ZN8QPainter19drawPixmapFragmentsEPKNS_8FragmentEiRK7QPixmap6QFlagsINS_12FragmentHintEE @ 11884 NONAME + _ZN8QPainter8Fragment6createERK7QPointFRK6QRectFffff @ 11885 NONAME + _ZN8QToolBar17visibilityChangedEb @ 11886 NONAME + _ZNK10QZipReader10extractAllERK7QString @ 11887 NONAME + _ZNK10QZipReader10isReadableEv @ 11888 NONAME + _ZNK10QZipReader11entryInfoAtEi @ 11889 NONAME + _ZNK10QZipReader12fileInfoListEv @ 11890 NONAME + _ZNK10QZipReader5countEv @ 11891 NONAME + _ZNK10QZipReader6existsEv @ 11892 NONAME + _ZNK10QZipReader6statusEv @ 11893 NONAME + _ZNK10QZipReader8fileDataERK7QString @ 11894 NONAME + _ZNK11QStaticText10textFormatEv @ 11895 NONAME + _ZNK11QStaticText11maximumSizeEv @ 11896 NONAME + _ZNK11QStaticText15performanceHintEv @ 11897 NONAME + _ZNK11QStaticText4sizeEv @ 11898 NONAME + _ZNK11QStaticText4textEv @ 11899 NONAME + _ZNK11QStaticTexteqERKS_ @ 11900 NONAME + _ZNK11QStaticTextneERKS_ @ 11901 NONAME + _ZNK11QTextCursor15positionInBlockEv @ 11902 NONAME + _ZNK13QIntValidator5fixupER7QString @ 11903 NONAME + _ZNK14QPlainTextEdit8anchorAtERK6QPoint @ 11904 NONAME + _ZNK15QGraphicsWidget18autoFillBackgroundEv @ 11905 NONAME + _ZNK20QGraphicsViewPrivate10mapToSceneERK6QRectF @ 11906 NONAME + _ZNK20QGraphicsViewPrivate10mapToSceneERK7QPointF @ 11907 NONAME + _ZNK20QGraphicsViewPrivate13mapToViewRectEPK13QGraphicsItemRK6QRectF @ 11908 NONAME + _ZNK20QGraphicsViewPrivate14mapRectToSceneERK5QRect @ 11909 NONAME + _ZNK20QGraphicsViewPrivate14verticalScrollEv @ 11910 NONAME + _ZNK20QGraphicsViewPrivate15mapToViewRegionEPK13QGraphicsItemRK6QRectF @ 11911 NONAME + _ZNK20QGraphicsViewPrivate16horizontalScrollEv @ 11912 NONAME + _ZNK20QGraphicsViewPrivate16mapRectFromSceneERK6QRectF @ 11913 NONAME + _ZNK20QGraphicsViewPrivate16rubberBandRegionEPK7QWidgetRK5QRect @ 11914 NONAME + _ZNK20QGraphicsViewPrivate9findItemsERK7QRegionPbRK10QTransform @ 11915 NONAME + _ZNK26QAbstractScrollAreaPrivate14contentsOffsetEv @ 11916 NONAME + _ZNK6QImage13constScanLineEi @ 11917 NONAME + _ZNK6QImage9constBitsEv @ 11918 NONAME + _ZNK6QLabel12selectedTextEv @ 11919 NONAME + _ZNK6QLabel14selectionStartEv @ 11920 NONAME + _ZNK6QLabel15hasSelectedTextEv @ 11921 NONAME + _ZNK7QBezier11getSubRangeEff @ 11922 NONAME + _ZNK7QBezier5mapByERK10QTransform @ 11923 NONAME + _ZTI20QGraphicsViewPrivate @ 11924 NONAME + _ZTI26QAbstractScrollAreaPrivate @ 11925 NONAME + _ZTV20QGraphicsViewPrivate @ 11926 NONAME + _ZTV26QAbstractScrollAreaPrivate @ 11927 NONAME diff --git a/src/s60installs/eabi/QtMultimediau.def b/src/s60installs/eabi/QtMultimediau.def index b5fda9a..fbc5f7b 100644 --- a/src/s60installs/eabi/QtMultimediau.def +++ b/src/s60installs/eabi/QtMultimediau.def @@ -295,4 +295,655 @@ EXPORTS _ZNK21QAbstractVideoSurface13nearestFormatERK19QVideoSurfaceFormat @ 294 NONAME _ZNK21QAbstractVideoSurface17isFormatSupportedERK19QVideoSurfaceFormat @ 295 NONAME _ZNK21QAbstractVideoSurface8isActiveEv @ 296 NONAME + _ZN12QAudioFormat13setSampleRateEi @ 297 NONAME + _ZN12QAudioFormat15setChannelCountEi @ 298 NONAME + _ZN12QMediaObject11qt_metacallEN11QMetaObject4CallEiPPv @ 299 NONAME + _ZN12QMediaObject11qt_metacastEPKc @ 300 NONAME + _ZN12QMediaObject11setMetaDataEN12QtMultimedia8MetaDataERK8QVariant @ 301 NONAME + _ZN12QMediaObject13setupMetaDataEv @ 302 NONAME + _ZN12QMediaObject15metaDataChangedEv @ 303 NONAME + _ZN12QMediaObject16addPropertyWatchERK10QByteArray @ 304 NONAME + _ZN12QMediaObject16staticMetaObjectE @ 305 NONAME DATA 16 + _ZN12QMediaObject17setNotifyIntervalEi @ 306 NONAME + _ZN12QMediaObject19availabilityChangedEb @ 307 NONAME + _ZN12QMediaObject19getStaticMetaObjectEv @ 308 NONAME + _ZN12QMediaObject19removePropertyWatchERK10QByteArray @ 309 NONAME + _ZN12QMediaObject19setExtendedMetaDataERK7QStringRK8QVariant @ 310 NONAME + _ZN12QMediaObject21notifyIntervalChangedEi @ 311 NONAME + _ZN12QMediaObject23metaDataWritableChangedEb @ 312 NONAME + _ZN12QMediaObject24metaDataAvailableChangedEb @ 313 NONAME + _ZN12QMediaObject4bindEP7QObject @ 314 NONAME + _ZN12QMediaObject6unbindEP7QObject @ 315 NONAME + _ZN12QMediaObjectC1EP7QObjectP13QMediaService @ 316 NONAME + _ZN12QMediaObjectC1ER19QMediaObjectPrivateP7QObjectP13QMediaService @ 317 NONAME + _ZN12QMediaObjectC2EP7QObjectP13QMediaService @ 318 NONAME + _ZN12QMediaObjectC2ER19QMediaObjectPrivateP7QObjectP13QMediaService @ 319 NONAME + _ZN12QMediaObjectD0Ev @ 320 NONAME + _ZN12QMediaObjectD1Ev @ 321 NONAME + _ZN12QMediaObjectD2Ev @ 322 NONAME + _ZN12QMediaPlayer10hasSupportERK7QStringRK11QStringList6QFlagsINS_4FlagEE @ 323 NONAME + _ZN12QMediaPlayer11qt_metacallEN11QMetaObject4CallEiPPv @ 324 NONAME + _ZN12QMediaPlayer11qt_metacastEPKc @ 325 NONAME + _ZN12QMediaPlayer11setPositionEx @ 326 NONAME + _ZN12QMediaPlayer12mediaChangedERK13QMediaContent @ 327 NONAME + _ZN12QMediaPlayer12mutedChangedEb @ 328 NONAME + _ZN12QMediaPlayer12stateChangedENS_5StateE @ 329 NONAME + _ZN12QMediaPlayer13volumeChangedEi @ 330 NONAME + _ZN12QMediaPlayer15durationChangedEx @ 331 NONAME + _ZN12QMediaPlayer15positionChangedEx @ 332 NONAME + _ZN12QMediaPlayer15seekableChangedEb @ 333 NONAME + _ZN12QMediaPlayer15setPlaybackRateEf @ 334 NONAME + _ZN12QMediaPlayer16staticMetaObjectE @ 335 NONAME DATA 16 + _ZN12QMediaPlayer18mediaStatusChangedENS_11MediaStatusE @ 336 NONAME + _ZN12QMediaPlayer18supportedMimeTypesE6QFlagsINS_4FlagEE @ 337 NONAME + _ZN12QMediaPlayer19bufferStatusChangedEi @ 338 NONAME + _ZN12QMediaPlayer19getStaticMetaObjectEv @ 339 NONAME + _ZN12QMediaPlayer19playbackRateChangedEf @ 340 NONAME + _ZN12QMediaPlayer21audioAvailableChangedEb @ 341 NONAME + _ZN12QMediaPlayer21videoAvailableChangedEb @ 342 NONAME + _ZN12QMediaPlayer4bindEP7QObject @ 343 NONAME + _ZN12QMediaPlayer4playEv @ 344 NONAME + _ZN12QMediaPlayer4stopEv @ 345 NONAME + _ZN12QMediaPlayer5errorENS_5ErrorE @ 346 NONAME + _ZN12QMediaPlayer5pauseEv @ 347 NONAME + _ZN12QMediaPlayer6unbindEP7QObject @ 348 NONAME + _ZN12QMediaPlayer8setMediaERK13QMediaContentP9QIODevice @ 349 NONAME + _ZN12QMediaPlayer8setMutedEb @ 350 NONAME + _ZN12QMediaPlayer9setVolumeEi @ 351 NONAME + _ZN12QMediaPlayerC1EP7QObject6QFlagsINS_4FlagEEP21QMediaServiceProvider @ 352 NONAME + _ZN12QMediaPlayerC2EP7QObject6QFlagsINS_4FlagEEP21QMediaServiceProvider @ 353 NONAME + _ZN12QMediaPlayerD0Ev @ 354 NONAME + _ZN12QMediaPlayerD1Ev @ 355 NONAME + _ZN12QMediaPlayerD2Ev @ 356 NONAME + _ZN12QVideoWidget10hueChangedEi @ 357 NONAME + _ZN12QVideoWidget10paintEventEP11QPaintEvent @ 358 NONAME + _ZN12QVideoWidget11qt_metacallEN11QMetaObject4CallEiPPv @ 359 NONAME + _ZN12QVideoWidget11qt_metacastEPKc @ 360 NONAME + _ZN12QVideoWidget11resizeEventEP12QResizeEvent @ 361 NONAME + _ZN12QVideoWidget11setContrastEi @ 362 NONAME + _ZN12QVideoWidget13setBrightnessEi @ 363 NONAME + _ZN12QVideoWidget13setFullScreenEb @ 364 NONAME + _ZN12QVideoWidget13setSaturationEi @ 365 NONAME + _ZN12QVideoWidget14setMediaObjectEP12QMediaObject @ 366 NONAME + _ZN12QVideoWidget15contrastChangedEi @ 367 NONAME + _ZN12QVideoWidget16staticMetaObjectE @ 368 NONAME DATA 16 + _ZN12QVideoWidget17brightnessChangedEi @ 369 NONAME + _ZN12QVideoWidget17fullScreenChangedEb @ 370 NONAME + _ZN12QVideoWidget17saturationChangedEi @ 371 NONAME + _ZN12QVideoWidget18setAspectRatioModeENS_15AspectRatioModeE @ 372 NONAME + _ZN12QVideoWidget19getStaticMetaObjectEv @ 373 NONAME + _ZN12QVideoWidget5eventEP6QEvent @ 374 NONAME + _ZN12QVideoWidget6setHueEi @ 375 NONAME + _ZN12QVideoWidget9hideEventEP10QHideEvent @ 376 NONAME + _ZN12QVideoWidget9moveEventEP10QMoveEvent @ 377 NONAME + _ZN12QVideoWidget9showEventEP10QShowEvent @ 378 NONAME + _ZN12QVideoWidgetC1EP7QWidget @ 379 NONAME + _ZN12QVideoWidgetC2EP7QWidget @ 380 NONAME + _ZN12QVideoWidgetD0Ev @ 381 NONAME + _ZN12QVideoWidgetD1Ev @ 382 NONAME + _ZN12QVideoWidgetD2Ev @ 383 NONAME + _ZN12QtMultimedia28qRegisterDeclarativeElementsEPKc @ 384 NONAME + _ZN13QMediaContentC1ERK14QMediaResource @ 385 NONAME + _ZN13QMediaContentC1ERK15QNetworkRequest @ 386 NONAME + _ZN13QMediaContentC1ERK4QUrl @ 387 NONAME + _ZN13QMediaContentC1ERK5QListI14QMediaResourceE @ 388 NONAME + _ZN13QMediaContentC1ERKS_ @ 389 NONAME + _ZN13QMediaContentC1Ev @ 390 NONAME + _ZN13QMediaContentC2ERK14QMediaResource @ 391 NONAME + _ZN13QMediaContentC2ERK15QNetworkRequest @ 392 NONAME + _ZN13QMediaContentC2ERK4QUrl @ 393 NONAME + _ZN13QMediaContentC2ERK5QListI14QMediaResourceE @ 394 NONAME + _ZN13QMediaContentC2ERKS_ @ 395 NONAME + _ZN13QMediaContentC2Ev @ 396 NONAME + _ZN13QMediaContentD1Ev @ 397 NONAME + _ZN13QMediaContentD2Ev @ 398 NONAME + _ZN13QMediaContentaSERKS_ @ 399 NONAME + _ZN13QMediaControl11qt_metacallEN11QMetaObject4CallEiPPv @ 400 NONAME + _ZN13QMediaControl11qt_metacastEPKc @ 401 NONAME + _ZN13QMediaControl16staticMetaObjectE @ 402 NONAME DATA 16 + _ZN13QMediaControl19getStaticMetaObjectEv @ 403 NONAME + _ZN13QMediaControlC1EP7QObject @ 404 NONAME + _ZN13QMediaControlC1ER20QMediaControlPrivateP7QObject @ 405 NONAME + _ZN13QMediaControlC2EP7QObject @ 406 NONAME + _ZN13QMediaControlC2ER20QMediaControlPrivateP7QObject @ 407 NONAME + _ZN13QMediaControlD0Ev @ 408 NONAME + _ZN13QMediaControlD1Ev @ 409 NONAME + _ZN13QMediaControlD2Ev @ 410 NONAME + _ZN13QMediaService11qt_metacallEN11QMetaObject4CallEiPPv @ 411 NONAME + _ZN13QMediaService11qt_metacastEPKc @ 412 NONAME + _ZN13QMediaService16staticMetaObjectE @ 413 NONAME DATA 16 + _ZN13QMediaService19getStaticMetaObjectEv @ 414 NONAME + _ZN13QMediaServiceC2EP7QObject @ 415 NONAME + _ZN13QMediaServiceC2ER20QMediaServicePrivateP7QObject @ 416 NONAME + _ZN13QMediaServiceD0Ev @ 417 NONAME + _ZN13QMediaServiceD1Ev @ 418 NONAME + _ZN13QMediaServiceD2Ev @ 419 NONAME + _ZN14QMediaPlaylist10loadFailedEv @ 420 NONAME + _ZN14QMediaPlaylist11insertMediaEiRK13QMediaContent @ 421 NONAME + _ZN14QMediaPlaylist11insertMediaEiRK5QListI13QMediaContentE @ 422 NONAME + _ZN14QMediaPlaylist11qt_metacallEN11QMetaObject4CallEiPPv @ 423 NONAME + _ZN14QMediaPlaylist11qt_metacastEPKc @ 424 NONAME + _ZN14QMediaPlaylist11removeMediaEi @ 425 NONAME + _ZN14QMediaPlaylist11removeMediaEii @ 426 NONAME + _ZN14QMediaPlaylist12mediaChangedEii @ 427 NONAME + _ZN14QMediaPlaylist12mediaRemovedEii @ 428 NONAME + _ZN14QMediaPlaylist13mediaInsertedEii @ 429 NONAME + _ZN14QMediaPlaylist14setMediaObjectEP12QMediaObject @ 430 NONAME + _ZN14QMediaPlaylist15setCurrentIndexEi @ 431 NONAME + _ZN14QMediaPlaylist15setPlaybackModeENS_12PlaybackModeE @ 432 NONAME + _ZN14QMediaPlaylist16staticMetaObjectE @ 433 NONAME DATA 16 + _ZN14QMediaPlaylist19currentIndexChangedEi @ 434 NONAME + _ZN14QMediaPlaylist19currentMediaChangedERK13QMediaContent @ 435 NONAME + _ZN14QMediaPlaylist19getStaticMetaObjectEv @ 436 NONAME + _ZN14QMediaPlaylist19playbackModeChangedENS_12PlaybackModeE @ 437 NONAME + _ZN14QMediaPlaylist21mediaAboutToBeRemovedEii @ 438 NONAME + _ZN14QMediaPlaylist22mediaAboutToBeInsertedEii @ 439 NONAME + _ZN14QMediaPlaylist4loadEP9QIODevicePKc @ 440 NONAME + _ZN14QMediaPlaylist4loadERK4QUrlPKc @ 441 NONAME + _ZN14QMediaPlaylist4nextEv @ 442 NONAME + _ZN14QMediaPlaylist4saveEP9QIODevicePKc @ 443 NONAME + _ZN14QMediaPlaylist4saveERK4QUrlPKc @ 444 NONAME + _ZN14QMediaPlaylist5clearEv @ 445 NONAME + _ZN14QMediaPlaylist6loadedEv @ 446 NONAME + _ZN14QMediaPlaylist7shuffleEv @ 447 NONAME + _ZN14QMediaPlaylist8addMediaERK13QMediaContent @ 448 NONAME + _ZN14QMediaPlaylist8addMediaERK5QListI13QMediaContentE @ 449 NONAME + _ZN14QMediaPlaylist8previousEv @ 450 NONAME + _ZN14QMediaPlaylistC1EP7QObject @ 451 NONAME + _ZN14QMediaPlaylistC2EP7QObject @ 452 NONAME + _ZN14QMediaPlaylistD0Ev @ 453 NONAME + _ZN14QMediaPlaylistD1Ev @ 454 NONAME + _ZN14QMediaPlaylistD2Ev @ 455 NONAME + _ZN14QMediaResource11setDataSizeEx @ 456 NONAME + _ZN14QMediaResource11setLanguageERK7QString @ 457 NONAME + _ZN14QMediaResource13setAudioCodecERK7QString @ 458 NONAME + _ZN14QMediaResource13setResolutionERK5QSize @ 459 NONAME + _ZN14QMediaResource13setResolutionEii @ 460 NONAME + _ZN14QMediaResource13setSampleRateEi @ 461 NONAME + _ZN14QMediaResource13setVideoCodecERK7QString @ 462 NONAME + _ZN14QMediaResource15setAudioBitRateEi @ 463 NONAME + _ZN14QMediaResource15setChannelCountEi @ 464 NONAME + _ZN14QMediaResource15setVideoBitRateEi @ 465 NONAME + _ZN14QMediaResourceC1ERK15QNetworkRequestRK7QString @ 466 NONAME + _ZN14QMediaResourceC1ERK4QUrlRK7QString @ 467 NONAME + _ZN14QMediaResourceC1ERKS_ @ 468 NONAME + _ZN14QMediaResourceC1Ev @ 469 NONAME + _ZN14QMediaResourceC2ERK15QNetworkRequestRK7QString @ 470 NONAME + _ZN14QMediaResourceC2ERK4QUrlRK7QString @ 471 NONAME + _ZN14QMediaResourceC2ERKS_ @ 472 NONAME + _ZN14QMediaResourceC2Ev @ 473 NONAME + _ZN14QMediaResourceD1Ev @ 474 NONAME + _ZN14QMediaResourceD2Ev @ 475 NONAME + _ZN14QMediaResourceaSERKS_ @ 476 NONAME + _ZN15QMediaTimeRange11addIntervalERK18QMediaTimeInterval @ 477 NONAME + _ZN15QMediaTimeRange11addIntervalExx @ 478 NONAME + _ZN15QMediaTimeRange12addTimeRangeERKS_ @ 479 NONAME + _ZN15QMediaTimeRange14removeIntervalERK18QMediaTimeInterval @ 480 NONAME + _ZN15QMediaTimeRange14removeIntervalExx @ 481 NONAME + _ZN15QMediaTimeRange15removeTimeRangeERKS_ @ 482 NONAME + _ZN15QMediaTimeRange5clearEv @ 483 NONAME + _ZN15QMediaTimeRangeC1ERK18QMediaTimeInterval @ 484 NONAME + _ZN15QMediaTimeRangeC1ERKS_ @ 485 NONAME + _ZN15QMediaTimeRangeC1Ev @ 486 NONAME + _ZN15QMediaTimeRangeC1Exx @ 487 NONAME + _ZN15QMediaTimeRangeC2ERK18QMediaTimeInterval @ 488 NONAME + _ZN15QMediaTimeRangeC2ERKS_ @ 489 NONAME + _ZN15QMediaTimeRangeC2Ev @ 490 NONAME + _ZN15QMediaTimeRangeC2Exx @ 491 NONAME + _ZN15QMediaTimeRangeD1Ev @ 492 NONAME + _ZN15QMediaTimeRangeD2Ev @ 493 NONAME + _ZN15QMediaTimeRangeaSERK18QMediaTimeInterval @ 494 NONAME + _ZN15QMediaTimeRangeaSERKS_ @ 495 NONAME + _ZN15QMediaTimeRangemIERK18QMediaTimeInterval @ 496 NONAME + _ZN15QMediaTimeRangemIERKS_ @ 497 NONAME + _ZN15QMediaTimeRangepLERK18QMediaTimeInterval @ 498 NONAME + _ZN15QMediaTimeRangepLERKS_ @ 499 NONAME + _ZN16QMetaDataControl11qt_metacallEN11QMetaObject4CallEiPPv @ 500 NONAME + _ZN16QMetaDataControl11qt_metacastEPKc @ 501 NONAME + _ZN16QMetaDataControl15metaDataChangedEv @ 502 NONAME + _ZN16QMetaDataControl15writableChangedEb @ 503 NONAME + _ZN16QMetaDataControl16staticMetaObjectE @ 504 NONAME DATA 16 + _ZN16QMetaDataControl19getStaticMetaObjectEv @ 505 NONAME + _ZN16QMetaDataControl24metaDataAvailableChangedEb @ 506 NONAME + _ZN16QMetaDataControlC2EP7QObject @ 507 NONAME + _ZN16QMetaDataControlD0Ev @ 508 NONAME + _ZN16QMetaDataControlD1Ev @ 509 NONAME + _ZN16QMetaDataControlD2Ev @ 510 NONAME + _ZN18QGraphicsVideoItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 511 NONAME + _ZN18QGraphicsVideoItem11qt_metacallEN11QMetaObject4CallEiPPv @ 512 NONAME + _ZN18QGraphicsVideoItem11qt_metacastEPKc @ 513 NONAME + _ZN18QGraphicsVideoItem14setMediaObjectEP12QMediaObject @ 514 NONAME + _ZN18QGraphicsVideoItem16staticMetaObjectE @ 515 NONAME DATA 16 + _ZN18QGraphicsVideoItem17nativeSizeChangedERK6QSizeF @ 516 NONAME + _ZN18QGraphicsVideoItem18setAspectRatioModeEN2Qt15AspectRatioModeE @ 517 NONAME + _ZN18QGraphicsVideoItem19getStaticMetaObjectEv @ 518 NONAME + _ZN18QGraphicsVideoItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 519 NONAME + _ZN18QGraphicsVideoItem7setSizeERK6QSizeF @ 520 NONAME + _ZN18QGraphicsVideoItem9setOffsetERK7QPointF @ 521 NONAME + _ZN18QGraphicsVideoItemC1EP13QGraphicsItem @ 522 NONAME + _ZN18QGraphicsVideoItemC2EP13QGraphicsItem @ 523 NONAME + _ZN18QGraphicsVideoItemD0Ev @ 524 NONAME + _ZN18QGraphicsVideoItemD1Ev @ 525 NONAME + _ZN18QGraphicsVideoItemD2Ev @ 526 NONAME + _ZN18QMediaTimeIntervalC1ERKS_ @ 527 NONAME + _ZN18QMediaTimeIntervalC1Ev @ 528 NONAME + _ZN18QMediaTimeIntervalC1Exx @ 529 NONAME + _ZN18QMediaTimeIntervalC2ERKS_ @ 530 NONAME + _ZN18QMediaTimeIntervalC2Ev @ 531 NONAME + _ZN18QMediaTimeIntervalC2Exx @ 532 NONAME + _ZN19QMediaPlayerControl11qt_metacallEN11QMetaObject4CallEiPPv @ 533 NONAME + _ZN19QMediaPlayerControl11qt_metacastEPKc @ 534 NONAME + _ZN19QMediaPlayerControl12mediaChangedERK13QMediaContent @ 535 NONAME + _ZN19QMediaPlayerControl12mutedChangedEb @ 536 NONAME + _ZN19QMediaPlayerControl12stateChangedEN12QMediaPlayer5StateE @ 537 NONAME + _ZN19QMediaPlayerControl13volumeChangedEi @ 538 NONAME + _ZN19QMediaPlayerControl15durationChangedEx @ 539 NONAME + _ZN19QMediaPlayerControl15positionChangedEx @ 540 NONAME + _ZN19QMediaPlayerControl15seekableChangedEb @ 541 NONAME + _ZN19QMediaPlayerControl16staticMetaObjectE @ 542 NONAME DATA 16 + _ZN19QMediaPlayerControl18mediaStatusChangedEN12QMediaPlayer11MediaStatusE @ 543 NONAME + _ZN19QMediaPlayerControl19bufferStatusChangedEi @ 544 NONAME + _ZN19QMediaPlayerControl19getStaticMetaObjectEv @ 545 NONAME + _ZN19QMediaPlayerControl19playbackRateChangedEf @ 546 NONAME + _ZN19QMediaPlayerControl21audioAvailableChangedEb @ 547 NONAME + _ZN19QMediaPlayerControl21videoAvailableChangedEb @ 548 NONAME + _ZN19QMediaPlayerControl30availablePlaybackRangesChangedERK15QMediaTimeRange @ 549 NONAME + _ZN19QMediaPlayerControl5errorEiRK7QString @ 550 NONAME + _ZN19QMediaPlayerControlC2EP7QObject @ 551 NONAME + _ZN19QMediaPlayerControlD0Ev @ 552 NONAME + _ZN19QMediaPlayerControlD1Ev @ 553 NONAME + _ZN19QMediaPlayerControlD2Ev @ 554 NONAME + _ZN19QVideoDeviceControl11qt_metacallEN11QMetaObject4CallEiPPv @ 555 NONAME + _ZN19QVideoDeviceControl11qt_metacastEPKc @ 556 NONAME + _ZN19QVideoDeviceControl14devicesChangedEv @ 557 NONAME + _ZN19QVideoDeviceControl16staticMetaObjectE @ 558 NONAME DATA 16 + _ZN19QVideoDeviceControl19getStaticMetaObjectEv @ 559 NONAME + _ZN19QVideoDeviceControl21selectedDeviceChangedERK7QString @ 560 NONAME + _ZN19QVideoDeviceControl21selectedDeviceChangedEi @ 561 NONAME + _ZN19QVideoDeviceControlC2EP7QObject @ 562 NONAME + _ZN19QVideoDeviceControlD0Ev @ 563 NONAME + _ZN19QVideoDeviceControlD1Ev @ 564 NONAME + _ZN19QVideoDeviceControlD2Ev @ 565 NONAME + _ZN19QVideoOutputControl11qt_metacallEN11QMetaObject4CallEiPPv @ 566 NONAME + _ZN19QVideoOutputControl11qt_metacastEPKc @ 567 NONAME + _ZN19QVideoOutputControl16staticMetaObjectE @ 568 NONAME DATA 16 + _ZN19QVideoOutputControl19getStaticMetaObjectEv @ 569 NONAME + _ZN19QVideoOutputControl23availableOutputsChangedERK5QListINS_6OutputEE @ 570 NONAME + _ZN19QVideoOutputControlC2EP7QObject @ 571 NONAME + _ZN19QVideoOutputControlD0Ev @ 572 NONAME + _ZN19QVideoOutputControlD1Ev @ 573 NONAME + _ZN19QVideoOutputControlD2Ev @ 574 NONAME + _ZN19QVideoWidgetControl10hueChangedEi @ 575 NONAME + _ZN19QVideoWidgetControl11qt_metacallEN11QMetaObject4CallEiPPv @ 576 NONAME + _ZN19QVideoWidgetControl11qt_metacastEPKc @ 577 NONAME + _ZN19QVideoWidgetControl15contrastChangedEi @ 578 NONAME + _ZN19QVideoWidgetControl16staticMetaObjectE @ 579 NONAME DATA 16 + _ZN19QVideoWidgetControl17brightnessChangedEi @ 580 NONAME + _ZN19QVideoWidgetControl17fullScreenChangedEb @ 581 NONAME + _ZN19QVideoWidgetControl17saturationChangedEi @ 582 NONAME + _ZN19QVideoWidgetControl19getStaticMetaObjectEv @ 583 NONAME + _ZN19QVideoWidgetControlC2EP7QObject @ 584 NONAME + _ZN19QVideoWidgetControlD0Ev @ 585 NONAME + _ZN19QVideoWidgetControlD1Ev @ 586 NONAME + _ZN19QVideoWidgetControlD2Ev @ 587 NONAME + _ZN19QVideoWindowControl10hueChangedEi @ 588 NONAME + _ZN19QVideoWindowControl11qt_metacallEN11QMetaObject4CallEiPPv @ 589 NONAME + _ZN19QVideoWindowControl11qt_metacastEPKc @ 590 NONAME + _ZN19QVideoWindowControl15contrastChangedEi @ 591 NONAME + _ZN19QVideoWindowControl16staticMetaObjectE @ 592 NONAME DATA 16 + _ZN19QVideoWindowControl17brightnessChangedEi @ 593 NONAME + _ZN19QVideoWindowControl17fullScreenChangedEb @ 594 NONAME + _ZN19QVideoWindowControl17nativeSizeChangedEv @ 595 NONAME + _ZN19QVideoWindowControl17saturationChangedEi @ 596 NONAME + _ZN19QVideoWindowControl19getStaticMetaObjectEv @ 597 NONAME + _ZN19QVideoWindowControlC2EP7QObject @ 598 NONAME + _ZN19QVideoWindowControlD0Ev @ 599 NONAME + _ZN19QVideoWindowControlD1Ev @ 600 NONAME + _ZN19QVideoWindowControlD2Ev @ 601 NONAME + _ZN20QMediaPlaylistReaderD0Ev @ 602 NONAME + _ZN20QMediaPlaylistReaderD1Ev @ 603 NONAME + _ZN20QMediaPlaylistReaderD2Ev @ 604 NONAME + _ZN20QMediaPlaylistWriterD0Ev @ 605 NONAME + _ZN20QMediaPlaylistWriterD1Ev @ 606 NONAME + _ZN20QMediaPlaylistWriterD2Ev @ 607 NONAME + _ZN20QPainterVideoSurface11qt_metacallEN11QMetaObject4CallEiPPv @ 608 NONAME + _ZN20QPainterVideoSurface11qt_metacastEPKc @ 609 NONAME + _ZN20QPainterVideoSurface11setContrastEi @ 610 NONAME + _ZN20QPainterVideoSurface12frameChangedEv @ 611 NONAME + _ZN20QPainterVideoSurface13createPainterEv @ 612 NONAME + _ZN20QPainterVideoSurface13setBrightnessEi @ 613 NONAME + _ZN20QPainterVideoSurface13setSaturationEi @ 614 NONAME + _ZN20QPainterVideoSurface16staticMetaObjectE @ 615 NONAME DATA 16 + _ZN20QPainterVideoSurface19getStaticMetaObjectEv @ 616 NONAME + _ZN20QPainterVideoSurface4stopEv @ 617 NONAME + _ZN20QPainterVideoSurface5paintEP8QPainterRK6QRectFS4_ @ 618 NONAME + _ZN20QPainterVideoSurface5startERK19QVideoSurfaceFormat @ 619 NONAME + _ZN20QPainterVideoSurface6setHueEi @ 620 NONAME + _ZN20QPainterVideoSurface7presentERK11QVideoFrame @ 621 NONAME + _ZN20QPainterVideoSurface8setReadyEb @ 622 NONAME + _ZN20QPainterVideoSurfaceC1EP7QObject @ 623 NONAME + _ZN20QPainterVideoSurfaceC2EP7QObject @ 624 NONAME + _ZN20QPainterVideoSurfaceD0Ev @ 625 NONAME + _ZN20QPainterVideoSurfaceD1Ev @ 626 NONAME + _ZN20QPainterVideoSurfaceD2Ev @ 627 NONAME + _ZN21QMediaPlaylistControl11qt_metacallEN11QMetaObject4CallEiPPv @ 628 NONAME + _ZN21QMediaPlaylistControl11qt_metacastEPKc @ 629 NONAME + _ZN21QMediaPlaylistControl16staticMetaObjectE @ 630 NONAME DATA 16 + _ZN21QMediaPlaylistControl19currentIndexChangedEi @ 631 NONAME + _ZN21QMediaPlaylistControl19currentMediaChangedERK13QMediaContent @ 632 NONAME + _ZN21QMediaPlaylistControl19getStaticMetaObjectEv @ 633 NONAME + _ZN21QMediaPlaylistControl19playbackModeChangedEN14QMediaPlaylist12PlaybackModeE @ 634 NONAME + _ZN21QMediaPlaylistControl23playlistProviderChangedEv @ 635 NONAME + _ZN21QMediaPlaylistControlC2EP7QObject @ 636 NONAME + _ZN21QMediaPlaylistControlD0Ev @ 637 NONAME + _ZN21QMediaPlaylistControlD1Ev @ 638 NONAME + _ZN21QMediaPlaylistControlD2Ev @ 639 NONAME + _ZN21QMediaServiceProvider11qt_metacallEN11QMetaObject4CallEiPPv @ 640 NONAME + _ZN21QMediaServiceProvider11qt_metacastEPKc @ 641 NONAME + _ZN21QMediaServiceProvider16staticMetaObjectE @ 642 NONAME DATA 16 + _ZN21QMediaServiceProvider17deviceDescriptionERK10QByteArrayS2_ @ 643 NONAME + _ZN21QMediaServiceProvider19getStaticMetaObjectEv @ 644 NONAME + _ZN21QMediaServiceProvider22defaultServiceProviderEv @ 645 NONAME + _ZN21QVideoRendererControl11qt_metacallEN11QMetaObject4CallEiPPv @ 646 NONAME + _ZN21QVideoRendererControl11qt_metacastEPKc @ 647 NONAME + _ZN21QVideoRendererControl16staticMetaObjectE @ 648 NONAME DATA 16 + _ZN21QVideoRendererControl19getStaticMetaObjectEv @ 649 NONAME + _ZN21QVideoRendererControlC2EP7QObject @ 650 NONAME + _ZN21QVideoRendererControlD0Ev @ 651 NONAME + _ZN21QVideoRendererControlD1Ev @ 652 NONAME + _ZN21QVideoRendererControlD2Ev @ 653 NONAME + _ZN22QMediaPlaylistIOPlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 654 NONAME + _ZN22QMediaPlaylistIOPlugin11qt_metacastEPKc @ 655 NONAME + _ZN22QMediaPlaylistIOPlugin16staticMetaObjectE @ 656 NONAME DATA 16 + _ZN22QMediaPlaylistIOPlugin19getStaticMetaObjectEv @ 657 NONAME + _ZN22QMediaPlaylistIOPluginC2EP7QObject @ 658 NONAME + _ZN22QMediaPlaylistIOPluginD0Ev @ 659 NONAME + _ZN22QMediaPlaylistIOPluginD1Ev @ 660 NONAME + _ZN22QMediaPlaylistIOPluginD2Ev @ 661 NONAME + _ZN22QMediaPlaylistProvider10loadFailedEN14QMediaPlaylist5ErrorERK7QString @ 662 NONAME + _ZN22QMediaPlaylistProvider11insertMediaEiRK13QMediaContent @ 663 NONAME + _ZN22QMediaPlaylistProvider11insertMediaEiRK5QListI13QMediaContentE @ 664 NONAME + _ZN22QMediaPlaylistProvider11qt_metacallEN11QMetaObject4CallEiPPv @ 665 NONAME + _ZN22QMediaPlaylistProvider11qt_metacastEPKc @ 666 NONAME + _ZN22QMediaPlaylistProvider11removeMediaEi @ 667 NONAME + _ZN22QMediaPlaylistProvider11removeMediaEii @ 668 NONAME + _ZN22QMediaPlaylistProvider12mediaChangedEii @ 669 NONAME + _ZN22QMediaPlaylistProvider12mediaRemovedEii @ 670 NONAME + _ZN22QMediaPlaylistProvider13mediaInsertedEii @ 671 NONAME + _ZN22QMediaPlaylistProvider16staticMetaObjectE @ 672 NONAME DATA 16 + _ZN22QMediaPlaylistProvider19getStaticMetaObjectEv @ 673 NONAME + _ZN22QMediaPlaylistProvider21mediaAboutToBeRemovedEii @ 674 NONAME + _ZN22QMediaPlaylistProvider22mediaAboutToBeInsertedEii @ 675 NONAME + _ZN22QMediaPlaylistProvider4loadEP9QIODevicePKc @ 676 NONAME + _ZN22QMediaPlaylistProvider4loadERK4QUrlPKc @ 677 NONAME + _ZN22QMediaPlaylistProvider4saveEP9QIODevicePKc @ 678 NONAME + _ZN22QMediaPlaylistProvider4saveERK4QUrlPKc @ 679 NONAME + _ZN22QMediaPlaylistProvider5clearEv @ 680 NONAME + _ZN22QMediaPlaylistProvider6loadedEv @ 681 NONAME + _ZN22QMediaPlaylistProvider7shuffleEv @ 682 NONAME + _ZN22QMediaPlaylistProvider8addMediaERK13QMediaContent @ 683 NONAME + _ZN22QMediaPlaylistProvider8addMediaERK5QListI13QMediaContentE @ 684 NONAME + _ZN22QMediaPlaylistProviderC2EP7QObject @ 685 NONAME + _ZN22QMediaPlaylistProviderC2ER29QMediaPlaylistProviderPrivateP7QObject @ 686 NONAME + _ZN22QMediaPlaylistProviderD0Ev @ 687 NONAME + _ZN22QMediaPlaylistProviderD1Ev @ 688 NONAME + _ZN22QMediaPlaylistProviderD2Ev @ 689 NONAME + _ZN23QMediaPlaylistNavigator11qt_metacallEN11QMetaObject4CallEiPPv @ 690 NONAME + _ZN23QMediaPlaylistNavigator11qt_metacastEPKc @ 691 NONAME + _ZN23QMediaPlaylistNavigator11setPlaylistEP22QMediaPlaylistProvider @ 692 NONAME + _ZN23QMediaPlaylistNavigator15setPlaybackModeEN14QMediaPlaylist12PlaybackModeE @ 693 NONAME + _ZN23QMediaPlaylistNavigator16staticMetaObjectE @ 694 NONAME DATA 16 + _ZN23QMediaPlaylistNavigator19currentIndexChangedEi @ 695 NONAME + _ZN23QMediaPlaylistNavigator19getStaticMetaObjectEv @ 696 NONAME + _ZN23QMediaPlaylistNavigator19playbackModeChangedEN14QMediaPlaylist12PlaybackModeE @ 697 NONAME + _ZN23QMediaPlaylistNavigator23surroundingItemsChangedEv @ 698 NONAME + _ZN23QMediaPlaylistNavigator4jumpEi @ 699 NONAME + _ZN23QMediaPlaylistNavigator4nextEv @ 700 NONAME + _ZN23QMediaPlaylistNavigator8previousEv @ 701 NONAME + _ZN23QMediaPlaylistNavigator9activatedERK13QMediaContent @ 702 NONAME + _ZN23QMediaPlaylistNavigatorC1EP22QMediaPlaylistProviderP7QObject @ 703 NONAME + _ZN23QMediaPlaylistNavigatorC2EP22QMediaPlaylistProviderP7QObject @ 704 NONAME + _ZN23QMediaPlaylistNavigatorD0Ev @ 705 NONAME + _ZN23QMediaPlaylistNavigatorD1Ev @ 706 NONAME + _ZN23QMediaPlaylistNavigatorD2Ev @ 707 NONAME + _ZN25QMediaServiceProviderHintC1E6QFlagsINS_7FeatureEE @ 708 NONAME + _ZN25QMediaServiceProviderHintC1ERK10QByteArray @ 709 NONAME + _ZN25QMediaServiceProviderHintC1ERK7QStringRK11QStringList @ 710 NONAME + _ZN25QMediaServiceProviderHintC1ERKS_ @ 711 NONAME + _ZN25QMediaServiceProviderHintC1Ev @ 712 NONAME + _ZN25QMediaServiceProviderHintC2E6QFlagsINS_7FeatureEE @ 713 NONAME + _ZN25QMediaServiceProviderHintC2ERK10QByteArray @ 714 NONAME + _ZN25QMediaServiceProviderHintC2ERK7QStringRK11QStringList @ 715 NONAME + _ZN25QMediaServiceProviderHintC2ERKS_ @ 716 NONAME + _ZN25QMediaServiceProviderHintC2Ev @ 717 NONAME + _ZN25QMediaServiceProviderHintD1Ev @ 718 NONAME + _ZN25QMediaServiceProviderHintD2Ev @ 719 NONAME + _ZN25QMediaServiceProviderHintaSERKS_ @ 720 NONAME + _ZN27QLocalMediaPlaylistProvider11insertMediaEiRK13QMediaContent @ 721 NONAME + _ZN27QLocalMediaPlaylistProvider11insertMediaEiRK5QListI13QMediaContentE @ 722 NONAME + _ZN27QLocalMediaPlaylistProvider11qt_metacallEN11QMetaObject4CallEiPPv @ 723 NONAME + _ZN27QLocalMediaPlaylistProvider11qt_metacastEPKc @ 724 NONAME + _ZN27QLocalMediaPlaylistProvider11removeMediaEi @ 725 NONAME + _ZN27QLocalMediaPlaylistProvider11removeMediaEii @ 726 NONAME + _ZN27QLocalMediaPlaylistProvider16staticMetaObjectE @ 727 NONAME DATA 16 + _ZN27QLocalMediaPlaylistProvider19getStaticMetaObjectEv @ 728 NONAME + _ZN27QLocalMediaPlaylistProvider5clearEv @ 729 NONAME + _ZN27QLocalMediaPlaylistProvider7shuffleEv @ 730 NONAME + _ZN27QLocalMediaPlaylistProvider8addMediaERK13QMediaContent @ 731 NONAME + _ZN27QLocalMediaPlaylistProvider8addMediaERK5QListI13QMediaContentE @ 732 NONAME + _ZN27QLocalMediaPlaylistProviderC1EP7QObject @ 733 NONAME + _ZN27QLocalMediaPlaylistProviderC2EP7QObject @ 734 NONAME + _ZN27QLocalMediaPlaylistProviderD0Ev @ 735 NONAME + _ZN27QLocalMediaPlaylistProviderD1Ev @ 736 NONAME + _ZN27QLocalMediaPlaylistProviderD2Ev @ 737 NONAME + _ZN27QMediaServiceProviderPlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 738 NONAME + _ZN27QMediaServiceProviderPlugin11qt_metacastEPKc @ 739 NONAME + _ZN27QMediaServiceProviderPlugin16staticMetaObjectE @ 740 NONAME DATA 16 + _ZN27QMediaServiceProviderPlugin19getStaticMetaObjectEv @ 741 NONAME + _ZNK12QAudioFormat10sampleRateEv @ 742 NONAME + _ZNK12QAudioFormat12channelCountEv @ 743 NONAME + _ZNK12QMediaObject10metaObjectEv @ 744 NONAME + _ZNK12QMediaObject11isAvailableEv @ 745 NONAME + _ZNK12QMediaObject14notifyIntervalEv @ 746 NONAME + _ZNK12QMediaObject16extendedMetaDataERK7QString @ 747 NONAME + _ZNK12QMediaObject17availabilityErrorEv @ 748 NONAME + _ZNK12QMediaObject17availableMetaDataEv @ 749 NONAME + _ZNK12QMediaObject18isMetaDataWritableEv @ 750 NONAME + _ZNK12QMediaObject19isMetaDataAvailableEv @ 751 NONAME + _ZNK12QMediaObject25availableExtendedMetaDataEv @ 752 NONAME + _ZNK12QMediaObject7serviceEv @ 753 NONAME + _ZNK12QMediaObject8metaDataEN12QtMultimedia8MetaDataE @ 754 NONAME + _ZNK12QMediaPlayer10isSeekableEv @ 755 NONAME + _ZNK12QMediaPlayer10metaObjectEv @ 756 NONAME + _ZNK12QMediaPlayer11errorStringEv @ 757 NONAME + _ZNK12QMediaPlayer11mediaStatusEv @ 758 NONAME + _ZNK12QMediaPlayer11mediaStreamEv @ 759 NONAME + _ZNK12QMediaPlayer12bufferStatusEv @ 760 NONAME + _ZNK12QMediaPlayer12playbackRateEv @ 761 NONAME + _ZNK12QMediaPlayer16isAudioAvailableEv @ 762 NONAME + _ZNK12QMediaPlayer16isVideoAvailableEv @ 763 NONAME + _ZNK12QMediaPlayer5errorEv @ 764 NONAME + _ZNK12QMediaPlayer5mediaEv @ 765 NONAME + _ZNK12QMediaPlayer5stateEv @ 766 NONAME + _ZNK12QMediaPlayer6volumeEv @ 767 NONAME + _ZNK12QMediaPlayer7isMutedEv @ 768 NONAME + _ZNK12QMediaPlayer8durationEv @ 769 NONAME + _ZNK12QMediaPlayer8positionEv @ 770 NONAME + _ZNK12QVideoWidget10brightnessEv @ 771 NONAME + _ZNK12QVideoWidget10metaObjectEv @ 772 NONAME + _ZNK12QVideoWidget10saturationEv @ 773 NONAME + _ZNK12QVideoWidget11mediaObjectEv @ 774 NONAME + _ZNK12QVideoWidget15aspectRatioModeEv @ 775 NONAME + _ZNK12QVideoWidget3hueEv @ 776 NONAME + _ZNK12QVideoWidget8contrastEv @ 777 NONAME + _ZNK12QVideoWidget8sizeHintEv @ 778 NONAME + _ZNK13QMediaContent12canonicalUrlEv @ 779 NONAME + _ZNK13QMediaContent16canonicalRequestEv @ 780 NONAME + _ZNK13QMediaContent17canonicalResourceEv @ 781 NONAME + _ZNK13QMediaContent6isNullEv @ 782 NONAME + _ZNK13QMediaContent9resourcesEv @ 783 NONAME + _ZNK13QMediaContenteqERKS_ @ 784 NONAME + _ZNK13QMediaContentneERKS_ @ 785 NONAME + _ZNK13QMediaControl10metaObjectEv @ 786 NONAME + _ZNK13QMediaService10metaObjectEv @ 787 NONAME + _ZNK14QMediaPlaylist10isReadOnlyEv @ 788 NONAME + _ZNK14QMediaPlaylist10mediaCountEv @ 789 NONAME + _ZNK14QMediaPlaylist10metaObjectEv @ 790 NONAME + _ZNK14QMediaPlaylist11errorStringEv @ 791 NONAME + _ZNK14QMediaPlaylist11mediaObjectEv @ 792 NONAME + _ZNK14QMediaPlaylist12currentIndexEv @ 793 NONAME + _ZNK14QMediaPlaylist12currentMediaEv @ 794 NONAME + _ZNK14QMediaPlaylist12playbackModeEv @ 795 NONAME + _ZNK14QMediaPlaylist13previousIndexEi @ 796 NONAME + _ZNK14QMediaPlaylist5errorEv @ 797 NONAME + _ZNK14QMediaPlaylist5mediaEi @ 798 NONAME + _ZNK14QMediaPlaylist7isEmptyEv @ 799 NONAME + _ZNK14QMediaPlaylist9nextIndexEi @ 800 NONAME + _ZNK14QMediaResource10audioCodecEv @ 801 NONAME + _ZNK14QMediaResource10resolutionEv @ 802 NONAME + _ZNK14QMediaResource10sampleRateEv @ 803 NONAME + _ZNK14QMediaResource10videoCodecEv @ 804 NONAME + _ZNK14QMediaResource12audioBitRateEv @ 805 NONAME + _ZNK14QMediaResource12channelCountEv @ 806 NONAME + _ZNK14QMediaResource12videoBitRateEv @ 807 NONAME + _ZNK14QMediaResource3urlEv @ 808 NONAME + _ZNK14QMediaResource6isNullEv @ 809 NONAME + _ZNK14QMediaResource7requestEv @ 810 NONAME + _ZNK14QMediaResource8dataSizeEv @ 811 NONAME + _ZNK14QMediaResource8languageEv @ 812 NONAME + _ZNK14QMediaResource8mimeTypeEv @ 813 NONAME + _ZNK14QMediaResourceeqERKS_ @ 814 NONAME + _ZNK14QMediaResourceneERKS_ @ 815 NONAME + _ZNK15QMediaTimeRange10latestTimeEv @ 816 NONAME + _ZNK15QMediaTimeRange12earliestTimeEv @ 817 NONAME + _ZNK15QMediaTimeRange12isContinuousEv @ 818 NONAME + _ZNK15QMediaTimeRange7isEmptyEv @ 819 NONAME + _ZNK15QMediaTimeRange8containsEx @ 820 NONAME + _ZNK15QMediaTimeRange9intervalsEv @ 821 NONAME + _ZNK16QAudioDeviceInfo20supportedSampleRatesEv @ 822 NONAME + _ZNK16QAudioDeviceInfo22supportedChannelCountsEv @ 823 NONAME + _ZNK16QMetaDataControl10metaObjectEv @ 824 NONAME + _ZNK18QGraphicsVideoItem10metaObjectEv @ 825 NONAME + _ZNK18QGraphicsVideoItem10nativeSizeEv @ 826 NONAME + _ZNK18QGraphicsVideoItem11mediaObjectEv @ 827 NONAME + _ZNK18QGraphicsVideoItem12boundingRectEv @ 828 NONAME + _ZNK18QGraphicsVideoItem15aspectRatioModeEv @ 829 NONAME + _ZNK18QGraphicsVideoItem4sizeEv @ 830 NONAME + _ZNK18QGraphicsVideoItem6offsetEv @ 831 NONAME + _ZNK18QMediaTimeInterval10normalizedEv @ 832 NONAME + _ZNK18QMediaTimeInterval10translatedEx @ 833 NONAME + _ZNK18QMediaTimeInterval3endEv @ 834 NONAME + _ZNK18QMediaTimeInterval5startEv @ 835 NONAME + _ZNK18QMediaTimeInterval8containsEx @ 836 NONAME + _ZNK18QMediaTimeInterval8isNormalEv @ 837 NONAME + _ZNK19QMediaPlayerControl10metaObjectEv @ 838 NONAME + _ZNK19QVideoDeviceControl10metaObjectEv @ 839 NONAME + _ZNK19QVideoOutputControl10metaObjectEv @ 840 NONAME + _ZNK19QVideoWidgetControl10metaObjectEv @ 841 NONAME + _ZNK19QVideoWindowControl10metaObjectEv @ 842 NONAME + _ZNK20QPainterVideoSurface10brightnessEv @ 843 NONAME + _ZNK20QPainterVideoSurface10metaObjectEv @ 844 NONAME + _ZNK20QPainterVideoSurface10saturationEv @ 845 NONAME + _ZNK20QPainterVideoSurface17isFormatSupportedERK19QVideoSurfaceFormatPS0_ @ 846 NONAME + _ZNK20QPainterVideoSurface21supportedPixelFormatsEN20QAbstractVideoBuffer10HandleTypeE @ 847 NONAME + _ZNK20QPainterVideoSurface3hueEv @ 848 NONAME + _ZNK20QPainterVideoSurface7isReadyEv @ 849 NONAME + _ZNK20QPainterVideoSurface8contrastEv @ 850 NONAME + _ZNK21QMediaPlaylistControl10metaObjectEv @ 851 NONAME + _ZNK21QMediaServiceProvider10hasSupportERK10QByteArrayRK7QStringRK11QStringListi @ 852 NONAME + _ZNK21QMediaServiceProvider10metaObjectEv @ 853 NONAME + _ZNK21QMediaServiceProvider18supportedMimeTypesERK10QByteArrayi @ 854 NONAME + _ZNK21QMediaServiceProvider7devicesERK10QByteArray @ 855 NONAME + _ZNK21QVideoRendererControl10metaObjectEv @ 856 NONAME + _ZNK22QMediaPlaylistIOPlugin10metaObjectEv @ 857 NONAME + _ZNK22QMediaPlaylistProvider10isReadOnlyEv @ 858 NONAME + _ZNK22QMediaPlaylistProvider10metaObjectEv @ 859 NONAME + _ZNK23QMediaPlaylistNavigator10metaObjectEv @ 860 NONAME + _ZNK23QMediaPlaylistNavigator11currentItemEv @ 861 NONAME + _ZNK23QMediaPlaylistNavigator12currentIndexEv @ 862 NONAME + _ZNK23QMediaPlaylistNavigator12playbackModeEv @ 863 NONAME + _ZNK23QMediaPlaylistNavigator12previousItemEi @ 864 NONAME + _ZNK23QMediaPlaylistNavigator13previousIndexEi @ 865 NONAME + _ZNK23QMediaPlaylistNavigator6itemAtEi @ 866 NONAME + _ZNK23QMediaPlaylistNavigator8nextItemEi @ 867 NONAME + _ZNK23QMediaPlaylistNavigator8playlistEv @ 868 NONAME + _ZNK23QMediaPlaylistNavigator9nextIndexEi @ 869 NONAME + _ZNK25QMediaServiceProviderHint4typeEv @ 870 NONAME + _ZNK25QMediaServiceProviderHint6codecsEv @ 871 NONAME + _ZNK25QMediaServiceProviderHint6deviceEv @ 872 NONAME + _ZNK25QMediaServiceProviderHint6isNullEv @ 873 NONAME + _ZNK25QMediaServiceProviderHint8featuresEv @ 874 NONAME + _ZNK25QMediaServiceProviderHint8mimeTypeEv @ 875 NONAME + _ZNK25QMediaServiceProviderHinteqERKS_ @ 876 NONAME + _ZNK25QMediaServiceProviderHintneERKS_ @ 877 NONAME + _ZNK27QLocalMediaPlaylistProvider10isReadOnlyEv @ 878 NONAME + _ZNK27QLocalMediaPlaylistProvider10mediaCountEv @ 879 NONAME + _ZNK27QLocalMediaPlaylistProvider10metaObjectEv @ 880 NONAME + _ZNK27QLocalMediaPlaylistProvider5mediaEi @ 881 NONAME + _ZNK27QMediaServiceProviderPlugin10metaObjectEv @ 882 NONAME + _ZTI12QMediaObject @ 883 NONAME + _ZTI12QMediaPlayer @ 884 NONAME + _ZTI12QVideoWidget @ 885 NONAME + _ZTI13QMediaControl @ 886 NONAME + _ZTI13QMediaService @ 887 NONAME + _ZTI14QMediaPlaylist @ 888 NONAME + _ZTI16QMetaDataControl @ 889 NONAME + _ZTI18QGraphicsVideoItem @ 890 NONAME + _ZTI19QMediaPlayerControl @ 891 NONAME + _ZTI19QVideoDeviceControl @ 892 NONAME + _ZTI19QVideoOutputControl @ 893 NONAME + _ZTI19QVideoWidgetControl @ 894 NONAME + _ZTI19QVideoWindowControl @ 895 NONAME + _ZTI20QMediaPlaylistReader @ 896 NONAME + _ZTI20QMediaPlaylistWriter @ 897 NONAME + _ZTI20QPainterVideoSurface @ 898 NONAME + _ZTI21QMediaPlaylistControl @ 899 NONAME + _ZTI21QMediaServiceProvider @ 900 NONAME + _ZTI21QVideoRendererControl @ 901 NONAME + _ZTI22QMediaPlaylistIOPlugin @ 902 NONAME + _ZTI22QMediaPlaylistProvider @ 903 NONAME + _ZTI23QMediaPlaylistNavigator @ 904 NONAME + _ZTI25QMediaPlaylistIOInterface @ 905 NONAME + _ZTI27QLocalMediaPlaylistProvider @ 906 NONAME + _ZTI27QMediaServiceProviderPlugin @ 907 NONAME + _ZTI37QMediaServiceProviderFactoryInterface @ 908 NONAME + _ZTV12QMediaObject @ 909 NONAME + _ZTV12QMediaPlayer @ 910 NONAME + _ZTV12QVideoWidget @ 911 NONAME + _ZTV13QMediaControl @ 912 NONAME + _ZTV13QMediaService @ 913 NONAME + _ZTV14QMediaPlaylist @ 914 NONAME + _ZTV16QMetaDataControl @ 915 NONAME + _ZTV18QGraphicsVideoItem @ 916 NONAME + _ZTV19QMediaPlayerControl @ 917 NONAME + _ZTV19QVideoDeviceControl @ 918 NONAME + _ZTV19QVideoOutputControl @ 919 NONAME + _ZTV19QVideoWidgetControl @ 920 NONAME + _ZTV19QVideoWindowControl @ 921 NONAME + _ZTV20QMediaPlaylistReader @ 922 NONAME + _ZTV20QMediaPlaylistWriter @ 923 NONAME + _ZTV20QPainterVideoSurface @ 924 NONAME + _ZTV21QMediaPlaylistControl @ 925 NONAME + _ZTV21QMediaServiceProvider @ 926 NONAME + _ZTV21QVideoRendererControl @ 927 NONAME + _ZTV22QMediaPlaylistIOPlugin @ 928 NONAME + _ZTV22QMediaPlaylistProvider @ 929 NONAME + _ZTV23QMediaPlaylistNavigator @ 930 NONAME + _ZTV27QLocalMediaPlaylistProvider @ 931 NONAME + _ZTV27QMediaServiceProviderPlugin @ 932 NONAME + _ZThn8_N12QVideoWidgetD0Ev @ 933 NONAME + _ZThn8_N12QVideoWidgetD1Ev @ 934 NONAME + _ZThn8_N18QGraphicsVideoItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 935 NONAME + _ZThn8_N18QGraphicsVideoItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 936 NONAME + _ZThn8_N18QGraphicsVideoItemD0Ev @ 937 NONAME + _ZThn8_N18QGraphicsVideoItemD1Ev @ 938 NONAME + _ZThn8_N22QMediaPlaylistIOPluginD0Ev @ 939 NONAME + _ZThn8_N22QMediaPlaylistIOPluginD1Ev @ 940 NONAME + _ZThn8_NK18QGraphicsVideoItem12boundingRectEv @ 941 NONAME + _ZeqRK15QMediaTimeRangeS1_ @ 942 NONAME + _ZeqRK18QMediaTimeIntervalS1_ @ 943 NONAME + _ZmiRK15QMediaTimeRangeS1_ @ 944 NONAME + _ZneRK15QMediaTimeRangeS1_ @ 945 NONAME + _ZneRK18QMediaTimeIntervalS1_ @ 946 NONAME + _ZplRK15QMediaTimeRangeS1_ @ 947 NONAME diff --git a/src/s60installs/eabi/QtNetworku.def b/src/s60installs/eabi/QtNetworku.def index c37c4a0..a27c4be 100644 --- a/src/s60installs/eabi/QtNetworku.def +++ b/src/s60installs/eabi/QtNetworku.def @@ -993,4 +993,161 @@ EXPORTS _ZN10QSslSocket15setSocketOptionEN15QAbstractSocket12SocketOptionERK8QVariant @ 992 NONAME _ZN15QNetworkRequest20setOriginatingObjectEP7QObject @ 993 NONAME _ZNK15QNetworkRequest17originatingObjectEv @ 994 NONAME + _Z35qNetworkConfigurationManagerPrivatev @ 995 NONAME + _ZN13QBearerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 996 NONAME + _ZN13QBearerEngine11qt_metacastEPKc @ 997 NONAME + _ZN13QBearerEngine15updateCompletedEv @ 998 NONAME + _ZN13QBearerEngine16staticMetaObjectE @ 999 NONAME DATA 16 + _ZN13QBearerEngine18configurationAddedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1000 NONAME + _ZN13QBearerEngine19getStaticMetaObjectEv @ 1001 NONAME + _ZN13QBearerEngine20configurationChangedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1002 NONAME + _ZN13QBearerEngine20configurationRemovedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1003 NONAME + _ZN13QBearerEngineC2EP7QObject @ 1004 NONAME + _ZN13QBearerEngineD0Ev @ 1005 NONAME + _ZN13QBearerEngineD1Ev @ 1006 NONAME + _ZN13QBearerEngineD2Ev @ 1007 NONAME + _ZN15QNetworkRequest11setPriorityENS_8PriorityE @ 1008 NONAME + _ZN15QNetworkSession11qt_metacallEN11QMetaObject4CallEiPPv @ 1009 NONAME + _ZN15QNetworkSession11qt_metacastEPKc @ 1010 NONAME + _ZN15QNetworkSession12stateChangedENS_5StateE @ 1011 NONAME + _ZN15QNetworkSession13connectNotifyEPKc @ 1012 NONAME + _ZN15QNetworkSession13waitForOpenedEi @ 1013 NONAME + _ZN15QNetworkSession16disconnectNotifyEPKc @ 1014 NONAME + _ZN15QNetworkSession16staticMetaObjectE @ 1015 NONAME DATA 16 + _ZN15QNetworkSession18setSessionPropertyERK7QStringRK8QVariant @ 1016 NONAME + _ZN15QNetworkSession19getStaticMetaObjectEv @ 1017 NONAME + _ZN15QNetworkSession25newConfigurationActivatedEv @ 1018 NONAME + _ZN15QNetworkSession29preferredConfigurationChangedERK21QNetworkConfigurationb @ 1019 NONAME + _ZN15QNetworkSession4openEv @ 1020 NONAME + _ZN15QNetworkSession4stopEv @ 1021 NONAME + _ZN15QNetworkSession5closeEv @ 1022 NONAME + _ZN15QNetworkSession5errorENS_12SessionErrorE @ 1023 NONAME + _ZN15QNetworkSession6acceptEv @ 1024 NONAME + _ZN15QNetworkSession6closedEv @ 1025 NONAME + _ZN15QNetworkSession6ignoreEv @ 1026 NONAME + _ZN15QNetworkSession6openedEv @ 1027 NONAME + _ZN15QNetworkSession6rejectEv @ 1028 NONAME + _ZN15QNetworkSession7migrateEv @ 1029 NONAME + _ZN15QNetworkSessionC1ERK21QNetworkConfigurationP7QObject @ 1030 NONAME + _ZN15QNetworkSessionC2ERK21QNetworkConfigurationP7QObject @ 1031 NONAME + _ZN15QNetworkSessionD0Ev @ 1032 NONAME + _ZN15QNetworkSessionD1Ev @ 1033 NONAME + _ZN15QNetworkSessionD2Ev @ 1034 NONAME + _ZN19QBearerEnginePlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 1035 NONAME + _ZN19QBearerEnginePlugin11qt_metacastEPKc @ 1036 NONAME + _ZN19QBearerEnginePlugin16staticMetaObjectE @ 1037 NONAME DATA 16 + _ZN19QBearerEnginePlugin19getStaticMetaObjectEv @ 1038 NONAME + _ZN19QBearerEnginePluginC2EP7QObject @ 1039 NONAME + _ZN19QBearerEnginePluginD0Ev @ 1040 NONAME + _ZN19QBearerEnginePluginD1Ev @ 1041 NONAME + _ZN19QBearerEnginePluginD2Ev @ 1042 NONAME + _ZN21QNetworkAccessManager16setConfigurationERK21QNetworkConfiguration @ 1043 NONAME + _ZN21QNetworkAccessManager17sendCustomRequestERK15QNetworkRequestRK10QByteArrayP9QIODevice @ 1044 NONAME + _ZN21QNetworkAccessManager20networkAccessChangedEb @ 1045 NONAME + _ZN21QNetworkAccessManager20networkSessionOnlineEv @ 1046 NONAME + _ZN21QNetworkAccessManager23setNetworkAccessEnabledEb @ 1047 NONAME + _ZN21QNetworkConfigurationC1ERKS_ @ 1048 NONAME + _ZN21QNetworkConfigurationC1Ev @ 1049 NONAME + _ZN21QNetworkConfigurationC2ERKS_ @ 1050 NONAME + _ZN21QNetworkConfigurationC2Ev @ 1051 NONAME + _ZN21QNetworkConfigurationD1Ev @ 1052 NONAME + _ZN21QNetworkConfigurationD2Ev @ 1053 NONAME + _ZN21QNetworkConfigurationaSERKS_ @ 1054 NONAME + _ZN22QNetworkSessionPrivate11qt_metacallEN11QMetaObject4CallEiPPv @ 1055 NONAME + _ZN22QNetworkSessionPrivate11qt_metacastEPKc @ 1056 NONAME + _ZN22QNetworkSessionPrivate12stateChangedEN15QNetworkSession5StateE @ 1057 NONAME + _ZN22QNetworkSessionPrivate16staticMetaObjectE @ 1058 NONAME DATA 16 + _ZN22QNetworkSessionPrivate19getStaticMetaObjectEv @ 1059 NONAME + _ZN22QNetworkSessionPrivate25newConfigurationActivatedEv @ 1060 NONAME + _ZN22QNetworkSessionPrivate25quitPendingWaitsForOpenedEv @ 1061 NONAME + _ZN22QNetworkSessionPrivate29preferredConfigurationChangedERK21QNetworkConfigurationb @ 1062 NONAME + _ZN22QNetworkSessionPrivate5errorEN15QNetworkSession12SessionErrorE @ 1063 NONAME + _ZN22QNetworkSessionPrivate6closedEv @ 1064 NONAME + _ZN28QNetworkConfigurationManager11qt_metacallEN11QMetaObject4CallEiPPv @ 1065 NONAME + _ZN28QNetworkConfigurationManager11qt_metacastEPKc @ 1066 NONAME + _ZN28QNetworkConfigurationManager15updateCompletedEv @ 1067 NONAME + _ZN28QNetworkConfigurationManager16staticMetaObjectE @ 1068 NONAME DATA 16 + _ZN28QNetworkConfigurationManager18configurationAddedERK21QNetworkConfiguration @ 1069 NONAME + _ZN28QNetworkConfigurationManager18onlineStateChangedEb @ 1070 NONAME + _ZN28QNetworkConfigurationManager19getStaticMetaObjectEv @ 1071 NONAME + _ZN28QNetworkConfigurationManager20configurationChangedERK21QNetworkConfiguration @ 1072 NONAME + _ZN28QNetworkConfigurationManager20configurationRemovedERK21QNetworkConfiguration @ 1073 NONAME + _ZN28QNetworkConfigurationManager20updateConfigurationsEv @ 1074 NONAME + _ZN28QNetworkConfigurationManagerC1EP7QObject @ 1075 NONAME + _ZN28QNetworkConfigurationManagerC2EP7QObject @ 1076 NONAME + _ZN28QNetworkConfigurationManagerD0Ev @ 1077 NONAME + _ZN28QNetworkConfigurationManagerD1Ev @ 1078 NONAME + _ZN28QNetworkConfigurationManagerD2Ev @ 1079 NONAME + _ZN35QNetworkConfigurationManagerPrivate11qt_metacallEN11QMetaObject4CallEiPPv @ 1080 NONAME + _ZN35QNetworkConfigurationManagerPrivate11qt_metacastEPKc @ 1081 NONAME + _ZN35QNetworkConfigurationManagerPrivate16staticMetaObjectE @ 1082 NONAME DATA 16 + _ZN35QNetworkConfigurationManagerPrivate18configurationAddedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1083 NONAME + _ZN35QNetworkConfigurationManagerPrivate18configurationAddedERK21QNetworkConfiguration @ 1084 NONAME + _ZN35QNetworkConfigurationManagerPrivate18onlineStateChangedEb @ 1085 NONAME + _ZN35QNetworkConfigurationManagerPrivate19getStaticMetaObjectEv @ 1086 NONAME + _ZN35QNetworkConfigurationManagerPrivate20configurationChangedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1087 NONAME + _ZN35QNetworkConfigurationManagerPrivate20configurationChangedERK21QNetworkConfiguration @ 1088 NONAME + _ZN35QNetworkConfigurationManagerPrivate20configurationRemovedE28QExplicitlySharedDataPointerI28QNetworkConfigurationPrivateE @ 1089 NONAME + _ZN35QNetworkConfigurationManagerPrivate20configurationRemovedERK21QNetworkConfiguration @ 1090 NONAME + _ZN35QNetworkConfigurationManagerPrivate20updateConfigurationsEv @ 1091 NONAME + _ZN35QNetworkConfigurationManagerPrivate27configurationUpdateCompleteEv @ 1092 NONAME + _ZN35QNetworkConfigurationManagerPrivate31performAsyncConfigurationUpdateEv @ 1093 NONAME + _ZN35QNetworkConfigurationManagerPrivate5abortEv @ 1094 NONAME + _ZN35QNetworkConfigurationManagerPrivate7enginesEv @ 1095 NONAME + _ZN35QNetworkConfigurationManagerPrivateC1Ev @ 1096 NONAME + _ZN35QNetworkConfigurationManagerPrivateC2Ev @ 1097 NONAME + _ZN35QNetworkConfigurationManagerPrivateD0Ev @ 1098 NONAME + _ZN35QNetworkConfigurationManagerPrivateD1Ev @ 1099 NONAME + _ZN35QNetworkConfigurationManagerPrivateD2Ev @ 1100 NONAME + _ZNK13QBearerEngine10metaObjectEv @ 1101 NONAME + _ZNK13QNetworkReply14rawHeaderPairsEv @ 1102 NONAME + _ZNK15QNetworkRequest8priorityEv @ 1103 NONAME + _ZNK15QNetworkSession10activeTimeEv @ 1104 NONAME + _ZNK15QNetworkSession10metaObjectEv @ 1105 NONAME + _ZNK15QNetworkSession11errorStringEv @ 1106 NONAME + _ZNK15QNetworkSession12bytesWrittenEv @ 1107 NONAME + _ZNK15QNetworkSession13bytesReceivedEv @ 1108 NONAME + _ZNK15QNetworkSession13configurationEv @ 1109 NONAME + _ZNK15QNetworkSession15sessionPropertyERK7QString @ 1110 NONAME + _ZNK15QNetworkSession5errorEv @ 1111 NONAME + _ZNK15QNetworkSession5stateEv @ 1112 NONAME + _ZNK15QNetworkSession6isOpenEv @ 1113 NONAME + _ZNK15QNetworkSession9interfaceEv @ 1114 NONAME + _ZNK19QBearerEnginePlugin10metaObjectEv @ 1115 NONAME + _ZNK21QNetworkAccessManager13configurationEv @ 1116 NONAME + _ZNK21QNetworkAccessManager19activeConfigurationEv @ 1117 NONAME + _ZNK21QNetworkAccessManager20networkAccessEnabledEv @ 1118 NONAME + _ZNK21QNetworkConfiguration10bearerNameEv @ 1119 NONAME + _ZNK21QNetworkConfiguration10identifierEv @ 1120 NONAME + _ZNK21QNetworkConfiguration18isRoamingAvailableEv @ 1121 NONAME + _ZNK21QNetworkConfiguration4nameEv @ 1122 NONAME + _ZNK21QNetworkConfiguration4typeEv @ 1123 NONAME + _ZNK21QNetworkConfiguration5stateEv @ 1124 NONAME + _ZNK21QNetworkConfiguration7isValidEv @ 1125 NONAME + _ZNK21QNetworkConfiguration7purposeEv @ 1126 NONAME + _ZNK21QNetworkConfiguration8childrenEv @ 1127 NONAME + _ZNK21QNetworkConfigurationeqERKS_ @ 1128 NONAME + _ZNK22QNetworkSessionPrivate10metaObjectEv @ 1129 NONAME + _ZNK28QNetworkConfigurationManager10metaObjectEv @ 1130 NONAME + _ZNK28QNetworkConfigurationManager12capabilitiesEv @ 1131 NONAME + _ZNK28QNetworkConfigurationManager17allConfigurationsE6QFlagsIN21QNetworkConfiguration9StateFlagEE @ 1132 NONAME + _ZNK28QNetworkConfigurationManager20defaultConfigurationEv @ 1133 NONAME + _ZNK28QNetworkConfigurationManager27configurationFromIdentifierERK7QString @ 1134 NONAME + _ZNK28QNetworkConfigurationManager8isOnlineEv @ 1135 NONAME + _ZNK35QNetworkConfigurationManagerPrivate10metaObjectEv @ 1136 NONAME + _ZTI13QBearerEngine @ 1137 NONAME + _ZTI15QNetworkSession @ 1138 NONAME + _ZTI19QBearerEnginePlugin @ 1139 NONAME + _ZTI22QNetworkSessionPrivate @ 1140 NONAME + _ZTI28QNetworkConfigurationManager @ 1141 NONAME + _ZTI29QBearerEngineFactoryInterface @ 1142 NONAME + _ZTI35QNetworkConfigurationManagerPrivate @ 1143 NONAME + _ZTV13QBearerEngine @ 1144 NONAME + _ZTV15QNetworkSession @ 1145 NONAME + _ZTV19QBearerEnginePlugin @ 1146 NONAME + _ZTV22QNetworkSessionPrivate @ 1147 NONAME + _ZTV28QNetworkConfigurationManager @ 1148 NONAME + _ZTV35QNetworkConfigurationManagerPrivate @ 1149 NONAME + _ZThn8_N19QBearerEnginePluginD0Ev @ 1150 NONAME + _ZThn8_N19QBearerEnginePluginD1Ev @ 1151 NONAME diff --git a/src/s60installs/eabi/QtScriptu.def b/src/s60installs/eabi/QtScriptu.def index 8a4be2c..6a70ed3 100644 --- a/src/s60installs/eabi/QtScriptu.def +++ b/src/s60installs/eabi/QtScriptu.def @@ -394,4 +394,45 @@ EXPORTS _ZTI23QScriptDeclarativeClass @ 393 NONAME _ZTV23QScriptDeclarativeClass @ 394 NONAME _ZNK23QScriptDeclarativeClass9isQObjectEv @ 395 NONAME + _ZN23QScriptDeclarativeClass13functionValueERK12QScriptValueRKPv @ 396 NONAME + _ZN23QScriptDeclarativeClass13propertyValueERK12QScriptValueRKPv @ 397 NONAME + _ZN23QScriptDeclarativeClass14newObjectValueEP13QScriptEnginePS_PNS_6ObjectE @ 398 NONAME + _ZN23QScriptDeclarativeClass15setSupportsCallEb @ 399 NONAME + _ZN23QScriptDeclarativeClass4callEPNS_6ObjectEP14QScriptContext @ 400 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP13QScriptEngineRK12QScriptValue @ 401 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP13QScriptEngineRK7QString @ 402 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP13QScriptEngineb @ 403 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP13QScriptEngined @ 404 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP13QScriptEnginef @ 405 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP13QScriptEnginei @ 406 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP13QScriptEnginej @ 407 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP14QScriptContextRK12QScriptValue @ 408 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP14QScriptContextRK7QString @ 409 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP14QScriptContextb @ 410 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP14QScriptContextd @ 411 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP14QScriptContextf @ 412 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP14QScriptContexti @ 413 NONAME + _ZN23QScriptDeclarativeClass5ValueC1EP14QScriptContextj @ 414 NONAME + _ZN23QScriptDeclarativeClass5ValueC1ERKS0_ @ 415 NONAME + _ZN23QScriptDeclarativeClass5ValueC1Ev @ 416 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP13QScriptEngineRK12QScriptValue @ 417 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP13QScriptEngineRK7QString @ 418 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP13QScriptEngineb @ 419 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP13QScriptEngined @ 420 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP13QScriptEnginef @ 421 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP13QScriptEnginei @ 422 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP13QScriptEnginej @ 423 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP14QScriptContextRK12QScriptValue @ 424 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP14QScriptContextRK7QString @ 425 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP14QScriptContextb @ 426 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP14QScriptContextd @ 427 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP14QScriptContextf @ 428 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP14QScriptContexti @ 429 NONAME + _ZN23QScriptDeclarativeClass5ValueC2EP14QScriptContextj @ 430 NONAME + _ZN23QScriptDeclarativeClass5ValueC2ERKS0_ @ 431 NONAME + _ZN23QScriptDeclarativeClass5ValueC2Ev @ 432 NONAME + _ZN23QScriptDeclarativeClass5ValueD1Ev @ 433 NONAME + _ZN23QScriptDeclarativeClass5ValueD2Ev @ 434 NONAME + _ZNK23QScriptDeclarativeClass12supportsCallEv @ 435 NONAME + _ZNK23QScriptDeclarativeClass5Value13toScriptValueEP13QScriptEngine @ 436 NONAME diff --git a/src/s60installs/eabi/QtTestu.def b/src/s60installs/eabi/QtTestu.def index b66ffc1..5cb95ba 100644 --- a/src/s60installs/eabi/QtTestu.def +++ b/src/s60installs/eabi/QtTestu.def @@ -69,4 +69,5 @@ EXPORTS _ZNK9QTestData9dataCountEv @ 68 NONAME _ZTI14QTestEventLoop @ 69 NONAME _ZTV14QTestEventLoop @ 70 NONAME + _ZN5QTest18setBenchmarkResultEfNS_16QBenchmarkMetricE @ 71 NONAME -- cgit v0.12 From 449a5173075786c0d8ee28cac8d790145096cc49 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Thu, 4 Mar 2010 17:28:40 +0100 Subject: Doc: Fixed typos. Reviewed-by: Trust Me --- src/corelib/tools/qtextboundaryfinder.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/corelib/tools/qtextboundaryfinder.cpp b/src/corelib/tools/qtextboundaryfinder.cpp index 7c40e35..9205297 100644 --- a/src/corelib/tools/qtextboundaryfinder.cpp +++ b/src/corelib/tools/qtextboundaryfinder.cpp @@ -100,7 +100,8 @@ static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int HB_GetSentenceBoundaries(string, length, scriptItems.data(), scriptItems.count(), attributes); } -/*! \class QTextBoundaryFinder +/*! + \class QTextBoundaryFinder \brief The QTextBoundaryFinder class provides a way of finding Unicode text boundaries in a string. @@ -331,7 +332,7 @@ QString QTextBoundaryFinder::string() const /*! Moves the QTextBoundaryFinder to the next boundary position and returns that position. - Returns -1 is there is no next boundary. + Returns -1 if there is no next boundary. */ int QTextBoundaryFinder::toNextBoundary() { @@ -373,7 +374,7 @@ int QTextBoundaryFinder::toNextBoundary() /*! Moves the QTextBoundaryFinder to the previous boundary position and returns that position. - Returns -1 is there is no previous boundary. + Returns -1 if there is no previous boundary. */ int QTextBoundaryFinder::toPreviousBoundary() { -- cgit v0.12 From 5aca5d430a6e626e3899925bf92b75e4906b6cd8 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Thu, 4 Mar 2010 17:48:55 +0100 Subject: Doc: Fixed the row number for a widget in two parts of the tutorial. Task-number: QTBUG-7152 Reviewed-by: Trust Me --- examples/tutorials/addressbook/part3/addressbook.cpp | 2 +- examples/tutorials/addressbook/part4/addressbook.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/tutorials/addressbook/part3/addressbook.cpp b/examples/tutorials/addressbook/part3/addressbook.cpp index 59b297a..5b39159 100644 --- a/examples/tutorials/addressbook/part3/addressbook.cpp +++ b/examples/tutorials/addressbook/part3/addressbook.cpp @@ -91,7 +91,7 @@ AddressBook::AddressBook(QWidget *parent) mainLayout->addWidget(addressText, 1, 1); mainLayout->addLayout(buttonLayout1, 1, 2); //! [adding navigation layout] - mainLayout->addLayout(buttonLayout2, 3, 1); + mainLayout->addLayout(buttonLayout2, 2, 1); //! [adding navigation layout] setLayout(mainLayout); setWindowTitle(tr("Simple Address Book")); diff --git a/examples/tutorials/addressbook/part4/addressbook.cpp b/examples/tutorials/addressbook/part4/addressbook.cpp index e4e451f..a4bf459 100644 --- a/examples/tutorials/addressbook/part4/addressbook.cpp +++ b/examples/tutorials/addressbook/part4/addressbook.cpp @@ -100,7 +100,7 @@ AddressBook::AddressBook(QWidget *parent) mainLayout->addWidget(addressLabel, 1, 0, Qt::AlignTop); mainLayout->addWidget(addressText, 1, 1); mainLayout->addLayout(buttonLayout1, 1, 2); - mainLayout->addLayout(buttonLayout2, 3, 1); + mainLayout->addLayout(buttonLayout2, 2, 1); setLayout(mainLayout); setWindowTitle(tr("Simple Address Book")); -- cgit v0.12 From 95786655e304a22bd922b40184d314eddb72b002 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Thu, 4 Mar 2010 18:01:24 +0100 Subject: tst_qhostinfo: Compile fix --- tests/auto/qhostinfo/tst_qhostinfo.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/auto/qhostinfo/tst_qhostinfo.cpp b/tests/auto/qhostinfo/tst_qhostinfo.cpp index ae4ffde..4282062 100644 --- a/tests/auto/qhostinfo/tst_qhostinfo.cpp +++ b/tests/auto/qhostinfo/tst_qhostinfo.cpp @@ -484,7 +484,8 @@ void tst_QHostInfo::cache() // lookup once, wait in event loop, result should not come directly. bool valid = true; - QHostInfo result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid); + int id = -1; + QHostInfo result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid, &id); QTestEventLoop::instance().enterLoop(5); QVERIFY(!QTestEventLoop::instance().timeout()); QVERIFY(valid == false); @@ -492,7 +493,7 @@ void tst_QHostInfo::cache() // loopkup second time, result should come directly valid = false; - result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid); + result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid, &id); QVERIFY(valid == true); QVERIFY(!result.addresses().isEmpty()); @@ -501,7 +502,7 @@ void tst_QHostInfo::cache() // lookup third time, result should not come directly. valid = true; - result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid); + result = qt_qhostinfo_lookup("localhost", this, SLOT(resultsReady(QHostInfo)), &valid, &id); QTestEventLoop::instance().enterLoop(5); QVERIFY(!QTestEventLoop::instance().timeout()); QVERIFY(valid == false); -- cgit v0.12 From 85655807c660b9252795648384b8f629ce533c5e Mon Sep 17 00:00:00 2001 From: David Boddie Date: Thu, 4 Mar 2010 18:11:33 +0100 Subject: Doc: Added a note about the lack of standard file copy/paste on X11. Reviewed-by: Trust Me Reported-by: Pierre Rossi --- src/gui/kernel/qclipboard.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gui/kernel/qclipboard.cpp b/src/gui/kernel/qclipboard.cpp index a59bb98..f7c0b6e 100644 --- a/src/gui/kernel/qclipboard.cpp +++ b/src/gui/kernel/qclipboard.cpp @@ -107,6 +107,12 @@ QT_BEGIN_NAMESPACE store or retrieve the clipboard contents in response to timer or non-user-input events. + \i Since there is no standard way to copy and paste files between + applications on X11, various MIME types and conventions are currently + in use. For instance, Nautilus expects files to be supplied with a + \c{x-special/gnome-copied-files} MIME type with data beginning with + the cut/copy action, a newline character, and the URL of the file. + \endlist \section1 Notes for Mac OS X Users -- cgit v0.12 From 4f2203e481cc1663776e7b87b082cf0dd42849fd Mon Sep 17 00:00:00 2001 From: David Boddie Date: Thu, 4 Mar 2010 18:32:13 +0100 Subject: Doc: Applied suggestion for an improvement to the foreach documentation. Task-number: QTBUG-6153 Reviewed-by: Trust Me --- doc/src/frameworks-technologies/containers.qdoc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/src/frameworks-technologies/containers.qdoc b/doc/src/frameworks-technologies/containers.qdoc index 86920fd..505b65c 100644 --- a/doc/src/frameworks-technologies/containers.qdoc +++ b/doc/src/frameworks-technologies/containers.qdoc @@ -612,11 +612,14 @@ Qt automatically takes a copy of the container when it enters a \c foreach loop. If you modify the container as you are - iterating, that won't affect the loop. (If you don't modify the + iterating, that won't affect the loop. (If you do not modify the container, the copy still takes place, but thanks to \l{implicit - sharing} copying a container is very fast.) Similarly, declaring - the variable to be a non-const reference, in order to modify the - current item in the list will not work either. + sharing} copying a container is very fast.) + + Since foreach creates a copy of the container, using a non-const + reference for the variable does not allow you to modify the original + container. It only affects the copy, which is probably not what you + want. In addition to \c foreach, Qt also provides a \c forever pseudo-keyword for infinite loops: -- cgit v0.12 From 778b9dcb5ad6aba8b0548719c2674e3e6ad66c58 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Thu, 4 Mar 2010 18:27:46 +0100 Subject: Change WINSCW include paths to use same rules as ARMCC The default rules applied by symbian cause problems with headers included from within other headers. This only affects WINSCW builds, so the headers always need to be specially fixed up to be compatible, which is wrong. Instead, use CXXFLAGS to change the include path rules to be the same as Reviewed-by: Iain --- mkspecs/common/symbian/symbian.conf | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf index 48a28b7..9c5bcf4 100644 --- a/mkspecs/common/symbian/symbian.conf +++ b/mkspecs/common/symbian/symbian.conf @@ -28,7 +28,12 @@ QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses QMAKE_CXX = g++ QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -QMAKE_CXXFLAGS.CW = +# Symbian build system applies -cwd source on the MWCC command line. +# this causes problems with include paths, -cwd include uses the same +# rules for include paths as ARMCC +# This should really be fixed in raptor, as using CXXFLAGS means we pass +# both on the command line and rely on the compiler using the last specified +QMAKE_CXXFLAGS.CW = -cwd include QMAKE_CXXFLAGS.ARMCC = --visibility_inlines_hidden QMAKE_CXXFLAGS.GCCE = -fvisibility-inlines-hidden QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS -- cgit v0.12 From 364ba2bfeeab574d2ae940e4387d3c90b2a46dcd Mon Sep 17 00:00:00 2001 From: Robert Loehning Date: Thu, 4 Mar 2010 18:40:22 +0100 Subject: Updated URLs. Reviewed-by: Erik Verbruggen --- dist/changes-4.5.4 | 2 +- dist/changes-4.7.0 | 4 ++-- doc/src/declarative/basictypes.qdoc | 2 +- tools/qdoc3/test/qdeclarative.qdocconf | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dist/changes-4.5.4 b/dist/changes-4.5.4 index abaf4f0..e60e507 100644 --- a/dist/changes-4.5.4 +++ b/dist/changes-4.5.4 @@ -11,7 +11,7 @@ Applications compiled for 4.4 will continue to run with 4.5. Some of the changes listed in this file include issue tracking numbers corresponding to tasks in the Task Tracker: - http://www.qtsoftware.com/developer/task-tracker + http://qt.nokia.com/developer/task-tracker Each of these identifiers can be entered in the task tracker to obtain more information about a particular change. diff --git a/dist/changes-4.7.0 b/dist/changes-4.7.0 index 4d776ee..76fa7f8 100644 --- a/dist/changes-4.7.0 +++ b/dist/changes-4.7.0 @@ -2,7 +2,7 @@ Qt 4.7 introduces many new features and improvements as well as bugfixes over the 4.6.x series. For more details, refer to the online documentation included in this distribution. The documentation is also available online: - http://doc.trolltech.com/4.7 + http://qt.nokia.com/doc/4.7 The Qt version 4.7 series is binary compatible with the 4.6.x series. Applications compiled for 4.6 will continue to run with 4.7. @@ -10,7 +10,7 @@ Applications compiled for 4.6 will continue to run with 4.7. Some of the changes listed in this file include issue tracking numbers corresponding to tasks in the Task Tracker: - http://www.qtsoftware.com/developer/task-tracker + http://qt.nokia.com/developer/task-tracker Each of these identifiers can be entered in the task tracker to obtain more information about a particular change. diff --git a/doc/src/declarative/basictypes.qdoc b/doc/src/declarative/basictypes.qdoc index c60847e..6901947 100644 --- a/doc/src/declarative/basictypes.qdoc +++ b/doc/src/declarative/basictypes.qdoc @@ -128,7 +128,7 @@ \brief A URL is a resource locator, like a file name. A URL is a resource locator, like a file name. It can be either - absolute, e.g. "http://qtsoftware.com", or relative, e.g. + absolute, e.g. "http://qt.nokia.com", or relative, e.g. "pics/logo.png". A relative URL is resolved relative to the URL of the component where the URL is converted from a JavaScript string expression to a url property value. diff --git a/tools/qdoc3/test/qdeclarative.qdocconf b/tools/qdoc3/test/qdeclarative.qdocconf index 3b5d8dc..e5b883a 100644 --- a/tools/qdoc3/test/qdeclarative.qdocconf +++ b/tools/qdoc3/test/qdeclarative.qdocconf @@ -6,7 +6,7 @@ include(qt-defines.qdocconf) project = Qml description = Qml Reference Documentation -url = http://doc.qtsoftware.com/4.6 +url = http://qt.nokia.com/doc/4.6/ qmlonly = true edition.Console.modules = QtCore QtDBus QtNetwork QtScript QtSql QtXml \ -- cgit v0.12 From ca89d8dc944e7af886c3b31c9d23c8957e5667ab Mon Sep 17 00:00:00 2001 From: David Boddie Date: Thu, 4 Mar 2010 20:39:04 +0100 Subject: Doc: Enabled the context menu in the spreadsheet demo. Task-number: QTBUG-5522 Reviewed-by: Trust Me --- demos/spreadsheet/spreadsheet.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/demos/spreadsheet/spreadsheet.cpp b/demos/spreadsheet/spreadsheet.cpp index 9693f3c..f2a1738 100644 --- a/demos/spreadsheet/spreadsheet.cpp +++ b/demos/spreadsheet/spreadsheet.cpp @@ -70,6 +70,7 @@ SpreadSheet::SpreadSheet(int rows, int cols, QWidget *parent) updateColor(0); setupMenuBar(); setupContents(); + setupContextMenu(); setCentralWidget(table); statusBar(); -- cgit v0.12 From 38ff49e632da2bd61ac5fb59f57f62208c2687fd Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Fri, 5 Mar 2010 09:15:19 +1000 Subject: MouseRegion is dead. Long live MouseArea. --- src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp | 1 - src/multimedia/effects/qsoundeffect.cpp | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp b/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp index e0ae2eb..25660f8 100644 --- a/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp @@ -106,7 +106,6 @@ void QDeclarativeItemModule::defineModule() QML_REGISTER_TYPE(Qt,4,6,LayoutItem,QDeclarativeLayoutItem); QML_REGISTER_TYPE(Qt,4,6,ListView,QDeclarativeListView); QML_REGISTER_TYPE(Qt,4,6,Loader,QDeclarativeLoader); - QML_REGISTER_TYPE(Qt,4,6,MouseRegion,QDeclarativeMouseArea); QML_REGISTER_TYPE(Qt,4,6,MouseArea,QDeclarativeMouseArea); QML_REGISTER_TYPE(Qt,4,6,Opacity,QGraphicsOpacityEffect); QML_REGISTER_TYPE(Qt,4,6,ParticleMotion,QDeclarativeParticleMotion); diff --git a/src/multimedia/effects/qsoundeffect.cpp b/src/multimedia/effects/qsoundeffect.cpp index 541e6c9..2694023 100644 --- a/src/multimedia/effects/qsoundeffect.cpp +++ b/src/multimedia/effects/qsoundeffect.cpp @@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE id: playSound source: "test.wav" } - MouseRegion { + MouseArea { id: playArea anchors.fill: parent onPressed: { -- cgit v0.12 From 98ade3747d44543bcb6b8a0e82cbb2c32d0cc20a Mon Sep 17 00:00:00 2001 From: Kurt Korbatits Date: Fri, 5 Mar 2010 09:41:53 +1000 Subject: Linux QAudioOutput playback stuttering Adjust buffer and period sizes if system cannot work with defaults (alsa). Task-number:QTBUG-8339 Reviewed-by:Derick Hawcroft --- src/multimedia/audio/qaudiooutput_alsa_p.cpp | 44 +++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/multimedia/audio/qaudiooutput_alsa_p.cpp b/src/multimedia/audio/qaudiooutput_alsa_p.cpp index b127103..e49c75a 100644 --- a/src/multimedia/audio/qaudiooutput_alsa_p.cpp +++ b/src/multimedia/audio/qaudiooutput_alsa_p.cpp @@ -369,10 +369,52 @@ bool QAudioOutputPrivate::open() } } if ( !fatal ) { + unsigned int maxBufferTime = 0; + unsigned int minBufferTime = 0; + unsigned int maxPeriodTime = 0; + unsigned int minPeriodTime = 0; + + err = snd_pcm_hw_params_get_buffer_time_max(hwparams, &maxBufferTime, &dir); + if ( err >= 0) + err = snd_pcm_hw_params_get_buffer_time_min(hwparams, &minBufferTime, &dir); + if ( err >= 0) + err = snd_pcm_hw_params_get_period_time_max(hwparams, &maxPeriodTime, &dir); + if ( err >= 0) + err = snd_pcm_hw_params_get_period_time_min(hwparams, &minPeriodTime, &dir); + + if ( err < 0 ) { + fatal = true; + errMessage = QString::fromLatin1("QAudioOutput: buffer/period min and max: err = %1").arg(err); + } else { + if (maxBufferTime < buffer_time || buffer_time < minBufferTime || maxPeriodTime < period_time || minPeriodTime > period_time) { +#ifdef DEBUG_AUDIO + qDebug()<<"defaults out of range"; + qDebug()<<"pmin="< Date: Fri, 5 Mar 2010 09:46:34 +1000 Subject: Add mapFromItem() and mapToItem() in QDeclarativeItem. Task-number: QT-2385 --- src/declarative/graphicsitems/qdeclarativeitem.cpp | 54 ++++++++++++++++++++ src/declarative/graphicsitems/qdeclarativeitem.h | 3 ++ .../qdeclarativeitem/data/mapCoordinates.qml | 43 ++++++++++++++++ .../qdeclarativeitem/tst_qdeclarativeitem.cpp | 58 ++++++++++++++++++++++ 4 files changed, 158 insertions(+) create mode 100644 tests/auto/declarative/qdeclarativeitem/data/mapCoordinates.qml diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index 5014fd8..cb3f542 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -43,6 +43,7 @@ #include "qdeclarativeitem.h" #include "qdeclarativeevents_p_p.h" +#include #include #include @@ -51,6 +52,7 @@ #include #include #include +#include #include #include @@ -2162,6 +2164,58 @@ void QDeclarativeItem::setKeepMouseGrab(bool keep) } /*! + \qmlmethod object Item::mapFromItem(Item item, int x, int y) + + Maps the point (\a x, \a y), which is in \a item's coordinate system, to + this item's coordinate system, and returns an object with \c x and \c y + properties matching the mapped cooordinate. + + If \a item is a \c null value, this maps the point from the coordinate + system of the root QML view. +*/ +QScriptValue QDeclarativeItem::mapFromItem(const QScriptValue &item, int x, int y) const +{ + QScriptValue sv = QDeclarativeEnginePrivate::getScriptEngine(qmlEngine(this))->newObject(); + QDeclarativeItem *itemObj = qobject_cast(item.toQObject()); + if (!itemObj && !item.isNull()) { + qWarning().nospace() << "mapFromItem() given argument " << item.toString() << " which is neither null nor an Item"; + return 0; + } + + // If QGraphicsItem::mapFromItem() is called with 0, behaves the same as mapFromScene() + QPointF p = qobject_cast(this)->mapFromItem(itemObj, x, y); + sv.setProperty("x", p.x()); + sv.setProperty("y", p.y()); + return sv; +} + +/*! + \qmlmethod object Item::mapToItem(Item item, int x, int y) + + Maps the point (\a x, \a y), which is in this item's coordinate system, to + \a item's coordinate system, and returns an object with \c x and \c y + properties matching the mapped cooordinate. + + If \a item is a \c null value, this maps \a x and \a y to the coordinate + system of the root QML view. +*/ +QScriptValue QDeclarativeItem::mapToItem(const QScriptValue &item, int x, int y) const +{ + QScriptValue sv = QDeclarativeEnginePrivate::getScriptEngine(qmlEngine(this))->newObject(); + QDeclarativeItem *itemObj = qobject_cast(item.toQObject()); + if (!itemObj && !item.isNull()) { + qWarning().nospace() << "mapToItem() given argument " << item.toString() << " which is neither null nor an Item"; + return 0; + } + + // If QGraphicsItem::mapToItem() is called with 0, behaves the same as mapToScene() + QPointF p = qobject_cast(this)->mapToItem(itemObj, x, y); + sv.setProperty("x", p.x()); + sv.setProperty("y", p.y()); + return sv; +} + +/*! \internal This function emits the \e focusChanged signal. diff --git a/src/declarative/graphicsitems/qdeclarativeitem.h b/src/declarative/graphicsitems/qdeclarativeitem.h index 3ae404d..f6fedc7 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.h +++ b/src/declarative/graphicsitems/qdeclarativeitem.h @@ -159,6 +159,9 @@ public: bool keepMouseGrab() const; void setKeepMouseGrab(bool); + Q_INVOKABLE QScriptValue mapFromItem(const QScriptValue &item, int x, int y) const; + Q_INVOKABLE QScriptValue mapToItem(const QScriptValue &item, int x, int y) const; + QDeclarativeAnchorLine left() const; QDeclarativeAnchorLine right() const; QDeclarativeAnchorLine horizontalCenter() const; diff --git a/tests/auto/declarative/qdeclarativeitem/data/mapCoordinates.qml b/tests/auto/declarative/qdeclarativeitem/data/mapCoordinates.qml new file mode 100644 index 0000000..40a2106 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeitem/data/mapCoordinates.qml @@ -0,0 +1,43 @@ +import Qt 4.6 + +Item { + id: root; objectName: "root" + width: 200; height: 200 + + Item { id: itemA; objectName: "itemA"; x: 50; y: 50 } + + Item { + x: 50; y: 50 + Item { id: itemB; objectName: "itemB"; x: 100; y: 100 } + } + + function mapAToB(x, y) { + var pos = itemA.mapToItem(itemB, x, y) + return Qt.point(pos.x, pos.y) + } + + function mapAFromB(x, y) { + var pos = itemA.mapFromItem(itemB, x, y) + return Qt.point(pos.x, pos.y) + } + + function mapAToNull(x, y) { + var pos = itemA.mapToItem(null, x, y) + return Qt.point(pos.x, pos.y) + } + + function mapAFromNull(x, y) { + var pos = itemA.mapFromItem(null, x, y) + return Qt.point(pos.x, pos.y) + } + + function checkMapAToInvalid(x, y) { + var pos = itemA.mapToItem(1122, x, y) + return pos.x == undefined && pos.y == undefined + } + + function checkMapAFromInvalid(x, y) { + var pos = itemA.mapFromItem(1122, x, y) + return pos.x == undefined && pos.y == undefined + } +} diff --git a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp index 36dcf1f..3e69db9 100644 --- a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp +++ b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp @@ -58,6 +58,8 @@ private slots: void keyNavigation(); void smooth(); void clip(); + void mapCoordinates(); + void mapCoordinates_data(); private: template @@ -288,6 +290,62 @@ void tst_QDeclarativeItem::clip() QCOMPARE(spy.count(),2); } +void tst_QDeclarativeItem::mapCoordinates() +{ + QFETCH(int, x); + QFETCH(int, y); + + QDeclarativeView *canvas = new QDeclarativeView(0); + canvas->setFixedSize(300, 300); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/mapCoordinates.qml")); + canvas->show(); + qApp->processEvents(); + + QDeclarativeItem *root = qobject_cast(canvas->rootObject()); + QVERIFY(root != 0); + QDeclarativeItem *a = findItem(canvas->rootObject(), "itemA"); + QVERIFY(a != 0); + QDeclarativeItem *b = findItem(canvas->rootObject(), "itemB"); + QVERIFY(b != 0); + + QVariant result; + + QVERIFY(QMetaObject::invokeMethod(root, "mapAToB", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QCOMPARE(result.value(), qobject_cast(a)->mapToItem(b, x, y)); + + QVERIFY(QMetaObject::invokeMethod(root, "mapAFromB", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QCOMPARE(result.value(), qobject_cast(a)->mapFromItem(b, x, y)); + + QVERIFY(QMetaObject::invokeMethod(root, "mapAToNull", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QCOMPARE(result.value(), qobject_cast(a)->mapToScene(x, y)); + + QVERIFY(QMetaObject::invokeMethod(root, "mapAFromNull", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QCOMPARE(result.value(), qobject_cast(a)->mapFromScene(x, y)); + + QTest::ignoreMessage(QtWarningMsg, "mapToItem() given argument \"1122\" which is neither null nor an Item"); + QVERIFY(QMetaObject::invokeMethod(root, "checkMapAToInvalid", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QVERIFY(result.toBool()); + + QTest::ignoreMessage(QtWarningMsg, "mapFromItem() given argument \"1122\" which is neither null nor an Item"); + QVERIFY(QMetaObject::invokeMethod(root, "checkMapAFromInvalid", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QVERIFY(result.toBool()); +} + +void tst_QDeclarativeItem::mapCoordinates_data() +{ + QTest::addColumn("x"); + QTest::addColumn("y"); + + for (int i=-20; i<=20; i+=10) + QTest::newRow(QTest::toString(i)) << i << i; +} + template T *tst_QDeclarativeItem::findItem(QGraphicsObject *parent, const QString &objectName) { -- cgit v0.12 From 8274de2d952181d27f24ec9bee7e353e35dc39db Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 5 Mar 2010 09:53:09 +1000 Subject: RotationAnimation docs + test. Task-number: QTBUG-8613 --- doc/src/declarative/elements.qdoc | 1 + src/declarative/util/qdeclarativeanimation.cpp | 22 ++++---- .../qdeclarativeanimations/data/rotation.qml | 48 ++++++++++++++++++ .../tst_qdeclarativeanimations.cpp | 58 ++++++++++++++++++++++ 4 files changed, 119 insertions(+), 10 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativeanimations/data/rotation.qml diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index 6cca39b..22810e3 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -71,6 +71,7 @@ The following table lists the QML elements provided by the Qt Declarative module \o \l PropertyAnimation \o \l NumberAnimation \o \l ColorAnimation +\o \l RotationAnimation \o \l SequentialAnimation \o \l ParallelAnimation \o \l PauseAnimation diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index 76b6a58..d1a3770 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -1341,24 +1341,26 @@ void QDeclarativeVector3dAnimation::setTo(QVector3D t) \brief The RotationAnimation element allows you to animate rotations. RotationAnimation is a specialized PropertyAnimation that gives control - over the direction of rotation. + over the direction of rotation. By default, it will rotate + via the shortest path; for example, a rotation from 20 to 340 degrees will + rotation 40 degrees counterclockwise. - The RotationAnimation in the following example ensures that we always take - the shortest rotation path when switching between our states. + When used in a transition RotationAnimation will rotate all + properties named "rotation" or "angle". You can override this by providing + your own properties via \c properties or \c property. + + In the following example we use RotationAnimation to animate the rotation + between states via the shortest path. \qml states: { State { name: "180"; PropertyChanges { target: myItem; rotation: 180 } } - State { name: "-180"; PropertyChanges { target: myItem; rotation: -180 } } - State { name: "180"; PropertyChanges { target: myItem; rotation: 270 } } + State { name: "90"; PropertyChanges { target: myItem; rotation: 90 } } + State { name: "-90"; PropertyChanges { target: myItem; rotation: -90 } } } transition: Transition { - RotationAnimation { direction: RotationAnimation.Shortest } + RotationAnimation { } } \endqml - - By default, when used in a transition RotationAnimation will rotate all - properties named "rotation" or "angle". You can override this by providing - your own properties via \c properties or \c property. */ /*! diff --git a/tests/auto/declarative/qdeclarativeanimations/data/rotation.qml b/tests/auto/declarative/qdeclarativeanimations/data/rotation.qml new file mode 100644 index 0000000..e9c57d4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeanimations/data/rotation.qml @@ -0,0 +1,48 @@ +import Qt 4.6 + +Rectangle { + width: 600; height: 200 + + Row { + spacing: 5 + Rectangle { + id: rr + objectName: "rr" + color: "red" + width: 100; height: 100 + } + Rectangle { + id: rr2 + objectName: "rr2" + color: "red" + width: 100; height: 100 + } + Rectangle { + id: rr3 + objectName: "rr3" + color: "red" + width: 100; height: 100 + } + Rectangle { + id: rr4 + objectName: "rr4" + color: "red" + width: 100; height: 100 + } + } + + states: State { + name: "state1" + PropertyChanges { target: rr; rotation: 370 } + PropertyChanges { target: rr2; rotation: 370 } + PropertyChanges { target: rr3; rotation: 370 } + PropertyChanges { target: rr4; rotation: 370 } + } + + transitions: Transition { + RotationAnimation { target: rr; direction: RotationAnimation.Numerical; duration: 1000 } + RotationAnimation { target: rr2; direction: RotationAnimation.Clockwise; duration: 1000 } + RotationAnimation { target: rr3; direction: RotationAnimation.Counterclockwise; duration: 1000 } + RotationAnimation { target: rr4; direction: RotationAnimation.Shortest; duration: 1000 } + } +} diff --git a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp index f5e15fb..076afea 100644 --- a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp +++ b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp @@ -59,6 +59,7 @@ private slots: void simpleProperty(); void simpleNumber(); void simpleColor(); + void simpleRotation(); void alwaysRunToEnd(); void complete(); void resume(); @@ -73,6 +74,7 @@ private slots: void propertyValueSourceDefaultStart(); void dontStart(); void easingProperties(); + void rotation(); }; #define QTIMED_COMPARE(lhs, rhs) do { \ @@ -168,6 +170,32 @@ void tst_qdeclarativeanimations::simpleColor() QCOMPARE(rect.color(), QColor::fromRgbF(0.498039, 0, 0.498039, 1)); } +void tst_qdeclarativeanimations::simpleRotation() +{ + QDeclarativeRectangle rect; + QDeclarativeRotationAnimation animation; + animation.setTarget(&rect); + animation.setProperty("rotation"); + animation.setTo(270); + QVERIFY(animation.target() == &rect); + QVERIFY(animation.property() == "rotation"); + QVERIFY(animation.to() == 270); + QVERIFY(animation.direction() == QDeclarativeRotationAnimation::Shortest); + animation.start(); + QVERIFY(animation.isRunning()); + QTest::qWait(animation.duration()); + QTIMED_COMPARE(rect.rotation(), qreal(270)); + + rect.setRotation(0); + animation.start(); + animation.pause(); + QVERIFY(animation.isRunning()); + QVERIFY(animation.isPaused()); + animation.setCurrentTime(125); + QVERIFY(animation.currentTime() == 125); + QCOMPARE(rect.rotation(), qreal(-45)); +} + void tst_qdeclarativeanimations::alwaysRunToEnd() { QDeclarativeRectangle rect; @@ -667,6 +695,36 @@ void tst_qdeclarativeanimations::easingProperties() } } +void tst_qdeclarativeanimations::rotation() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/rotation.qml")); + QDeclarativeRectangle *rect = qobject_cast(c.create()); + QVERIFY(rect); + + QDeclarativeRectangle *rr = rect->findChild("rr"); + QDeclarativeRectangle *rr2 = rect->findChild("rr2"); + QDeclarativeRectangle *rr3 = rect->findChild("rr3"); + QDeclarativeRectangle *rr4 = rect->findChild("rr4"); + + rect->setState("state1"); + QTest::qWait(800); + qreal r1 = rr->rotation(); + qreal r2 = rr2->rotation(); + qreal r3 = rr3->rotation(); + qreal r4 = rr4->rotation(); + + QVERIFY(r1 > qreal(0) && r1 < qreal(370)); + QVERIFY(r2 > qreal(0) && r2 < qreal(370)); + QVERIFY(r3 < qreal(0) && r3 > qreal(-350)); + QVERIFY(r4 > qreal(0) && r4 < qreal(10)); + QCOMPARE(r1,r2); + QVERIFY(r4 < r2); + + QTest::qWait(800); + QTIMED_COMPARE(rr->rotation() + rr2->rotation() + rr3->rotation() + rr4->rotation(), qreal(370*4)); +} + QTEST_MAIN(tst_qdeclarativeanimations) #include "tst_qdeclarativeanimations.moc" -- cgit v0.12 From 7f243aa938498837e32b318a38d81d9cca4b8fe0 Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Fri, 5 Mar 2010 10:08:52 +1000 Subject: When using OpenVG alpha mask, turn off scissor-as-mask Task-number: QT-3033 Reviewed-by: Julian de Bhal --- src/openvg/qpaintengine_vg.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index da47f06..c46bc27 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -2062,6 +2062,7 @@ void QVGPaintEngine::clip(const QPainterPath &path, Qt::ClipOperation op) void QVGPaintEnginePrivate::ensureMask (QVGPaintEngine *engine, int width, int height) { + scissorMask = false; if (maskIsSet) { vgMask(VG_INVALID_HANDLE, VG_FILL_MASK, 0, 0, width, height); maskRect = QRect(); -- cgit v0.12 From 8344c3e53d1ef13faae80de313ab2959012faf45 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 5 Mar 2010 10:20:29 +1000 Subject: Remove NumberFormatter and DateTimeFormatter. Functions have been added to QML's global Qt object for date/time formatting. Number formatting will not be supported for 4.7. Task-number: QT-2821 --- doc/src/declarative/elements.qdoc | 2 - .../util/qdeclarativedatetimeformatter.cpp | 373 --------------------- .../util/qdeclarativedatetimeformatter_p.h | 117 ------- .../util/qdeclarativenumberformatter.cpp | 261 -------------- .../util/qdeclarativenumberformatter_p.h | 93 ----- src/declarative/util/qdeclarativeutilmodule.cpp | 6 - src/declarative/util/qnumberformat.cpp | 224 ------------- src/declarative/util/qnumberformat_p.h | 174 ---------- src/declarative/util/util.pri | 6 - tests/auto/declarative/declarative.pro | 2 - .../qdeclarativedatetimeformatter.pro | 5 - .../tst_qdeclarativedatetimeformatter.cpp | 150 --------- .../qdeclarativenumberformatter.pro | 5 - .../tst_qdeclarativenumberformatter.cpp | 224 ------------- 14 files changed, 1642 deletions(-) delete mode 100644 src/declarative/util/qdeclarativedatetimeformatter.cpp delete mode 100644 src/declarative/util/qdeclarativedatetimeformatter_p.h delete mode 100644 src/declarative/util/qdeclarativenumberformatter.cpp delete mode 100644 src/declarative/util/qdeclarativenumberformatter_p.h delete mode 100644 src/declarative/util/qnumberformat.cpp delete mode 100644 src/declarative/util/qnumberformat_p.h delete mode 100644 tests/auto/declarative/qdeclarativedatetimeformatter/qdeclarativedatetimeformatter.pro delete mode 100644 tests/auto/declarative/qdeclarativedatetimeformatter/tst_qdeclarativedatetimeformatter.cpp delete mode 100644 tests/auto/declarative/qdeclarativenumberformatter/qdeclarativenumberformatter.pro delete mode 100644 tests/auto/declarative/qdeclarativenumberformatter/tst_qdeclarativenumberformatter.cpp diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index 22810e3..83adcb3 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -93,8 +93,6 @@ The following table lists the QML elements provided by the Qt Declarative module \o \l Package \o \l XmlListModel and XmlRole \o \l WorkerListModel -\o \l DateTimeFormatter -\o \l NumberFormatter \endlist \o diff --git a/src/declarative/util/qdeclarativedatetimeformatter.cpp b/src/declarative/util/qdeclarativedatetimeformatter.cpp deleted file mode 100644 index 4087091..0000000 --- a/src/declarative/util/qdeclarativedatetimeformatter.cpp +++ /dev/null @@ -1,373 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 "qdeclarativedatetimeformatter_p.h" - -#include - -#include - -QT_BEGIN_NAMESPACE - -//TODO: may need optimisation as the QDateTime member may not be needed? -// be able to set a locale? - -class QDeclarativeDateTimeFormatterPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QDeclarativeDateTimeFormatter) -public: - QDeclarativeDateTimeFormatterPrivate() : locale(QLocale::system()), longStyle(false), componentComplete(true) {} - - void updateText(); - - QDateTime dateTime; - QDate date; - QTime time; - QLocale locale; - QString dateTimeText; - QString dateText; - QString timeText; - QString dateTimeFormat; //set for convienience? - QString dateFormat; - QString timeFormat; - bool longStyle; - bool componentComplete; -}; - -/*! - \qmlclass DateTimeFormatter QDeclarativeDateTimeFormatter - \since 4.7 - \brief The DateTimeFormatter allows you to control the format of a date string. - - \code - DateTimeFormatter { id: formatter; date: System.date } - Text { text: formatter.dateText } - \endcode - - By default, the text properties (dateText, timeText, and dateTimeText) will return the - date and time using the current system locale's format. -*/ - -/*! - \internal - \class QDeclarativeDateTimeFormatter - \ingroup group_utility - \brief The QDeclarativeDateTimeFormatter class allows you to format a date string. -*/ - -QDeclarativeDateTimeFormatter::QDeclarativeDateTimeFormatter(QObject *parent) -: QObject(*(new QDeclarativeDateTimeFormatterPrivate), parent) -{ -} - -QDeclarativeDateTimeFormatter::~QDeclarativeDateTimeFormatter() -{ -} - -/*! - \qmlproperty string DateTimeFormatter::dateText - \qmlproperty string DateTimeFormatter::timeText - \qmlproperty string DateTimeFormatter::dateTimeText - - Formatted text representations of the \c date, \c time, - and \c {date and time}, respectively. - - If there is no explictly specified format the DateTimeFormatter - will use the system locale's default 'short' setting. - - \code - // specify source date (assuming today is February 19, 2009) - DateTimeFormatter { id: formatter; dateTime: Today.date } - - // display the full date and time - Text { text: formatter.dateText } - \endcode - - Would be equivalent to the following for a US English locale: - - \code - // display the date - Text { text: "2/19/09" } - \endcode -*/ -QString QDeclarativeDateTimeFormatter::dateTimeText() const -{ - Q_D(const QDeclarativeDateTimeFormatter); - return d->dateTimeText; -} - -QString QDeclarativeDateTimeFormatter::dateText() const -{ - Q_D(const QDeclarativeDateTimeFormatter); - return d->dateText; -} - -QString QDeclarativeDateTimeFormatter::timeText() const -{ - Q_D(const QDeclarativeDateTimeFormatter); - return d->timeText; -} - -/*! - \qmlproperty date DateTimeFormatter::date - \qmlproperty time DateTimeFormatter::time - \qmlproperty datetime DateTimeFormatter::dateTime - - The source date and time to be used by the formatter. - - \code - // setting the date and time - DateTimeFormatter { date: System.date; time: System.time } - \endcode - - For convienience it is possible to set the datetime property to set both the date and the time. - \code - // setting the datetime - DateTimeFormatter { dateTime: System.dateTime } - \endcode - - There can only be one instance of date and time per formatter; if date, time, and dateTime are all - set the actual date and time used is not guaranteed. - - \note If no date is set, dateTimeText will be just the date; - If no time is set, the dateTimeText will be just the time. - -*/ -QDate QDeclarativeDateTimeFormatter::date() const -{ - Q_D(const QDeclarativeDateTimeFormatter); - return d->date; -} - -QTime QDeclarativeDateTimeFormatter::time() const -{ - Q_D(const QDeclarativeDateTimeFormatter); - return d->time; -} - -QDateTime QDeclarativeDateTimeFormatter::dateTime() const -{ - Q_D(const QDeclarativeDateTimeFormatter); - return d->dateTime; -} - -/*! - \qmlproperty string DateTimeFormatter::dateFormat - \qmlproperty string DateTimeFormatter::timeFormat - \qmlproperty string DateTimeFormatter::dateTimeFormat - - Specifies a custom format which the DateTime Formatter can use. - - If there is no explictly specified format the DateTimeFormatter - will use the system locale's default 'short' setting. - - The text's format may be modified by setting: - \list - \i \c dateFormat - \i \c timeFormat - \i \c dateTimeFormat - \endlist - - If only the format for date is defined, the time and dateTime formats will be defined - as the system locale default and likewise for the others. - - Syntax for the format is based on the QDateTime::toString() formatting options. - - \code - // Format the date such that the dateText is: '1997-12-12' - DateTimeFormatter { id: formatter; dateTime: Today.dateTime; formatDate: "yyyy-MM-d" } - \endcode - - Assigning an empty string to a particular format will reset it. -*/ -QString QDeclarativeDateTimeFormatter::dateTimeFormat() const -{ - Q_D(const QDeclarativeDateTimeFormatter); - return d->dateTimeFormat; -} - -QString QDeclarativeDateTimeFormatter::dateFormat() const -{ - Q_D(const QDeclarativeDateTimeFormatter); - return d->dateFormat; -} - -QString QDeclarativeDateTimeFormatter::timeFormat() const -{ - Q_D(const QDeclarativeDateTimeFormatter); - return d->timeFormat; -} - -/*! - \qmlproperty bool DateTimeFormatter::longStyle - - This property causes the formatter to use the system locale's long format rather than short format - by default. - - This setting is off by default. -*/ -bool QDeclarativeDateTimeFormatter::longStyle() const -{ - Q_D(const QDeclarativeDateTimeFormatter); - return d->longStyle; -} - -void QDeclarativeDateTimeFormatter::setDateTime(const QDateTime &dateTime) -{ - Q_D(QDeclarativeDateTimeFormatter); - if (d->dateTime == dateTime) - return; - d->dateTime = dateTime; - d->date = d->dateTime.date(); - d->time = d->dateTime.time(); - d->updateText(); -} - -void QDeclarativeDateTimeFormatter::setTime(const QTime &time) -{ - Q_D(QDeclarativeDateTimeFormatter); - if (d->dateTime.time() == time) - return; - d->time = time; - d->dateTime.setTime(time); - d->updateText(); -} - -void QDeclarativeDateTimeFormatter::setDate(const QDate &date) -{ - Q_D(QDeclarativeDateTimeFormatter); - if (d->dateTime.date() == date) - return; - d->date = date; - bool clearTime = d->dateTime.time().isValid() ? false : true; //because setting date generates default time - d->dateTime.setDate(date); - if (clearTime) - d->dateTime.setTime(QTime()); - d->updateText(); -} - -//DateTime formatting may be a combination of date and time? -void QDeclarativeDateTimeFormatter::setDateTimeFormat(const QString &format) -{ - Q_D(QDeclarativeDateTimeFormatter); - //no format checking - d->dateTimeFormat = format; - d->updateText(); -} - -void QDeclarativeDateTimeFormatter::setDateFormat(const QString &format) -{ - Q_D(QDeclarativeDateTimeFormatter); - //no format checking - d->dateFormat = format; - d->updateText(); -} - -void QDeclarativeDateTimeFormatter::setTimeFormat(const QString &format) -{ - Q_D(QDeclarativeDateTimeFormatter); - //no format checking - d->timeFormat = format; - d->updateText(); -} - -void QDeclarativeDateTimeFormatter::setLongStyle(bool longStyle) -{ - Q_D(QDeclarativeDateTimeFormatter); - d->longStyle = longStyle; - d->updateText(); -} - -void QDeclarativeDateTimeFormatterPrivate::updateText() -{ - Q_Q(QDeclarativeDateTimeFormatter); - if (!componentComplete) - return; - - QString str; - QString str1; - QString str2; - - Qt::DateFormat defaultFormat = longStyle ? Qt::SystemLocaleLongDate : Qt::SystemLocaleShortDate; - - if (dateFormat.isEmpty()) - str1 = date.toString(defaultFormat); - else - str1 = date.toString(dateFormat); - - if (timeFormat.isEmpty()) - str2 = time.toString(defaultFormat); - else - str2 = time.toString(timeFormat); - - if (dateTimeFormat.isEmpty()) - str = dateTime.toString(defaultFormat); - //else if (!formatTime.isEmpty() && !formatDate.isEmpty()) - // str = str1 + QLatin1Char(' ') + str2; - else - str = dateTime.toString(dateTimeFormat); - - if (dateTimeText == str && dateText == str1 && timeText == str2) - return; - - dateTimeText = str; - dateText = str1; - timeText = str2; - - emit q->textChanged(); -} - -void QDeclarativeDateTimeFormatter::classBegin() -{ - Q_D(QDeclarativeDateTimeFormatter); - d->componentComplete = false; -} - -void QDeclarativeDateTimeFormatter::componentComplete() -{ - Q_D(QDeclarativeDateTimeFormatter); - d->componentComplete = true; - d->updateText(); -} - - - -QT_END_NAMESPACE diff --git a/src/declarative/util/qdeclarativedatetimeformatter_p.h b/src/declarative/util/qdeclarativedatetimeformatter_p.h deleted file mode 100644 index da900be..0000000 --- a/src/declarative/util/qdeclarativedatetimeformatter_p.h +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 QDECLARATIVEDATETIMEFORMATTER_H -#define QDECLARATIVEDATETIMEFORMATTER_H - -#include - -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QDeclarativeDateTimeFormatterPrivate; -class Q_DECLARATIVE_EXPORT QDeclarativeDateTimeFormatter : public QObject, public QDeclarativeParserStatus -{ - Q_OBJECT - Q_INTERFACES(QDeclarativeParserStatus) - - Q_PROPERTY(QString dateText READ dateText NOTIFY textChanged) - Q_PROPERTY(QString timeText READ timeText NOTIFY textChanged) - Q_PROPERTY(QString dateTimeText READ dateTimeText NOTIFY textChanged) - Q_PROPERTY(QDate date READ date WRITE setDate) - Q_PROPERTY(QTime time READ time WRITE setTime) - Q_PROPERTY(QDateTime dateTime READ dateTime WRITE setDateTime) - Q_PROPERTY(QString dateFormat READ dateFormat WRITE setDateFormat) - Q_PROPERTY(QString timeFormat READ timeFormat WRITE setTimeFormat) - Q_PROPERTY(QString dateTimeFormat READ dateTimeFormat WRITE setDateTimeFormat) - Q_PROPERTY(bool longStyle READ longStyle WRITE setLongStyle) -public: - QDeclarativeDateTimeFormatter(QObject *parent=0); - ~QDeclarativeDateTimeFormatter(); - - QString dateTimeText() const; - QString dateText() const; - QString timeText() const; - - QDate date() const; - void setDate(const QDate &); - - QTime time() const; - void setTime(const QTime &); - - QDateTime dateTime() const; - void setDateTime(const QDateTime &); - - QString dateTimeFormat() const; - void setDateTimeFormat(const QString &); - - QString dateFormat() const; - void setDateFormat(const QString &); - - QString timeFormat() const; - void setTimeFormat(const QString &); - - bool longStyle() const; - void setLongStyle(bool); - - virtual void classBegin(); - virtual void componentComplete(); - -Q_SIGNALS: - void textChanged(); - -private: - Q_DISABLE_COPY(QDeclarativeDateTimeFormatter) - Q_DECLARE_PRIVATE(QDeclarativeDateTimeFormatter) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QDeclarativeDateTimeFormatter) - -QT_END_HEADER - -#endif diff --git a/src/declarative/util/qdeclarativenumberformatter.cpp b/src/declarative/util/qdeclarativenumberformatter.cpp deleted file mode 100644 index 5d81958..0000000 --- a/src/declarative/util/qdeclarativenumberformatter.cpp +++ /dev/null @@ -1,261 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 "qdeclarativenumberformatter_p.h" - -#include - -QT_BEGIN_NAMESPACE - -//TODO: set locale -// docs -// this is a wrapper around qnumberformat (test integration) -// if number or format haven't been explictly set, text should be an empty string - -class QDeclarativeNumberFormatterPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QDeclarativeNumberFormatter) -public: - QDeclarativeNumberFormatterPrivate() : locale(QLocale::system()), number(0), componentComplete(true) {} - - void updateText(); - - QLocale locale; - QString format; - QNumberFormat numberFormat; - QString text; - qreal number; - bool componentComplete; -}; -/*! - \qmlclass NumberFormatter - \since 4.7 - \brief The NumberFormatter allows you to control the format of a number string. - - The format property documentation has more details on how the format can be manipulated. - - In the following example, the text element will display the text "1,234.57". - \code - NumberFormatter { id: formatter; number: 1234.5678; format: "##,##0.##" } - Text { text: formatter.text } - \endcode - - */ -/*! - \internal - \class QDeclarativeNumberFormatter - \ingroup group_utility - \brief The QDeclarativeNumberFormatter class allows you to format a number to a particular string format/locale specific number format. -*/ - -QDeclarativeNumberFormatter::QDeclarativeNumberFormatter(QObject *parent) -: QObject(*(new QDeclarativeNumberFormatterPrivate), parent) -{ -} - -QDeclarativeNumberFormatter::~QDeclarativeNumberFormatter() -{ -} - -/*! - \qmlproperty string NumberFormatter::text - - The number in the specified format. - - If no format is specified the text will be empty. -*/ - -QString QDeclarativeNumberFormatter::text() const -{ - Q_D(const QDeclarativeNumberFormatter); - return d->text; -} - -/*! - \qmlproperty real NumberFormatter::number - - A single point precision number. (Doubles are not yet supported) - -*/ -qreal QDeclarativeNumberFormatter::number() const -{ - Q_D(const QDeclarativeNumberFormatter); - return d->number; -} - -/*! - \qmlproperty string NumberFormatter::format - - The particular format the number will adhere to during the conversion to text. - - The format syntax follows a style similar to the Unicode Standard (UTS35). - - The table below shows the characters, patterns that can be used in the format. - - \table - \header - \o Character - \o Meaning - \row - \o # - \o Any digit(s), zero shows as absent (for leading/trailing zeroes). - \row - \o 0 - \o Implicit digit. Zero will show in the case that the input number is too small. - \row - \o . - \o Decimal separator. Output decimal seperator will be dependant on system locale. - \row - \o , - \o Grouping separator. The number of digits (either #, or 0) between the grouping separator and the decimal (or the rightmost digit) will determine the groupingSize). - \row - \o other - \o Any other character will be taken as a string literal and placed directly into the output string. - \endtable - - Invalid formats will not guarantee a meaningful text output. - - \note Input numbers that are too long for the given format will be rounded dependent on precison based on the position of the decimal point. - - The following table illustrates the output text created by applying some examples of numeric formats to the formatter. - - \table - \header - \o Format - \o Number - \o Output - \row - \o ### - \o 123456 - \o 123456 - \row - \o 000 - \o 123456 - \o 123456 - \row - \o ###### - \o 1234 - \o 1234 - \row - \o 000000 - \o 1234 - \o 001234 - \row - \o ##,##0.## - \o 1234.456 - \o 1,234.46 (for US locale) - \codeline 1 234,46 (for FR locale) - \row - \o 000000,000.# - \o 123456 - \o 000,123,456 (for US locale) - \codeline 000 123 456 (for FR locale) - \row - \o 0.0### - \o 0.999997 - \o 1.0 - \row - \o (000) 000 - 000 - \o 12345678 - \o (012) 345 - 678 - \row - \o #A - \o 12 - \o 12A - \endtable - -*/ -QString QDeclarativeNumberFormatter::format() const -{ - Q_D(const QDeclarativeNumberFormatter); - return d->format; -} - -void QDeclarativeNumberFormatter::setNumber(const qreal &number) -{ - Q_D(QDeclarativeNumberFormatter); - if (d->number == number) - return; - d->number = number; - d->updateText(); -} - -void QDeclarativeNumberFormatter::setFormat(const QString &format) -{ - Q_D(QDeclarativeNumberFormatter); - //no format checking - if (format.isEmpty()) - d->format = QString::null; - else - d->format = format; - d->updateText(); -} - -void QDeclarativeNumberFormatterPrivate::updateText() -{ - Q_Q(QDeclarativeNumberFormatter); - if (!componentComplete) - return; - - QNumberFormat tempFormat; - tempFormat.setFormat(format); - tempFormat.setNumber(number); - - text = tempFormat.text(); - - emit q->textChanged(); -} - -void QDeclarativeNumberFormatter::classBegin() -{ - Q_D(QDeclarativeNumberFormatter); - d->componentComplete = false; -} - -void QDeclarativeNumberFormatter::componentComplete() -{ - Q_D(QDeclarativeNumberFormatter); - d->componentComplete = true; - d->updateText(); -} - - -QT_END_NAMESPACE diff --git a/src/declarative/util/qdeclarativenumberformatter_p.h b/src/declarative/util/qdeclarativenumberformatter_p.h deleted file mode 100644 index 3b8c7e1..0000000 --- a/src/declarative/util/qdeclarativenumberformatter_p.h +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 QDECLARATIVENUMBERFORMATTER_H -#define QDECLARATIVENUMBERFORMATTER_H - -#include "qnumberformat_p.h" - -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QDeclarativeNumberFormatterPrivate; -class Q_DECLARATIVE_EXPORT QDeclarativeNumberFormatter : public QObject, public QDeclarativeParserStatus -{ - Q_OBJECT - Q_INTERFACES(QDeclarativeParserStatus) - - Q_PROPERTY(QString text READ text NOTIFY textChanged) - Q_PROPERTY(QString format READ format WRITE setFormat) - Q_PROPERTY(qreal number READ number WRITE setNumber) -public: - QDeclarativeNumberFormatter(QObject *parent=0); - ~QDeclarativeNumberFormatter(); - - QString text() const; - - qreal number() const; - void setNumber(const qreal &); - - QString format() const; - void setFormat(const QString &); - - virtual void classBegin(); - virtual void componentComplete(); - -Q_SIGNALS: - void textChanged(); - -private: - Q_DISABLE_COPY(QDeclarativeNumberFormatter) - Q_DECLARE_PRIVATE(QDeclarativeNumberFormatter) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QDeclarativeNumberFormatter) - -QT_END_HEADER - -#endif diff --git a/src/declarative/util/qdeclarativeutilmodule.cpp b/src/declarative/util/qdeclarativeutilmodule.cpp index 1f85b89..65bfdc1 100644 --- a/src/declarative/util/qdeclarativeutilmodule.cpp +++ b/src/declarative/util/qdeclarativeutilmodule.cpp @@ -46,13 +46,11 @@ #include "qdeclarativebehavior_p.h" #include "qdeclarativebind_p.h" #include "qdeclarativeconnections_p.h" -#include "qdeclarativedatetimeformatter_p.h" #include "qdeclarativeeasefollow_p.h" #include "qdeclarativefontloader_p.h" #include "qdeclarativelistaccessor_p.h" #include "qdeclarativelistmodel_p.h" #include "qdeclarativenullablevalue_p_p.h" -#include "qdeclarativenumberformatter_p.h" #include "qdeclarativeopenmetaobject_p.h" #include "qdeclarativepackage_p.h" #include "qdeclarativepixmapcache_p.h" @@ -73,7 +71,6 @@ #ifndef QT_NO_XMLPATTERNS #include "qdeclarativexmllistmodel_p.h" #endif -#include "qnumberformat_p.h" #include "qperformancelog_p_p.h" void QDeclarativeUtilModule::defineModule() @@ -83,12 +80,10 @@ void QDeclarativeUtilModule::defineModule() QML_REGISTER_TYPE(Qt,4,6,Binding,QDeclarativeBind); QML_REGISTER_TYPE(Qt,4,6,ColorAnimation,QDeclarativeColorAnimation); QML_REGISTER_TYPE(Qt,4,6,Connections,QDeclarativeConnections); - QML_REGISTER_TYPE(Qt,4,6,DateTimeFormatter,QDeclarativeDateTimeFormatter); QML_REGISTER_TYPE(Qt,4,6,EaseFollow,QDeclarativeEaseFollow);; QML_REGISTER_TYPE(Qt,4,6,FontLoader,QDeclarativeFontLoader); QML_REGISTER_TYPE(Qt,4,6,ListElement,QDeclarativeListElement); QML_REGISTER_TYPE(Qt,4,6,NumberAnimation,QDeclarativeNumberAnimation); - QML_REGISTER_TYPE(Qt,4,6,NumberFormatter,QDeclarativeNumberFormatter);; QML_REGISTER_TYPE(Qt,4,6,Package,QDeclarativePackage); QML_REGISTER_TYPE(Qt,4,6,ParallelAnimation,QDeclarativeParallelAnimation); QML_REGISTER_TYPE(Qt,4,6,ParentAction,QDeclarativeParentAction); @@ -116,7 +111,6 @@ void QDeclarativeUtilModule::defineModule() QML_REGISTER_NOCREATE_TYPE(QDeclarativeAnchors); QML_REGISTER_NOCREATE_TYPE(QDeclarativeAbstractAnimation); QML_REGISTER_NOCREATE_TYPE(QDeclarativeStateOperation); - QML_REGISTER_NOCREATE_TYPE(QNumberFormat); QML_REGISTER_CUSTOM_TYPE(Qt, 4,6, ListModel, QDeclarativeListModel, QDeclarativeListModelParser); QML_REGISTER_CUSTOM_TYPE(Qt, 4,6, PropertyChanges, QDeclarativePropertyChanges, QDeclarativePropertyChangesParser); diff --git a/src/declarative/util/qnumberformat.cpp b/src/declarative/util/qnumberformat.cpp deleted file mode 100644 index 81d0b90..0000000 --- a/src/declarative/util/qnumberformat.cpp +++ /dev/null @@ -1,224 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 "qnumberformat_p.h" -#include - -QT_BEGIN_NAMESPACE - -QNumberFormat::QNumberFormat(QObject *parent) : QObject(parent), _number(0), _type(Decimal), - _groupingSize(0) -{ - _locale = QLocale::system(); - _groupingSeparator = _locale.groupSeparator(); - _decimalSeparator = _locale.decimalPoint(); - _currencySymbol = QLatin1Char('$'); -} - -QNumberFormat::~QNumberFormat() -{ - -} - -void QNumberFormat::updateText() -{ - QTime t; - t.start(); - static int totalTime; - - handleFormat(); - - totalTime += t.elapsed(); - emit textChanged(); -} - -void QNumberFormat::handleFormat() -{ - // ### is extremely messy - if (_format.isEmpty()) { - _text = QString::number(_number, 'f', -1); - return; - } - - QString inputString; - - // ### possible to use the following parsed data in the future - - int remainingLength = _format.size(); - int currentIndex = _format.size()-1; - - int maxDigits = 0; - int minDigits = 0; - int decimalLength = 0; - - while (remainingLength > 0) { - switch(_format.at(currentIndex).unicode()) { - case ',': - if (decimalLength && !_groupingSize) - setGroupingSize(maxDigits - decimalLength); - else if (!_groupingSize) - setGroupingSize(maxDigits); - break; - case '.': - if (!decimalLength) - decimalLength = maxDigits; - break; - case '0': - minDigits++; - case '#': - maxDigits++; - break; - default: - break; - } - currentIndex--; - remainingLength--; - } - - // round given the decimal length/precision - inputString = QString::number(_number, 'f', decimalLength); - - QStringList parts = inputString.split(QLatin1Char('.')); - QStringList formatParts = _format.split(QLatin1Char('.')); - - if (formatParts.size() > 2 || parts.size() > 2 ) - return; - - QString formatInt = formatParts.at(0); - - QString formatDec; - if (formatParts.size() == 2) - formatDec = formatParts.at(1); - - QString integer = parts.at(0); - - QString decimal; - if (parts.size() == 2) - decimal = parts.at(1); - - QString outputDecimal = formatDecimal(formatDec, decimal); - QString outputInteger = formatInteger(formatInt, integer); - - // insert separators - if (_groupingSize) { - unsigned int count = 0; - for (int i = outputInteger.size()-1; i > 0; i--) { - if (outputInteger.at(i).digitValue() >= 0) { - if (count == _groupingSize - 1) { - count = 0; - outputInteger.insert(i, _groupingSeparator); - } - else - count++; - } - } - } - if (!outputDecimal.isEmpty()) - _text = outputInteger + _decimalSeparator + outputDecimal; - else - _text = outputInteger; -} - -QString QNumberFormat::formatInteger(const QString &formatInt, const QString &integer) -{ - if (formatInt.isEmpty() || integer.isEmpty()) - return QString(); - - QString outputInteger; - int formatIndex = formatInt.size()-1; - - //easier for carry? - for (int index= integer.size()-1; index >= 0; index--) { - if (formatIndex < 0) { - outputInteger.push_front(integer.at(index)); - } - else { - switch(formatInt.at(formatIndex).unicode()) { - case '0': - if (index > integer.size()-1) { - outputInteger.push_front(QLatin1Char('0')); - break; - } - case '#': - outputInteger.push_front(integer.at(index)); - break; - case ',': - index++; - break; - default: - outputInteger.push_front(formatInt.at(formatIndex)); - index++; - break; - } - formatIndex--; - } - } - while (formatIndex >= 0) { - if (formatInt.at(formatIndex).unicode() != '#' && formatInt.at(formatIndex).unicode() != ',') - outputInteger.push_front(formatInt.at(formatIndex)); - formatIndex--; - } - return outputInteger; -} - -QString QNumberFormat::formatDecimal(const QString &formatDec, const QString &decimal) -{ - QString outputDecimal; - - // up to max 6 decimal places - for (int index=formatDec.size()-1; index >= 0; index--) { - switch(formatDec.at(index).unicode()) { - case '0': - outputDecimal.push_front(decimal.at(index)); - break; - case '#': - if (decimal.at(index) != QLatin1Char('0') || outputDecimal.size() > 0) - outputDecimal.push_front(decimal.at(index)); - break; - default: - outputDecimal.push_front(formatDec.at(index)); - break; - } - } - return outputDecimal; -} - -QT_END_NAMESPACE diff --git a/src/declarative/util/qnumberformat_p.h b/src/declarative/util/qnumberformat_p.h deleted file mode 100644 index ced4442..0000000 --- a/src/declarative/util/qnumberformat_p.h +++ /dev/null @@ -1,174 +0,0 @@ -/**************************************************************************** -** -** 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 QtDeclarative 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 NUMBERFORMAT_H -#define NUMBERFORMAT_H - -#include - -#include -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -// TODO -// be able to set Locale, instead of default system for dynamic formatting -// add currency support -// add additional syntax, extend to format scientific, percentiles, significant digits etc - - -class QNumberFormat : public QObject -{ - Q_OBJECT - Q_ENUMS(NumberType) -public: - QNumberFormat(QObject *parent=0); - ~QNumberFormat(); - - enum NumberType { - Percent, - Scientific, - Currency, - Decimal - }; - - //external property, only visible - Q_PROPERTY(QString text READ text NOTIFY textChanged) - - //mutatable properties to modify the output (text) - Q_PROPERTY(qreal number READ number WRITE setNumber) - Q_PROPERTY(QString format READ format WRITE setFormat) - Q_PROPERTY(QLocale locale READ locale WRITE setLocale) - - //Format specific settings - Q_PROPERTY(unsigned short groupingSeparator READ groupingSeparator WRITE setGroupingSeparator) - Q_PROPERTY(unsigned short decimalSeperator READ decimalSeparator WRITE setDecimalSeparator) - Q_PROPERTY(unsigned int groupingSize READ groupingSize WRITE setGroupingSize) - Q_PROPERTY(unsigned short currencySymbol READ currencySymbol WRITE setCurrencySymbol) - - - QString text() const { return _text; } - - qreal number() const { return _number; } - void setNumber(qreal n) { - if (_number == n) - return; - _number = n; - updateText(); - } - - QString format() const { return _format; } - void setFormat(const QString &format) { - if (format.isEmpty()) - _format = QString::null; - else if (_format == format) - return; - - _format = format; - updateText(); - } - - QLocale locale() const { return _locale; } - void setLocale(const QLocale &locale) { _locale = locale; updateText(); } - - //Do we deal with unicode standard? or create our own - // ### since this is the backend for the number conversions, we will use the unicode - // the front-end will handle the QChar/QString -> short int - - unsigned short groupingSeparator() { return _groupingSeparator.unicode(); } - void setGroupingSeparator(unsigned short unicodeSymbol) - { - _groupingSeparator = QChar(unicodeSymbol); - } - - unsigned short decimalSeparator() { return _decimalSeparator.unicode(); } - void setDecimalSeparator(unsigned short unicodeSymbol) - { - _decimalSeparator = QChar(unicodeSymbol); - } - - unsigned short currencySymbol() { return _currencySymbol.unicode(); } - void setCurrencySymbol(unsigned short unicodeSymbol) - { - _currencySymbol = QChar(unicodeSymbol); - } - - unsigned int groupingSize() { return _groupingSize; } - void setGroupingSize(unsigned int size) - { - _groupingSize = size; - } - -Q_SIGNALS: - void textChanged(); - -private: - void updateText(); - void handleFormat(); - QString formatInteger(const QString &formatInt, const QString &integer); - QString formatDecimal(const QString &formatDec, const QString &decimal); - - qreal _number; - NumberType _type; - QChar _groupingSeparator; - QChar _decimalSeparator; - QChar _currencySymbol; - unsigned int _groupingSize; - - QLocale _locale; - QString _format; - - // only hooked member at the moment - QString _text; - -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QNumberFormat) - -QT_END_HEADER - -#endif diff --git a/src/declarative/util/util.pri b/src/declarative/util/util.pri index 198e9e5..26edecc 100644 --- a/src/declarative/util/util.pri +++ b/src/declarative/util/util.pri @@ -25,9 +25,6 @@ SOURCES += \ $$PWD/qdeclarativebind.cpp \ $$PWD/qdeclarativepropertymap.cpp \ $$PWD/qdeclarativepixmapcache.cpp \ - $$PWD/qnumberformat.cpp \ - $$PWD/qdeclarativenumberformatter.cpp \ - $$PWD/qdeclarativedatetimeformatter.cpp \ $$PWD/qdeclarativebehavior.cpp \ $$PWD/qdeclarativefontloader.cpp \ $$PWD/qdeclarativestyledtext.cpp @@ -60,9 +57,6 @@ HEADERS += \ $$PWD/qdeclarativebind_p.h \ $$PWD/qdeclarativepropertymap.h \ $$PWD/qdeclarativepixmapcache_p.h \ - $$PWD/qnumberformat_p.h \ - $$PWD/qdeclarativenumberformatter_p.h \ - $$PWD/qdeclarativedatetimeformatter_p.h \ $$PWD/qdeclarativebehavior_p.h \ $$PWD/qdeclarativefontloader_p.h \ $$PWD/qdeclarativestyledtext_p.h diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index 99a32d9..143fbad 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -10,7 +10,6 @@ SUBDIRS += \ qdeclarativecomponent \ # Cover qdeclarativeconnection \ # Cover qdeclarativecontext \ # Cover - qdeclarativedatetimeformatter \ # Cover qdeclarativedebug \ # Cover qdeclarativedebugclient \ # Cover qdeclarativedebugservice \ # Cover @@ -45,7 +44,6 @@ SUBDIRS += \ qdeclarativeproperty \ # Cover qdeclarativemetatype \ # Cover qdeclarativemoduleplugin \ # Cover - qdeclarativenumberformatter \ # Cover qdeclarativepixmapcache \ # Cover qdeclarativepropertymap \ # Cover qdeclarativeqt \ # Cover diff --git a/tests/auto/declarative/qdeclarativedatetimeformatter/qdeclarativedatetimeformatter.pro b/tests/auto/declarative/qdeclarativedatetimeformatter/qdeclarativedatetimeformatter.pro deleted file mode 100644 index 22f53e6..0000000 --- a/tests/auto/declarative/qdeclarativedatetimeformatter/qdeclarativedatetimeformatter.pro +++ /dev/null @@ -1,5 +0,0 @@ -load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative -macx:CONFIG -= app_bundle - -SOURCES += tst_qdeclarativedatetimeformatter.cpp diff --git a/tests/auto/declarative/qdeclarativedatetimeformatter/tst_qdeclarativedatetimeformatter.cpp b/tests/auto/declarative/qdeclarativedatetimeformatter/tst_qdeclarativedatetimeformatter.cpp deleted file mode 100644 index 69d7900..0000000 --- a/tests/auto/declarative/qdeclarativedatetimeformatter/tst_qdeclarativedatetimeformatter.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/**************************************************************************** -** -** 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 -#include -#include -#include -#include - -class tst_qdeclarativedatetimeformatter : public QObject -{ - Q_OBJECT -public: - tst_qdeclarativedatetimeformatter() {} - -private slots: - void date(); - void time(); - void dateTime(); -}; - -void tst_qdeclarativedatetimeformatter::date() -{ - QDeclarativeEngine engine; - QDeclarativeComponent formatterComponent(&engine); - formatterComponent.setData(QByteArray("import Qt 4.6\n DateTimeFormatter { date: \"2008-12-24\" }"), - QUrl::fromLocalFile("")); - QDeclarativeDateTimeFormatter *formatter = qobject_cast(formatterComponent.create()); - if(formatterComponent.isError()) - qDebug() << formatterComponent.errors(); - QVERIFY(formatter != 0); - - QDate date(2008,12,24); - QCOMPARE(formatter->date(), date); - QCOMPARE(formatter->dateTime().date(), date); - QCOMPARE(formatter->dateText(),date.toString(Qt::SystemLocaleShortDate)); - - formatter->setLongStyle(true); - QVERIFY(formatter->longStyle()); - QCOMPARE(formatter->dateText(),date.toString(Qt::SystemLocaleLongDate)); - - formatter->setDateFormat("ddd MMMM d yy"); - QCOMPARE(formatter->dateFormat(), QLatin1String("ddd MMMM d yy")); - QCOMPARE(formatter->dateText(),date.toString("ddd MMMM d yy")); - - QVERIFY(formatter->timeText().isEmpty()); - QVERIFY(formatter->dateTimeText().isEmpty()); - - delete formatter; -} - -void tst_qdeclarativedatetimeformatter::time() -{ - QDeclarativeEngine engine; - QDeclarativeComponent formatterComponent(&engine); - formatterComponent.setData("import Qt 4.6\n DateTimeFormatter { time: \"14:15:38.200\" }", QUrl::fromLocalFile("")); - QDeclarativeDateTimeFormatter *formatter = qobject_cast(formatterComponent.create()); - if(formatterComponent.isError()) - qDebug() << formatterComponent.errors(); - QVERIFY(formatter != 0); - - QTime time(14,15,38,200); - - QCOMPARE(formatter->time(),time); - QCOMPARE(formatter->dateTime().time(),time); - - QCOMPARE(formatter->timeText(),time.toString(Qt::SystemLocaleShortDate)); - - formatter->setLongStyle(true); - QCOMPARE(formatter->timeText(),time.toString(Qt::SystemLocaleLongDate)); - - formatter->setTimeFormat("H:m:s a"); - QCOMPARE(formatter->timeFormat(), QLatin1String("H:m:s a")); - QCOMPARE(formatter->timeText(),time.toString("H:m:s a")); - - formatter->setTimeFormat("hh:mm:ss.zzz"); - QCOMPARE(formatter->timeText(),time.toString("hh:mm:ss.zzz")); - - QVERIFY(formatter->dateText().isEmpty()); - QVERIFY(formatter->dateTimeText().isEmpty()); - - delete formatter; -} - -void tst_qdeclarativedatetimeformatter::dateTime() -{ - QDeclarativeEngine engine; - QDeclarativeComponent formatterComponent(&engine); - formatterComponent.setData("import Qt 4.6\n DateTimeFormatter { dateTime: \"1978-03-04T09:13:54\" }", QUrl::fromLocalFile("")); - QDeclarativeDateTimeFormatter *formatter = qobject_cast(formatterComponent.create()); - if(formatterComponent.isError()) - qDebug() << formatterComponent.errors(); - QVERIFY(formatter != 0); - - QDateTime dateTime(QDate(1978,03,04),QTime(9,13,54)); - QCOMPARE(formatter->dateTime(),dateTime); - QCOMPARE(formatter->date(),dateTime.date()); - QCOMPARE(formatter->time(),dateTime.time()); - QCOMPARE(formatter->dateTimeText(),dateTime.toString(Qt::SystemLocaleShortDate)); - - formatter->setLongStyle(true); - QCOMPARE(formatter->dateTimeText(),dateTime.toString(Qt::SystemLocaleLongDate)); - - formatter->setDateTimeFormat("M/d/yy H:m:s a"); - QCOMPARE(formatter->dateTimeFormat(), QLatin1String("M/d/yy H:m:s a")); - QCOMPARE(formatter->dateTimeText(),dateTime.toString("M/d/yy H:m:s a")); - - delete formatter; -} - -QTEST_MAIN(tst_qdeclarativedatetimeformatter) - -#include "tst_qdeclarativedatetimeformatter.moc" diff --git a/tests/auto/declarative/qdeclarativenumberformatter/qdeclarativenumberformatter.pro b/tests/auto/declarative/qdeclarativenumberformatter/qdeclarativenumberformatter.pro deleted file mode 100644 index 672e95c..0000000 --- a/tests/auto/declarative/qdeclarativenumberformatter/qdeclarativenumberformatter.pro +++ /dev/null @@ -1,5 +0,0 @@ -load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative -macx:CONFIG -= app_bundle - -SOURCES += tst_qdeclarativenumberformatter.cpp diff --git a/tests/auto/declarative/qdeclarativenumberformatter/tst_qdeclarativenumberformatter.cpp b/tests/auto/declarative/qdeclarativenumberformatter/tst_qdeclarativenumberformatter.cpp deleted file mode 100644 index a9a0077..0000000 --- a/tests/auto/declarative/qdeclarativenumberformatter/tst_qdeclarativenumberformatter.cpp +++ /dev/null @@ -1,224 +0,0 @@ -/**************************************************************************** -** -** 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 -#include -#include -#include -#include -#include - -class tst_qdeclarativenumberformatter : public QObject -{ - Q_OBJECT -public: - tst_qdeclarativenumberformatter(); - - void init() {} - void initTestCase() {} - - void cleanup() {} - void cleanupTestCase() {} - -private slots: - void text_data(); - void text(); - -private: - QStringList strings; - QStringList formats; - QStringList texts; -}; - -tst_qdeclarativenumberformatter::tst_qdeclarativenumberformatter() -{ - strings << "100.0" - << "12345" - << "1234567" - << "0.123" - << "0.9999" - << "0.989" - << "1" - << "1.0" - << "1.01"; - - formats << "" - << "0000" - << "0000.00" - << "##" - << "##.##" - << "#0.00#" - << "##,##0.##" - << "(000) 000 - 000" - << "00000,000.0000"; - - //US locale only. - texts << "100.000000" - << "12345.000000" - << "1234567.000000" - << "0.123000" - << "0.999900" - << "0.989000" - << "1.000000" - << "1.000000" - << "1.010000" //end "" - << "0100" - << "12345" - << "1234567" - << "0000" - << "0001" - << "0001" - << "0001" - << "0001" - << "0001" // end "0000" - << "0100.00" - << "12345.00" - << "1234567.00" - << "0000.12" - << "0001.00" - << "0000.99" - << "0001.00" - << "0001.00" - << "0001.01" // end "0000.00" - << "100" - << "12345" - << "1234567" - << "0" - << "1" - << "1" - << "1" - << "1" - << "1" // end "##" - << "100"//start "##.##" - << "12345" - << "1234567" - << "0.12" - << "1" - << "0.99" - << "1" - << "1" - << "1.01" // end "##.##" -- ### EXPECT FAIL ### QNumberFormat::formatDecimal() bug - << "100.00" //start "#0.00#" - << "12345.00" - << "1234567.00" - << "0.123" - << "1.00" - << "0.989" - << "1.00" - << "1.00" - << "1.01" //end "#0.00#" - << "100" //start "##,##0.##" - << "12,345" - << "1,234,567" - << "0.12" - << "1" - << "0.99" - << "1" - << "1" - << "1.01" //end "##,##0.##" -- ### EXPECT FAIL ### QNumberFormat::formatDecimal() bug - << "(000) 000 - 100" //start "(000) 000 - 000" - << "(000) 012 - 345" - << "(001) 234 - 567" - << "(000) 000 - 000" - << "(000) 000 - 001" - << "(000) 000 - 001" - << "(000) 000 - 001" - << "(000) 000 - 001" - << "(000) 000 - 001" // end "(000) 000 - 000" - << "00,000,100.0000" // start "00000,000.0000" - << "00,012,345.0000" - << "01,234,567.0000" - << "00,000,000.1230" - << "00,000,000.9999" - << "00,000,000.9890" - << "00,000,001.0000" - << "00,000,001.0000" - << "00,000,001.0100"; // end - - /* - qDebug() << "strings.size()" << strings.size() - << "\nformats.size()" << formats.size() - << "texts.size()" << texts.size(); - */ -} - -void tst_qdeclarativenumberformatter::text_data() -{ - QTest::addColumn("string"); - QTest::addColumn("format"); - QTest::addColumn("text"); - - for (int j=0; j < formats.size(); j++) - { - for (int i=0; i < strings.size(); i++) - { - QTest::newRow(QString("%1, %2").arg(strings.at(i)).arg(formats.at(j)).toAscii()) - << strings.at(i) << formats.at(j) << texts.at(j*formats.size()+i); - } - } - -} - -void tst_qdeclarativenumberformatter::text() -{ - QFETCH(QString, string); - QFETCH(QString, format); - QFETCH(QString, text); - - QString componentStr = QString("import Qt 4.6\nNumberFormatter { number: ") + string + QString("; format: \"") + format + QString("\" }"); - - QDeclarativeEngine engine; - QDeclarativeComponent formatterComponent(&engine); - formatterComponent.setData(componentStr.toUtf8(), QUrl::fromLocalFile("")); - if(formatterComponent.isError()) - qDebug() << formatterComponent.errors(); - QVERIFY(formatterComponent.isReady()); - QDeclarativeNumberFormatter *formatter = qobject_cast(formatterComponent.create()); - QVERIFY(formatter != 0); - - QCOMPARE(formatter->format(), format); - QCOMPARE(formatter->text(), text); - - delete formatter; -} - -QTEST_MAIN(tst_qdeclarativenumberformatter) - -#include "tst_qdeclarativenumberformatter.moc" -- cgit v0.12 From 8708350f4b00507348fa59f313bcfa554a3d6f79 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 5 Mar 2010 10:35:54 +1000 Subject: Update QML documentation snippets to latest syntax. --- doc/src/snippets/declarative/GroupBox.qml | 15 --------------- doc/src/snippets/declarative/content.qml | 9 --------- doc/src/snippets/declarative/listview/highlight.qml | 4 ++-- doc/src/snippets/declarative/mouseregion.qml | 2 +- doc/src/snippets/declarative/pathview/pathattributes.qml | 2 +- doc/src/snippets/declarative/pathview/pathview.qml | 2 +- 6 files changed, 5 insertions(+), 29 deletions(-) delete mode 100644 doc/src/snippets/declarative/GroupBox.qml delete mode 100644 doc/src/snippets/declarative/content.qml diff --git a/doc/src/snippets/declarative/GroupBox.qml b/doc/src/snippets/declarative/GroupBox.qml deleted file mode 100644 index 6c5431e..0000000 --- a/doc/src/snippets/declarative/GroupBox.qml +++ /dev/null @@ -1,15 +0,0 @@ -import Qt 4.6 - -ContentWrapper { - id: container; width: parent.width; height: contents.height - children: [ - Rectangle { - width: parent.width; height: contents.height - color: "white"; pen.width: 2; pen.color: "#adaeb0"; radius: 10 - Column { - id: layout; width: parent.width; margin: 5; spacing: 2 - Content { } - } - } - ] -} diff --git a/doc/src/snippets/declarative/content.qml b/doc/src/snippets/declarative/content.qml deleted file mode 100644 index fb03ced..0000000 --- a/doc/src/snippets/declarative/content.qml +++ /dev/null @@ -1,9 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 200; height: 100; color: "lightgray" - GroupBox { - Text { text: "First Item" } - Text { text: "Second Item" } - } -} diff --git a/doc/src/snippets/declarative/listview/highlight.qml b/doc/src/snippets/declarative/listview/highlight.qml index b016f9a..6a9d215 100644 --- a/doc/src/snippets/declarative/listview/highlight.qml +++ b/doc/src/snippets/declarative/listview/highlight.qml @@ -30,7 +30,7 @@ Rectangle { } ] transitions: [ - Transition { NumberAnimation { matchProperties: "x"; duration: 200 } } + Transition { NumberAnimation { properties: "x"; duration: 200 } } ] } } @@ -44,7 +44,7 @@ Rectangle { Rectangle { width: 180; height: 40 color: "lightsteelblue"; radius: 5 - y: SpringFollow { + SpringFollow on y { source: list.currentItem.y spring: 3 damping: 0.2 diff --git a/doc/src/snippets/declarative/mouseregion.qml b/doc/src/snippets/declarative/mouseregion.qml index 79f8f8f..fc6c8f0 100644 --- a/doc/src/snippets/declarative/mouseregion.qml +++ b/doc/src/snippets/declarative/mouseregion.qml @@ -1,7 +1,7 @@ import Qt 4.6 Rectangle { width: 200; height: 100 -HorizontalLayout { +Row { //! [0] Rectangle { width: 100; height: 100; color: "green" MouseArea { anchors.fill: parent; onClicked: { parent.color = 'red' } } diff --git a/doc/src/snippets/declarative/pathview/pathattributes.qml b/doc/src/snippets/declarative/pathview/pathattributes.qml index 19a192c..99d0de2 100644 --- a/doc/src/snippets/declarative/pathview/pathattributes.qml +++ b/doc/src/snippets/declarative/pathview/pathattributes.qml @@ -13,7 +13,7 @@ Rectangle { opacity: PathView.opacity Column { Image { anchors.horizontalCenter: name.horizontalCenter; width: 64; height: 64; source: icon } - Text { id: name; text: name; font.pointSize: 16} + Text { text: name; font.pointSize: 16} } } } diff --git a/doc/src/snippets/declarative/pathview/pathview.qml b/doc/src/snippets/declarative/pathview/pathview.qml index 5605139..e316578 100644 --- a/doc/src/snippets/declarative/pathview/pathview.qml +++ b/doc/src/snippets/declarative/pathview/pathview.qml @@ -11,7 +11,7 @@ Rectangle { width: 80; height: 80 Column { Image { anchors.horizontalCenter: name.horizontalCenter; width: 64; height: 64; source: icon } - Text { id: name; text: name; font.pointSize: 16} + Text { text: name; font.pointSize: 16} } } } -- cgit v0.12 From 5048b96a14b61329257e153f2551b6fca4519f84 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 5 Mar 2010 10:40:49 +1000 Subject: Include QML doc snippets in examples autotest --- tests/auto/declarative/examples/examples.pro | 2 ++ tests/auto/declarative/examples/tst_examples.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/tests/auto/declarative/examples/examples.pro b/tests/auto/declarative/examples/examples.pro index b9bcd28..85d2a73 100644 --- a/tests/auto/declarative/examples/examples.pro +++ b/tests/auto/declarative/examples/examples.pro @@ -3,3 +3,5 @@ contains(QT_CONFIG,declarative): QT += declarative macx:CONFIG -= app_bundle SOURCES += tst_examples.cpp + +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/examples/tst_examples.cpp b/tests/auto/declarative/examples/tst_examples.cpp index 106a4e0..678dd59 100644 --- a/tests/auto/declarative/examples/tst_examples.cpp +++ b/tests/auto/declarative/examples/tst_examples.cpp @@ -168,10 +168,12 @@ void tst_examples::examples_data() QString examples = QLibraryInfo::location(QLibraryInfo::ExamplesPath); QString demos = QLibraryInfo::location(QLibraryInfo::DemosPath); + QString snippets = QLatin1String(SRCDIR) + "/../../../../doc/src/snippets/"; QStringList files; files << findQmlFiles(QDir(examples)); files << findQmlFiles(QDir(demos)); + files << findQmlFiles(QDir(snippets)); foreach (const QString &file, files) QTest::newRow(file.toLatin1().constData()) << file; -- cgit v0.12 From 43d2aeab612022228eb9357bfa7e8bb88809c64f Mon Sep 17 00:00:00 2001 From: Dmytro Poplavskiy Date: Fri, 5 Mar 2010 10:52:55 +1000 Subject: QuickTime movie view output: emit the natural size changes Reviewed-by: Justin McPherson --- src/plugins/mediaservices/qt7/qt7movieviewoutput.mm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm b/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm index b90470c..d8d48d0 100644 --- a/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm +++ b/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm @@ -201,7 +201,10 @@ void QT7MovieViewOutput::setMovie(void *movie) void QT7MovieViewOutput::updateNaturalSize(const QSize &newSize) { - m_nativeSize = newSize; + if (m_nativeSize != newSize) { + m_nativeSize = newSize; + emit nativeSizeChanged(); + } } WId QT7MovieViewOutput::winId() const -- cgit v0.12 From c78995a093ecab4802e09815147f868d4e47e2d5 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 5 Mar 2010 11:05:19 +1000 Subject: ParentAnimation docs + test. Task-number: QTBUG-8612 --- doc/src/declarative/elements.qdoc | 1 + src/declarative/util/qdeclarativeanimation.cpp | 63 + .../parentAnimation/data/parentAnimation.0.png | Bin 0 -> 3742 bytes .../parentAnimation/data/parentAnimation.1.png | Bin 0 -> 3727 bytes .../parentAnimation/data/parentAnimation.2.png | Bin 0 -> 3742 bytes .../parentAnimation/data/parentAnimation.3.png | Bin 0 -> 3628 bytes .../parentAnimation/data/parentAnimation.4.png | Bin 0 -> 3610 bytes .../parentAnimation/data/parentAnimation.5.png | Bin 0 -> 3742 bytes .../parentAnimation/data/parentAnimation.qml | 1663 ++++++++++++++++++++ .../animation/parentAnimation/parentAnimation.qml | 58 + 10 files changed, 1785 insertions(+) create mode 100644 tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.0.png create mode 100644 tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.1.png create mode 100644 tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.2.png create mode 100644 tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.3.png create mode 100644 tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.4.png create mode 100644 tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.5.png create mode 100644 tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.qml create mode 100644 tests/auto/declarative/visual/animation/parentAnimation/parentAnimation.qml diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index 83adcb3..67aadcf 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -75,6 +75,7 @@ The following table lists the QML elements provided by the Qt Declarative module \o \l SequentialAnimation \o \l ParallelAnimation \o \l PauseAnimation +\o \l ParentAnimation \o \l PropertyAction \o \l ParentAction \o \l ScriptAction diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index d1a3770..49177d1 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -2391,6 +2391,52 @@ void QDeclarativePropertyAnimation::transition(QDeclarativeStateActions &actions } } +/*! + \qmlclass ParentAnimation QDeclarativeParentAnimation + \since 4.7 + \inherits Animation + \brief The ParentAnimation element allows you to animate parent changes. + + ParentAnimation is used in conjunction with NumberAnimation to smoothly + animate changing an item's parent. In the following example, + ParentAnimation wraps a NumberAnimation which animates from the + current position in the old parent to the new position in the new + parent. + + \qml + ... + State { + //reparent myItem to newParent. myItem's final location + //should be 10,10 in newParent. + ParentChange { + target: myItem + parent: newParent + x: 10; y: 10 + } + } + ... + Transition { + //smoothly reparent myItem and move into new position + ParentAnimation { + target: theItem + NumberAnimation { properties: "x,y" } + } + } + \endqml + + ParentAnimation can wrap any number of animations -- those animations will + be run in parallel (like those in a ParallelAnimation group). + + In some cases, such as reparenting between items with clipping, it's useful + to animate the parent change \i via another item with no clipping. + + When used in a transition, ParentAnimation will by default animate + all ParentChanges. +*/ +/*! + \internal + \class QDeclarativeParentAnimation +*/ QDeclarativeParentAnimation::QDeclarativeParentAnimation(QObject *parent) : QDeclarativeAnimationGroup(*(new QDeclarativeParentAnimationPrivate), parent) { @@ -2412,6 +2458,10 @@ QDeclarativeParentAnimation::~QDeclarativeParentAnimation() { } +/*! + \qmlproperty item ParentAnimation::target + The item to reparent. +*/ QDeclarativeItem *QDeclarativeParentAnimation::target() const { Q_D(const QDeclarativeParentAnimation); @@ -2436,6 +2486,19 @@ void QDeclarativeParentAnimation::setNewParent(QDeclarativeItem *newParent) d->newParent = newParent; } +/*! + \qmlproperty item ParentAnimation::via + The item to reparent via. This provides a way to do an unclipped animation + when both the old parent and new parent are clipped + + \qml + ParentAnimation { + target: myItem + via: topLevelItem + ... + } + \endqml +*/ QDeclarativeItem *QDeclarativeParentAnimation::via() const { Q_D(const QDeclarativeParentAnimation); diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.0.png b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.0.png new file mode 100644 index 0000000..7d41abc Binary files /dev/null and b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.0.png differ diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.1.png b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.1.png new file mode 100644 index 0000000..16b95ab Binary files /dev/null and b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.1.png differ diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.2.png b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.2.png new file mode 100644 index 0000000..7d41abc Binary files /dev/null and b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.2.png differ diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.3.png b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.3.png new file mode 100644 index 0000000..800bf12 Binary files /dev/null and b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.3.png differ diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.4.png b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.4.png new file mode 100644 index 0000000..d0155bb Binary files /dev/null and b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.4.png differ diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.5.png b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.5.png new file mode 100644 index 0000000..7d41abc Binary files /dev/null and b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.5.png differ diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.qml b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.qml new file mode 100644 index 0000000..5718560 --- /dev/null +++ b/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.qml @@ -0,0 +1,1663 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 32 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 48 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 64 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 80 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 96 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 112 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 128 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 144 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 160 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 176 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 192 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 208 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 224 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 240 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 256 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 272 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 288 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 304 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 320 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 336 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 352 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 368 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 384 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 400 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 416 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 432 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 448 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 464 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 480 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 496 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 512 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 528 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 544 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 560 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 576 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 592 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 608 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 624 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 640 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 656 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 672 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 688 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 704 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 720 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 736 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 752 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 768 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 784 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 800 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 816 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 832 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 848 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 864 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 880 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 896 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 912 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 928 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 944 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 960 + image: "parentAnimation.0.png" + } + Frame { + msec: 976 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 992 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1008 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1024 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1040 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1056 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1072 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1088 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1104 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1120 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1136 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1152 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1168 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1184 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1200 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1216 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1232 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1248 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1264 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1280 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1296 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1312 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1328 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1344 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1360 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1376 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1392 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1408 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1424 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1440 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1456 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1472 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1488 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1504 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1520 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1536 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1552 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1568 + hash: "633b5668278295faa57d0cfffe8a29cb" + } + Frame { + msec: 1584 + hash: "ccbf4505e0f05547d2f7ce874ab941c0" + } + Frame { + msec: 1600 + hash: "be904489959fa365badb642fa9e85922" + } + Frame { + msec: 1616 + hash: "de6a97ac6e2677feb223336199cbffe1" + } + Frame { + msec: 1632 + hash: "997b0a547336a9bb6a67cd9beffe1831" + } + Frame { + msec: 1648 + hash: "ac9a6e111050b8a7c4492f06c33d3969" + } + Frame { + msec: 1664 + hash: "7313c0d2ee06e393f486670222c29bb4" + } + Frame { + msec: 1680 + hash: "24cea420d03d1fdcddb1b9cf5112cbee" + } + Frame { + msec: 1696 + hash: "764688785eeaa01e9c84821476911edb" + } + Frame { + msec: 1712 + hash: "b24ae0cb512abfd2606ff9c20a6751bf" + } + Frame { + msec: 1728 + hash: "f1daed3391f10e27435a54222df8d0ab" + } + Frame { + msec: 1744 + hash: "99704e182267f2c12d0215b9c03f4d68" + } + Frame { + msec: 1760 + hash: "143cd9259a41b8af5d41a5b2aaf8de64" + } + Frame { + msec: 1776 + hash: "b5f0a0f838b5870c162a24cd767f068b" + } + Frame { + msec: 1792 + hash: "c5c8cdcbfab7466e447eaff582bf7312" + } + Frame { + msec: 1808 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1824 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1840 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1856 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1872 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1888 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1904 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1920 + image: "parentAnimation.1.png" + } + Frame { + msec: 1936 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1952 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1968 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1984 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2000 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2016 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2032 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2048 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2064 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2080 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2096 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2112 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2128 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2144 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2160 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2176 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2192 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2208 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2224 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2240 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2256 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2272 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2288 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2304 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2320 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2336 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2352 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2368 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2384 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2400 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2416 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2432 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2448 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2464 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2480 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2496 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2512 + hash: "eaeeb8c51d43e3c38ff7dde632d1f9c8" + } + Frame { + msec: 2528 + hash: "ec0e68c2e7a75fedd1091ce633dadd4f" + } + Frame { + msec: 2544 + hash: "a5d60efc176dee9083a2d746e7ad8315" + } + Frame { + msec: 2560 + hash: "48bcbbacf413080247f818e35e496e04" + } + Frame { + msec: 2576 + hash: "c521af8efa19fbac39119ad75cd469f5" + } + Frame { + msec: 2592 + hash: "0e74613c67fc9d9acb21a3d382c5efcd" + } + Frame { + msec: 2608 + hash: "eeb3f4467ebd7ee678c3b7371db28519" + } + Frame { + msec: 2624 + hash: "9c5b9009a35b74d0ddec8fec85f204bf" + } + Frame { + msec: 2640 + hash: "aefc70824e23428aebf0a40830a57469" + } + Frame { + msec: 2656 + hash: "1fa9c23760193b74b0063b4e4c434070" + } + Frame { + msec: 2672 + hash: "8091700d4729163bd87521385853e608" + } + Frame { + msec: 2688 + hash: "a13558e609570f9390f20a85d244fa22" + } + Frame { + msec: 2704 + hash: "7be5e3609bbeb9a2c1df7d52f3953d4d" + } + Frame { + msec: 2720 + hash: "51c8ae31f858121d86ef09cc9a5c5ef3" + } + Frame { + msec: 2736 + hash: "84ce8f39207f4b07c2c3323425a8c238" + } + Frame { + msec: 2752 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2768 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2784 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2800 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2816 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2832 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2848 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2864 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2880 + image: "parentAnimation.2.png" + } + Frame { + msec: 2896 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2912 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2928 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2944 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2960 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2976 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2992 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3008 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3024 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3040 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3056 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3072 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3088 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3104 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3120 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3136 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3152 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3168 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3184 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3200 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3216 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3232 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3248 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3264 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3280 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3296 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3312 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3328 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3344 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3360 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3376 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3392 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3408 + hash: "633b5668278295faa57d0cfffe8a29cb" + } + Frame { + msec: 3424 + hash: "ccbf4505e0f05547d2f7ce874ab941c0" + } + Frame { + msec: 3440 + hash: "be904489959fa365badb642fa9e85922" + } + Frame { + msec: 3456 + hash: "de6a97ac6e2677feb223336199cbffe1" + } + Frame { + msec: 3472 + hash: "997b0a547336a9bb6a67cd9beffe1831" + } + Frame { + msec: 3488 + hash: "ac9a6e111050b8a7c4492f06c33d3969" + } + Frame { + msec: 3504 + hash: "7313c0d2ee06e393f486670222c29bb4" + } + Frame { + msec: 3520 + hash: "24cea420d03d1fdcddb1b9cf5112cbee" + } + Frame { + msec: 3536 + hash: "764688785eeaa01e9c84821476911edb" + } + Frame { + msec: 3552 + hash: "b24ae0cb512abfd2606ff9c20a6751bf" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3568 + hash: "b24ae0cb512abfd2606ff9c20a6751bf" + } + Frame { + msec: 3584 + hash: "d7bf1b48f1a03974e7f095468e07f037" + } + Frame { + msec: 3600 + hash: "a59ab4fe1c22d27b5cdde949cf90e6f4" + } + Frame { + msec: 3616 + hash: "7c3082720e65b8a6217bf5a5fe4d48c0" + } + Frame { + msec: 3632 + hash: "350d1ff24fb8fba0ab8a6694d99544b3" + } + Frame { + msec: 3648 + hash: "81d17a62c33d79ed25968ec47771d292" + } + Frame { + msec: 3664 + hash: "43fd3ef88bd7a2e5bf4546f088783077" + } + Frame { + msec: 3680 + hash: "041938ad2e023202db18df28f2329c8f" + } + Frame { + msec: 3696 + hash: "ec8677eae06cbf77a9508953325b179e" + } + Mouse { + type: 4 + button: 1 + buttons: 1 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3712 + hash: "ec8677eae06cbf77a9508953325b179e" + } + Frame { + msec: 3728 + hash: "453026339c3901ee286831b4b41088f6" + } + Frame { + msec: 3744 + hash: "d58a7a41ade691cc0acfb0303bfc3b68" + } + Frame { + msec: 3760 + hash: "a200b05ef3d7e39e11513fd2f8ff1497" + } + Frame { + msec: 3776 + hash: "faa1223975acdf2d4b48045d7f2ce445" + } + Frame { + msec: 3792 + hash: "964d9b80d82d0fe3d3fb328a1661a60e" + } + Frame { + msec: 3808 + hash: "705871bc384de93100354acb19b371b0" + } + Frame { + msec: 3824 + hash: "1a4480463adfc5a3d525916b03c2c3ce" + } + Frame { + msec: 3840 + image: "parentAnimation.3.png" + } + Frame { + msec: 3856 + hash: "9a55bdf428f45f02d9c8cf414dcd7754" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3872 + hash: "9a55bdf428f45f02d9c8cf414dcd7754" + } + Frame { + msec: 3888 + hash: "0f6d82d02ce7d79a1bdf6bf81791f321" + } + Frame { + msec: 3904 + hash: "b145b9d299714020686069baec11cb71" + } + Frame { + msec: 3920 + hash: "5dbf5e4151c01f10cf23b07ca1df56ab" + } + Frame { + msec: 3936 + hash: "822d4397ac514673ca1015ad05c9b4ac" + } + Frame { + msec: 3952 + hash: "461d35e865153d22e9a67bb0ffddefb7" + } + Frame { + msec: 3968 + hash: "676fff498e6879144090d5596056c6c8" + } + Frame { + msec: 3984 + hash: "854da7ed627237250e20b263f9eb9d90" + } + Frame { + msec: 4000 + hash: "157ec877797883d329ff329537205d02" + } + Frame { + msec: 4016 + hash: "613669ca60240fcc490d548fe802390d" + } + Frame { + msec: 4032 + hash: "803e84f027c773db96f9530511e5fedb" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4048 + hash: "803e84f027c773db96f9530511e5fedb" + } + Frame { + msec: 4064 + hash: "f47cfd1f1094b782c08490be2f49c6ed" + } + Frame { + msec: 4080 + hash: "db5953f3ee4e2db87e33b85464167f74" + } + Frame { + msec: 4096 + hash: "8313cb750b9abc586a43b9422de08f53" + } + Frame { + msec: 4112 + hash: "deb390ce992fee85c56733168b4bd1ec" + } + Frame { + msec: 4128 + hash: "29a1cda3647c49731e9adcd107a2d13c" + } + Frame { + msec: 4144 + hash: "bfa17a3afa06699107b217df6e4aed43" + } + Frame { + msec: 4160 + hash: "8e639ef01ab6d8876c3f40adc44928c6" + } + Frame { + msec: 4176 + hash: "14038aedf42de0ca62d872d317018ee0" + } + Frame { + msec: 4192 + hash: "c1288465163d44ed40e28f21e0298ea6" + } + Frame { + msec: 4208 + hash: "d6915f22a905737488d27e8138002f31" + } + Frame { + msec: 4224 + hash: "5b1621451a5a3af40302603ec31bb8bb" + } + Frame { + msec: 4240 + hash: "16fd73c0cb615cc717cdc4a6787471c2" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4256 + hash: "16fd73c0cb615cc717cdc4a6787471c2" + } + Frame { + msec: 4272 + hash: "db5caf42e11705ecdb2006e1ed6b0c4f" + } + Frame { + msec: 4288 + hash: "4b7e51e4e9fb1dacb32aac11a4a46ceb" + } + Frame { + msec: 4304 + hash: "63c93cda9892f733809125991af997b6" + } + Frame { + msec: 4320 + hash: "0e74613c67fc9d9acb21a3d382c5efcd" + } + Frame { + msec: 4336 + hash: "58e813a6619828b6c9ec9cf300ff0e2d" + } + Frame { + msec: 4352 + hash: "181a6e334d745381f091bf1b55fc1690" + } + Frame { + msec: 4368 + hash: "f25bbc9ddc8cc72036c49d50b45bece8" + } + Frame { + msec: 4384 + hash: "88e8f0496debfee6bc2426895fe1c3d9" + } + Frame { + msec: 4400 + hash: "db5953f3ee4e2db87e33b85464167f74" + } + Frame { + msec: 4416 + hash: "9818a899adb916b6ba5f7537697ef062" + } + Frame { + msec: 4432 + hash: "3842f40093d70089a4004fb803c05981" + } + Frame { + msec: 4448 + hash: "be904489959fa365badb642fa9e85922" + } + Frame { + msec: 4464 + hash: "cbae27751ff0ebce4fcc164564f4cf1b" + } + Frame { + msec: 4480 + hash: "3a1b468bd3fd747bbe6b069426b170a9" + } + Frame { + msec: 4496 + hash: "57fbcd580eb1607a2a7526a65842dfeb" + } + Frame { + msec: 4512 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4528 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4544 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4560 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4576 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4592 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4608 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4624 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4640 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4656 + hash: "633b5668278295faa57d0cfffe8a29cb" + } + Frame { + msec: 4672 + hash: "ccbf4505e0f05547d2f7ce874ab941c0" + } + Frame { + msec: 4688 + hash: "be904489959fa365badb642fa9e85922" + } + Frame { + msec: 4704 + hash: "de6a97ac6e2677feb223336199cbffe1" + } + Frame { + msec: 4720 + hash: "997b0a547336a9bb6a67cd9beffe1831" + } + Frame { + msec: 4736 + hash: "ac9a6e111050b8a7c4492f06c33d3969" + } + Frame { + msec: 4752 + hash: "7313c0d2ee06e393f486670222c29bb4" + } + Frame { + msec: 4768 + hash: "24cea420d03d1fdcddb1b9cf5112cbee" + } + Frame { + msec: 4784 + hash: "764688785eeaa01e9c84821476911edb" + } + Frame { + msec: 4800 + image: "parentAnimation.4.png" + } + Frame { + msec: 4816 + hash: "f1daed3391f10e27435a54222df8d0ab" + } + Frame { + msec: 4832 + hash: "99704e182267f2c12d0215b9c03f4d68" + } + Frame { + msec: 4848 + hash: "143cd9259a41b8af5d41a5b2aaf8de64" + } + Frame { + msec: 4864 + hash: "b5f0a0f838b5870c162a24cd767f068b" + } + Frame { + msec: 4880 + hash: "c5c8cdcbfab7466e447eaff582bf7312" + } + Frame { + msec: 4896 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 4912 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 4928 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 4944 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 4960 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 4976 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 4992 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5008 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5024 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5040 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5056 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5072 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5088 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5104 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5120 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5136 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5152 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5168 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5184 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5200 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5216 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5232 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5248 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5264 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5280 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5296 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5312 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5328 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5344 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5360 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5376 + hash: "eaeeb8c51d43e3c38ff7dde632d1f9c8" + } + Frame { + msec: 5392 + hash: "ec0e68c2e7a75fedd1091ce633dadd4f" + } + Frame { + msec: 5408 + hash: "a5d60efc176dee9083a2d746e7ad8315" + } + Frame { + msec: 5424 + hash: "48bcbbacf413080247f818e35e496e04" + } + Frame { + msec: 5440 + hash: "c521af8efa19fbac39119ad75cd469f5" + } + Frame { + msec: 5456 + hash: "0e74613c67fc9d9acb21a3d382c5efcd" + } + Frame { + msec: 5472 + hash: "eeb3f4467ebd7ee678c3b7371db28519" + } + Frame { + msec: 5488 + hash: "9c5b9009a35b74d0ddec8fec85f204bf" + } + Frame { + msec: 5504 + hash: "aefc70824e23428aebf0a40830a57469" + } + Frame { + msec: 5520 + hash: "1fa9c23760193b74b0063b4e4c434070" + } + Frame { + msec: 5536 + hash: "8091700d4729163bd87521385853e608" + } + Frame { + msec: 5552 + hash: "a13558e609570f9390f20a85d244fa22" + } + Frame { + msec: 5568 + hash: "7be5e3609bbeb9a2c1df7d52f3953d4d" + } + Frame { + msec: 5584 + hash: "51c8ae31f858121d86ef09cc9a5c5ef3" + } + Frame { + msec: 5600 + hash: "84ce8f39207f4b07c2c3323425a8c238" + } + Frame { + msec: 5616 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5632 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5648 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5664 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5680 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5696 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5712 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5728 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5744 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5760 + image: "parentAnimation.5.png" + } + Frame { + msec: 5776 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5792 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5808 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5824 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5840 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5856 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5872 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5888 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5904 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5920 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5936 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5952 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5968 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5984 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6000 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6016 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6032 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6048 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6064 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6080 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6096 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6112 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6128 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6144 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6160 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6176 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6192 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6208 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6224 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6240 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6256 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6272 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } +} diff --git a/tests/auto/declarative/visual/animation/parentAnimation/parentAnimation.qml b/tests/auto/declarative/visual/animation/parentAnimation/parentAnimation.qml new file mode 100644 index 0000000..1833cf0 --- /dev/null +++ b/tests/auto/declarative/visual/animation/parentAnimation/parentAnimation.qml @@ -0,0 +1,58 @@ +import Qt 4.6 +Rectangle { + width: 800; + height: 480; + color: "black"; + + Rectangle { + id: gr + color: "green" + width: 100; height: 100 + } + + MouseRegion { + id: mouser + anchors.fill: parent + } + + Rectangle { + id: np + x: 300 + width: 300; height: 300 + color: "yellow" + clip: true + Rectangle { + color: "red" + x: 100; y: 100; height: 100; width: 100 + } + + } + + Rectangle { + id: vp + x: 200; y: 200 + width: 100; height: 100 + color: "blue" + rotation: 45 + scale: 2 + } + + states: State { + name: "state1" + when: mouser.pressed + ParentChange { + target: gr + parent: np + x: 100; y: 100; width: 200; + } + } + + transitions: Transition { + reversible: true + to: "state1" + ParentAnimation { + target: gr; via: vp; + NumberAnimation { properties: "x,y,rotation,scale,width" } + } + } +} -- cgit v0.12 From fefa0bb4701e0899c4b087864fcf109330fca64d Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 5 Mar 2010 11:13:02 +1000 Subject: Update QmlChanges.txt --- src/declarative/QmlChanges.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt index 6e77abf..591fb3d 100644 --- a/src/declarative/QmlChanges.txt +++ b/src/declarative/QmlChanges.txt @@ -7,6 +7,8 @@ Flickable: renamed viewportX -> contentX Flickable: renamed viewportY -> contentY Removed Flickable.reportedVelocitySmoothing Removed Qt.playSound (replaced by SoundEffect element) +Removed NumberFormatter +Removed DateTimeFormatter (use Qt.formatDateTime() instead) Renamed MouseRegion -> MouseArea Connection: syntax and rename: Connection { sender: a; signal: foo(); script: xxx } -- cgit v0.12 From af81ea8a5abbd9a94eb6ab5c3fe0425779905d5a Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Fri, 5 Mar 2010 11:14:38 +1000 Subject: Fix test --- .../tst_qdeclarativexmllistmodel.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp index 68029bc..20f4ef3 100644 --- a/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp +++ b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp @@ -266,6 +266,8 @@ void tst_qdeclarativexmllistmodel::reload() QCOMPARE(spyRemove[0][0].toInt(), 0); QCOMPARE(spyRemove[0][1].toInt(), 9); + + delete model; } void tst_qdeclarativexmllistmodel::useKeys() @@ -284,7 +286,7 @@ void tst_qdeclarativexmllistmodel::useKeys() QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/roleKeys.qml")); QDeclarativeXmlListModel *model = qobject_cast(component.create()); QVERIFY(model != 0); - + model->setXml(oldXml); QTRY_COMPARE(model->count(), oldCount); @@ -319,6 +321,8 @@ void tst_qdeclarativexmllistmodel::useKeys() QCOMPARE(spyRemove[i][0].toInt(), removeRanges[i].first); QCOMPARE(spyRemove[i][1].toInt(), removeRanges[i].second); } + + delete model; } void tst_qdeclarativexmllistmodel::useKeys_data() @@ -448,18 +452,16 @@ void tst_qdeclarativexmllistmodel::noKeysValueChanges() model->setXml(xml); // wait for the new xml data to be set, and verify no signals were emitted - for (int i=0; i<50; i++) { - QTest::qWait(100); - if (model->data(0, model->roles()[2]).toString() != QLatin1String("AussieRules")) - break; - } + QTRY_VERIFY(model->data(0, model->roles()[2]).toString() != QLatin1String("Football")); QCOMPARE(model->data(0, model->roles()[2]).toString(), QLatin1String("AussieRules")); QVERIFY(spyInsert.count() == 0); QVERIFY(spyRemove.count() == 0); QVERIFY(spyCount.count() == 0); - + QCOMPARE(model->count(), 2); + + delete model; } void tst_qdeclarativexmllistmodel::keysChanged() @@ -494,6 +496,8 @@ void tst_qdeclarativexmllistmodel::keysChanged() QCOMPARE(spyRemove[0][1].toInt(), 2); QCOMPARE(spyCount.count(), 0); + + delete model; } QTEST_MAIN(tst_qdeclarativexmllistmodel) -- cgit v0.12 From 24a94c1b88fc72243c53e1bf51b87dc0d0be41b7 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Fri, 5 Mar 2010 11:18:53 +1000 Subject: declarative examples cleanup --- examples/declarative/behaviours/MyRect.qml | 13 ------- examples/declarative/fonts/fonts.qml | 13 ------- examples/declarative/listview/itemlist.qml | 8 ++--- examples/declarative/mousearea/mouse.qml | 40 ++++++++++++++++++++++ examples/declarative/mouseregion/mouse.qml | 40 ---------------------- .../plugins/com/nokia/TimeExample/Clock.qml | 8 ++--- examples/declarative/searchbox/main.qml | 6 ++-- examples/declarative/velocity/Day.qml | 4 +-- 8 files changed, 52 insertions(+), 80 deletions(-) delete mode 100644 examples/declarative/behaviours/MyRect.qml create mode 100644 examples/declarative/mousearea/mouse.qml delete mode 100644 examples/declarative/mouseregion/mouse.qml diff --git a/examples/declarative/behaviours/MyRect.qml b/examples/declarative/behaviours/MyRect.qml deleted file mode 100644 index caf0d83..0000000 --- a/examples/declarative/behaviours/MyRect.qml +++ /dev/null @@ -1,13 +0,0 @@ -import Qt 4.6 - -Rectangle { - radius: 15 - border.color: "black" - width: 100 - height: 100 - id: page - MouseArea { - anchors.fill: parent - onClicked: { bluerect.parent = page; bluerect.x=0 } - } -} diff --git a/examples/declarative/fonts/fonts.qml b/examples/declarative/fonts/fonts.qml index 275ad43..6246d16 100644 --- a/examples/declarative/fonts/fonts.qml +++ b/examples/declarative/fonts/fonts.qml @@ -7,11 +7,8 @@ Rectangle { color: "steelblue" FontLoader { id: fixedFont; name: "Courier" } - FontLoader { id: localFont; source: "fonts/tarzenau-ocr-a.ttf" } - FontLoader { id: webFont; source: "http://www.princexml.com/fonts/steffmann/Starburst.ttf" } - FontLoader { id: webFont2; source: "http://wrong.address.org" } Column { anchors.fill: parent; spacing: 10 @@ -55,15 +52,5 @@ Rectangle { width: parent.width; elide: Text.ElideMiddle font.family: webFont.name; font.pointSize: 36 } - Text { - text: { - if (webFont2.status == 1) myText - else if (webFont2.status == 2) "Loading..." - else if (webFont2.status == 3) "Error loading font" - } - color: "lightsteelblue" - width: parent.width; elide: Text.ElideRight - font.family: webFont2.name; font.pointSize: 36 - } } } diff --git a/examples/declarative/listview/itemlist.qml b/examples/declarative/listview/itemlist.qml index 54981b7..41aa860 100644 --- a/examples/declarative/listview/itemlist.qml +++ b/examples/declarative/listview/itemlist.qml @@ -26,14 +26,12 @@ Rectangle { ListView { id: view - anchors.fill: parent - anchors.bottomMargin: 30 + anchors.fill: parent; anchors.bottomMargin: 30 model: itemModel - preferredHighlightBegin: 0 - preferredHighlightEnd: 0 + preferredHighlightBegin: 0; preferredHighlightEnd: 0 highlightRangeMode: "StrictlyEnforceRange" orientation: ListView.Horizontal - flickDeceleration: 2000 + snapMode: ListView.SnapOneItem; flickDeceleration: 2000 } Rectangle { diff --git a/examples/declarative/mousearea/mouse.qml b/examples/declarative/mousearea/mouse.qml new file mode 100644 index 0000000..9191f8a --- /dev/null +++ b/examples/declarative/mousearea/mouse.qml @@ -0,0 +1,40 @@ +import Qt 4.6 + +Rectangle { + color: "white" + width: 200; height: 200 + Rectangle { + width: 50; height: 50 + color: "red" + Text { text: "Click"; anchors.centerIn: parent } + MouseArea { + hoverEnabled: true + acceptedButtons: Qt.LeftButton | Qt.RightButton + onPressed: { console.log('press (x: ' + mouse.x + ' y: ' + mouse.y + ' button: ' + (mouse.button == Qt.RightButton ? 'right' : 'left') + ' Shift: ' + (mouse.modifiers & Qt.ShiftModifier ? 'true' : 'false') + ')') } + onReleased: { console.log('release (x: ' + mouse.x + ' y: ' + mouse.y + ' isClick: ' + mouse.isClick + ' wasHeld: ' + mouse.wasHeld + ')') } + onClicked: { console.log('click (x: ' + mouse.x + ' y: ' + mouse.y + ' wasHeld: ' + mouse.wasHeld + ')') } + onDoubleClicked: { console.log('double click (x: ' + mouse.x + ' y: ' + mouse.y + ')') } + onPressAndHold: { console.log('press and hold') } + onEntered: { console.log('entered ' + pressed) } + onExited: { console.log('exited ' + pressed) } + anchors.fill: parent + } + } + Rectangle { + y: 100; width: 50; height: 50 + color: "blue" + Text { text: "Drag"; anchors.centerIn: parent } + MouseArea { + drag.target: parent + drag.axis: "XAxis" + drag.minimumX: 0 + drag.maximumX: 150 + onPressed: { console.log('press') } + onReleased: { console.log('release (isClick: ' + mouse.isClick + ') (wasHeld: ' + mouse.wasHeld + ')') } + onClicked: { console.log('click' + '(wasHeld: ' + mouse.wasHeld + ')') } + onDoubleClicked: { console.log('double click') } + onPressAndHold: { console.log('press and hold') } + anchors.fill: parent + } + } +} diff --git a/examples/declarative/mouseregion/mouse.qml b/examples/declarative/mouseregion/mouse.qml deleted file mode 100644 index 9191f8a..0000000 --- a/examples/declarative/mouseregion/mouse.qml +++ /dev/null @@ -1,40 +0,0 @@ -import Qt 4.6 - -Rectangle { - color: "white" - width: 200; height: 200 - Rectangle { - width: 50; height: 50 - color: "red" - Text { text: "Click"; anchors.centerIn: parent } - MouseArea { - hoverEnabled: true - acceptedButtons: Qt.LeftButton | Qt.RightButton - onPressed: { console.log('press (x: ' + mouse.x + ' y: ' + mouse.y + ' button: ' + (mouse.button == Qt.RightButton ? 'right' : 'left') + ' Shift: ' + (mouse.modifiers & Qt.ShiftModifier ? 'true' : 'false') + ')') } - onReleased: { console.log('release (x: ' + mouse.x + ' y: ' + mouse.y + ' isClick: ' + mouse.isClick + ' wasHeld: ' + mouse.wasHeld + ')') } - onClicked: { console.log('click (x: ' + mouse.x + ' y: ' + mouse.y + ' wasHeld: ' + mouse.wasHeld + ')') } - onDoubleClicked: { console.log('double click (x: ' + mouse.x + ' y: ' + mouse.y + ')') } - onPressAndHold: { console.log('press and hold') } - onEntered: { console.log('entered ' + pressed) } - onExited: { console.log('exited ' + pressed) } - anchors.fill: parent - } - } - Rectangle { - y: 100; width: 50; height: 50 - color: "blue" - Text { text: "Drag"; anchors.centerIn: parent } - MouseArea { - drag.target: parent - drag.axis: "XAxis" - drag.minimumX: 0 - drag.maximumX: 150 - onPressed: { console.log('press') } - onReleased: { console.log('release (isClick: ' + mouse.isClick + ') (wasHeld: ' + mouse.wasHeld + ')') } - onClicked: { console.log('click' + '(wasHeld: ' + mouse.wasHeld + ')') } - onDoubleClicked: { console.log('double click') } - onPressAndHold: { console.log('press and hold') } - anchors.fill: parent - } - } -} diff --git a/examples/declarative/plugins/com/nokia/TimeExample/Clock.qml b/examples/declarative/plugins/com/nokia/TimeExample/Clock.qml index 01ec686..622fcf9 100644 --- a/examples/declarative/plugins/com/nokia/TimeExample/Clock.qml +++ b/examples/declarative/plugins/com/nokia/TimeExample/Clock.qml @@ -1,8 +1,8 @@ import Qt 4.6 -Item { +Rectangle { id: clock - width: 200; height: 200 + width: 200; height: 200; color: "gray" property alias city: cityLabel.text property var hours @@ -18,7 +18,7 @@ Item { transform: Rotation { id: hourRotation origin.x: 7.5; origin.y: 73; angle: 0 - angle: SpringFollow { + SpringFollow on angle { spring: 2; damping: 0.2; modulus: 360 source: (clock.hours * 30) + (clock.minutes * 0.5) } @@ -32,7 +32,7 @@ Item { transform: Rotation { id: minuteRotation origin.x: 6.5; origin.y: 83; angle: 0 - angle: SpringFollow { + SpringFollow on angle { spring: 2; damping: 0.2; modulus: 360 source: clock.minutes * 6 } diff --git a/examples/declarative/searchbox/main.qml b/examples/declarative/searchbox/main.qml index 39c3720..9b33be3 100644 --- a/examples/declarative/searchbox/main.qml +++ b/examples/declarative/searchbox/main.qml @@ -6,8 +6,8 @@ Rectangle { Column { anchors.horizontalCenter: parent.horizontalCenter; anchors.verticalCenter: parent.verticalCenter; spacing: 10 - SearchBox { id: search1; KeyNavigation.down: search2; focus: true } - SearchBox { id: search2; KeyNavigation.up: search1; KeyNavigation.down: search3 } - SearchBox { id: search3; KeyNavigation.up: search2 } + SearchBox { id: search1; KeyNavigation.tab: search2; KeyNavigation.backtab: search3; focus: true } + SearchBox { id: search2; KeyNavigation.tab: search3; KeyNavigation.backtab: search1 } + SearchBox { id: search3; KeyNavigation.tab: search1; KeyNavigation.backtab: search2 } } } diff --git a/examples/declarative/velocity/Day.qml b/examples/declarative/velocity/Day.qml index 7424f60..8a7364e 100644 --- a/examples/declarative/velocity/Day.qml +++ b/examples/declarative/velocity/Day.qml @@ -33,7 +33,7 @@ Rectangle { id: sticky scale: 0.5 Image { - id: stickyImage; source: "sticky.png" + id: stickyImage; source: "sticky.png"; transformOrigin: Item.TopLeft smooth: true; y: -20; x: 8 + -width * 0.6 / 2; scale: 0.6 } @@ -59,7 +59,7 @@ Rectangle { } Image { - source: "tack.png" + source: "tack.png"; transformOrigin: Item.TopLeft x: -width / 2; y: -height * 0.7 / 2; scale: 0.7 } -- cgit v0.12 From 356963b1bc81dcad1826449da14b6130eea9cc3f Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 5 Mar 2010 11:33:57 +1000 Subject: Document new ParentChange properties. --- .../util/qdeclarativestateoperations.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/declarative/util/qdeclarativestateoperations.cpp b/src/declarative/util/qdeclarativestateoperations.cpp index cea9ad7..cd06380 100644 --- a/src/declarative/util/qdeclarativestateoperations.cpp +++ b/src/declarative/util/qdeclarativestateoperations.cpp @@ -158,17 +158,17 @@ void QDeclarativeParentChangePrivate::doChange(QDeclarativeItem *targetParent, Q \qmlclass ParentChange QDeclarativeParentChange \brief The ParentChange element allows you to reparent an Item in a state change. - ParentChange reparents an Item while preserving its visual appearance (position, rotation, - and scale) on screen. You can then specify a transition to move/rotate/scale the Item to - its final intended appearance. + ParentChange reparents an item while preserving its visual appearance (position, size, + rotation, and scale) on screen. You can then specify a transition to move/resize/rotate/scale + the item to its final intended appearance. ParentChange can only preserve visual appearance if no complex transforms are involved. More specifically, it will not work if the transform property has been set for any - Items involved in the reparenting (defined as any Items in the common ancestor tree + items involved in the reparenting (i.e. items in the common ancestor tree for the original and new parent). You can specify at which point in a transition you want a ParentChange to occur by - using a ParentAction. + using a ParentAnimation or ParentAction. */ @@ -181,6 +181,16 @@ QDeclarativeParentChange::~QDeclarativeParentChange() { } +/*! + \qmlproperty real ParentChange::x + \qmlproperty real ParentChange::y + \qmlproperty real ParentChange::width + \qmlproperty real ParentChange::height + \qmlproperty real ParentChange::scale + \qmlproperty real ParentChange::rotation + These properties hold the new position, size, scale, and rotation + for the item in this state. +*/ qreal QDeclarativeParentChange::x() const { Q_D(const QDeclarativeParentChange); @@ -314,7 +324,7 @@ void QDeclarativeParentChange::setObject(QDeclarativeItem *target) /*! \qmlproperty Item ParentChange::parent - This property holds the parent for the item in this state + This property holds the new parent for the item in this state. */ QDeclarativeItem *QDeclarativeParentChange::parent() const -- cgit v0.12 From c4cc1998b42b61f6389c372dcb572f2e5d5dcc08 Mon Sep 17 00:00:00 2001 From: Dmytro Poplavskiy Date: Fri, 5 Mar 2010 11:47:30 +1000 Subject: Fixed compiler warning Reviewed-by: Justin McPherson --- src/plugins/mediaservices/qt7/qt7movieviewoutput.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm b/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm index d8d48d0..254af46 100644 --- a/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm +++ b/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm @@ -60,6 +60,7 @@ - (TransparentQTMovieView *) init; - (void) setDrawRect:(QRect &)rect; +- (CIImage *) view:(QTMovieView *)view willDisplayImage:(CIImage *)img; - (void) setContrast:(qreal) contrast; @end -- cgit v0.12 From 2f8141dc3c922619bbe577902c2ef8a9e2195d70 Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Fri, 5 Mar 2010 11:52:10 +1000 Subject: Image drawing in OpenVG was off by 0.5 of a pixel Path transforms need to be adjusted by 0.5 for the difference in OpenVG and Qt co-ordinate systems. Image transforms do not need to be adjusted because OpenVG implicitly adjusts by 0.5. Task-number: QT-2999 Reviewed-by: Sarah Smith --- src/openvg/qpaintengine_vg.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index c46bc27..4a97a6f 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -516,14 +516,11 @@ void QVGPaintEnginePrivate::updateTransform(QPaintDevice *pdev) 0.0f, -1.0f, 0.0f, 0.5f, devh + 0.5f, 1.0f); - // The image transform is always the full transformation, - // because it can be projective. - imageTransform = transform * viewport; - - // Determine if the transformation is projective. - bool projective = (imageTransform.m13() != 0.0f || - imageTransform.m23() != 0.0f || - imageTransform.m33() != 1.0f); + // Compute the path transform and determine if it is projective. + pathTransform = transform * viewport; + bool projective = (pathTransform.m13() != 0.0f || + pathTransform.m23() != 0.0f || + pathTransform.m33() != 1.0f); if (projective) { // The engine cannot do projective path transforms for us, // so we will have to convert the co-ordinates ourselves. @@ -531,11 +528,19 @@ void QVGPaintEnginePrivate::updateTransform(QPaintDevice *pdev) pathTransform = viewport; simpleTransform = false; } else { - pathTransform = imageTransform; simpleTransform = true; } pathTransformSet = false; + // The image transform is always the full transformation, + // because it can be projective. It also does not need the + // (0.5, -0.5) translation because vgDrawImage() implicitly + // adds 0.5 to each co-ordinate. + QTransform viewport2(1.0f, 0.0f, 0.0f, + 0.0f, -1.0f, 0.0f, + 0.0f, devh, 1.0f); + imageTransform = transform * viewport2; + // Calculate the scaling factor to use for turning cosmetic pens // into ordinary non-cosmetic pens. qt_scaleForTransform(transform, &penScale); -- cgit v0.12 From 34052400e537c188af883c4152df760bc531060d Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Thu, 4 Mar 2010 15:58:26 +1000 Subject: Add missing NOTIFYs to timer, xmllistmodel, xmlrole Reviewed-by: akennedy --- src/declarative/util/qdeclarativetimer.cpp | 3 + src/declarative/util/qdeclarativetimer_p.h | 9 ++- src/declarative/util/qdeclarativexmllistmodel.cpp | 14 +++-- src/declarative/util/qdeclarativexmllistmodel_p.h | 41 +++++++++---- .../qdeclarativetimer/tst_qdeclarativetimer.cpp | 37 ++++++++++++ .../data/propertychanges.qml | 10 ++++ .../tst_qdeclarativexmllistmodel.cpp | 70 ++++++++++++++++++++++ 7 files changed, 167 insertions(+), 17 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativexmllistmodel/data/propertychanges.qml diff --git a/src/declarative/util/qdeclarativetimer.cpp b/src/declarative/util/qdeclarativetimer.cpp index d7e02b1..104e3ae 100644 --- a/src/declarative/util/qdeclarativetimer.cpp +++ b/src/declarative/util/qdeclarativetimer.cpp @@ -123,6 +123,7 @@ void QDeclarativeTimer::setInterval(int interval) if (interval != d->interval) { d->interval = interval; update(); + emit intervalChanged(); } } @@ -183,6 +184,7 @@ void QDeclarativeTimer::setRepeating(bool repeating) if (repeating != d->repeating) { d->repeating = repeating; update(); + emit repeatChanged(); } } @@ -215,6 +217,7 @@ void QDeclarativeTimer::setTriggeredOnStart(bool triggeredOnStart) if (d->triggeredOnStart != triggeredOnStart) { d->triggeredOnStart = triggeredOnStart; update(); + emit triggeredOnStartChanged(); } } diff --git a/src/declarative/util/qdeclarativetimer_p.h b/src/declarative/util/qdeclarativetimer_p.h index e063657..d1e6630 100644 --- a/src/declarative/util/qdeclarativetimer_p.h +++ b/src/declarative/util/qdeclarativetimer_p.h @@ -59,10 +59,10 @@ class Q_DECLARATIVE_EXPORT QDeclarativeTimer : public QObject, public QDeclarati Q_OBJECT Q_DECLARE_PRIVATE(QDeclarativeTimer) Q_INTERFACES(QDeclarativeParserStatus) - Q_PROPERTY(int interval READ interval WRITE setInterval) + Q_PROPERTY(int interval READ interval WRITE setInterval NOTIFY intervalChanged) Q_PROPERTY(bool running READ isRunning WRITE setRunning NOTIFY runningChanged) - Q_PROPERTY(bool repeat READ isRepeating WRITE setRepeating) - Q_PROPERTY(bool triggeredOnStart READ triggeredOnStart WRITE setTriggeredOnStart) + Q_PROPERTY(bool repeat READ isRepeating WRITE setRepeating NOTIFY repeatChanged) + Q_PROPERTY(bool triggeredOnStart READ triggeredOnStart WRITE setTriggeredOnStart NOTIFY triggeredOnStartChanged) public: QDeclarativeTimer(QObject *parent=0); @@ -91,6 +91,9 @@ public Q_SLOTS: Q_SIGNALS: void triggered(); void runningChanged(); + void intervalChanged(); + void repeatChanged(); + void triggeredOnStartChanged(); private: void update(); diff --git a/src/declarative/util/qdeclarativexmllistmodel.cpp b/src/declarative/util/qdeclarativexmllistmodel.cpp index d260ada..53e08b0 100644 --- a/src/declarative/util/qdeclarativexmllistmodel.cpp +++ b/src/declarative/util/qdeclarativexmllistmodel.cpp @@ -571,9 +571,10 @@ void QDeclarativeXmlListModel::setSource(const QUrl &src) { Q_D(QDeclarativeXmlListModel); if (d->src != src) { - d->src = src; reload(); - } + d->src = src; + emit sourceChanged(); + } } /*! @@ -593,8 +594,11 @@ QString QDeclarativeXmlListModel::xml() const void QDeclarativeXmlListModel::setXml(const QString &xml) { Q_D(QDeclarativeXmlListModel); - d->xml = xml; - reload(); + if (d->xml != xml) { + d->xml = xml; + reload(); + emit xmlChanged(); + } } /*! @@ -619,6 +623,7 @@ void QDeclarativeXmlListModel::setQuery(const QString &query) if (d->query != query) { d->query = query; reload(); + emit queryChanged(); } } @@ -638,6 +643,7 @@ void QDeclarativeXmlListModel::setNamespaceDeclarations(const QString &declarati if (d->namespaces != declarations) { d->namespaces = declarations; reload(); + emit namespaceDeclarationsChanged(); } } diff --git a/src/declarative/util/qdeclarativexmllistmodel_p.h b/src/declarative/util/qdeclarativexmllistmodel_p.h index f0ad4b8..23ff7ce 100644 --- a/src/declarative/util/qdeclarativexmllistmodel_p.h +++ b/src/declarative/util/qdeclarativexmllistmodel_p.h @@ -68,10 +68,10 @@ class Q_DECLARATIVE_EXPORT QDeclarativeXmlListModel : public QListModelInterface Q_PROPERTY(Status status READ status NOTIFY statusChanged) Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged) - Q_PROPERTY(QUrl source READ source WRITE setSource) - Q_PROPERTY(QString xml READ xml WRITE setXml) - Q_PROPERTY(QString query READ query WRITE setQuery) - Q_PROPERTY(QString namespaceDeclarations READ namespaceDeclarations WRITE setNamespaceDeclarations) + Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) + Q_PROPERTY(QString xml READ xml WRITE setXml NOTIFY xmlChanged) + Q_PROPERTY(QString query READ query WRITE setQuery NOTIFY queryChanged) + Q_PROPERTY(QString namespaceDeclarations READ namespaceDeclarations WRITE setNamespaceDeclarations NOTIFY namespaceDeclarationsChanged) Q_PROPERTY(QDeclarativeListProperty roles READ roleObjects) Q_PROPERTY(int count READ count NOTIFY countChanged) Q_CLASSINFO("DefaultProperty", "roles") @@ -111,6 +111,10 @@ Q_SIGNALS: void statusChanged(Status); void progressChanged(qreal progress); void countChanged(); + void sourceChanged(); + void xmlChanged(); + void queryChanged(); + void namespaceDeclarationsChanged(); public Q_SLOTS: // ### need to use/expose Expiry to guess when to call this? @@ -132,16 +136,20 @@ private: class Q_DECLARATIVE_EXPORT QDeclarativeXmlListModelRole : public QObject { Q_OBJECT - Q_PROPERTY(QString name READ name WRITE setName) - Q_PROPERTY(QString query READ query WRITE setQuery) - Q_PROPERTY(bool isKey READ isKey WRITE setIsKey) - + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QString query READ query WRITE setQuery NOTIFY queryChanged) + Q_PROPERTY(bool isKey READ isKey WRITE setIsKey NOTIFY isKeyChanged) public: QDeclarativeXmlListModelRole() : m_isKey(false) {} ~QDeclarativeXmlListModelRole() {} QString name() const { return m_name; } - void setName(const QString &name) { m_name = name; } + void setName(const QString &name) { + if (name == m_name) + return; + m_name = name; + emit nameChanged(); + } QString query() const { return m_query; } void setQuery(const QString &query) @@ -150,16 +158,29 @@ public: qmlInfo(this) << tr("An XmlRole query must not start with '/'"); return; } + if (m_query == query) + return; m_query = query; + emit queryChanged(); } bool isKey() const { return m_isKey; } - void setIsKey(bool b) { m_isKey = b; } + void setIsKey(bool b) { + if (m_isKey == b) + return; + m_isKey = b; + emit isKeyChanged(); + } bool isValid() { return !m_name.isEmpty() && !m_query.isEmpty(); } +Q_SIGNALS: + void nameChanged(); + void queryChanged(); + void isKeyChanged(); + private: QString m_name; QString m_query; diff --git a/tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp b/tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp index b120d5d..1dfec50 100644 --- a/tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp +++ b/tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp @@ -38,6 +38,7 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ +#include #include #include #include @@ -161,6 +162,18 @@ void tst_qdeclarativetimer::repeat() QVERIFY(helper.count == oldCount); QVERIFY(timer->isRunning() == false); + QSignalSpy spy(timer, SIGNAL(repeatChanged())); + + timer->setRepeating(false); + QVERIFY(!timer->isRepeating()); + QCOMPARE(spy.count(),1); + + timer->setRepeating(false); + QCOMPARE(spy.count(),1); + + timer->setRepeating(true); + QCOMPARE(spy.count(),2); + delete timer; } @@ -184,6 +197,18 @@ void tst_qdeclarativetimer::triggeredOnStart() QCOMPARE(helper.count, 2); QVERIFY(timer->isRunning() == false); + QSignalSpy spy(timer, SIGNAL(triggeredOnStartChanged())); + + timer->setTriggeredOnStart(false); + QVERIFY(!timer->triggeredOnStart()); + QCOMPARE(spy.count(),1); + + timer->setTriggeredOnStart(false); + QCOMPARE(spy.count(),1); + + timer->setTriggeredOnStart(true); + QCOMPARE(spy.count(),2); + delete timer; } @@ -250,6 +275,18 @@ void tst_qdeclarativetimer::changeDuration() QCOMPARE(helper.count, 3); QVERIFY(timer->isRunning()); + QSignalSpy spy(timer, SIGNAL(intervalChanged())); + + timer->setInterval(200); + QCOMPARE(timer->interval(), 200); + QCOMPARE(spy.count(),1); + + timer->setInterval(200); + QCOMPARE(spy.count(),1); + + timer->setInterval(300); + QCOMPARE(spy.count(),2); + delete timer; } diff --git a/tests/auto/declarative/qdeclarativexmllistmodel/data/propertychanges.qml b/tests/auto/declarative/qdeclarativexmllistmodel/data/propertychanges.qml new file mode 100644 index 0000000..737ec81 --- /dev/null +++ b/tests/auto/declarative/qdeclarativexmllistmodel/data/propertychanges.qml @@ -0,0 +1,10 @@ +import Qt 4.6 + +XmlListModel { + source: "model.xml" + query: "/Pets/Pet" + XmlRole { objectName: "role"; name: "name"; query: "name/string()" } + XmlRole { name: "type"; query: "type/string()" } + XmlRole { name: "age"; query: "age/number()" } + XmlRole { name: "size"; query: "size/string()" } +} diff --git a/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp index 68029bc..6199234 100644 --- a/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp +++ b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp @@ -74,6 +74,7 @@ private slots: void useKeys_data(); void noKeysValueChanges(); void keysChanged(); + void propertyChanges(); private: QString makeItemXmlAndData(const QString &data, QDeclarativeXmlModelData *modelData = 0) const @@ -440,6 +441,8 @@ void tst_qdeclarativexmllistmodel::noKeysValueChanges() model->setXml(xml); QTRY_COMPARE(model->count(), 2); + model->setXml(""); + QSignalSpy spyInsert(model, SIGNAL(itemsInserted(int,int))); QSignalSpy spyRemove(model, SIGNAL(itemsRemoved(int,int))); QSignalSpy spyCount(model, SIGNAL(countChanged())); @@ -476,6 +479,8 @@ void tst_qdeclarativexmllistmodel::keysChanged() model->setXml(xml); QTRY_COMPARE(model->count(), 2); + model->setXml(""); + QSignalSpy spyInsert(model, SIGNAL(itemsInserted(int,int))); QSignalSpy spyRemove(model, SIGNAL(itemsRemoved(int,int))); QSignalSpy spyCount(model, SIGNAL(countChanged())); @@ -496,6 +501,71 @@ void tst_qdeclarativexmllistmodel::keysChanged() QCOMPARE(spyCount.count(), 0); } +void tst_qdeclarativexmllistmodel::propertyChanges() +{ + QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + QDeclarativeXmlListModel *model = qobject_cast(component.create()); + QVERIFY(model != 0); + QTRY_COMPARE(model->count(), 9); + + QDeclarativeXmlListModelRole *role = model->findChild("role"); + QVERIFY(role); + + QSignalSpy nameSpy(role, SIGNAL(nameChanged())); + QSignalSpy querySpy(role, SIGNAL(queryChanged())); + QSignalSpy isKeySpy(role, SIGNAL(isKeyChanged())); + + role->setName("size"); + role->setQuery("size/string()"); + role->setIsKey(true); + + QCOMPARE(role->name(), QString("size")); + QCOMPARE(role->query(), QString("size/string()")); + QVERIFY(role->isKey()); + + QCOMPARE(nameSpy.count(),1); + QCOMPARE(querySpy.count(),1); + QCOMPARE(isKeySpy.count(),1); + + role->setName("size"); + role->setQuery("size/string()"); + role->setIsKey(true); + + QCOMPARE(nameSpy.count(),1); + QCOMPARE(querySpy.count(),1); + QCOMPARE(isKeySpy.count(),1); + + QSignalSpy sourceSpy(model, SIGNAL(sourceChanged())); + QSignalSpy xmlSpy(model, SIGNAL(xmlChanged())); + QSignalSpy modelQuerySpy(model, SIGNAL(queryChanged())); + QSignalSpy namespaceDeclarationsSpy(model, SIGNAL(namespaceDeclarationsChanged())); + + model->setSource(QUrl("")); + model->setXml("PollyParrot12Small"); + model->setQuery("/Pets"); + model->setNamespaceDeclarations("declare namespace media=\"http://search.yahoo.com/mrss/\";"); + + QCOMPARE(model->source(), QUrl("")); + QCOMPARE(model->xml(), QString("PollyParrot12Small")); + QCOMPARE(model->query(), QString("/Pets")); + QCOMPARE(model->namespaceDeclarations(), QString("declare namespace media=\"http://search.yahoo.com/mrss/\";")); + + QCOMPARE(sourceSpy.count(),1); + QCOMPARE(xmlSpy.count(),1); + QCOMPARE(modelQuerySpy.count(),1); + QCOMPARE(namespaceDeclarationsSpy.count(),1); + + model->setSource(QUrl("")); + model->setXml("PollyParrot12Small"); + model->setQuery("/Pets"); + model->setNamespaceDeclarations("declare namespace media=\"http://search.yahoo.com/mrss/\";"); + + QCOMPARE(sourceSpy.count(),1); + QCOMPARE(xmlSpy.count(),1); + QCOMPARE(modelQuerySpy.count(),1); + QCOMPARE(namespaceDeclarationsSpy.count(),1); +} + QTEST_MAIN(tst_qdeclarativexmllistmodel) #include "tst_qdeclarativexmllistmodel.moc" -- cgit v0.12 From 5278c12ff3c6d8e467fe4034120e258fdaa90b80 Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Fri, 5 Mar 2010 11:48:55 +1000 Subject: Fix spelling in enumeration. Reviewed-by: Dmytro Poplavskiy --- src/multimedia/base/qmediaserviceprovider.cpp | 4 ++-- src/multimedia/base/qtmedianamespace.h | 2 +- src/multimedia/base/qtmedianamespace.qdoc | 2 +- tests/auto/qmediaserviceprovider/tst_qmediaserviceprovider.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/multimedia/base/qmediaserviceprovider.cpp b/src/multimedia/base/qmediaserviceprovider.cpp index 6e11079..b089b39 100644 --- a/src/multimedia/base/qmediaserviceprovider.cpp +++ b/src/multimedia/base/qmediaserviceprovider.cpp @@ -350,7 +350,7 @@ public: estimate = currentEstimate; plugin = currentPlugin; - if (currentEstimate == QtMultimedia::PreferedService) + if (currentEstimate == QtMultimedia::PreferredService) break; } } @@ -426,7 +426,7 @@ public: allServicesProvideInterface = false; } - //don't return PreferedService + //don't return PreferredService supportEstimate = qMin(supportEstimate, QtMultimedia::ProbablySupported); //Return NotSupported only if no services are available of serviceType diff --git a/src/multimedia/base/qtmedianamespace.h b/src/multimedia/base/qtmedianamespace.h index 2a56fc3..fe20a05 100644 --- a/src/multimedia/base/qtmedianamespace.h +++ b/src/multimedia/base/qtmedianamespace.h @@ -152,7 +152,7 @@ namespace QtMultimedia NotSupported, MaybeSupported, ProbablySupported, - PreferedService + PreferredService }; enum EncodingQuality diff --git a/src/multimedia/base/qtmedianamespace.qdoc b/src/multimedia/base/qtmedianamespace.qdoc index 270c7d6..58e9c92 100644 --- a/src/multimedia/base/qtmedianamespace.qdoc +++ b/src/multimedia/base/qtmedianamespace.qdoc @@ -172,7 +172,7 @@ \value NotSupported The feature is not supported. \value MaybeSupported The feature may be supported. \value ProbablySupported The feature is probably supported. - \value PreferedService The service is the preferred provider of a service. + \value PreferredService The service is the preferred provider of a service. */ /*! diff --git a/tests/auto/qmediaserviceprovider/tst_qmediaserviceprovider.cpp b/tests/auto/qmediaserviceprovider/tst_qmediaserviceprovider.cpp index d839fe5..06a8f60 100644 --- a/tests/auto/qmediaserviceprovider/tst_qmediaserviceprovider.cpp +++ b/tests/auto/qmediaserviceprovider/tst_qmediaserviceprovider.cpp @@ -152,7 +152,7 @@ public: Q_UNUSED(codecs); if (mimeType == "audio/wav") - return QtMultimedia::PreferedService; + return QtMultimedia::PreferredService; return QtMultimedia::NotSupported; } -- cgit v0.12 From 57c847ed2c0b4116ea791828c41db5edc40fe2f2 Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Fri, 5 Mar 2010 12:39:17 +1000 Subject: Make the star example recreate its path if the VG context is destroyed. Task-number: QT-2809 Reviewed-by: trustme --- examples/openvg/star/starwidget.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/openvg/star/starwidget.cpp b/examples/openvg/star/starwidget.cpp index bde0719..794ede9 100644 --- a/examples/openvg/star/starwidget.cpp +++ b/examples/openvg/star/starwidget.cpp @@ -93,8 +93,9 @@ void StarWidget::paintEvent(QPaintEvent *) // and prepare to perform raw OpenVG calls. painter.beginNativePainting(); - // Cache the path if we haven't already. - if (path == VG_INVALID_HANDLE) { + // Cache the path if we haven't already or if the path has + // become invalid because the window's context has changed. + if (path == VG_INVALID_HANDLE || !vgGetPathCapabilities(path)) { path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, // scale -- cgit v0.12 From 87628252d721d4f8cf6963e5f20a02a56bd70f9a Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Fri, 5 Mar 2010 12:51:45 +1000 Subject: Use _data() for some tests --- .../tst_qdeclarativexmlhttprequest.cpp | 535 ++++++--------------- 1 file changed, 158 insertions(+), 377 deletions(-) diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp b/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp index 7dec0ee..01f07ab 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp @@ -69,6 +69,7 @@ private slots: void constructor(); void defaultState(); void open(); + void open_data(); void open_invalid_method(); void open_sync(); void open_arg_count(); @@ -82,6 +83,7 @@ private slots: void send_alreadySent(); void send_ignoreData(); void send_withdata(); + void send_withdata_data(); void abort(); void abort_unsent(); void abort_opened(); @@ -94,8 +96,11 @@ private slots: void getAllResponseHeaders_sent(); void getAllResponseHeaders_args(); void status(); + void status_data(); void statusText(); + void statusText_data(); void responseText(); + void responseText_data(); void responseXML_invalid(); void invalidMethodUsage(); void redirects(); @@ -257,99 +262,50 @@ void tst_qdeclarativexmlhttprequest::defaultState() // Test valid XMLHttpRequest.open() calls void tst_qdeclarativexmlhttprequest::open() { - // Relative url - { - QDeclarativeComponent component(&engine, TEST_FILE("open.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "testdocument.html"); - component.completeCreate(); - - QCOMPARE(object->property("readyState").toBool(), true); - QCOMPARE(object->property("openedState").toBool(), true); - QCOMPARE(object->property("status").toBool(), true); - QCOMPARE(object->property("statusText").toBool(), true); - QCOMPARE(object->property("responseText").toBool(), true); - QCOMPARE(object->property("responseXML").toBool(), true); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; + QFETCH(QUrl, qmlFile); + QFETCH(QString, url); + QFETCH(bool, remote); + + TestHTTPServer *server = 0; + if (remote) { + server = new TestHTTPServer(SERVER_PORT); + QVERIFY(server->isValid()); + QVERIFY(server->wait(TEST_FILE("open_network.expect"), + TEST_FILE("open_network.reply"), + TEST_FILE("testdocument.html"))); } - // Absolute url - { - QDeclarativeComponent component(&engine, TEST_FILE("open.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", TEST_FILE("testdocument.html").toString()); - component.completeCreate(); - - QCOMPARE(object->property("readyState").toBool(), true); - QCOMPARE(object->property("openedState").toBool(), true); - QCOMPARE(object->property("status").toBool(), true); - QCOMPARE(object->property("statusText").toBool(), true); - QCOMPARE(object->property("responseText").toBool(), true); - QCOMPARE(object->property("responseXML").toBool(), true); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } - - // Absolute network url - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("open_network.expect"), - TEST_FILE("open_network.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("open.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - QCOMPARE(object->property("readyState").toBool(), true); - QCOMPARE(object->property("openedState").toBool(), true); - QCOMPARE(object->property("status").toBool(), true); - QCOMPARE(object->property("statusText").toBool(), true); - QCOMPARE(object->property("responseText").toBool(), true); - QCOMPARE(object->property("responseXML").toBool(), true); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } + QDeclarativeComponent component(&engine, qmlFile); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", url); + component.completeCreate(); - // User/pass - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("open_network.expect"), - TEST_FILE("open_network.reply"), - TEST_FILE("testdocument.html"))); + QCOMPARE(object->property("readyState").toBool(), true); + QCOMPARE(object->property("openedState").toBool(), true); + QCOMPARE(object->property("status").toBool(), true); + QCOMPARE(object->property("statusText").toBool(), true); + QCOMPARE(object->property("responseText").toBool(), true); + QCOMPARE(object->property("responseXML").toBool(), true); - QDeclarativeComponent component(&engine, TEST_FILE("open_user.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); + TRY_WAIT(object->property("dataOK").toBool() == true); - QCOMPARE(object->property("readyState").toBool(), true); - QCOMPARE(object->property("openedState").toBool(), true); - QCOMPARE(object->property("status").toBool(), true); - QCOMPARE(object->property("statusText").toBool(), true); - QCOMPARE(object->property("responseText").toBool(), true); - QCOMPARE(object->property("responseXML").toBool(), true); + delete server; + delete object; +} - TRY_WAIT(object->property("dataOK").toBool() == true); +void tst_qdeclarativexmlhttprequest::open_data() +{ + QTest::addColumn("qmlFile"); + QTest::addColumn("url"); + QTest::addColumn("remote"); - // ### Check that the username/password were sent to the server + QTest::newRow("Relative url)") << TEST_FILE("open.qml") << "testdocument.html" << false; + QTest::newRow("Absolute url)") << TEST_FILE("open.qml") << TEST_FILE("testdocument.html").toString() << false; + QTest::newRow("Absolute network url)") << TEST_FILE("open.qml") << "http://127.0.0.1:14445/testdocument.html" << true; - delete object; - } + // ### Check that the username/password were sent to the server + QTest::newRow("User/pass") << TEST_FILE("open_user.qml") << "http://127.0.0.1:14445/testdocument.html" << true; } // Test that calling XMLHttpRequest.open() with an invalid method raises an exception @@ -594,138 +550,38 @@ void tst_qdeclarativexmlhttprequest::send_ignoreData() // Test that send()'ing data works void tst_qdeclarativexmlhttprequest::send_withdata() { - // No content-type - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.1.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("send_data.1.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); + QFETCH(QString, file_expected); + QFETCH(QString, file_qml); - delete object; - } - - // Correct content-type - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.1.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("send_data.2.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } - - // Incorrect content-type - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.1.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("send_data.3.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } - - // Correct content-type - out of order - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.4.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("send_data.4.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } - - // Incorrect content-type - out of order - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.4.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("send_data.5.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } - - // PUT - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.6.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("send_data.6.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE(file_expected), + TEST_FILE("send_data.reply"), + TEST_FILE("testdocument.html"))); - // Correct content-type - no charset - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.1.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); + QDeclarativeComponent component(&engine, TEST_FILE(file_qml)); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); + component.completeCreate(); - QDeclarativeComponent component(&engine, TEST_FILE("send_data.7.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); + TRY_WAIT(object->property("dataOK").toBool() == true); - TRY_WAIT(object->property("dataOK").toBool() == true); + delete object; +} - delete object; - } +void tst_qdeclarativexmlhttprequest::send_withdata_data() +{ + QTest::addColumn("file_expected"); + QTest::addColumn("file_qml"); + + QTest::newRow("No content-type") << "send_data.1.expect" << "send_data.1.qml"; + QTest::newRow("Correct content-type") << "send_data.1.expect" << "send_data.2.qml"; + QTest::newRow("Incorrect content-type") << "send_data.1.expect" << "send_data.3.qml"; + QTest::newRow("Correct content-type - out of order") << "send_data.4.expect" << "send_data.4.qml"; + QTest::newRow("Incorrect content-type - out of order") << "send_data.4.expect" << "send_data.5.qml"; + QTest::newRow("PUT") << "send_data.6.expect" << "send_data.6.qml"; + QTest::newRow("Correct content-type - no charset") << "send_data.1.expect" << "send_data.7.qml"; } // Test abort() has no effect in unsent state @@ -940,200 +796,125 @@ void tst_qdeclarativexmlhttprequest::getAllResponseHeaders_args() void tst_qdeclarativexmlhttprequest::status() { - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.200.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("status.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedStatus", 200); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); + QFETCH(QUrl, replyUrl); + QFETCH(int, status); - QCOMPARE(object->property("unsentException").toBool(), true); - QCOMPARE(object->property("openedException").toBool(), true); - QCOMPARE(object->property("sentException").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("resetException").toBool(), true); + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("status.expect"), + replyUrl, + TEST_FILE("testdocument.html"))); - delete object; - } + QDeclarativeComponent component(&engine, TEST_FILE("status.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); + object->setProperty("expectedStatus", status); + component.completeCreate(); - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.404.reply"), - TEST_FILE("testdocument.html"))); + TRY_WAIT(object->property("dataOK").toBool() == true); - QDeclarativeComponent component(&engine, TEST_FILE("status.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedStatus", 404); - component.completeCreate(); + QCOMPARE(object->property("unsentException").toBool(), true); + QCOMPARE(object->property("openedException").toBool(), true); + QCOMPARE(object->property("sentException").toBool(), true); + QCOMPARE(object->property("headersReceived").toBool(), true); + QCOMPARE(object->property("loading").toBool(), true); + QCOMPARE(object->property("done").toBool(), true); + QCOMPARE(object->property("resetException").toBool(), true); - TRY_WAIT(object->property("dataOK").toBool() == true); + delete object; +} - QCOMPARE(object->property("unsentException").toBool(), true); - QCOMPARE(object->property("openedException").toBool(), true); - QCOMPARE(object->property("sentException").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("resetException").toBool(), true); +void tst_qdeclarativexmlhttprequest::status_data() +{ + QTest::addColumn("replyUrl"); + QTest::addColumn("status"); - delete object; - } + QTest::newRow("OK") << TEST_FILE("status.200.reply") << 200; + QTest::newRow("Not Found") << TEST_FILE("status.404.reply") << 404; } void tst_qdeclarativexmlhttprequest::statusText() { - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.200.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("statusText.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedStatus", "OK"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); + QFETCH(QUrl, replyUrl); + QFETCH(QString, statusText); - QCOMPARE(object->property("unsentException").toBool(), true); - QCOMPARE(object->property("openedException").toBool(), true); - QCOMPARE(object->property("sentException").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("resetException").toBool(), true); + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("status.expect"), + replyUrl, + TEST_FILE("testdocument.html"))); - delete object; - } + QDeclarativeComponent component(&engine, TEST_FILE("statusText.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); + object->setProperty("expectedStatus", statusText); + component.completeCreate(); - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.404.reply"), - TEST_FILE("testdocument.html"))); + TRY_WAIT(object->property("dataOK").toBool() == true); - QDeclarativeComponent component(&engine, TEST_FILE("statusText.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedStatus", "Document not found"); - component.completeCreate(); + QCOMPARE(object->property("unsentException").toBool(), true); + QCOMPARE(object->property("openedException").toBool(), true); + QCOMPARE(object->property("sentException").toBool(), true); + QCOMPARE(object->property("headersReceived").toBool(), true); + QCOMPARE(object->property("loading").toBool(), true); + QCOMPARE(object->property("done").toBool(), true); + QCOMPARE(object->property("resetException").toBool(), true); - TRY_WAIT(object->property("dataOK").toBool() == true); + delete object; +} - QCOMPARE(object->property("unsentException").toBool(), true); - QCOMPARE(object->property("openedException").toBool(), true); - QCOMPARE(object->property("sentException").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("resetException").toBool(), true); +void tst_qdeclarativexmlhttprequest::statusText_data() +{ + QTest::addColumn("replyUrl"); + QTest::addColumn("statusText"); - delete object; - } + QTest::newRow("OK") << TEST_FILE("status.200.reply") << "OK"; + QTest::newRow("Not Found") << TEST_FILE("status.404.reply") << "Document not found"; } void tst_qdeclarativexmlhttprequest::responseText() { - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.200.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("responseText.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedText", "QML Rocks!\n"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - QCOMPARE(object->property("unsent").toBool(), true); - QCOMPARE(object->property("opened").toBool(), true); - QCOMPARE(object->property("sent").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("reset").toBool(), true); - - delete object; - } + QFETCH(QUrl, replyUrl); + QFETCH(QUrl, bodyUrl); + QFETCH(QString, responseText); - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.200.reply"), - QUrl())); - - QDeclarativeComponent component(&engine, TEST_FILE("responseText.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedText", ""); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - QCOMPARE(object->property("unsent").toBool(), true); - QCOMPARE(object->property("opened").toBool(), true); - QCOMPARE(object->property("sent").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("reset").toBool(), true); + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("status.expect"), + replyUrl, + bodyUrl)); - delete object; - } + QDeclarativeComponent component(&engine, TEST_FILE("responseText.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); + object->setProperty("expectedText", responseText); + component.completeCreate(); - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.404.reply"), - TEST_FILE("testdocument.html"))); + TRY_WAIT(object->property("dataOK").toBool() == true); - QDeclarativeComponent component(&engine, TEST_FILE("responseText.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedText", ""); - component.completeCreate(); + QCOMPARE(object->property("unsent").toBool(), true); + QCOMPARE(object->property("opened").toBool(), true); + QCOMPARE(object->property("sent").toBool(), true); + QCOMPARE(object->property("headersReceived").toBool(), true); + QCOMPARE(object->property("loading").toBool(), true); + QCOMPARE(object->property("done").toBool(), true); + QCOMPARE(object->property("reset").toBool(), true); - TRY_WAIT(object->property("dataOK").toBool() == true); + delete object; +} - QCOMPARE(object->property("unsent").toBool(), true); - QCOMPARE(object->property("opened").toBool(), true); - QCOMPARE(object->property("sent").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("reset").toBool(), true); +void tst_qdeclarativexmlhttprequest::responseText_data() +{ + QTest::addColumn("replyUrl"); + QTest::addColumn("bodyUrl"); + QTest::addColumn("responseText"); - delete object; - } + QTest::newRow("OK") << TEST_FILE("status.200.reply") << TEST_FILE("testdocument.html") << "QML Rocks!\n"; + QTest::newRow("empty body") << TEST_FILE("status.200.reply") << QUrl() << ""; + QTest::newRow("Not Found") << TEST_FILE("status.404.reply") << TEST_FILE("testdocument.html") << ""; } // Test that calling hte XMLHttpRequest methods on a non-XMLHttpRequest object -- cgit v0.12 From a7b46bda37a428ae2e5554aa8e58469c92b310a9 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Fri, 5 Mar 2010 12:52:06 +1000 Subject: Fix test leaks --- tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp | 8 ++++++++ .../qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp index 3e69db9..5549a3e 100644 --- a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp +++ b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp @@ -242,6 +242,8 @@ void tst_QDeclarativeItem::keyNavigation() item = findItem(canvas->rootObject(), "item1"); QVERIFY(item); QVERIFY(item->hasFocus()); + + delete canvas; } void tst_QDeclarativeItem::smooth() @@ -265,6 +267,8 @@ void tst_QDeclarativeItem::smooth() QCOMPARE(spy.count(),2); item->setSmooth(false); QCOMPARE(spy.count(),2); + + delete item; } void tst_QDeclarativeItem::clip() @@ -288,6 +292,8 @@ void tst_QDeclarativeItem::clip() QCOMPARE(spy.count(),2); item->setClip(false); QCOMPARE(spy.count(),2); + + delete item; } void tst_QDeclarativeItem::mapCoordinates() @@ -335,6 +341,8 @@ void tst_QDeclarativeItem::mapCoordinates() QVERIFY(QMetaObject::invokeMethod(root, "checkMapAFromInvalid", Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); QVERIFY(result.toBool()); + + delete canvas; } void tst_QDeclarativeItem::mapCoordinates_data() diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp index 9957b50..56e906e 100644 --- a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp +++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp @@ -99,6 +99,7 @@ void tst_QDeclarativeWorkerScript::source() QCOMPARE(item->source(), source); qApp->processEvents(); + delete item; } void tst_QDeclarativeWorkerScript::source_data() @@ -125,6 +126,7 @@ void tst_QDeclarativeWorkerScript::messaging() QCOMPARE(mo->property(mo->indexOfProperty("response")).read(worker).value(), value); qApp->processEvents(); + delete item; } void tst_QDeclarativeWorkerScript::messaging_data() @@ -161,6 +163,7 @@ void tst_QDeclarativeWorkerScript::messaging_sendQObjectList() QCOMPARE(result, (QVariantList() << QVariant() << QVariant() << QVariant())); qApp->processEvents(); + delete item; } void tst_QDeclarativeWorkerScript::messaging_sendJsObject() @@ -180,6 +183,7 @@ void tst_QDeclarativeWorkerScript::messaging_sendJsObject() QVERIFY(result.toBool()); qApp->processEvents(); + delete item; } QTEST_MAIN(tst_QDeclarativeWorkerScript) -- cgit v0.12 From e85b39067914276fb42ce1a8ae35c45d2f688dae Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Fri, 5 Mar 2010 13:03:13 +1000 Subject: Improve declarative tabs example. --- examples/declarative/tabwidget/TabWidget.qml | 44 +++++++++++++++---------- examples/declarative/tabwidget/tabs.qml | 49 +++++++++++++++++++--------- 2 files changed, 60 insertions(+), 33 deletions(-) diff --git a/examples/declarative/tabwidget/TabWidget.qml b/examples/declarative/tabwidget/TabWidget.qml index f0dfee8..f0f7164 100644 --- a/examples/declarative/tabwidget/TabWidget.qml +++ b/examples/declarative/tabwidget/TabWidget.qml @@ -1,42 +1,50 @@ import Qt 4.6 Item { - id: page + id: tabWidget property int current: 0 default property alias content: stack.children + onCurrentChanged: setOpacities() Component.onCompleted: setOpacities() + function setOpacities() { - for (var i=0; iRoses are red"; font.pixelSize: 24 - wrap: true; width: parent.width-20 } + anchors.fill: parent; color: "#e3e3e3" + Rectangle { + anchors { fill: parent; topMargin: 20; leftMargin: 20; rightMargin: 20; bottomMargin: 20 } + color: "#ff7f7f" + Text { + anchors.centerIn: parent; horizontalAlignment: Qt.AlignHCenter + text: "Roses are red"; font.pixelSize: 20 + wrap: true; width: parent.width - 20 + } + } } + Rectangle { property string title: "Green" - color: "green" - anchors.fill: parent - Text { anchors.centerIn: parent; text: "

Flower stems are green"; font.pixelSize: 24; - wrap: true; width: parent.width-20 } + anchors.fill: parent; color: "#e3e3e3" + Rectangle { + anchors { fill: parent; topMargin: 20; leftMargin: 20; rightMargin: 20; bottomMargin: 20 } + color: "#7fff7f" + Text { + anchors.centerIn: parent; horizontalAlignment: Qt.AlignHCenter + text: "Flower stems are green"; font.pixelSize: 20 + wrap: true; width: parent.width - 20 + } + } } + Rectangle { property string title: "Blue" - color: "blue" - anchors.fill: parent - Text { anchors.centerIn: parent; text: "
Violets are blue"; color: "white"; font.pixelSize: 24 - wrap: true; width: parent.width-20 } + anchors.fill: parent; color: "#e3e3e3" + Rectangle { + anchors { fill: parent; topMargin: 20; leftMargin: 20; rightMargin: 20; bottomMargin: 20 } + color: "#7f7fff" + Text { + anchors.centerIn: parent; horizontalAlignment: Qt.AlignHCenter + text: "Violets are blue"; font.pixelSize: 20 + wrap: true; width: parent.width - 20 + } + } } } -- cgit v0.12 From 52fc88c05ede03f15328a69989c4acef9bf7c65b Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Fri, 5 Mar 2010 13:07:37 +1000 Subject: More declarative examples cleanup. --- examples/declarative/dynamic/dynamic.qml | 42 +++++++++++++++++-------------- examples/declarative/tabwidget/tab.png | Bin 0 -> 507 bytes examples/declarative/velocity/Day.qml | 2 +- 3 files changed, 24 insertions(+), 20 deletions(-) create mode 100644 examples/declarative/tabwidget/tab.png diff --git a/examples/declarative/dynamic/dynamic.qml b/examples/declarative/dynamic/dynamic.qml index 2831b0c..6af3e81 100644 --- a/examples/declarative/dynamic/dynamic.qml +++ b/examples/declarative/dynamic/dynamic.qml @@ -17,15 +17,17 @@ Item { } // stars (when there's no sun) - Particles { id: stars - x: 0; y: 0; width: parent.width; height: parent.height/2 + Particles { + id: stars + x: 0; y: 0; width: parent.width; height: parent.height / 2 source: "images/star.png"; angleDeviation: 360; velocity: 0 velocityDeviation: 0; count: parent.width / 10; fadeInDuration: 2800 opacity: 1 } // ground, which has a z such that the sun can set behind it - Rectangle { id: ground + Rectangle { + id: ground z: 2 anchors { left: parent.left; top: parent.verticalCenter; right: toolbox.right; bottom: parent.bottom } gradient: Gradient { @@ -35,7 +37,8 @@ Item { } //Day state, for when you place a sun - states: State { name: "Day"; when: window.activeSuns > 0 + states: State { + name: "Day"; when: window.activeSuns > 0 PropertyChanges { target: stopA; color: "DeepSkyBlue"} PropertyChanges { target: stopB; color: "SkyBlue"} PropertyChanges { target: stars; opacity: 0 } @@ -56,56 +59,57 @@ Item { width: 480 anchors { right: parent.right; top:parent.top; bottom: parent.bottom } Rectangle { //Not a child of any positioner - color: "white"; border.color: "black"; + color: "white"; border.color: "black"; width: toolRow.width + 4 height: toolRow.height + 4 x: toolboxPositioner.x + toolRow.x - 2 y: toolboxPositioner.y + toolRow.y - 2 } - Column{ + Column { id: toolboxPositioner anchors.centerIn: parent spacing: 8 - Text{ text: "Drag an item into the scene." } - Row{ id: toolRow - spacing: 8; - PaletteItem{ + Text { text: "Drag an item into the scene." } + Row { + id: toolRow + spacing: 8; + PaletteItem { anchors.verticalCenter: parent.verticalCenter file: "Sun.qml"; image: "../images/sun.png" } - PaletteItem{ + PaletteItem { file: "GenericItem.qml" image: "../images/moon.png" } - PaletteItem{ + PaletteItem { anchors.verticalCenter: parent.verticalCenter file: "PerspectiveItem.qml" image: "../images/tree_s.png" } - PaletteItem{ + PaletteItem { anchors.verticalCenter: parent.verticalCenter file: "PerspectiveItem.qml" image: "../images/rabbit_brown.png" } - PaletteItem{ + PaletteItem { anchors.verticalCenter: parent.verticalCenter file: "PerspectiveItem.qml" image: "../images/rabbit_bw.png" } } - Text{ text: "Active Suns: " + activeSuns } + Text { text: "Active Suns: " + activeSuns } Rectangle { width: 440; height: 1; color: "black" } - Text{ text: "Arbitrary QML: " } + Text { text: "Arbitrary QML: " } TextEdit { id: qmlText width: 460 height: 220 readOnly: false focusOnPress: true - font.pixelSize: 16 - - text: "import Qt 4.6\nImage { id: smile;\n x: 500*Math.random();\n y: 200*Math.random(); \n source: 'images/face-smile.png';\n opacity: NumberAnimation{ \n to: 0; duration: 1500;\n }\n Component.onCompleted: smile.destroy(1500);\n}" + font.pixelSize: 14 + + text: "import Qt 4.6\nImage {\n id: smile;\n x: 500*Math.random();\n y: 200*Math.random(); \n source: 'images/face-smile.png';\n NumberAnimation on opacity { \n to: 0; duration: 1500;\n }\n Component.onCompleted: smile.destroy(1500);\n}" } Button { text: "Create" diff --git a/examples/declarative/tabwidget/tab.png b/examples/declarative/tabwidget/tab.png new file mode 100644 index 0000000..ad80216 Binary files /dev/null and b/examples/declarative/tabwidget/tab.png differ diff --git a/examples/declarative/velocity/Day.qml b/examples/declarative/velocity/Day.qml index 8a7364e..f4c24a5 100644 --- a/examples/declarative/velocity/Day.qml +++ b/examples/declarative/velocity/Day.qml @@ -52,7 +52,7 @@ Rectangle { id: mouse onClicked: { myText.focus = true } anchors.fill: parent - drag.target: stickyPage; drag.axis: "XandYAxis"; drag.minimumY: 0; drag.maximumY: 500 + drag.target: stickyPage; drag.axis: MouseArea.XandYAxis; drag.minimumY: 0; drag.maximumY: 500 drag.minimumX: 0; drag.maximumX: 400 } } -- cgit v0.12 From 3e6a330d2aa6f139347fe29947721368a5186cc3 Mon Sep 17 00:00:00 2001 From: Bill King Date: Fri, 5 Mar 2010 13:09:08 +1000 Subject: Update documentation with warning about setForwardOnly Task-number: QTBUG-8752 --- src/sql/kernel/qsqlquery.cpp | 3 +++ src/sql/kernel/qsqlresult.cpp | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp index 430cf1a..f253c82 100644 --- a/src/sql/kernel/qsqlquery.cpp +++ b/src/sql/kernel/qsqlquery.cpp @@ -822,6 +822,9 @@ bool QSqlQuery::isForwardOnly() const scrollable. isForwardOnly() will always return the correct status of the result set. + \note Calling setForwardOnly after execution of the query will result + in unexpected results at best, and crashes at worst. + \sa isForwardOnly(), next(), seek(), QSqlResult::setForwardOnly() */ void QSqlQuery::setForwardOnly(bool forward) diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp index 0c0c31c..6382b42 100644 --- a/src/sql/kernel/qsqlresult.cpp +++ b/src/sql/kernel/qsqlresult.cpp @@ -564,6 +564,9 @@ bool QSqlResult::isForwardOnly() const scrollable. isForwardOnly() will always return the correct status of the result set. + \note Calling setForwardOnly after execution of the query will result + in unexpected results at best, and crashes at worst. + \sa isForwardOnly(), fetchNext(), QSqlQuery::setForwardOnly() */ void QSqlResult::setForwardOnly(bool forward) -- cgit v0.12 From ae6f59d8dffc1a0569640e374dde01ed84f9c542 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 5 Mar 2010 13:23:04 +1000 Subject: Allow unquoted enum syntax for value types QTBUG-5424 --- src/declarative/qml/qdeclarativecompiler.cpp | 6 ++-- src/declarative/qml/qdeclarativeengine.cpp | 1 + src/declarative/qml/qdeclarativemetatype.cpp | 9 ++++-- src/declarative/qml/qdeclarativemetatype_p.h | 2 ++ src/declarative/qml/qdeclarativevaluetype.cpp | 34 ++++++++++++++++++++++ src/declarative/qml/qdeclarativevaluetype_p.h | 2 ++ .../qdeclarativelanguage/data/enumTypes.errors.txt | 1 + .../qdeclarativelanguage/data/enumTypes.qml | 4 +++ .../tst_qdeclarativelanguage.cpp | 1 + .../qdeclarativevaluetypes/data/enums.1.qml | 2 +- .../qdeclarativevaluetypes/data/enums.2.qml | 2 +- .../qdeclarativevaluetypes/data/enums.3.qml | 6 ++++ .../qdeclarativevaluetypes/data/enums.4.qml | 7 +++++ .../tst_qdeclarativevaluetypes.cpp | 20 +++++++++++-- 14 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/enumTypes.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/enumTypes.qml create mode 100644 tests/auto/declarative/qdeclarativevaluetypes/data/enums.3.qml create mode 100644 tests/auto/declarative/qdeclarativevaluetypes/data/enums.4.qml diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 5a2f3b5..3c6c949 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -561,9 +561,11 @@ bool QDeclarativeCompiler::compile(QDeclarativeEngine *engine, QDeclarativeCompositeTypeData::TypeReference &tref = unit->types[ii]; QDeclarativeCompiledData::TypeReference ref; QDeclarativeScriptParser::TypeReference *parserRef = unit->data.referencedTypes().at(ii); - if (tref.type) + if (tref.type) { ref.type = tref.type; - else if (tref.unit) { + if (!ref.type->isCreatable()) + COMPILE_EXCEPTION(parserRef->refObjects.first(), QCoreApplication::translate("QDeclarativeCompiler", "Element is not creatable.")); + } else if (tref.unit) { ref.component = tref.unit->toComponent(engine); if (ref.component->isError()) { diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 7ce2d0b..1e60df4 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -167,6 +167,7 @@ QDeclarativeEnginePrivate::QDeclarativeEnginePrivate(QDeclarativeEngine *e) QDeclarativeItemModule::defineModule(); QDeclarativeUtilModule::defineModule(); QDeclarativeEnginePrivate::defineModule(); + QDeclarativeValueTypeFactory::registerValueTypes(); } globalClass = new QDeclarativeGlobalScriptClass(&scriptEngine); diff --git a/src/declarative/qml/qdeclarativemetatype.cpp b/src/declarative/qml/qdeclarativemetatype.cpp index abbb9d6..50ab56b 100644 --- a/src/declarative/qml/qdeclarativemetatype.cpp +++ b/src/declarative/qml/qdeclarativemetatype.cpp @@ -286,6 +286,11 @@ QDeclarativeCustomParser *QDeclarativeType::customParser() const return d->m_customParser; } +bool QDeclarativeType::isCreatable() const +{ + return d->m_newFunc != 0; +} + bool QDeclarativeType::isInterface() const { return d->m_isInterface; @@ -402,7 +407,7 @@ int QDeclarativePrivate::registerType(const QDeclarativePrivate::RegisterType &t data->types.append(dtype); data->idToType.insert(dtype->typeId(), dtype); - data->idToType.insert(dtype->qListTypeId(), dtype); + if (dtype->qListTypeId()) data->idToType.insert(dtype->qListTypeId(), dtype); if (!dtype->qmlTypeName().isEmpty()) data->nameToType.insertMulti(dtype->qmlTypeName(), dtype); @@ -414,7 +419,7 @@ int QDeclarativePrivate::registerType(const QDeclarativePrivate::RegisterType &t if (data->lists.size() <= type.listId) data->lists.resize(type.listId + 16); data->objects.setBit(type.typeId, true); - data->lists.setBit(type.listId, true); + if (type.listId) data->lists.setBit(type.listId, true); return index; } diff --git a/src/declarative/qml/qdeclarativemetatype_p.h b/src/declarative/qml/qdeclarativemetatype_p.h index ec5c045..cf8946d 100644 --- a/src/declarative/qml/qdeclarativemetatype_p.h +++ b/src/declarative/qml/qdeclarativemetatype_p.h @@ -114,6 +114,8 @@ public: QDeclarativeCustomParser *customParser() const; + bool isCreatable() const; + bool isInterface() const; int typeId() const; int qListTypeId() const; diff --git a/src/declarative/qml/qdeclarativevaluetype.cpp b/src/declarative/qml/qdeclarativevaluetype.cpp index 34d3795..c070123 100644 --- a/src/declarative/qml/qdeclarativevaluetype.cpp +++ b/src/declarative/qml/qdeclarativevaluetype.cpp @@ -41,6 +41,8 @@ #include "qdeclarativevaluetype_p.h" +#include "qdeclarativemetatype_p.h" + #include QT_BEGIN_NAMESPACE @@ -49,6 +51,32 @@ QT_BEGIN_NAMESPACE Q_DECLARE_METATYPE(QEasingCurve); #endif +template +int qmlRegisterValueTypeEnums(const char *qmlName) +{ + QByteArray name(T::staticMetaObject.className()); + + QByteArray pointerName(name + '*'); + + QDeclarativePrivate::RegisterType type = { + 0, + + qRegisterMetaType(pointerName.constData()), 0, 0, + + "Qt", 4, 6, qmlName, &T::staticMetaObject, + + 0, 0, + + 0, 0, 0, + + 0, 0, + + 0 + }; + + return QDeclarativePrivate::registerType(type); +} + QDeclarativeValueTypeFactory::QDeclarativeValueTypeFactory() { // ### Optimize @@ -80,6 +108,12 @@ bool QDeclarativeValueTypeFactory::isValueType(int idx) return false; } +void QDeclarativeValueTypeFactory::registerValueTypes() +{ + qmlRegisterValueTypeEnums("Easing"); + qmlRegisterValueTypeEnums("Font"); +} + QDeclarativeValueType *QDeclarativeValueTypeFactory::operator[](int idx) const { #if (QT_VERSION < QT_VERSION_CHECK(4,7,0)) diff --git a/src/declarative/qml/qdeclarativevaluetype_p.h b/src/declarative/qml/qdeclarativevaluetype_p.h index e69f161..ad2f6c4 100644 --- a/src/declarative/qml/qdeclarativevaluetype_p.h +++ b/src/declarative/qml/qdeclarativevaluetype_p.h @@ -84,6 +84,8 @@ public: static bool isValueType(int); static QDeclarativeValueType *valueType(int); + static void registerValueTypes(); + QDeclarativeValueType *operator[](int idx) const; private: diff --git a/tests/auto/declarative/qdeclarativelanguage/data/enumTypes.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/enumTypes.errors.txt new file mode 100644 index 0000000..d4e0cc0 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/enumTypes.errors.txt @@ -0,0 +1 @@ +3:1:Element is not creatable. diff --git a/tests/auto/declarative/qdeclarativelanguage/data/enumTypes.qml b/tests/auto/declarative/qdeclarativelanguage/data/enumTypes.qml new file mode 100644 index 0000000..a723269 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/enumTypes.qml @@ -0,0 +1,4 @@ +import Qt 4.6 + +Font { +} diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index 3ce15cb..da0bf1a 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -326,6 +326,7 @@ void tst_qdeclarativelanguage::errors_data() QTest::newRow("invalidRoot") << "invalidRoot.qml" << "invalidRoot.errors.txt" << false; QTest::newRow("missingValueTypeProperty") << "missingValueTypeProperty.qml" << "missingValueTypeProperty.errors.txt" << false; QTest::newRow("objectValueTypeProperty") << "objectValueTypeProperty.qml" << "objectValueTypeProperty.errors.txt" << false; + QTest::newRow("enumTypes") << "enumTypes.qml" << "enumTypes.errors.txt" << false; } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/enums.1.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.1.qml index 0eadd50..cb01a80 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/enums.1.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.1.qml @@ -1,6 +1,6 @@ import Test 1.0 MyTypeObject { - font.capitalization: "MixedCase" + font.capitalization: "AllUppercase" } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/enums.2.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.2.qml index 81f1c92..93f1ed5 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/enums.2.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.2.qml @@ -1,6 +1,6 @@ import Test 1.0 MyTypeObject { - font.capitalization: if (1) "MixedCase" + font.capitalization: if (1) "AllUppercase" } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/enums.3.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.3.qml new file mode 100644 index 0000000..3be5099 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.3.qml @@ -0,0 +1,6 @@ +import Test 1.0 +import Qt 4.6 + +MyTypeObject { + font.capitalization: Font.AllUppercase +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/enums.4.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.4.qml new file mode 100644 index 0000000..6b494e4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.4.qml @@ -0,0 +1,7 @@ +import Test 1.0 +import Qt 4.6 as MyQt + +MyTypeObject { + font.capitalization: MyQt.Font.AllUppercase +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp index 8732215..51f9a07 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp +++ b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp @@ -597,7 +597,7 @@ void tst_qdeclarativevaluetypes::enums() QDeclarativeComponent component(&engine, TEST_FILE("enums.1.qml")); MyTypeObject *object = qobject_cast(component.create()); QVERIFY(object != 0); - QVERIFY(object->font().capitalization() == QFont::MixedCase); + QVERIFY(object->font().capitalization() == QFont::AllUppercase); delete object; } @@ -605,7 +605,23 @@ void tst_qdeclarativevaluetypes::enums() QDeclarativeComponent component(&engine, TEST_FILE("enums.2.qml")); MyTypeObject *object = qobject_cast(component.create()); QVERIFY(object != 0); - QVERIFY(object->font().capitalization() == QFont::MixedCase); + QVERIFY(object->font().capitalization() == QFont::AllUppercase); + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("enums.3.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + QVERIFY(object->font().capitalization() == QFont::AllUppercase); + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("enums.4.qml")); + MyTypeObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + QVERIFY(object->font().capitalization() == QFont::AllUppercase); delete object; } } -- cgit v0.12 From 8fa8dcd33f5395060a84f6b7062c927aa675cde6 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Fri, 5 Mar 2010 13:31:12 +1000 Subject: Expect fail in currentIndex test for now. --- .../tst_qdeclarativelistview.cpp | 46 ++++++++++------------ 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp index a36224f..1df4448 100644 --- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp +++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp @@ -450,7 +450,7 @@ void tst_QDeclarativeListView::inserted() model.insertItem(1, "Will", "9876"); // let transitions settle. - QTest::qWait(500); + QTest::qWait(300); QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item @@ -470,7 +470,7 @@ void tst_QDeclarativeListView::inserted() model.insertItem(0, "Foo", "1111"); // zero index, and current item // let transitions settle. - QTest::qWait(500); + QTest::qWait(300); QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item @@ -491,14 +491,14 @@ void tst_QDeclarativeListView::inserted() for (int i = model.count(); i < 30; ++i) model.insertItem(i, "Hello", QString::number(i)); - QTest::qWait(500); + QTest::qWait(300); listview->setContentY(80); - QTest::qWait(500); + QTest::qWait(300); // Insert item outside visible area model.insertItem(1, "Hello", "1324"); - QTest::qWait(500); + QTest::qWait(300); QVERIFY(listview->contentY() == 80); @@ -543,7 +543,7 @@ void tst_QDeclarativeListView::removed(bool animated) model.removeItem(1); // let transitions settle. - QTest::qWait(500); + QTest::qWait(300); QDeclarativeText *name = findItem(viewport, "textName", 1); QVERIFY(name != 0); @@ -565,7 +565,7 @@ void tst_QDeclarativeListView::removed(bool animated) model.removeItem(0); // post: top item starts at 20 // let transitions settle. - QTest::qWait(500); + QTest::qWait(300); name = findItem(viewport, "textName", 0); QVERIFY(name != 0); @@ -586,7 +586,7 @@ void tst_QDeclarativeListView::removed(bool animated) // Remove items not visible model.removeItem(18); // let transitions settle. - QTest::qWait(500); + QTest::qWait(300); // Confirm items positioned correctly itemCount = findItems(viewport, "wrapper").count(); @@ -603,7 +603,7 @@ void tst_QDeclarativeListView::removed(bool animated) model.removeItem(1); // post: top item will be at 40 // let transitions settle. - QTest::qWait(500); + QTest::qWait(300); // Confirm items positioned correctly for (int i = 2; i < 18; ++i) { @@ -617,14 +617,14 @@ void tst_QDeclarativeListView::removed(bool animated) QVERIFY(listview->currentIndex() == 9); QDeclarativeItem *oldCurrent = listview->currentItem(); model.removeItem(9); - QTest::qWait(500); + QTest::qWait(300); QCOMPARE(listview->currentIndex(), 9); QVERIFY(listview->currentItem() != oldCurrent); listview->setContentY(40); // That's the top now // let transitions settle. - QTest::qWait(500); + QTest::qWait(300); // Confirm items positioned correctly itemCount = findItems(viewport, "wrapper").count(); @@ -637,20 +637,20 @@ void tst_QDeclarativeListView::removed(bool animated) // remove current item beyond visible items. listview->setCurrentIndex(20); - QTest::qWait(500); + QTest::qWait(300); listview->setContentY(40); model.removeItem(20); - QTest::qWait(500); + QTest::qWait(300); QCOMPARE(listview->currentIndex(), 20); QVERIFY(listview->currentItem() != 0); // remove item before current, but visible listview->setCurrentIndex(8); - QTest::qWait(500); + QTest::qWait(300); oldCurrent = listview->currentItem(); model.removeItem(6); - QTest::qWait(500); + QTest::qWait(300); QCOMPARE(listview->currentIndex(), 7); QVERIFY(listview->currentItem() == oldCurrent); @@ -1028,22 +1028,16 @@ void tst_QDeclarativeListView::currentIndex() QCOMPARE(listview->contentY(), 0.0); // Test keys + qApp->setActiveWindow(canvas); canvas->show(); + canvas->setFocus(); qApp->processEvents(); - QEvent wa(QEvent::WindowActivate); - QApplication::sendEvent(canvas, &wa); - QFocusEvent fe(QEvent::FocusIn); - QApplication::sendEvent(canvas, &fe); - - QKeyEvent key(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier, "", false, 1); - QApplication::sendEvent(canvas, &key); - QVERIFY(key.isAccepted()); + QTest::keyClick(canvas, Qt::Key_Down); + QEXPECT_FAIL("", "QTBUG-8475", Abort); QCOMPARE(listview->currentIndex(), 1); - key = QKeyEvent(QEvent::KeyPress, Qt::Key_Up, Qt::NoModifier, "", false, 1); - QApplication::sendEvent(canvas, &key); - QVERIFY(key.isAccepted()); + QTest::keyClick(canvas, Qt::Key_Up); QCOMPARE(listview->currentIndex(), 0); // turn off auto highlight -- cgit v0.12 From 92c624b6e26cf950ca651cee59be8ab53ada9a7d Mon Sep 17 00:00:00 2001 From: Aaron McCarthy Date: Fri, 5 Mar 2010 12:10:19 +1000 Subject: Don't keep polling network sessions open indefinitely. --- src/network/access/qnetworkaccessmanager.cpp | 21 +++++++- src/network/access/qnetworkaccessmanager.h | 1 + src/network/access/qnetworkaccessmanager_p.h | 2 + src/network/bearer/qnetworksession.cpp | 14 +++++ src/plugins/bearer/qnetworksession_impl.cpp | 52 +++++++++++++++--- src/plugins/bearer/qnetworksession_impl.h | 9 ++-- .../qnetworksession/test/tst_qnetworksession.cpp | 63 ++++++++++++++++++++++ 7 files changed, 148 insertions(+), 14 deletions(-) diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 5876ee2..7bb1399 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -880,11 +880,16 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera return new QDisabledNetworkReply(this, req, op); } - if (d->initializeSession && !d->networkSession) { + if (!d->networkSession && (d->initializeSession || !d->networkConfiguration.isEmpty())) { QNetworkConfigurationManager manager; - d->createSession(manager.defaultConfiguration()); + if (d->networkConfiguration.isEmpty()) + d->createSession(manager.defaultConfiguration()); + else + d->createSession(manager.configurationFromIdentifier(d->networkConfiguration)); d->initializeSession = false; + } else if (d->networkSession) { + d->networkSession->setSessionProperty(QLatin1String("AutoCloseSessionTimeout"), -1); } QNetworkRequest request = req; @@ -943,6 +948,9 @@ void QNetworkAccessManagerPrivate::_q_replyFinished() QNetworkReply *reply = qobject_cast(q->sender()); if (reply) emit q->finished(reply); + + if (networkSession && q->findChildren().count() == 1) + networkSession->setSessionProperty(QLatin1String("AutoCloseSessionTimeout"), 120000); } void QNetworkAccessManagerPrivate::_q_replySslErrors(const QList &errors) @@ -1210,6 +1218,7 @@ void QNetworkAccessManagerPrivate::createSession(const QNetworkConfiguration &co networkSession = new QNetworkSession(config, q); QObject::connect(networkSession, SIGNAL(opened()), q, SIGNAL(networkSessionOnline())); + QObject::connect(networkSession, SIGNAL(closed()), q, SLOT(_q_networkSessionClosed())); QObject::connect(networkSession, SIGNAL(newConfigurationActivated()), q, SLOT(_q_networkSessionNewConfigurationActivated())); QObject::connect(networkSession, @@ -1218,6 +1227,14 @@ void QNetworkAccessManagerPrivate::createSession(const QNetworkConfiguration &co SLOT(_q_networkSessionPreferredConfigurationChanged(QNetworkConfiguration,bool))); } +void QNetworkAccessManagerPrivate::_q_networkSessionClosed() +{ + networkConfiguration = networkSession->configuration().identifier(); + + delete networkSession; + networkSession = 0; +} + void QNetworkAccessManagerPrivate::_q_networkSessionNewConfigurationActivated() { Q_Q(QNetworkAccessManager); diff --git a/src/network/access/qnetworkaccessmanager.h b/src/network/access/qnetworkaccessmanager.h index 252dfd0..694a54f 100644 --- a/src/network/access/qnetworkaccessmanager.h +++ b/src/network/access/qnetworkaccessmanager.h @@ -139,6 +139,7 @@ private: Q_DECLARE_PRIVATE(QNetworkAccessManager) Q_PRIVATE_SLOT(d_func(), void _q_replyFinished()) Q_PRIVATE_SLOT(d_func(), void _q_replySslErrors(QList)) + Q_PRIVATE_SLOT(d_func(), void _q_networkSessionClosed()) Q_PRIVATE_SLOT(d_func(), void _q_networkSessionNewConfigurationActivated()) Q_PRIVATE_SLOT(d_func(), void _q_networkSessionPreferredConfigurationChanged(QNetworkConfiguration,bool)) }; diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h index 8d772f0..0140268 100644 --- a/src/network/access/qnetworkaccessmanager_p.h +++ b/src/network/access/qnetworkaccessmanager_p.h @@ -105,6 +105,7 @@ public: void createSession(const QNetworkConfiguration &config); + void _q_networkSessionClosed(); void _q_networkSessionNewConfigurationActivated(); void _q_networkSessionPreferredConfigurationChanged(const QNetworkConfiguration &config, bool isSeamless); @@ -121,6 +122,7 @@ public: #endif QNetworkSession *networkSession; + QString networkConfiguration; bool networkAccessEnabled; bool initializeSession; diff --git a/src/network/bearer/qnetworksession.cpp b/src/network/bearer/qnetworksession.cpp index f0d7ede..27922af 100644 --- a/src/network/bearer/qnetworksession.cpp +++ b/src/network/bearer/qnetworksession.cpp @@ -492,6 +492,20 @@ QString QNetworkSession::errorString() const \o Setting this property to \i true before calling \l open() implies that the connection attempt is made but if no connection can be established, the user is not connsulted and asked to select a suitable connection. This property is not set by default and support for it depends on the platform. + + \row + \o AutoCloseSessionTimeout + \o If the session requires polling to keep its state up to date, this property holds + the timeout in milliseconds before the session will automatically close. If the + value of this property is -1 the session will not automatically close. This property + is set to -1 by default. + + The purpose of this property is to minimize resource use on platforms that use + polling to update the state of the session. Applications can set the value of this + property to the desired timeout before the session is closed. In response to the + closed() signal the network session should be deleted to ensure that all polling is + stopped. The session can then be recreated once it is required again. This property + has no effect for sessions that do not require polling. \endtable */ QVariant QNetworkSession::sessionProperty(const QString& key) const diff --git a/src/plugins/bearer/qnetworksession_impl.cpp b/src/plugins/bearer/qnetworksession_impl.cpp index 11585ef..0ba1237 100644 --- a/src/plugins/bearer/qnetworksession_impl.cpp +++ b/src/plugins/bearer/qnetworksession_impl.cpp @@ -100,9 +100,6 @@ void QNetworkSessionManagerPrivate::forceSessionClose(const QNetworkConfiguratio void QNetworkSessionPrivateImpl::syncStateWithInterface() { - connect(&manager, SIGNAL(updateCompleted()), this, SLOT(networkConfigurationsChanged())); - connect(&manager, SIGNAL(configurationChanged(QNetworkConfiguration)), - this, SLOT(configurationChanged(QNetworkConfiguration))); connect(sessionManager(), SIGNAL(forcedSessionClose(QNetworkConfiguration)), this, SLOT(forcedSessionClose(QNetworkConfiguration))); @@ -119,6 +116,10 @@ void QNetworkSessionPrivateImpl::syncStateWithInterface() activeConfig = publicConfig; engine = getEngineFromId(activeConfig.identifier()); if (engine) { + qRegisterMetaType("QNetworkConfigurationPrivatePointer"); + connect(engine, SIGNAL(configurationChanged(QNetworkConfigurationPrivatePointer)), + this, SLOT(configurationChanged(QNetworkConfigurationPrivatePointer)), + Qt::QueuedConnection); connect(engine, SIGNAL(connectionError(QString,QBearerEngineImpl::ConnectionError)), this, SLOT(connectionError(QString,QBearerEngineImpl::ConnectionError)), Qt::QueuedConnection); @@ -233,13 +234,37 @@ QNetworkInterface QNetworkSessionPrivateImpl::currentInterface() const return QNetworkInterface::interfaceFromName(interface); } -QVariant QNetworkSessionPrivateImpl::sessionProperty(const QString& /*key*/) const +QVariant QNetworkSessionPrivateImpl::sessionProperty(const QString &key) const { + if (key == QLatin1String("AutoCloseSessionTimeout")) { + if (engine && engine->requiresPolling() && + !(engine->capabilities() & QNetworkConfigurationManager::CanStartAndStopInterfaces)) { + if (sessionTimeout >= 0) + return sessionTimeout * 10000; + else + return -1; + } + } + return QVariant(); } -void QNetworkSessionPrivateImpl::setSessionProperty(const QString& /*key*/, const QVariant& /*value*/) +void QNetworkSessionPrivateImpl::setSessionProperty(const QString &key, const QVariant &value) { + if (key == QLatin1String("AutoCloseSessionTimeout")) { + if (engine && engine->requiresPolling() && + !(engine->capabilities() & QNetworkConfigurationManager::CanStartAndStopInterfaces)) { + int timeout = value.toInt(); + if (timeout >= 0) { + connect(engine, SIGNAL(updateCompleted()), + this, SLOT(decrementTimeout()), Qt::UniqueConnection); + sessionTimeout = timeout / 10000; // convert to poll intervals + } else { + disconnect(engine, SIGNAL(updateCompleted()), this, SLOT(decrementTimeout())); + sessionTimeout = -1; + } + } + } } QString QNetworkSessionPrivateImpl::errorString() const @@ -364,12 +389,14 @@ void QNetworkSessionPrivateImpl::networkConfigurationsChanged() startTime = engine->startTime(activeConfig.identifier()); } -void QNetworkSessionPrivateImpl::configurationChanged(const QNetworkConfiguration &config) +void QNetworkSessionPrivateImpl::configurationChanged(QNetworkConfigurationPrivatePointer config) { - if (serviceConfig.isValid() && (config == serviceConfig || config == activeConfig)) + if (serviceConfig.isValid() && + (config->id == serviceConfig.identifier() || config->id == activeConfig.identifier())) { updateStateFromServiceNetwork(); - else if (config == activeConfig) + } else if (config->id == activeConfig.identifier()) { updateStateFromActiveConfig(); + } } void QNetworkSessionPrivateImpl::forcedSessionClose(const QNetworkConfiguration &config) @@ -406,4 +433,13 @@ void QNetworkSessionPrivateImpl::connectionError(const QString &id, } } +void QNetworkSessionPrivateImpl::decrementTimeout() +{ + if (--sessionTimeout <= 0) { + disconnect(engine, SIGNAL(updateCompleted()), this, SLOT(decrementTimeout())); + sessionTimeout = -1; + close(); + } +} + QT_END_NAMESPACE diff --git a/src/plugins/bearer/qnetworksession_impl.h b/src/plugins/bearer/qnetworksession_impl.h index 7349e77..c644174 100644 --- a/src/plugins/bearer/qnetworksession_impl.h +++ b/src/plugins/bearer/qnetworksession_impl.h @@ -69,7 +69,7 @@ class QNetworkSessionPrivateImpl : public QNetworkSessionPrivate Q_OBJECT public: QNetworkSessionPrivateImpl() - : startTime(0) + : startTime(0), sessionTimeout(-1) { } @@ -108,13 +108,12 @@ private: private Q_SLOTS: void networkConfigurationsChanged(); - void configurationChanged(const QNetworkConfiguration &config); + void configurationChanged(QNetworkConfigurationPrivatePointer config); void forcedSessionClose(const QNetworkConfiguration &config); void connectionError(const QString &id, QBearerEngineImpl::ConnectionError error); + void decrementTimeout(); private: - QNetworkConfigurationManager manager; - bool opened; QBearerEngineImpl *engine; @@ -122,6 +121,8 @@ private: QNetworkSession::SessionError lastError; quint64 startTime; + + int sessionTimeout; }; QT_END_NAMESPACE diff --git a/tests/auto/qnetworksession/test/tst_qnetworksession.cpp b/tests/auto/qnetworksession/test/tst_qnetworksession.cpp index 58b1a48..4b56f77 100644 --- a/tests/auto/qnetworksession/test/tst_qnetworksession.cpp +++ b/tests/auto/qnetworksession/test/tst_qnetworksession.cpp @@ -85,6 +85,9 @@ private slots: void sessionOpenCloseStop_data(); void sessionOpenCloseStop(); + void sessionAutoClose_data(); + void sessionAutoClose(); + private: QNetworkConfigurationManager manager; @@ -1202,7 +1205,67 @@ bool closeSession(QNetworkSession *session, bool lastSessionOnConfiguration) { return true; } +void tst_QNetworkSession::sessionAutoClose_data() +{ + QTest::addColumn("configuration"); + + bool testData = false; + foreach (const QNetworkConfiguration &config, + manager.allConfigurations(QNetworkConfiguration::Discovered)) { + QNetworkSession session(config); + if (!session.sessionProperty(QLatin1String("AutoCloseSessionTimeout")).isValid()) + continue; + + testData = true; + + const QString name = config.name().isEmpty() ? QString("") : config.name(); + QTest::newRow(name.toLocal8Bit().constData()) << config; + } + + if (!testData) + QSKIP("No applicable configurations to test", SkipAll); +} + +void tst_QNetworkSession::sessionAutoClose() +{ + QFETCH(QNetworkConfiguration, configuration); + + QNetworkSession session(configuration); + + QVERIFY(session.configuration() == configuration); + QVariant autoCloseSession = session.sessionProperty(QLatin1String("AutoCloseSessionTimeout")); + + QVERIFY(autoCloseSession.isValid()); + + // property defaults to false + QCOMPARE(autoCloseSession.toInt(), -1); + + QSignalSpy closeSpy(&session, SIGNAL(closed())); + + session.open(); + session.waitForOpened(); + + if (!session.isOpen()) + QSKIP("Session not open", SkipSingle); + + // set session to auto close at next polling interval. + session.setSessionProperty(QLatin1String("AutoCloseSessionTimeout"), 0); + + QTRY_VERIFY(!closeSpy.isEmpty()); + + QCOMPARE(session.state(), QNetworkSession::Connected); + + QVERIFY(!session.isOpen()); + + QVERIFY(session.configuration() == configuration); + + autoCloseSession = session.sessionProperty(QLatin1String("AutoCloseSessionTimeout")); + + QVERIFY(autoCloseSession.isValid()); + + QCOMPARE(autoCloseSession.toInt(), -1); +} QTEST_MAIN(tst_QNetworkSession) -- cgit v0.12 From 9b7e3943b0e67af48fdbb993c5c4cc93dac81304 Mon Sep 17 00:00:00 2001 From: Aaron McCarthy Date: Thu, 4 Mar 2010 18:04:40 +1000 Subject: Remove unnecessary qWarnings from bearer management code. --- src/plugins/bearer/icd/qicdengine.cpp | 23 +++----- src/plugins/bearer/icd/qnetworksession_impl.cpp | 13 ++--- .../bearer/nativewifi/qnativewifiengine.cpp | 62 ++++++++++++++++------ .../networkmanager/qnetworkmanagerservice.cpp | 8 --- src/plugins/bearer/nla/qnlaengine.cpp | 56 ++++++++----------- src/plugins/bearer/qnetworksession_impl.cpp | 4 -- 6 files changed, 77 insertions(+), 89 deletions(-) diff --git a/src/plugins/bearer/icd/qicdengine.cpp b/src/plugins/bearer/icd/qicdengine.cpp index 206a6fd..5e506ef 100644 --- a/src/plugins/bearer/icd/qicdengine.cpp +++ b/src/plugins/bearer/icd/qicdengine.cpp @@ -206,14 +206,11 @@ void QIcdEngine::doRequestUpdate() QString iap_type = saved_ap.value("type").toString(); if (iap_type.startsWith("WLAN")) { ssid = saved_ap.value("wlan_ssid").toByteArray(); - if (ssid.isEmpty()) { - qWarning() << "Cannot get ssid for" << iap_id; + if (ssid.isEmpty()) continue; - } QString security_method = saved_ap.value("wlan_security").toString(); } else if (iap_type.isEmpty()) { - qWarning() << "IAP" << iap_id << "network type is not set! Skipping it"; continue; } else { #ifdef BEARER_MANAGEMENT_DEBUG @@ -270,7 +267,9 @@ void QIcdEngine::doRequestUpdate() scanned, error); if (!error.isEmpty()) { - qWarning() << "Network scanning failed" << error; +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug() << "Network scanning failed" << error; +#endif } else { #ifdef BEARER_MANAGEMENT_DEBUG if (!scanned.isEmpty()) @@ -379,19 +378,13 @@ void QIcdEngine::deleteConfiguration(const QString &iap_id) * or read all the IAPs from db because it might take too much power * (multiple applications would need to scan and read all IAPs from db) */ - if (accessPointConfigurations.contains(iap_id)) { - QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.take(iap_id); - - if (ptr) { - ptr->isValid = false; + QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.take(iap_id); + if (ptr) { #ifdef BEARER_MANAGEMENT_DEBUG - qDebug() << "IAP" << iap_id << "was removed from storage."; + qDebug() << "IAP" << iap_id << "was removed from storage."; #endif - emit configurationRemoved(ptr); - } else { - qWarning("Configuration not found for IAP %s", iap_id.toAscii().data()); - } + emit configurationRemoved(ptr); } else { #ifdef BEARER_MANAGEMENT_DEBUG qDebug("IAP: %s, already missing from the known list", iap_id.toAscii().data()); diff --git a/src/plugins/bearer/icd/qnetworksession_impl.cpp b/src/plugins/bearer/icd/qnetworksession_impl.cpp index 03624fa..bb81408 100644 --- a/src/plugins/bearer/icd/qnetworksession_impl.cpp +++ b/src/plugins/bearer/icd/qnetworksession_impl.cpp @@ -140,7 +140,9 @@ static DBusHandlerResult signal_handler(DBusConnection *, DBUS_TYPE_STRING, &network_type, DBUS_TYPE_STRING, &state, DBUS_TYPE_INVALID) == FALSE) { - qWarning() << QString("Failed to parse icd status signal: %1").arg(error.message); +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug() << QString("Failed to parse icd status signal: %1").arg(error.message); +#endif } else { QString _iap_id(iap_id); QString _network_type(network_type); @@ -166,7 +168,6 @@ void IcdListener::setup(QNetworkSessionPrivateImpl *d) dbus_connection = get_dbus_conn(&error); if (dbus_error_is_set(&error)) { - qWarning() << "Cannot get dbus connection."; dbus_error_free(&error); return; } @@ -176,7 +177,6 @@ void IcdListener::setup(QNetworkSessionPrivateImpl *d) dbus_bus_add_match(dbus_connection, ICD_DBUS_MATCH, &error); if (dbus_error_is_set(&error)) { - qWarning() << "Cannot add match" << ICD_DBUS_MATCH; dbus_error_free(&error); return; } @@ -185,7 +185,6 @@ void IcdListener::setup(QNetworkSessionPrivateImpl *d) ICD_DBUS_PATH, &icd_vtable, (void*)this) == FALSE) { - qWarning() << "Cannot register dbus signal handler, interface"<< ICD_DBUS_INTERFACE << "path" << ICD_DBUS_PATH; dbus_error_free(&error); return; } @@ -340,8 +339,6 @@ void QNetworkSessionPrivateImpl::updateIdentifier(QString &newId) } else { toIcdConfig(privateConfiguration(publicConfig))->network_attrs |= ICD_NW_ATTR_IAPNAME; if (privateConfiguration(publicConfig)->id != newId) { - qWarning() << "Your config id changed from" << privateConfiguration(publicConfig)->id - << "to" << newId; privateConfiguration(publicConfig)->id = newId; } } @@ -1015,25 +1012,21 @@ void QNetworkSessionPrivateImpl::stop() void QNetworkSessionPrivateImpl::migrate() { - qWarning("This platform does not support roaming (%s).", __FUNCTION__); } void QNetworkSessionPrivateImpl::accept() { - qWarning("This platform does not support roaming (%s).", __FUNCTION__); } void QNetworkSessionPrivateImpl::ignore() { - qWarning("This platform does not support roaming (%s).", __FUNCTION__); } void QNetworkSessionPrivateImpl::reject() { - qWarning("This platform does not support roaming (%s).", __FUNCTION__); } diff --git a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp index ec2da00..952a6a3 100644 --- a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp +++ b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp @@ -83,8 +83,10 @@ QNativeWifiEngine::QNativeWifiEngine(QObject *parent) DWORD result = local_WlanOpenHandle(1, 0, &clientVersion, &handle); if (result != ERROR_SUCCESS) { +#ifdef BEARER_MANAGEMENT_DEBUG if (result != ERROR_SERVICE_NOT_ACTIVE) - qWarning("%s: WlanOpenHandle failed with error %ld\n", __FUNCTION__, result); + qDebug("%s: WlanOpenHandle failed with error %ld\n", __FUNCTION__, result); +#endif return; } @@ -92,8 +94,10 @@ QNativeWifiEngine::QNativeWifiEngine(QObject *parent) result = local_WlanRegisterNotification(handle, WLAN_NOTIFICATION_SOURCE_ALL, true, WLAN_NOTIFICATION_CALLBACK(qNotificationCallback), this, 0, 0); +#ifdef BEARER_MANAGEMENT_DEBUG if (result != ERROR_SUCCESS) - qWarning("%s: WlanRegisterNotification failed with error %ld\n", __FUNCTION__, result); + qDebug("%s: WlanRegisterNotification failed with error %ld\n", __FUNCTION__, result); +#endif scanComplete(); } @@ -113,7 +117,9 @@ void QNativeWifiEngine::scanComplete() WLAN_INTERFACE_INFO_LIST *interfaceList; DWORD result = local_WlanEnumInterfaces(handle, 0, &interfaceList); if (result != ERROR_SUCCESS) { - qWarning("%s: WlanEnumInterfaces failed with error %ld\n", __FUNCTION__, result); +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("%s: WlanEnumInterfaces failed with error %ld\n", __FUNCTION__, result); +#endif return; } @@ -124,8 +130,10 @@ void QNativeWifiEngine::scanComplete() result = local_WlanGetAvailableNetworkList(handle, &interface.InterfaceGuid, 3, 0, &networkList); if (result != ERROR_SUCCESS) { - qWarning("%s: WlanGetAvailableNetworkList failed with error %ld\n", - __FUNCTION__, result); +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("%s: WlanGetAvailableNetworkList failed with error %ld\n", + __FUNCTION__, result); +#endif continue; } @@ -229,7 +237,9 @@ QString QNativeWifiEngine::getInterfaceFromId(const QString &id) WLAN_INTERFACE_INFO_LIST *interfaceList; DWORD result = local_WlanEnumInterfaces(handle, 0, &interfaceList); if (result != ERROR_SUCCESS) { - qWarning("%s: WlanEnumInterfaces failed with error %ld\n", __FUNCTION__, result); +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("%s: WlanEnumInterfaces failed with error %ld\n", __FUNCTION__, result); +#endif return QString(); } @@ -242,8 +252,10 @@ QString QNativeWifiEngine::getInterfaceFromId(const QString &id) wlan_intf_opcode_current_connection, 0, &dataSize, reinterpret_cast(&connectionAttributes), 0); if (result != ERROR_SUCCESS) { +#ifdef BEARER_MANAGEMENT_DEBUG if (result != ERROR_INVALID_STATE) - qWarning("%s: WlanQueryInterface failed with error %ld\n", __FUNCTION__, result); + qDebug("%s: WlanQueryInterface failed with error %ld\n", __FUNCTION__, result); +#endif continue; } @@ -280,7 +292,9 @@ bool QNativeWifiEngine::hasIdentifier(const QString &id) WLAN_INTERFACE_INFO_LIST *interfaceList; DWORD result = local_WlanEnumInterfaces(handle, 0, &interfaceList); if (result != ERROR_SUCCESS) { - qWarning("%s: WlanEnumInterfaces failed with error %ld\n", __FUNCTION__, result); +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("%s: WlanEnumInterfaces failed with error %ld\n", __FUNCTION__, result); +#endif return false; } @@ -291,8 +305,10 @@ bool QNativeWifiEngine::hasIdentifier(const QString &id) result = local_WlanGetAvailableNetworkList(handle, &interface.InterfaceGuid, 3, 0, &networkList); if (result != ERROR_SUCCESS) { - qWarning("%s: WlanGetAvailableNetworkList failed with error %ld\n", - __FUNCTION__, result); +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("%s: WlanGetAvailableNetworkList failed with error %ld\n", + __FUNCTION__, result); +#endif continue; } @@ -335,7 +351,9 @@ void QNativeWifiEngine::connectToId(const QString &id) WLAN_INTERFACE_INFO_LIST *interfaceList; DWORD result = local_WlanEnumInterfaces(handle, 0, &interfaceList); if (result != ERROR_SUCCESS) { - qWarning("%s: WlanEnumInterfaces failed with error %ld\n", __FUNCTION__, result); +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("%s: WlanEnumInterfaces failed with error %ld\n", __FUNCTION__, result); +#endif emit connectionError(id, InterfaceLookupError); return; } @@ -349,8 +367,10 @@ void QNativeWifiEngine::connectToId(const QString &id) result = local_WlanGetAvailableNetworkList(handle, &interface.InterfaceGuid, 3, 0, &networkList); if (result != ERROR_SUCCESS) { - qWarning("%s: WlanGetAvailableNetworkList failed with error %ld\n", - __FUNCTION__, result); +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("%s: WlanGetAvailableNetworkList failed with error %ld\n", + __FUNCTION__, result); +#endif continue; } @@ -378,7 +398,9 @@ void QNativeWifiEngine::connectToId(const QString &id) DWORD result = local_WlanConnect(handle, &interface.InterfaceGuid, ¶meters, 0); if (result != ERROR_SUCCESS) { - qWarning("%s: WlanConnect failed with error %ld\n", __FUNCTION__, result); +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("%s: WlanConnect failed with error %ld\n", __FUNCTION__, result); +#endif emit connectionError(id, ConnectError); break; } @@ -417,7 +439,9 @@ void QNativeWifiEngine::disconnectFromId(const QString &id) DWORD result = local_WlanDisconnect(handle, &guid, 0); if (result != ERROR_SUCCESS) { - qWarning("%s: WlanDisconnect failed with error %ld\n", __FUNCTION__, result); +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("%s: WlanDisconnect failed with error %ld\n", __FUNCTION__, result); +#endif emit connectionError(id, DisconnectionError); return; } @@ -431,14 +455,18 @@ void QNativeWifiEngine::requestUpdate() WLAN_INTERFACE_INFO_LIST *interfaceList; DWORD result = local_WlanEnumInterfaces(handle, 0, &interfaceList); if (result != ERROR_SUCCESS) { - qWarning("%s: WlanEnumInterfaces failed with error %ld\n", __FUNCTION__, result); +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("%s: WlanEnumInterfaces failed with error %ld\n", __FUNCTION__, result); +#endif return; } for (unsigned int i = 0; i < interfaceList->dwNumberOfItems; ++i) { result = local_WlanScan(handle, &interfaceList->InterfaceInfo[i].InterfaceGuid, 0, 0, 0); +#ifdef BEARER_MANAGEMENT_DEBUG if (result != ERROR_SUCCESS) - qWarning("%s: WlanScan failed with error %ld\n", __FUNCTION__, result); + qDebug("%s: WlanScan failed with error %ld\n", __FUNCTION__, result); +#endif } local_WlanFreeMemory(interfaceList); diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp index c780fbc..d23bb0d 100644 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp +++ b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp @@ -199,7 +199,6 @@ QNetworkManagerInterfaceAccessPoint::QNetworkManagerInterfaceAccessPoint(const Q dbusConnection); if (!d->connectionInterface->isValid()) { d->valid = false; - qWarning() << "Could not find InterfaceAccessPoint"; return; } d->valid = true; @@ -308,7 +307,6 @@ QNetworkManagerInterfaceDevice::QNetworkManagerInterfaceDevice(const QString &de dbusConnection); if (!d->connectionInterface->isValid()) { d->valid = false; - qWarning() << "Could not find NetworkManagerInterfaceDevice"; return; } d->valid = true; @@ -400,7 +398,6 @@ QNetworkManagerInterfaceDeviceWired::QNetworkManagerInterfaceDeviceWired(const Q dbusConnection, parent); if (!d->connectionInterface->isValid()) { d->valid = false; - qWarning() << "Could not find InterfaceDeviceWired"; return; } d->valid = true; @@ -478,7 +475,6 @@ QNetworkManagerInterfaceDeviceWireless::QNetworkManagerInterfaceDeviceWireless(c dbusConnection, parent); if (!d->connectionInterface->isValid()) { d->valid = false; - qWarning() << "Could not find InterfaceDeviceWireless"; return; } d->valid = true; @@ -596,7 +592,6 @@ QNetworkManagerSettings::QNetworkManagerSettings(const QString &settingsService, dbusConnection); if (!d->connectionInterface->isValid()) { d->valid = false; - //qWarning() << "Could not find NetworkManagerSettings"; return; } d->valid = true; @@ -660,7 +655,6 @@ QNetworkManagerSettingsConnection::QNetworkManagerSettingsConnection(const QStri QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), dbusConnection, parent); if (!d->connectionInterface->isValid()) { - //qWarning() << "Could not find NetworkManagerSettingsConnection"; d->valid = false; return; } @@ -883,7 +877,6 @@ QNetworkManagerConnectionActive::QNetworkManagerConnectionActive( const QString dbusConnection, parent); if (!d->connectionInterface->isValid()) { d->valid = false; - //qWarning() << "Could not find NetworkManagerSettingsConnection"; return; } d->valid = true; @@ -978,7 +971,6 @@ QNetworkManagerIp4Config::QNetworkManagerIp4Config( const QString &deviceObjectP dbusConnection, parent); if (!d->connectionInterface->isValid()) { d->valid = false; - //qWarning() << "Could not find NetworkManagerIp4Config"; return; } d->valid = true; diff --git a/src/plugins/bearer/nla/qnlaengine.cpp b/src/plugins/bearer/nla/qnlaengine.cpp index ff334e5..334eb14 100644 --- a/src/plugins/bearer/nla/qnlaengine.cpp +++ b/src/plugins/bearer/nla/qnlaengine.cpp @@ -228,8 +228,11 @@ QNlaThread::~QNlaThread() if (handle) { /* cancel completion event */ - if (WSALookupServiceEnd(handle) == SOCKET_ERROR) - qWarning("WSALookupServiceEnd error %d", WSAGetLastError()); + if (WSALookupServiceEnd(handle) == SOCKET_ERROR) { +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("WSALookupServiceEnd error %d", WSAGetLastError()); +#endif + } } mutex.unlock(); @@ -252,8 +255,11 @@ void QNlaThread::forceUpdate() if (handle) { /* cancel completion event */ - if (WSALookupServiceEnd(handle) == SOCKET_ERROR) - qWarning("WSALookupServiceEnd error %d", WSAGetLastError()); + if (WSALookupServiceEnd(handle) == SOCKET_ERROR) { +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("WSALookupServiceEnd error %d", WSAGetLastError()); +#endif + } handle = 0; } mutex.unlock(); @@ -262,10 +268,8 @@ void QNlaThread::forceUpdate() void QNlaThread::run() { WSAEVENT changeEvent = WSACreateEvent(); - if (changeEvent == WSA_INVALID_EVENT) { - qWarning("WSACreateEvent error %d", WSAGetLastError()); + if (changeEvent == WSA_INVALID_EVENT) return; - } while (true) { fetchConfigurations(); @@ -284,10 +288,8 @@ void QNlaThread::run() int result = WSALookupServiceBegin(&qsRestrictions, LUP_RETURN_ALL, &handle); mutex.unlock(); - if (result == SOCKET_ERROR) { - qWarning("%s: WSALookupServiceBegin error %d", __FUNCTION__, WSAGetLastError()); + if (result == SOCKET_ERROR) break; - } WSACOMPLETION completion; WSAOVERLAPPED overlapped; @@ -303,11 +305,8 @@ void QNlaThread::run() result = WSANSPIoctl(handle, SIO_NSP_NOTIFY_CHANGE, 0, 0, 0, 0, &bytesReturned, &completion); if (result == SOCKET_ERROR) { - int error = WSAGetLastError(); - if (error != WSA_IO_PENDING) { - qWarning("WSANSPIoctl error %d", error); + if (WSAGetLastError() != WSA_IO_PENDING) break; - } } #ifndef Q_OS_WINCE @@ -325,7 +324,6 @@ void QNlaThread::run() if (handle) { result = WSALookupServiceEnd(handle); if (result == SOCKET_ERROR) { - qWarning("WSALookupServiceEnd error %d", WSAGetLastError()); mutex.unlock(); break; } @@ -360,7 +358,7 @@ DWORD QNlaThread::parseBlob(NLA_BLOB *blob, QNetworkConfigurationPrivate *cpPriv switch (blob->header.type) { case NLA_RAW_DATA: #ifdef BEARER_MANAGEMENT_DEBUG - qWarning("%s: unhandled header type NLA_RAW_DATA", __FUNCTION__); + qDebug("%s: unhandled header type NLA_RAW_DATA", __FUNCTION__); #endif break; case NLA_INTERFACE: @@ -372,7 +370,7 @@ DWORD QNlaThread::parseBlob(NLA_BLOB *blob, QNetworkConfigurationPrivate *cpPriv break; case NLA_802_1X_LOCATION: #ifdef BEARER_MANAGEMENT_DEBUG - qWarning("%s: unhandled header type NLA_802_1X_LOCATION", __FUNCTION__); + qDebug("%s: unhandled header type NLA_802_1X_LOCATION", __FUNCTION__); #endif break; case NLA_CONNECTIVITY: @@ -380,18 +378,15 @@ DWORD QNlaThread::parseBlob(NLA_BLOB *blob, QNetworkConfigurationPrivate *cpPriv cpPriv->internet = true; else cpPriv->internet = false; -#ifdef BEARER_MANAGEMENT_DEBUG - qWarning("%s: unhandled header type NLA_CONNECTIVITY", __FUNCTION__); -#endif break; case NLA_ICS: #ifdef BEARER_MANAGEMENT_DEBUG - qWarning("%s: unhandled header type NLA_ICS", __FUNCTION__); + qDebug("%s: unhandled header type NLA_ICS", __FUNCTION__); #endif break; default: #ifdef BEARER_MANAGEMENT_DEBUG - qWarning("%s: unhandled header type %d", __FUNCTION__, blob->header.type); + qDebug("%s: unhandled header type %d", __FUNCTION__, blob->header.type); #endif ; } @@ -462,7 +457,6 @@ void QNlaThread::fetchConfigurations() int result = WSALookupServiceBegin(&qsRestrictions, LUP_RETURN_ALL | LUP_DEEP, &hLookup); if (result == SOCKET_ERROR) { - qWarning("%s: WSALookupServiceBegin error %d", __FUNCTION__, WSAGetLastError()); mutex.lock(); fetchedConfigurations.clear(); mutex.unlock(); @@ -474,18 +468,8 @@ void QNlaThread::fetchConfigurations() result = WSALookupServiceNext(hLookup, LUP_RETURN_ALL, &bufferLength, reinterpret_cast(buffer)); - if (result == SOCKET_ERROR) { - int error = WSAGetLastError(); - - if (error == WSA_E_NO_MORE) - break; - - if (error == WSAEFAULT) - break; - - qWarning("WSALookupServiceNext error %d", WSAGetLastError()); + if (result == SOCKET_ERROR) break; - } QNetworkConfigurationPrivate *cpPriv = parseQuerySet(reinterpret_cast(buffer)); @@ -496,7 +480,9 @@ void QNlaThread::fetchConfigurations() if (hLookup) { result = WSALookupServiceEnd(hLookup); if (result == SOCKET_ERROR) { - qWarning("WSALookupServiceEnd error %d", WSAGetLastError()); +#ifdef BEARER_MANAGEMENT_DEBUG + qDebug("WSALookupServiceEnd error %d", WSAGetLastError()); +#endif } } diff --git a/src/plugins/bearer/qnetworksession_impl.cpp b/src/plugins/bearer/qnetworksession_impl.cpp index 0ba1237..db1759c 100644 --- a/src/plugins/bearer/qnetworksession_impl.cpp +++ b/src/plugins/bearer/qnetworksession_impl.cpp @@ -204,22 +204,18 @@ void QNetworkSessionPrivateImpl::stop() void QNetworkSessionPrivateImpl::migrate() { - qWarning("This platform does not support roaming (%s).", Q_FUNC_INFO); } void QNetworkSessionPrivateImpl::accept() { - qWarning("This platform does not support roaming (%s).", Q_FUNC_INFO); } void QNetworkSessionPrivateImpl::ignore() { - qWarning("This platform does not support roaming (%s).", Q_FUNC_INFO); } void QNetworkSessionPrivateImpl::reject() { - qWarning("This platform does not support roaming (%s).", Q_FUNC_INFO); } QNetworkInterface QNetworkSessionPrivateImpl::currentInterface() const -- cgit v0.12 From 330e85d06600d50972f8abfeec6086e7e8ad6bc1 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Fri, 5 Mar 2010 13:41:14 +1000 Subject: Use new enum syntax for value types. --- examples/declarative/fonts/fonts.qml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/declarative/fonts/fonts.qml b/examples/declarative/fonts/fonts.qml index 6246d16..e928df4 100644 --- a/examples/declarative/fonts/fonts.qml +++ b/examples/declarative/fonts/fonts.qml @@ -11,36 +11,36 @@ Rectangle { FontLoader { id: webFont; source: "http://www.princexml.com/fonts/steffmann/Starburst.ttf" } Column { - anchors.fill: parent; spacing: 10 + anchors.fill: parent; spacing: 15 anchors.leftMargin: 10; anchors.rightMargin: 10 Text { text: myText; color: "lightsteelblue" width: parent.width; elide: Text.ElideRight - font.family: "Times"; font.pointSize: 36 + font.family: "Times"; font.pointSize: 42 } Text { text: myText; color: "lightsteelblue" width: parent.width; elide: Text.ElideLeft - font.family: "Times"; font.pointSize: 36 - font.capitalization: "AllUppercase" + font.family: "Times"; font.pointSize: 42 + font.capitalization: Font.AllUppercase } Text { text: myText; color: "lightsteelblue" width: parent.width; elide: Text.ElideMiddle - font.family: fixedFont.name; font.pointSize: 36; font.weight: "Bold" - font.capitalization: "AllLowercase" + font.family: fixedFont.name; font.pointSize: 42; font.weight: Font.Bold + font.capitalization: Font.AllLowercase } Text { text: myText; color: "lightsteelblue" width: parent.width; elide: Text.ElideRight - font.family: fixedFont.name; font.pointSize: 36; font.italic: true - font.capitalization: "SmallCaps" + font.family: fixedFont.name; font.pointSize: 42; font.italic: true + font.capitalization: Font.SmallCaps } Text { text: myText; color: "lightsteelblue" width: parent.width; elide: Text.ElideLeft - font.family: localFont.name; font.pointSize: 36 - font.capitalization: "Capitalize" + font.family: localFont.name; font.pointSize: 42 + font.capitalization: Font.Capitalize } Text { text: { @@ -50,7 +50,7 @@ Rectangle { } color: "lightsteelblue" width: parent.width; elide: Text.ElideMiddle - font.family: webFont.name; font.pointSize: 36 + font.family: webFont.name; font.pointSize: 42 } } } -- cgit v0.12 From 3d84e74212d7cb43e822aa7f0188ef533d8bb4a2 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 5 Mar 2010 13:40:11 +1000 Subject: Fix compiler warning on RVCT Anonymous structures in unions cause warnings on this compiler. QTBUG-8738 --- src/declarative/qml/qdeclarativeinstruction_p.h | 321 +++++++++++++----------- 1 file changed, 173 insertions(+), 148 deletions(-) diff --git a/src/declarative/qml/qdeclarativeinstruction_p.h b/src/declarative/qml/qdeclarativeinstruction_p.h index c41b14f..ec32b35 100644 --- a/src/declarative/qml/qdeclarativeinstruction_p.h +++ b/src/declarative/qml/qdeclarativeinstruction_p.h @@ -161,155 +161,180 @@ public: Type type; unsigned short line; + + struct InitInstruction { + int bindingsSize; + int parserStatusSize; + int contextCache; + int compiledBinding; + }; + struct CreateInstruction { + int type; + int data; + int bindingBits; + ushort column; + }; + struct StoreMetaInstruction { + int data; + int aliasData; + int propertyCache; + }; + struct SetIdInstruction { + int value; + int index; + }; + struct AssignValueSourceInstruction { + int property; + int owner; + int castValue; + }; + struct AssignValueInterceptorInstruction { + int property; + int owner; + int castValue; + }; + struct AssignBindingInstruction { + unsigned int property; + int value; + short context; + short owner; + }; + struct FetchInstruction { + int property; + }; + struct FetchValueInstruction { + int property; + int type; + }; + struct FetchQmlListInstruction { + int property; + int type; + }; + struct BeginInstruction { + int castValue; + }; + struct StoreFloatInstruction { + int propertyIndex; + float value; + }; + struct StoreDoubleInstruction { + int propertyIndex; + double value; + }; + struct StoreIntegerInstruction { + int propertyIndex; + int value; + }; + struct StoreBoolInstruction { + int propertyIndex; + bool value; + }; + struct StoreStringInstruction { + int propertyIndex; + int value; + }; + struct StoreScriptStringInstruction { + int propertyIndex; + int value; + int scope; + }; + struct StoreScriptInstruction { + int value; + }; + struct StoreUrlInstruction { + int propertyIndex; + int value; + }; + struct StoreColorInstruction { + int propertyIndex; + unsigned int value; + }; + struct StoreDateInstruction { + int propertyIndex; + int value; + }; + struct StoreTimeInstruction { + int propertyIndex; + int valueIndex; + }; + struct StoreDateTimeInstruction { + int propertyIndex; + int valueIndex; + }; + struct StoreRealPairInstruction { + int propertyIndex; + int valueIndex; + }; + struct StoreRectInstruction { + int propertyIndex; + int valueIndex; + }; + struct StoreVector3DInstruction { + int propertyIndex; + int valueIndex; + }; + struct StoreObjectInstruction { + int propertyIndex; + }; + struct AssignCustomTypeInstruction { + int propertyIndex; + int valueIndex; + }; + struct StoreSignalInstruction { + int signalIndex; + int value; + int context; + }; + struct AssignSignalObjectInstruction { + int signal; + }; + struct CreateComponentInstruction { + int count; + ushort column; + int endLine; + int metaObject; + }; + struct FetchAttachedInstruction { + int id; + }; + struct DeferInstruction { + int deferCount; + }; + union { - struct { - int bindingsSize; - int parserStatusSize; - int contextCache; - int compiledBinding; - } init; - struct { - int type; - int data; - int bindingBits; - ushort column; - } create; - struct { - int data; - int aliasData; - int propertyCache; - } storeMeta; - struct { - int value; - int index; - } setId; - struct { - int property; - int owner; - int castValue; - } assignValueSource; - struct { - int property; - int owner; - int castValue; - } assignValueInterceptor; - struct { - unsigned int property; - int value; - short context; - short owner; - } assignBinding; - struct { - int property; - int id; - } assignIdOptBinding; - struct { - int property; - int contextIdx; - short context; - short notifyIdx; - } assignObjPropBinding; - struct { - int property; - } fetch; - struct { - int property; - int type; - } fetchValue; - struct { - int property; - int type; - } fetchQmlList; - struct { - int castValue; - } begin; - struct { - int propertyIndex; - float value; - } storeFloat; - struct { - int propertyIndex; - double value; - } storeDouble; - struct { - int propertyIndex; - int value; - } storeInteger; - struct { - int propertyIndex; - bool value; - } storeBool; - struct { - int propertyIndex; - int value; - } storeString; - struct { - int propertyIndex; - int value; - int scope; - } storeScriptString; - struct { - int value; - } storeScript; - struct { - int propertyIndex; - int value; - } storeUrl; - struct { - int propertyIndex; - unsigned int value; - } storeColor; - struct { - int propertyIndex; - int value; - } storeDate; - struct { - int propertyIndex; - int valueIndex; - } storeTime; - struct { - int propertyIndex; - int valueIndex; - } storeDateTime; - struct { - int propertyIndex; - int valueIndex; - } storeRealPair; - struct { - int propertyIndex; - int valueIndex; - } storeRect; - struct { - int propertyIndex; - int valueIndex; - } storeVector3D; - struct { - int propertyIndex; - } storeObject; - struct { - int propertyIndex; - int valueIndex; - } assignCustomType; - struct { - int signalIndex; - int value; - int context; - } storeSignal; - struct { - int signal; - } assignSignalObject; - struct { - int count; - ushort column; - int endLine; - int metaObject; - } createComponent; - struct { - int id; - } fetchAttached; - struct { - int deferCount; - } defer; + InitInstruction init; + CreateInstruction create; + StoreMetaInstruction storeMeta; + SetIdInstruction setId; + AssignValueSourceInstruction assignValueSource; + AssignValueInterceptorInstruction assignValueInterceptor; + AssignBindingInstruction assignBinding; + FetchInstruction fetch; + FetchValueInstruction fetchValue; + FetchQmlListInstruction fetchQmlList; + BeginInstruction begin; + StoreFloatInstruction storeFloat; + StoreDoubleInstruction storeDouble; + StoreIntegerInstruction storeInteger; + StoreBoolInstruction storeBool; + StoreStringInstruction storeString; + StoreScriptStringInstruction storeScriptString; + StoreScriptInstruction storeScript; + StoreUrlInstruction storeUrl; + StoreColorInstruction storeColor; + StoreDateInstruction storeDate; + StoreTimeInstruction storeTime; + StoreDateTimeInstruction storeDateTime; + StoreRealPairInstruction storeRealPair; + StoreRectInstruction storeRect; + StoreVector3DInstruction storeVector3D; + StoreObjectInstruction storeObject; + AssignCustomTypeInstruction assignCustomType; + StoreSignalInstruction storeSignal; + AssignSignalObjectInstruction assignSignalObject; + CreateComponentInstruction createComponent; + FetchAttachedInstruction fetchAttached; + DeferInstruction defer; }; void dump(QDeclarativeCompiledData *); -- cgit v0.12 From b771a3a1238bd843c962a3a2a7cb04e2dfaeadbf Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Fri, 5 Mar 2010 13:41:55 +1000 Subject: Delete uninspiring example. --- examples/declarative/anchors/anchor-changes.qml | 46 ------------------------- 1 file changed, 46 deletions(-) delete mode 100644 examples/declarative/anchors/anchor-changes.qml diff --git a/examples/declarative/anchors/anchor-changes.qml b/examples/declarative/anchors/anchor-changes.qml deleted file mode 100644 index 99ca3db..0000000 --- a/examples/declarative/anchors/anchor-changes.qml +++ /dev/null @@ -1,46 +0,0 @@ -import Qt 4.6 - -Item { - id: window - width: 200; height: 450 - - Rectangle { - id: titleBar; color: "Gray" - anchors.top: parent.top; height: 50 - width: parent.width - } - - Rectangle { - id: statusBar; color: "Gray" - height: 50; anchors.bottom: parent.bottom - width: parent.width - } - - Rectangle { - id: content - anchors.top: titleBar.bottom; anchors.bottom: statusBar.top - width: parent.width - - Text { text: "Top"; anchors.top: parent.top } - Text { text: "Bottom"; anchors.bottom: parent.bottom } - } - - MouseArea { - anchors.fill: content - onPressed: window.state = "FullScreen" - onReleased: window.state = "" - } - - states : State { - name: "FullScreen" - //! [0] - AnchorChanges { - target: content; top: window.top; bottom: window.bottom - } - //! [0] - } - - transitions : Transition { - NumberAnimation { properties: "y,height" } - } -} -- cgit v0.12 From 09e39c9c86e8ed346aff348b28c512710862e70e Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 5 Mar 2010 13:43:08 +1000 Subject: Add basic support for explicit newParent in ParentAnimation. --- src/declarative/util/qdeclarativeanimation.cpp | 62 +++++++++++++++++++++++--- src/declarative/util/qdeclarativeanimation_p.h | 2 +- 2 files changed, 57 insertions(+), 7 deletions(-) diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index 49177d1..8c8dd95 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -2461,6 +2461,9 @@ QDeclarativeParentAnimation::~QDeclarativeParentAnimation() /*! \qmlproperty item ParentAnimation::target The item to reparent. + + When used in a transition, if no target is specified all + ParentChanges will be animated by the ParentAnimation. */ QDeclarativeItem *QDeclarativeParentAnimation::target() const { @@ -2474,6 +2477,12 @@ void QDeclarativeParentAnimation::setTarget(QDeclarativeItem *target) d->target = target; } +/*! + \qmlproperty item ParentAnimation::newParent + The new parent to animate to. + + If not set, then the parent defined in the end state of the transition. +*/ QDeclarativeItem *QDeclarativeParentAnimation::newParent() const { Q_D(const QDeclarativeParentAnimation); @@ -2545,12 +2554,13 @@ void QDeclarativeParentAnimation::transition(QDeclarativeStateActions &actions, struct QDeclarativeParentActionData : public QAbstractAnimationAction { - QDeclarativeParentActionData(): pc(0) {} - ~QDeclarativeParentActionData() { delete pc; } + QDeclarativeParentActionData() {} + ~QDeclarativeParentActionData() { qDeleteAll(pc); } QDeclarativeStateActions actions; + //### reverse should probably apply on a per-action basis bool reverse; - QDeclarativeParentChange *pc; + QList pc; virtual void doAction() { for (int ii = 0; ii < actions.count(); ++ii) { @@ -2565,6 +2575,33 @@ void QDeclarativeParentAnimation::transition(QDeclarativeStateActions &actions, QDeclarativeParentActionData *data = new QDeclarativeParentActionData; QDeclarativeParentActionData *viaData = new QDeclarativeParentActionData; + + bool hasExplicit = false; + if (d->target && d->newParent) { + data->reverse = false; + QDeclarativeAction myAction; + QDeclarativeParentChange *pc = new QDeclarativeParentChange; + pc->setObject(d->target); + pc->setParent(d->newParent); + myAction.event = pc; + data->pc << pc; + data->actions << myAction; + hasExplicit = true; + if (d->via) { + viaData->reverse = false; + QDeclarativeAction myVAction; + QDeclarativeParentChange *vpc = new QDeclarativeParentChange; + vpc->setObject(d->target); + vpc->setParent(d->via); + myVAction.event = vpc; + viaData->pc << vpc; + viaData->actions << myVAction; + } + //### once actions have concept of modified, + // loop to match appropriate ParentChanges and mark as modified + } + + if (!hasExplicit) for (int i = 0; i < actions.size(); ++i) { QDeclarativeAction &action = actions[i]; if (action.event && action.event->typeName() == QLatin1String("ParentChange") @@ -2573,8 +2610,21 @@ void QDeclarativeParentAnimation::transition(QDeclarativeStateActions &actions, QDeclarativeParentChange *pc = static_cast(action.event); QDeclarativeAction myAction = action; data->reverse = action.reverseEvent; - action.actionDone = true; - data->actions << myAction; + + //### this logic differs from PropertyAnimation + // (probably a result of modified vs. done) + if (d->newParent) { + QDeclarativeParentChange *epc = new QDeclarativeParentChange; + epc->setObject(static_cast(action.event)->object()); + epc->setParent(d->newParent); + myAction.event = epc; + data->pc << epc; + data->actions << myAction; + pc = epc; + } else { + action.actionDone = true; + data->actions << myAction; + } if (d->via) { viaData->reverse = false; @@ -2583,7 +2633,7 @@ void QDeclarativeParentAnimation::transition(QDeclarativeStateActions &actions, vpc->setObject(pc->object()); vpc->setParent(d->via); myAction.event = vpc; - viaData->pc = vpc; + viaData->pc << vpc; viaData->actions << myAction; QDeclarativeAction dummyAction; QDeclarativeAction &xAction = pc->xIsSet() ? actions[++i] : dummyAction; diff --git a/src/declarative/util/qdeclarativeanimation_p.h b/src/declarative/util/qdeclarativeanimation_p.h index 0f23f5c..af48309 100644 --- a/src/declarative/util/qdeclarativeanimation_p.h +++ b/src/declarative/util/qdeclarativeanimation_p.h @@ -457,7 +457,7 @@ class QDeclarativeParentAnimation : public QDeclarativeAnimationGroup Q_DECLARE_PRIVATE(QDeclarativeParentAnimation) Q_PROPERTY(QDeclarativeItem *target READ target WRITE setTarget) - //Q_PROPERTY(QDeclarativeItem *newParent READ newParent WRITE setNewParent) + Q_PROPERTY(QDeclarativeItem *newParent READ newParent WRITE setNewParent) Q_PROPERTY(QDeclarativeItem *via READ via WRITE setVia) public: -- cgit v0.12 From 20c7b2776133a9b3531ac711dd4f4be2d0523ddd Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Fri, 5 Mar 2010 15:28:31 +1000 Subject: add wifi power notifications. more Qt way for autorelease. and change to better way of getting wifi interfaces. --- src/plugins/bearer/corewlan/qcorewlanengine.h | 2 +- src/plugins/bearer/corewlan/qcorewlanengine.mm | 114 ++++++++++++++++++------- 2 files changed, 83 insertions(+), 33 deletions(-) diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.h b/src/plugins/bearer/corewlan/qcorewlanengine.h index 3289ffb..cbaa9d6 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.h +++ b/src/plugins/bearer/corewlan/qcorewlanengine.h @@ -78,7 +78,7 @@ public: QNetworkConfigurationPrivatePointer defaultConfiguration(); - bool getAllScInterfaces(); + bool getWifiInterfaces(); bool requiresPolling() const; diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm index ec7d92b..8f174db 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.mm +++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm @@ -61,14 +61,78 @@ #include #include #include +#include #include +#include + QMap networkInterfaces; +#ifdef MAC_SDK_10_6 +@interface QNSListener : NSObject +{ + NSNotificationCenter *center; + CWInterface *currentInterface; + QCoreWlanEngine *engine; + NSAutoreleasePool *autoreleasepool; + NSLock *locker; +} +- (void)notificationHandler:(NSNotification *)notification; +- (void)remove; +- (void)setEngine:(QCoreWlanEngine *)coreEngine; +- (void)dealloc; + +@property (assign) QCoreWlanEngine* engine; + +@end + +@implementation QNSListener +- (id) init +{ + [locker lock]; + autoreleasepool = [[NSAutoreleasePool alloc] init]; + center = [NSNotificationCenter defaultCenter]; + currentInterface = [CWInterface interface]; +// [center addObserver:self selector:@selector(notificationHandler:) name:kCWLinkDidChangeNotification object:nil]; + [center addObserver:self selector:@selector(notificationHandler:) name:kCWPowerDidChangeNotification object:nil]; + [locker unlock]; + return self; +} + +-(void)dealloc +{ + [autoreleasepool release]; + [super dealloc]; +} + +-(void)setEngine:(QCoreWlanEngine *)coreEngine +{ + [locker lock]; + if(!engine) + engine = coreEngine; + [locker unlock]; +} + +-(void)remove +{ + [locker lock]; + [center removeObserver:self]; + [locker unlock]; +} + +- (void)notificationHandler:(NSNotification *)notification +{ + engine->requestUpdate(); +} +@end + +QNSListener *listener = 0; + +#endif + QT_BEGIN_NAMESPACE inline QString cfstringRefToQstring(CFStringRef cfStringRef) { -// return QString([cfStringRef UTF8String]); QString retVal; CFIndex maxLength = 2 * CFStringGetLength(cfStringRef) + 1/*zero term*/; // max UTF8 char *cstring = new char[maxLength]; @@ -122,12 +186,22 @@ QCoreWlanEngine::QCoreWlanEngine(QObject *parent) : QBearerEngineImpl(parent) { startNetworkChangeLoop(); + +#if defined(MAC_SDK_10_6) + if(!listener) { + listener = [[QNSListener alloc] init]; + listener.engine = this; + } +#endif } QCoreWlanEngine::~QCoreWlanEngine() { while (!foundConfigurations.isEmpty()) delete foundConfigurations.takeFirst(); + + [listener remove]; + [listener release]; } QString QCoreWlanEngine::getInterfaceFromId(const QString &id) @@ -249,7 +323,7 @@ void QCoreWlanEngine::doRequestUpdate() { QMutexLocker locker(&mutex); - getAllScInterfaces(); + getWifiInterfaces(); QStringList previous = accessPointConfigurations.keys(); @@ -337,7 +411,7 @@ QStringList QCoreWlanEngine::scanForSsids(const QString &interfaceName) QStringList found; #if defined(MAC_SDK_10_6) - NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init]; + QMacCocoaAutoReleasePool pool; CWInterface *currentInterface = [CWInterface interfaceWithName:qstringToNSString(interfaceName)]; if([currentInterface power]) { @@ -348,7 +422,6 @@ QStringList QCoreWlanEngine::scanForSsids(const QString &interfaceName) CWNetwork *apNetwork; if (!err) { for(uint row=0; row < [apArray count]; row++ ) { - NSAutoreleasePool *looppool = [[NSAutoreleasePool alloc] init]; apNetwork = [apArray objectAtIndex:row]; @@ -411,11 +484,9 @@ QStringList QCoreWlanEngine::scanForSsids(const QString &interfaceName) emit configurationAdded(ptr); } - [looppool release]; } } } - [autoreleasepool drain]; #else Q_UNUSED(interfaceName); #endif @@ -455,39 +526,18 @@ bool QCoreWlanEngine::isKnownSsid(const QString &interfaceName, const QString &s return false; } -bool QCoreWlanEngine::getAllScInterfaces() +bool QCoreWlanEngine::getWifiInterfaces() { QMutexLocker locker(&mutex); networkInterfaces.clear(); - NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init]; + QMacCocoaAutoReleasePool pool; - CFArrayRef interfaces = SCNetworkInterfaceCopyAll(); - if (interfaces != NULL) { - CFIndex interfaceCount; - CFIndex interfaceIndex; - interfaceCount = CFArrayGetCount(interfaces); - for (interfaceIndex = 0; interfaceIndex < interfaceCount; interfaceIndex++) { - NSAutoreleasePool *looppool = [[NSAutoreleasePool alloc] init]; - - CFStringRef bsdName; - CFTypeRef thisInterface = CFArrayGetValueAtIndex(interfaces, interfaceIndex); - bsdName = SCNetworkInterfaceGetBSDName((SCNetworkInterfaceRef)thisInterface); - QString interfaceName = cfstringRefToQstring(bsdName); - QString typeStr; - CFStringRef type = SCNetworkInterfaceGetInterfaceType((SCNetworkInterfaceRef)thisInterface); - if ( CFEqual(type, kSCNetworkInterfaceTypeIEEE80211)) { - typeStr = "WLAN"; - } - if(!networkInterfaces.contains(interfaceName) && !typeStr.isEmpty()) { - networkInterfaces.insert(interfaceName,typeStr); - } - [looppool release]; - } + NSArray *wifiInterfaces = [CWInterface supportedInterfaces]; + for(uint row=0; row < [wifiInterfaces count]; row++ ) { + networkInterfaces.insert( nsstringToQString([wifiInterfaces objectAtIndex:row]),"WLAN"); } - CFRelease(interfaces); - [autoreleasepool drain]; return true; } -- cgit v0.12 From 769a11719ca85e9cdac4c0f1d0fcffe6145d6972 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Fri, 5 Mar 2010 16:08:26 +1000 Subject: Don't assume documents are in UTF-8. Task-number: QTBUG-7719 --- src/declarative/qml/qdeclarativexmlhttprequest.cpp | 19 +++++++++++--- .../qdeclarativexmlhttprequest/data/utf16.qml | 28 +++++++++++++++++++++ .../qdeclarativexmlhttprequest/data/utf16.xml | Bin 0 -> 154 bytes .../tst_qdeclarativexmlhttprequest.cpp | 25 ++++++++++++++++++ 4 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.qml create mode 100644 tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.xml diff --git a/src/declarative/qml/qdeclarativexmlhttprequest.cpp b/src/declarative/qml/qdeclarativexmlhttprequest.cpp index 3ba53f0..87cab85 100644 --- a/src/declarative/qml/qdeclarativexmlhttprequest.cpp +++ b/src/declarative/qml/qdeclarativexmlhttprequest.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include @@ -312,7 +313,7 @@ public: // C++ API static QScriptValue prototype(QScriptEngine *); - static QScriptValue load(QScriptEngine *engine, const QString &data); + static QScriptValue load(QScriptEngine *engine, const QByteArray &data); }; QT_END_NAMESPACE @@ -619,7 +620,7 @@ QScriptValue Document::prototype(QScriptEngine *engine) return proto; } -QScriptValue Document::load(QScriptEngine *engine, const QString &data) +QScriptValue Document::load(QScriptEngine *engine, const QByteArray &data) { Q_ASSERT(engine); @@ -960,6 +961,7 @@ public: QScriptValue abort(QScriptValue *me); QString responseBody() const; + const QByteArray & rawResponseBody() const; private slots: void downloadProgress(qint64); void error(QNetworkReply::NetworkError); @@ -1279,9 +1281,20 @@ void QDeclarativeXMLHttpRequest::finished() QString QDeclarativeXMLHttpRequest::responseBody() const { + QXmlStreamReader reader(m_responseEntityBody); + reader.readNext(); + QTextCodec *codec = QTextCodec::codecForName(reader.documentEncoding().toString().toUtf8()); + if (codec) + return codec->toUnicode(m_responseEntityBody); + return QString::fromUtf8(m_responseEntityBody); } +const QByteArray &QDeclarativeXMLHttpRequest::rawResponseBody() const +{ + return m_responseEntityBody; +} + QScriptValue QDeclarativeXMLHttpRequest::dispatchCallback(QScriptValue *me) { QScriptValue v = me->property(QLatin1String("callback")); @@ -1538,7 +1551,7 @@ static QScriptValue qmlxmlhttprequest_responseXML(QScriptContext *context, QScri request->readyState() != QDeclarativeXMLHttpRequest::Done) return engine->nullValue(); else - return Document::load(engine, request->responseBody()); + return Document::load(engine, request->rawResponseBody()); } static QScriptValue qmlxmlhttprequest_onreadystatechange(QScriptContext *context, QScriptEngine *engine) diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.qml new file mode 100644 index 0000000..63165ab --- /dev/null +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.qml @@ -0,0 +1,28 @@ +import Qt 4.6 + +QtObject { + property bool dataOK: false + + property string responseText + property string responseXmlRootNodeValue + + Component.onCompleted: { + var x = new XMLHttpRequest; + + x.open("GET", "utf16.xml"); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + + responseText = x.responseText + if (x.responseXML) + responseXmlRootNodeValue = x.responseXML.documentElement.childNodes[0].nodeValue + + dataOK = true; + } + } + x.send() + } +} + diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.xml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.xml new file mode 100644 index 0000000..0fbb126 Binary files /dev/null and b/tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.xml differ diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp b/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp index 01f07ab..13ed959 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp @@ -104,6 +104,7 @@ private slots: void responseXML_invalid(); void invalidMethodUsage(); void redirects(); + void nonUtf8(); // Attributes void document(); @@ -917,6 +918,30 @@ void tst_qdeclarativexmlhttprequest::responseText_data() QTest::newRow("Not Found") << TEST_FILE("status.404.reply") << TEST_FILE("testdocument.html") << ""; } +void tst_qdeclarativexmlhttprequest::nonUtf8() +{ + QDeclarativeComponent component(&engine, TEST_FILE("utf16.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QString uc; + uc.resize(3); + uc[0] = QChar(0x10e3); + uc[1] = QChar(' '); + uc[2] = QChar(0x03a3); + QString xml = "\n\n" + uc + "\n\n"; + + TRY_WAIT(object->property("dataOK").toBool() == true); + + QString responseText = object->property("responseText").toString(); + QCOMPARE(responseText, xml); + + QString responseXmlText = object->property("responseXmlRootNodeValue").toString(); + QCOMPARE(responseXmlText, '\n' + uc + '\n'); + + delete object; +} + // Test that calling hte XMLHttpRequest methods on a non-XMLHttpRequest object // throws an exception void tst_qdeclarativexmlhttprequest::invalidMethodUsage() -- cgit v0.12 From b075f407c724cbe4b96b9936c8cf91b88c526619 Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Fri, 5 Mar 2010 16:23:23 +1000 Subject: Fix qdeclarative{audio,video} tests. Location of declarative modules moved. --- tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro | 12 ++++++------ tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp | 2 +- tests/auto/qdeclarativevideo/qdeclarativevideo.pro | 12 ++++++------ tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro b/tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro index bfc2223..7779efc 100644 --- a/tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro +++ b/tests/auto/qdeclarativeaudio/qdeclarativeaudio.pro @@ -1,14 +1,14 @@ load(qttest_p4) HEADERS += \ - $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio_p.h \ - $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase_p.h \ - $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject_p.h + $$PWD/../../../src/imports/multimedia/qdeclarativeaudio_p.h \ + $$PWD/../../../src/imports/multimedia/qdeclarativemediabase_p.h \ + $$PWD/../../../src/imports/multimedia/qmetadatacontrolmetaobject_p.h SOURCES += \ tst_qdeclarativeaudio.cpp \ - $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio.cpp \ - $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase.cpp \ - $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject.cpp + $$PWD/../../../src/imports/multimedia/qdeclarativeaudio.cpp \ + $$PWD/../../../src/imports/multimedia/qdeclarativemediabase.cpp \ + $$PWD/../../../src/imports/multimedia/qmetadatacontrolmetaobject.cpp QT += multimedia declarative diff --git a/tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp b/tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp index 55c7135..d750c69 100644 --- a/tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp +++ b/tests/auto/qdeclarativeaudio/tst_qdeclarativeaudio.cpp @@ -41,7 +41,7 @@ #include -#include "../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativeaudio_p.h" +#include "../../../src/imports/multimedia/qdeclarativeaudio_p.h" #include #include diff --git a/tests/auto/qdeclarativevideo/qdeclarativevideo.pro b/tests/auto/qdeclarativevideo/qdeclarativevideo.pro index 497ee0e..4cd4c71 100644 --- a/tests/auto/qdeclarativevideo/qdeclarativevideo.pro +++ b/tests/auto/qdeclarativevideo/qdeclarativevideo.pro @@ -1,14 +1,14 @@ load(qttest_p4) HEADERS += \ - $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo_p.h \ - $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase_p.h \ - $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject_p.h + $$PWD/../../../src/imports/multimedia/qdeclarativevideo_p.h \ + $$PWD/../../../src/imports/multimedia/qdeclarativemediabase_p.h \ + $$PWD/../../../src/imports/multimedia/qmetadatacontrolmetaobject_p.h SOURCES += \ tst_qdeclarativevideo.cpp \ - $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo.cpp \ - $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativemediabase.cpp \ - $$PWD/../../../src/plugins/qdeclarativemodules/multimedia/qmetadatacontrolmetaobject.cpp + $$PWD/../../../src/imports/multimedia/qdeclarativevideo.cpp \ + $$PWD/../../../src/imports/multimedia/qdeclarativemediabase.cpp \ + $$PWD/../../../src/imports/multimedia/qmetadatacontrolmetaobject.cpp QT += multimedia declarative diff --git a/tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp b/tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp index d3bfc38..5fd3675 100644 --- a/tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp +++ b/tests/auto/qdeclarativevideo/tst_qdeclarativevideo.cpp @@ -41,7 +41,7 @@ #include -#include "../../../src/plugins/qdeclarativemodules/multimedia/qdeclarativevideo_p.h" +#include "../../../src/imports/multimedia/qdeclarativevideo_p.h" #include #include -- cgit v0.12 From 4a6154ec912d5b84a556aa731c5b7de8f758ba3d Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 5 Mar 2010 16:26:40 +1000 Subject: Minor perf improvement when running QML script blocks There is no need to capture a property access if a binding is not being evaluated. --- src/declarative/qml/qdeclarativecontextscriptclass.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/declarative/qml/qdeclarativecontextscriptclass.cpp b/src/declarative/qml/qdeclarativecontextscriptclass.cpp index d6305d8..5fcf4e2 100644 --- a/src/declarative/qml/qdeclarativecontextscriptclass.cpp +++ b/src/declarative/qml/qdeclarativecontextscriptclass.cpp @@ -262,8 +262,9 @@ QDeclarativeContextScriptClass::property(Object *object, const Identifier &name) } } - ep->capturedProperties << - QDeclarativeEnginePrivate::CapturedProperty(bindContext, -1, lastPropertyIndex + cp->notifyIndex); + if (ep->captureProperties) + ep->capturedProperties << QDeclarativeEnginePrivate::CapturedProperty(bindContext, -1, lastPropertyIndex + cp->notifyIndex); + return Value(scriptEngine, rv); } else if(lastDefaultObject != -1) { -- cgit v0.12 From b837e7024afcf4597082998f97dcc663c13c6380 Mon Sep 17 00:00:00 2001 From: Janne Anttila Date: Thu, 4 Mar 2010 15:45:33 +0200 Subject: Fixed crash in Symbian when having empty QMenu in menubar. Typically cascade menus in Symbian/S60 are created from resources. When cascade menus are defined in resources the RestoreMenuL is responsible for instantiating the cascade menu item array and items. In Qt for Symbian the menus need to be created dynamically from QActions, that's why RestoreMenuL is reimplemeted in Qt for Symbian to dynamically init the menu pane content. Adding a first dynamic item to cascase menu pane creates the CEikMenuPane internal item array. In case where empty QMenu was added to QMenubar, the item array for cascade menupane was never constructed. Then later on CEikMenuPane code assumes that item array exist. To avoid access violation crash we now create the item array manually when building submenu. Task-number: QTBUG-4897 Reviewed-by: Jason Barron --- src/gui/widgets/qmenu_symbian.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/gui/widgets/qmenu_symbian.cpp b/src/gui/widgets/qmenu_symbian.cpp index eae97a6..e46688c 100644 --- a/src/gui/widgets/qmenu_symbian.cpp +++ b/src/gui/widgets/qmenu_symbian.cpp @@ -256,6 +256,14 @@ void qt_symbian_show_submenu( CEikMenuPane* menuPane, int id) { SymbianMenuItem* menu = qt_symbian_find_menu(id, symbianMenus); if (menu) { + // Normally first AddMenuItemL call for menuPane will create the item array. + // However if we don't have any items, we still need the item array. Otherwise + // menupane will crash. That's why we create item array here manually, and + // AddMenuItemL will then use the existing array. + CEikMenuPane::CItemArray* itemArray = q_check_ptr(new CEikMenuPane::CItemArray); + menuPane->SetItemArray(itemArray); + menuPane->SetItemArrayOwnedExternally(EFalse); + for (int i = 0; i < menu->children.count(); ++i) QT_TRAP_THROWING(menuPane->AddMenuItemL(menu->children.at(i)->menuItemData)); } -- cgit v0.12 From 46d5f85a03bd87708152baba2674f2e5f36afe22 Mon Sep 17 00:00:00 2001 From: Bill King Date: Fri, 5 Mar 2010 16:53:54 +1000 Subject: Fixes: Mysql truncation of integer values + some autotest cleanup Task-number: QTBUG-5765 --- src/sql/drivers/mysql/qsql_mysql.cpp | 17 ++++++ tests/auto/qsqlquery/tst_qsqlquery.cpp | 101 ++++++++++++++++++++++++++++----- 2 files changed, 103 insertions(+), 15 deletions(-) diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp index c0f866e..2261887 100644 --- a/src/sql/drivers/mysql/qsql_mysql.cpp +++ b/src/sql/drivers/mysql/qsql_mysql.cpp @@ -320,6 +320,16 @@ static bool qIsBlob(int t) || t == MYSQL_TYPE_LONG_BLOB; } +static bool qIsInteger(int t) +{ + return t == MYSQL_TYPE_TINY + || t == MYSQL_TYPE_SHORT + || t == MYSQL_TYPE_LONG + || t == MYSQL_TYPE_LONGLONG + || t == MYSQL_TYPE_INT24; +} + + void QMYSQLResultPrivate::bindBlobs() { int i; @@ -368,6 +378,13 @@ bool QMYSQLResultPrivate::bindInValues() fieldInfo->length = 0; hasBlobs = true; } else { + // fieldInfo->length specifies the display width, which may be too + // small to hold valid integer values (see + // http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html ), so + // always use the MAX_BIGINT_WIDTH for integer types + if (qIsInteger(fieldInfo->type)) { + fieldInfo->length = MAX_BIGINT_WIDTH; + } fieldInfo->type = MYSQL_TYPE_STRING; } bind = &inBinds[i]; diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/qsqlquery/tst_qsqlquery.cpp index 41b9734..5339132 100644 --- a/tests/auto/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp @@ -205,6 +205,13 @@ private slots: void QTBUG_6618(); void QTBUG_6852_data() { generic_data("QMYSQL"); } void QTBUG_6852(); + void QTBUG_5765_data() { generic_data("QMYSQL"); } + void QTBUG_5765(); + +#if 0 + void benchmark_data() { generic_data(); } + void benchmark(); +#endif private: // returns all database connections @@ -309,7 +316,14 @@ void tst_QSqlQuery::dropTestTables( QSqlDatabase db ) << qTableName( "blobstest" ) << qTableName( "oraRowId" ) << qTableName( "qtest_batch" ) - << qTableName(QLatin1String("bug6421")).toUpper(); + << qTableName("bug6421").toUpper() + << qTableName("bug5765") + << qTableName("bug6852") + << qTableName( "qtest_lockedtable" ) + << qTableName( "Planet" ) + << qTableName( "task_250026" ) + << qTableName( "task_234422" ) + << qTableName("test141895"); if ( db.driverName().startsWith("QPSQL") ) tablenames << qTableName("task_233829"); @@ -320,19 +334,11 @@ void tst_QSqlQuery::dropTestTables( QSqlDatabase db ) if ( tst_Databases::isSqlServer( db ) || db.driverName().startsWith( "QOCI" ) ) tablenames << qTableName( "qtest_longstr" ); - tablenames << qTableName( "qtest_lockedtable" ); - - tablenames << qTableName( "Planet" ); + if (tst_Databases::isSqlServer( db )) + db.exec("DROP PROCEDURE " + qTableName("test141895_proc")); - tablenames << qTableName( "task_250026" ); - tablenames << qTableName( "task_234422" ); - - if (tst_Databases::isSqlServer( db )) { - QSqlQuery q( db ); - q.exec("DROP PROCEDURE " + qTableName("test141895_proc")); - } - - tablenames << qTableName("test141895"); + if (tst_Databases::isMySQL( db )) + db.exec("DROP PROCEDURE IF EXISTS "+qTableName("bug6852_proc")); tst_Databases::safeDropTables( db, tablenames ); @@ -2996,10 +3002,9 @@ void tst_QSqlQuery::QTBUG_6852() QSKIP( "Test requires MySQL >= 5.0", SkipSingle ); QSqlQuery q(db); - QString tableName(qTableName(QLatin1String("bug6421"))), procName(qTableName(QLatin1String("bug6421_proc"))); + QString tableName(qTableName(QLatin1String("bug6852"))), procName(qTableName(QLatin1String("bug6852_proc"))); QVERIFY_SQL(q, exec("DROP PROCEDURE IF EXISTS "+procName)); - tst_Databases::safeDropTable(db, tableName); QVERIFY_SQL(q, exec("CREATE TABLE "+tableName+"(\n" "MainKey INT NOT NULL,\n" "OtherTextCol VARCHAR(45) NOT NULL,\n" @@ -3022,6 +3027,72 @@ void tst_QSqlQuery::QTBUG_6852() QCOMPARE(q.value(1).toString(), QLatin1String("Disabled")); } +void tst_QSqlQuery::QTBUG_5765() +{ + QFETCH( QString, dbName ); + QSqlDatabase db = QSqlDatabase::database( dbName ); + CHECK_DATABASE( db ); + if ( tst_Databases::getMySqlVersion( db ).section( QChar('.'), 0, 1 ).toFloat()<4.1 ) + QSKIP( "Test requires MySQL >= 4.1", SkipSingle ); + + QSqlQuery q(db); + QString tableName(qTableName(QLatin1String("bug5765"))); + + QVERIFY_SQL(q, exec("CREATE TABLE "+tableName+"(testval TINYINT(1) DEFAULT 0)")); + q.prepare("INSERT INTO "+tableName+" SET testval = :VALUE"); + q.bindValue(":VALUE", 1); + QVERIFY_SQL(q, exec()); + q.bindValue(":VALUE", 12); + QVERIFY_SQL(q, exec()); + q.bindValue(":VALUE", 123); + QVERIFY_SQL(q, exec()); + QString sql="select testval from "+tableName; + QVERIFY_SQL(q, exec(sql)); + QVERIFY_SQL(q, next()); + QCOMPARE(q.value(0).toInt(), 1); + QVERIFY_SQL(q, next()); + QCOMPARE(q.value(0).toInt(), 12); + QVERIFY_SQL(q, next()); + QCOMPARE(q.value(0).toInt(), 123); + QVERIFY_SQL(q, prepare(sql)); + QVERIFY_SQL(q, exec()); + QVERIFY_SQL(q, next()); + QCOMPARE(q.value(0).toInt(), 1); + QVERIFY_SQL(q, next()); + QCOMPARE(q.value(0).toInt(), 12); + QVERIFY_SQL(q, next()); + QCOMPARE(q.value(0).toInt(), 123); +} + +#if 0 +void tst_QSqlQuery::benchmark() +{ + QFETCH( QString, dbName ); + QSqlDatabase db = QSqlDatabase::database( dbName ); + CHECK_DATABASE( db ); + if ( tst_Databases::getMySqlVersion( db ).section( QChar('.'), 0, 0 ).toInt()<5 ) + QSKIP( "Test requires MySQL >= 5.0", SkipSingle ); + + QSqlQuery q(db); + QString tableName(qTableName(QLatin1String("benchmark"))); + + tst_Databases::safeDropTable( db, tableName ); + + QVERIFY_SQL(q, exec("CREATE TABLE "+tableName+"(\n" + "MainKey INT NOT NULL,\n" + "OtherTextCol VARCHAR(45) NOT NULL,\n" + "PRIMARY KEY(`MainKey`))")); + + int i=1; + + QBENCHMARK { + QVERIFY_SQL(q, exec("INSERT INTO "+tableName+" VALUES("+QString::number(i)+", \"Value"+QString::number(i)+"\")")); + i++; + } + + tst_Databases::safeDropTable( db, tableName ); +} +#endif QTEST_MAIN( tst_QSqlQuery ) #include "tst_qsqlquery.moc" -- cgit v0.12 From 92c42901344ae654d8bc102e566d47d735cb3954 Mon Sep 17 00:00:00 2001 From: Janne Anttila Date: Wed, 3 Mar 2010 16:15:22 +0200 Subject: Tab to space fixes to qdilaog.cpp Reviewed-By: TrustMe --- src/gui/dialogs/qdialog.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/dialogs/qdialog.cpp b/src/gui/dialogs/qdialog.cpp index 9ff2ad8..d86d63e 100644 --- a/src/gui/dialogs/qdialog.cpp +++ b/src/gui/dialogs/qdialog.cpp @@ -807,11 +807,11 @@ void QDialog::setVisible(bool visible) void QDialog::showEvent(QShowEvent *event) { if (!event->spontaneous() && !testAttribute(Qt::WA_Moved)) { - Qt::WindowStates state = windowState(); + Qt::WindowStates state = windowState(); adjustPosition(parentWidget()); setAttribute(Qt::WA_Moved, false); // not really an explicit position - if (state != windowState()) - setWindowState(state); + if (state != windowState()) + setWindowState(state); } } -- cgit v0.12 From dcd17fa7b77cb6adfb8b21ea90c113915cab9bd5 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 5 Mar 2010 18:04:37 +1000 Subject: Add support for QtScript connect/disconnect syntax in QML This support was accidentally removed as a consequence of 4a665ff5da05860f5eb46e3982ef3d8163a6cf59. QTBUG-8001 --- .../qml/qdeclarativeobjectscriptclass.cpp | 81 +++++++++++ .../qml/qdeclarativeobjectscriptclass_p.h | 12 ++ .../data/scriptConnect.1.qml | 16 ++ .../data/scriptConnect.2.qml | 22 +++ .../data/scriptConnect.3.qml | 15 ++ .../data/scriptConnect.4.qml | 12 ++ .../data/scriptConnect.5.qml | 11 ++ .../data/scriptConnect.6.qml | 20 +++ .../data/scriptDisconnect.1.qml | 18 +++ .../data/scriptDisconnect.2.qml | 19 +++ .../data/scriptDisconnect.3.qml | 19 +++ .../data/scriptDisconnect.4.qml | 20 +++ .../tst_qdeclarativeecmascript.cpp | 162 +++++++++++++++++++++ 13 files changed, 427 insertions(+) create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.1.qml create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.2.qml create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.3.qml create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.4.qml create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.5.qml create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.6.qml create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.1.qml create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.2.qml create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.3.qml create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.4.qml diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp index 2e4ffa7..e6f6e5f 100644 --- a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp +++ b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp @@ -442,6 +442,13 @@ QDeclarativeObjectMethodScriptClass::QDeclarativeObjectMethodScriptClass(QDeclar engine(bindEngine) { setSupportsCall(true); + + QScriptEngine *scriptEngine = QDeclarativeEnginePrivate::getScriptEngine(engine); + + m_connect = scriptEngine->newFunction(connect); + m_connectId = createPersistentIdentifier(QLatin1String("connect")); + m_disconnect = scriptEngine->newFunction(disconnect); + m_disconnectId = createPersistentIdentifier(QLatin1String("disconnect")); } QDeclarativeObjectMethodScriptClass::~QDeclarativeObjectMethodScriptClass() @@ -455,6 +462,80 @@ QScriptValue QDeclarativeObjectMethodScriptClass::newMethod(QObject *object, con return newObject(scriptEngine, this, new MethodData(object, *method)); } +QScriptValue QDeclarativeObjectMethodScriptClass::connect(QScriptContext *context, QScriptEngine *engine) +{ + QDeclarativeEnginePrivate *p = QDeclarativeEnginePrivate::get(engine); + + QScriptValue that = context->thisObject(); + if (&p->objectClass->methods != scriptClass(that)) + return engine->undefinedValue(); + + MethodData *data = (MethodData *)object(that); + + if (!data->object || context->argumentCount() == 0) + return engine->undefinedValue(); + + QByteArray signal("2"); + signal.append(data->object->metaObject()->method(data->data.coreIndex).signature()); + + if (context->argumentCount() == 1) { + qScriptConnect(data->object, signal.constData(), QScriptValue(), context->argument(0)); + } else { + qScriptConnect(data->object, signal.constData(), context->argument(0), context->argument(1)); + } + + return engine->undefinedValue(); +} + +QScriptValue QDeclarativeObjectMethodScriptClass::disconnect(QScriptContext *context, QScriptEngine *engine) +{ + QDeclarativeEnginePrivate *p = QDeclarativeEnginePrivate::get(engine); + + QScriptValue that = context->thisObject(); + if (&p->objectClass->methods != scriptClass(that)) + return engine->undefinedValue(); + + MethodData *data = (MethodData *)object(that); + + if (!data->object || context->argumentCount() == 0) + return engine->undefinedValue(); + + QByteArray signal("2"); + signal.append(data->object->metaObject()->method(data->data.coreIndex).signature()); + + if (context->argumentCount() == 1) { + qScriptDisconnect(data->object, signal.constData(), QScriptValue(), context->argument(0)); + } else { + qScriptDisconnect(data->object, signal.constData(), context->argument(0), context->argument(1)); + } + + return engine->undefinedValue(); +} + +QScriptClass::QueryFlags +QDeclarativeObjectMethodScriptClass::queryProperty(Object *, const Identifier &name, + QScriptClass::QueryFlags flags) +{ + if (name == m_connectId.identifier || name == m_disconnectId.identifier) + return QScriptClass::HandlesReadAccess; + else + return 0; + +} + +QDeclarativeObjectScriptClass::ScriptValue +QDeclarativeObjectMethodScriptClass::property(Object *, const Identifier &name) +{ + QScriptEngine *scriptEngine = QDeclarativeEnginePrivate::getScriptEngine(engine); + + if (name == m_connectId.identifier) + return Value(scriptEngine, m_connect); + else if (name == m_disconnectId.identifier) + return Value(scriptEngine, m_disconnect); + else + return Value(); +} + namespace { struct MetaCallArgument { inline MetaCallArgument(); diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass_p.h b/src/declarative/qml/qdeclarativeobjectscriptclass_p.h index 8023756..04e760f 100644 --- a/src/declarative/qml/qdeclarativeobjectscriptclass_p.h +++ b/src/declarative/qml/qdeclarativeobjectscriptclass_p.h @@ -73,10 +73,21 @@ public: ~QDeclarativeObjectMethodScriptClass(); QScriptValue newMethod(QObject *, const QDeclarativePropertyCache::Data *); + protected: virtual Value call(Object *, QScriptContext *); + virtual QScriptClass::QueryFlags queryProperty(Object *, const Identifier &, QScriptClass::QueryFlags flags); + virtual Value property(Object *, const Identifier &); private: + PersistentIdentifier m_connectId; + PersistentIdentifier m_disconnectId; + QScriptValue m_connect; + QScriptValue m_disconnect; + + static QScriptValue connect(QScriptContext *context, QScriptEngine *engine); + static QScriptValue disconnect(QScriptContext *context, QScriptEngine *engine); + QDeclarativeEngine *engine; }; #endif @@ -119,6 +130,7 @@ protected: private: #if (QT_VERSION > QT_VERSION_CHECK(4, 6, 2)) || defined(QT_HAVE_QSCRIPTDECLARATIVECLASS_VALUE) + friend class QDeclarativeObjectMethodScriptClass; QDeclarativeObjectMethodScriptClass methods; #endif diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.1.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.1.qml new file mode 100644 index 0000000..2bdd706 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.1.qml @@ -0,0 +1,16 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property bool test: false + + id: root + + Script { + function testFunction() { + test = true; + } + } + + Component.onCompleted: root.argumentSignal.connect(testFunction); +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.2.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.2.qml new file mode 100644 index 0000000..fa90918 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.2.qml @@ -0,0 +1,22 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property bool test: false + + id: root + + Script { + function testFunction() { + if (this.b == 12) + test = true; + } + } + + Component.onCompleted: { + var a = new Object; + a.b = 12; + root.argumentSignal.connect(a, testFunction); + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.3.qml new file mode 100644 index 0000000..0d8e6ef --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.3.qml @@ -0,0 +1,15 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property bool test: false + + id: root + + function testFunction() { + test = true; + } + + Component.onCompleted: root.argumentSignal.connect(testFunction); +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.4.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.4.qml new file mode 100644 index 0000000..3e1ff1b --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.4.qml @@ -0,0 +1,12 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property bool test: false + + id: root + + Component.onCompleted: root.argumentSignal.connect(methodNoArgs); +} + + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.5.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.5.qml new file mode 100644 index 0000000..3ad5cbc --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.5.qml @@ -0,0 +1,11 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property bool test: false + + id: root + + Component.onCompleted: root.argumentSignal.connect(root, methodNoArgs); +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.6.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.6.qml new file mode 100644 index 0000000..8c35db1 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.6.qml @@ -0,0 +1,20 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property int test: 0 + + id: root + + Script { + function testFunction() { + test++; + } + } + + Component.onCompleted: { + root.argumentSignal.connect(testFunction); + root.argumentSignal.connect(testFunction); + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.1.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.1.qml new file mode 100644 index 0000000..45c4f73 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.1.qml @@ -0,0 +1,18 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property int test: 0 + + id: root + + Script { + function testFunction() { + test++; + } + } + + Component.onCompleted: root.argumentSignal.connect(testFunction); + + onBasicSignal: root.argumentSignal.disconnect(testFunction); +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.2.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.2.qml new file mode 100644 index 0000000..a47fe74 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.2.qml @@ -0,0 +1,19 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property int test: 0 + + id: root + + Script { + function testFunction() { + test++; + } + } + + Component.onCompleted: root.argumentSignal.connect(root, testFunction); + + onBasicSignal: root.argumentSignal.disconnect(root, testFunction); +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.3.qml new file mode 100644 index 0000000..c95ffbf --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.3.qml @@ -0,0 +1,19 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property int test: 0 + + id: root + + Script { + function testFunction() { + test++; + } + } + + Component.onCompleted: root.argumentSignal.connect(root, testFunction); + + onBasicSignal: root.argumentSignal.disconnect(testFunction); +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.4.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.4.qml new file mode 100644 index 0000000..342f24a --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.4.qml @@ -0,0 +1,20 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property int test: 0 + + id: root + + Script { + function testFunction() { + test++; + } + function otherFunction() { + } + } + + Component.onCompleted: root.argumentSignal.connect(testFunction); + + onBasicSignal: root.argumentSignal.disconnect(otherFunction); +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index b5649cb..4838288 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -124,6 +124,8 @@ private slots: void deletedObject(); void scriptScope(); void attachedPropertyScope(); + void scriptConnect(); + void scriptDisconnect(); void bug1(); @@ -1731,6 +1733,166 @@ void tst_qdeclarativeecmascript::attachedPropertyScope() delete object; } +void tst_qdeclarativeecmascript::scriptConnect() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptConnect.1.qml")); + + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), false); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptConnect.2.qml")); + + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), false); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptConnect.3.qml")); + + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), false); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptConnect.4.qml")); + + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->methodCalled(), false); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->methodCalled(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptConnect.5.qml")); + + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->methodCalled(), false); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->methodCalled(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptConnect.6.qml")); + + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toInt(), 0); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + + delete object; + } +} + +void tst_qdeclarativeecmascript::scriptDisconnect() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptDisconnect.1.qml")); + + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toInt(), 0); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 1); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + emit object->basicSignal(); + QCOMPARE(object->property("test").toInt(), 2); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptDisconnect.2.qml")); + + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toInt(), 0); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 1); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + emit object->basicSignal(); + QCOMPARE(object->property("test").toInt(), 2); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptDisconnect.3.qml")); + + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toInt(), 0); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 1); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + emit object->basicSignal(); + QCOMPARE(object->property("test").toInt(), 2); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 3); + + delete object; + } + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptDisconnect.4.qml")); + + MyQmlObject *object = qobject_cast(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toInt(), 0); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 1); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + emit object->basicSignal(); + QCOMPARE(object->property("test").toInt(), 2); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 3); + + delete object; + } + +} + QTEST_MAIN(tst_qdeclarativeecmascript) #include "tst_qdeclarativeecmascript.moc" -- cgit v0.12 From aff7468baf9a27fad9fa8a180b90d2a0db8b8c10 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 5 Mar 2010 09:09:56 +0100 Subject: Updated WebKit from /home/shausman/src/webkit/trunk to qtwebkit/qtwebkit-4.6 ( f3110d2f94c825477afac054ed448e45d47f5670 ) Changes in WebKit/qt since the last update: ++ b/WebKit/qt/ChangeLog 2010-03-04 Simon Hausmann Reviewed by Kenneth Rohde Christiansen. [Qt] qwebelement.h does not include QtCore headers correctly https://bugs.webkit.org/show_bug.cgi?id=35748 The header files of QtCore must be included as QtCore/foo.h. See also http://bugreports.qt.nokia.com/browse/QTBUG-8661 * Api/qwebelement.h: --- src/3rdparty/webkit/VERSION | 2 +- src/3rdparty/webkit/WebCore/WebCore.pro | 2 +- src/3rdparty/webkit/WebCore/platform/qt/PopupMenuQt.cpp | 2 +- src/3rdparty/webkit/WebKit/qt/Api/qwebelement.h | 10 +++++----- src/3rdparty/webkit/WebKit/qt/ChangeLog | 13 +++++++++++++ 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index cc0e04f..6a2e75f 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -8,4 +8,4 @@ The commit imported was from the and has the sha1 checksum - ffae5e11181a3961193fa21ea405851cad714d4b + f3110d2f94c825477afac054ed448e45d47f5670 diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro index c9b622a..5654a18 100644 --- a/src/3rdparty/webkit/WebCore/WebCore.pro +++ b/src/3rdparty/webkit/WebCore/WebCore.pro @@ -26,7 +26,7 @@ symbian: { # 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. - QMAKE_LFLAGS.ARMCC += --rw-base 0xE00000 + MMP_RULES += "LINKEROPTION armcc --rw-base 0xE00000" } include($$PWD/../WebKit.pri) diff --git a/src/3rdparty/webkit/WebCore/platform/qt/PopupMenuQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/PopupMenuQt.cpp index 714cac9..d13c9a9 100644 --- a/src/3rdparty/webkit/WebCore/platform/qt/PopupMenuQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/qt/PopupMenuQt.cpp @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.h b/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.h index 3833070..13c341c 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.h +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.h @@ -20,11 +20,11 @@ #ifndef QWEBELEMENT_H #define QWEBELEMENT_H -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include "qwebkitglobal.h" namespace WebCore { diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog index 1026ac5..e54c176 100644 --- a/src/3rdparty/webkit/WebKit/qt/ChangeLog +++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog @@ -1,3 +1,16 @@ +2010-03-04 Simon Hausmann + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] qwebelement.h does not include QtCore headers correctly + https://bugs.webkit.org/show_bug.cgi?id=35748 + + The header files of QtCore must be included as QtCore/foo.h. + + See also http://bugreports.qt.nokia.com/browse/QTBUG-8661 + + * Api/qwebelement.h: + 2010-01-28 Kenneth Rohde Christiansen Reviewed by Simon Hausmann. -- cgit v0.12 From 0f89d7ef7b5e961cfc6ee7960ad6bf07eff71691 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Thu, 4 Mar 2010 17:00:46 +0100 Subject: Wrong dirty region after row selection in right-to-left mode in QTableView When computing the region from the selection range, we didn't take care of the actual position of the cells, which is reverted when in RtoL mode. Also gets fixed a 2-pixel error introduced in commit 718905c097a7f3bbf9805a2561cd855a0b2d8f59, and that was responsible for (potentialy) painting more cells than needed. Auto-test included. Reviewed-by: Olivier Task-number: QTBUG-7774 --- src/gui/itemviews/qtableview.cpp | 14 +++++++++++--- tests/auto/qtableview/tst_qtableview.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/gui/itemviews/qtableview.cpp b/src/gui/itemviews/qtableview.cpp index 3111896..cf1b542 100644 --- a/src/gui/itemviews/qtableview.cpp +++ b/src/gui/itemviews/qtableview.cpp @@ -1908,6 +1908,7 @@ QRegion QTableView::visualRegionForSelection(const QItemSelection &selection) co width, rowHeight(r))); } } else { // nothing moved + const int gridAdjust = showGrid() ? 1 : 0; for (int i = 0; i < selection.count(); ++i) { QItemSelectionRange range = selection.at(i); if (range.parent() != d->root || !range.isValid()) @@ -1916,9 +1917,16 @@ QRegion QTableView::visualRegionForSelection(const QItemSelection &selection) co const int rtop = rowViewportPosition(range.top()); const int rbottom = rowViewportPosition(range.bottom()) + rowHeight(range.bottom()); - const int rleft = columnViewportPosition(range.left()); - const int rright = columnViewportPosition(range.right()) + columnWidth(range.right()); - selectionRegion += QRect(QPoint(rleft, rtop), QPoint(rright, rbottom)); + int rleft; + int rright; + if (isLeftToRight()) { + rleft = columnViewportPosition(range.left()); + rright = columnViewportPosition(range.right()) + columnWidth(range.right()); + } else { + rleft = columnViewportPosition(range.right()); + rright = columnViewportPosition(range.left()) + columnWidth(range.left()); + } + selectionRegion += QRect(QPoint(rleft, rtop), QPoint(rright - 1 - gridAdjust, rbottom - 1 - gridAdjust)); if (d->hasSpans()) { foreach (QSpanCollection::Span *s, d->spans.spansInRect(range.left(), range.top(), range.width(), range.height())) { diff --git a/tests/auto/qtableview/tst_qtableview.cpp b/tests/auto/qtableview/tst_qtableview.cpp index a5cbbd4..35fba52 100644 --- a/tests/auto/qtableview/tst_qtableview.cpp +++ b/tests/auto/qtableview/tst_qtableview.cpp @@ -200,6 +200,7 @@ private slots: void taskQTBUG_4516_clickOnRichTextLabel(); void taskQTBUG_5237_wheelEventOnHeader(); void taskQTBUG_8585_crashForNoGoodReason(); + void taskQTBUG_7774_RtoLVisualRegionForSelection(); void mouseWheel_data(); void mouseWheel(); @@ -3994,5 +3995,30 @@ void tst_QTableView::taskQTBUG_8585_crashForNoGoodReason() } +class TableView7774 : public QTableView +{ +public: + QRegion visualRegionForSelection(const QItemSelection &selection) const + { + return QTableView::visualRegionForSelection(selection); + } +}; + +void tst_QTableView::taskQTBUG_7774_RtoLVisualRegionForSelection() +{ + TableView7774 view; + QStandardItemModel model(5,5); + view.setModel(&model); + view.setLayoutDirection(Qt::RightToLeft); + view.show(); + QTest::qWaitForWindowShown(&view); + + QItemSelectionRange range(model.index(2, 0), model.index(2, model.columnCount() - 1)); + QItemSelection selection; + selection << range; + QRegion region = view.visualRegionForSelection(selection); + QCOMPARE(region.rects().at(0), view.visualRect(range.topLeft()) | view.visualRect(range.bottomRight())); +} + QTEST_MAIN(tst_QTableView) #include "tst_qtableview.moc" -- cgit v0.12 From 68eea46d309ff82e45c243a7689013f36454c85b Mon Sep 17 00:00:00 2001 From: Sami Merila Date: Fri, 5 Mar 2010 11:05:54 +0200 Subject: QMessageBox is not stretched to screen width if the content is narrow Currently; If content of QMessageBox in S60 is less than messagebox's softlimit, messagebox is not stretched to screen width. http://bugreports.qt.nokia.com/browse/QTBUG-5539 Fix: Regardless of content width, messagebox is stretched to screen width. Task-number: QTBUG-5539 Reviewed-by: Janne Anttila --- src/gui/dialogs/qmessagebox.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp index d1b2e3f..bd2df9c 100644 --- a/src/gui/dialogs/qmessagebox.cpp +++ b/src/gui/dialogs/qmessagebox.cpp @@ -314,6 +314,7 @@ void QMessageBoxPrivate::updateSize() } width = hardLimit; } + } #ifdef Q_WS_S60 // in S60 portait messageBoxes should always occupy maximum width if (QApplication::desktop()->size().height() > QApplication::desktop()->size().width()){ @@ -323,7 +324,6 @@ void QMessageBoxPrivate::updateSize() width = qMin(QApplication::desktop()->size().height(), hardLimit); } #endif - } if (informativeLabel) { label->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); -- cgit v0.12 From a0d7a5cf999fe3adac2b2166085194cf93a4a424 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 5 Mar 2010 11:10:57 +0200 Subject: Fixed crash at application exit when QProcess was used in Symbian QProcessManagerMediator and QProcessActive were not properly canceled in their destructors, causing crash when global static QProcessManager was deleted. Task-number: QTBUG-7735 Reviewed-by: Janne Anttila --- src/corelib/io/qprocess_symbian.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/corelib/io/qprocess_symbian.cpp b/src/corelib/io/qprocess_symbian.cpp index 75cde51..e37bdda 100644 --- a/src/corelib/io/qprocess_symbian.cpp +++ b/src/corelib/io/qprocess_symbian.cpp @@ -371,6 +371,7 @@ QProcessActive::QProcessActive() // Called from ProcessManagerThread QProcessActive::~QProcessActive() { + Cancel(); process = NULL; pproc = NULL; } @@ -477,6 +478,7 @@ QProcessManagerMediator::QProcessManagerMediator() // Called from ProcessManagerThread QProcessManagerMediator::~QProcessManagerMediator() { + Cancel(); processManagerThread.Close(); currentCommand = ENoCommand; currentObserver = NULL; -- cgit v0.12 From ab12c1c804ee40931515a0d53e5dc70db373f3bd Mon Sep 17 00:00:00 2001 From: Jani Hautakangas Date: Fri, 5 Mar 2010 11:22:12 +0200 Subject: Fix for QTBUG-8762 QApplication::setGraphicsSystem("raster") crashes. QRasterGraphicsSystem tries to create QRasterPixmapData and QRasterWindowSurface if QApplication::setGraphicsSystem("raster") is used. On Symbian it should create QS60PixmapData and QS60WindowSurface. Task-number: QTBUG-8762 Reviewed-by: Jason Barron --- src/gui/painting/qgraphicssystem_raster.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gui/painting/qgraphicssystem_raster.cpp b/src/gui/painting/qgraphicssystem_raster.cpp index f90aea0..909508e 100644 --- a/src/gui/painting/qgraphicssystem_raster.cpp +++ b/src/gui/painting/qgraphicssystem_raster.cpp @@ -41,19 +41,32 @@ #include "qgraphicssystem_raster_p.h" +#ifdef Q_OS_SYMBIAN +#include "private/qpixmap_s60_p.h" +#include "private/qwindowsurface_s60_p.h" +#else #include "private/qpixmap_raster_p.h" #include "private/qwindowsurface_raster_p.h" +#endif QT_BEGIN_NAMESPACE QPixmapData *QRasterGraphicsSystem::createPixmapData(QPixmapData::PixelType type) const { +#ifdef Q_OS_SYMBIAN + return new QS60PixmapData(type); +#else return new QRasterPixmapData(type); +#endif } QWindowSurface *QRasterGraphicsSystem::createWindowSurface(QWidget *widget) const { +#ifdef Q_OS_SYMBIAN + return new QS60WindowSurface(widget); +#else return new QRasterWindowSurface(widget); +#endif } QT_END_NAMESPACE -- cgit v0.12 From 4152244217ab7f34e67f7800cb796d8923061f49 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Fri, 5 Mar 2010 10:43:50 +0100 Subject: Fixa few warnings on mingw --- examples/multimedia/audioinput/audioinput.cpp | 6 ++++++ src/3rdparty/phonon/ds9/backendnode.cpp | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/examples/multimedia/audioinput/audioinput.cpp b/examples/multimedia/audioinput/audioinput.cpp index b01a396..af72385 100644 --- a/examples/multimedia/audioinput/audioinput.cpp +++ b/examples/multimedia/audioinput/audioinput.cpp @@ -76,6 +76,8 @@ AudioInfo::AudioInfo(const QAudioFormat &format, QObject *parent) case QAudioFormat::SignedInt: m_maxAmplitude = 127; break; + default: + break; } break; case 16: @@ -86,8 +88,12 @@ AudioInfo::AudioInfo(const QAudioFormat &format, QObject *parent) case QAudioFormat::SignedInt: m_maxAmplitude = 32767; break; + default: + break; } break; + default: + break; } } diff --git a/src/3rdparty/phonon/ds9/backendnode.cpp b/src/3rdparty/phonon/ds9/backendnode.cpp index 3afcafa..737ab7b 100644 --- a/src/3rdparty/phonon/ds9/backendnode.cpp +++ b/src/3rdparty/phonon/ds9/backendnode.cpp @@ -67,7 +67,7 @@ namespace Phonon if (info.pGraph) { HRESULT hr = info.pGraph->RemoveFilter(filter); - if (hr == VFW_E_NOT_STOPPED && m_mediaObject) { + if (FAILED(hr) && m_mediaObject) { m_mediaObject->ensureStopped(); hr = info.pGraph->RemoveFilter(filter); -- cgit v0.12 From d80b0e347bb01d039c0104e857674bb2cf0adc0f Mon Sep 17 00:00:00 2001 From: Sami Merila Date: Fri, 5 Mar 2010 11:48:35 +0200 Subject: QS60Style ignores widget palette when drawing highlighted widget text Currently: QS60Style does not polish widgets with highlight colors. Instead it fetches color information from native theme side and uses that color for drawing the text. http://bugreports.qt.nokia.com/browse/QTBUG-8704 Fix: All widgets with highlighted text (lists, tables, headers, tabs, radiobuttons and checkboxes) polish their palette. This palette value is then used in the drawing code. Earlier it was not possible for developers to define their own highlight text color, now it is possible. Task-number: QTBUG-8704 Reviewed-by: Janne Anttila --- src/gui/styles/qs60style.cpp | 48 ++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp index 565cc2c..bf5a62e 100644 --- a/src/gui/styles/qs60style.cpp +++ b/src/gui/styles/qs60style.cpp @@ -759,13 +759,29 @@ void QS60StylePrivate::setThemePaletteHash(QPalette *palette) const QApplication::setPalette(widgetPalette, "QMenuBar"); widgetPalette = *palette; + widgetPalette.setColor(QPalette::Text, + s60Color(QS60StyleEnums::CL_QsnTextColors, 22, 0)); + widgetPalette.setColor(QPalette::HighlightedText, + s60Color(QS60StyleEnums::CL_QsnTextColors, 11, 0)); + QApplication::setPalette(widgetPalette, "QMenu"); + widgetPalette = *palette; + widgetPalette.setColor(QPalette::WindowText, s60Color(QS60StyleEnums::CL_QsnTextColors, 4, 0)); + widgetPalette.setColor(QPalette::HighlightedText, + s60Color(QS60StyleEnums::CL_QsnTextColors, 3, 0)); QApplication::setPalette(widgetPalette, "QTabBar"); widgetPalette = *palette; + widgetPalette.setColor(QPalette::HighlightedText, + s60Color(QS60StyleEnums::CL_QsnTextColors, 10, 0)); + QApplication::setPalette(widgetPalette, "QListView"); + widgetPalette = *palette; + widgetPalette.setColor(QPalette::Text, s60Color(QS60StyleEnums::CL_QsnTextColors, 22, 0)); + widgetPalette.setColor(QPalette::HighlightedText, + s60Color(QS60StyleEnums::CL_QsnTextColors, 11, 0)); QApplication::setPalette(widgetPalette, "QTableView"); widgetPalette = *palette; @@ -789,6 +805,8 @@ void QS60StylePrivate::setThemePaletteHash(QPalette *palette) const widgetPalette = *palette; widgetPalette.setColor(QPalette::WindowText, s60Color(QS60StyleEnums::CL_QsnTextColors, 7, 0)); + widgetPalette.setColor(QPalette::HighlightedText, + s60Color(QS60StyleEnums::CL_QsnTextColors, 11, 0)); QApplication::setPalette(widgetPalette, "QRadioButton"); QApplication::setPalette(widgetPalette, "QCheckBox"); widgetPalette = *palette; @@ -1241,6 +1259,8 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option, case CE_RadioButton: if (const QStyleOptionButton *btn = qstyleoption_cast(option)) { bool isRadio = (element == CE_RadioButton); + QStyleOptionButton subopt = *btn; + // Highlight needs to be drawn first, as it goes "underneath" the text and indicator. if (btn->state & State_HasFocus) { QStyleOptionFocusRect fropt; @@ -1248,8 +1268,10 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option, fropt.rect = subElementRect(isRadio ? SE_RadioButtonFocusRect : SE_CheckBoxFocusRect, btn, widget); drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget); + + subopt.palette.setColor(QPalette::Active, QPalette::WindowText, + subopt.palette.highlightedText().color()); } - QStyleOptionButton subopt = *btn; subopt.rect = subElementRect(isRadio ? SE_RadioButtonIndicator : SE_CheckBoxIndicator, btn, widget); @@ -1408,7 +1430,7 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option, } else { QCommonStyle::drawPrimitive(PE_PanelItemViewItem, &voptAdj, painter, widget);} // draw the focus rect - if (isSelected | hasFocus) { + if (isSelected || hasFocus ) { QRect highlightRect = option->rect.adjusted(1,1,-1,-1); QAbstractItemView::SelectionBehavior selectionBehavior = itemView ? itemView->selectionBehavior() : QAbstractItemView::SelectItems; @@ -1480,15 +1502,10 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option, // draw the text if (!voptAdj.text.isEmpty()) { - if (isSelected) { - if (qobject_cast(widget)) - voptAdj.palette.setColor( - QPalette::Text, QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 11, 0)); - else - voptAdj.palette.setColor( - QPalette::Text, QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 10, 0)); - } - painter->setPen(voptAdj.palette.text().color()); + if (isSelected || hasFocus ) + painter->setPen(voptAdj.palette.highlightedText().color()); + else + painter->setPen(voptAdj.palette.text().color()); d->viewItemDrawText(painter, &voptAdj, textRect); } painter->restore(); @@ -1590,7 +1607,7 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option, const bool selected = optionTab.state & State_Selected; if (selected) optionTab.palette.setColor(QPalette::Active, QPalette::WindowText, - QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 3, option)); + optionTab.palette.highlightedText().color()); const bool verticalTabs = optionTab.shape == QTabBar::RoundedEast || optionTab.shape == QTabBar::RoundedWest @@ -1723,7 +1740,8 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option, if (!styleHint(SH_UnderlineShortcut, menuItem, widget)) text_flags |= Qt::TextHideMnemonic; - if ((option->state & State_Selected) && (option->state & State_Enabled)) + const bool selected = (option->state & State_Selected) && (option->state & State_Enabled); + if (selected) QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_ListHighlight, painter, option->rect, flags); QRect iconRect = subElementRect(SE_ItemViewItemDecoration, &optionMenuItem, widget); @@ -1793,6 +1811,10 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option, painter->save(); painter->setOpacity(0.5); } + if (selected) + optionMenuItem.palette.setColor( + QPalette::Active, QPalette::Text, optionMenuItem.palette.highlightedText().color()); + QCommonStyle::drawItemText(painter, textRect, text_flags, optionMenuItem.palette, enabled, optionMenuItem.text, QPalette::Text); -- cgit v0.12 From 512593cb8db6242eda631b8c71d22e2d154abc98 Mon Sep 17 00:00:00 2001 From: aavit Date: Fri, 5 Mar 2010 11:00:49 +0100 Subject: Fixed failure to store certain image formats as jpeg In contrast to other image format handlers, the jpeg handler would not convert a QImage of an "unusual" format to a format it could handle when asked to write it. Now it does. Task-number: QTBUG-7780 Reviewed-by: Trond --- src/plugins/imageformats/jpeg/qjpeghandler.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/plugins/imageformats/jpeg/qjpeghandler.cpp b/src/plugins/imageformats/jpeg/qjpeghandler.cpp index 3555b21..6eed824 100644 --- a/src/plugins/imageformats/jpeg/qjpeghandler.cpp +++ b/src/plugins/imageformats/jpeg/qjpeghandler.cpp @@ -562,11 +562,29 @@ inline my_jpeg_destination_mgr::my_jpeg_destination_mgr(QIODevice *device) free_in_buffer = max_buf; } +static bool can_write_format(QImage::Format fmt) +{ + switch (fmt) { + case QImage::Format_Mono: + case QImage::Format_MonoLSB: + case QImage::Format_Indexed8: + case QImage::Format_RGB888: + case QImage::Format_RGB32: + case QImage::Format_ARGB32: + case QImage::Format_ARGB32_Premultiplied: + return true; + break; + default: + break; + } + return false; +} static bool write_jpeg_image(const QImage &sourceImage, QIODevice *device, int sourceQuality) { bool success = false; - const QImage image = sourceImage; + const QImage image = can_write_format(sourceImage.format()) ? + sourceImage : sourceImage.convertToFormat(QImage::Format_RGB888); const QVector cmap = image.colorTable(); struct jpeg_compress_struct cinfo; -- cgit v0.12 From 5de63109f548eee20df1fcf8b705b3471b005238 Mon Sep 17 00:00:00 2001 From: mae Date: Fri, 5 Mar 2010 11:53:07 +0100 Subject: optimize dynamic call-by-name away Reviewed-by: Roberto Raggi --- src/gui/graphicsview/qgraphicsscene.cpp | 20 ++++++++++++-------- src/gui/graphicsview/qgraphicsscene_p.h | 4 +++- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index 6bc02cc..f3de71e 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -228,6 +228,7 @@ #include #include #include +#include #include #include #include @@ -277,8 +278,6 @@ static void _q_hoverFromMouseEvent(QGraphicsSceneHoverEvent *hover, const QGraph hover->setAccepted(mouseEvent->isAccepted()); } -int QGraphicsScenePrivate::changedSignalIndex; - /*! \internal */ @@ -329,9 +328,10 @@ void QGraphicsScenePrivate::init() index = new QGraphicsSceneBspTreeIndex(q); // Keep this index so we can check for connected slots later on. - if (!changedSignalIndex) { - changedSignalIndex = signalIndex("changed(QList)"); - } + changedSignalIndex = signalIndex("changed(QList)"); + processDirtyItemsIndex = q->metaObject()->indexOfSlot("_q_processDirtyItems()"); + polishItemsIndex = q->metaObject()->indexOfSlot("_q_polishItems()"); + qApp->d_func()->scene_list.append(q); q->update(); } @@ -2537,8 +2537,10 @@ void QGraphicsScene::addItem(QGraphicsItem *item) return; } - if (d->unpolishedItems.isEmpty()) - QMetaObject::invokeMethod(this, "_q_polishItems", Qt::QueuedConnection); + if (d->unpolishedItems.isEmpty()) { + QMetaMethod method = metaObject()->method(d->polishItemsIndex); + method.invoke(this, Qt::QueuedConnection); + } d->unpolishedItems.append(item); item->d_ptr->pendingPolish = true; @@ -4892,7 +4894,9 @@ void QGraphicsScenePrivate::markDirty(QGraphicsItem *item, const QRectF &rect, b return; if (!processDirtyItemsEmitted) { - QMetaObject::invokeMethod(q_ptr, "_q_processDirtyItems", Qt::QueuedConnection); + QMetaMethod method = q_ptr->metaObject()->method(processDirtyItemsIndex); + method.invoke(q_ptr, Qt::QueuedConnection); +// QMetaObject::invokeMethod(q_ptr, "_q_processDirtyItems", Qt::QueuedConnection); processDirtyItemsEmitted = true; } diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h index ca8b829..11e250e 100644 --- a/src/gui/graphicsview/qgraphicsscene_p.h +++ b/src/gui/graphicsview/qgraphicsscene_p.h @@ -87,7 +87,9 @@ public: static QGraphicsScenePrivate *get(QGraphicsScene *q); - static int changedSignalIndex; + int changedSignalIndex; + int processDirtyItemsIndex; + int polishItemsIndex; QGraphicsScene::ItemIndexMethod indexMethod; QGraphicsSceneIndex *index; -- cgit v0.12 From 3fdad84b40b62979844c2d37d16093a0b67222df Mon Sep 17 00:00:00 2001 From: Carlos Manuel Duclos Vergara Date: Fri, 5 Mar 2010 11:53:39 +0100 Subject: QPrintPreviewDialog number of pages is partially blocked from view in OSX The problem here is caused by the FormLayout. This patch queries the widget for its sizeHint and then forces it to resize to that size. Once that is done, we add the widget to the layout. Code is #ifdef protected so other platforms are not affected by it. Task-number: QTBUG-7760 Reviewed-by: Trond --- src/gui/dialogs/qprintpreviewdialog.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gui/dialogs/qprintpreviewdialog.cpp b/src/gui/dialogs/qprintpreviewdialog.cpp index 6723b53..f21343e 100644 --- a/src/gui/dialogs/qprintpreviewdialog.cpp +++ b/src/gui/dialogs/qprintpreviewdialog.cpp @@ -273,7 +273,20 @@ void QPrintPreviewDialogPrivate::init(QPrinter *_printer) QWidget *pageEdit = new QWidget(toolbar); QVBoxLayout *vboxLayout = new QVBoxLayout; vboxLayout->setContentsMargins(0, 0, 0, 0); +#ifdef Q_WS_MAC + // We query the widgets about their size and then we fix the size. + // This should do the trick for the laying out part... + QSize pageNumEditSize, pageNumLabelSize; + pageNumEditSize = pageNumEdit->minimumSizeHint(); + pageNumLabelSize = pageNumLabel->minimumSizeHint(); + pageNumEdit->resize(pageNumEditSize); + pageNumLabel->resize(pageNumLabelSize); +#endif QFormLayout *formLayout = new QFormLayout; +#ifdef Q_WS_MAC + // We have to change the growth policy in Mac. + formLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); +#endif formLayout->setWidget(0, QFormLayout::LabelRole, pageNumEdit); formLayout->setWidget(0, QFormLayout::FieldRole, pageNumLabel); vboxLayout->addLayout(formLayout); -- cgit v0.12 From fd7872eb4e7a721ec5fc734a29cecd27f778842a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Thu, 4 Mar 2010 09:12:31 +0100 Subject: Doc: fix spelling errors. --- doc/src/development/developing-on-mac.qdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/development/developing-on-mac.qdoc b/doc/src/development/developing-on-mac.qdoc index 20eefb7..1eb829e 100644 --- a/doc/src/development/developing-on-mac.qdoc +++ b/doc/src/development/developing-on-mac.qdoc @@ -72,10 +72,10 @@ Carbon Qt can be developed on and deployed to 10.4, but there is no 64-bit support. - With Qt 4.7 we now reccommend using the Cocoa version of Qt for developement, + With Qt 4.7 we now recommend using the Cocoa version of Qt for development, unless you want to target the 10.4 platform. Qt now uses Cocoa by default, both for the binary package and when configuring from source. Download the - Carbon binarypackages or configure with "-carbon" to use that version. + Carbon binary packages or configure with "-carbon" to use that version. There are two versions of the Qt binary, one with x86 and x86_64 Cocoa and another with x86 and ppc Carbon. If you want a different setup -- cgit v0.12 From 12b6987031be9faee3886d7623888feb4e1762af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Fri, 5 Mar 2010 12:09:06 +0100 Subject: Update the Qt focus widget on responder change. Set focus widget when the view becomes the first responder. This matches resignFirstResponder, where we set the focus widget to 0. This fixes the QCombobox::autoCompletionCaseSensitivity test failure introduced in the Mac alien widgets change. Reviewed-by: Richard Moe Gustavsen --- src/gui/kernel/qcocoaview_mac.mm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm index f7cb21f..6261429 100644 --- a/src/gui/kernel/qcocoaview_mac.mm +++ b/src/gui/kernel/qcocoaview_mac.mm @@ -1047,6 +1047,13 @@ static int qCocoaViewCount = 0; return YES; } +- (BOOL)becomeFirstResponder +{ + if (QApplication::focusWidget() == 0) + QApplicationPrivate::setFocusWidget([self QT_MANGLE_NAMESPACE(qt_qwidget)], Qt::OtherFocusReason); + return YES; +} + - (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal { Q_UNUSED(isLocal); -- cgit v0.12 From f4de94df2d55d0ea967bb7aea275cc5228ac045b Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Fri, 5 Mar 2010 13:08:03 +0100 Subject: doc: Fixed some QML qdoc errors. --- src/declarative/qml/qdeclarativeproperty.cpp | 82 +++++++++++++++++++--------- src/declarative/util/qdeclarativeview.cpp | 19 +++++-- 2 files changed, 70 insertions(+), 31 deletions(-) diff --git a/src/declarative/qml/qdeclarativeproperty.cpp b/src/declarative/qml/qdeclarativeproperty.cpp index 4f73b89..d223502 100644 --- a/src/declarative/qml/qdeclarativeproperty.cpp +++ b/src/declarative/qml/qdeclarativeproperty.cpp @@ -115,8 +115,10 @@ QDeclarativeProperty::QDeclarativeProperty(QObject *obj) } /*! - Creates a QDeclarativeProperty for the default property of \a obj. If there is no - default property, an invalid QDeclarativeProperty will be created. + Creates a QDeclarativeProperty for the default property of \a obj + using the \l{QDeclarativeContext} {context} \a ctxt. If there is + no default property, an invalid QDeclarativeProperty will be + created. */ QDeclarativeProperty::QDeclarativeProperty(QObject *obj, QDeclarativeContext *ctxt) : d(new QDeclarativePropertyPrivate) @@ -128,11 +130,13 @@ QDeclarativeProperty::QDeclarativeProperty(QObject *obj, QDeclarativeContext *ct } /*! - Creates a QDeclarativeProperty for the default property of \a obj. If there is no - default property, an invalid QDeclarativeProperty will be created. + Creates a QDeclarativeProperty for the default property of \a obj + using the environment for instantiating QML components that is + provided by \a engine. If there is no default property, an + invalid QDeclarativeProperty will be created. */ QDeclarativeProperty::QDeclarativeProperty(QObject *obj, QDeclarativeEngine *engine) -: d(new QDeclarativePropertyPrivate) + : d(new QDeclarativePropertyPrivate) { d->q = this; d->context = 0; @@ -166,8 +170,9 @@ QDeclarativeProperty::QDeclarativeProperty(QObject *obj, const QString &name) } /*! - Creates a QDeclarativeProperty for the property \a name of \a obj. - */ + Creates a QDeclarativeProperty for the property \a name of \a obj + using the \l{QDeclarativeContext} {context} \a ctxt. +*/ QDeclarativeProperty::QDeclarativeProperty(QObject *obj, const QString &name, QDeclarativeContext *ctxt) : d(new QDeclarativePropertyPrivate) { @@ -179,7 +184,9 @@ QDeclarativeProperty::QDeclarativeProperty(QObject *obj, const QString &name, QD } /*! - Creates a QDeclarativeProperty for the property \a name of \a obj. + Creates a QDeclarativeProperty for the property \a name of \a obj + using the environment for instantiating QML components that is + provided by \a engine. */ QDeclarativeProperty::QDeclarativeProperty(QObject *obj, const QString &name, QDeclarativeEngine *engine) : d(new QDeclarativePropertyPrivate) @@ -766,11 +773,13 @@ QVariant QDeclarativeProperty::read(QObject *object, const QString &name) } /*! -Return the \a name property value of \a object. This method is equivalent to: -\code + Return the \a name property value of \a object. This method is + equivalent to: + + \code QDeclarativeProperty p(object, name, context); p.read(); -\endcode + \endcode */ QVariant QDeclarativeProperty::read(QObject *object, const QString &name, QDeclarativeContext *ctxt) { @@ -779,11 +788,15 @@ QVariant QDeclarativeProperty::read(QObject *object, const QString &name, QDecla } /*! -Return the \a name property value of \a object. This method is equivalent to: -\code + + Return the \a name property value of \a object using the environment + for instantiating QML components that is provided by \a engine. . + This method is equivalent to: + + \code QDeclarativeProperty p(object, name, engine); p.read(); -\endcode + \endcode */ QVariant QDeclarativeProperty::read(QObject *object, const QString &name, QDeclarativeEngine *engine) { @@ -1073,19 +1086,23 @@ const QMetaObject *QDeclarativePropertyPrivate::rawMetaObjectForType(QDeclarativ } /*! - Set the property value to \a value. -*/ + Sets the property value to \a value and returns true. + Returns false if the property can't be set because the + \a value is the wrong type, for example. + */ bool QDeclarativeProperty::write(const QVariant &value) const { return QDeclarativePropertyPrivate::write(*this, value, 0); } /*! -Writes \a value to the \a name property of \a object. This method is equivalent to: -\code + Writes \a value to the \a name property of \a object. This method + is equivalent to: + + \code QDeclarativeProperty p(object, name); p.write(value); -\endcode + \endcode */ bool QDeclarativeProperty::write(QObject *object, const QString &name, const QVariant &value) { @@ -1094,13 +1111,18 @@ bool QDeclarativeProperty::write(QObject *object, const QString &name, const QVa } /*! -Writes \a value to the \a name property of \a object. This method is equivalent to: -\code + Writes \a value to the \a name property of \a object using the + \l{QDeclarativeContext} {context} \a ctxt. This method is + equivalent to: + + \code QDeclarativeProperty p(object, name, ctxt); p.write(value); -\endcode + \endcode */ -bool QDeclarativeProperty::write(QObject *object, const QString &name, const QVariant &value, +bool QDeclarativeProperty::write(QObject *object, + const QString &name, + const QVariant &value, QDeclarativeContext *ctxt) { QDeclarativeProperty p(object, name, ctxt); @@ -1108,11 +1130,15 @@ bool QDeclarativeProperty::write(QObject *object, const QString &name, const QVa } /*! -Writes \a value to the \a name property of \a object. This method is equivalent to: -\code + + Writes \a value to the \a name property of \a object using the + environment for instantiating QML components that is provided by + \a engine. This method is equivalent to: + + \code QDeclarativeProperty p(object, name, engine); p.write(value); -\endcode + \endcode */ bool QDeclarativeProperty::write(QObject *object, const QString &name, const QVariant &value, QDeclarativeEngine *engine) @@ -1122,7 +1148,9 @@ bool QDeclarativeProperty::write(QObject *object, const QString &name, const QVa } /*! - Resets the property value. + Resets the property and returns true if the property is + resettable. If the property is not resettable, nothing happens + and false is returned. */ bool QDeclarativeProperty::reset() const { diff --git a/src/declarative/util/qdeclarativeview.cpp b/src/declarative/util/qdeclarativeview.cpp index cd67aeb..735a009 100644 --- a/src/declarative/util/qdeclarativeview.cpp +++ b/src/declarative/util/qdeclarativeview.cpp @@ -221,7 +221,7 @@ void QDeclarativeViewPrivate::execute() */ /*! \fn void QDeclarativeView::statusChanged(QDeclarativeView::Status status) - This signal is emitted when the component's current \l{QDeclarativeView::Status} {status} changes. + This signal is emitted when the component's current \a status changes. */ /*! @@ -283,6 +283,12 @@ QDeclarativeView::~QDeclarativeView() delete d->root; } +/*! \property QDeclarativeView::source + \brief The URL of the source of the QML component. + + Changing this property causes the QML component to be reloaded. + */ + /*! Sets the source to the \a url, loads the QML component and instantiates it. @@ -326,7 +332,6 @@ QDeclarativeContext* QDeclarativeView::rootContext() return d->engine.rootContext(); } - /*! \enum QDeclarativeView::Status @@ -338,6 +343,14 @@ QDeclarativeContext* QDeclarativeView::rootContext() \value Error An error has occured. Calling errorDescription() to retrieve a description. */ +/*! \enum QDeclarativeView::ResizeMode + + This enum specifies how to resize the view. + + \value SizeViewToRootObject + \value SizeRootObjectToView +*/ + /*! \property QDeclarativeView::status The component's current \l{QDeclarativeView::Status} {status}. @@ -376,8 +389,6 @@ QList QDeclarativeView::errors() const Regardless of this property, the sizeHint of the view is the initial size of the root item. Note though that since QML may load dynamically, that size may change. - - \sa initialSize() */ void QDeclarativeView::setResizeMode(ResizeMode mode) -- cgit v0.12 From 4070bb1daafafabebb3c893a472a22fab413e4de Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Fri, 5 Mar 2010 13:24:29 +0100 Subject: Prevent a freeze of QFileSystemWatcher on Mac. On Mac when the FSEvents backend is used and a file is added or removed from a file system watcher, we need to wait until the thread is finished, otherwise it is possible that the thread already exited from the run() function but hasn't fully terminated, meaning when we restart the thread by calling start() it won't start because QThread thinks it's already running. A better fix might be to avoid stopping and starting threads - to just stop the FSEvents loop and notify the thread that a file set has changed. Task-number: QTBUG-8524 Reviewed-by: Morten --- src/corelib/io/qfilesystemwatcher_fsevents.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/corelib/io/qfilesystemwatcher_fsevents.cpp b/src/corelib/io/qfilesystemwatcher_fsevents.cpp index efbc290..d3276bd 100644 --- a/src/corelib/io/qfilesystemwatcher_fsevents.cpp +++ b/src/corelib/io/qfilesystemwatcher_fsevents.cpp @@ -171,6 +171,7 @@ QStringList QFSEventsFileSystemWatcherEngine::addPaths(const QStringList &paths, { #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 stop(); + wait(); QMutexLocker locker(&mutex); QStringList failedToAdd; // if we have a running FSStreamEvent, we have to kill it, we'll re-add the stream soon. @@ -268,6 +269,7 @@ QStringList QFSEventsFileSystemWatcherEngine::removePaths(const QStringList &pat { #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 stop(); + wait(); QMutexLocker locker(&mutex); // short circuit for smarties that call remove before add and we have nothing. if (pathsToWatch == 0) -- cgit v0.12 From 1a802007ca53aa0bd5fa5e474700660df6edf97b Mon Sep 17 00:00:00 2001 From: ninerider Date: Fri, 5 Mar 2010 13:37:17 +0100 Subject: Compile fix for Windows Mobile and OpenGLES2 The native device is now the default screen device. --- src/gui/egl/qegl_wince.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/gui/egl/qegl_wince.cpp b/src/gui/egl/qegl_wince.cpp index dfef39f..87ec648 100644 --- a/src/gui/egl/qegl_wince.cpp +++ b/src/gui/egl/qegl_wince.cpp @@ -89,9 +89,7 @@ EGLSurface QEglContext::createSurface(QPaintDevice *device, const QEglProperties EGLNativeDisplayType QEglContext::nativeDisplay() { - //HWND win = (static_cast(device))->winId(); - //HDC myDc = GetDC(win); - HDC myDc = GetWindowDC(0); + HDC myDc = GetDC(0); if (!myDc) { qWarning("QEglContext::nativeDisplay(): WinCE display is not open"); -- cgit v0.12 From b101849cafea6bcc793a1bfbbe4861c19e08ac01 Mon Sep 17 00:00:00 2001 From: ninerider Date: Fri, 5 Mar 2010 13:45:39 +0100 Subject: Compile fix for Windows Mobile and OpenGLES2 The native device is now the default screen device. --- src/gui/egl/qegl_wince.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/gui/egl/qegl_wince.cpp b/src/gui/egl/qegl_wince.cpp index c07b20b..2d08805 100644 --- a/src/gui/egl/qegl_wince.cpp +++ b/src/gui/egl/qegl_wince.cpp @@ -53,8 +53,7 @@ QT_BEGIN_NAMESPACE EGLNativeDisplayType QEgl::nativeDisplay() { - HWND win = (static_cast(device))->winId(); - HDC myDc = GetDC(win); + HDC myDc = GetDC(0); if (!myDc) { qWarning("QEglContext::nativeDisplay(): WinCE display is not open"); return EGL_DEFAULT_DISPLAY; -- cgit v0.12 From 4b3b9b792dfe2d25a271f042f23df22e8b9684f6 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Fri, 5 Mar 2010 11:28:32 +0100 Subject: QDom: prevent infinite loop when cloning a DTD we forgot to advance the pointer to the current node. Reviewed-by: Frans Englich Task-number: QTBUG-8398 --- src/xml/dom/qdom.cpp | 1 + tests/auto/qdom/tst_qdom.cpp | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp index 8d9ae4f..0150515 100644 --- a/src/xml/dom/qdom.cpp +++ b/src/xml/dom/qdom.cpp @@ -3487,6 +3487,7 @@ QDomDocumentTypePrivate::QDomDocumentTypePrivate(QDomDocumentTypePrivate* n, boo if (p->isNotation()) // Dont use normal insert function since we would create infinite recursion notations->map.insertMulti(p->nodeName(), p); + p = p->next; } } diff --git a/tests/auto/qdom/tst_qdom.cpp b/tests/auto/qdom/tst_qdom.cpp index d1b2ea5..caf08d6 100644 --- a/tests/auto/qdom/tst_qdom.cpp +++ b/tests/auto/qdom/tst_qdom.cpp @@ -131,6 +131,7 @@ private slots: void setContentWhitespace_data() const; void taskQTBUG4595_dontAssertWhenDocumentSpecifiesUnknownEncoding() const; + void cloneDTD_QTBUG8398() const; void cleanupTestCase() const; @@ -1912,5 +1913,29 @@ void tst_QDom::taskQTBUG4595_dontAssertWhenDocumentSpecifiesUnknownEncoding() co QVERIFY(true); } +void tst_QDom::cloneDTD_QTBUG8398() const +{ + QString dtd("\n" + "\n" + "\n" + "]>\n" + "\n"); + QDomDocument domDocument; + QVERIFY(domDocument.setContent(dtd)); + QDomDocument domDocument2 = domDocument.cloneNode(true).toDocument(); + + // for some reason, our DOM implementation reverts the order of entities + QString expected("\n" + "\n" + "\n" + "]>\n" + "\n"); + QString output; + QTextStream stream(&output); + domDocument2.save(stream, 0); + QCOMPARE(output, expected); +} QTEST_MAIN(tst_QDom) #include "tst_qdom.moc" -- cgit v0.12 From 12308db7663679e42c87aa72c564ec3f9f1a457f Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Fri, 5 Mar 2010 14:15:54 +0100 Subject: Change behavior of applicationShouldTerminate. We now terminate the application as long as Qt says we can. If not, then we cancel the termination. Task-number: QTBUG-6296 Reviewed-by: Morten Sorvig --- src/gui/kernel/qcocoaapplicationdelegate_mac.mm | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/gui/kernel/qcocoaapplicationdelegate_mac.mm b/src/gui/kernel/qcocoaapplicationdelegate_mac.mm index ab71a05..5dcf613 100644 --- a/src/gui/kernel/qcocoaapplicationdelegate_mac.mm +++ b/src/gui/kernel/qcocoaapplicationdelegate_mac.mm @@ -179,7 +179,7 @@ static void cleanupCocoaApplicationDelegate() } // This function will only be called when NSApp is actually running. Before -// that, the kAEQuitApplication apple event will be sendt to +// that, the kAEQuitApplication Apple event will be sent to // QApplicationPrivate::globalAppleEventProcessor in qapplication_mac.mm - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender { @@ -196,21 +196,18 @@ static void cleanupCocoaApplicationDelegate() qAppInstance()->quit(); startedQuit = false; } + return NSTerminateNow; } if (qtPrivate->threadData->eventLoops.size() == 0) { // INVARIANT: No event loop is executing. This probably // means that Qt is used as a plugin, or as a part of a native - // Cocoa application. In any case it should be fine to + // Cocoa application. In any case it should be fine to // terminate now: return NSTerminateNow; - } else { - // Prevent Cocoa from terminating the application, since this simply - // exits the program whithout allowing QApplication::exec() to return. - // The call to QApplication::quit() above will instead quit the - // application from the Qt side. - return NSTerminateCancel; } + + return NSTerminateCancel; } - (void)applicationDidFinishLaunching:(NSNotification *)aNotification -- cgit v0.12 From 88e9515cc4300d841b16f17fe6b5c8c0d6de3562 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Fri, 5 Mar 2010 13:12:24 +0100 Subject: QMetaType::type(): return immediately if the typename is empty No need to look up / lock data structures if we know that the comparisons will all fail. This was encountered because QMetaMethod::typeName() returns an empty string if the return type is void (even though there is a QMetaType::Void (value 0) with name "void"). This was causing the QtScript meta-object binding to spend a lot of its time looking up the type for an empty string when invoking slots that return void. Rather than having these checks in QtScript and who knows where else, it's better that QMetaType::type() does it itself. No regressions in the qmetatype benchmark. Reviewed-by: Olivier Goffart Reviewed-by: Harald Fernengel --- src/corelib/kernel/qmetatype.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 8f2d025..30af6fa 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -590,6 +590,8 @@ bool QMetaType::isRegistered(int type) int QMetaType::type(const char *typeName) { int length = qstrlen(typeName); + if (!length) + return 0; int type = qMetaTypeStaticType(typeName, length); if (!type) { QReadLocker locker(customTypesLock()); -- cgit v0.12 From 8a9a160c8f509511b7e44b66a20d60fb37d614cc Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Fri, 5 Mar 2010 12:23:09 +0100 Subject: QtScript: Don't needlessly make deep copies of function names The QObject binding uses the function name to determine whether a meta-method is an overload. This was implemented quite naively by copying the name from the signature into another array before comparing it. This could cause several unnecessary memory allocations, since storing the name is really only needed when there is an exception (e.g. ambiguous call). Instead, use strncmp to compare only the relevant characters of the original (non-copied) method signature. This makes normal slot invocation from QtScript up to 15% faster. Reviewed-by: Jedrzej Nowacki --- src/script/bridge/qscriptqobject.cpp | 89 ++++++++++++++++++++++-------------- src/script/bridge/qscriptqobject_p.h | 1 - 2 files changed, 55 insertions(+), 35 deletions(-) diff --git a/src/script/bridge/qscriptqobject.cpp b/src/script/bridge/qscriptqobject.cpp index 91636da..fbb29f5 100644 --- a/src/script/bridge/qscriptqobject.cpp +++ b/src/script/bridge/qscriptqobject.cpp @@ -163,10 +163,40 @@ static bool isEnumerableMetaProperty(const QMetaProperty &prop, && (mo->indexOfProperty(prop.name()) == index); } -static inline QByteArray methodName(const QMetaMethod &method) +/*! \internal + Calculates the length of the name of the given \a method by looking + for the first '(' character. +*/ +static inline int methodNameLength(const QMetaMethod &method) { - QByteArray signature = method.signature(); - return signature.left(signature.indexOf('(')); + const char *signature = method.signature(); + const char *s = signature; + while (*s && (*s != '(')) + ++s; + return s - signature; +} + +/*! \internal + Makes a deep copy of the first \a nameLength characters of the given + method \a signature and returns the copy. +*/ +static inline QByteArray methodName(const char *signature, int nameLength) +{ + return QByteArray(signature, nameLength); +} + +/*! \internal + + Returns true if the name of the given \a method is the same as that + specified by the (signature, nameLength) pair, otherwise returns + false. +*/ +static inline bool methodNameEquals(const QMetaMethod &method, + const char *signature, int nameLength) +{ + const char *otherSignature = method.signature(); + return !qstrncmp(otherSignature, signature, nameLength) + && (otherSignature[nameLength] == '('); } static QVariant variantFromValue(JSC::ExecState *exec, int targetType, JSC::JSValue value) @@ -310,25 +340,16 @@ QList QScript::QtFunction::overloadedIndexes() const if (!maybeOverloaded()) return QList(); QList result; - QString name = functionName(); const QMetaObject *meta = metaObject(); + QMetaMethod method = meta->method(initialIndex()); + int nameLength = methodNameLength(method); for (int index = mostGeneralMethod() - 1; index >= 0; --index) { - QString otherName = QString::fromLatin1(methodName(meta->method(index))); - if (otherName == name) + if (methodNameEquals(meta->method(index), method.signature(), nameLength)) result.append(index); } return result; } -QString QtFunction::functionName() const -{ - const QMetaObject *meta = metaObject(); - if (!meta) - return QString(); - QMetaMethod method = meta->method(initialIndex()); - return QLatin1String(methodName(method)); -} - class QScriptMetaType { public: @@ -415,8 +436,8 @@ class QScriptMetaMethod public: inline QScriptMetaMethod() { } - inline QScriptMetaMethod(const QByteArray &name, const QVector &types) - : m_name(name), m_types(types), m_firstUnresolvedIndex(-1) + inline QScriptMetaMethod(const QVector &types) + : m_types(types), m_firstUnresolvedIndex(-1) { QVector::const_iterator it; for (it = m_types.constBegin(); it != m_types.constEnd(); ++it) { @@ -429,9 +450,6 @@ public: inline bool isValid() const { return !m_types.isEmpty(); } - QByteArray name() const - { return m_name; } - inline QScriptMetaType returnType() const { return m_types.at(0); } @@ -460,7 +478,6 @@ public: { return m_types; } private: - QByteArray m_name; QVector m_types; int m_firstUnresolvedIndex; }; @@ -497,7 +514,6 @@ static JSC::JSValue callQtMethod(JSC::ExecState *exec, QMetaMethod::MethodType c const QMetaObject *meta, int initialIndex, bool maybeOverloaded) { - QByteArray funName; QScriptMetaMethod chosenMethod; int chosenIndex = -1; QVarLengthArray args; @@ -506,15 +522,18 @@ static JSC::JSValue callQtMethod(JSC::ExecState *exec, QMetaMethod::MethodType c QVector tooFewArgs; QVector conversionFailed; int index; + int nameLength = 0; + const char *initialMethodSignature = 0; exec->clearException(); QScriptEnginePrivate *engine = QScript::scriptEngineFromExec(exec); for (index = initialIndex; index >= 0; --index) { QMetaMethod method = metaMethod(meta, callType, index); - if (index == initialIndex) - funName = methodName(method); - else { - if (methodName(method) != funName) + if (index == initialIndex) { + initialMethodSignature = method.signature(); + nameLength = methodNameLength(method); + } else { + if (!methodNameEquals(method, initialMethodSignature, nameLength)) continue; } @@ -555,7 +574,7 @@ static JSC::JSValue callQtMethod(JSC::ExecState *exec, QMetaMethod::MethodType c } } - QScriptMetaMethod mtd = QScriptMetaMethod(methodName(method), types); + QScriptMetaMethod mtd = QScriptMetaMethod(types); if (int(scriptArgs.size()) < mtd.argumentCount()) { tooFewArgs.append(index); @@ -830,9 +849,10 @@ static JSC::JSValue callQtMethod(JSC::ExecState *exec, QMetaMethod::MethodType c //#ifndef Q_SCRIPT_NO_EVENT_NOTIFY // engine->notifyFunctionEntry(context); //#endif + QString funName = QString::fromLatin1(methodName(initialMethodSignature, nameLength)); if (!conversionFailed.isEmpty()) { QString message = QString::fromLatin1("incompatible type of argument(s) in call to %0(); candidates were\n") - .arg(QLatin1String(funName)); + .arg(funName); for (int i = 0; i < conversionFailed.size(); ++i) { if (i > 0) message += QLatin1String("\n"); @@ -847,7 +867,7 @@ static JSC::JSValue callQtMethod(JSC::ExecState *exec, QMetaMethod::MethodType c QScriptMetaType unresolvedType = argsInstance.method.type(unresolvedIndex); QString unresolvedTypeName = QString::fromLatin1(unresolvedType.name()); QString message = QString::fromLatin1("cannot call %0(): ") - .arg(QString::fromLatin1(funName)); + .arg(funName); if (unresolvedIndex > 0) { message.append(QString::fromLatin1("argument %0 has unknown type `%1'"). arg(unresolvedIndex).arg(unresolvedTypeName)); @@ -859,7 +879,7 @@ static JSC::JSValue callQtMethod(JSC::ExecState *exec, QMetaMethod::MethodType c result = JSC::throwError(exec, JSC::TypeError, message); } else { QString message = QString::fromLatin1("too few arguments in call to %0(); candidates are\n") - .arg(QLatin1String(funName)); + .arg(funName); for (int i = 0; i < tooFewArgs.size(); ++i) { if (i > 0) message += QLatin1String("\n"); @@ -875,6 +895,7 @@ static JSC::JSValue callQtMethod(JSC::ExecState *exec, QMetaMethod::MethodType c && (metaArgs.args.count() == candidates.at(1).args.count()) && (metaArgs.matchDistance == candidates.at(1).matchDistance)) { // ambiguous call + QByteArray funName = methodName(initialMethodSignature, nameLength); QString message = QString::fromLatin1("ambiguous call of overloaded function %0(); candidates were\n") .arg(QLatin1String(funName)); for (int i = 0; i < candidates.size(); ++i) { @@ -1240,7 +1261,7 @@ bool QObjectDelegate::getOwnPropertySlot(QScriptObject *object, JSC::ExecState * for (index = meta->methodCount() - 1; index >= offset; --index) { QMetaMethod method = meta->method(index); if (hasMethodAccess(method, index, opt) - && (methodName(method) == name)) { + && methodNameEquals(method, name.constData(), name.length())) { QtFunction *fun = new (exec)QtFunction( object, index, /*maybeOverloaded=*/true, &exec->globalData(), eng->originalGlobalObject()->functionStructure(), @@ -1372,7 +1393,7 @@ bool QObjectDelegate::getOwnPropertyDescriptor(QScriptObject *object, JSC::ExecS for (index = meta->methodCount() - 1; index >= offset; --index) { QMetaMethod method = meta->method(index); if (hasMethodAccess(method, index, opt) - && (methodName(method) == name)) { + && methodNameEquals(method, name.constData(), name.length())) { QtFunction *fun = new (exec)QtFunction( object, index, /*maybeOverloaded=*/true, &exec->globalData(), eng->originalGlobalObject()->functionStructure(), @@ -1486,7 +1507,7 @@ void QObjectDelegate::put(QScriptObject *object, JSC::ExecState* exec, for (index = meta->methodCount() - 1; index >= offset; --index) { QMetaMethod method = meta->method(index); if (hasMethodAccess(method, index, opt) - && (methodName(method) == name)) { + && methodNameEquals(method, name.constData(), name.length())) { data->cachedMembers.insert(name, value); return; } @@ -1605,7 +1626,7 @@ bool QObjectDelegate::getPropertyAttributes(const QScriptObject *object, for (index = meta->methodCount() - 1; index >= offset; --index) { QMetaMethod method = meta->method(index); if (hasMethodAccess(method, index, opt) - && (methodName(method) == name)) { + && methodNameEquals(method, name.constData(), name.length())) { attributes = QObjectMemberAttribute; if (opt & QScriptEngine::SkipMethodsInEnumeration) attributes |= JSC::DontEnum; diff --git a/src/script/bridge/qscriptqobject_p.h b/src/script/bridge/qscriptqobject_p.h index 448fa99..8b05d6b 100644 --- a/src/script/bridge/qscriptqobject_p.h +++ b/src/script/bridge/qscriptqobject_p.h @@ -212,7 +212,6 @@ public: bool maybeOverloaded() const; int mostGeneralMethod(QMetaMethod *out = 0) const; QList overloadedIndexes() const; - QString functionName() const; private: Data *data; -- cgit v0.12 From 856f76e44a00a710b1c34eddee5a893a3c0ada6a Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Fri, 5 Mar 2010 11:08:33 +0100 Subject: Fixed key mappings on X11 Merge request #1742 (6c8c1c5322a26d789165783d7df3e29c672690cb) changed the behavior of one of the keys on X11, this fixes it back and documents that on X11 the key binding is a bit weird - XF86XK_MyComputer is mapped to Qt::Key_Launch0, XF86XK_Launch0 is mapped to Qt::Key_Launch3 and so on. Task-number: QTBUG-7063 Reviewed-by: Marius Storm-Olsen --- src/corelib/global/qnamespace.qdoc | 34 +++++++++++++++++----------------- src/gui/kernel/qkeymapper_x11.cpp | 6 +++--- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index 6968773..a756565 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -1622,22 +1622,22 @@ \value Key_OpenUrl \value Key_LaunchMail \value Key_LaunchMedia - \value Key_Launch0 - \value Key_Launch1 - \value Key_Launch2 - \value Key_Launch3 - \value Key_Launch4 - \value Key_Launch5 - \value Key_Launch6 - \value Key_Launch7 - \value Key_Launch8 - \value Key_Launch9 - \value Key_LaunchA - \value Key_LaunchB - \value Key_LaunchC - \value Key_LaunchD - \value Key_LaunchE - \value Key_LaunchF + \value Key_Launch0 On X11 this key is mapped to "My Computer" (XF86XK_MyComputer) key for legacy reasons. + \value Key_Launch1 On X11 this key is mapped to "Calculator" (XF86XK_Calculator) key for legacy reasons. + \value Key_Launch2 On X11 this key is mapped to XF86XK_Launch0 key for legacy reasons. + \value Key_Launch3 On X11 this key is mapped to XF86XK_Launch1 key for legacy reasons. + \value Key_Launch4 On X11 this key is mapped to XF86XK_Launch2 key for legacy reasons. + \value Key_Launch5 On X11 this key is mapped to XF86XK_Launch3 key for legacy reasons. + \value Key_Launch6 On X11 this key is mapped to XF86XK_Launch4 key for legacy reasons. + \value Key_Launch7 On X11 this key is mapped to XF86XK_Launch5 key for legacy reasons. + \value Key_Launch8 On X11 this key is mapped to XF86XK_Launch6 key for legacy reasons. + \value Key_Launch9 On X11 this key is mapped to XF86XK_Launch7 key for legacy reasons. + \value Key_LaunchA On X11 this key is mapped to XF86XK_Launch8 key for legacy reasons. + \value Key_LaunchB On X11 this key is mapped to XF86XK_Launch9 key for legacy reasons. + \value Key_LaunchC On X11 this key is mapped to XF86XK_LaunchA key for legacy reasons. + \value Key_LaunchD On X11 this key is mapped to XF86XK_LaunchB key for legacy reasons. + \value Key_LaunchE On X11 this key is mapped to XF86XK_LaunchC key for legacy reasons. + \value Key_LaunchF On X11 this key is mapped to XF86XK_LaunchD key for legacy reasons. \value Key_MonBrightnessUp \value Key_MonBrightnessDown \value Key_KeyboardLightOnOff @@ -1663,7 +1663,7 @@ \value Key_ApplicationRight \value Key_Book \value Key_CD - \value Key_Calculator + \value Key_Calculator On X11 this key is not mapped for legacy reasons. Use Qt::Key_Launch1 instead. \value Key_ToDoList \value Key_ClearGrab \value Key_Close diff --git a/src/gui/kernel/qkeymapper_x11.cpp b/src/gui/kernel/qkeymapper_x11.cpp index 4e6c847..b32b626 100644 --- a/src/gui/kernel/qkeymapper_x11.cpp +++ b/src/gui/kernel/qkeymapper_x11.cpp @@ -1073,8 +1073,8 @@ static const unsigned int KeyTbl[] = { XF86XK_AudioNext, Qt::Key_MediaNext, XF86XK_AudioRecord, Qt::Key_MediaRecord, XF86XK_Mail, Qt::Key_LaunchMail, - XF86XK_MyComputer, Qt::Key_Launch0, - XF86XK_Calculator, Qt::Key_Calculator, + XF86XK_MyComputer, Qt::Key_Launch0, // ### Qt 5: remap properly + XF86XK_Calculator, Qt::Key_Launch1, XF86XK_Memo, Qt::Key_Memo, XF86XK_ToDoList, Qt::Key_ToDoList, XF86XK_Calendar, Qt::Key_Calendar, @@ -1172,7 +1172,7 @@ static const unsigned int KeyTbl[] = { XF86XK_Bluetooth, Qt::Key_Bluetooth, XF86XK_Suspend, Qt::Key_Suspend, XF86XK_Hibernate, Qt::Key_Hibernate, - XF86XK_Launch0, Qt::Key_Launch2, + XF86XK_Launch0, Qt::Key_Launch2, // ### Qt 5: remap properly XF86XK_Launch1, Qt::Key_Launch3, XF86XK_Launch2, Qt::Key_Launch4, XF86XK_Launch3, Qt::Key_Launch5, -- cgit v0.12 From e10c1fe03fbfd3c8bdca7a68d4dc568715db4176 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Fri, 5 Mar 2010 14:31:25 +0100 Subject: Don't needlessly call pushContext() when reading properties It's only necessary to push a QScriptContext when properties are read from an object that inherits QScriptable. Postpone the decision of pushing a context until we know whether the object is a QScriptable. --- src/script/bridge/qscriptqobject.cpp | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/script/bridge/qscriptqobject.cpp b/src/script/bridge/qscriptqobject.cpp index fbb29f5..6c401f8 100644 --- a/src/script/bridge/qscriptqobject.cpp +++ b/src/script/bridge/qscriptqobject.cpp @@ -1057,14 +1057,7 @@ JSC::JSValue JSC_HOST_CALL QtPropertyFunction::call( if (!callee->inherits(&QtPropertyFunction::info)) return throwError(exec, JSC::TypeError, "callee is not a QtPropertyFunction object"); QtPropertyFunction *qfun = static_cast(callee); - QScriptEnginePrivate *eng_p = scriptEngineFromExec(exec); - JSC::ExecState *previousFrame = eng_p->currentFrame; - eng_p->currentFrame = exec; - eng_p->pushContext(exec, thisValue, args, callee); - JSC::JSValue result = qfun->execute(eng_p->currentFrame, thisValue, args); - eng_p->popContext(); - eng_p->currentFrame = previousFrame; - return result; + return qfun->execute(exec, thisValue, args); } JSC::JSValue QtPropertyFunction::execute(JSC::ExecState *exec, @@ -1074,12 +1067,15 @@ JSC::JSValue QtPropertyFunction::execute(JSC::ExecState *exec, JSC::JSValue result = JSC::jsUndefined(); QScriptEnginePrivate *engine = scriptEngineFromExec(exec); - thisValue = engine->toUsableValue(thisValue); - QObject *qobject = QScriptEnginePrivate::toQObject(exec, thisValue); + JSC::ExecState *previousFrame = engine->currentFrame; + engine->currentFrame = exec; + + JSC::JSValue qobjectValue = engine->toUsableValue(thisValue); + QObject *qobject = QScriptEnginePrivate::toQObject(exec, qobjectValue); while ((!qobject || (qobject->metaObject() != data->meta)) - && JSC::asObject(thisValue)->prototype().isObject()) { - thisValue = JSC::asObject(thisValue)->prototype(); - qobject = QScriptEnginePrivate::toQObject(exec, thisValue); + && JSC::asObject(qobjectValue)->prototype().isObject()) { + qobjectValue = JSC::asObject(qobjectValue)->prototype(); + qobject = QScriptEnginePrivate::toQObject(exec, qobjectValue); } Q_ASSERT_X(qobject, Q_FUNC_INFO, "this-object must be a QObject"); @@ -1091,14 +1087,17 @@ JSC::JSValue QtPropertyFunction::execute(JSC::ExecState *exec, QScriptable *scriptable = scriptableFromQObject(qobject); QScriptEngine *oldEngine = 0; if (scriptable) { + engine->pushContext(exec, thisValue, args, this); oldEngine = QScriptablePrivate::get(scriptable)->engine; QScriptablePrivate::get(scriptable)->engine = QScriptEnginePrivate::get(engine); } QVariant v = prop.read(qobject); - if (scriptable) + if (scriptable) { QScriptablePrivate::get(scriptable)->engine = oldEngine; + engine->popContext(); + } result = QScriptEnginePrivate::jscValueFromVariant(exec, v); } @@ -1118,17 +1117,21 @@ JSC::JSValue QtPropertyFunction::execute(JSC::ExecState *exec, QScriptable *scriptable = scriptableFromQObject(qobject); QScriptEngine *oldEngine = 0; if (scriptable) { + engine->pushContext(exec, thisValue, args, this); oldEngine = QScriptablePrivate::get(scriptable)->engine; QScriptablePrivate::get(scriptable)->engine = QScriptEnginePrivate::get(engine); } prop.write(qobject, v); - if (scriptable) + if (scriptable) { QScriptablePrivate::get(scriptable)->engine = oldEngine; + engine->popContext(); + } result = arg; } + engine->currentFrame = previousFrame; return result; } -- cgit v0.12 From 3d51d223bee55011876d12011970a5ad15c4acd0 Mon Sep 17 00:00:00 2001 From: Aleksandar Sasha Babic Date: Fri, 5 Mar 2010 14:43:34 +0100 Subject: If no IAP defined force IAP dialog Using TCommDbConnPref to force IAP dialog when IAP is not defined Reviewed-by: TrustMe --- examples/network/qftp/sym_iap_util.h | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/examples/network/qftp/sym_iap_util.h b/examples/network/qftp/sym_iap_util.h index 41e43a9..445036a 100644 --- a/examples/network/qftp/sym_iap_util.h +++ b/examples/network/qftp/sym_iap_util.h @@ -60,6 +60,7 @@ //#include _LIT(KIapNameSetting, "IAP\\Name"); // text - mandatory +_LIT(KIapTableIdField, "IAP\Id"); _LIT(KIapDialogPref, "IAP\\DialogPref"); // TUnit32 - optional _LIT(KIapService, "IAP\\IAPService"); // TUnit32 - mandatory _LIT(KIapServiceType, "IAP\\IAPServiceType"); // text - mandatory @@ -367,20 +368,25 @@ static QString qt_OfferIapDialog() { CleanupClosePushL(connection); socketServ.Connect(); + + TCommDbConnPref prefs; + prefs.SetDialogPreference(ECommDbDialogPrefPrompt); + connection.Open(socketServ); - connection.Start(); + connection.Start(prefs); connection.GetDesSetting(TPtrC(KIapNameSetting), iapName); - //connection.Stop(); iapName.ZeroTerminate(); QString strIapName((char*)iapName.Ptr()); int error = 0; - if(!qt_SetDefaultIapName(strIapName, error)) { - //printf("failed setdefaultif @ %i with %s and errno = %d \n", __LINE__, strIapName.toUtf8().data(), error); - strIapName = QString(""); + if(!strIapName.isEmpty()) { + if(!qt_SetDefaultIapName(strIapName, error)) { + //printf("failed setdefaultif @ %i with %s and errno = %d \n", __LINE__, strIapName.toUtf8().data(), error); + strIapName = QString(""); + } } CleanupStack::PopAndDestroy(&connection); -- cgit v0.12 From d5b716852c6ce79d2abc089e690a3f968273c805 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Fri, 5 Mar 2010 15:12:37 +0100 Subject: doc: Fixed some QML qdoc errors. --- src/declarative/graphicsitems/qdeclarativeitem.cpp | 10 ++++++++++ src/declarative/graphicsitems/qdeclarativelistview.cpp | 5 +++++ src/declarative/qml/qdeclarativeengine.cpp | 6 ++---- src/imports/multimedia/qdeclarativeaudio.cpp | 5 +++-- src/imports/multimedia/qdeclarativevideo.cpp | 5 +++-- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index 3bee5b8..3e1218b 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -1291,6 +1291,16 @@ QDeclarativeKeysAttached *QDeclarativeKeysAttached::qmlAttachedProperties(QObjec \internal */ +/*! + \fn void QDeclarativeItem::smoothChanged() + \internal +*/ + +/*! + \fn void QDeclarativeItem::clipChanged() + \internal +*/ + /*! \fn void QDeclarativeItem::transformOriginChanged(TransformOrigin) \internal */ diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index cd8d143..be16baa 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -1783,6 +1783,11 @@ void QDeclarativeListView::setPreferredHighlightEnd(qreal end) emit preferredHighlightEndChanged(); } +/*! + \property QDeclarativeListView::highlightRangeMode + + This property contains the highlight range mode for the listview. + */ QDeclarativeListView::HighlightRangeMode QDeclarativeListView::highlightRangeMode() const { Q_D(const QDeclarativeListView); diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 7ce2d0b..a71546b 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -1659,10 +1659,8 @@ void QDeclarativeEngine::addImportPath(const QString& path) } /*! - Imports the given \a extension into this QDeclarativeEngine. Returns - true if the extension was successfully imported. - - \sa QDeclarativeExtensionInterface + Imports the extension named \a fileName from the \a uri provided. + Returns true if the extension was successfully imported. */ bool QDeclarativeEngine::importExtension(const QString &fileName, const QString &uri) { diff --git a/src/imports/multimedia/qdeclarativeaudio.cpp b/src/imports/multimedia/qdeclarativeaudio.cpp index df2888c..40133ee 100644 --- a/src/imports/multimedia/qdeclarativeaudio.cpp +++ b/src/imports/multimedia/qdeclarativeaudio.cpp @@ -316,8 +316,9 @@ QDeclarativeAudio::Error QDeclarativeAudio::error() const /*! \qmlsignal Audio::onError(error, errorString) - This handler is called when an \l {Error}{error} has occurred. The errorString parameter - may contain more detailed information about the error. + This handler is called when an \l {QMediaPlayer::Error}{error} has + occurred. The errorString parameter may contain more detailed + information about the error. */ QT_END_NAMESPACE diff --git a/src/imports/multimedia/qdeclarativevideo.cpp b/src/imports/multimedia/qdeclarativevideo.cpp index 064f242..80c0ba4 100644 --- a/src/imports/multimedia/qdeclarativevideo.cpp +++ b/src/imports/multimedia/qdeclarativevideo.cpp @@ -317,8 +317,9 @@ QDeclarativeVideo::Error QDeclarativeVideo::error() const /*! \qmlsignal Video::onError(error, errorString) - This handler is called when an \l {Error}{error} has occurred. The errorString parameter - may contain more detailed information about the error. + This handler is called when an \l {QMediaPlayer::Error}{error} has + occurred. The errorString parameter may contain more detailed + information about the error. */ /*! -- cgit v0.12 From 0cb155516992d3bb917f72bdab9f28b9e65ff40d Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 2 Mar 2010 11:33:55 +0100 Subject: Mac: static getFont functions in QFontDialog does not work This bug is visible if the static funtions are used before calling qApp->exec(). The reason is that the static functions still use the old code path, rather than the new one (that will end up creating a QFontDialog and call exec on it). Just using the new style will fix the problem. Task-number: QTBUG-7371 Reviewed-by: cduclos --- src/gui/dialogs/qfontdialog.cpp | 8 -- src/gui/dialogs/qfontdialog_mac.mm | 189 ------------------------------------- src/gui/dialogs/qfontdialog_p.h | 6 -- 3 files changed, 203 deletions(-) diff --git a/src/gui/dialogs/qfontdialog.cpp b/src/gui/dialogs/qfontdialog.cpp index b987611..8e17830 100644 --- a/src/gui/dialogs/qfontdialog.cpp +++ b/src/gui/dialogs/qfontdialog.cpp @@ -428,14 +428,6 @@ QFont QFontDialog::getFont(bool *ok, QWidget *parent) QFont QFontDialogPrivate::getFont(bool *ok, const QFont &initial, QWidget *parent, const QString &title, QFontDialog::FontDialogOptions options) { -#ifdef Q_WS_MAC - if (!(options & QFontDialog::DontUseNativeDialog) - && QFontDialogPrivate::sharedFontPanelAvailable) { - return QFontDialogPrivate::execCocoaFontPanel(ok, initial, parent, - title.isEmpty() ? QFontDialog::tr("Select Font") : title, options); - } -#endif - QFontDialog dlg(parent); dlg.setOptions(options); dlg.setCurrentFont(initial); diff --git a/src/gui/dialogs/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm index 67d32b8..93410e7 100644 --- a/src/gui/dialogs/qfontdialog_mac.mm +++ b/src/gui/dialogs/qfontdialog_mac.mm @@ -412,170 +412,6 @@ extern void macStartInterceptNSPanelCtor(); extern void macStopInterceptNSPanelCtor(); extern NSButton *macCreateButton(const char *text, NSView *superview); -void *QFontDialogPrivate::openCocoaFontPanel(const QFont &initial, - QWidget *parent, const QString &title, QFontDialog::FontDialogOptions options, - QFontDialogPrivate *priv) -{ - Q_UNUSED(parent); // we would use the parent if only NSFontPanel could be a sheet - QMacCocoaAutoReleasePool pool; - - /* - The standard Cocoa font panel has no OK or Cancel button and - is created as a utility window. For strange reasons (which seem - to stem from the fact that the font panel is based on a NIB - file), the approach we use for the color panel doesn't work for - the font panel (and, inversely, the approach we use here doesn't - quite work for color panel, and crashed last time I tried). So - instead, we take the following steps: - - 1. Constructs a plain NSPanel that looks the way we want it - to look. Specifically, if the NoButtons option is off, we - construct a panel without the NSUtilityWindowMask flag - and with buttons (OK and Cancel). - - 2. Steal the content view from the shared NSFontPanel and - put it inside our new NSPanel's content view, together - with the OK and Cancel buttons. - - 3. Lay out the original content view and the buttons when - the font panel is shown and whenever it is resized. - - 4. Clean up after ourselves. - - PS. Some customization is also done in QCocoaApplication - validModesForFontPanel:. - */ - - Qt::WindowModality modality = Qt::ApplicationModal; - if (priv) - modality = priv->fontDialog()->windowModality(); - - bool needButtons = !(options & QFontDialog::NoButtons); - // don't need our own panel if the title bar isn't visible anyway (in a sheet) - bool needOwnPanel = (needButtons && modality != Qt::WindowModal); - - bool sharedFontPanelExisted = [NSFontPanel sharedFontPanelExists]; - NSFontPanel *sharedFontPanel = [NSFontPanel sharedFontPanel]; - [sharedFontPanel setHidesOnDeactivate:false]; - - // hack to ensure that QCocoaApplication's validModesForFontPanel: - // implementation is honored - if (!sharedFontPanelExisted && needOwnPanel) { - [sharedFontPanel makeKeyAndOrderFront:sharedFontPanel]; - [sharedFontPanel close]; - } - - NSPanel *ourPanel = 0; - NSView *stolenContentView = 0; - NSButton *okButton = 0; - NSButton *cancelButton = 0; - - CGFloat dialogExtraWidth = 0.0; - CGFloat dialogExtraHeight = 0.0; - - if (!needOwnPanel) { - // we can reuse the NSFontPanel unchanged - ourPanel = sharedFontPanel; - } else { - // compute dialogExtra{Width,Height} - dialogExtraWidth = 2.0 * DialogSideMargin; - dialogExtraHeight = DialogTopMargin + ButtonTopMargin + ButtonMinHeight - + ButtonBottomMargin; - - // compute initial contents rectangle - NSRect contentRect = [sharedFontPanel contentRectForFrameRect:[sharedFontPanel frame]]; - contentRect.size.width += dialogExtraWidth; - contentRect.size.height += dialogExtraHeight; - - // create the new panel - ourPanel = [[NSPanel alloc] initWithContentRect:contentRect - styleMask:StyleMask - backing:NSBackingStoreBuffered - defer:YES]; - [ourPanel setReleasedWhenClosed:YES]; - } - - stolenContentView = [sharedFontPanel contentView]; - - if (needButtons) { - // steal the font panel's contents view - [stolenContentView retain]; - [sharedFontPanel setContentView:0]; - - // create a new content view and add the stolen one as a subview - NSRect frameRect = { { 0.0, 0.0 }, { 0.0, 0.0 } }; - NSView *ourContentView = [[NSView alloc] initWithFrame:frameRect]; - [ourContentView addSubview:stolenContentView]; - - // create OK and Cancel buttons and add these as subviews - okButton = macCreateButton("&OK", ourContentView); - cancelButton = macCreateButton("Cancel", ourContentView); - - [ourPanel setContentView:ourContentView]; - [ourPanel setDefaultButtonCell:[okButton cell]]; - } - - // create a delegate and set it - QCocoaFontPanelDelegate *delegate = - [[QCocoaFontPanelDelegate alloc] initWithFontPanel:sharedFontPanel - stolenContentView:stolenContentView - okButton:okButton - cancelButton:cancelButton - priv:priv - extraWidth:dialogExtraWidth - extraHeight:dialogExtraHeight]; - [ourPanel setDelegate:delegate]; - [[NSFontManager sharedFontManager] setDelegate:delegate]; -#ifdef QT_MAC_USE_COCOA - [[NSFontManager sharedFontManager] setTarget:delegate]; -#endif - setFont(delegate, initial); - - // hack to get correct initial layout - NSRect frameRect = [ourPanel frame]; - frameRect.size.width += 1.0; - [ourPanel setFrame:frameRect display:NO]; - frameRect.size.width -= 1.0; - frameRect.size = [delegate windowWillResize:ourPanel toSize:frameRect.size]; - [ourPanel setFrame:frameRect display:NO]; - [ourPanel center]; - - [ourPanel setTitle:(NSString*)(CFStringRef)QCFString(title)]; - - if (priv) { - switch (modality) { - case Qt::WindowModal: - if (parent) { -#ifndef QT_MAC_USE_COCOA - WindowRef hiwindowRef = qt_mac_window_for(parent); - NSWindow *window = - [[NSWindow alloc] initWithWindowRef:hiwindowRef]; - // Cocoa docs say I should retain the Carbon ref. - CFRetain(hiwindowRef); -#else - NSWindow *window = qt_mac_window_for(parent); -#endif - [NSApp beginSheet:ourPanel - modalForWindow:window - modalDelegate:0 - didEndSelector:0 - contextInfo:0]; -#ifndef QT_MAC_USE_COCOA - [window release]; -#endif - break; - } - // fallthrough - case Qt::ApplicationModal: - [delegate setModalSession:[NSApp beginModalSessionForWindow:ourPanel]]; - break; - default: - [ourPanel makeKeyAndOrderFront:ourPanel]; - } - } - return delegate; -} - void QFontDialogPrivate::closeCocoaFontPanel(void *delegate) { QMacCocoaAutoReleasePool pool; @@ -586,30 +422,6 @@ void QFontDialogPrivate::closeCocoaFontPanel(void *delegate) [theDelegate autorelease]; } -QFont QFontDialogPrivate::execCocoaFontPanel(bool *ok, const QFont &initial, - QWidget *parent, const QString &title, QFontDialog::FontDialogOptions options) -{ - QMacCocoaAutoReleasePool pool; - QCocoaFontPanelDelegate *delegate = - static_cast( - openCocoaFontPanel(initial, parent, title, options)); - NSWindow *ourPanel = [delegate actualPanel]; - [ourPanel retain]; - int rval = [NSApp runModalForWindow:ourPanel]; - QFont font([delegate qtFont]); - [ourPanel release]; - [delegate cleanUpAfterMyself]; - [delegate release]; - bool isOk = ((options & QFontDialog::NoButtons) || rval == NSOKButton); - if (ok) - *ok = isOk; - if (isOk) { - return font; - } else { - return initial; - } -} - void QFontDialogPrivate::setFont(void *delegate, const QFont &font) { QMacCocoaAutoReleasePool pool; @@ -760,7 +572,6 @@ void QFontDialogPrivate::mac_nativeDialogModalHelp() void QFontDialogPrivate::_q_macRunNativeAppModalPanel() { QBoolBlocker nativeDialogOnTop(QApplicationPrivate::native_modal_dialog_active); - Q_Q(QFontDialog); QCocoaFontPanelDelegate *delegate = (QCocoaFontPanelDelegate *)_q_constructNativePanel(); NSWindow *ourPanel = [delegate actualPanel]; [ourPanel retain]; diff --git a/src/gui/dialogs/qfontdialog_p.h b/src/gui/dialogs/qfontdialog_p.h index 7654a80..c18b87b 100644 --- a/src/gui/dialogs/qfontdialog_p.h +++ b/src/gui/dialogs/qfontdialog_p.h @@ -139,13 +139,7 @@ public: QByteArray memberToDisconnectOnClose; #ifdef Q_WS_MAC - static void *openCocoaFontPanel(const QFont &initial, - QWidget *parent, const QString &title, - QFontDialog::FontDialogOptions options, - QFontDialogPrivate *priv = 0); static void closeCocoaFontPanel(void *delegate); - static QFont execCocoaFontPanel(bool *ok, const QFont &initial, QWidget *parent, - const QString &title, QFontDialog::FontDialogOptions options); static void setFont(void *delegate, const QFont &font); inline void done(int result) { q_func()->done(result); } -- cgit v0.12 From f3ecbb007acf39b43c73be26f4cbbf195c352e57 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 2 Mar 2010 15:08:55 +0100 Subject: Mac: QFontDialog will not sometimes leave modality It turns out the the code implemented two different ways of entering modality, and mixed the two when it came to exit modality. This patch just uses the nsapp runmodalforwindow approach. Reviewed-by: cduclos --- src/gui/dialogs/qfontdialog_mac.mm | 35 +++++++++-------------------------- 1 file changed, 9 insertions(+), 26 deletions(-) diff --git a/src/gui/dialogs/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm index 93410e7..3a4c688 100644 --- a/src/gui/dialogs/qfontdialog_mac.mm +++ b/src/gui/dialogs/qfontdialog_mac.mm @@ -95,7 +95,6 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin BOOL mPanelHackedWithButtons; CGFloat mDialogExtraWidth; CGFloat mDialogExtraHeight; - NSModalSession mModalSession; } - (id)initWithFontPanel:(NSFontPanel *)panel stolenContentView:(NSView *)stolenContentView @@ -106,7 +105,6 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin extraHeight:(CGFloat)extraHeight; - (void)changeFont:(id)sender; - (void)changeAttributes:(id)sender; -- (void)setModalSession:(NSModalSession)session; - (BOOL)windowShouldClose:(id)window; - (NSSize)windowWillResize:(NSWindow *)window toSize:(NSSize)proposedFrameSize; - (void)relayout; @@ -163,7 +161,6 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) mPanelHackedWithButtons = (okButton != 0); mDialogExtraWidth = extraWidth; mDialogExtraHeight = extraHeight; - mModalSession = 0; if (mPanelHackedWithButtons) { [self relayout]; @@ -216,12 +213,6 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) mPriv->updateSampleFont(*mQtFont); } -- (void)setModalSession:(NSModalSession)session -{ - Q_ASSERT(!mModalSession); - mModalSession = session; -} - - (BOOL)windowShouldClose:(id)window { Q_UNUSED(window); @@ -368,21 +359,14 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) - (void)finishOffWithCode:(NSInteger)code { - if (mPriv) { - if (mModalSession) { - [NSApp endModalSession:mModalSession]; - mModalSession = 0; - } - // Hack alert! - // Since this code path was never intended to be followed when starting from exec - // we need to force the dialog to communicate the new font, otherwise the signal - // won't get emitted. - if(code == NSOKButton) - mPriv->sampleEdit->setFont([self qtFont]); - mPriv->done((code == NSOKButton) ? QDialog::Accepted : QDialog::Rejected); - } else { - [NSApp stopModalWithCode:code]; - } + [NSApp stopModalWithCode:code]; + // Hack alert! + // Since this code path was never intended to be followed when starting from exec + // we need to force the dialog to communicate the new font, otherwise the signal + // won't get emitted. + if(code == NSOKButton) + mPriv->sampleEdit->setFont([self qtFont]); + mPriv->done((code == NSOKButton) ? QDialog::Accepted : QDialog::Rejected); } - (void)cleanUpAfterMyself @@ -544,8 +528,6 @@ void *QFontDialogPrivate::_q_constructNativePanel() } NSString *title = @"Select font"; [ourPanel setTitle:title]; - - [delegate setModalSession:[NSApp beginModalSessionForWindow:ourPanel]]; return delegate; } @@ -575,6 +557,7 @@ void QFontDialogPrivate::_q_macRunNativeAppModalPanel() QCocoaFontPanelDelegate *delegate = (QCocoaFontPanelDelegate *)_q_constructNativePanel(); NSWindow *ourPanel = [delegate actualPanel]; [ourPanel retain]; + int rval = [NSApp runModalForWindow:ourPanel]; QAbstractEventDispatcher::instance()->interrupt(); [ourPanel release]; -- cgit v0.12 From 0dfb7598e4659dc912c2b3ace7dfdb93f953f83c Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 3 Mar 2010 09:56:36 +0100 Subject: Mac: qfontdialog test fails The native font dialog on mac did not set the font specified in the non-native font dialog upon exec, but rather qApp->font(). This oneliner sets the correct font, and makes the autotest pass. Reviewed-by: cduclos --- src/gui/dialogs/qfontdialog_mac.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/dialogs/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm index 3a4c688..fd7fd68 100644 --- a/src/gui/dialogs/qfontdialog_mac.mm +++ b/src/gui/dialogs/qfontdialog_mac.mm @@ -514,7 +514,7 @@ void *QFontDialogPrivate::_q_constructNativePanel() #ifdef QT_MAC_USE_COCOA [[NSFontManager sharedFontManager] setTarget:delegate]; #endif - setFont(delegate, QApplication::font()); + setFont(delegate, q_func()->currentFont()); { // hack to get correct initial layout -- cgit v0.12 From 0e9bd62d905db6e0015a58609a747bb22521f8cc Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 3 Mar 2010 15:30:46 +0100 Subject: Mac: non-modal native qfontdialog does not work at all This was never implemented, and as it stands, just creating a QFontDialog and calling show on it will not show anything. This patch makes sure that show works, and that one can have more than one font dialog showing at the same time (but only the first one will be native) Reviewed-by: cduclos --- src/gui/dialogs/qfontdialog.cpp | 12 +-- src/gui/dialogs/qfontdialog_mac.mm | 165 +++++++++++++++++++++++++++---------- src/gui/dialogs/qfontdialog_p.h | 6 +- src/gui/kernel/qwidget_mac.mm | 6 +- 4 files changed, 135 insertions(+), 54 deletions(-) diff --git a/src/gui/dialogs/qfontdialog.cpp b/src/gui/dialogs/qfontdialog.cpp index 8e17830..b159fa7 100644 --- a/src/gui/dialogs/qfontdialog.cpp +++ b/src/gui/dialogs/qfontdialog.cpp @@ -174,6 +174,11 @@ void QFontDialogPrivate::init() { Q_Q(QFontDialog); +#ifdef Q_WS_MAC + nativeDialogInUse = false; + delegate = 0; +#endif + q->setSizeGripEnabled(true); q->setWindowTitle(QFontDialog::tr("Select Font")); @@ -329,10 +334,6 @@ void QFontDialogPrivate::init() familyList->setFocus(); retranslateStrings(); - -#ifdef Q_WS_MAC - delegate = 0; -#endif } /*! @@ -345,8 +346,7 @@ QFontDialog::~QFontDialog() #ifdef Q_WS_MAC Q_D(QFontDialog); if (d->delegate) { - QFontDialogPrivate::closeCocoaFontPanel(d->delegate); - QFontDialogPrivate::sharedFontPanelAvailable = true; + d->closeCocoaFontPanel(); return; } #endif diff --git a/src/gui/dialogs/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm index fd7fd68..c6653cb 100644 --- a/src/gui/dialogs/qfontdialog_mac.mm +++ b/src/gui/dialogs/qfontdialog_mac.mm @@ -58,6 +58,14 @@ typedef float CGFloat; // Should only not be defined on 32-bit platforms #endif +QT_BEGIN_NAMESPACE + +extern void macStartInterceptNSPanelCtor(); +extern void macStopInterceptNSPanelCtor(); +extern NSButton *macCreateButton(const char *text, NSView *superview); +extern bool qt_mac_is_macsheet(const QWidget *w); // qwidget_mac.mm + +QT_END_NAMESPACE QT_USE_NAMESPACE // should a priori be kept in sync with qcolordialog_mac.mm @@ -103,6 +111,9 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin priv:(QFontDialogPrivate *)priv extraWidth:(CGFloat)extraWidth extraHeight:(CGFloat)extraHeight; +- (void)showModelessPanel; +- (void)showWindowModalSheet:(QWidget *)docWidget; +- (void)runApplicationModalPanel; - (void)changeFont:(id)sender; - (void)changeAttributes:(id)sender; - (BOOL)windowShouldClose:(id)window; @@ -171,6 +182,20 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) [cancelButton setAction:@selector(onCancelClicked)]; [cancelButton setTarget:self]; } + +#ifdef QT_MAC_USE_COCOA + // Stack the native dialog in front of its parent, if any: + QFontDialog *q = mPriv->fontDialog(); + if (!qt_mac_is_macsheet(q)) { + if (QWidget *parent = q->parentWidget()) { + if (parent->isWindow()) { + [qt_mac_window_for(parent) + addChildWindow:[mStolenContentView window] ordered:NSWindowAbove]; + } + } + } +#endif + mQtFont = new QFont(); return self; } @@ -181,6 +206,36 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) [super dealloc]; } +- (void)showModelessPanel +{ + NSWindow *ourPanel = [mStolenContentView window]; + [ourPanel makeKeyAndOrderFront:self]; +} + +- (void)runApplicationModalPanel +{ + QBoolBlocker nativeDialogOnTop(QApplicationPrivate::native_modal_dialog_active); + NSWindow *ourPanel = [mStolenContentView window]; + [NSApp runModalForWindow:ourPanel]; + QAbstractEventDispatcher::instance()->interrupt(); +} + +- (void)showWindowModalSheet:(QWidget *)docWidget +{ +#ifdef QT_MAC_USE_COCOA + Q_UNUSED(docWidget); + NSWindow *ourPanel = [mStolenContentView window]; + [NSApp beginSheet:ourPanel + modalForWindow:qt_mac_window_for(docWidget) + modalDelegate:0 + didEndSelector:0 + contextInfo:0 ]; +#else + Q_UNUSED(docWidget); + [self showModelessPanel]; +#endif +} + - (void)changeFont:(id)sender { NSFont *dummyFont = [NSFont userFontOfSize:12.0]; @@ -273,9 +328,8 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) NSSize cancelSizeHint = [mCancelButton frame].size; const CGFloat ButtonWidth = qMin(qMax(ButtonMinWidth, - qMax(okSizeHint.width, cancelSizeHint.width)), - CGFloat((frameSize.width - 2.0 * ButtonSideMargin - - ButtonSpacing) * 0.5)); + qMax(okSizeHint.width, cancelSizeHint.width)), + CGFloat((frameSize.width - 2.0 * ButtonSideMargin - ButtonSpacing) * 0.5)); const CGFloat ButtonHeight = qMax(ButtonMinHeight, qMax(okSizeHint.height, cancelSizeHint.height)); @@ -308,14 +362,12 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) NSFontManager *fontManager = [NSFontManager sharedFontManager]; [self setQtFont:qfontForCocoaFont([fontManager convertFont:[fontManager selectedFont]], *mQtFont)]; - [[mStolenContentView window] close]; [self finishOffWithCode:NSOKButton]; } - (void)onCancelClicked { Q_ASSERT(mPanelHackedWithButtons); - [[mStolenContentView window] close]; [self finishOffWithCode:NSCancelButton]; } @@ -359,14 +411,21 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) - (void)finishOffWithCode:(NSInteger)code { +#ifdef QT_MAC_USE_COCOA + QFontDialog *q = mPriv->fontDialog(); + if (QWidget *parent = q->parentWidget()) { + if (parent->isWindow()) { + [qt_mac_window_for(parent) removeChildWindow:[mStolenContentView window]]; + } + } +#endif + [NSApp stopModalWithCode:code]; - // Hack alert! - // Since this code path was never intended to be followed when starting from exec - // we need to force the dialog to communicate the new font, otherwise the signal - // won't get emitted. if(code == NSOKButton) mPriv->sampleEdit->setFont([self qtFont]); - mPriv->done((code == NSOKButton) ? QDialog::Accepted : QDialog::Rejected); + QMetaObject::invokeMethod(mPriv->fontDialog(), + (code == NSOKButton) ? "accept" : "reject", + Qt::QueuedConnection); } - (void)cleanUpAfterMyself @@ -392,18 +451,16 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) QT_BEGIN_NAMESPACE -extern void macStartInterceptNSPanelCtor(); -extern void macStopInterceptNSPanelCtor(); -extern NSButton *macCreateButton(const char *text, NSView *superview); - -void QFontDialogPrivate::closeCocoaFontPanel(void *delegate) +void QFontDialogPrivate::closeCocoaFontPanel() { QMacCocoaAutoReleasePool pool; QCocoaFontPanelDelegate *theDelegate = static_cast(delegate); NSWindow *ourPanel = [theDelegate actualPanel]; [ourPanel close]; [theDelegate cleanUpAfterMyself]; - [theDelegate autorelease]; + [theDelegate release]; + this->delegate = 0; + sharedFontPanelAvailable = true; } void QFontDialogPrivate::setFont(void *delegate, const QFont &font) @@ -441,10 +498,13 @@ void QFontDialogPrivate::setFont(void *delegate, const QFont &font) [static_cast(delegate) setQtFont:font]; } -void *QFontDialogPrivate::_q_constructNativePanel() +void QFontDialogPrivate::createNSFontPanelDelegate() { - QMacCocoaAutoReleasePool pool; + if (delegate) + return; + sharedFontPanelAvailable = false; + QMacCocoaAutoReleasePool pool; bool sharedFontPanelExisted = [NSFontPanel sharedFontPanelExists]; NSFontPanel *sharedFontPanel = [NSFontPanel sharedFontPanel]; [sharedFontPanel setHidesOnDeactivate:false]; @@ -466,8 +526,7 @@ void *QFontDialogPrivate::_q_constructNativePanel() // compute dialogExtra{Width,Height} dialogExtraWidth = 2.0 * DialogSideMargin; - dialogExtraHeight = DialogTopMargin + ButtonTopMargin + ButtonMinHeight - + ButtonBottomMargin; + dialogExtraHeight = DialogTopMargin + ButtonTopMargin + ButtonMinHeight + ButtonBottomMargin; // compute initial contents rectangle NSRect contentRect = [sharedFontPanel contentRectForFrameRect:[sharedFontPanel frame]]; @@ -480,7 +539,6 @@ void *QFontDialogPrivate::_q_constructNativePanel() backing:NSBackingStoreBuffered defer:YES]; [ourPanel setReleasedWhenClosed:YES]; - stolenContentView = [sharedFontPanel contentView]; // steal the font panel's contents view @@ -500,21 +558,23 @@ void *QFontDialogPrivate::_q_constructNativePanel() [ourPanel setContentView:ourContentView]; [ourPanel setDefaultButtonCell:[okButton cell]]; } - // create a delegate and set it - QCocoaFontPanelDelegate *delegate = - [[QCocoaFontPanelDelegate alloc] initWithFontPanel:sharedFontPanel + + // create the delegate and set it + QCocoaFontPanelDelegate *del = [[QCocoaFontPanelDelegate alloc] initWithFontPanel:sharedFontPanel stolenContentView:stolenContentView okButton:okButton cancelButton:cancelButton priv:this extraWidth:dialogExtraWidth extraHeight:dialogExtraHeight]; - [ourPanel setDelegate:delegate]; - [[NSFontManager sharedFontManager] setDelegate:delegate]; + delegate = del; + [ourPanel setDelegate:del]; + + [[NSFontManager sharedFontManager] setDelegate:del]; #ifdef QT_MAC_USE_COCOA - [[NSFontManager sharedFontManager] setTarget:delegate]; + [[NSFontManager sharedFontManager] setTarget:del]; #endif - setFont(delegate, q_func()->currentFont()); + setFont(del, q_func()->currentFont()); { // hack to get correct initial layout @@ -522,13 +582,12 @@ void *QFontDialogPrivate::_q_constructNativePanel() frameRect.size.width += 1.0; [ourPanel setFrame:frameRect display:NO]; frameRect.size.width -= 1.0; - frameRect.size = [delegate windowWillResize:ourPanel toSize:frameRect.size]; + frameRect.size = [del windowWillResize:ourPanel toSize:frameRect.size]; [ourPanel setFrame:frameRect display:NO]; [ourPanel center]; } NSString *title = @"Select font"; [ourPanel setTitle:title]; - return delegate; } void QFontDialogPrivate::mac_nativeDialogModalHelp() @@ -553,29 +612,47 @@ void QFontDialogPrivate::mac_nativeDialogModalHelp() // and "adding" the buttons. void QFontDialogPrivate::_q_macRunNativeAppModalPanel() { - QBoolBlocker nativeDialogOnTop(QApplicationPrivate::native_modal_dialog_active); - QCocoaFontPanelDelegate *delegate = (QCocoaFontPanelDelegate *)_q_constructNativePanel(); - NSWindow *ourPanel = [delegate actualPanel]; - [ourPanel retain]; + createNSFontPanelDelegate(); + QCocoaFontPanelDelegate *del = static_cast(delegate); + [del runApplicationModalPanel]; +} - int rval = [NSApp runModalForWindow:ourPanel]; - QAbstractEventDispatcher::instance()->interrupt(); - [ourPanel release]; - [delegate cleanUpAfterMyself]; - [delegate release]; - bool isOk = (rval == NSOKButton); - if(isOk) - rescode = QDialog::Accepted; +bool QFontDialogPrivate::showCocoaFontPanel() +{ + if (!sharedFontPanelAvailable) + return false; + + Q_Q(QFontDialog); + QMacCocoaAutoReleasePool pool; + createNSFontPanelDelegate(); + QCocoaFontPanelDelegate *del = static_cast(delegate); + if (qt_mac_is_macsheet(q)) + [del showWindowModalSheet:q->parentWidget()]; else - rescode = QDialog::Rejected; + [del showModelessPanel]; + return true; } +bool QFontDialogPrivate::hideCocoaFontPanel() +{ + if (!delegate){ + // Nothing to do. We return false to leave the question + // open regarding whether or not to go native: + return false; + } else { + closeCocoaFontPanel(); + // Even when we hide it, we are still using a + // native dialog, so return true: + return true; + } +} bool QFontDialogPrivate::setVisible_sys(bool visible) { Q_Q(QFontDialog); if (!visible == q->isHidden()) return false; - return visible; + + return visible ? showCocoaFontPanel() : hideCocoaFontPanel(); } QT_END_NAMESPACE diff --git a/src/gui/dialogs/qfontdialog_p.h b/src/gui/dialogs/qfontdialog_p.h index c18b87b..8676be3 100644 --- a/src/gui/dialogs/qfontdialog_p.h +++ b/src/gui/dialogs/qfontdialog_p.h @@ -139,19 +139,21 @@ public: QByteArray memberToDisconnectOnClose; #ifdef Q_WS_MAC - static void closeCocoaFontPanel(void *delegate); static void setFont(void *delegate, const QFont &font); inline void done(int result) { q_func()->done(result); } inline QFontDialog *fontDialog() { return q_func(); } void *delegate; + void closeCocoaFontPanel(); bool nativeDialogInUse; bool canBeNativeDialog(); bool setVisible_sys(bool visible); - void *_q_constructNativePanel(); + void createNSFontPanelDelegate(); void _q_macRunNativeAppModalPanel(); void mac_nativeDialogModalHelp(); + bool showCocoaFontPanel(); + bool hideCocoaFontPanel(); static bool sharedFontPanelAvailable; #endif diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index 6d8c97b..3622bac 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -3433,8 +3433,10 @@ void QWidgetPrivate::show_sys() // The window is modally shaddowed, so we need to make // sure that we don't pop in front of the modal window: [window orderFront:window]; - if (NSWindow *modalWin = qt_mac_window_for(top)) - [modalWin orderFront:window]; + if (!top->testAttribute(Qt::WA_DontShowOnScreen)) { + if (NSWindow *modalWin = qt_mac_window_for(top)) + [modalWin orderFront:window]; + } } #endif if (q->windowType() == Qt::Popup) { -- cgit v0.12 From f84112bb06e9a7a65afe9ba20d3419b33aee1e5d Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Fri, 5 Mar 2010 10:11:12 +0100 Subject: Mac: qfontdialog autotest failes The reason is the way we leave modality in the font dialog. When we do, we need to close the non-native qfontdialog as well, but doing so will issue callbacks (like set_visible_sys(false)), that will cause problems. This patch makes sure we wait with such callbacks until the native modal event loop has finished executing Reviewed-by: cduclos --- src/gui/dialogs/qfontdialog_mac.mm | 42 ++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/src/gui/dialogs/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm index c6653cb..919790b 100644 --- a/src/gui/dialogs/qfontdialog_mac.mm +++ b/src/gui/dialogs/qfontdialog_mac.mm @@ -103,6 +103,8 @@ const int StyleMask = NSTitledWindowMask | NSClosableWindowMask | NSResizableWin BOOL mPanelHackedWithButtons; CGFloat mDialogExtraWidth; CGFloat mDialogExtraHeight; + int mReturnCode; + BOOL mAppModal; } - (id)initWithFontPanel:(NSFontPanel *)panel stolenContentView:(NSView *)stolenContentView @@ -172,6 +174,8 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) mPanelHackedWithButtons = (okButton != 0); mDialogExtraWidth = extraWidth; mDialogExtraHeight = extraHeight; + mReturnCode = -1; + mAppModal = false; if (mPanelHackedWithButtons) { [self relayout]; @@ -208,6 +212,7 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) - (void)showModelessPanel { + mAppModal = false; NSWindow *ourPanel = [mStolenContentView window]; [ourPanel makeKeyAndOrderFront:self]; } @@ -215,24 +220,37 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) - (void)runApplicationModalPanel { QBoolBlocker nativeDialogOnTop(QApplicationPrivate::native_modal_dialog_active); + mAppModal = true; NSWindow *ourPanel = [mStolenContentView window]; [NSApp runModalForWindow:ourPanel]; QAbstractEventDispatcher::instance()->interrupt(); + + if (mReturnCode == NSOKButton) + mPriv->fontDialog()->accept(); + else + mPriv->fontDialog()->reject(); } - (void)showWindowModalSheet:(QWidget *)docWidget { #ifdef QT_MAC_USE_COCOA - Q_UNUSED(docWidget); + NSWindow *window = qt_mac_window_for(docWidget); +#else + WindowRef hiwindowRef = qt_mac_window_for(docWidget); + NSWindow *window = [[NSWindow alloc] initWithWindowRef:hiwindowRef]; + CFRetain(hiwindowRef); +#endif + + mAppModal = false; NSWindow *ourPanel = [mStolenContentView window]; [NSApp beginSheet:ourPanel - modalForWindow:qt_mac_window_for(docWidget) + modalForWindow:window modalDelegate:0 didEndSelector:0 contextInfo:0 ]; -#else - Q_UNUSED(docWidget); - [self showModelessPanel]; + +#ifndef QT_MAC_USE_COCOA + CFRelease(hiwindowRef); #endif } @@ -420,12 +438,18 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) } #endif - [NSApp stopModalWithCode:code]; if(code == NSOKButton) mPriv->sampleEdit->setFont([self qtFont]); - QMetaObject::invokeMethod(mPriv->fontDialog(), - (code == NSOKButton) ? "accept" : "reject", - Qt::QueuedConnection); + + if (mAppModal) { + mReturnCode = code; + [NSApp stopModalWithCode:code]; + } else { + if (code == NSOKButton) + mPriv->fontDialog()->accept(); + else + mPriv->fontDialog()->reject(); + } } - (void)cleanUpAfterMyself -- cgit v0.12 From 8428a5e9dbe8f872ba229aad360c8579638479ae Mon Sep 17 00:00:00 2001 From: Jani Hautakangas Date: Fri, 5 Mar 2010 16:40:04 +0200 Subject: Fix for QTBUG-6659 Parent window accepts pointer events wrongly Parent window accepted pointer events even though the child was modal. That was because closing popup didn't restore pointer grab for modal window. Task-number: QTBUG-6659 Reviewed-by: axis --- src/gui/kernel/qapplication_s60.cpp | 3 +++ src/gui/kernel/qwidget_s60.cpp | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index 2a90ba6..395ceca 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -1473,6 +1473,9 @@ void QApplicationPrivate::closePopup(QWidget *popup) QWidget *fw = QApplicationPrivate::active_window ? QApplicationPrivate::active_window->focusWidget() : q_func()->focusWidget(); if (fw) { + if(fw->window()->isModal()) // restore pointer capture for modal window + fw->effectiveWinId()->SetPointerCapture(true); + if (fw != q_func()->focusWidget()) { fw->setFocus(Qt::PopupFocusReason); } else { diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index 7bbc142..7fb21d2 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -1237,8 +1237,10 @@ void QWidget::releaseMouse() { if (!qt_nograb() && QWidgetPrivate::mouseGrabber == this) { Q_ASSERT(testAttribute(Qt::WA_WState_Created)); - WId id = effectiveWinId(); - id->SetPointerCapture(false); + if(!window()->isModal()) { + WId id = effectiveWinId(); + id->SetPointerCapture(false); + } QWidgetPrivate::mouseGrabber = 0; #ifndef QT_NO_CURSOR QApplication::restoreOverrideCursor(); -- cgit v0.12 From 647b3395e41827c232fa9203ee0590da2b6d257a Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Fri, 5 Mar 2010 15:48:10 +0100 Subject: Fix for torn off menus that were way too big --- src/gui/widgets/qmenu.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp index 9a4916e..ebc05d9 100644 --- a/src/gui/widgets/qmenu.cpp +++ b/src/gui/widgets/qmenu.cpp @@ -260,9 +260,6 @@ void QMenuPrivate::updateActionRects() const icone = style->pixelMetric(QStyle::PM_SmallIconSize, &opt, q); const int fw = style->pixelMetric(QStyle::PM_MenuPanelWidth, &opt, q); const int deskFw = style->pixelMetric(QStyle::PM_MenuDesktopFrameWidth, &opt, q); - - const int sfcMargin = style->sizeFromContents(QStyle::CT_Menu, &opt, QApplication::globalStrut(), q).width() - QApplication::globalStrut().width(); - const int min_column_width = q->minimumWidth() - (sfcMargin + leftmargin + rightmargin + 2 * (fw + hmargin)); const int tearoffHeight = tearoff ? style->pixelMetric(QStyle::PM_MenuTearoffHeight, &opt, q) : 0; //for compatability now - will have to refactor this away.. @@ -336,7 +333,7 @@ void QMenuPrivate::updateActionRects() const if (!sz.isEmpty()) { - max_column_width = qMax(min_column_width, qMax(max_column_width, sz.width())); + max_column_width = qMax(max_column_width, sz.width()); //wrapping if (!scroll && y+sz.height()+vmargin > dh - (deskFw * 2)) { @@ -350,6 +347,10 @@ void QMenuPrivate::updateActionRects() const } max_column_width += tabWidth; //finally add in the tab width + const int sfcMargin = style->sizeFromContents(QStyle::CT_Menu, &opt, QApplication::globalStrut(), q).width() - QApplication::globalStrut().width(); + const int min_column_width = q->minimumWidth() - (sfcMargin + leftmargin + rightmargin + 2 * (fw + hmargin)); + max_column_width = qMax(min_column_width, max_column_width); + //calculate position const int base_y = vmargin + fw + topmargin + -- cgit v0.12 From 9ce72402149da7cdd3b204e7981b1c810595d699 Mon Sep 17 00:00:00 2001 From: Carlos Manuel Duclos Vergara Date: Fri, 5 Mar 2010 15:59:24 +0100 Subject: Fixing compilation error, missing ifdef. Reviewed-by: Prasanth --- src/plugins/bearer/corewlan/qcorewlanengine.mm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm index 8f174db..9a213e7 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.mm +++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm @@ -199,9 +199,10 @@ QCoreWlanEngine::~QCoreWlanEngine() { while (!foundConfigurations.isEmpty()) delete foundConfigurations.takeFirst(); - +#if defined(MAC_SDK_10_6) [listener remove]; [listener release]; +#endif } QString QCoreWlanEngine::getInterfaceFromId(const QString &id) -- cgit v0.12 From ddaa4643c1ee96c9dfc16b1c247481a240e2e16b Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 5 Mar 2010 15:59:37 +0100 Subject: fix "using namespace" recursion crash Task-number: QTBUG-8360 --- .../lupdate/testdata/good/namespaces/main.cpp | 60 ++++++++++++++++++++++ .../testdata/good/namespaces/project.ts.result | 24 +++++++++ tools/linguist/lupdate/cpp.cpp | 28 +++++++--- 3 files changed, 104 insertions(+), 8 deletions(-) diff --git a/tests/auto/linguist/lupdate/testdata/good/namespaces/main.cpp b/tests/auto/linguist/lupdate/testdata/good/namespaces/main.cpp index 42cc55b..a5b36ca 100644 --- a/tests/auto/linguist/lupdate/testdata/good/namespaces/main.cpp +++ b/tests/auto/linguist/lupdate/testdata/good/namespaces/main.cpp @@ -135,4 +135,64 @@ Q_OBJECT } }; +// QTBUG-8360 +namespace A { + +void foo() +{ + using namespace A; +} + +void goo() +{ + return QObject::tr("Bla"); +} + +} + + +namespace AA { +namespace B { + +using namespace AA; + +namespace C { + +class Test : public QObject { + Q_OBJECT +}; + +} + +} + +using namespace B; +using namespace C; + +void goo() +{ + AA::Test::tr("howdy?"); +} + +} + + +namespace A1 { +namespace B { + +class Test : public QObject { + Q_OBJECT +}; + +using namespace A1; + +void foo() +{ + B::B::B::Test::tr("yeeee-ha!"); +} + +} +} + + #include "main.moc" diff --git a/tests/auto/linguist/lupdate/testdata/good/namespaces/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/namespaces/project.ts.result index c1a34bd..94df9d3 100644 --- a/tests/auto/linguist/lupdate/testdata/good/namespaces/project.ts.result +++ b/tests/auto/linguist/lupdate/testdata/good/namespaces/project.ts.result @@ -2,6 +2,22 @@ + A1::B::Test + + + yeeee-ha! + + + + + AA::B::C::Test + + + howdy? + + + + Class @@ -79,4 +95,12 @@ + + QObject + + + Bla + + + diff --git a/tools/linguist/lupdate/cpp.cpp b/tools/linguist/lupdate/cpp.cpp index 6bd9108..2d5620e 100644 --- a/tools/linguist/lupdate/cpp.cpp +++ b/tools/linguist/lupdate/cpp.cpp @@ -260,6 +260,8 @@ private: bool qualifyOneCallbackOwn(const Namespace *ns, void *context) const; bool qualifyOneCallbackUsing(const Namespace *ns, void *context) const; bool qualifyOne(const NamespaceList &namespaces, int nsCnt, const HashString &segment, + NamespaceList *resolved, QSet *visitedUsings) const; + bool qualifyOne(const NamespaceList &namespaces, int nsCnt, const HashString &segment, NamespaceList *resolved) const; bool fullyQualify(const NamespaceList &namespaces, int nsCnt, const QList &segments, bool isDeclaration, @@ -1036,15 +1038,16 @@ QStringList CppParser::stringListifySegments(const QList &segments) } struct QualifyOneData { - QualifyOneData(const NamespaceList &ns, int nsc, const HashString &seg, NamespaceList *rslvd) - : namespaces(ns), nsCount(nsc), segment(seg), resolved(rslvd) + QualifyOneData(const NamespaceList &ns, int nsc, const HashString &seg, NamespaceList *rslvd, + QSet *visited) + : namespaces(ns), nsCount(nsc), segment(seg), resolved(rslvd), visitedUsings(visited) {} const NamespaceList &namespaces; int nsCount; const HashString &segment; NamespaceList *resolved; - QSet visitedUsings; + QSet *visitedUsings; }; bool CppParser::qualifyOneCallbackOwn(const Namespace *ns, void *context) const @@ -1078,18 +1081,19 @@ bool CppParser::qualifyOneCallbackUsing(const Namespace *ns, void *context) cons { QualifyOneData *data = (QualifyOneData *)context; foreach (const HashStringList &use, ns->usings) - if (!data->visitedUsings.contains(use)) { - data->visitedUsings.insert(use); - if (qualifyOne(use.value(), use.value().count(), data->segment, data->resolved)) + if (!data->visitedUsings->contains(use)) { + data->visitedUsings->insert(use); + if (qualifyOne(use.value(), use.value().count(), data->segment, data->resolved, + data->visitedUsings)) return true; } return false; } bool CppParser::qualifyOne(const NamespaceList &namespaces, int nsCnt, const HashString &segment, - NamespaceList *resolved) const + NamespaceList *resolved, QSet *visitedUsings) const { - QualifyOneData data(namespaces, nsCnt, segment, resolved); + QualifyOneData data(namespaces, nsCnt, segment, resolved, visitedUsings); if (visitNamespace(namespaces, nsCnt, &CppParser::qualifyOneCallbackOwn, &data)) return true; @@ -1097,6 +1101,14 @@ bool CppParser::qualifyOne(const NamespaceList &namespaces, int nsCnt, const Has return visitNamespace(namespaces, nsCnt, &CppParser::qualifyOneCallbackUsing, &data); } +bool CppParser::qualifyOne(const NamespaceList &namespaces, int nsCnt, const HashString &segment, + NamespaceList *resolved) const +{ + QSet visitedUsings; + + return qualifyOne(namespaces, nsCnt, segment, resolved, &visitedUsings); +} + bool CppParser::fullyQualify(const NamespaceList &namespaces, int nsCnt, const QList &segments, bool isDeclaration, NamespaceList *resolved, QStringList *unresolved) const -- cgit v0.12 From 1fdaff30cde418a858170547e9d3c514617ba366 Mon Sep 17 00:00:00 2001 From: ck Date: Fri, 5 Mar 2010 16:11:35 +0100 Subject: Assistant: Fix warnings about unused variables. --- tools/assistant/tools/assistant/helpviewer_qwv.cpp | 2 +- tools/assistant/tools/assistant/mainwindow.cpp | 4 ++-- tools/assistant/tools/assistant/mainwindow.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/assistant/tools/assistant/helpviewer_qwv.cpp b/tools/assistant/tools/assistant/helpviewer_qwv.cpp index 9bb66e1..a656416 100644 --- a/tools/assistant/tools/assistant/helpviewer_qwv.cpp +++ b/tools/assistant/tools/assistant/helpviewer_qwv.cpp @@ -223,7 +223,7 @@ bool HelpPage::acceptNavigationRequest(QWebFrame *, if (type == QWebPage::NavigationTypeLinkClicked && (m_keyboardModifiers & Qt::ControlModifier || m_pressedButtons == Qt::MidButton)) { - if (HelpViewer* viewer = centralWidget->newEmptyTab()) + if (centralWidget->newEmptyTab()) centralWidget->setSource(url); m_pressedButtons = Qt::NoButton; m_keyboardModifiers = Qt::NoModifier; diff --git a/tools/assistant/tools/assistant/mainwindow.cpp b/tools/assistant/tools/assistant/mainwindow.cpp index 8096218..687e6bc 100644 --- a/tools/assistant/tools/assistant/mainwindow.cpp +++ b/tools/assistant/tools/assistant/mainwindow.cpp @@ -341,7 +341,7 @@ void MainWindow::lookForNewQtDocumentation() m_qtDocInstaller = new QtDocInstaller(qtDocInfos); connect(m_qtDocInstaller, SIGNAL(docsInstalled(bool)), this, - SLOT(qtDocumentationInstalled(bool))); + SLOT(qtDocumentationInstalled())); connect(m_qtDocInstaller, SIGNAL(qchFileNotFound(QString)), this, SLOT(resetQtDocInfo(QString))); connect(m_qtDocInstaller, SIGNAL(registerDocumentation(QString, QString)), @@ -351,7 +351,7 @@ void MainWindow::lookForNewQtDocumentation() m_qtDocInstaller->installDocs(); } -void MainWindow::qtDocumentationInstalled(bool newDocsInstalled) +void MainWindow::qtDocumentationInstalled() { TRACE_OBJ statusBar()->clearMessage(); diff --git a/tools/assistant/tools/assistant/mainwindow.h b/tools/assistant/tools/assistant/mainwindow.h index 40ca624..8e4276d 100644 --- a/tools/assistant/tools/assistant/mainwindow.h +++ b/tools/assistant/tools/assistant/mainwindow.h @@ -112,7 +112,7 @@ private slots: void lookForNewQtDocumentation(); void indexingStarted(); void indexingFinished(); - void qtDocumentationInstalled(bool newDocsInstalled); + void qtDocumentationInstalled(); void registerDocumentation(const QString &component, const QString &absFileName); void resetQtDocInfo(const QString &component); -- cgit v0.12 From 56c9bd9a4c03418ad0ba83b576bcc278e86bfe99 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 5 Mar 2010 14:12:18 +0100 Subject: FreeType: Fast lookup of Latin-1 glyphs Store all glyphs with index < 256 in a pointer array for fast lookup Reviewed-by: Benjamin Poulain --- src/gui/painting/qpaintengine_raster.cpp | 2 +- src/gui/painting/qtextureglyphcache.cpp | 2 +- src/gui/text/qfontengine_ft.cpp | 70 +++++++++++++++++++++++++------- src/gui/text/qfontengine_ft_p.h | 16 +++++++- 4 files changed, 72 insertions(+), 18 deletions(-) diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index a7c2a0b..bfcf7db 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -3390,7 +3390,7 @@ void QRasterPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textIte }; for(int i = 0; i < glyphs.size(); i++) { - QFontEngineFT::Glyph *glyph = gset->glyph_data.value(glyphs[i]); + QFontEngineFT::Glyph *glyph = gset->getGlyph(glyphs[i]); if (!glyph || glyph->format != neededFormat) { if (!lockedFace) diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp index cf3957b..4418018 100644 --- a/src/gui/painting/qtextureglyphcache.cpp +++ b/src/gui/painting/qtextureglyphcache.cpp @@ -195,7 +195,7 @@ QImage QTextureGlyphCache::textureMapForGlyph(glyph_t g) const QFontEngineFT::QGlyphSet *gset = ft->loadTransformedGlyphSet(m_transform); if (gset && ft->loadGlyphs(gset, &g, 1, format)) { - QFontEngineFT::Glyph *glyph = gset->glyph_data.value(g); + QFontEngineFT::Glyph *glyph = gset->getGlyph(g); const int bytesPerLine = (format == QFontEngineFT::Format_Mono ? ((glyph->width + 31) & ~31) >> 3 : (glyph->width + 3) & ~3); return QImage(glyph->data, glyph->width, glyph->height, bytesPerLine, imageFormat); diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 17ade64..6b40aad 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -746,7 +746,7 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format) QFontEngineFT::Glyph *QFontEngineFT::loadGlyphMetrics(QGlyphSet *set, uint glyph) const { - Glyph *g = set->glyph_data.value(glyph); + Glyph *g = set->getGlyph(glyph); if (g) return g; @@ -858,10 +858,10 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph, Glyph } } - Glyph *g = set->glyph_data.value(glyph); + Glyph *g = set->getGlyph(glyph); if (g && g->format == format) { if (uploadToServer && !g->uploadedToServer) { - set->glyph_data[glyph] = 0; + set->setGlyph(glyph, 0); delete g; g = 0; } else { @@ -1158,7 +1158,7 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph, Glyph uploadGlyphToServer(set, glyph, g, &info, glyph_buffer_size); } - set->glyph_data[glyph] = g; + set->setGlyph(glyph, g); return g; } @@ -1381,8 +1381,7 @@ QFontEngineFT::QGlyphSet *QFontEngineFT::loadTransformedGlyphSet(const QTransfor } gs = &transformedGlyphSets[0]; - qDeleteAll(gs->glyph_data); - gs->glyph_data.clear(); + gs->clear(); gs->id = allocateServerGlyphSet(); @@ -1398,7 +1397,7 @@ bool QFontEngineFT::loadGlyphs(QGlyphSet *gs, glyph_t *glyphs, int num_glyphs, G FT_Face face = 0; for (int i = 0; i < num_glyphs; ++i) { - Glyph *glyph = gs->glyph_data.value(glyphs[i]); + Glyph *glyph = gs->getGlyph(glyphs[i]); if (glyph == 0 || glyph->format != format) { if (!face) { face = lockFace(); @@ -1635,7 +1634,7 @@ void QFontEngineFT::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlag FT_Face face = 0; if (flags & QTextEngine::DesignMetrics) { for (int i = 0; i < glyphs->numGlyphs; i++) { - Glyph *g = defaultGlyphSet.glyph_data.value(glyphs->glyphs[i]); + Glyph *g = defaultGlyphSet.getGlyph(glyphs->glyphs[i]); if (g) { glyphs->advances_x[i] = QFixed::fromFixed(g->linearAdvance); } else { @@ -1648,7 +1647,7 @@ void QFontEngineFT::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlag } } else { for (int i = 0; i < glyphs->numGlyphs; i++) { - Glyph *g = defaultGlyphSet.glyph_data.value(glyphs->glyphs[i]); + Glyph *g = defaultGlyphSet.getGlyph(glyphs->glyphs[i]); if (g) { glyphs->advances_x[i] = QFixed(g->advance); } else { @@ -1677,7 +1676,7 @@ glyph_metrics_t QFontEngineFT::boundingBox(const QGlyphLayout &glyphs) QFixed ymax = 0; QFixed xmax = 0; for (int i = 0; i < glyphs.numGlyphs; i++) { - Glyph *g = defaultGlyphSet.glyph_data.value(glyphs.glyphs[i]); + Glyph *g = defaultGlyphSet.getGlyph(glyphs.glyphs[i]); if (!g) { if (!face) face = lockFace(); @@ -1719,7 +1718,7 @@ glyph_metrics_t QFontEngineFT::boundingBox(glyph_t glyph) { FT_Face face = 0; glyph_metrics_t overall; - Glyph *g = defaultGlyphSet.glyph_data.value(glyph); + Glyph *g = defaultGlyphSet.getGlyph(glyph); if (!g) { face = lockFace(); g = loadGlyph(glyph, Format_None, true); @@ -1783,8 +1782,7 @@ glyph_metrics_t QFontEngineFT::boundingBox(glyph_t glyph, const QTransform &matr transformedGlyphSets.prepend(QGlyphSet()); } glyphSet = &transformedGlyphSets[0]; - qDeleteAll(glyphSet->glyph_data); - glyphSet->glyph_data.clear(); + glyphSet->clear(); glyphSet->id = allocateServerGlyphSet(); glyphSet->transformationMatrix = m; } @@ -1792,7 +1790,7 @@ glyph_metrics_t QFontEngineFT::boundingBox(glyph_t glyph, const QTransform &matr } else { glyphSet = &defaultGlyphSet; } - Glyph * g = glyphSet->glyph_data.value(glyph); + Glyph * g = glyphSet->getGlyph(glyph); if (!g) { face = lockFace(); g = loadGlyphMetrics(glyphSet, glyph); @@ -1881,7 +1879,7 @@ QImage QFontEngineFT::alphaRGBMapForGlyph(glyph_t g, int margin, const QTransfor void QFontEngineFT::removeGlyphFromCache(glyph_t glyph) { - delete defaultGlyphSet.glyph_data.take(glyph); + defaultGlyphSet.removeGlyphFromCache(glyph); } int QFontEngineFT::glyphCount() const @@ -1937,11 +1935,53 @@ QFontEngineFT::QGlyphSet::QGlyphSet() transformationMatrix.yy = 0x10000; transformationMatrix.xy = 0; transformationMatrix.yx = 0; + memset(fast_glyph_data, 0, sizeof(fast_glyph_data)); + fast_glyph_count = 0; } QFontEngineFT::QGlyphSet::~QGlyphSet() { + clear(); +} + +void QFontEngineFT::QGlyphSet::clear() +{ + if (fast_glyph_count > 0) { + for (int i = 0; i < 256; ++i) { + if (fast_glyph_data[i]) { + delete fast_glyph_data[i]; + fast_glyph_data[i] = 0; + } + } + fast_glyph_count = 0; + } qDeleteAll(glyph_data); + glyph_data.clear(); +} + +void QFontEngineFT::QGlyphSet::removeGlyphFromCache(int index) +{ + if (index < 256) { + if (fast_glyph_data[index]) { + delete fast_glyph_data[index]; + fast_glyph_data[index] = 0; + if (fast_glyph_count > 0) + --fast_glyph_count; + } + } else { + delete glyph_data.take(index); + } +} + +void QFontEngineFT::QGlyphSet::setGlyph(int index, Glyph *glyph) +{ + if (index < 256) { + if (!fast_glyph_data[index]) + ++fast_glyph_count; + fast_glyph_data[index] = glyph; + } else { + glyph_data.insert(index, glyph); + } } unsigned long QFontEngineFT::allocateServerGlyphSet() diff --git a/src/gui/text/qfontengine_ft_p.h b/src/gui/text/qfontengine_ft_p.h index 98dd002..12b7da8 100644 --- a/src/gui/text/qfontengine_ft_p.h +++ b/src/gui/text/qfontengine_ft_p.h @@ -180,7 +180,21 @@ public: FT_Matrix transformationMatrix; unsigned long id; // server sided id, GlyphSet for X11 bool outline_drawing; + + void removeGlyphFromCache(int index); + void clear(); + inline Glyph *getGlyph(int index) const + { + if (index < 256) + return fast_glyph_data[index]; + return glyph_data.value(index); + } + void setGlyph(int index, Glyph *glyph); + +private: mutable QHash glyph_data; // maps from glyph index to glyph data + mutable Glyph *fast_glyph_data[256]; // for fast lookup of glyphs < 256 + mutable int fast_glyph_count; }; virtual QFontEngine::FaceId faceId() const; @@ -252,7 +266,7 @@ public: QGlyphSet *defaultGlyphs() { return &defaultGlyphSet; } GlyphFormat defaultGlyphFormat() const { return defaultFormat; } - inline Glyph *cachedGlyph(glyph_t g) const { return defaultGlyphSet.glyph_data.value(g); } + inline Glyph *cachedGlyph(glyph_t g) const { return defaultGlyphSet.getGlyph(g); } QGlyphSet *loadTransformedGlyphSet(const QTransform &matrix); bool loadGlyphs(QGlyphSet *gs, glyph_t *glyphs, int num_glyphs, GlyphFormat format = Format_Render); -- cgit v0.12 From a4a1cfe900ab06ff1f8dbe30d73476937a122582 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 5 Mar 2010 14:57:01 +0100 Subject: Reset the byte order in the iconv codec after using it. Otherwise, if you try run QString(QChar(0xfffe)).toLocal8Bit() iconv will be left in byte-swapping mode. Reviewed-by: Denis Dzyubenko --- src/corelib/codecs/qiconvcodec.cpp | 41 +++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/src/corelib/codecs/qiconvcodec.cpp b/src/corelib/codecs/qiconvcodec.cpp index 0f73d9b..0fcdf96 100644 --- a/src/corelib/codecs/qiconvcodec.cpp +++ b/src/corelib/codecs/qiconvcodec.cpp @@ -299,6 +299,32 @@ QString QIconvCodec::convertToUnicode(const char* chars, int len, ConverterState Q_GLOBAL_STATIC(QThreadStorage, fromUnicodeState) +static bool setByteOrder(iconv_t cd) +{ +#if !defined(NO_BOM) + // give iconv() a BOM + char buf[4]; + ushort bom[] = { QChar::ByteOrderMark }; + + char *outBytes = buf; + char *inBytes = reinterpret_cast(bom); + size_t outBytesLeft = sizeof buf; + size_t inBytesLeft = sizeof bom; + +#if defined(GNU_LIBICONV) + const char **inBytesPtr = const_cast(&inBytes); +#else + char **inBytesPtr = &inBytes; +#endif + + if (iconv(cd, inBytesPtr, &inBytesLeft, &outBytes, &outBytesLeft) == (size_t) -1) { + return false; + } +#endif // NO_BOM + + return true; +} + QByteArray QIconvCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *convState) const { char *inBytes; @@ -325,17 +351,8 @@ QByteArray QIconvCodec::convertFromUnicode(const QChar *uc, int len, ConverterSt IconvState *&state = ts->localData(); if (!state) { state = new IconvState(QIconvCodec::createIconv_t(0, UTF16)); - if (state->cd != reinterpret_cast(-1)) { - size_t outBytesLeft = len + 3; // +3 for the BOM - QByteArray ba(outBytesLeft, Qt::Uninitialized); - outBytes = ba.data(); - -#if !defined(NO_BOM) - // give iconv() a BOM - QChar bom[] = { QChar(QChar::ByteOrderMark) }; - inBytes = reinterpret_cast(bom); - inBytesLeft = sizeof(bom); - if (iconv(state->cd, inBytesPtr, &inBytesLeft, &outBytes, &outBytesLeft) == (size_t) -1) { + if (state->cd == reinterpret_cast(-1)) { + if (!setByteOrder(state->cd)) { perror("QIconvCodec::convertFromUnicode: using ASCII for conversion, iconv failed for BOM"); iconv_close(state->cd); @@ -343,7 +360,6 @@ QByteArray QIconvCodec::convertFromUnicode(const QChar *uc, int len, ConverterSt return QString(uc, len).toAscii(); } -#endif // NO_BOM } } if (state->cd == reinterpret_cast(-1)) { @@ -422,6 +438,7 @@ QByteArray QIconvCodec::convertFromUnicode(const QChar *uc, int len, ConverterSt // reset to initial state iconv(state->cd, 0, &inBytesLeft, 0, &outBytesLeft); + setByteOrder(state->cd); ba.resize(ba.size() - outBytesLeft); -- cgit v0.12 From f58c75bb0a6738ec65520f73e7ed7a791d8a77ab Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 4 Mar 2010 13:10:19 +0100 Subject: Doc: Update QString docs about real ASCII and to/fromAscii and NULs. Despite the names, the QString::toAscii and QString::fromAscii functions are not about ASCII. One can set an ASCII-incompatible codec using QTextCodec::setCodecForCStrings, which may lead to loss of information. Also update the docs about how the functions that take QByteArray take embedded NULs in the QByteArray into account. The result is: stop conversion at NUL: operator=, operator==, operator!= include NUL in conversion: operator<, operator<=, operator>, operator>= Reviewed-by: ossi --- src/corelib/tools/qstring.cpp | 78 ++++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 31 deletions(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index e9b7b9a..eedb981 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -335,7 +335,7 @@ const QString::Null QString::null = { }; \macro QT_NO_CAST_TO_ASCII \relates QString - disables automatic conversion from QString to ASCII 8-bit strings (char *) + disables automatic conversion from QString to 8-bit strings (char *) \sa QT_NO_CAST_FROM_ASCII, QT_NO_CAST_FROM_BYTEARRAY */ @@ -391,10 +391,10 @@ const QString::Null QString::null = { }; with code values above 65535 are stored using surrogate pairs, i.e., two consecutive \l{QChar}s.) - \l{Unicode} is an international standard that supports most of - the writing systems in use today. It is a superset of ASCII and - Latin-1 (ISO 8859-1), and all the ASCII/Latin-1 characters are - available at the same code positions. + \l{Unicode} is an international standard that supports most of the + writing systems in use today. It is a superset of US-ASCII (ANSI + X3.4-1986) and Latin-1 (ISO 8859-1), and all the US-ASCII/Latin-1 + characters are available at the same code positions. Behind the scenes, QString uses \l{implicit sharing} (copy-on-write) to reduce memory usage and to avoid the needless @@ -562,11 +562,13 @@ const QString::Null QString::null = { }; toLatin1(), toUtf8(), and toLocal8Bit(). \list - \o toAscii() returns an ASCII encoded 8-bit string. + \o toAscii() returns an 8-bit string encoded using the codec + specified by QTextCodec::codecForCStrings (by default, that's + Latin 1). \o toLatin1() returns a Latin-1 (ISO 8859-1) encoded 8-bit string. \o toUtf8() returns a UTF-8 encoded 8-bit string. UTF-8 is a - superset of ASCII that supports the entire Unicode character - set through multibyte sequences. + superset of US-ASCII (ANSI X3.4-1986) that supports the entire + Unicode character set through multibyte sequences. \o toLocal8Bit() returns an 8-bit string using the system's local encoding. \endlist @@ -578,7 +580,7 @@ const QString::Null QString::null = { }; As mentioned above, QString provides a lot of functions and operators that make it easy to interoperate with \c{const char *} strings. But this functionality is a double-edged sword: It makes - QString more convenient to use if all strings are ASCII or + QString more convenient to use if all strings are US-ASCII or Latin-1, but there is always the risk that an implicit conversion from or to \c{const char *} is done using the wrong 8-bit encoding. To minimize these risks, you can turn off these implicit @@ -586,9 +588,9 @@ const QString::Null QString::null = { }; \list \o \c QT_NO_CAST_FROM_ASCII disables automatic conversions from - ASCII to Unicode. + C string literals and pointers to Unicode. \o \c QT_NO_CAST_TO_ASCII disables automatic conversion from QString - to ASCII. + to C strings. \endlist One way to define these preprocessor symbols globally for your @@ -837,7 +839,7 @@ int QString::grow(int size) /*! \fn QString::QString(const char *str) - Constructs a string initialized with the ASCII string \a str. The + Constructs a string initialized with the 8-bit string \a str. The given const char pointer is converted to Unicode using the fromAscii() function. @@ -1337,8 +1339,9 @@ QString &QString::operator=(const QString &other) \overload operator=() - Assigns \a ba to this string. The byte array is converted to - Unicode using the fromAscii() function. + Assigns \a ba to this string. The byte array is converted to Unicode + using the fromAscii() function. This function stops conversion at the + first NUL character found, or the end of the \a ba byte array. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This @@ -2131,7 +2134,8 @@ bool QString::operator==(const QLatin1String &other) const \overload operator==() The \a other byte array is converted to a QString using the - fromAscii() function. + fromAscii() function. This function stops conversion at the + first NUL character found, or the end of the \a ba byte array. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This @@ -2192,7 +2196,8 @@ bool QString::operator<(const QLatin1String &other) const \overload operator<() The \a other byte array is converted to a QString using the - fromAscii() function. + fromAscii() function. If any NUL characters ('\0') are embedded + in the \a ba byte array, they will be included in the transformation. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This @@ -2234,7 +2239,8 @@ bool QString::operator<(const QLatin1String &other) const \overload operator<=() The \a other byte array is converted to a QString using the - fromAscii() function. + fromAscii() function. If any NUL characters ('\0') are embedded + in the \a ba byte array, they will be included in the transformation. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This @@ -2292,7 +2298,8 @@ bool QString::operator>(const QLatin1String &other) const \overload operator>() The \a other byte array is converted to a QString using the - fromAscii() function. + fromAscii() function. If any NUL characters ('\0') are embedded + in the \a ba byte array, they will be included in the transformation. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This @@ -2334,7 +2341,8 @@ bool QString::operator>(const QLatin1String &other) const \overload operator>=() The \a other byte array is converted to a QString using the - fromAscii() function. + fromAscii() function. If any NUL characters ('\0') are embedded + in the \a ba byte array, they will be included in the transformation. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This can be useful if you want @@ -2376,7 +2384,8 @@ bool QString::operator>(const QLatin1String &other) const \overload operator!=() The \a other byte array is converted to a QString using the - fromAscii() function. + fromAscii() function. If any NUL characters ('\0') are embedded + in the \a ba byte array, they will be included in the transformation. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This can be useful if you want @@ -3578,12 +3587,15 @@ QByteArray QString::toLatin1() const // isn't necessary in the header. See task 177402. /*! - Returns an 8-bit ASCII representation of the string as a QByteArray. + Returns an 8-bit representation of the string as a QByteArray. If a codec has been set using QTextCodec::setCodecForCStrings(), it is used to convert Unicode to 8-bit char; otherwise this function does the same as toLatin1(). + Note that, despite the name, this function does not necessarily return an US-ASCII + (ANSI X3.4-1986) string and its result may not be US-ASCII compatible. + \sa fromAscii(), toLatin1(), toUtf8(), toLocal8Bit(), QTextCodec */ QByteArray QString::toAscii() const @@ -3952,14 +3964,16 @@ QString QString::fromLocal8Bit(const char *str, int size) /*! Returns a QString initialized with the first \a size characters - of the 8-bit ASCII string \a str. + of the 8-bit string \a str. If \a size is -1 (default), it is taken to be qstrlen(\a str). - If a codec has been set using QTextCodec::setCodecForCStrings(), - it is used to convert \a str to Unicode; otherwise this function - does the same as fromLatin1(). + Note that, despite the name, this function actually uses the codec + defined by QTextCodec::setCodecForCStrings() to convert \a str to + Unicode. Depending on the codec, it may not accept valid US-ASCII (ANSI + X3.4-1986) input. If no codec has been set, this function does the same + as fromLatin1(). \sa toAscii(), fromLatin1(), fromUtf8(), fromLocal8Bit() */ @@ -4399,8 +4413,10 @@ QString& QString::fill(QChar ch, int size) \overload operator+=() - Appends the byte array \a ba to this string. The byte array is - converted to Unicode using the fromAscii() function. + Appends the byte array \a ba to this string. The byte array is converted + to Unicode using the fromAscii() function. If any NUL characters ('\0') + are embedded in the \a ba byte array, they will be included in the + transformation. You can disable this function by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This @@ -7085,9 +7101,9 @@ void QString::updateProperties() const This operator is mostly useful to pass a QString to a function that accepts a std::string object. - If the QString contains non-ASCII Unicode characters, using this - operator can lead to loss of information, since the implementation - calls toAscii(). + If the QString contains Unicode characters that the + QTextCodec::codecForCStrings() codec cannot handle, using this operator + can lead to loss of information. This operator is only available if Qt is configured with STL compatibility enabled. @@ -7138,7 +7154,7 @@ QString QString::fromRawData(const QChar *unicode, int size) } /*! \class QLatin1String - \brief The QLatin1String class provides a thin wrapper around an ASCII/Latin-1 encoded string literal. + \brief The QLatin1String class provides a thin wrapper around an US-ASCII/Latin-1 encoded string literal. \ingroup string-processing \reentrant -- cgit v0.12 From e1c5eb5247bae6e9ccc2c7985c36c5953f3a72d1 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 4 Mar 2010 13:14:20 +0100 Subject: Doc: fix a mistake saying that const char* was converted to QLatin1String --- src/corelib/tools/qstring.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index eedb981..5d946cf 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -7241,7 +7241,7 @@ QString QString::fromRawData(const QChar *unicode, int size) \since 4.3 \overload - The \a other const char pointer is converted to a QLatin1String using + The \a other const char pointer is converted to a QString using the QString::fromAscii() function. You can disable this operator by defining \c @@ -7266,7 +7266,7 @@ QString QString::fromRawData(const QChar *unicode, int size) \since 4.3 \overload operator!=() - The \a other const char pointer is converted to a QLatin1String using + The \a other const char pointer is converted to a QString using the QString::fromAscii() function. You can disable this operator by defining \c @@ -7292,7 +7292,7 @@ QString QString::fromRawData(const QChar *unicode, int size) \since 4.3 \overload - The \a other const char pointer is converted to a QLatin1String using + The \a other const char pointer is converted to a QString using the QString::fromAscii() function. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII @@ -7318,7 +7318,7 @@ QString QString::fromRawData(const QChar *unicode, int size) \since 4.3 \overload - The \a other const char pointer is converted to a QLatin1String using + The \a other const char pointer is converted to a QString using the QString::fromAscii() function. You can disable this operator by defining \c @@ -7344,7 +7344,7 @@ QString QString::fromRawData(const QChar *unicode, int size) \since 4.3 \overload - The \a other const char pointer is converted to a QLatin1String using + The \a other const char pointer is converted to a QString using the QString::fromAscii() function. You can disable this operator by defining \c -- cgit v0.12 From 2101a184311d12e1e52a0d421f7a81a28ca333d3 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 5 Mar 2010 11:49:49 +0100 Subject: Doc: add some notes about QString lossy/lossless conversions --- src/corelib/tools/qstring.cpp | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 5d946cf..9097570 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -3572,8 +3572,10 @@ static QByteArray toLatin1_helper(const QChar *data, int length) /*! Returns a Latin-1 representation of the string as a QByteArray. - The returned byte array is undefined if the string contains - non-Latin1 characters. + + The returned byte array is undefined if the string contains non-Latin1 + characters. Those characters may be suppressed or replaced with a + question mark. \sa fromLatin1(), toAscii(), toUtf8(), toLocal8Bit(), QTextCodec */ @@ -3623,8 +3625,13 @@ static QByteArray toLocal8Bit_helper(const QChar *data, int length) QByteArray. The returned byte array is undefined if the string contains characters not supported by the local 8-bit encoding. - QTextCodec::codecForLocale() is used to perform the conversion - from Unicode. + QTextCodec::codecForLocale() is used to perform the conversion from + Unicode. If the locale encoding could not be determined, this function + does the same as toLatin1(). + + If this string contains any characters that cannot be encoded in the + locale, the returned byte array is undefined. Those characters may be + suppressed or replaced by another. \sa fromLocal8Bit(), toAscii(), toLatin1(), toUtf8(), QTextCodec */ @@ -3640,6 +3647,17 @@ QByteArray QString::toLocal8Bit() const /*! Returns a UTF-8 representation of the string as a QByteArray. + UTF-8 is a Unicode codec and can represent all characters in a Unicode + string like QString. + + However, in the Unicode range, there are certain codepoints that are not + considered characters. The Unicode standard reserves the last two + codepoints in each Unicode Plane (U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, + U+2FFFE, etc.), as well as 16 codepoints in the range U+FDD0..U+FDDF, + inclusive, as non-characters. If any of those appear in the string, they + may be discarded and will not appear in the UTF-8 representation, or they + may be replaced by one or more replacement characters. + \sa fromUtf8(), toAscii(), toLatin1(), toLocal8Bit(), QTextCodec */ QByteArray QString::toUtf8() const @@ -3687,7 +3705,10 @@ QByteArray QString::toUtf8() const /*! \since 4.2 - Returns a UCS-4 representation of the string as a QVector. + Returns a UCS-4/UTF-32 representation of the string as a QVector. + + UCS-4 is a Unicode codec and is lossless. All characters from this string + can be encoded in UCS-4. \sa fromUtf8(), toAscii(), toLatin1(), toLocal8Bit(), QTextCodec, fromUcs4(), toWCharArray() */ @@ -3989,6 +4010,18 @@ QString QString::fromAscii(const char *str, int size) If \a size is -1 (default), it is taken to be qstrlen(\a str). + UTF-8 is a Unicode codec and can represent all characters in a Unicode + string like QString. However, invalid sequences are possible with UTF-8 + and, if any such are found, they will be replaced with one or more + "replacement characters", or suppressed. These include non-Unicode + sequences, non-characters, overlong sequences or surrogate codepoints + encoded into UTF-8. + + Non-characters are codepoints that the Unicode standard reserves and must + not be used in text interchange. They are the last two codepoints in each + Unicode Plane (U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, U+2FFFE, etc.), as well + as 16 codepoints in the range U+FDD0..U+FDDF, inclusive. + \sa toUtf8(), fromAscii(), fromLatin1(), fromLocal8Bit() */ QString QString::fromUtf8(const char *str, int size) -- cgit v0.12 From ca33c72439ba92ca8bdeca4d172550602f01f0cc Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 5 Mar 2010 12:55:14 +0100 Subject: Make QString::toUtf8() also use QUtf8. Reviewed-By: Denis Dzyubenko --- src/corelib/tools/qstring.cpp | 44 +++++-------------------------------------- 1 file changed, 5 insertions(+), 39 deletions(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 9097570..703ec67 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -563,7 +563,7 @@ const QString::Null QString::null = { }; \list \o toAscii() returns an 8-bit string encoded using the codec - specified by QTextCodec::codecForCStrings (by default, that's + specified by QTextCodec::codecForCStrings (by default, that is Latin 1). \o toLatin1() returns a Latin-1 (ISO 8859-1) encoded 8-bit string. \o toUtf8() returns a UTF-8 encoded 8-bit string. UTF-8 is a @@ -3662,44 +3662,10 @@ QByteArray QString::toLocal8Bit() const */ QByteArray QString::toUtf8() const { - QByteArray ba; - if (d->size) { - int l = d->size; - int rlen = l*3+1; - ba.resize(rlen); - uchar *cursor = (uchar*)ba.data(); - const ushort *ch =d->data; - for (int i=0; i < l; i++) { - uint u = *ch; - if (u < 0x80) { - *cursor++ = (uchar)u; - } else { - if (u < 0x0800) { - *cursor++ = 0xc0 | ((uchar) (u >> 6)); - } else { - if (QChar(u).isHighSurrogate() && i < l-1) { - ushort low = ch[1]; - if (QChar(low).isLowSurrogate()) { - ++ch; - ++i; - u = QChar::surrogateToUcs4(u,low); - } - } - if (u > 0xffff) { - *cursor++ = 0xf0 | ((uchar) (u >> 18)); - *cursor++ = 0x80 | (((uchar) (u >> 12)) & 0x3f); - } else { - *cursor++ = 0xe0 | ((uchar) (u >> 12)); - } - *cursor++ = 0x80 | (((uchar) (u >> 6)) & 0x3f); - } - *cursor++ = 0x80 | ((uchar) (u&0x3f)); - } - ++ch; - } - ba.resize(cursor - (uchar*)ba.constData()); - } - return ba; + if (isNull()) + return QByteArray(); + + return QUtf8::convertFromUnicode(constData(), length(), 0); } /*! -- cgit v0.12 From 4f02ca5c9458299185d447da87058d6e8ca1b260 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 5 Mar 2010 13:12:43 +0100 Subject: Finish reverting the UTF-8 hack added in 80ea01c6 (P4 106704, Qt 3.2). This code was removed from QString in 539cd1e5 (P4 259474, Qt 4.3), but apparently lingered on the UTF-8 codec code. Reviewed-by: Denis Dzyubenko --- src/corelib/codecs/qutfcodec.cpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp index 7655c51..742b2e7 100644 --- a/src/corelib/codecs/qutfcodec.cpp +++ b/src/corelib/codecs/qutfcodec.cpp @@ -107,15 +107,8 @@ QByteArray QUtf8::convertFromUnicode(const QChar *uc, int len, QTextCodec::Conve *cursor++ = 0xc0 | ((uchar) (u >> 6)); } else { if (u > 0xffff) { - // see QString::fromUtf8() and QString::utf8() for explanations - if (u > 0x10fe00 && u < 0x10ff00) { - *cursor++ = (u - 0x10fe00); - ++ch; - continue; - } else { - *cursor++ = 0xf0 | ((uchar) (u >> 18)); - *cursor++ = 0x80 | (((uchar) (u >> 12)) & 0x3f); - } + *cursor++ = 0xf0 | ((uchar) (u >> 18)); + *cursor++ = 0x80 | (((uchar) (u >> 12)) & 0x3f); } else { *cursor++ = 0xe0 | (((uchar) (u >> 12)) & 0x3f); } -- cgit v0.12 From 8b30b72948d5f16d59f8799f3889f563e2c6e24d Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 5 Mar 2010 14:10:57 +0100 Subject: Make the UTF-8 encoder/decoder not accept Unicode non-characters Reviewed-By: Denis Dzyubenko --- src/corelib/codecs/qutfcodec.cpp | 28 +++++++++++-- tests/auto/utf8/tst_utf8.cpp | 85 ++++++++++++++++++++++++++++++++++------ 2 files changed, 97 insertions(+), 16 deletions(-) diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp index 742b2e7..233bd8f 100644 --- a/src/corelib/codecs/qutfcodec.cpp +++ b/src/corelib/codecs/qutfcodec.cpp @@ -48,6 +48,19 @@ QT_BEGIN_NAMESPACE enum { Endian = 0, Data = 1 }; +static inline bool isUnicodeNonCharacter(uint ucs4) +{ + // Unicode has a couple of "non-characters" that one can use internally, + // but are not allowed to be used for text interchange. + // + // Those are the last two entries each Unicode Plane (U+FFFE, U+FFFF, + // U+1FFFE, U+1FFFF, etc.) as well as the entries between U+FDD0 and + // U+FDEF (inclusive) + + return (ucs4 & 0xfffe) == 0xfffe + || (ucs4 - 0xfdd0U) < 16; +} + QByteArray QUtf8::convertFromUnicode(const QChar *uc, int len, QTextCodec::ConverterState *state) { uchar replacement = '?'; @@ -106,6 +119,14 @@ QByteArray QUtf8::convertFromUnicode(const QChar *uc, int len, QTextCodec::Conve if (u < 0x0800) { *cursor++ = 0xc0 | ((uchar) (u >> 6)); } else { + // is it one of the Unicode non-characters? + if (isUnicodeNonCharacter(u)) { + *cursor = replacement; + ++ch; + ++invalid; + continue; + } + if (u > 0xffff) { *cursor++ = 0xf0 | ((uchar) (u >> 18)); *cursor++ = 0x80 | (((uchar) (u >> 12)) & 0x3f); @@ -172,15 +193,16 @@ QString QUtf8::convertToUnicode(const char *chars, int len, QTextCodec::Converte --need; if (!need) { // utf-8 bom composes into 0xfeff code point + bool nonCharacter; if (!headerdone && uc == 0xfeff) { // dont do anything, just skip the BOM - } else if (uc > 0xffff && uc < 0x110000) { + } else if (!(nonCharacter = isUnicodeNonCharacter(uc)) && uc > 0xffff && uc < 0x110000) { // surrogate pair Q_ASSERT((qch - (ushort*)result.unicode()) + 2 < result.length()); *qch++ = QChar::highSurrogate(uc); *qch++ = QChar::lowSurrogate(uc); - } else if ((uc < min_uc) || (uc >= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) { - // error: overlong sequence, UTF16 surrogate or BOM + } else if ((uc < min_uc) || (uc >= 0xd800 && uc <= 0xdfff) || nonCharacter || uc >= 0x110000) { + // error: overlong sequence, UTF16 surrogate or non-character *qch++ = replacement; ++invalid; } else { diff --git a/tests/auto/utf8/tst_utf8.cpp b/tests/auto/utf8/tst_utf8.cpp index 1183b81..7bbbfab 100644 --- a/tests/auto/utf8/tst_utf8.cpp +++ b/tests/auto/utf8/tst_utf8.cpp @@ -73,6 +73,9 @@ private slots: void invalidUtf8_data(); void invalidUtf8(); + + void nonCharacters_data(); + void nonCharacters(); }; void tst_Utf8::initTestCase() @@ -134,8 +137,8 @@ void tst_Utf8::roundTrip_data() static const uint utf32_5[] = { 0x010203 }; QTest::newRow("utf8_5") << QByteArray(utf8_5) << QString::fromUcs4(utf32_5, 1); - static const char utf8_6[] = "\364\217\277\277"; // U+10FFFF - static const uint utf32_6[] = { 0x10FFFF }; + static const char utf8_6[] = "\364\217\277\275"; // U+10FFFD + static const uint utf32_6[] = { 0x10FFFD }; QTest::newRow("utf8_6") << QByteArray(utf8_6) << QString::fromUcs4(utf32_6, 1); static const char utf8_7[] = "abc\302\240\303\241\303\251\307\275 \342\202\254def"; @@ -144,10 +147,10 @@ void tst_Utf8::roundTrip_data() ' ', 0x20AC, 'd', 'e', 'f', 0 }; QTest::newRow("utf8_7") << QByteArray(utf8_7) << QString::fromUtf16(utf16_7); - static const char utf8_8[] = "abc\302\240\303\241\303\251\307\275 \364\217\277\277 \342\202\254def"; + static const char utf8_8[] = "abc\302\240\303\241\303\251\307\275 \364\217\277\275 \342\202\254def"; static const uint utf32_8[] = { 'a', 'b', 'c', 0x00A0, 0x00E1, 0x00E9, 0x01FD, - ' ', 0x10FFFF, ' ', + ' ', 0x10FFFD, ' ', 0x20AC, 'd', 'e', 'f', 0 }; QTest::newRow("utf8_8") << QByteArray(utf8_8) << QString::fromUcs4(utf32_8); } @@ -214,14 +217,6 @@ void tst_Utf8::invalidUtf8_data() QTest::newRow("4chars-2") << QByteArray("\xF0\x90\xC0\x80"); QTest::newRow("4chars-3") << QByteArray("\xF0\xC0\x80\x80"); - // U+FFFE and U+FFFF are non-characters and must not be present - // U+FFFE: 1111 11 1111 11 1110 - // encoding: xxxz:1111 xz11:1111 xz11:1110 - QTest::newRow("fffe") << QByteArray("\xEF\xBF\xBE"); - // U+FFFF: 1111 11 1111 11 1111 - // encoding: xxxz:1111 xz11:1111 xz11:1111 - QTest::newRow("ffff") << QByteArray("\xEF\xBF\xBF"); - // Surrogate pairs must now be present either // U+D800: 1101 10 0000 00 0000 // encoding: xxxz:1101 xz10:0000 xz00:0000 @@ -302,7 +297,7 @@ void tst_Utf8::invalidUtf8() QFETCH_GLOBAL(bool, useLocale); QSharedPointer decoder = QSharedPointer(codec->makeDecoder()); - QString decoded = decoder->toUnicode(utf8); + decoder->toUnicode(utf8); // Only enforce correctness on our UTF-8 decoder // The system's UTF-8 codec is sometimes buggy @@ -314,5 +309,69 @@ void tst_Utf8::invalidUtf8() qWarning("System codec does not report failure when it should. Should report bug upstream."); } +void tst_Utf8::nonCharacters_data() +{ + QTest::addColumn("utf8"); + QTest::addColumn("utf16"); + + // Unicode has a couple of "non-characters" that one can use internally, + // but are not allowed to be used for text interchange. + // + // Those are the last two entries each Unicode Plane (U+FFFE, U+FFFF, + // U+1FFFE, U+1FFFF, etc.) as well as the entries between U+FDD0 and + // U+FDEF (inclusive) + + // U+FDD0 through U+FDEF + for (int i = 0; i < 16; ++i) { + char utf8[] = { 0357, 0267, 0220 + i, 0 }; + QString utf16 = QChar(0xfdd0 + i); + QTest::newRow(qPrintable(QString::number(0xfdd0 + i, 16))) << QByteArray(utf8) << utf16; + } + + // the last two in Planes 1 through 16 + for (uint plane = 1; plane <= 16; ++plane) { + for (uint lower = 0xfffe; lower < 0x10000; ++lower) { + uint ucs4 = (plane << 16) | lower; + char utf8[] = { 0xf0 | uchar(ucs4 >> 18), + 0x80 | (uchar(ucs4 >> 12) & 0x3f), + 0x80 | (uchar(ucs4 >> 6) & 0x3f), + 0x80 | (uchar(ucs4) & 0x3f), + 0 }; + ushort utf16[] = { QChar::highSurrogate(ucs4), QChar::lowSurrogate(ucs4), 0 }; + + QTest::newRow(qPrintable(QString::number(ucs4, 16))) << QByteArray(utf8) << QString::fromUtf16(utf16); + } + } + + QTest::newRow("fffe") << QByteArray("\xEF\xBF\xBE") << QString(QChar(0xfffe)); + QTest::newRow("ffff") << QByteArray("\xEF\xBF\xBF") << QString(QChar(0xffff)); +} + +void tst_Utf8::nonCharacters() +{ + QFETCH(QByteArray, utf8); + QFETCH(QString, utf16); + QFETCH_GLOBAL(bool, useLocale); + + QSharedPointer decoder = QSharedPointer(codec->makeDecoder()); + decoder->toUnicode(utf8); + + // Only enforce correctness on our UTF-8 decoder + // The system's UTF-8 codec is sometimes buggy + // GNU libc's iconv is known to accept U+FFFF and U+FFFE encoded as UTF-8 + // OS X's iconv is known to accept those, plus surrogates and codepoints above U+10FFFF + if (!useLocale) + QVERIFY(decoder->hasFailure()); + else if (!decoder->hasFailure()) + qWarning("System codec does not report failure when it should. Should report bug upstream."); + + QSharedPointer encoder(codec->makeEncoder()); + encoder->fromUnicode(utf16); + if (!useLocale) + QVERIFY(encoder->hasFailure()); + else if (!encoder->hasFailure()) + qWarning("System codec does not report failure when it should. Should report bug upstream."); +} + QTEST_MAIN(tst_Utf8) #include "tst_utf8.moc" -- cgit v0.12 From 59068d0d90ed28a1a99a5fdef3d4aaadddb31d6d Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:16 +0100 Subject: adjust unicode tables generator to work better under win * protect data-files from crlf line-endings since generator asserts on windows because of crlf line endings * assume generator is a console app Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/.gitattributes | 1 + util/unicode/unicode.pro | 1 + 2 files changed, 2 insertions(+) create mode 100644 util/unicode/.gitattributes diff --git a/util/unicode/.gitattributes b/util/unicode/.gitattributes new file mode 100644 index 0000000..772b88f --- /dev/null +++ b/util/unicode/.gitattributes @@ -0,0 +1 @@ +data/*.txt -crlf diff --git a/util/unicode/unicode.pro b/util/unicode/unicode.pro index a53f70a..0250c2a 100644 --- a/util/unicode/unicode.pro +++ b/util/unicode/unicode.pro @@ -1,2 +1,3 @@ SOURCES += main.cpp QT = core +CONFIG += console -- cgit v0.12 From 43c4852de3c990c0f84bedfec3da168cb259e19d Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:18 +0100 Subject: apply some (forgotten) changes to generator as they were applied to the data b6542eb2 - Thierry Bastian) fix to exported symbol 2e429e40 - Lars Knoll) N'Ko support Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 8f27d4a..4d20b22 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -38,9 +38,11 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ + #include #include #include +#include #include #include #include @@ -275,7 +277,7 @@ const char *methods = " }\n" "\n" " Q_CORE_EXPORT int QT_FASTCALL script(uint ucs4);\n" - " Q_CORE_EXPORT_INLINE int QT_FASTCALL script(const QChar &ch) {\n" + " inline int script(const QChar &ch) {\n" " return script(ch.unicode());\n" " }\n\n"; @@ -1644,6 +1646,7 @@ QByteArray createScriptEnumDeclaration() "Lao", "Malayalam", "Myanmar", + "Nko", "Ogham", "Oriya", "Runic", @@ -1683,9 +1686,12 @@ QByteArray createScriptEnumDeclaration() scriptHash[i] = i; } - declaration += ",\n "; - declaration += scriptName; + if (scriptName != "Inherited") { + declaration += ",\n "; + declaration += scriptName; + } } + declaration += ",\n Inherited"; declaration += ",\n ScriptCount = Inherited"; // output the ones that are an alias for 'Common' -- cgit v0.12 From c0e07ee419b9bf3023d5802a7e685c0d3c817185 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:20 +0100 Subject: minor cleanups and styling fixes for generator and generated code Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 190 ++++++++++++++++++++++++++------------------------ 1 file changed, 98 insertions(+), 92 deletions(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 4d20b22..70d362d 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -49,11 +49,16 @@ #include #include +#define DATA_VERSION_S "5.0" +#define DATA_VERSION_STR "QChar::Unicode_5_0" + +#define LAST_CODEPOINT 0x10ffff + static struct AgeMap { const char *age; const QChar::UnicodeVersion version; -} ageMap [] = { +} ageMap[] = { { "1.1", QChar::Unicode_1_1 }, { "2.0", QChar::Unicode_2_0 }, { "2.1", QChar::Unicode_2_1_2 }, @@ -65,11 +70,10 @@ static struct AgeMap { { "5.0", QChar::Unicode_5_0 }, { 0, QChar::Unicode_Unassigned } }; -#define CURRENT_UNICODE_VERSION "QChar::Unicode_5_0" static const char *grapheme_break_string = " enum GraphemeBreak {\n" - " GraphemeBreakOther, \n" + " GraphemeBreakOther,\n" " GraphemeBreakCR,\n" " GraphemeBreakLF,\n" " GraphemeBreakControl,\n" @@ -161,7 +165,7 @@ static void initWordBreak() { WordBreakMidNum, "MidNum" }, { WordBreakNumeric, "Numeric" }, { WordBreakExtendNumLet, "ExtendNumLet" }, - { WordBreakFormat, 0 } + { WordBreakFormat, 0 } }; WordBreakList *d = breaks; while (d->name) { @@ -220,7 +224,7 @@ static void initSentenceBreak() { SentenceBreakATerm, "ATerm" }, { SentenceBreakSTerm, "STerm" }, { SentenceBreakClose, "Close" }, - { SentenceBreakOther, 0 } + { SentenceBreakOther, 0 } }; SentenceBreakList *d = breaks; while (d->name) { @@ -230,32 +234,6 @@ static void initSentenceBreak() } -// Keep this one in sync with the code in createPropertyInfo -const char *property_string = - " struct Properties {\n" - " ushort category : 8;\n" - " ushort line_break_class : 8;\n" - " ushort direction : 8;\n" - " ushort combiningClass :8;\n" - " ushort joining : 2;\n" - " signed short digitValue : 6; /* 5 needed */\n" - " ushort unicodeVersion : 4;\n" - " ushort lowerCaseSpecial : 1;\n" - " ushort upperCaseSpecial : 1;\n" - " ushort titleCaseSpecial : 1;\n" - " ushort caseFoldSpecial : 1; /* currently unused */\n" - " signed short mirrorDiff : 16;\n" - " signed short lowerCaseDiff : 16;\n" - " signed short upperCaseDiff : 16;\n" - " signed short titleCaseDiff : 16;\n" - " signed short caseFoldDiff : 16;\n" - " ushort graphemeBreak : 8;\n" - " ushort wordBreak : 8;\n" - " ushort sentenceBreak : 8;\n" - " };\n" - " Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4);\n" - " Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2);\n"; - const char *lineBreakClass = " // see http://www.unicode.org/reports/tr14/tr14-19.html\n" " // we don't use the XX, AI and CB properties and map them to AL instead.\n" @@ -270,16 +248,40 @@ const char *lineBreakClass = " LineBreak_SP, LineBreak_CR, LineBreak_LF, LineBreak_BK\n" " };\n\n"; +// Keep this one in sync with the code in createPropertyInfo +const char *property_string = + " struct Properties {\n" + " ushort category : 8; /* 5 needed */\n" + " ushort line_break_class : 8; /* 6 needed */\n" + " ushort direction : 8; /* 5 needed */\n" + " ushort combiningClass : 8;\n" + " ushort joining : 2;\n" + " signed short digitValue : 6; /* 5 needed */\n" + " ushort unicodeVersion : 4;\n" + " ushort lowerCaseSpecial : 1;\n" + " ushort upperCaseSpecial : 1;\n" + " ushort titleCaseSpecial : 1;\n" + " ushort caseFoldSpecial : 1; /* currently unused */\n" + " signed short mirrorDiff : 16;\n" + " signed short lowerCaseDiff : 16;\n" + " signed short upperCaseDiff : 16;\n" + " signed short titleCaseDiff : 16;\n" + " signed short caseFoldDiff : 16;\n" + " ushort graphemeBreak : 8; /* 4 needed */\n" + " ushort wordBreak : 8; /* 4 needed */\n" + " ushort sentenceBreak : 8; /* 4 needed */\n" + " };\n" + " Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4);\n" + " Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2);\n"; + const char *methods = " Q_CORE_EXPORT QUnicodeTables::LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4);\n" - " inline int lineBreakClass(const QChar &ch) {\n" - " return QUnicodeTables::lineBreakClass(ch.unicode());\n" - " }\n" + " inline int lineBreakClass(const QChar &ch)\n" + " { return lineBreakClass(ch.unicode()); }\n" "\n" " Q_CORE_EXPORT int QT_FASTCALL script(uint ucs4);\n" - " inline int script(const QChar &ch) {\n" - " return script(ch.unicode());\n" - " }\n\n"; + " inline int script(const QChar &ch)\n" + " { return script(ch.unicode()); }\n\n"; struct PropertyFlags { @@ -314,7 +316,7 @@ struct PropertyFlags { // from DerivedAge.txt QChar::UnicodeVersion age : 4; int digitValue; - uint line_break_class : 5; + uint line_break_class : 6; int mirrorDiff : 16; @@ -447,7 +449,7 @@ static void initCategoryMap() struct Cat { QChar::Category cat; const char *name; - } categories [] = { + } categories[] = { { QChar::Mark_NonSpacing, "Mn" }, { QChar::Mark_SpacingCombining, "Mc" }, { QChar::Mark_Enclosing, "Me" }, @@ -555,7 +557,7 @@ static void initDecompositionMap() { QChar::Square, "" }, { QChar::Compat, "" }, { QChar::Fraction, "" }, - { QChar::NoDecomposition, 0 } + { QChar::NoDecomposition, 0 } }; Dec *d = decompositions; while (d->name) { @@ -574,11 +576,14 @@ int highestComposedCharacter = 0; int numLigatures = 0; int highestLigature = 0; -struct Ligature {ushort u1; ushort u2; ushort ligature;}; +struct Ligature { + ushort u1; + ushort u2; + ushort ligature; +}; // we need them sorted after the first component for fast lookup -bool operator < (const Ligature &l1, const Ligature &l2) { - return l1.u1 < l2.u1; -} +bool operator < (const Ligature &l1, const Ligature &l2) +{ return l1.u1 < l2.u1; } QHash > ligatureHashes; @@ -646,7 +651,7 @@ static void readUnicodeData() } if (!properties[UD_LowerCase].isEmpty()) { int lowerCase = properties[UD_LowerCase].toInt(&ok, 16); - Q_ASSERT (ok); + Q_ASSERT(ok); data.p.lowerCaseDiff = lowerCase - codepoint; maxLowerCaseDiff = qMax(maxLowerCaseDiff, qAbs(data.p.lowerCaseDiff)); if (codepoint > 0xffff) { @@ -660,7 +665,7 @@ static void readUnicodeData() properties[UD_TitleCase] = properties[UD_UpperCase]; if (!properties[UD_TitleCase].isEmpty()) { int titleCase = properties[UD_TitleCase].toInt(&ok, 16); - Q_ASSERT (ok); + Q_ASSERT(ok); data.p.titleCaseDiff = titleCase - codepoint; maxTitleCaseDiff = qMax(maxTitleCaseDiff, qAbs(data.p.titleCaseDiff)); if (codepoint > 0xffff) { @@ -731,10 +736,8 @@ static void readBidiMirroring() UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint)); d.mirroredChar = mirror; - if (qAbs(codepoint-d.mirroredChar) > maxMirroredDiff) - maxMirroredDiff = qAbs(codepoint - d.mirroredChar); - d.p.mirrorDiff = d.mirroredChar - codepoint; + maxMirroredDiff = qMax(maxMirroredDiff, qAbs(d.p.mirrorDiff)); unicodeData.insert(codepoint, d); } } @@ -870,7 +873,7 @@ static void readCompositionExclusion() unicodeData.insert(codepoint, d); } - for (int i = 0; i < 0x110000; ++i) { + for (int i = 0; i <= LAST_CODEPOINT; ++i) { UnicodeData data = unicodeData.value(i, UnicodeData(i)); if (!data.excludedComposition && data.decompositionType == QChar::Canonical @@ -935,10 +938,12 @@ static QByteArray createNormalizationCorrections() QList fields = line.split(';'); Q_ASSERT(fields.size() == 4); - NormalizationCorrection c; + NormalizationCorrection c = { 0, 0, 0 }; bool ok; c.codepoint = fields.at(0).toInt(&ok, 16); + Q_ASSERT(ok); c.mapped = fields.at(1).toInt(&ok, 16); + Q_ASSERT(ok); if (fields.at(3) == "3.2.0") c.version = QChar::Unicode_3_2; else if (fields.at(3) == "4.0.0") @@ -955,7 +960,6 @@ static QByteArray createNormalizationCorrections() "enum { NumNormalizationCorrections = " + QByteArray::number(numCorrections) + " };\n\n"; - return out; } @@ -963,7 +967,7 @@ static QByteArray createNormalizationCorrections() static void computeUniqueProperties() { qDebug("computeUniqueProperties:"); - for (int uc = 0; uc < 0x110000; ++uc) { + for (int uc = 0; uc <= LAST_CODEPOINT; ++uc) { UnicodeData d = unicodeData.value(uc, UnicodeData(uc)); int index = uniqueProperties.indexOf(d.p); @@ -1068,7 +1072,7 @@ static void readLineBreak() static void readSpecialCasing() { -// qDebug() << "Reading SpecialCasing.txt"; + qDebug() << "Reading SpecialCasing.txt"; QFile f("data/SpecialCasing.txt"); if (!f.exists()) qFatal("Couldn't find SpecialCasing.txt"); @@ -1180,7 +1184,7 @@ static void readCaseFolding() QList l = line.split(';'); bool ok; - uint codepoint = l[0].trimmed().toInt(&ok, 16); + int codepoint = l[0].trimmed().toInt(&ok, 16); Q_ASSERT(ok); @@ -1664,7 +1668,7 @@ QByteArray createScriptEnumDeclaration() // generate script enum QByteArray declaration; - declaration += " // See http://www.unicode.org/reports/tr24/tr24-5.html\n\n"; + declaration += " // See http://www.unicode.org/reports/tr24/tr24-5.html\n"; declaration += " enum Script {\n Common"; int uniqueScripts = 1; // Common @@ -1674,12 +1678,14 @@ QByteArray createScriptEnumDeclaration() QByteArray scriptName = scriptNames.at(i); // does the script require special processing? bool special = false; - for (int s = 0; !special && s < specialScriptsCount; ++s) { - if (scriptName == specialScripts[s]) + for (int s = 0; s < specialScriptsCount; ++s) { + if (scriptName == specialScripts[s]) { special = true; + break; + } } if (!special) { - scriptHash[i] = 0; // alias for 'Common' + scriptHash[i] = 0; // alias for 'Common' continue; } else { ++uniqueScripts; @@ -1698,10 +1704,9 @@ QByteArray createScriptEnumDeclaration() for (int i = 1; i < scriptNames.size(); ++i) { if (scriptHash.value(i) != 0) continue; - QByteArray scriptName = scriptNames.at(i); - scriptName += " = Common"; declaration += ",\n "; - declaration += scriptName; + declaration += scriptNames.at(i); + declaration += " = Common"; } declaration += "\n };\n"; @@ -1844,7 +1849,7 @@ static QByteArray createPropertyInfo() { qDebug("createPropertyInfo:"); - const int BMP_BLOCKSIZE=32; + const int BMP_BLOCKSIZE = 32; const int BMP_SHIFT = 5; const int BMP_END = 0x11000; const int SMP_END = 0x110000; @@ -1896,14 +1901,14 @@ static QByteArray createPropertyInfo() int bmp_block_data = bmp_blocks*BMP_BLOCKSIZE*2; int bmp_trie = BMP_END/BMP_BLOCKSIZE*2; int bmp_mem = bmp_block_data + bmp_trie; - qDebug(" %d unique blocks in BMP.",blocks.size()); + qDebug(" %d unique blocks in BMP.", blocks.size()); qDebug(" block data uses: %d bytes", bmp_block_data); qDebug(" trie data uses : %d bytes", bmp_trie); - int smp_block_data = (blocks.size()- bmp_blocks)*SMP_BLOCKSIZE*2; + int smp_block_data = (blocks.size() - bmp_blocks)*SMP_BLOCKSIZE*2; int smp_trie = (SMP_END-BMP_END)/SMP_BLOCKSIZE*2; int smp_mem = smp_block_data + smp_trie; - qDebug(" %d unique blocks in SMP.",blocks.size()-bmp_blocks); + qDebug(" %d unique blocks in SMP.", blocks.size()-bmp_blocks); qDebug(" block data uses: %d bytes", smp_block_data); qDebug(" trie data uses : %d bytes", smp_trie); @@ -1914,7 +1919,7 @@ static QByteArray createPropertyInfo() out += "static const unsigned short uc_property_trie[] = {\n"; // first write the map - out += " // 0x" + QByteArray::number(BMP_END, 16); + out += " // 0 - 0x" + QByteArray::number(BMP_END, 16); for (int i = 0; i < BMP_END/BMP_BLOCKSIZE; ++i) { if (!(i % 8)) { if (out.endsWith(' ')) @@ -1983,7 +1988,7 @@ static QByteArray createPropertyInfo() "] + (ucs2 & 0x" + QByteArray::number(BMP_BLOCKSIZE-1, 16)+ ")])\n\n" - "static const QUnicodeTables::Properties uc_properties [] = {\n"; + "static const QUnicodeTables::Properties uc_properties[] = {\n"; // keep in sync with the property declaration for (int i = 0; i < uniqueProperties.size(); ++i) { @@ -2042,7 +2047,7 @@ static QByteArray createPropertyInfo() out += QByteArray::number( p.wordBreak ); out += ", "; out += QByteArray::number( p.sentenceBreak ); - out += "},\n"; + out += " },\n"; } out += "};\n\n"; @@ -2070,9 +2075,9 @@ static QByteArray createPropertyInfo() " return uc_properties + index;\n" "}\n\n"; - out += "#define CURRENT_VERSION "CURRENT_UNICODE_VERSION"\n\n"; + out += "#define CURRENT_VERSION "DATA_VERSION_STR"\n\n"; - out += "static const ushort specialCaseMap [] = {"; + out += "static const ushort specialCaseMap[] = {"; for (int i = 0; i < specialCaseMap.size(); ++i) { if (!(i % 16)) out += "\n "; @@ -2083,7 +2088,7 @@ static QByteArray createPropertyInfo() out += "\n};\n"; out += "#define SPECIAL_CASE_MAX_LEN " + QByteArray::number(specialCaseMaxLen) + "\n\n"; - qDebug() << "Special case map uses " << specialCaseMap.size()*2 << "bytes"; + qDebug("Special case map uses : %d bytes", specialCaseMap.size()*2); return out; } @@ -2094,14 +2099,14 @@ struct DecompositionBlock { int index; QList decompositionPositions; bool operator ==(const DecompositionBlock &other) - { return decompositionPositions == other.decompositionPositions; } + { return decompositionPositions == other.decompositionPositions; } }; static QByteArray createCompositionInfo() { qDebug("createCompositionInfo:"); - const int BMP_BLOCKSIZE=16; + const int BMP_BLOCKSIZE = 16; const int BMP_SHIFT = 4; const int BMP_END = 0x3400; // start of Han const int SMP_END = 0x30000; @@ -2202,15 +2207,15 @@ static QByteArray createCompositionInfo() int bmp_block_data = bmp_blocks*BMP_BLOCKSIZE*2; int bmp_trie = BMP_END/BMP_BLOCKSIZE*2; int bmp_mem = bmp_block_data + bmp_trie; - qDebug(" %d unique blocks in BMP.",blocks.size()); + qDebug(" %d unique blocks in BMP.", blocks.size()); qDebug(" block data uses: %d bytes", bmp_block_data); qDebug(" trie data uses : %d bytes", bmp_trie); qDebug(" memory usage: %d bytes", bmp_mem); - int smp_block_data = (blocks.size()- bmp_blocks)*SMP_BLOCKSIZE*2; + int smp_block_data = (blocks.size() - bmp_blocks)*SMP_BLOCKSIZE*2; int smp_trie = (SMP_END-BMP_END)/SMP_BLOCKSIZE*2; int smp_mem = smp_block_data + smp_trie; - qDebug(" %d unique blocks in SMP.",blocks.size()-bmp_blocks); + qDebug(" %d unique blocks in SMP.", blocks.size()-bmp_blocks); qDebug(" block data uses: %d bytes", smp_block_data); qDebug(" trie data uses : %d bytes", smp_trie); @@ -2353,7 +2358,7 @@ static QByteArray createLigatureInfo() int bmp_block_data = bmp_blocks*BMP_BLOCKSIZE*2; int bmp_trie = BMP_END/BMP_BLOCKSIZE*2; int bmp_mem = bmp_block_data + bmp_trie; - qDebug(" %d unique blocks in BMP.",blocks.size()); + qDebug(" %d unique blocks in BMP.", blocks.size()); qDebug(" block data uses: %d bytes", bmp_block_data); qDebug(" trie data uses : %d bytes", bmp_trie); qDebug(" ligature data uses : %d bytes", ligatures.size()*2); @@ -2405,7 +2410,7 @@ static QByteArray createLigatureInfo() "uc_ligature_trie[uc_ligature_trie[u2>>" + QByteArray::number(BMP_SHIFT) + "] + (u2 & 0x" + QByteArray::number(BMP_BLOCKSIZE-1, 16)+ ")] : 0xffff);\n\n" - "static const unsigned short uc_ligature_map [] = {\n"; + "static const unsigned short uc_ligature_map[] = {\n"; for (int i = 0; i < ligatures.size(); ++i) { if (!(i % 8)) { @@ -2468,9 +2473,6 @@ int main(int, char **) QByteArray scriptEnumDeclaration = createScriptEnumDeclaration(); QByteArray scriptTableDeclaration = createScriptTableDeclaration(); - QFile f("../../src/corelib/tools/qunicodetables.cpp"); - f.open(QFile::WriteOnly|QFile::Truncate); - QByteArray header = "/****************************************************************************\n" "**\n" @@ -2511,9 +2513,10 @@ int main(int, char **) "**\n" "** $QT_END_LICENSE$\n" "**\n" - "****************************************************************************/\n\n" + "****************************************************************************/\n\n"; - "/* This file is autogenerated from the Unicode 5.0 database. Do not edit */\n\n"; + QByteArray note = + "/* This file is autogenerated from the Unicode "DATA_VERSION_S" database. Do not edit */\n\n"; QByteArray warning = "//\n" @@ -2527,41 +2530,45 @@ int main(int, char **) "// We mean it.\n" "//\n\n"; + QFile f("../../src/corelib/tools/qunicodetables.cpp"); + f.open(QFile::WriteOnly|QFile::Truncate); f.write(header); + f.write(note); f.write("QT_BEGIN_NAMESPACE\n\n"); f.write(properties); f.write(compositions); f.write(ligatures); f.write(normalizationCorrections); f.write(scriptTableDeclaration); - f.write("\nQT_END_NAMESPACE\n"); + f.write("QT_END_NAMESPACE\n"); f.close(); f.setFileName("../../src/corelib/tools/qunicodetables_p.h"); f.open(QFile::WriteOnly | QFile::Truncate); f.write(header); + f.write(note); f.write(warning); f.write("#ifndef QUNICODETABLES_P_H\n" "#define QUNICODETABLES_P_H\n\n" "#include \n\n" "QT_BEGIN_NAMESPACE\n\n"); - f.write("namespace QUnicodeTables {\n"); + f.write("namespace QUnicodeTables {\n\n"); f.write(property_string); f.write("\n"); f.write(scriptEnumDeclaration); f.write("\n"); f.write(lineBreakClass); f.write("\n"); - f.write(methods); - f.write("\n"); f.write(grapheme_break_string); f.write("\n"); f.write(word_break_string); f.write("\n"); f.write(sentence_break_string); - f.write("\n}\n\n" + f.write("\n"); + f.write(methods); + f.write("} // namespace QUnicodeTables\n\n" "QT_END_NAMESPACE\n\n" - "#endif\n"); + "#endif // QUNICODETABLES_P_H\n"); f.close(); qDebug() << "maxMirroredDiff = " << hex << maxMirroredDiff; @@ -2584,7 +2591,7 @@ int main(int, char **) sum += decompositionLength.value(i, 0); } qDebug(" len decomposition map %d, average length %f, num composed chars %d", - totalcompositions, (float)totalcompositions/(float)sum, sum); + totalcompositions, (float)totalcompositions/(float)sum, sum); qDebug("highest composed character %x", highestComposedCharacter); qDebug("num ligatures = %d highest=%x, maxLength=%d", numLigatures, highestLigature, longestLigature); @@ -2605,4 +2612,3 @@ int main(int, char **) #endif } - -- cgit v0.12 From 7706e9ba3807f9f31a9310f39f0c8b3007f7fb10 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:22 +0100 Subject: fix some 0x10000 codepoint -related issues Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 70d362d..14d8046 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -2131,15 +2131,14 @@ static QByteArray createCompositionInfo() if (!d.decomposition.isEmpty()) { int utf16Chars = 0; for (int j = 0; j < d.decomposition.size(); ++j) - utf16Chars += d.decomposition.at(j) > 0x10000 ? 2 : 1; + utf16Chars += d.decomposition.at(j) >= 0x10000 ? 2 : 1; decompositions.append(d.decompositionType + (utf16Chars<<8)); for (int j = 0; j < d.decomposition.size(); ++j) { int code = d.decomposition.at(j); - if (code > 0x10000) { + if (code >= 0x10000) { // save as surrogate pair - code -= 0x10000; - ushort high = code/0x400 + 0xd800; - ushort low = code%0x400 + 0xdc00; + ushort high = QChar::highSurrogate(code); + ushort low = QChar::lowSurrogate(code); decompositions.append(high); decompositions.append(low); } else { @@ -2173,15 +2172,14 @@ static QByteArray createCompositionInfo() if (!d.decomposition.isEmpty()) { int utf16Chars = 0; for (int j = 0; j < d.decomposition.size(); ++j) - utf16Chars += d.decomposition.at(j) > 0x10000 ? 2 : 1; + utf16Chars += d.decomposition.at(j) >= 0x10000 ? 2 : 1; decompositions.append(d.decompositionType + (utf16Chars<<8)); for (int j = 0; j < d.decomposition.size(); ++j) { int code = d.decomposition.at(j); - if (code > 0x10000) { + if (code >= 0x10000) { // save as surrogate pair - code -= 0x10000; - ushort high = code/0x400 + 0xd800; - ushort low = code%0x400 + 0xdc00; + ushort high = QChar::highSurrogate(code); + ushort low = QChar::lowSurrogate(code); decompositions.append(high); decompositions.append(low); } else { -- cgit v0.12 From 58ea5d52b4f30fc1d029db05b09b60fef49a6f2a Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:24 +0100 Subject: Unicode character property 'General_Category=Cn' was erroneously ignored causing two related bugs in QChar::category() and QChar::isPrint(). As described in tr44, 4.2.8 Default Values General_Category character property should be setted to Cn for all codepoints omitted in UCD. Instead they was mapped to QChar::NoCategory (=0) which have no equivalent in Unicode specs and as result was ignored in filtering by binary mask. Merge-request: 480 Reviewed-by: Thiago Macieira --- tests/auto/qchar/tst_qchar.cpp | 13 +++++++++++++ util/unicode/main.cpp | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/auto/qchar/tst_qchar.cpp b/tests/auto/qchar/tst_qchar.cpp index 547147c..6227c2e 100644 --- a/tests/auto/qchar/tst_qchar.cpp +++ b/tests/auto/qchar/tst_qchar.cpp @@ -72,6 +72,7 @@ private slots: void toLower(); void toTitle(); void toCaseFolded(); + void isPrint(); void isUpper(); void isLower(); void category(); @@ -218,6 +219,12 @@ void tst_QChar::toCaseFolded() QVERIFY(QChar::toCaseFolded((ushort)0xb5) == 0x3bc); } +void tst_QChar::isPrint() +{ + QVERIFY(QChar('A').isPrint()); + QVERIFY(!QChar(0x1aff).isPrint()); // General_Gategory =Cn +} + void tst_QChar::isUpper() { QVERIFY(QChar('A').isUpper()); @@ -259,6 +266,12 @@ void tst_QChar::category() QVERIFY(QChar::category(0xd900u) == QChar::Other_Surrogate); QVERIFY(QChar::category(0xdc00u) == QChar::Other_Surrogate); QVERIFY(QChar::category(0xdc01u) == QChar::Other_Surrogate); + + QVERIFY(QChar::category((uint)0x10fffdu) == QChar::Other_PrivateUse); + QVERIFY(QChar::category((uint)0x110000u) == QChar::NoCategory); + + QVERIFY(QChar::category((uint)0x1aff) == QChar::Other_NotAssigned); + QVERIFY(QChar::category((uint)0x10ffffu) == QChar::Other_NotAssigned); } void tst_QChar::direction() diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 14d8046..d7ee084 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -368,7 +368,7 @@ static int appendToSpecialCaseMap(const QList &map) struct UnicodeData { UnicodeData(int codepoint = 0) { - p.category = QChar::NoCategory; + p.category = QChar::Other_NotAssigned; // Cn p.combiningClass = 0; p.direction = QChar::DirL; -- cgit v0.12 From 9b7377aa9623eeacccb9219bc87b6658b6af0285 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:26 +0100 Subject: make sure that the sequences in specialCaseMap are unique there is was a bug caused appending the same sequence again and again... this fix also reduces count of unique unicode properties (and blocks) Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index d7ee084..4f39e06 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -351,7 +351,7 @@ static int appendToSpecialCaseMap(const QList &map) specialCaseMaxLen = qMax(specialCaseMaxLen, utf16map.size()); utf16map << 0; - for (int i = 0; i < specialCaseMap.size() - utf16map.size() - 1; ++i) { + for (int i = 0; i < specialCaseMap.size() - utf16map.size() + 1; ++i) { int j; for (j = 0; j < utf16map.size(); ++j) { if (specialCaseMap.at(i+j) != utf16map.at(j)) -- cgit v0.12 From 627d5ca9fbfcdc54eca466ee8eae9ac3c9bd9276 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:28 +0100 Subject: generate specialCaseMap as set of human-readable code-sequences Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 4f39e06..4cc2066 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -2077,13 +2077,13 @@ static QByteArray createPropertyInfo() out += "#define CURRENT_VERSION "DATA_VERSION_STR"\n\n"; - out += "static const ushort specialCaseMap[] = {"; + out += "static const ushort specialCaseMap[] = {\n "; for (int i = 0; i < specialCaseMap.size(); ++i) { - if (!(i % 16)) - out += "\n "; out += QByteArray(" 0x") + QByteArray::number(specialCaseMap.at(i), 16); if (i < specialCaseMap.size() - 1) out += ","; + if (!specialCaseMap.at(i)) + out += "\n "; } out += "\n};\n"; out += "#define SPECIAL_CASE_MAX_LEN " + QByteArray::number(specialCaseMaxLen) + "\n\n"; -- cgit v0.12 From ae9f34db6c59c2446513a7ba81da220ac9db38c7 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:30 +0100 Subject: minor clean-ups no changes in behavior in our case `c->cat != QChar::NoCategory` logically equals to `c->name` and the latter expression used in other maps Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 86 ++++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 4cc2066..bbcd286 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -71,6 +71,7 @@ static struct AgeMap { { 0, QChar::Unicode_Unassigned } }; + static const char *grapheme_break_string = " enum GraphemeBreak {\n" " GraphemeBreakOther,\n" @@ -98,7 +99,7 @@ enum GraphemeBreak { GraphemeBreakLVT }; -QHash grapheme_break_map; +static QHash grapheme_break_map; static void initGraphemeBreak() { @@ -125,7 +126,8 @@ static void initGraphemeBreak() } } -const char *word_break_string = + +static const char *word_break_string = " enum WordBreak {\n" " WordBreakOther,\n" " WordBreakFormat,\n" @@ -148,8 +150,7 @@ enum WordBreak { WordBreakExtendNumLet }; - -QHash word_break_map; +static QHash word_break_map; static void initWordBreak() { @@ -204,8 +205,7 @@ enum SentenceBreak { SentenceBreakClose }; - -QHash sentence_break_map; +static QHash sentence_break_map; static void initSentenceBreak() { @@ -234,7 +234,7 @@ static void initSentenceBreak() } -const char *lineBreakClass = +static const char *lineBreakClass = " // see http://www.unicode.org/reports/tr14/tr14-19.html\n" " // we don't use the XX, AI and CB properties and map them to AL instead.\n" " // as we don't support any EBDIC based OS'es, NL is ignored and mapped to AL as well.\n" @@ -249,7 +249,7 @@ const char *lineBreakClass = " };\n\n"; // Keep this one in sync with the code in createPropertyInfo -const char *property_string = +static const char *property_string = " struct Properties {\n" " ushort category : 8; /* 5 needed */\n" " ushort line_break_class : 8; /* 6 needed */\n" @@ -274,7 +274,7 @@ const char *property_string = " Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4);\n" " Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2);\n"; -const char *methods = +static const char *methods = " Q_CORE_EXPORT QUnicodeTables::LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4);\n" " inline int lineBreakClass(const QChar &ch)\n" " { return lineBreakClass(ch.unicode()); }\n" @@ -333,8 +333,9 @@ struct PropertyFlags { SentenceBreak sentenceBreak; }; -QList specialCaseMap; -int specialCaseMaxLen = 0; + +static QList specialCaseMap; +static int specialCaseMaxLen = 0; static int appendToSpecialCaseMap(const QList &map) { @@ -442,7 +443,8 @@ enum UniDataFields { UD_TitleCase }; -QHash categoryMap; + +static QHash categoryMap; static void initCategoryMap() { @@ -489,13 +491,14 @@ static void initCategoryMap() { QChar::NoCategory, 0 } }; Cat *c = categories; - while (c->cat != QChar::NoCategory) { + while (c->name) { categoryMap.insert(c->name, c->cat); ++c; } } -QHash directionMap; + +static QHash directionMap; static void initDirectionMap() { @@ -532,7 +535,7 @@ static void initDirectionMap() } -QHash decompositionMap; +static QHash decompositionMap; static void initDecompositionMap() { @@ -567,14 +570,14 @@ static void initDecompositionMap() } -QHash unicodeData; -QList uniqueProperties; +static QHash unicodeData; +static QList uniqueProperties; -QHash decompositionLength; -int highestComposedCharacter = 0; -int numLigatures = 0; -int highestLigature = 0; +static QHash decompositionLength; +static int highestComposedCharacter = 0; +static int numLigatures = 0; +static int highestLigature = 0; struct Ligature { ushort u1; @@ -585,13 +588,13 @@ struct Ligature { bool operator < (const Ligature &l1, const Ligature &l2) { return l1.u1 < l2.u1; } -QHash > ligatureHashes; +static QHash > ligatureHashes; -QHash combiningClassUsage; +static QHash combiningClassUsage; -int maxLowerCaseDiff = 0; -int maxUpperCaseDiff = 0; -int maxTitleCaseDiff = 0; +static int maxLowerCaseDiff = 0; +static int maxUpperCaseDiff = 0; +static int maxTitleCaseDiff = 0; static void readUnicodeData() { @@ -873,22 +876,22 @@ static void readCompositionExclusion() unicodeData.insert(codepoint, d); } - for (int i = 0; i <= LAST_CODEPOINT; ++i) { - UnicodeData data = unicodeData.value(i, UnicodeData(i)); - if (!data.excludedComposition - && data.decompositionType == QChar::Canonical - && data.decomposition.size() > 1) { - Q_ASSERT(data.decomposition.size() == 2); + for (int codepoint = 0; codepoint <= LAST_CODEPOINT; ++codepoint) { + UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint)); + if (!d.excludedComposition + && d.decompositionType == QChar::Canonical + && d.decomposition.size() > 1) { + Q_ASSERT(d.decomposition.size() == 2); - uint part1 = data.decomposition.at(0); - uint part2 = data.decomposition.at(1); + uint part1 = d.decomposition.at(0); + uint part2 = d.decomposition.at(1); UnicodeData first = unicodeData.value(part1, UnicodeData(part1)); if (first.p.combiningClass != 0) continue; ++numLigatures; highestLigature = qMax(highestLigature, (int)part1); - Ligature l = {(ushort)part1, (ushort)part2, i}; + Ligature l = {(ushort)part1, (ushort)part2, codepoint}; ligatureHashes[part2].append(l); } } @@ -978,7 +981,7 @@ static void computeUniqueProperties() d.propertyIndex = index; unicodeData.insert(uc, d); } - qDebug(" %d unicode properties found", uniqueProperties.size()); + qDebug(" %d unique unicode properties found", uniqueProperties.size()); } @@ -1120,8 +1123,6 @@ static void readSpecialCasing() for (int i = 0; i < title.size(); ++i) { bool ok; titleMap.append(title.at(i).toInt(&ok, 16)); - if (!ok) - qDebug() << line << title.at(i); Q_ASSERT(ok); } @@ -1157,7 +1158,7 @@ static void readSpecialCasing() } } -int maxCaseFoldDiff = 0; +static int maxCaseFoldDiff = 0; static void readCaseFolding() { @@ -1214,7 +1215,7 @@ static void readCaseFolding() if (foldMap.at(0) != codepoint + ud.p.lowerCaseDiff) qDebug() << hex << codepoint; } else { - Q_ASSERT(false); // we currently don't support full case foldings + qFatal("we currently don't support full case foldings"); // qDebug() << "special" << hex << foldMap; ud.p.caseFoldSpecial = true; ud.p.caseFoldDiff = appendToSpecialCaseMap(foldMap); @@ -1842,7 +1843,8 @@ struct PropertyBlock { PropertyBlock() { index = -1; } int index; QList properties; - bool operator ==(const PropertyBlock &other) { return properties == other.properties; } + bool operator==(const PropertyBlock &other) + { return properties == other.properties; } }; static QByteArray createPropertyInfo() @@ -2448,7 +2450,7 @@ int main(int, char **) initGraphemeBreak(); initWordBreak(); initSentenceBreak(); - + readUnicodeData(); readBidiMirroring(); readArabicShaping(); -- cgit v0.12 From f87056c6e58dd691f15967067c6faac29f912bfd Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:32 +0100 Subject: use QHash for age map to be consistent with other maps Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 55 +++++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index bbcd286..2c80e0e 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -55,21 +55,31 @@ #define LAST_CODEPOINT 0x10ffff -static struct AgeMap { - const char *age; - const QChar::UnicodeVersion version; -} ageMap[] = { - { "1.1", QChar::Unicode_1_1 }, - { "2.0", QChar::Unicode_2_0 }, - { "2.1", QChar::Unicode_2_1_2 }, - { "3.0", QChar::Unicode_3_0 }, - { "3.1", QChar::Unicode_3_1 }, - { "3.2", QChar::Unicode_3_2 }, - { "4.0", QChar::Unicode_4_0 }, - { "4.1", QChar::Unicode_4_1 }, - { "5.0", QChar::Unicode_5_0 }, - { 0, QChar::Unicode_Unassigned } -}; +static QHash age_map; + +static void initAgeMap() +{ + struct AgeMap { + const QChar::UnicodeVersion version; + const char *age; + } ageMap[] = { + { QChar::Unicode_1_1, "1.1" }, + { QChar::Unicode_2_0, "2.0" }, + { QChar::Unicode_2_1_2, "2.1" }, + { QChar::Unicode_3_0, "3.0" }, + { QChar::Unicode_3_1, "3.1" }, + { QChar::Unicode_3_2, "3.2" }, + { QChar::Unicode_4_0, "4.0" }, + { QChar::Unicode_4_1, "4.1" }, + { QChar::Unicode_5_0, "5.0" }, + { QChar::Unicode_Unassigned, 0 } + }; + AgeMap *d = ageMap; + while (d->age) { + age_map.insert(d->age, d->version); + ++d; + } +} static const char *grapheme_break_string = @@ -822,18 +832,10 @@ static void readDerivedAge() if (cl.size() == 2) to = cl[1].toInt(&ok, 16); - QChar::UnicodeVersion age = QChar::Unicode_Unassigned; - QByteArray ba = l[1]; - AgeMap *map = ageMap; - while (map->age) { - if (ba == map->age) { - age = map->version; - break; - } - ++map; - } + QChar::UnicodeVersion age = age_map.value(l[1].trimmed(), QChar::Unicode_Unassigned); //qDebug() << hex << from << ".." << to << ba << age; - Q_ASSERT(age != QChar::Unicode_Unassigned); + if (age == QChar::Unicode_Unassigned) + qFatal("unassigned or unhandled age value: %s", l[1].constData()); for (int codepoint = from; codepoint <= to; ++codepoint) { UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint)); @@ -2444,6 +2446,7 @@ QByteArray createCasingInfo() int main(int, char **) { + initAgeMap(); initCategoryMap(); initDirectionMap(); initDecompositionMap(); -- cgit v0.12 From 5472420755bf1b450580f838ca3bd2798dc98d82 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:34 +0100 Subject: use QHash for line break map to be consistent with other maps this also improves perfomance a bit Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 119 +++++++++++++++++++++++++++++++------------------- 1 file changed, 74 insertions(+), 45 deletions(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 2c80e0e..917cc5a 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -258,6 +258,74 @@ static const char *lineBreakClass = " LineBreak_SP, LineBreak_CR, LineBreak_LF, LineBreak_BK\n" " };\n\n"; +enum LineBreakClass { + LineBreak_OP, LineBreak_CL, LineBreak_QU, LineBreak_GL, LineBreak_NS, + LineBreak_EX, LineBreak_SY, LineBreak_IS, LineBreak_PR, LineBreak_PO, + LineBreak_NU, LineBreak_AL, LineBreak_ID, LineBreak_IN, LineBreak_HY, + LineBreak_BA, LineBreak_BB, LineBreak_B2, LineBreak_ZW, LineBreak_CM, + LineBreak_WJ, LineBreak_H2, LineBreak_H3, LineBreak_JL, LineBreak_JV, + LineBreak_JT, LineBreak_SA, LineBreak_SG, + LineBreak_SP, LineBreak_CR, LineBreak_LF, LineBreak_BK + + , LineBreak_Unassigned +}; + +static QHash line_break_map; + +static void initLineBreak() +{ + // ### Classes XX and AI are left out and mapped to AL for now; + // ### Class NL is ignored and mapped to AL as well. + struct LineBreakList { + LineBreakClass brk; + const char *name; + } breaks[] = { + { LineBreak_BK, "BK" }, + { LineBreak_CR, "CR" }, + { LineBreak_LF, "LF" }, + { LineBreak_CM, "CM" }, + { LineBreak_AL, "NL" }, + { LineBreak_SG, "SG" }, + { LineBreak_WJ, "WJ" }, + { LineBreak_ZW, "ZW" }, + { LineBreak_GL, "GL" }, + { LineBreak_SP, "SP" }, + { LineBreak_B2, "B2" }, + { LineBreak_BA, "BA" }, + { LineBreak_BB, "BB" }, + { LineBreak_HY, "HY" }, + { LineBreak_AL, "CB" }, // ### + { LineBreak_CL, "CL" }, + { LineBreak_EX, "EX" }, + { LineBreak_IN, "IN" }, + { LineBreak_NS, "NS" }, + { LineBreak_OP, "OP" }, + { LineBreak_QU, "QU" }, + { LineBreak_IS, "IS" }, + { LineBreak_NU, "NU" }, + { LineBreak_PO, "PO" }, + { LineBreak_PR, "PR" }, + { LineBreak_SY, "SY" }, + { LineBreak_AL, "AI" }, + { LineBreak_AL, "AL" }, + { LineBreak_H2, "H2" }, + { LineBreak_H3, "H3" }, + { LineBreak_ID, "ID" }, + { LineBreak_JL, "JL" }, + { LineBreak_JV, "JV" }, + { LineBreak_JT, "JT" }, + { LineBreak_SA, "SA" }, + { LineBreak_AL, "XX" }, + { LineBreak_Unassigned, 0 } + }; + LineBreakList *d = breaks; + while (d->name) { + line_break_map.insert(d->name, d->brk); + ++d; + } +} + + // Keep this one in sync with the code in createPropertyInfo static const char *property_string = " struct Properties {\n" @@ -402,7 +470,7 @@ struct UnicodeData { p.age = QChar::Unicode_Unassigned; p.mirrorDiff = 0; p.digitValue = -1; - p.line_break_class = QUnicodeTables::LineBreak_AL; + p.line_break_class = LineBreak_AL; // XX -> AL p.lowerCaseDiff = 0; p.upperCaseDiff = 0; p.titleCaseDiff = 0; @@ -1022,49 +1090,9 @@ static void readLineBreak() if (cl.size() == 2) to = cl[1].toInt(&ok, 16); - // ### Classes XX and AI are left out and mapped to AL for now - QUnicodeTables::LineBreakClass lb = QUnicodeTables::LineBreak_AL; - QByteArray ba = l[1]; - - if (ba == "AI") lb = QUnicodeTables::LineBreak_AL; - else if (ba == "XX") lb = QUnicodeTables::LineBreak_AL; - else if (ba == "NL") lb = QUnicodeTables::LineBreak_AL; - else if (ba == "OP") lb = QUnicodeTables::LineBreak_OP; - else if (ba == "CL") lb = QUnicodeTables::LineBreak_CL; - else if (ba == "QU") lb = QUnicodeTables::LineBreak_QU; - else if (ba == "GL") lb = QUnicodeTables::LineBreak_GL; - else if (ba == "NS") lb = QUnicodeTables::LineBreak_NS; - else if (ba == "EX") lb = QUnicodeTables::LineBreak_EX; - else if (ba == "SY") lb = QUnicodeTables::LineBreak_SY; - else if (ba == "IS") lb = QUnicodeTables::LineBreak_IS; - else if (ba == "PR") lb = QUnicodeTables::LineBreak_PR; - else if (ba == "PO") lb = QUnicodeTables::LineBreak_PO; - else if (ba == "NU") lb = QUnicodeTables::LineBreak_NU; - else if (ba == "AL") lb = QUnicodeTables::LineBreak_AL; - else if (ba == "ID") lb = QUnicodeTables::LineBreak_ID; - else if (ba == "IN") lb = QUnicodeTables::LineBreak_IN; - else if (ba == "HY") lb = QUnicodeTables::LineBreak_HY; - else if (ba == "BA") lb = QUnicodeTables::LineBreak_BA; - else if (ba == "BB") lb = QUnicodeTables::LineBreak_BB; - else if (ba == "B2") lb = QUnicodeTables::LineBreak_B2; - else if (ba == "ZW") lb = QUnicodeTables::LineBreak_ZW; - else if (ba == "CM") lb = QUnicodeTables::LineBreak_CM; - else if (ba == "SA") lb = QUnicodeTables::LineBreak_SA; - else if (ba == "BK") lb = QUnicodeTables::LineBreak_BK; - else if (ba == "CR") lb = QUnicodeTables::LineBreak_CR; - else if (ba == "LF") lb = QUnicodeTables::LineBreak_LF; - else if (ba == "SG") lb = QUnicodeTables::LineBreak_SG; - else if (ba == "CB") lb = QUnicodeTables::LineBreak_AL; - else if (ba == "SP") lb = QUnicodeTables::LineBreak_SP; - else if (ba == "WJ") lb = QUnicodeTables::LineBreak_WJ; - else if (ba == "H2") lb = QUnicodeTables::LineBreak_H2; - else if (ba == "H3") lb = QUnicodeTables::LineBreak_H3; - else if (ba == "JL") lb = QUnicodeTables::LineBreak_JL; - else if (ba == "JV") lb = QUnicodeTables::LineBreak_JV; - else if (ba == "JT") lb = QUnicodeTables::LineBreak_JT; - else { - qDebug() << "unhandled line break class:" << ba; - } + LineBreakClass lb = line_break_map.value(l[1].trimmed(), LineBreak_Unassigned); + if (lb == LineBreak_Unassigned) + qFatal("unassigned line break class: %s", l[1].constData()); for (int codepoint = from; codepoint <= to; ++codepoint) { UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint)); @@ -2453,13 +2481,13 @@ int main(int, char **) initGraphemeBreak(); initWordBreak(); initSentenceBreak(); + initLineBreak(); readUnicodeData(); readBidiMirroring(); readArabicShaping(); readDerivedAge(); readCompositionExclusion(); - readLineBreak(); readSpecialCasing(); readCaseFolding(); // readBlocks(); @@ -2467,6 +2495,7 @@ int main(int, char **) readGraphemeBreak(); readWordBreak(); readSentenceBreak(); + readLineBreak(); computeUniqueProperties(); QByteArray properties = createPropertyInfo(); -- cgit v0.12 From 4fcaacef2450b462f62adb14f44055dff53ec577 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:36 +0100 Subject: avoid using of qunicodetables_p.h in generator we can do that after last changes Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 917cc5a..59617b4 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -45,9 +45,11 @@ #include #include #include -#include #include #include +#if 0 +#include +#endif #define DATA_VERSION_S "5.0" #define DATA_VERSION_STR "QChar::Unicode_5_0" -- cgit v0.12 From 89e974545b9fdf810344553f0e1035fd01d190e4 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:39 +0100 Subject: improve error reporting for unassigned grapheme/word/sentence break classes Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 59617b4..591845a 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -109,6 +109,8 @@ enum GraphemeBreak { GraphemeBreakT, GraphemeBreakLV, GraphemeBreakLVT + + , GraphemeBreak_Unassigned }; static QHash grapheme_break_map; @@ -129,7 +131,7 @@ static void initGraphemeBreak() { GraphemeBreakT, "T" }, { GraphemeBreakLV, "LV" }, { GraphemeBreakLVT, "LVT" }, - { GraphemeBreakOther, 0 } + { GraphemeBreak_Unassigned, 0 } }; GraphemeBreakList *d = breaks; while (d->name) { @@ -160,6 +162,8 @@ enum WordBreak { WordBreakMidNum, WordBreakNumeric, WordBreakExtendNumLet + + , WordBreak_Unassigned }; static QHash word_break_map; @@ -178,7 +182,7 @@ static void initWordBreak() { WordBreakMidNum, "MidNum" }, { WordBreakNumeric, "Numeric" }, { WordBreakExtendNumLet, "ExtendNumLet" }, - { WordBreakFormat, 0 } + { WordBreak_Unassigned, 0 } }; WordBreakList *d = breaks; while (d->name) { @@ -215,6 +219,8 @@ enum SentenceBreak { SentenceBreakATerm, SentenceBreakSTerm, SentenceBreakClose + + , SentenceBreak_Unassigned }; static QHash sentence_break_map; @@ -236,7 +242,7 @@ static void initSentenceBreak() { SentenceBreakATerm, "ATerm" }, { SentenceBreakSTerm, "STerm" }, { SentenceBreakClose, "Close" }, - { SentenceBreakOther, 0 } + { SentenceBreak_Unassigned, 0 } }; SentenceBreakList *d = breaks; while (d->name) { @@ -1293,7 +1299,9 @@ static void readGraphemeBreak() Q_ASSERT(ok); } - GraphemeBreak brk = grapheme_break_map.value(l[1].trimmed(), GraphemeBreakOther); + GraphemeBreak brk = grapheme_break_map.value(l[1].trimmed(), GraphemeBreak_Unassigned); + if (brk == GraphemeBreak_Unassigned) + qFatal("unassigned grapheme break class: %s", l[1].constData()); for (int codepoint = from; codepoint <= to; ++codepoint) { UnicodeData ud = unicodeData.value(codepoint, UnicodeData(codepoint)); @@ -1340,8 +1348,9 @@ static void readWordBreak() Q_ASSERT(ok); } - WordBreak brk = word_break_map.value(l[1].trimmed(), WordBreakOther); - Q_ASSERT(brk != WordBreakOther); + WordBreak brk = word_break_map.value(l[1].trimmed(), WordBreak_Unassigned); + if (brk == WordBreak_Unassigned) + qFatal("unassigned word break class: %s", l[1].constData()); for (int codepoint = from; codepoint <= to; ++codepoint) { UnicodeData ud = unicodeData.value(codepoint, UnicodeData(codepoint)); @@ -1388,8 +1397,9 @@ static void readSentenceBreak() Q_ASSERT(ok); } - SentenceBreak brk = sentence_break_map.value(l[1].trimmed(), SentenceBreakOther); - Q_ASSERT(brk != SentenceBreakOther); + SentenceBreak brk = sentence_break_map.value(l[1].trimmed(), SentenceBreak_Unassigned); + if (brk == SentenceBreak_Unassigned) + qFatal("unassigned sentence break class: %s", l[1].constData()); for (int codepoint = from; codepoint <= to; ++codepoint) { UnicodeData ud = unicodeData.value(codepoint, UnicodeData(codepoint)); -- cgit v0.12 From 873883e83943918c344122f4da4291e8e71f0b5f Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:41 +0100 Subject: check if string to int conversions were done w/o errors Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 591845a..a7553e8 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -705,6 +705,7 @@ static void readUnicodeData() QList properties = line.split(';'); bool ok; int codepoint = properties[UD_Value].toInt(&ok, 16); + Q_ASSERT(ok); int lastCodepoint = codepoint; QByteArray name = properties[UD_Name]; @@ -714,6 +715,7 @@ static void readUnicodeData() f.readLine(nextLine.data(), 1024); QList properties = nextLine.split(';'); lastCodepoint = properties[UD_Value].toInt(&ok, 16); + Q_ASSERT(ok); } UnicodeData data(codepoint); @@ -778,8 +780,10 @@ static void readUnicodeData() } else { data.decompositionType = QChar::Canonical; } - for (int i = 0; i < d.size(); ++i) + for (int i = 0; i < d.size(); ++i) { data.decomposition.append(d[i].toInt(&ok, 16)); + Q_ASSERT(ok); + } if (!decompositionLength.contains(data.decomposition.size())) decompositionLength[data.decomposition.size()] = 1; else @@ -821,7 +825,9 @@ static void readBidiMirroring() bool ok; int codepoint = pair[0].toInt(&ok, 16); + Q_ASSERT(ok); int mirror = pair[1].toInt(&ok, 16); + Q_ASSERT(ok); UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint)); d.mirroredChar = mirror; @@ -858,6 +864,8 @@ static void readArabicShaping() bool ok; int codepoint = shaping[0].toInt(&ok, 16); + Q_ASSERT(ok); + QChar::Joining j = QChar::OtherJoining; QByteArray shape = shaping[2].trimmed(); if (shape == "R") @@ -904,9 +912,12 @@ static void readDerivedAge() bool ok; int from = cl[0].toInt(&ok, 16); + Q_ASSERT(ok); int to = from; - if (cl.size() == 2) + if (cl.size() == 2) { to = cl[1].toInt(&ok, 16); + Q_ASSERT(ok); + } QChar::UnicodeVersion age = age_map.value(l[1].trimmed(), QChar::Unicode_Unassigned); //qDebug() << hex << from << ".." << to << ba << age; @@ -948,6 +959,7 @@ static void readCompositionExclusion() bool ok; int codepoint = line.toInt(&ok, 16); + Q_ASSERT(ok); UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint)); d.excludedComposition = true; @@ -1094,9 +1106,12 @@ static void readLineBreak() bool ok; int from = cl[0].toInt(&ok, 16); + Q_ASSERT(ok); int to = from; - if (cl.size() == 2) + if (cl.size() == 2) { to = cl[1].toInt(&ok, 16); + Q_ASSERT(ok); + } LineBreakClass lb = line_break_map.value(l[1].trimmed(), LineBreak_Unassigned); if (lb == LineBreak_Unassigned) -- cgit v0.12 From 455fac38c5a8ec9ef5c531ec7860a17b05ccfd07 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:43 +0100 Subject: fix incorect condition Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index a7553e8..86da8a4 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -1259,7 +1259,7 @@ static void readCaseFolding() UnicodeData ud = unicodeData.value(codepoint, UnicodeData(codepoint)); if (foldMap.size() == 1) { ud.p.caseFoldDiff = foldMap.at(0) - codepoint; - maxCaseFoldDiff = qMax(maxCaseFoldDiff, ud.p.caseFoldDiff); + maxCaseFoldDiff = qMax(maxCaseFoldDiff, qAbs(ud.p.caseFoldDiff)); if (codepoint > 0xffff) { // if the condition below doesn't hold anymore we need to modify our case folding code //qDebug() << codepoint << QChar::highSurrogate(codepoint) << QChar::highSurrogate(foldMap.at(0)); -- cgit v0.12 From 5cea1e11166998fc5862a782af4aa502f2b7be6a Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:45 +0100 Subject: improve error reporting warn on upperCaseDiff/lowerCaseDiff/titleCaseDiff/caseFoldDiff 's value exceeds signed short bounds Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 86da8a4..84b50e1 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -732,6 +732,8 @@ static void readUnicodeData() if (!properties[UD_UpperCase].isEmpty()) { int upperCase = properties[UD_UpperCase].toInt(&ok, 16); Q_ASSERT(ok); + if (qAbs(upperCase - codepoint) >= (1<<14)) + qWarning() << "upperCaseDiff exceeded (" << hex << codepoint << "->" << upperCase << ")"; data.p.upperCaseDiff = upperCase - codepoint; maxUpperCaseDiff = qMax(maxUpperCaseDiff, qAbs(data.p.upperCaseDiff)); if (codepoint > 0xffff) { @@ -743,6 +745,8 @@ static void readUnicodeData() if (!properties[UD_LowerCase].isEmpty()) { int lowerCase = properties[UD_LowerCase].toInt(&ok, 16); Q_ASSERT(ok); + if (qAbs(lowerCase - codepoint) >= (1<<14)) + qWarning() << "lowerCaseDiff exceeded (" << hex << codepoint << "->" << lowerCase << ")"; data.p.lowerCaseDiff = lowerCase - codepoint; maxLowerCaseDiff = qMax(maxLowerCaseDiff, qAbs(data.p.lowerCaseDiff)); if (codepoint > 0xffff) { @@ -757,6 +761,8 @@ static void readUnicodeData() if (!properties[UD_TitleCase].isEmpty()) { int titleCase = properties[UD_TitleCase].toInt(&ok, 16); Q_ASSERT(ok); + if (qAbs(titleCase - codepoint) >= (1<<14)) + qWarning() << "titleCaseDiff exceeded (" << hex << codepoint << "->" << titleCase << ")"; data.p.titleCaseDiff = titleCase - codepoint; maxTitleCaseDiff = qMax(maxTitleCaseDiff, qAbs(data.p.titleCaseDiff)); if (codepoint > 0xffff) { @@ -1258,6 +1264,8 @@ static void readCaseFolding() UnicodeData ud = unicodeData.value(codepoint, UnicodeData(codepoint)); if (foldMap.size() == 1) { + if (qAbs(foldMap.at(0) - codepoint) >= (1<<14)) + qWarning() << "caseFoldDiff exceeded (" << hex << codepoint << "->" << foldMap.at(0) << ")"; ud.p.caseFoldDiff = foldMap.at(0) - codepoint; maxCaseFoldDiff = qMax(maxCaseFoldDiff, qAbs(ud.p.caseFoldDiff)); if (codepoint > 0xffff) { -- cgit v0.12 From 76eb4f454073a30ef62d8bb85862589a13415605 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:47 +0100 Subject: improve error reporting a bit more Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 84b50e1..368cd83 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -706,6 +706,7 @@ static void readUnicodeData() bool ok; int codepoint = properties[UD_Value].toInt(&ok, 16); Q_ASSERT(ok); + Q_ASSERT(codepoint <= LAST_CODEPOINT); int lastCodepoint = codepoint; QByteArray name = properties[UD_Name]; @@ -714,12 +715,16 @@ static void readUnicodeData() nextLine.resize(1024); f.readLine(nextLine.data(), 1024); QList properties = nextLine.split(';'); + Q_ASSERT(properties[UD_Name].startsWith('<') && properties[UD_Name].contains("Last")); lastCodepoint = properties[UD_Value].toInt(&ok, 16); Q_ASSERT(ok); + Q_ASSERT(lastCodepoint <= LAST_CODEPOINT); } UnicodeData data(codepoint); data.p.category = categoryMap.value(properties[UD_Category], QChar::NoCategory); + if (data.p.category == QChar::NoCategory) + qFatal("unassigned char category: %s", properties[UD_Category].constData()); data.p.combiningClass = properties[UD_CombiningClass].toInt(); if (!combiningClassUsage.contains(data.p.combiningClass)) @@ -781,7 +786,9 @@ static void readUnicodeData() highestComposedCharacter = qMax(highestComposedCharacter, codepoint); QList d = decomposition.split(' '); if (d[0].contains('<')) { - data.decompositionType = decompositionMap.value(d[0], QChar::Canonical); + data.decompositionType = decompositionMap.value(d[0], QChar::NoDecomposition); + if (data.decompositionType == QChar::NoDecomposition) + qFatal("unassigned decomposition type: %s", d[0].constData()); d.takeFirst(); } else { data.decompositionType = QChar::Canonical; -- cgit v0.12 From 5c3c63768ab7d042c62d35f3f254d9723c87c83e Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:48 +0100 Subject: prefer DerivedNormalizationProps.txt over CompositionExclusions.txt 1) http://www.unicode.org/reports/tr44/ :2.1 > Implementations should simply use the derived properties, > and should not try to rederive them from lists of simple > properties and collections of rules, because of the chances > for error and divergence when doing so. 2) DerivedNormalizationProps.txt file also provides additional info that can be used for Normalization Form Quick Check algorithm implementation some later Note: this commit *must not* change anything in the (re)generated data; any change in generated data will point to the data inconsistency between CompositionExclusions.txt, DerivedNormalizationProps.txt and UnicodeData.txt files Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/data/CompositionExclusions.txt | 197 ---------------------------- util/unicode/main.cpp | 39 ++++-- 2 files changed, 28 insertions(+), 208 deletions(-) delete mode 100644 util/unicode/data/CompositionExclusions.txt diff --git a/util/unicode/data/CompositionExclusions.txt b/util/unicode/data/CompositionExclusions.txt deleted file mode 100644 index 8a9b7be..0000000 --- a/util/unicode/data/CompositionExclusions.txt +++ /dev/null @@ -1,197 +0,0 @@ -# CompositionExclusions-5.0.0.txt -# Date: 2006-05-23, 12:42:00 PST [KW] -# -# This file lists the characters for the Composition Exclusion Table -# defined in UAX #15, Unicode Normalization Forms. -# -# This file is a normative contributory data file in the -# Unicode Character Database. -# -# Copyright (c) 1991-2006 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# For more information, see -# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table -# -# For a full derivation of composition exclusions, see the derived property -# Full_Composition_Exclusion in DerivedNormalizationProps.txt -# - -# ================================================ -# (1) Script Specifics -# -# This list of characters cannot be derived from the UnicodeData.txt file. -# ================================================ - -0958 # DEVANAGARI LETTER QA -0959 # DEVANAGARI LETTER KHHA -095A # DEVANAGARI LETTER GHHA -095B # DEVANAGARI LETTER ZA -095C # DEVANAGARI LETTER DDDHA -095D # DEVANAGARI LETTER RHA -095E # DEVANAGARI LETTER FA -095F # DEVANAGARI LETTER YYA -09DC # BENGALI LETTER RRA -09DD # BENGALI LETTER RHA -09DF # BENGALI LETTER YYA -0A33 # GURMUKHI LETTER LLA -0A36 # GURMUKHI LETTER SHA -0A59 # GURMUKHI LETTER KHHA -0A5A # GURMUKHI LETTER GHHA -0A5B # GURMUKHI LETTER ZA -0A5E # GURMUKHI LETTER FA -0B5C # ORIYA LETTER RRA -0B5D # ORIYA LETTER RHA -0F43 # TIBETAN LETTER GHA -0F4D # TIBETAN LETTER DDHA -0F52 # TIBETAN LETTER DHA -0F57 # TIBETAN LETTER BHA -0F5C # TIBETAN LETTER DZHA -0F69 # TIBETAN LETTER KSSA -0F76 # TIBETAN VOWEL SIGN VOCALIC R -0F78 # TIBETAN VOWEL SIGN VOCALIC L -0F93 # TIBETAN SUBJOINED LETTER GHA -0F9D # TIBETAN SUBJOINED LETTER DDHA -0FA2 # TIBETAN SUBJOINED LETTER DHA -0FA7 # TIBETAN SUBJOINED LETTER BHA -0FAC # TIBETAN SUBJOINED LETTER DZHA -0FB9 # TIBETAN SUBJOINED LETTER KSSA -FB1D # HEBREW LETTER YOD WITH HIRIQ -FB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH -FB2A # HEBREW LETTER SHIN WITH SHIN DOT -FB2B # HEBREW LETTER SHIN WITH SIN DOT -FB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT -FB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT -FB2E # HEBREW LETTER ALEF WITH PATAH -FB2F # HEBREW LETTER ALEF WITH QAMATS -FB30 # HEBREW LETTER ALEF WITH MAPIQ -FB31 # HEBREW LETTER BET WITH DAGESH -FB32 # HEBREW LETTER GIMEL WITH DAGESH -FB33 # HEBREW LETTER DALET WITH DAGESH -FB34 # HEBREW LETTER HE WITH MAPIQ -FB35 # HEBREW LETTER VAV WITH DAGESH -FB36 # HEBREW LETTER ZAYIN WITH DAGESH -FB38 # HEBREW LETTER TET WITH DAGESH -FB39 # HEBREW LETTER YOD WITH DAGESH -FB3A # HEBREW LETTER FINAL KAF WITH DAGESH -FB3B # HEBREW LETTER KAF WITH DAGESH -FB3C # HEBREW LETTER LAMED WITH DAGESH -FB3E # HEBREW LETTER MEM WITH DAGESH -FB40 # HEBREW LETTER NUN WITH DAGESH -FB41 # HEBREW LETTER SAMEKH WITH DAGESH -FB43 # HEBREW LETTER FINAL PE WITH DAGESH -FB44 # HEBREW LETTER PE WITH DAGESH -FB46 # HEBREW LETTER TSADI WITH DAGESH -FB47 # HEBREW LETTER QOF WITH DAGESH -FB48 # HEBREW LETTER RESH WITH DAGESH -FB49 # HEBREW LETTER SHIN WITH DAGESH -FB4A # HEBREW LETTER TAV WITH DAGESH -FB4B # HEBREW LETTER VAV WITH HOLAM -FB4C # HEBREW LETTER BET WITH RAFE -FB4D # HEBREW LETTER KAF WITH RAFE -FB4E # HEBREW LETTER PE WITH RAFE - -# Total code points: 67 - -# ================================================ -# (2) Post Composition Version precomposed characters -# -# These characters cannot be derived solely from the UnicodeData.txt file -# in this version of Unicode. -# -# Note that characters added to the standard after the -# Composition Version and which have canonical decomposition mappings -# are not automatically added to this list of Post Composition -# Version precomposed characters. -# ================================================ - -2ADC # FORKING -1D15E # MUSICAL SYMBOL HALF NOTE -1D15F # MUSICAL SYMBOL QUARTER NOTE -1D160 # MUSICAL SYMBOL EIGHTH NOTE -1D161 # MUSICAL SYMBOL SIXTEENTH NOTE -1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE -1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE -1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE -1D1BB # MUSICAL SYMBOL MINIMA -1D1BC # MUSICAL SYMBOL MINIMA BLACK -1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE -1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK -1D1BF # MUSICAL SYMBOL FUSA WHITE -1D1C0 # MUSICAL SYMBOL FUSA BLACK - -# Total code points: 14 - -# ================================================ -# (3) Singleton Decompositions -# -# These characters can be derived from the UnicodeData.txt file -# by including all characters whose canonical decomposition -# consists of a single character. -# -# These characters are simply quoted here for reference. -# See also Full_Composition_Exclusion in DerivedNormalizationProps.txt -# ================================================ - -# 0340..0341 [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK -# 0343 COMBINING GREEK KORONIS -# 0374 GREEK NUMERAL SIGN -# 037E GREEK QUESTION MARK -# 0387 GREEK ANO TELEIA -# 1F71 GREEK SMALL LETTER ALPHA WITH OXIA -# 1F73 GREEK SMALL LETTER EPSILON WITH OXIA -# 1F75 GREEK SMALL LETTER ETA WITH OXIA -# 1F77 GREEK SMALL LETTER IOTA WITH OXIA -# 1F79 GREEK SMALL LETTER OMICRON WITH OXIA -# 1F7B GREEK SMALL LETTER UPSILON WITH OXIA -# 1F7D GREEK SMALL LETTER OMEGA WITH OXIA -# 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA -# 1FBE GREEK PROSGEGRAMMENI -# 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA -# 1FCB GREEK CAPITAL LETTER ETA WITH OXIA -# 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -# 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA -# 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -# 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA -# 1FEE..1FEF [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA -# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA -# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA -# 1FFD GREEK OXIA -# 2000..2001 [2] EN QUAD..EM QUAD -# 2126 OHM SIGN -# 212A..212B [2] KELVIN SIGN..ANGSTROM SIGN -# 2329 LEFT-POINTING ANGLE BRACKET -# 232A RIGHT-POINTING ANGLE BRACKET -# F900..FA0D [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D -# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10 -# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12 -# FA15..FA1E [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E -# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20 -# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22 -# FA25..FA26 [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26 -# FA2A..FA2D [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D -# FA30..FA6A [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A -# FA70..FAD9 [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 -# 2F800..2FA1D [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - -# Total code points: 924 - -# ================================================ -# (4) Non-Starter Decompositions -# -# These characters can be derived from the UnicodeData file -# by including all characters whose canonical decomposition consists -# of a sequence of characters, the first of which has a non-zero -# combining class. -# -# These characters are simply quoted here for reference. -# See also Full_Composition_Exclusion in DerivedNormalizationProps.txt -# ================================================ - -# 0344 COMBINING GREEK DIALYTIKA TONOS -# 0F73 TIBETAN VOWEL SIGN II -# 0F75 TIBETAN VOWEL SIGN UU -# 0F81 TIBETAN VOWEL SIGN REVERSED II - -# Total code points: 4 - diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 368cd83..c5d04c0 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -946,11 +946,11 @@ static void readDerivedAge() } -static void readCompositionExclusion() +static void readDerivedNormalizationProps() { - QFile f("data/CompositionExclusions.txt"); + QFile f("data/DerivedNormalizationProps.txt"); if (!f.exists()) - qFatal("Couldn't find CompositionExclusions.txt"); + qFatal("Couldn't find DerivedNormalizationProps.txt"); f.open(QFile::ReadOnly); @@ -963,20 +963,36 @@ static void readCompositionExclusion() int comment = line.indexOf('#'); if (comment >= 0) line = line.left(comment); - line.replace(" ", ""); - if (line.isEmpty()) + if (line.trimmed().isEmpty()) continue; - Q_ASSERT(!line.contains("..")); + QList l = line.split(';'); + Q_ASSERT(l.size() == 2); + + QByteArray propName = l[1].trimmed(); + if (propName != "Full_Composition_Exclusion") + // ### + continue; + + QByteArray codes = l[0].trimmed(); + codes.replace("..", "."); + QList cl = codes.split('.'); bool ok; - int codepoint = line.toInt(&ok, 16); + int from = cl[0].toInt(&ok, 16); Q_ASSERT(ok); + int to = from; + if (cl.size() == 2) { + to = cl[1].toInt(&ok, 16); + Q_ASSERT(ok); + } - UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint)); - d.excludedComposition = true; - unicodeData.insert(codepoint, d); + for (int codepoint = from; codepoint <= to; ++codepoint) { + UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint)); + d.excludedComposition = true; + unicodeData.insert(codepoint, d); + } } for (int codepoint = 0; codepoint <= LAST_CODEPOINT; ++codepoint) { @@ -1000,6 +1016,7 @@ static void readCompositionExclusion() } } + struct NormalizationCorrection { uint codepoint; uint mapped; @@ -2529,7 +2546,7 @@ int main(int, char **) readBidiMirroring(); readArabicShaping(); readDerivedAge(); - readCompositionExclusion(); + readDerivedNormalizationProps(); readSpecialCasing(); readCaseFolding(); // readBlocks(); -- cgit v0.12 From b4466fdf5c1d982f3ac740ea01fe77ac3d9ff8e5 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:50 +0100 Subject: finish last commit don't skip non-starters in composition exclusions code; warn & exit instead Merge-request: 480 Reviewed-by: Thiago Macieira --- util/unicode/main.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index c5d04c0..5a2f45e 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -1004,9 +1004,10 @@ static void readDerivedNormalizationProps() uint part1 = d.decomposition.at(0); uint part2 = d.decomposition.at(1); - UnicodeData first = unicodeData.value(part1, UnicodeData(part1)); - if (first.p.combiningClass != 0) - continue; + + // all non-starters are listed in DerivedNormalizationProps.txt + // and already excluded from composition + Q_ASSERT(unicodeData.value(part1, UnicodeData(part1)).p.combiningClass == 0); ++numLigatures; highestLigature = qMax(highestLigature, (int)part1); -- cgit v0.12 From 05260bc05647b77da090e3d64ca38bbdb1533c58 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:52 +0100 Subject: qchar.cpp: fix identation no actual changes Merge-request: 480 Reviewed-by: Thiago Macieira --- src/corelib/tools/qchar.cpp | 243 ++++++++++++++++++++++---------------------- 1 file changed, 123 insertions(+), 120 deletions(-) diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp index 08cb863..3d55a58 100644 --- a/src/corelib/tools/qchar.cpp +++ b/src/corelib/tools/qchar.cpp @@ -42,10 +42,10 @@ // Don't define it while compiling this module, or USERS of Qt will // not be able to link. #ifdef QT_NO_CAST_FROM_ASCII -#undef QT_NO_CAST_FROM_ASCII +# undef QT_NO_CAST_FROM_ASCII #endif #ifdef QT_NO_CAST_TO_ASCII -#undef QT_NO_CAST_TO_ASCII +# undef QT_NO_CAST_TO_ASCII #endif #include "qchar.h" #include "qdatastream.h" @@ -60,14 +60,15 @@ QT_BEGIN_NAMESPACE #define LAST_UNICODE_CHAR 0x10ffff #ifndef QT_NO_CODEC_FOR_C_STRINGS -#ifdef QT_NO_TEXTCODEC -#define QT_NO_CODEC_FOR_C_STRINGS -#endif +# ifdef QT_NO_TEXTCODEC +# define QT_NO_CODEC_FOR_C_STRINGS +# endif #endif #define FLAG(x) (1 << (x)) -/*! \class QLatin1Char +/*! + \class QLatin1Char \brief The QLatin1Char class provides an 8-bit ASCII/Latin-1 character. \ingroup string-processing @@ -550,7 +551,7 @@ bool QChar::isSpace() const /*! Returns true if the character is a mark (Mark_* categories); otherwise returns false. - + See QChar::Category for more information regarding marks. */ bool QChar::isMark() const @@ -647,45 +648,44 @@ bool QChar::isSymbol() const } /*! - \fn bool QChar::isHighSurrogate() const + \fn bool QChar::isHighSurrogate() const - Returns true if the QChar is the high part of a utf16 surrogate - (ie. if its code point is between 0xd800 and 0xdbff). + Returns true if the QChar is the high part of a utf16 surrogate + (ie. if its code point is between 0xd800 and 0xdbff). */ /*! - \fn bool QChar::isLowSurrogate() const + \fn bool QChar::isLowSurrogate() const - Returns true if the QChar is the low part of a utf16 surrogate - (ie. if its code point is between 0xdc00 and 0xdfff). + Returns true if the QChar is the low part of a utf16 surrogate + (ie. if its code point is between 0xdc00 and 0xdfff). */ /*! - \fn static uint QChar::surrogateToUcs4(ushort high, ushort low) + \fn static uint QChar::surrogateToUcs4(ushort high, ushort low) - Converts a UTF16 surrogate pair with the given \a high and \a low values - to its UCS-4 code point. + Converts a UTF16 surrogate pair with the given \a high and \a low values + to its UCS-4 code point. */ /*! - \fn static uint QChar::surrogateToUcs4(QChar high, QChar low) + \fn static uint QChar::surrogateToUcs4(QChar high, QChar low) - Converts a utf16 surrogate pair (\a high, \a low) to its ucs4 code - point. + Converts a utf16 surrogate pair (\a high, \a low) to its ucs4 code point. */ /*! - \fn static ushort QChar::highSurrogate(uint ucs4) + \fn static ushort QChar::highSurrogate(uint ucs4) - Returns the high surrogate value of a ucs4 code point. - The returned result is undefined if \a ucs4 is smaller than 0x10000. + Returns the high surrogate value of a ucs4 code point. + The returned result is undefined if \a ucs4 is smaller than 0x10000. */ /*! - \fn static ushort QChar::lowSurrogate(uint ucs4) + \fn static ushort QChar::lowSurrogate(uint ucs4) - Returns the low surrogate value of a ucs4 code point. - The returned result is undefined if \a ucs4 is smaller than 0x10000. + Returns the low surrogate value of a ucs4 code point. + The returned result is undefined if \a ucs4 is smaller than 0x10000. */ /*! @@ -727,11 +727,11 @@ QChar::Category QChar::category() const return (QChar::Category) qGetProp(ucs)->category; } -/*! +/*! \overload \since 4.3 Returns the category of the UCS-4-encoded character specified by \a ucs4. - */ +*/ QChar::Category QChar::category(uint ucs4) { if (ucs4 > LAST_UNICODE_CHAR) @@ -739,10 +739,10 @@ QChar::Category QChar::category(uint ucs4) return (QChar::Category) qGetProp(ucs4)->category; } -/*! +/*! \overload Returns the category of the UCS-2-encoded character specified by \a ucs2. - */ +*/ QChar::Category QChar::category(ushort ucs2) { return (QChar::Category) qGetProp(ucs2)->category; @@ -757,10 +757,10 @@ QChar::Direction QChar::direction() const return (QChar::Direction) qGetProp(ucs)->direction; } -/*! -\overload -Returns the direction of the UCS-4-encoded character specified by \a ucs4. - */ +/*! + \overload + Returns the direction of the UCS-4-encoded character specified by \a ucs4. +*/ QChar::Direction QChar::direction(uint ucs4) { if (ucs4 > LAST_UNICODE_CHAR) @@ -768,10 +768,10 @@ QChar::Direction QChar::direction(uint ucs4) return (QChar::Direction) qGetProp(ucs4)->direction; } -/*! -\overload -Returns the direction of the UCS-2-encoded character specified by \a ucs2. - */ +/*! + \overload + Returns the direction of the UCS-2-encoded character specified by \a ucs2. +*/ QChar::Direction QChar::direction(ushort ucs2) { return (QChar::Direction) qGetProp(ucs2)->direction; @@ -786,12 +786,12 @@ QChar::Joining QChar::joining() const return (QChar::Joining) qGetProp(ucs)->joining; } -/*! -\overload -Returns information about the joining properties of the UCS-4-encoded -character specified by \a ucs4 (needed for certain languages such as -Arabic). - */ +/*! + \overload + Returns information about the joining properties of the UCS-4-encoded + character specified by \a ucs4 (needed for certain languages such as + Arabic). +*/ QChar::Joining QChar::joining(uint ucs4) { if (ucs4 > LAST_UNICODE_CHAR) @@ -799,12 +799,12 @@ QChar::Joining QChar::joining(uint ucs4) return (QChar::Joining) qGetProp(ucs4)->joining; } -/*! -\overload -Returns information about the joining properties of the UCS-2-encoded -character specified by \a ucs2 (needed for certain languages such as -Arabic). - */ +/*! + \overload + Returns information about the joining properties of the UCS-2-encoded + character specified by \a ucs2 (needed for certain languages such as + Arabic). +*/ QChar::Joining QChar::joining(ushort ucs2) { return (QChar::Joining) qGetProp(ucs2)->joining; @@ -863,12 +863,13 @@ QChar QChar::mirroredChar() const return ucs + qGetProp(ucs)->mirrorDiff; } -/*! \overload -Returns the mirrored character if the UCS-4-encoded character specified -by \a ucs4 is a mirrored character; otherwise returns the character itself. +/*! + \overload + Returns the mirrored character if the UCS-4-encoded character specified + by \a ucs4 is a mirrored character; otherwise returns the character itself. -\sa hasMirrored() - */ + \sa hasMirrored() +*/ uint QChar::mirroredChar(uint ucs4) { if (ucs4 > LAST_UNICODE_CHAR) @@ -876,13 +877,13 @@ uint QChar::mirroredChar(uint ucs4) return ucs4 + qGetProp(ucs4)->mirrorDiff; } -/*! -\overload -Returns the mirrored character if the UCS-2-encoded character specified -by \a ucs2 is a mirrored character; otherwise returns the character itself. +/*! + \overload + Returns the mirrored character if the UCS-2-encoded character specified + by \a ucs2 is a mirrored character; otherwise returns the character itself. -\sa hasMirrored() - */ + \sa hasMirrored() +*/ ushort QChar::mirroredChar(ushort ucs2) { return ucs2 + qGetProp(ucs2)->mirrorDiff; @@ -936,11 +937,11 @@ QString QChar::decomposition() const return decomposition(ucs); } -/*! -\overload -Decomposes the UCS-4-encoded character specified by \a ucs4 into its -constituent parts. Returns an empty string if no decomposition exists. - */ +/*! + \overload + Decomposes the UCS-4-encoded character specified by \a ucs4 into its + constituent parts. Returns an empty string if no decomposition exists. +*/ QString QChar::decomposition(uint ucs4) { unsigned short buffer[3]; @@ -959,11 +960,11 @@ QChar::Decomposition QChar::decompositionTag() const return decompositionTag(ucs); } -/*! -\overload -Returns the tag defining the composition of the UCS-4-encoded character -specified by \a ucs4. Returns QChar::Single if no decomposition exists. - */ +/*! + \overload + Returns the tag defining the composition of the UCS-4-encoded character + specified by \a ucs4. Returns QChar::Single if no decomposition exists. +*/ QChar::Decomposition QChar::decompositionTag(uint ucs4) { if (ucs4 > LAST_UNICODE_CHAR) @@ -987,10 +988,11 @@ unsigned char QChar::combiningClass() const return (unsigned char) qGetProp(ucs)->combiningClass; } -/*! \overload -Returns the combining class for the UCS-4-encoded character specified by -\a ucs4, as defined in the Unicode standard. - */ +/*! + \overload + Returns the combining class for the UCS-4-encoded character specified by + \a ucs4, as defined in the Unicode standard. +*/ unsigned char QChar::combiningClass(uint ucs4) { if (ucs4 > LAST_UNICODE_CHAR) @@ -998,16 +1000,16 @@ unsigned char QChar::combiningClass(uint ucs4) return (unsigned char) qGetProp(ucs4)->combiningClass; } -/*! \overload -Returns the combining class for the UCS-2-encoded character specified by -\a ucs2, as defined in the Unicode standard. - */ +/*! + \overload + Returns the combining class for the UCS-2-encoded character specified by + \a ucs2, as defined in the Unicode standard. +*/ unsigned char QChar::combiningClass(ushort ucs2) { return (unsigned char) qGetProp(ucs2)->combiningClass; } - /*! Returns the Unicode version that introduced this character. */ @@ -1016,10 +1018,11 @@ QChar::UnicodeVersion QChar::unicodeVersion() const return (QChar::UnicodeVersion) qGetProp(ucs)->unicodeVersion; } -/*! \overload -Returns the Unicode version that introduced the character specified in -its UCS-4-encoded form as \a ucs4. - */ +/*! + \overload + Returns the Unicode version that introduced the character specified in + its UCS-4-encoded form as \a ucs4. +*/ QChar::UnicodeVersion QChar::unicodeVersion(uint ucs4) { if (ucs4 > LAST_UNICODE_CHAR) @@ -1027,10 +1030,11 @@ QChar::UnicodeVersion QChar::unicodeVersion(uint ucs4) return (QChar::UnicodeVersion) qGetProp(ucs4)->unicodeVersion; } -/*! \overload -Returns the Unicode version that introduced the character specified in -its UCS-2-encoded form as \a ucs2. - */ +/*! + \overload + Returns the Unicode version that introduced the character specified in + its UCS-2-encoded form as \a ucs2. +*/ QChar::UnicodeVersion QChar::unicodeVersion(ushort ucs2) { return (QChar::UnicodeVersion) qGetProp(ucs2)->unicodeVersion; @@ -1049,11 +1053,12 @@ QChar QChar::toLower() const return ucs; } -/*! \overload -Returns the lowercase equivalent of the UCS-4-encoded character specified -by \a ucs4 if the character is uppercase or titlecase; otherwise returns -the character itself. - */ +/*! + \overload + Returns the lowercase equivalent of the UCS-4-encoded character specified + by \a ucs4 if the character is uppercase or titlecase; otherwise returns + the character itself. +*/ uint QChar::toLower(uint ucs4) { if (ucs4 > LAST_UNICODE_CHAR) @@ -1064,11 +1069,12 @@ uint QChar::toLower(uint ucs4) return ucs4; } -/*! \overload -Returns the lowercase equivalent of the UCS-2-encoded character specified -by \a ucs2 if the character is uppercase or titlecase; otherwise returns -the character itself. - */ +/*! + \overload + Returns the lowercase equivalent of the UCS-2-encoded character specified + by \a ucs2 if the character is uppercase or titlecase; otherwise returns + the character itself. +*/ ushort QChar::toLower(ushort ucs2) { const QUnicodeTables::Properties *p = qGetProp(ucs2); @@ -1089,11 +1095,12 @@ QChar QChar::toUpper() const return ucs; } -/*! \overload -Returns the uppercase equivalent of the UCS-4-encoded character specified -by \a ucs4 if the character is lowercase or titlecase; otherwise returns -the character itself. - */ +/*! + \overload + Returns the uppercase equivalent of the UCS-4-encoded character specified + by \a ucs4 if the character is lowercase or titlecase; otherwise returns + the character itself. +*/ uint QChar::toUpper(uint ucs4) { if (ucs4 > LAST_UNICODE_CHAR) @@ -1104,11 +1111,12 @@ uint QChar::toUpper(uint ucs4) return ucs4; } -/*! \overload -Returns the uppercase equivalent of the UCS-2-encoded character specified -by \a ucs2 if the character is lowercase or titlecase; otherwise returns -the character itself. - */ +/*! + \overload + Returns the uppercase equivalent of the UCS-2-encoded character specified + by \a ucs2 if the character is lowercase or titlecase; otherwise returns + the character itself. +*/ ushort QChar::toUpper(ushort ucs2) { const QUnicodeTables::Properties *p = qGetProp(ucs2); @@ -1292,28 +1300,25 @@ QChar QChar::fromAscii(char c) #ifndef QT_NO_DATASTREAM /*! - \relates QChar - - Writes the char \a chr to the stream \a out. + \relates QChar - \sa {Format of the QDataStream operators} - */ + Writes the char \a chr to the stream \a out. + \sa {Format of the QDataStream operators} +*/ QDataStream &operator<<(QDataStream &out, const QChar &chr) { out << quint16(chr.unicode()); return out; } - /*! - \relates QChar - - Reads a char from the stream \a in into char \a chr. + \relates QChar - \sa {Format of the QDataStream operators} - */ + Reads a char from the stream \a in into char \a chr. + \sa {Format of the QDataStream operators} +*/ QDataStream &operator>>(QDataStream &in, QChar &chr) { quint16 u; @@ -1602,11 +1607,9 @@ int QT_FASTCALL QUnicodeTables::script(unsigned int uc) return script; } - Q_CORE_EXPORT QUnicodeTables::LineBreakClass QT_FASTCALL QUnicodeTables::lineBreakClass(uint ucs4) { return (QUnicodeTables::LineBreakClass) qGetProp(ucs4)->line_break_class; } - QT_END_NAMESPACE -- cgit v0.12 From 5b05cdccda99d5889c6a3db41d5c494d25798840 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Wed, 24 Feb 2010 20:13:55 +0100 Subject: add some usefull definitions to qunicodetables_p.h * CURRENT_VERSION macro in qunicodetables.cpp was renamed to UNICODE_DATA_VERSION and it's definition was moved to qunicodetables_p.h * LAST_UNICODE_CHAR macro in qchar.cpp was renamed to UNICODE_LAST_CODEPOINT and it's definition was moved to qunicodetables_p.h Merge-request: 480 Reviewed-by: Thiago Macieira --- src/corelib/tools/qchar.cpp | 28 +++++++++++++--------------- src/corelib/tools/qstring.cpp | 4 ++-- util/unicode/main.cpp | 5 +++-- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp index 3d55a58..2bc5347 100644 --- a/src/corelib/tools/qchar.cpp +++ b/src/corelib/tools/qchar.cpp @@ -57,8 +57,6 @@ QT_BEGIN_NAMESPACE -#define LAST_UNICODE_CHAR 0x10ffff - #ifndef QT_NO_CODEC_FOR_C_STRINGS # ifdef QT_NO_TEXTCODEC # define QT_NO_CODEC_FOR_C_STRINGS @@ -714,7 +712,7 @@ int QChar::digitValue(ushort ucs2) */ int QChar::digitValue(uint ucs4) { - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return 0; return qGetProp(ucs4)->digitValue; } @@ -734,7 +732,7 @@ QChar::Category QChar::category() const */ QChar::Category QChar::category(uint ucs4) { - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return QChar::NoCategory; return (QChar::Category) qGetProp(ucs4)->category; } @@ -763,7 +761,7 @@ QChar::Direction QChar::direction() const */ QChar::Direction QChar::direction(uint ucs4) { - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return QChar::DirL; return (QChar::Direction) qGetProp(ucs4)->direction; } @@ -794,7 +792,7 @@ QChar::Joining QChar::joining() const */ QChar::Joining QChar::joining(uint ucs4) { - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return QChar::OtherJoining; return (QChar::Joining) qGetProp(ucs4)->joining; } @@ -872,7 +870,7 @@ QChar QChar::mirroredChar() const */ uint QChar::mirroredChar(uint ucs4) { - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return ucs4; return ucs4 + qGetProp(ucs4)->mirrorDiff; } @@ -907,7 +905,7 @@ static const unsigned short * QT_FASTCALL decompositionHelper (uint ucs4, int *length, int *tag, unsigned short *buffer) { *length = 0; - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return 0; if (ucs4 >= Hangul_SBase && ucs4 < Hangul_SBase + Hangul_SCount) { int SIndex = ucs4 - Hangul_SBase; @@ -967,7 +965,7 @@ QChar::Decomposition QChar::decompositionTag() const */ QChar::Decomposition QChar::decompositionTag(uint ucs4) { - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return QChar::NoDecomposition; const unsigned short index = GET_DECOMPOSITION_INDEX(ucs4); if (index == 0xffff) @@ -995,7 +993,7 @@ unsigned char QChar::combiningClass() const */ unsigned char QChar::combiningClass(uint ucs4) { - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return 0; return (unsigned char) qGetProp(ucs4)->combiningClass; } @@ -1025,7 +1023,7 @@ QChar::UnicodeVersion QChar::unicodeVersion() const */ QChar::UnicodeVersion QChar::unicodeVersion(uint ucs4) { - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return QChar::Unicode_Unassigned; return (QChar::UnicodeVersion) qGetProp(ucs4)->unicodeVersion; } @@ -1061,7 +1059,7 @@ QChar QChar::toLower() const */ uint QChar::toLower(uint ucs4) { - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return ucs4; const QUnicodeTables::Properties *p = qGetProp(ucs4); if (!p->lowerCaseSpecial) @@ -1103,7 +1101,7 @@ QChar QChar::toUpper() const */ uint QChar::toUpper(uint ucs4) { - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return ucs4; const QUnicodeTables::Properties *p = qGetProp(ucs4); if (!p->upperCaseSpecial) @@ -1145,7 +1143,7 @@ QChar QChar::toTitleCase() const */ uint QChar::toTitleCase(uint ucs4) { - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return ucs4; const QUnicodeTables::Properties *p = qGetProp(ucs4); if (!p->titleCaseSpecial) @@ -1206,7 +1204,7 @@ QChar QChar::toCaseFolded() const */ uint QChar::toCaseFolded(uint ucs4) { - if (ucs4 > LAST_UNICODE_CHAR) + if (ucs4 > UNICODE_LAST_CODEPOINT) return ucs4; return ucs4 + qGetProp(ucs4)->caseFoldDiff; } diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 703ec67..9ab0970 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -6191,7 +6191,7 @@ QStringList QString::split(const QRegExp &rx, SplitBehavior behavior) const */ QString QString::normalized(QString::NormalizationForm mode) const { - return normalized(mode, CURRENT_VERSION); + return normalized(mode, UNICODE_DATA_VERSION); } /*! @@ -6273,7 +6273,7 @@ void qt_string_normalize(QString *data, QString::NormalizationForm mode, QChar:: return; QString &s = *data; - if (version != CURRENT_VERSION) { + if (version != UNICODE_DATA_VERSION) { for (int i = 0; i < NumNormalizationCorrections; ++i) { const NormalizationCorrection &n = uc_normalization_corrections[i]; if (n.version > version) { diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 5a2f45e..521dcb0 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -55,6 +55,7 @@ #define DATA_VERSION_STR "QChar::Unicode_5_0" #define LAST_CODEPOINT 0x10ffff +#define LAST_CODEPOINT_STR "0x10ffff" static QHash age_map; @@ -2167,8 +2168,6 @@ static QByteArray createPropertyInfo() " return uc_properties + index;\n" "}\n\n"; - out += "#define CURRENT_VERSION "DATA_VERSION_STR"\n\n"; - out += "static const ushort specialCaseMap[] = {\n "; for (int i = 0; i < specialCaseMap.size(); ++i) { out += QByteArray(" 0x") + QByteArray::number(specialCaseMap.at(i), 16); @@ -2644,6 +2643,8 @@ int main(int, char **) "#define QUNICODETABLES_P_H\n\n" "#include \n\n" "QT_BEGIN_NAMESPACE\n\n"); + f.write("#define UNICODE_DATA_VERSION "DATA_VERSION_STR"\n\n"); + f.write("#define UNICODE_LAST_CODEPOINT "LAST_CODEPOINT_STR"\n\n"); f.write("namespace QUnicodeTables {\n\n"); f.write(property_string); f.write("\n"); -- cgit v0.12 From a6f95ce9146f5c9f8276a915252c84f8c7d18383 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 24 Feb 2010 20:18:50 +0100 Subject: Fix the code after merge: DerivedNormalizationProps has two or more columns --- util/unicode/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 521dcb0..f2ebe7c 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -969,7 +969,7 @@ static void readDerivedNormalizationProps() continue; QList l = line.split(';'); - Q_ASSERT(l.size() == 2); + Q_ASSERT(l.size() >= 2); QByteArray propName = l[1].trimmed(); if (propName != "Full_Composition_Exclusion") -- cgit v0.12 From 46cd6cdabae70c2a4ee7ec62b7c5b6ca3ddf03de Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 3 Mar 2010 11:22:26 +0100 Subject: Re-generate the Unicode tables after updates to the program that generates them --- src/corelib/tools/qunicodetables.cpp | 3694 +++++++++++++++++----------------- src/corelib/tools/qunicodetables_p.h | 55 +- 2 files changed, 1907 insertions(+), 1842 deletions(-) diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp index 97afdf5..9df31e5 100644 --- a/src/corelib/tools/qunicodetables.cpp +++ b/src/corelib/tools/qunicodetables.cpp @@ -44,7 +44,7 @@ QT_BEGIN_NAMESPACE static const unsigned short uc_property_trie[] = { - // 0x11000 + // 0 - 0x11000 6256, 6288, 6320, 6352, 6384, 6416, 6448, 6480, 6512, 6544, 6576, 6608, 6640, 6672, 6704, 6736, @@ -1777,42 +1777,42 @@ static const unsigned short uc_property_trie[] = { 42, 42, 560, 561, 562, 160, 563, 564, 565, 565, 565, 565, 566, 42, 42, 42, - 492, 492, 567, 568, 160, 160, 569, 570, - 493, 493, 571, 571, 160, 42, 42, 42, - - 492, 492, 572, 573, 574, 182, 575, 576, - 493, 493, 577, 577, 578, 42, 42, 42, - 160, 160, 579, 580, 581, 160, 582, 583, - 584, 584, 585, 585, 586, 42, 42, 160, - - 587, 587, 587, 587, 587, 587, 587, 588, - 587, 587, 587, 589, 590, 591, 592, 593, - 594, 595, 594, 594, 596, 597, 14, 14, - 598, 599, 600, 601, 598, 602, 600, 601, - - 14, 14, 14, 14, 603, 603, 603, 604, - 605, 606, 607, 608, 609, 610, 611, 612, - 13, 13, 13, 13, 13, 613, 613, 613, - 14, 598, 602, 14, 614, 614, 14, 43, - - 43, 14, 14, 14, 615, 16, 17, 616, - 617, 617, 432, 432, 432, 432, 618, 618, - 618, 618, 185, 619, 620, 621, 622, 618, - 622, 622, 622, 622, 621, 622, 622, 623, - - 624, 625, 625, 625, 160, 160, 160, 160, - 160, 160, 626, 626, 626, 626, 626, 626, - 627, 628, 160, 160, 629, 630, 631, 632, - 633, 634, 635, 635, 36, 16, 17, 50, - - 627, 60, 55, 56, 629, 630, 631, 632, - 633, 634, 635, 635, 36, 16, 17, 160, + 492, 492, 567, 166, 160, 160, 568, 569, + 493, 493, 570, 570, 160, 42, 42, 42, + + 492, 492, 571, 169, 572, 182, 573, 574, + 493, 493, 575, 575, 576, 42, 42, 42, + 160, 160, 577, 578, 579, 160, 580, 581, + 582, 582, 583, 583, 584, 42, 42, 160, + + 585, 585, 585, 585, 585, 585, 585, 586, + 585, 585, 585, 587, 588, 589, 590, 591, + 592, 593, 592, 592, 594, 595, 14, 14, + 596, 597, 598, 599, 596, 600, 598, 599, + + 14, 14, 14, 14, 601, 601, 601, 602, + 603, 604, 605, 606, 607, 608, 609, 610, + 13, 13, 13, 13, 13, 611, 611, 611, + 14, 596, 600, 14, 612, 612, 14, 43, + + 43, 14, 14, 14, 613, 16, 17, 614, + 615, 615, 432, 432, 432, 432, 616, 616, + 616, 616, 185, 617, 618, 619, 620, 616, + 620, 620, 620, 620, 619, 620, 620, 621, + + 622, 623, 623, 623, 160, 160, 160, 160, + 160, 160, 624, 624, 624, 624, 624, 624, + 625, 626, 160, 160, 627, 628, 629, 630, + 631, 632, 633, 633, 36, 16, 17, 50, + + 625, 60, 55, 56, 627, 628, 629, 630, + 631, 632, 633, 633, 36, 16, 17, 160, 484, 484, 484, 484, 484, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 12, 12, 12, 12, 12, 12, 12, 48, - 12, 12, 12, 636, 637, 429, 429, 429, - 638, 638, 639, 639, 639, 639, 160, 160, + 12, 12, 12, 634, 635, 429, 429, 429, + 636, 636, 637, 637, 637, 637, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, @@ -1820,32 +1820,32 @@ static const unsigned short uc_property_trie[] = { 139, 139, 144, 144, 139, 139, 139, 139, 144, 144, 144, 139, 139, 273, 273, 273, - 273, 139, 195, 195, 640, 641, 641, 159, - 642, 159, 641, 643, 299, 299, 299, 299, + 273, 139, 195, 195, 638, 639, 639, 159, + 640, 159, 639, 641, 299, 299, 299, 299, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 49, 49, 175, 644, 49, 49, 49, 175, - 49, 644, 50, 175, 175, 175, 50, 50, - 175, 175, 175, 50, 49, 175, 645, 49, + 49, 49, 175, 642, 49, 49, 49, 175, + 49, 642, 50, 175, 175, 175, 50, 50, + 175, 175, 175, 50, 49, 175, 643, 49, 49, 175, 175, 175, 175, 175, 49, 49, - 49, 49, 49, 49, 175, 49, 646, 49, - 175, 49, 647, 648, 175, 175, 649, 50, - 175, 175, 650, 175, 50, 90, 90, 90, - 90, 131, 651, 239, 103, 628, 652, 652, + 49, 49, 49, 49, 175, 49, 644, 49, + 175, 49, 645, 646, 175, 175, 647, 50, + 175, 175, 648, 175, 50, 90, 90, 90, + 90, 131, 649, 239, 103, 626, 650, 650, - 185, 185, 185, 185, 185, 652, 628, 628, - 628, 628, 653, 185, 418, 301, 654, 160, + 185, 185, 185, 185, 185, 650, 626, 626, + 626, 626, 651, 185, 418, 301, 652, 160, 160, 160, 160, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, - 656, 656, 656, 656, 656, 656, 656, 656, - 656, 656, 656, 656, 656, 656, 656, 656, + 653, 653, 653, 653, 653, 653, 653, 653, + 653, 653, 653, 653, 653, 653, 653, 653, + 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, - 657, 657, 657, 99, 109, 160, 160, 160, + 655, 655, 655, 99, 109, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 36, 36, 36, 36, 36, 49, 49, 49, 49, 49, 36, 36, 49, 49, 49, 49, @@ -1861,52 +1861,52 @@ static const unsigned short uc_property_trie[] = { 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 651, 651, 651, 651, 651, - 651, 651, 651, 651, 185, 185, 185, 185, + 49, 49, 49, 649, 649, 649, 649, 649, + 649, 649, 649, 649, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 36, 36, 36, 36, 36, 36, 36, 36, - 658, 658, 658, 659, 659, 659, 36, 36, - 36, 36, 18, 54, 36, 660, 36, 36, + 656, 656, 656, 657, 657, 657, 36, 36, + 36, 36, 18, 54, 36, 658, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 661, 662, 36, 36, + 36, 36, 36, 36, 659, 660, 36, 36, - 36, 36, 36, 663, 36, 36, 36, 36, + 36, 36, 36, 661, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 661, 662, 661, 662, 36, 36, + 36, 36, 659, 660, 659, 660, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 661, 662, 661, 662, - 661, 662, 661, 662, 36, 36, 661, 662, - 661, 662, 661, 662, 661, 662, 661, 662, - 661, 662, 661, 662, 661, 662, 661, 662, + 36, 36, 36, 36, 659, 660, 659, 660, + 659, 660, 659, 660, 36, 36, 659, 660, + 659, 660, 659, 660, 659, 660, 659, 660, + 659, 660, 659, 660, 659, 660, 659, 660, - 661, 662, 661, 662, 661, 662, 661, 662, - 661, 662, 661, 662, 36, 36, 36, 661, - 662, 661, 662, 36, 36, 36, 36, 36, - 664, 36, 36, 36, 36, 36, 36, 36, + 659, 660, 659, 660, 659, 660, 659, 660, + 659, 660, 659, 660, 36, 36, 36, 659, + 660, 659, 660, 36, 36, 36, 36, 36, + 662, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 661, 662, 36, 36, 665, 36, - 666, 667, 36, 667, 36, 36, 36, 36, - 661, 662, 661, 662, 661, 662, 661, 662, + 36, 36, 659, 660, 36, 36, 663, 36, + 664, 665, 36, 665, 36, 36, 36, 36, + 659, 660, 659, 660, 659, 660, 659, 660, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 661, 662, 661, 662, 668, 36, 36, - 661, 662, 36, 36, 36, 36, 661, 662, - 661, 662, 661, 662, 661, 662, 661, 662, + 36, 659, 660, 659, 660, 666, 36, 36, + 659, 660, 36, 36, 36, 36, 659, 660, + 659, 660, 659, 660, 659, 660, 659, 660, - 661, 662, 661, 662, 661, 662, 661, 662, - 661, 662, 661, 662, 661, 662, 36, 36, - 661, 662, 669, 669, 669, 185, 670, 670, - 185, 185, 671, 671, 671, 672, 672, 185, + 659, 660, 659, 660, 659, 660, 659, 660, + 659, 660, 659, 660, 659, 660, 36, 36, + 659, 660, 667, 667, 667, 185, 668, 668, + 185, 185, 669, 669, 669, 670, 670, 185, - 49, 651, 49, 49, 49, 49, 49, 49, - 661, 662, 661, 662, 49, 49, 49, 49, + 49, 649, 49, 49, 49, 49, 49, 49, + 659, 660, 659, 660, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, @@ -1923,24 +1923,24 @@ static const unsigned short uc_property_trie[] = { 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 651, 185, 651, 651, 651, + 194, 194, 194, 649, 185, 649, 649, 649, - 651, 651, 651, 651, 651, 651, 651, 651, - 651, 651, 651, 651, 651, 651, 651, 651, - 651, 651, 651, 651, 651, 381, 651, 651, - 651, 651, 651, 185, 185, 185, 185, 185, + 649, 649, 649, 649, 649, 649, 649, 649, + 649, 649, 649, 649, 649, 649, 649, 649, + 649, 649, 649, 649, 649, 381, 649, 649, + 649, 649, 649, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 653, 653, 653, 653, - 653, 653, 653, 653, 653, 653, 653, 653, + 185, 185, 185, 185, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, - 653, 653, 653, 653, 653, 653, 653, 653, - 653, 653, 653, 653, 653, 653, 653, 239, + 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 239, 239, 418, 418, 418, 418, 418, 418, 418, - 418, 418, 418, 418, 673, 673, 673, 673, + 418, 418, 418, 418, 671, 671, 671, 671, - 673, 673, 301, 301, 301, 301, 301, 301, + 671, 671, 301, 301, 301, 301, 301, 301, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, @@ -1950,7 +1950,7 @@ static const unsigned short uc_property_trie[] = { 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 651, 651, 160, + 49, 49, 49, 49, 49, 649, 649, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, @@ -1960,35 +1960,35 @@ static const unsigned short uc_property_trie[] = { 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 674, 675, 676, 677, 678, 679, 680, 681, - 682, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 674, 675, 676, 677, - 678, 679, 680, 681, 682, 62, 62, 62, + 672, 673, 674, 675, 676, 677, 678, 679, + 680, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 672, 673, 674, 675, + 676, 677, 678, 679, 680, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 60, 55, 56, 629, 630, 631, 632, 633, - 634, 683, 683, 683, 683, 683, 683, 683, - 683, 683, 683, 683, 194, 194, 194, 194, + 60, 55, 56, 627, 628, 629, 630, 631, + 632, 681, 681, 681, 681, 681, 681, 681, + 681, 681, 681, 681, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 684, 684, - 684, 684, 684, 684, 684, 684, 684, 684, + 194, 194, 194, 194, 194, 194, 682, 682, + 682, 682, 682, 682, 682, 682, 682, 682, - 684, 684, 684, 684, 684, 684, 684, 684, - 684, 684, 684, 684, 684, 684, 684, 684, - 685, 685, 685, 685, 685, 685, 685, 685, - 685, 685, 685, 685, 685, 685, 685, 685, + 682, 682, 682, 682, 682, 682, 682, 682, + 682, 682, 682, 682, 682, 682, 682, 682, + 683, 683, 683, 683, 683, 683, 683, 683, + 683, 683, 683, 683, 683, 683, 683, 683, - 685, 685, 685, 685, 685, 685, 685, 685, - 685, 685, 686, 687, 687, 687, 687, 687, - 687, 687, 687, 687, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 687, 697, + 683, 683, 683, 683, 683, 683, 683, 683, + 683, 683, 684, 685, 685, 685, 685, 685, + 685, 685, 685, 685, 685, 686, 687, 688, + 689, 690, 691, 692, 693, 694, 685, 695, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 653, 653, - 653, 653, 653, 653, 653, 653, 653, 653, + 49, 49, 49, 49, 49, 49, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, @@ -2002,21 +2002,21 @@ static const unsigned short uc_property_trie[] = { 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 651, 651, 651, 651, 651, 651, 651, 651, + 649, 649, 649, 649, 649, 649, 649, 649, 185, 185, 185, 185, 185, 185, 185, 185, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 239, 239, 653, 653, - 418, 651, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 239, 239, 651, 651, + 418, 649, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 36, - 651, 651, 653, 653, 653, 653, 653, 653, - 653, 653, 653, 653, 653, 653, 418, 418, + 649, 649, 651, 651, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 418, 418, - 653, 653, 653, 653, 653, 653, 653, 653, - 653, 653, 239, 239, 239, 239, 239, 239, + 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 239, 239, 239, 239, 239, 239, 239, 239, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 160, 160, 160, @@ -2038,16 +2038,16 @@ static const unsigned short uc_property_trie[] = { 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 160, 49, 160, 49, 49, 49, 49, 160, 160, 160, 49, 160, - 49, 49, 49, 698, 698, 698, 698, 160, + 49, 49, 49, 696, 696, 696, 696, 160, - 160, 49, 699, 699, 49, 49, 49, 49, - 700, 701, 700, 701, 700, 701, 700, 701, - 700, 701, 700, 701, 700, 701, 674, 675, - 676, 677, 678, 679, 680, 681, 682, 62, + 160, 49, 697, 697, 49, 49, 49, 49, + 698, 699, 698, 699, 698, 699, 698, 699, + 698, 699, 698, 699, 698, 699, 672, 673, + 674, 675, 676, 677, 678, 679, 680, 62, - 674, 675, 676, 677, 678, 679, 680, 681, - 682, 62, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 62, 49, 160, 160, 160, + 672, 673, 674, 675, 676, 677, 678, 679, + 680, 62, 672, 673, 674, 675, 676, 677, + 678, 679, 680, 62, 49, 160, 160, 160, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, @@ -2055,13 +2055,13 @@ static const unsigned short uc_property_trie[] = { 160, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 160, - 702, 702, 702, 703, 704, 705, 706, 673, - 673, 673, 673, 160, 160, 160, 160, 160, - 185, 185, 185, 185, 185, 707, 708, 185, - 185, 185, 185, 185, 185, 707, 708, 185, + 700, 700, 700, 701, 702, 703, 704, 671, + 671, 671, 671, 160, 160, 160, 160, 160, + 185, 185, 185, 185, 185, 705, 706, 185, + 185, 185, 185, 185, 185, 705, 706, 185, - 185, 185, 707, 708, 707, 708, 700, 701, - 700, 701, 700, 701, 160, 160, 160, 160, + 185, 185, 705, 706, 705, 706, 698, 699, + 698, 699, 698, 699, 160, 160, 160, 160, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, @@ -2075,55 +2075,55 @@ static const unsigned short uc_property_trie[] = { 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 700, 701, 700, 701, 700, - 701, 700, 701, 700, 701, 709, 710, 711, - 712, 700, 701, 700, 701, 700, 701, 700, - 701, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 698, 699, 698, 699, 698, + 699, 698, 699, 698, 699, 707, 708, 709, + 710, 698, 699, 698, 699, 698, 699, 698, + 699, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 713, 185, 185, 185, 185, 185, 185, 185, + 711, 185, 185, 185, 185, 185, 185, 185, - 707, 708, 185, 185, 707, 708, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 707, - 708, 707, 708, 185, 707, 708, 185, 185, - 700, 701, 700, 701, 185, 185, 185, 185, + 705, 706, 185, 185, 705, 706, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 705, + 706, 705, 706, 185, 705, 706, 185, 185, + 698, 699, 698, 699, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 714, 185, 185, - 707, 708, 185, 185, 700, 701, 185, 185, + 185, 185, 185, 185, 185, 712, 185, 185, + 705, 706, 185, 185, 698, 699, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 707, 708, 707, 708, 185, - 185, 185, 185, 185, 707, 708, 185, 185, - 185, 185, 185, 185, 707, 708, 185, 185, + 185, 185, 185, 705, 706, 705, 706, 185, + 185, 185, 185, 185, 705, 706, 185, 185, + 185, 185, 185, 185, 705, 706, 185, 185, - 185, 185, 185, 185, 707, 708, 185, 185, + 185, 185, 185, 185, 705, 706, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 707, 708, 185, 185, 707, 708, 707, + 185, 705, 706, 185, 185, 705, 706, 705, - 708, 707, 708, 707, 708, 185, 185, 185, - 185, 185, 185, 707, 708, 185, 185, 185, - 185, 707, 708, 707, 708, 707, 708, 707, - 708, 707, 708, 707, 708, 185, 185, 185, + 706, 705, 706, 705, 706, 185, 185, 185, + 185, 185, 185, 705, 706, 185, 185, 185, + 185, 705, 706, 705, 706, 705, 706, 705, + 706, 705, 706, 705, 706, 185, 185, 185, - 185, 707, 708, 185, 185, 185, 707, 708, - 707, 708, 707, 708, 707, 708, 185, 707, - 708, 185, 185, 707, 708, 185, 185, 185, - 185, 185, 185, 707, 708, 707, 708, 707, + 185, 705, 706, 185, 185, 185, 705, 706, + 705, 706, 705, 706, 705, 706, 185, 705, + 706, 185, 185, 705, 706, 185, 185, 185, + 185, 185, 185, 705, 706, 705, 706, 705, - 708, 707, 708, 707, 708, 707, 708, 185, - 185, 185, 185, 185, 185, 707, 708, 707, - 708, 707, 708, 707, 708, 707, 708, 185, - 185, 185, 185, 185, 185, 185, 715, 185, + 706, 705, 706, 705, 706, 705, 706, 185, + 185, 185, 185, 185, 185, 705, 706, 705, + 706, 705, 706, 705, 706, 705, 706, 185, + 185, 185, 185, 185, 185, 185, 713, 185, - 185, 185, 185, 716, 717, 716, 185, 185, - 185, 185, 185, 185, 707, 708, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 707, - 708, 707, 708, 185, 185, 185, 185, 185, + 185, 185, 185, 714, 715, 714, 185, 185, + 185, 185, 185, 185, 705, 706, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 705, + 706, 705, 706, 185, 185, 185, 185, 185, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 418, 418, @@ -2135,24 +2135,24 @@ static const unsigned short uc_property_trie[] = { 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 718, 718, 718, 718, 718, 718, 718, 718, - 718, 718, 718, 718, 718, 718, 718, 718, - 718, 718, 718, 718, 718, 718, 718, 718, - 718, 718, 718, 718, 718, 718, 718, 718, + 716, 716, 716, 716, 716, 716, 716, 716, + 716, 716, 716, 716, 716, 716, 716, 716, + 716, 716, 716, 716, 716, 716, 716, 716, + 716, 716, 716, 716, 716, 716, 716, 716, - 718, 718, 718, 718, 718, 718, 718, 718, - 718, 718, 718, 718, 718, 718, 718, 160, - 719, 719, 719, 719, 719, 719, 719, 719, - 719, 719, 719, 719, 719, 719, 719, 719, + 716, 716, 716, 716, 716, 716, 716, 716, + 716, 716, 716, 716, 716, 716, 716, 160, + 717, 717, 717, 717, 717, 717, 717, 717, + 717, 717, 717, 717, 717, 717, 717, 717, - 719, 719, 719, 719, 719, 719, 719, 719, - 719, 719, 719, 719, 719, 719, 719, 719, - 719, 719, 719, 719, 719, 719, 719, 719, - 719, 719, 719, 719, 719, 719, 719, 160, + 717, 717, 717, 717, 717, 717, 717, 717, + 717, 717, 717, 717, 717, 717, 717, 717, + 717, 717, 717, 717, 717, 717, 717, 717, + 717, 717, 717, 717, 717, 717, 717, 160, - 113, 109, 720, 721, 722, 723, 724, 113, + 113, 109, 718, 719, 720, 721, 722, 113, 109, 113, 109, 113, 109, 160, 160, 160, - 160, 160, 160, 160, 725, 113, 109, 725, + 160, 160, 160, 160, 723, 113, 109, 723, 160, 160, 160, 160, 160, 160, 160, 160, 105, 106, 105, 106, 105, 106, 105, 106, @@ -2163,14 +2163,14 @@ static const unsigned short uc_property_trie[] = { 105, 106, 105, 106, 103, 418, 418, 418, 418, 418, 418, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 622, 622, 622, 622, 726, 622, 622, + 160, 620, 620, 620, 620, 724, 620, 620, - 727, 727, 727, 727, 727, 727, 727, 727, - 727, 727, 727, 727, 727, 727, 727, 727, - 727, 727, 727, 727, 727, 727, 727, 727, - 727, 727, 727, 727, 727, 727, 727, 727, + 725, 725, 725, 725, 725, 725, 725, 725, + 725, 725, 725, 725, 725, 725, 725, 725, + 725, 725, 725, 725, 725, 725, 725, 725, + 725, 725, 725, 725, 725, 725, 725, 725, - 727, 727, 727, 727, 727, 727, 160, 160, + 725, 725, 725, 725, 725, 725, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, @@ -2195,227 +2195,227 @@ static const unsigned short uc_property_trie[] = { 323, 323, 323, 323, 323, 323, 323, 160, 323, 323, 323, 323, 323, 323, 323, 160, - 728, 728, 729, 730, 729, 730, 728, 728, - 728, 729, 730, 728, 729, 730, 622, 622, - 622, 622, 622, 622, 622, 622, 621, 731, - 160, 160, 160, 160, 729, 730, 160, 160, + 726, 726, 727, 728, 727, 728, 726, 726, + 726, 727, 728, 726, 727, 728, 620, 620, + 620, 620, 620, 620, 620, 620, 619, 729, + 160, 160, 160, 160, 727, 728, 160, 160, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 160, 732, 732, 732, 732, 732, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 160, 730, 730, 730, 730, 730, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 160, 160, 160, 160, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 160, 160, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 160, 160, 160, 160, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 160, 160, 160, 160, - 733, 734, 735, 736, 737, 738, 739, 740, + 731, 732, 733, 734, 735, 736, 737, 738, 16, 17, 16, 17, 16, 17, 16, 17, - 16, 17, 737, 737, 16, 17, 16, 17, - 16, 17, 16, 17, 741, 16, 17, 742, - - 737, 740, 740, 740, 740, 740, 740, 740, - 740, 740, 743, 744, 140, 745, 746, 746, - 747, 748, 748, 748, 748, 748, 737, 737, - 749, 749, 749, 750, 751, 752, 732, 737, - - 160, 753, 739, 753, 739, 753, 739, 753, - 739, 753, 739, 739, 739, 739, 739, 739, - 739, 739, 739, 739, 739, 739, 739, 739, - 739, 739, 739, 739, 739, 739, 739, 739, - - 739, 739, 739, 753, 739, 739, 739, 739, - 739, 739, 739, 739, 739, 739, 739, 739, - 739, 739, 739, 739, 739, 739, 739, 739, - 739, 739, 739, 739, 739, 739, 739, 739, - - 739, 739, 739, 753, 739, 753, 739, 753, - 739, 739, 739, 739, 739, 739, 753, 739, - 739, 739, 739, 739, 739, 754, 754, 160, - 160, 755, 755, 756, 756, 757, 757, 758, - - 759, 760, 761, 760, 761, 760, 761, 760, - 761, 760, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - - 761, 761, 761, 760, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 761, 761, - - 761, 761, 761, 760, 761, 760, 761, 760, - 761, 761, 761, 761, 761, 761, 760, 761, - 761, 761, 761, 761, 761, 760, 760, 761, - 761, 761, 761, 762, 763, 763, 763, 764, - - 160, 160, 160, 160, 160, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 160, 160, 160, - 160, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 765, + 16, 17, 735, 735, 16, 17, 16, 17, + 16, 17, 16, 17, 739, 16, 17, 740, + + 735, 738, 738, 738, 738, 738, 738, 738, + 738, 738, 741, 742, 140, 743, 744, 744, + 745, 746, 746, 746, 746, 746, 735, 735, + 747, 747, 747, 748, 749, 750, 730, 735, + + 160, 751, 737, 751, 737, 751, 737, 751, + 737, 751, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + + 737, 737, 737, 751, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + + 737, 737, 737, 751, 737, 751, 737, 751, + 737, 737, 737, 737, 737, 737, 751, 737, + 737, 737, 737, 737, 737, 752, 752, 160, + 160, 753, 753, 754, 754, 755, 755, 756, + + 757, 758, 759, 758, 759, 758, 759, 758, + 759, 758, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, + + 759, 759, 759, 758, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, + 759, 759, 759, 759, 759, 759, 759, 759, + + 759, 759, 759, 758, 759, 758, 759, 758, + 759, 759, 759, 759, 759, 759, 758, 759, + 759, 759, 759, 759, 759, 758, 758, 759, + 759, 759, 759, 760, 761, 761, 761, 762, + + 160, 160, 160, 160, 160, 763, 763, 763, + 763, 763, 763, 763, 763, 763, 763, 763, + 763, 763, 763, 763, 763, 763, 763, 763, + 763, 763, 763, 763, 763, 763, 763, 763, + + 763, 763, 763, 763, 763, 763, 763, 763, + 763, 763, 763, 763, 763, 160, 160, 160, + 160, 763, 763, 763, 763, 763, 763, 763, + 763, 763, 763, 763, 763, 763, 763, 763, + + 763, 763, 763, 763, 763, 763, 763, 763, + 763, 763, 763, 763, 763, 763, 763, 763, + 763, 763, 763, 763, 763, 763, 763, 763, + 763, 763, 763, 763, 763, 763, 763, 763, + + 763, 763, 763, 763, 763, 763, 763, 763, + 763, 763, 763, 763, 763, 763, 763, 160, + 764, 764, 765, 765, 765, 765, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, - 765, 765, 765, 765, 765, 765, 765, 765, - 765, 765, 765, 765, 765, 765, 765, 160, - 766, 766, 767, 767, 767, 767, 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, - - 768, 768, 768, 768, 768, 768, 768, 768, - 768, 768, 768, 768, 768, 768, 768, 768, - 768, 768, 768, 768, 768, 768, 768, 768, + 766, 766, 766, 766, 766, 766, 766, 766, + 766, 766, 766, 766, 766, 766, 766, 766, 160, 160, 160, 160, 160, 160, 160, 160, - 769, 769, 769, 769, 769, 769, 769, 769, - 769, 769, 769, 769, 769, 769, 769, 769, + 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 767, 767, 767, 767, 767, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 770, 770, 770, 770, 770, 770, 770, 770, - 770, 770, 770, 770, 770, 770, 770, 770, + 768, 768, 768, 768, 768, 768, 768, 768, + 768, 768, 768, 768, 768, 768, 768, 768, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 771, 771, 160, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 769, 769, 160, - 767, 767, 767, 767, 767, 767, 767, 767, - 767, 767, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, + 765, 765, 765, 765, 765, 765, 765, 765, + 765, 765, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, - 766, 766, 766, 766, 160, 160, 160, 160, + 764, 764, 764, 764, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 771, 772, 772, 772, 772, 772, 772, 772, - 772, 772, 772, 772, 772, 772, 772, 772, + 769, 770, 770, 770, 770, 770, 770, 770, + 770, 770, 770, 770, 770, 770, 770, 770, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 771, 771, 769, 766, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 769, 769, 767, 764, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 772, 772, 772, 772, 772, 772, 772, - 772, 772, 772, 772, 772, 772, 772, 772, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 770, 770, 770, 770, 770, 770, 770, + 770, 770, 770, 770, 770, 770, 770, 770, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 771, 771, 771, 771, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 769, 769, 769, 769, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 160, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 160, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 771, - 771, 771, 771, 766, 766, 766, 766, 766, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 769, + 769, 769, 769, 764, 764, 764, 764, 764, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 771, 771, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 769, 769, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 771, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 769, - 773, 773, 773, 773, 773, 773, 773, 773, - 773, 773, 773, 773, 773, 773, 773, 773, - 773, 773, 773, 773, 773, 773, 773, 773, - 773, 773, 773, 773, 773, 773, 773, 773, + 771, 771, 771, 771, 771, 771, 771, 771, + 771, 771, 771, 771, 771, 771, 771, 771, + 771, 771, 771, 771, 771, 771, 771, 771, + 771, 771, 771, 771, 771, 771, 771, 771, - 773, 773, 773, 773, 773, 773, 773, 773, - 773, 773, 773, 773, 773, 773, 773, 773, - 773, 773, 773, 773, 773, 773, 160, 160, + 771, 771, 771, 771, 771, 771, 771, 771, + 771, 771, 771, 771, 771, 771, 771, 771, + 771, 771, 771, 771, 771, 771, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 739, 739, 739, 739, 739, 739, 739, 739, - 739, 739, 739, 739, 739, 739, 739, 739, - 739, 739, 739, 739, 739, 739, 739, 739, - 739, 739, 739, 739, 739, 739, 739, 739, + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, - 739, 739, 739, 739, 739, 739, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 160, 160, 160, 160, + 737, 737, 737, 737, 737, 737, 772, 772, + 772, 772, 772, 772, 772, 772, 772, 772, + 772, 772, 772, 772, 772, 772, 772, 772, + 772, 772, 772, 772, 160, 160, 160, 160, - 768, 768, 768, 768, 768, 768, 768, 768, - 768, 768, 768, 768, 768, 768, 768, 768, - 768, 768, 768, 768, 768, 775, 768, 768, - 768, 768, 768, 768, 768, 768, 768, 768, + 766, 766, 766, 766, 766, 766, 766, 766, + 766, 766, 766, 766, 766, 766, 766, 766, + 766, 766, 766, 766, 766, 773, 766, 766, + 766, 766, 766, 766, 766, 766, 766, 766, - 768, 768, 768, 768, 768, 768, 768, 768, - 768, 768, 768, 768, 768, 768, 768, 768, - 768, 768, 768, 768, 768, 768, 768, 768, - 768, 768, 768, 768, 768, 768, 768, 768, + 766, 766, 766, 766, 766, 766, 766, 766, + 766, 766, 766, 766, 766, 766, 766, 766, + 766, 766, 766, 766, 766, 766, 766, 766, + 766, 766, 766, 766, 766, 766, 766, 766, - 768, 768, 768, 768, 768, 768, 768, 768, - 768, 768, 768, 768, 768, 160, 160, 160, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, + 766, 766, 766, 766, 766, 766, 766, 766, + 766, 766, 766, 766, 766, 160, 160, 160, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, - 732, 732, 776, 776, 732, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, - 732, 732, 732, 732, 776, 732, 732, 732, - 732, 732, 732, 732, 732, 732, 732, 732, + 730, 730, 774, 774, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 774, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, - 732, 776, 732, 732, 732, 776, 732, 160, + 730, 774, 730, 730, 730, 774, 730, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 778, - 778, 778, 778, 160, 160, 160, 160, 160, + 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 775, 776, + 776, 776, 776, 160, 160, 160, 160, 160, - 779, 779, 160, 160, 160, 160, 160, 160, + 777, 777, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 323, 323, 780, 323, 323, 323, 781, 323, - 323, 323, 323, 782, 323, 323, 323, 323, + 323, 323, 778, 323, 323, 323, 779, 323, + 323, 323, 323, 780, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 464, 464, 782, 782, 464, + 323, 323, 323, 464, 464, 780, 780, 464, 418, 418, 418, 418, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, @@ -2427,91 +2427,91 @@ static const unsigned short uc_property_trie[] = { 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 783, 783, 304, 304, + 322, 322, 322, 322, 781, 781, 304, 304, 160, 160, 160, 160, 160, 160, 160, 160, - 784, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 784, 785, 785, 785, + 782, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 782, 783, 783, 783, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, - 784, 785, 785, 785, 785, 785, 785, 785, + 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, + 782, 783, 783, 783, 783, 783, 783, 783, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 784, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, + 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 782, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, - 784, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, + 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, + 782, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 784, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, + 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 782, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, - 785, 785, 785, 785, 785, 785, 785, 785, - 784, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, + 783, 783, 783, 783, 783, 783, 783, 783, + 782, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, - 785, 785, 785, 785, 784, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 785, 785, 785, + 783, 783, 783, 783, 782, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 783, 783, 783, 783, 783, - 785, 785, 785, 785, 160, 160, 160, 160, + 783, 783, 783, 783, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + + 785, 785, 785, 785, 785, 785, 785, 785, + 785, 785, 785, 785, 785, 785, 785, 785, + 785, 785, 785, 785, 785, 785, 785, 785, + 785, 785, 785, 785, 785, 785, 785, 785, + + 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 160, 160, + 786, 786, 786, 786, 786, 786, 786, 786, + 786, 786, 786, 786, 786, 786, 786, 786, + 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, - 787, 787, 787, 787, 787, 787, 787, 787, - 787, 787, 787, 787, 787, 787, 787, 787, - 787, 787, 787, 787, 787, 787, 787, 787, - 787, 787, 787, 787, 787, 787, 787, 787, - - 739, 739, 739, 739, 739, 739, 739, 739, - 739, 739, 739, 739, 739, 739, 160, 160, - 788, 788, 788, 788, 788, 788, 788, 788, - 788, 788, 788, 788, 788, 788, 788, 788, - - 788, 788, 788, 788, 788, 788, 788, 788, - 788, 788, 788, 788, 788, 788, 788, 788, - 788, 788, 788, 788, 788, 788, 788, 788, - 788, 788, 788, 788, 788, 788, 788, 788, - - 788, 788, 788, 788, 788, 788, 788, 788, - 788, 788, 788, 160, 160, 160, 160, 160, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, + 786, 786, 786, 786, 786, 786, 786, 786, + 786, 786, 786, 160, 160, 160, 160, 160, + 772, 772, 772, 772, 772, 772, 772, 772, + 772, 772, 772, 772, 772, 772, 772, 772, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, + 772, 772, 772, 772, 772, 772, 772, 772, + 772, 772, 772, 772, 772, 772, 772, 772, + 772, 772, 772, 772, 772, 772, 772, 772, + 772, 772, 772, 772, 772, 772, 772, 772, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 160, 160, 160, 160, 160, 160, + 772, 772, 772, 772, 772, 772, 772, 772, + 772, 772, 772, 772, 772, 772, 772, 772, + 772, 772, 772, 772, 772, 772, 772, 772, + 772, 772, 160, 160, 160, 160, 160, 160, - 789, 790, 791, 792, 793, 794, 795, 160, + 787, 788, 789, 790, 791, 792, 792, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 796, 797, 798, 799, 800, - 160, 160, 160, 160, 160, 801, 802, 231, + 160, 160, 160, 793, 794, 795, 796, 797, + 160, 160, 160, 160, 160, 798, 799, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 635, 231, 231, 231, 231, 231, 231, + 231, 633, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 205, 231, 231, 231, 231, 231, 205, 231, 205, @@ -2538,7 +2538,7 @@ static const unsigned short uc_property_trie[] = { 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 600, 742, + 243, 243, 243, 243, 243, 243, 598, 740, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, @@ -2552,63 +2552,63 @@ static const unsigned short uc_property_trie[] = { 243, 243, 243, 243, 243, 243, 243, 243, 235, 235, 235, 235, 235, 235, 235, 235, - 803, 803, 803, 803, 803, 803, 803, 803, - 803, 803, 803, 803, 803, 803, 803, 803, + 800, 800, 800, 800, 800, 800, 800, 800, + 800, 800, 800, 800, 800, 800, 800, 800, - 803, 803, 803, 803, 803, 803, 803, 803, - 803, 803, 803, 803, 803, 803, 803, 803, + 800, 800, 800, 800, 800, 800, 800, 800, + 800, 800, 800, 800, 800, 800, 800, 800, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 804, 239, 235, 235, + 243, 243, 243, 243, 801, 239, 235, 235, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, - 805, 806, 806, 805, 805, 807, 807, 808, - 809, 810, 160, 160, 160, 160, 160, 160, + 802, 803, 803, 802, 802, 804, 804, 805, + 806, 807, 160, 160, 160, 160, 160, 160, 139, 139, 139, 139, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 736, 747, 747, 811, 811, 600, 742, 600, - 742, 600, 742, 600, 742, 600, 742, 600, + 734, 745, 745, 808, 808, 598, 740, 598, + 740, 598, 740, 598, 740, 598, 740, 598, - 742, 600, 742, 600, 742, 752, 752, 812, - 813, 736, 736, 736, 736, 811, 811, 811, - 814, 736, 815, 160, 762, 816, 9, 9, - 747, 16, 17, 16, 17, 16, 17, 817, + 740, 598, 740, 598, 740, 750, 750, 809, + 810, 734, 734, 734, 734, 808, 808, 808, + 811, 734, 812, 160, 760, 813, 9, 9, + 745, 16, 17, 16, 17, 16, 17, 814, - 736, 736, 818, 819, 820, 821, 822, 160, - 736, 12, 13, 736, 160, 160, 160, 160, + 734, 734, 815, 816, 817, 818, 819, 160, + 734, 12, 13, 734, 160, 160, 160, 160, 243, 243, 243, 286, 243, 235, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 235, 235, 823, - - 160, 9, 736, 817, 12, 13, 736, 736, - 16, 17, 736, 818, 814, 819, 815, 824, - 825, 826, 827, 828, 829, 830, 831, 832, - 833, 834, 816, 762, 835, 822, 836, 9, + 243, 243, 243, 243, 243, 235, 235, 820, + + 160, 9, 734, 814, 12, 13, 734, 734, + 16, 17, 734, 815, 811, 816, 812, 821, + 822, 823, 824, 825, 826, 827, 828, 829, + 830, 831, 813, 760, 832, 819, 833, 9, + + 734, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 39, 734, 41, 835, 808, + + 835, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 836, 836, 836, 836, 836, + 836, 836, 836, 39, 819, 41, 819, 698, + + 699, 733, 16, 17, 732, 760, 837, 758, + 758, 758, 758, 758, 758, 758, 758, 758, + 761, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, - 736, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, - 837, 837, 837, 39, 736, 41, 838, 811, - - 838, 839, 839, 839, 839, 839, 839, 839, - 839, 839, 839, 839, 839, 839, 839, 839, - 839, 839, 839, 839, 839, 839, 839, 839, - 839, 839, 839, 39, 822, 41, 822, 700, - - 701, 735, 16, 17, 734, 762, 840, 760, - 760, 760, 760, 760, 760, 760, 760, 760, - 763, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, - - 840, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 763, 763, + 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 761, 761, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, @@ -2620,10 +2620,10 @@ static const unsigned short uc_property_trie[] = { 160, 160, 90, 90, 90, 90, 90, 90, 160, 160, 90, 90, 90, 160, 160, 160, - 48, 12, 822, 838, 737, 12, 12, 160, + 48, 12, 819, 835, 735, 12, 12, 160, 49, 36, 36, 36, 36, 49, 49, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 841, 841, 841, 842, 49, 843, 843, + 160, 838, 838, 838, 839, 49, 840, 840, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 160, 308, 308, 308, @@ -2650,68 +2650,68 @@ static const unsigned short uc_property_trie[] = { 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 160, 160, 160, 160, 160, - 844, 845, 846, 160, 160, 160, 160, 847, - 847, 847, 847, 847, 847, 847, 847, 847, - 847, 847, 847, 847, 847, 847, 847, 847, - 847, 847, 847, 847, 847, 847, 847, 847, + 841, 842, 843, 160, 160, 160, 160, 844, + 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, - 847, 847, 847, 847, 847, 847, 847, 847, - 847, 847, 847, 847, 847, 847, 847, 847, - 847, 847, 847, 847, 160, 160, 160, 848, - 848, 848, 848, 848, 848, 848, 848, 848, + 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 844, 844, 844, 844, + 844, 844, 844, 844, 160, 160, 160, 845, + 845, 845, 845, 845, 845, 845, 845, 845, - 849, 849, 849, 849, 849, 849, 849, 849, - 849, 849, 849, 849, 849, 849, 849, 849, - 849, 849, 849, 849, 849, 849, 849, 849, - 849, 849, 849, 849, 849, 849, 849, 849, + 846, 846, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, - 849, 849, 849, 849, 849, 849, 849, 849, - 849, 849, 849, 849, 849, 849, 849, 849, - 849, 849, 849, 849, 849, 726, 726, 726, - 726, 418, 418, 418, 418, 418, 418, 418, + 846, 846, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 846, 846, 846, + 846, 846, 846, 846, 846, 724, 724, 724, + 724, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 418, 418, 726, 160, 160, 160, 160, 160, + 418, 418, 724, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 160, + 847, 847, 847, 847, 847, 847, 847, 847, + 847, 847, 847, 847, 847, 847, 847, 847, + 847, 847, 847, 847, 847, 847, 847, 847, + 847, 847, 847, 847, 847, 847, 847, 160, - 851, 851, 851, 851, 160, 160, 160, 160, + 848, 848, 848, 848, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 850, 850, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 850, 850, 850, + 847, 847, 847, 847, 847, 847, 847, 847, + 847, 847, 847, 847, 847, 847, 847, 847, - 850, 852, 850, 850, 850, 850, 850, 850, - 850, 850, 852, 160, 160, 160, 160, 160, + 847, 849, 847, 847, 847, 847, 847, 847, + 847, 847, 849, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 160, 844, + 308, 308, 308, 308, 308, 308, 160, 841, 323, 323, 323, 323, 160, 160, 160, 160, 323, 323, 323, 323, 323, 323, 323, 323, - 465, 853, 853, 853, 853, 853, 160, 160, + 465, 850, 850, 850, 850, 850, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 854, 854, 854, 854, 854, 854, 854, 854, - 854, 854, 854, 854, 854, 854, 854, 854, - 854, 854, 854, 854, 854, 854, 854, 854, - 854, 854, 854, 854, 854, 854, 854, 854, + 851, 851, 851, 851, 851, 851, 851, 851, + 851, 851, 851, 851, 851, 851, 851, 851, + 851, 851, 851, 851, 851, 851, 851, 851, + 851, 851, 851, 851, 851, 851, 851, 851, - 854, 854, 854, 854, 854, 854, 855, 855, - 856, 856, 856, 856, 856, 856, 856, 856, - 856, 856, 856, 856, 856, 856, 856, 856, - 856, 856, 856, 856, 856, 856, 856, 856, + 851, 851, 851, 851, 851, 851, 852, 852, + 853, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 853, 853, 853, 853, 853, 853, - 856, 856, 856, 856, 856, 856, 856, 856, - 856, 856, 856, 856, 856, 856, 857, 857, + 853, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 853, 853, 853, 853, 854, 854, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, @@ -2725,35 +2725,35 @@ static const unsigned short uc_property_trie[] = { 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 858, 858, 858, 858, 858, 858, 205, 205, - 858, 205, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, + 855, 855, 855, 855, 855, 855, 205, 205, + 855, 205, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 205, 858, - 858, 205, 205, 205, 858, 205, 205, 858, + 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 205, 855, + 855, 205, 205, 205, 855, 205, 205, 855, - 859, 859, 859, 859, 859, 859, 859, 859, - 859, 859, 859, 859, 859, 859, 859, 859, - 859, 859, 859, 859, 859, 859, 860, 860, - 860, 860, 205, 205, 205, 205, 205, 861, + 856, 856, 856, 856, 856, 856, 856, 856, + 856, 856, 856, 856, 856, 856, 856, 856, + 856, 856, 856, 856, 856, 856, 857, 857, + 857, 857, 205, 205, 205, 205, 205, 858, - 862, 782, 782, 782, 205, 782, 782, 205, - 205, 205, 205, 205, 782, 152, 782, 153, - 862, 862, 862, 862, 205, 862, 862, 862, - 205, 862, 862, 862, 862, 862, 862, 862, + 859, 780, 780, 780, 205, 780, 780, 205, + 205, 205, 205, 205, 780, 152, 780, 153, + 859, 859, 859, 859, 205, 859, 859, 859, + 205, 859, 859, 859, 859, 859, 859, 859, - 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 205, 205, 205, 205, - 153, 643, 152, 205, 205, 205, 205, 781, + 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 859, 859, 859, 859, + 859, 859, 859, 859, 205, 205, 205, 205, + 153, 641, 152, 205, 205, 205, 205, 779, - 863, 864, 865, 866, 867, 867, 867, 867, + 860, 861, 862, 863, 864, 864, 864, 864, 205, 205, 205, 205, 205, 205, 205, 205, - 868, 868, 868, 868, 868, 868, 868, 868, - 869, 205, 205, 205, 205, 205, 205, 205, + 865, 865, 865, 865, 865, 865, 865, 865, + 866, 205, 205, 205, 205, 205, 205, 205, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, @@ -2854,19 +2854,19 @@ static const unsigned short uc_property_trie[] = { 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 870, 870, 870, 870, 870, - 870, 870, 870, 160, 160, 160, 160, 160, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 867, 867, 867, 867, 867, + 867, 867, 867, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 481, 481, 481, 481, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, @@ -2887,67 +2887,67 @@ static const unsigned short uc_property_trie[] = { 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 160, 160, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 160, - 160, 160, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 872, 873, 874, - 874, 874, 871, 871, 871, 875, 872, 872, - 872, 872, 872, 876, 876, 876, 876, 876, - 876, 876, 876, 877, 877, 877, 877, 877, - 877, 877, 877, 871, 871, 878, 878, 878, - 878, 878, 877, 877, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 878, 878, 878, 878, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 160, 160, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 160, + 160, 160, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 869, 870, 871, + 871, 871, 868, 868, 868, 872, 869, 869, + 869, 869, 869, 873, 873, 873, 873, 873, + 873, 873, 873, 874, 874, 874, 874, 874, + 874, 874, 874, 868, 868, 875, 875, 875, + 875, 875, 874, 874, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 875, 875, 875, 875, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, @@ -2998,169 +2998,169 @@ static const unsigned short uc_property_trie[] = { 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 879, 879, 879, 879, 879, 879, 879, 879, - 879, 879, 879, 879, 879, 879, 879, 879, - 879, 879, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 881, 881, - 881, 881, 881, 881, 881, 160, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 880, 160, 880, 880, - 160, 160, 880, 160, 160, 880, 880, 160, - 160, 880, 880, 880, 880, 160, 880, 880, - 880, 880, 880, 880, 880, 880, 881, 881, - 881, 881, 160, 881, 160, 881, 881, 881, - 881, 102, 881, 881, 160, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - - 881, 881, 881, 881, 880, 880, 160, 880, - 880, 880, 880, 160, 160, 880, 880, 880, - 880, 880, 880, 880, 880, 160, 880, 880, - 880, 880, 880, 880, 880, 160, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 880, 880, 160, 880, 880, 880, 880, 160, - 880, 880, 880, 880, 880, 160, 880, 160, - 160, 160, 880, 880, 880, 880, 880, 880, - 880, 160, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, + 876, 876, 876, 876, 876, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 876, + 876, 876, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 878, 878, + 878, 878, 878, 878, 878, 160, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 877, 160, 877, 877, + 160, 160, 877, 160, 160, 877, 877, 160, + 160, 877, 877, 877, 877, 160, 877, 877, + 877, 877, 877, 877, 877, 877, 878, 878, + 878, 878, 160, 878, 160, 878, 878, 878, + 878, 102, 878, 878, 160, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + + 878, 878, 878, 878, 877, 877, 160, 877, + 877, 877, 877, 160, 160, 877, 877, 877, + 877, 877, 877, 877, 877, 160, 877, 877, + 877, 877, 877, 877, 877, 160, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 877, 877, 160, 877, 877, 877, 877, 160, + 877, 877, 877, 877, 877, 160, 877, 160, + 160, 160, 877, 877, 877, 877, 877, 877, + 877, 160, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, - 881, 881, 881, 881, 881, 881, 881, 881, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 103, 103, 160, 160, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 882, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 882, 881, 881, 881, 881, - 881, 881, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 882, 881, 881, 881, 881, - - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 882, 881, 881, - 881, 881, 881, 881, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 882, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 882, - 881, 881, 881, 881, 881, 881, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 882, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 882, 881, 881, 881, 881, 881, 881, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 880, 880, 880, 880, - 880, 882, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 881, 881, 881, - 881, 881, 881, 882, 881, 881, 881, 881, - 881, 881, 883, 725, 160, 160, 884, 885, - 886, 887, 888, 889, 890, 891, 892, 893, - 884, 885, 886, 887, 888, 889, 890, 891, - 892, 893, 884, 885, 886, 887, 888, 889, - 890, 891, 892, 893, 884, 885, 886, 887, - 888, 889, 890, 891, 892, 893, 884, 885, - 886, 887, 888, 889, 890, 891, 892, 893, - - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, + 878, 878, 878, 878, 878, 878, 878, 878, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 103, 103, 160, 160, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 879, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 879, 878, 878, 878, 878, + 878, 878, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 879, 878, 878, 878, 878, + + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 879, 878, 878, + 878, 878, 878, 878, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 879, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 879, + 878, 878, 878, 878, 878, 878, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 879, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 879, 878, 878, 878, 878, 878, 878, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 877, 877, 877, 877, 877, 877, 877, + 877, 879, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 879, 878, 878, 878, 878, + 878, 878, 880, 723, 160, 160, 881, 882, + 883, 884, 885, 886, 887, 888, 889, 890, + 881, 882, 883, 884, 885, 886, 887, 888, + 889, 890, 881, 882, 883, 884, 885, 886, + 887, 888, 889, 890, 881, 882, 883, 884, + 885, 886, 887, 888, 889, 890, 881, 882, + 883, 884, 885, 886, 887, 888, 889, 890, + + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, @@ -3182,78 +3182,78 @@ static const unsigned short uc_property_trie[] = { 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 894, 894, + 160, 160, 160, 160, 160, 160, 891, 891, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 160, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 160, 160, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 892, 892, + 892, 892, 892, 892, 892, 892, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, @@ -3283,22 +3283,22 @@ static const unsigned short uc_property_trie[] = { 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 876, 160, 160, 160, 160, 160, 160, + 160, 873, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, - 876, 876, 876, 876, 876, 876, 876, 876, + 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 873, 873, 873, 873, 873, 873, + 873, 873, 873, 873, 873, 873, 873, 873, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, @@ -3349,71 +3349,71 @@ static const unsigned short uc_property_trie[] = { 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 894, 894, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 893, 893, + 893, 893, 893, 893, 893, 893, 891, 891, }; #define GET_PROP_INDEX(ucs4) \ @@ -3424,904 +3424,901 @@ static const unsigned short uc_property_trie[] = { #define GET_PROP_INDEX_UCS2(ucs2) \ (uc_property_trie[uc_property_trie[ucs2>>5] + (ucs2 & 0x1f)]) -static const QUnicodeTables::Properties uc_properties [] = { - { 10, 19, 18, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0}, - { 10, 15, 8, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3}, - { 10, 30, 7, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1}, - { 10, 31, 8, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3}, - { 10, 31, 9, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3}, - { 10, 29, 7, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1}, - { 10, 19, 7, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0}, - { 10, 19, 8, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0}, - { 7, 28, 9, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3}, - { 26, 5, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 26, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}, - { 26, 11, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 28, 8, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 9, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10}, - { 22, 0, 10, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10}, - { 23, 1, 10, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10}, - { 27, 8, 3, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 7, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0}, - { 21, 14, 3, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 7, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8}, - { 26, 6, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 10, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 26, 7, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0}, - { 26, 7, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 32, 0, 0, 32, 0, 3, 5}, - { 22, 0, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 10}, - { 26, 8, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 23, 1, 10, 0, 0, -1, 1, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 10}, - { 29, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 20, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -32, -32, 0, 0, 3, 4}, - { 27, 15, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 10, 11, 7, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1}, - { 7, 3, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 28, 9, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4}, - { 24, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 10}, - { 11, 15, 18, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 30, 9, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 27, 8, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 2, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 2, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 29, 16, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 743, 743, 775, 0, 3, 4}, - { 26, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0}, - { 6, 11, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 25, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 10}, - { 6, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 3, 0, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 121, 121, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -232, -232, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 91, 88, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -121, 0, 0, -121, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -300, -300, -268, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 195, 195, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 210, 0, 0, 210, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 206, 0, 0, 206, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 205, 0, 0, 205, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 79, 0, 0, 79, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 202, 0, 0, 202, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 203, 0, 0, 203, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 207, 0, 0, 207, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 97, 97, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 211, 0, 0, 211, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 209, 0, 0, 209, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 163, 163, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 213, 0, 0, 213, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 130, 130, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 214, 0, 0, 214, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 218, 0, 0, 218, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 217, 0, 0, 217, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 219, 0, 0, 219, 0, 3, 5}, - { 19, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 56, 56, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 2, 0, 1, 2, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 1, -1, 0, 1, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -2, -1, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -79, -79, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 113, 110, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, -97, 0, 0, -97, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, -56, 0, 0, -56, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, -130, 0, 0, -130, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 10795, 0, 0, 10795, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, -163, 0, 0, -163, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 10792, 0, 0, 10792, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, -195, 0, 0, -195, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 69, 0, 0, 69, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 71, 0, 0, 71, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -210, -210, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -206, -206, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -205, -205, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -202, -202, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -203, -203, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -207, -207, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -209, -209, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -211, -211, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 10743, 10743, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -213, -213, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -214, -214, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 10727, 10727, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -218, -218, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -69, -69, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -217, -217, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -71, -71, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -219, -219, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4}, - { 18, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4}, - { 18, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 18, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 18, 16, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 29, 11, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 18, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 29, 11, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 19, 17, 230, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 232, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 220, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 216, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 202, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 1, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 240, 0, -1, 1, 0, 0, 0, 0, 0, 0, 84, 84, 116, 4, 1, 0}, - { 1, 19, 17, 230, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 220, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 3, 17, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 230, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 220, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 232, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 220, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 230, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 3, 17, 233, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 3, 17, 234, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 3, 17, 233, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 3, 17, 234, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 3, 17, 233, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 230, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 0, 11, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 130, 130, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 38, 0, 0, 38, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 37, 0, 0, 37, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 64, 0, 0, 64, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 63, 0, 0, 63, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 98, 94, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -38, -38, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -37, -37, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 106, 102, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -31, -31, 1, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -64, -64, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -63, -63, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -62, -62, -30, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -57, -57, -25, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -47, -47, -15, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -54, -54, -22, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -86, -86, -54, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -80, -80, -48, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, -60, 0, 0, -60, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, -96, -96, -64, 0, 3, 4}, - { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 15, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, -7, 0, 0, -7, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, -130, 0, 0, -130, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 80, 0, 0, 80, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 80, 0, 0, 80, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, -80, -80, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -80, -80, 0, 0, 3, 4}, - { 30, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 3, 19, 17, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 15, 0, 0, 15, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -15, -15, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 48, 0, 0, 48, 0, 3, 5}, - { 26, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -48, -48, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 55, 52, 0, 0, 3, 4}, - { 26, 7, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9}, - { 21, 15, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 11, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 19, 17, 220, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 230, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 222, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 228, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 10, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 11, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 12, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 13, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 14, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 15, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 16, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 17, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 18, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 19, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 19, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 20, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 21, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 22, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 26, 15, 1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 19, 17, 23, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 26, 11, 1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 19, 17, 24, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 25, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 26, 5, 1, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 19, 17, 18, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 19, 11, 1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 26, 11, 1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 26, 11, 1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0}, - { 11, 11, 13, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 0, 11, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 28, 9, 13, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 5, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 7, 13, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0}, - { 30, 11, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 5, 13, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 5, 13, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 5, 13, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 19, 11, 13, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 11, 13, 0, 2, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 11, 13, 0, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 18, 11, 13, 0, 3, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 1, 19, 17, 27, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 28, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 29, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 30, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 31, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 32, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 33, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 34, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 4, 10, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 5, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 5, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 5, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 5, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 5, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 5, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 5, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 5, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 5, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 26, 5, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 10, 5, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 26, 11, 13, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 19, 11, 13, 0, 1, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 1, 19, 17, 35, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 19, 11, 13, 0, 1, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 11, 13, 0, 2, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 11, 11, 13, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 3, 19, 17, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 18, 11, 13, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 11, 13, 0, 2, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 30, 11, 13, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 19, 11, 13, 0, 1, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 26, 11, 13, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 26, 11, 13, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 11, 11, 18, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 1, 19, 17, 36, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 19, 11, 13, 0, 1, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 11, 13, 0, 2, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 11, 13, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 1, 19, 17, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 19, 11, 13, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 4, 10, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 1, 0, 0, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 1, 0, 0, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 1, 0, 0, 3, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 1, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 1, 0, 0, 5, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 1, 0, 0, 6, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 1, 0, 0, 7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 1, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 1, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 19, 11, 1, 0, 1, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 1, 19, 17, 230, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 220, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 18, 11, 1, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 30, 11, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 11, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 7, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0}, - { 26, 5, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 18, 11, 1, 0, 3, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 1, 19, 17, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 2, 19, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 1, 19, 17, 7, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 9, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 26, 15, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 4, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 19, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 2, 19, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 6, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 19, 17, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 2, 19, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 28, 8, 4, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 10, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 1, 19, 17, 84, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 91, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 7, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 2, 19, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 1, 19, 17, 9, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 2, 19, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 26, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 19, 26, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 1, 26, 17, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 26, 17, 103, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 26, 17, 9, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 18, 26, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 1, 26, 17, 107, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 26, 15, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 26, 17, 118, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 26, 17, 122, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 19, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 30, 16, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 16, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 3, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 15, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 5, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 5, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 10, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 9, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 6, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 15, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 19, 17, 216, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 22, 0, 10, 0, 0, -1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10}, - { 23, 1, 10, 0, 0, -1, 2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10}, - { 2, 19, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 19, 17, 129, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 130, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 132, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 2, 15, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 1, 19, 17, 9, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 30, 15, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 16, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 19, 26, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 2, 26, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 1, 26, 17, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 26, 17, 7, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 26, 17, 9, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 4, 10, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 26, 15, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 7264, 0, 0, 7264, 0, 3, 5}, - { 19, 11, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 18, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 23, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 6}, - { 19, 24, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 3, 6}, - { 19, 25, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3, 6}, - { 30, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 15, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 6, 11, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 7, 15, 9, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3}, - { 22, 0, 10, 0, 0, -1, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10}, - { 23, 1, 10, 0, 0, -1, 4, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10}, - { 5, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 1, 19, 17, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 9, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 26, 15, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 11, 26, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 26, 4, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 18, 26, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 28, 8, 4, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 26, 17, 230, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 6, 11, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 11, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 15, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 15, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 21, 16, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 7, 3, 9, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3}, - { 1, 19, 17, 228, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 2, 19, 17, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 1, 19, 17, 222, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 26, 5, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 4, 10, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 2, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 3, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 5, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 19, 26, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 19, 26, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 2, 26, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 4, 10, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 3, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 5, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 26, 26, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 2, 19, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 26, 15, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 2, 19, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 1, 19, 17, 7, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 2, 19, 0, 9, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 10, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 3, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 5, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 6, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 26, 15, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 26, 15, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 18, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4}, - { 18, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 3814, 3814, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 119, 116, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 125, 122, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 131, 128, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 137, 134, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 143, 140, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, -59, -59, -58, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -8, 0, 0, -8, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 149, 146, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 156, 152, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 164, 160, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 172, 168, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 74, 74, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 86, 86, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 100, 100, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 112, 112, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 126, 126, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 244, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 247, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 250, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 253, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 256, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 259, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 262, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 265, 8, 0, 0, 3, 4}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 244, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 247, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 250, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 253, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 256, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 259, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 262, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 268, 0, -8, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 271, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 274, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 277, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 280, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 283, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 286, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 289, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 292, 8, 0, 0, 3, 4}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 271, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 274, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 277, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 280, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 283, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 286, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 289, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 295, 0, -8, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 298, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 301, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 304, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 307, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 310, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 313, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 316, 8, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 319, 8, 0, 0, 3, 4}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 298, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 301, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 304, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 307, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 310, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 313, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 316, 0, -8, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 322, 0, -8, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 346, 343, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 325, 9, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 352, 349, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 179, 176, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 383, 379, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -9, 328, 0, -9, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -7205, -7205, -7173, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 358, 355, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 331, 9, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 364, 361, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 185, 182, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 391, 387, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -86, 0, 0, -86, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -9, 334, 0, -9, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 192, 188, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 94, 94, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 199, 196, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 206, 202, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -100, 0, 0, -100, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 214, 210, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 102, 102, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 221, 218, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 227, 224, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 234, 230, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -112, 0, 0, -112, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -7, 0, 0, -7, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 370, 367, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 337, 9, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 376, 373, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 241, 238, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 399, 395, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -128, 0, 0, -128, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -126, 0, 0, -126, 0, 3, 5}, - { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -9, 340, 0, -9, 0, 3, 5}, - { 7, 15, 9, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3}, - { 7, 3, 9, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3}, - { 11, 18, 18, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 11, 19, 18, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 11, 19, 18, 0, 3, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 11, 19, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 11, 19, 1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 21, 15, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 21, 3, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 21, 17, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 21, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 24, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10}, - { 25, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 4, 10}, - { 22, 0, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}, - { 24, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}, - { 25, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10}, - { 26, 13, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 15, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0}, - { 8, 31, 9, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1}, - { 9, 31, 7, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1}, - { 11, 19, 11, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 11, 19, 14, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 11, 19, 16, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 11, 19, 12, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 11, 19, 15, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 7, 3, 6, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3}, - { 26, 9, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 4, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 27, 7, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0}, - { 26, 4, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 26, 4, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 26, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 11, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 20, 11, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0}, - { 26, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 15, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 7, 15, 9, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3}, - { 11, 20, 18, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 11, 11, 18, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 11, 19, 18, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 6, 11, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 16, 11, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4}, - { 6, 11, 2, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 2, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 2, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 2, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 2, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 2, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 3, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 28, 8, 4, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 28, 8, 4, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 28, 8, 4, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 28, 8, 4, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 3, 19, 17, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 1, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 220, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 1, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 30, 9, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 8, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -7517, 0, 0, -7517, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -8383, 0, 0, -8383, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -8262, 0, 0, -8262, 0, 3, 5}, - { 30, 11, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 28, 0, 0, 28, 0, 3, 5}, - { 30, 11, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 15, 11, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5}, - { 30, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -28, -28, 0, 0, 3, 4}, - { 5, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, 3, 5}, - { 5, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -16, -16, 0, 0, 3, 4}, - { 5, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2016, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 1824, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2104, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2108, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2106, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 2, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 26, 0, 0, 26, 0, 3, 5}, - { 30, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -26, -26, 0, 0, 3, 4}, - { 6, 11, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 9, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 10, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}, - { 30, 5, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 22, 0, 10, 0, 0, -1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10}, - { 23, 1, 10, 0, 0, -1, 6, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10}, - { 27, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0}, - { 22, 0, 10, 0, 0, -1, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10}, - { 23, 1, 10, 0, 0, -1, 8, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10}, - { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0}, - { 22, 0, 10, 0, 0, -1, 6, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 10}, - { 23, 1, 10, 0, 0, -1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10}, - { 22, 0, 10, 0, 0, -1, 6, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10}, - { 23, 1, 10, 0, 0, -1, 6, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 10}, - { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -1824, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -2016, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -2104, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -2106, 0, 0, 0, 0, 0, 0, 0}, - { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -2108, 0, 0, 0, 0, 0, 0, 0}, - { 15, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 48, 0, 0, 48, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, -48, -48, 0, 0, 3, 4}, - { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, -10743, 0, 0, -10743, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, -3814, 0, 0, -3814, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, -10727, 0, 0, -10727, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -10795, -10795, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -10792, -10792, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4}, - { 6, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 16, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, -7264, -7264, 0, 0, 3, 4}, - { 26, 2, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}, - { 24, 2, 10, 0, 0, -1, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10}, - { 25, 2, 10, 0, 0, -1, 8, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10}, - { 21, 15, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 12, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 7, 12, 9, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3}, - { 26, 1, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 1, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 26, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 18, 4, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 5, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 21, 4, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 23, 1, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}, - { 1, 19, 17, 218, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 228, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 222, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 224, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 21, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 18, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6}, - { 5, 12, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 18, 4, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 4, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 26, 12, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 19, 4, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 19, 4, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 1, 19, 17, 8, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 29, 4, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0}, - { 18, 4, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 19, 12, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 21, 4, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0}, - { 19, 4, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6}, - { 19, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6}, - { 26, 4, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 18, 4, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6}, - { 19, 12, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6}, - { 19, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 30, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 19, 12, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 30, 12, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 19, 4, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6}, - { 30, 12, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 12, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 19, 12, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 19, 12, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 18, 4, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 30, 12, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 29, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 18, 11, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 29, 11, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 2, 19, 17, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 19, 17, 9, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 26, 16, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 19, 21, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 6}, - { 19, 22, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 6}, - { 12, 27, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 13, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 19, 12, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 12, 9, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 18, 15, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 24, 21, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 31, 27, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 39, 35, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 46, 43, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 49, 43, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 61, 58, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 67, 64, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 73, 70, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 79, 76, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 85, 82, 0, 0, 3, 4}, - { 19, 11, 1, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 1, 19, 17, 26, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 0, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 28, 9, 13, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 7, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0}, - { 26, 1, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 5, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 22, 0, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}, - { 23, 1, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}, - { 26, 13, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 20, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0}, - { 22, 0, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}, - { 23, 1, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10}, - { 26, 1, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 1, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9}, - { 26, 4, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 12, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 27, 12, 3, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 21, 12, 3, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 27, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, - { 27, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0}, - { 27, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 11, 20, 18, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 26, 12, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 12, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 12, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 12, 2, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 12, 2, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 12, 2, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 12, 2, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 12, 2, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 12, 2, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 12, 2, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 4, 12, 2, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 27, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0}, - { 27, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0}, - { 15, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 32, 0, 0, 32, 0, 3, 5}, - { 29, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 16, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -32, -32, 0, 0, 3, 4}, - { 19, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6}, - { 11, 19, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 30, 11, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 0, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 15, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 15, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 15, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 30, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 5, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 6, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 5, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 5, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 15, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 40, 0, 0, 40, 0, 3, 5}, - { 15, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 40, 0, 0, 40, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, -40, -40, 0, 0, 3, 4}, - { 16, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, -40, -40, 0, 0, 3, 4}, - { 19, 11, 1, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 19, 11, 1, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 6, 11, 1, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 15, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 19, 11, 1, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 6, 11, 1, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 1, 0, 0, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 1, 0, 0, 3, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 1, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 6, 11, 1, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 15, 1, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 26, 11, 1, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 5, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6}, - { 30, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 2, 19, 0, 216, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 2, 19, 0, 216, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 1, 19, 17, 1, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 2, 19, 0, 226, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 11, 19, 18, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2}, - { 1, 19, 17, 220, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 1, 19, 17, 230, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0}, - { 6, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 15, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5}, - { 16, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4}, - { 27, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5}, - { 4, 10, 2, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 7, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 8, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 4, 10, 2, 0, 0, 9, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7}, - { 0, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - { 19, 12, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6}, - { 13, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, +static const QUnicodeTables::Properties uc_properties[] = { + { 10, 19, 18, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0 }, + { 10, 15, 8, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3 }, + { 10, 30, 7, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1 }, + { 10, 31, 8, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3 }, + { 10, 31, 9, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3 }, + { 10, 29, 7, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1 }, + { 10, 19, 7, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0 }, + { 10, 19, 8, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0 }, + { 7, 28, 9, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 }, + { 26, 5, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 26, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 }, + { 26, 11, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 28, 8, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 9, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10 }, + { 22, 0, 10, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10 }, + { 23, 1, 10, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10 }, + { 27, 8, 3, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 7, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 }, + { 21, 14, 3, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 7, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8 }, + { 26, 6, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 10, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 26, 7, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0 }, + { 26, 7, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 32, 0, 0, 32, 0, 3, 5 }, + { 22, 0, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 10 }, + { 26, 8, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 23, 1, 10, 0, 0, -1, 1, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 10 }, + { 29, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 20, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -32, -32, 0, 0, 3, 4 }, + { 27, 15, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 10, 11, 7, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1 }, + { 7, 3, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 28, 9, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4 }, + { 24, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 10 }, + { 11, 15, 18, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 30, 9, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 8, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 2, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 2, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 29, 16, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 743, 743, 775, 0, 3, 4 }, + { 26, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0 }, + { 6, 11, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 25, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, 10 }, + { 6, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 3, 0, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 121, 121, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -232, -232, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 85, 85, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -121, 0, 0, -121, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -300, -300, -268, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 195, 195, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 210, 0, 0, 210, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 206, 0, 0, 206, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 205, 0, 0, 205, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 79, 0, 0, 79, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 202, 0, 0, 202, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 203, 0, 0, 203, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 207, 0, 0, 207, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 97, 97, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 211, 0, 0, 211, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 209, 0, 0, 209, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 163, 163, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 213, 0, 0, 213, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 130, 130, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 214, 0, 0, 214, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 218, 0, 0, 218, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 217, 0, 0, 217, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 219, 0, 0, 219, 0, 3, 5 }, + { 19, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 56, 56, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 2, 0, 1, 2, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 1, -1, 0, 1, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -2, -1, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -79, -79, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 96, 96, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, -97, 0, 0, -97, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, -56, 0, 0, -56, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, -130, 0, 0, -130, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 10795, 0, 0, 10795, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, -163, 0, 0, -163, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 10792, 0, 0, 10792, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, -195, 0, 0, -195, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 69, 0, 0, 69, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 71, 0, 0, 71, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -210, -210, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -206, -206, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -205, -205, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -202, -202, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -203, -203, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -207, -207, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -209, -209, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -211, -211, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 10743, 10743, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -213, -213, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -214, -214, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 10727, 10727, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -218, -218, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -69, -69, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -217, -217, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -71, -71, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -219, -219, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4 }, + { 18, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4 }, + { 18, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 18, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 18, 16, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 29, 11, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 18, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 29, 11, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 1, 19, 17, 230, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 232, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 220, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 216, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 202, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 1, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 240, 0, -1, 1, 0, 0, 0, 0, 0, 0, 84, 84, 116, 4, 1, 0 }, + { 1, 19, 17, 230, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 220, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 3, 17, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 230, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 220, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 232, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 220, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 230, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 3, 17, 233, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 3, 17, 234, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 3, 17, 233, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 3, 17, 234, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 3, 17, 233, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 230, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 14, 11, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 130, 130, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 38, 0, 0, 38, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 37, 0, 0, 37, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 64, 0, 0, 64, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 63, 0, 0, 63, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 88, 88, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -38, -38, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -37, -37, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 92, 92, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -31, -31, 1, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -64, -64, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -63, -63, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -62, -62, -30, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -57, -57, -25, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -47, -47, -15, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -54, -54, -22, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -86, -86, -54, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -80, -80, -48, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, -60, 0, 0, -60, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, -96, -96, -64, 0, 3, 4 }, + { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 15, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, -7, 0, 0, -7, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, -130, 0, 0, -130, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 80, 0, 0, 80, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 80, 0, 0, 80, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, -80, -80, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -80, -80, 0, 0, 3, 4 }, + { 30, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 3, 19, 17, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 15, 0, 0, 15, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -15, -15, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 48, 0, 0, 48, 0, 3, 5 }, + { 26, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -48, -48, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 52, 49, 0, 0, 3, 4 }, + { 26, 7, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9 }, + { 21, 15, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 14, 11, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 1, 19, 17, 220, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 230, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 222, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 228, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 10, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 11, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 12, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 13, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 14, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 15, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 16, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 17, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 18, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 19, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 19, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 20, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 21, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 22, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 26, 15, 1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 1, 19, 17, 23, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 26, 11, 1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 1, 19, 17, 24, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 25, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 26, 5, 1, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 1, 19, 17, 18, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 19, 11, 1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 26, 11, 1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 26, 11, 1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0 }, + { 11, 11, 13, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 14, 11, 13, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 28, 9, 13, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 5, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 7, 13, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 }, + { 30, 11, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 5, 13, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 5, 13, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 5, 13, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 19, 11, 13, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 11, 13, 0, 2, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 11, 13, 0, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 18, 11, 13, 0, 3, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 1, 19, 17, 27, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 28, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 29, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 30, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 31, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 32, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 33, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 34, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 4, 10, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 5, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 5, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 5, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 5, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 5, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 5, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 5, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 5, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 5, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 26, 5, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 10, 5, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 26, 11, 13, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 19, 11, 13, 0, 1, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 1, 19, 17, 35, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 19, 11, 13, 0, 1, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 11, 13, 0, 2, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 11, 11, 13, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 3, 19, 17, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 18, 11, 13, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 11, 13, 0, 2, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 30, 11, 13, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 19, 11, 13, 0, 1, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 26, 11, 13, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 26, 11, 13, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 11, 11, 18, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 1, 19, 17, 36, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 19, 11, 13, 0, 1, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 11, 13, 0, 2, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 11, 13, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 1, 19, 17, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 19, 11, 13, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 4, 10, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 1, 0, 0, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 1, 0, 0, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 1, 0, 0, 3, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 1, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 1, 0, 0, 5, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 1, 0, 0, 6, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 1, 0, 0, 7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 1, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 1, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 19, 11, 1, 0, 1, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 1, 19, 17, 230, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 220, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 18, 11, 1, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 30, 11, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 11, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 7, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 }, + { 26, 5, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 18, 11, 1, 0, 3, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 1, 19, 17, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 2, 19, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 1, 19, 17, 7, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 9, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 26, 15, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 4, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 19, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 2, 19, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 6, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 1, 19, 17, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 2, 19, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 28, 8, 4, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 10, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 1, 19, 17, 84, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 91, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 7, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 2, 19, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 1, 19, 17, 9, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 2, 19, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 26, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 19, 26, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 1, 26, 17, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 26, 17, 103, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 26, 17, 9, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 18, 26, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 1, 26, 17, 107, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 26, 15, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 1, 26, 17, 118, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 26, 17, 122, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 19, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 30, 16, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 16, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 3, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 15, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 5, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 5, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 10, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 7, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 9, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 6, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 15, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 1, 19, 17, 216, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 22, 0, 10, 0, 0, -1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10 }, + { 23, 1, 10, 0, 0, -1, 2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10 }, + { 2, 19, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 1, 19, 17, 129, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 130, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 132, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 2, 15, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 1, 19, 17, 9, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 30, 15, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 16, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 19, 26, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 2, 26, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 1, 26, 17, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 26, 17, 7, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 26, 17, 9, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 4, 10, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 26, 15, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 7264, 0, 0, 7264, 0, 3, 5 }, + { 19, 11, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 18, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 23, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 6 }, + { 19, 24, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 3, 6 }, + { 19, 25, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3, 6 }, + { 30, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 15, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 6, 11, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 0, 0, 0, 7, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 0, 0, 0, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 7, 15, 9, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 }, + { 22, 0, 10, 0, 0, -1, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10 }, + { 23, 1, 10, 0, 0, -1, 4, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10 }, + { 5, 11, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 1, 19, 17, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 9, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 26, 15, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 11, 26, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 26, 4, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 18, 26, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 28, 8, 4, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 1, 26, 17, 230, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 6, 11, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 11, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 15, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 15, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 21, 16, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 7, 3, 9, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 }, + { 1, 19, 17, 228, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 2, 19, 17, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 1, 19, 17, 222, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 26, 5, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 4, 10, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 2, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 3, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 5, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 19, 26, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 19, 26, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 2, 26, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 4, 10, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 3, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 5, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 6, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 9, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 26, 26, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 2, 19, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 26, 15, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 2, 19, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 1, 19, 17, 7, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 2, 19, 0, 9, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 10, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 3, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 5, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 6, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 26, 15, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 26, 15, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 18, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4 }, + { 18, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 3814, 3814, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 99, 99, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 102, 102, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 105, 105, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 108, 108, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 111, 111, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, -59, -59, -58, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -8, 0, 0, -8, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 114, 114, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 117, 117, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 121, 121, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 125, 125, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 74, 74, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 86, 86, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 100, 100, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 128, 128, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 112, 112, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 126, 126, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 163, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 166, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 169, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 172, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 175, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 178, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 181, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 184, 8, 0, 0, 3, 4 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 163, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 166, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 169, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 172, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 175, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 178, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 181, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 184, 0, -8, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 187, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 190, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 193, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 196, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 199, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 202, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 205, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 208, 8, 0, 0, 3, 4 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 187, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 190, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 193, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 196, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 199, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 202, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 205, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 208, 0, -8, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 211, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 214, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 217, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 220, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 223, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 226, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 229, 8, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 232, 8, 0, 0, 3, 4 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 211, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 214, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 217, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 220, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 223, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 226, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 229, 0, -8, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -8, 232, 0, -8, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 247, 244, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 235, 9, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 253, 250, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 129, 129, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 284, 280, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -9, 235, 0, -9, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -7205, -7205, -7173, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 259, 256, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 238, 9, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 265, 262, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 132, 132, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 292, 288, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -86, 0, 0, -86, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -9, 238, 0, -9, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 135, 135, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 139, 139, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 142, 142, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -100, 0, 0, -100, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 146, 146, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 150, 150, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 153, 153, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 156, 156, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -112, 0, 0, -112, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -7, 0, 0, -7, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 271, 268, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 241, 9, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 277, 274, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 160, 160, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 300, 296, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -128, 0, 0, -128, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -126, 0, 0, -126, 0, 3, 5 }, + { 17, 11, 0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -9, 241, 0, -9, 0, 3, 5 }, + { 7, 15, 9, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 }, + { 7, 3, 9, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 }, + { 11, 18, 18, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 11, 19, 18, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 11, 19, 18, 0, 3, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 11, 19, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 11, 19, 1, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 21, 15, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 21, 3, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 21, 17, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 21, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 24, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10 }, + { 25, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 4, 10 }, + { 22, 0, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 }, + { 24, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 }, + { 25, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10 }, + { 26, 13, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 15, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0 }, + { 8, 31, 9, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1 }, + { 9, 31, 7, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1 }, + { 11, 19, 11, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 11, 19, 14, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 11, 19, 16, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 11, 19, 12, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 11, 19, 15, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 7, 3, 6, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 }, + { 26, 9, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 4, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 27, 7, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 }, + { 26, 4, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 26, 4, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 26, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 11, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 20, 11, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0 }, + { 26, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 15, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 7, 15, 9, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 }, + { 11, 20, 18, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 11, 11, 18, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 11, 19, 18, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 6, 11, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 16, 11, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4 }, + { 6, 11, 2, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 2, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 2, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 2, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 2, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 2, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 3, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 28, 8, 4, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 28, 8, 4, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 28, 8, 4, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 28, 8, 4, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 3, 19, 17, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 1, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 220, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 1, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 30, 9, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 8, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -7517, 0, 0, -7517, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -8383, 0, 0, -8383, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -8262, 0, 0, -8262, 0, 3, 5 }, + { 30, 11, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 15, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 28, 0, 0, 28, 0, 3, 5 }, + { 30, 11, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 15, 11, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5 }, + { 30, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -28, -28, 0, 0, 3, 4 }, + { 5, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, 3, 5 }, + { 5, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -16, -16, 0, 0, 3, 4 }, + { 5, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2016, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 1824, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2104, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2108, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2106, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 1, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 2, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 26, 0, 0, 26, 0, 3, 5 }, + { 30, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -26, -26, 0, 0, 3, 4 }, + { 6, 11, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 9, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 10, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 2, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 }, + { 30, 5, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 22, 0, 10, 0, 0, -1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10 }, + { 23, 1, 10, 0, 0, -1, 6, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10 }, + { 27, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0 }, + { 22, 0, 10, 0, 0, -1, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10 }, + { 23, 1, 10, 0, 0, -1, 8, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10 }, + { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0 }, + { 22, 0, 10, 0, 0, -1, 6, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 10 }, + { 23, 1, 10, 0, 0, -1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10 }, + { 22, 0, 10, 0, 0, -1, 6, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10 }, + { 23, 1, 10, 0, 0, -1, 6, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 10 }, + { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -1824, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -2016, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -2104, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -2106, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 11, 10, 0, 0, -1, 6, 0, 0, 0, 0, -2108, 0, 0, 0, 0, 0, 0, 0 }, + { 15, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 48, 0, 0, 48, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, -48, -48, 0, 0, 3, 4 }, + { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, -10743, 0, 0, -10743, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, -3814, 0, 0, -3814, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, -10727, 0, 0, -10727, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -10795, -10795, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, -10792, -10792, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4 }, + { 6, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 16, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, -7264, -7264, 0, 0, 3, 4 }, + { 26, 2, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 }, + { 24, 2, 10, 0, 0, -1, 8, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 10 }, + { 25, 2, 10, 0, 0, -1, 8, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 10 }, + { 21, 15, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 12, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 7, 12, 9, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 }, + { 26, 1, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 1, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 26, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 18, 4, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 5, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 21, 4, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 23, 1, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 }, + { 1, 19, 17, 218, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 228, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 222, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 224, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 21, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 18, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6 }, + { 5, 12, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 18, 4, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 4, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 26, 12, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 19, 4, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 19, 4, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 1, 19, 17, 8, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 29, 4, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0 }, + { 18, 4, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 19, 12, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 21, 4, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0 }, + { 19, 4, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6 }, + { 19, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6 }, + { 26, 4, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 18, 4, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6 }, + { 19, 12, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6 }, + { 19, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 30, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 19, 12, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 30, 12, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 19, 4, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6 }, + { 30, 12, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 12, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 19, 12, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 19, 12, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 18, 4, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 30, 12, 10, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 29, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 18, 11, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 29, 11, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 2, 19, 17, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 1, 19, 17, 9, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 26, 16, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 19, 21, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 6 }, + { 19, 22, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 6 }, + { 12, 27, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 13, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 19, 12, 0, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 12, 9, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 18, 15, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 24, 21, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 31, 27, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 39, 35, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 46, 43, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 58, 55, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 64, 61, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 70, 67, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 76, 73, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 1, 0, 1, 1, 0, 0, 0, 82, 79, 0, 0, 3, 4 }, + { 19, 11, 1, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 1, 19, 17, 26, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 14, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 28, 9, 13, 0, 0, -1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 7, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0 }, + { 26, 1, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 5, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 22, 0, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 }, + { 23, 1, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 }, + { 26, 13, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 20, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0 }, + { 22, 0, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 }, + { 23, 1, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10 }, + { 26, 1, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 1, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 }, + { 26, 4, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 12, 4, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 12, 3, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 21, 12, 3, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 11, 20, 18, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 26, 12, 6, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 12, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 12, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 12, 2, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 12, 2, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 12, 2, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 12, 2, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 12, 2, 0, 0, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 12, 2, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 12, 2, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 4, 12, 2, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0 }, + { 27, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0 }, + { 15, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 32, 0, 0, 32, 0, 3, 5 }, + { 29, 12, 10, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 16, 12, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, -32, -32, 0, 0, 3, 4 }, + { 19, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6 }, + { 11, 19, 10, 0, 0, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 30, 11, 10, 0, 0, -1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 14, 11, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 15, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 15, 10, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 15, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 30, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 5, 11, 10, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 6, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 5, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 5, 11, 0, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 15, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 40, 0, 0, 40, 0, 3, 5 }, + { 15, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 40, 0, 0, 40, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, -40, -40, 0, 0, 3, 4 }, + { 16, 11, 0, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, -40, -40, 0, 0, 3, 4 }, + { 19, 11, 1, 0, 0, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 19, 11, 1, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 6, 11, 1, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 15, 10, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 19, 11, 1, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 6, 11, 1, 0, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 1, 0, 0, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 1, 0, 0, 3, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 1, 0, 0, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 6, 11, 1, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 15, 1, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 26, 11, 1, 0, 0, -1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 5, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6 }, + { 30, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 2, 19, 0, 216, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 2, 19, 0, 216, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 1, 19, 17, 1, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 2, 19, 0, 226, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 11, 19, 18, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2 }, + { 1, 19, 17, 220, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 1, 19, 17, 230, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0 }, + { 6, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 15, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5 }, + { 16, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4 }, + { 27, 11, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 15, 11, 0, 0, 0, -1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5 }, + { 4, 10, 2, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 7, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 8, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 4, 10, 2, 0, 0, 9, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7 }, + { 14, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 19, 12, 0, 0, 0, -1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6 }, + { 13, 11, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; static inline const QUnicodeTables::Properties *qGetProp(uint ucs4) @@ -4348,35 +4345,103 @@ Q_CORE_EXPORT const QUnicodeTables::Properties * QT_FASTCALL QUnicodeTables::pro return uc_properties + index; } -#define CURRENT_VERSION QChar::Unicode_5_0 - -static const ushort specialCaseMap [] = { - 0x53, 0x73, 0x0, 0x53, 0x53, 0x0, 0x69, 0x307, 0x0, 0x46, 0x66, 0x0, 0x46, 0x46, 0x0, 0x46, - 0x69, 0x0, 0x46, 0x49, 0x0, 0x46, 0x6c, 0x0, 0x46, 0x4c, 0x0, 0x46, 0x66, 0x69, 0x0, 0x46, - 0x46, 0x49, 0x0, 0x46, 0x66, 0x6c, 0x0, 0x46, 0x46, 0x4c, 0x0, 0x53, 0x74, 0x0, 0x53, 0x54, - 0x0, 0x53, 0x54, 0x0, 0x535, 0x582, 0x0, 0x535, 0x552, 0x0, 0x544, 0x576, 0x0, 0x544, 0x546, 0x0, - 0x544, 0x565, 0x0, 0x544, 0x535, 0x0, 0x544, 0x56b, 0x0, 0x544, 0x53b, 0x0, 0x54e, 0x576, 0x0, 0x54e, - 0x546, 0x0, 0x544, 0x56d, 0x0, 0x544, 0x53d, 0x0, 0x2bc, 0x4e, 0x0, 0x2bc, 0x4e, 0x0, 0x399, 0x308, - 0x301, 0x0, 0x399, 0x308, 0x301, 0x0, 0x3a5, 0x308, 0x301, 0x0, 0x3a5, 0x308, 0x301, 0x0, 0x4a, 0x30c, - 0x0, 0x4a, 0x30c, 0x0, 0x48, 0x331, 0x0, 0x48, 0x331, 0x0, 0x54, 0x308, 0x0, 0x54, 0x308, 0x0, - 0x57, 0x30a, 0x0, 0x57, 0x30a, 0x0, 0x59, 0x30a, 0x0, 0x59, 0x30a, 0x0, 0x41, 0x2be, 0x0, 0x41, - 0x2be, 0x0, 0x3a5, 0x313, 0x0, 0x3a5, 0x313, 0x0, 0x3a5, 0x313, 0x300, 0x0, 0x3a5, 0x313, 0x300, 0x0, - 0x3a5, 0x313, 0x301, 0x0, 0x3a5, 0x313, 0x301, 0x0, 0x3a5, 0x313, 0x342, 0x0, 0x3a5, 0x313, 0x342, 0x0, - 0x391, 0x342, 0x0, 0x391, 0x342, 0x0, 0x397, 0x342, 0x0, 0x397, 0x342, 0x0, 0x399, 0x308, 0x300, 0x0, - 0x399, 0x308, 0x300, 0x0, 0x399, 0x342, 0x0, 0x399, 0x342, 0x0, 0x399, 0x308, 0x342, 0x0, 0x399, 0x308, - 0x342, 0x0, 0x3a5, 0x308, 0x300, 0x0, 0x3a5, 0x308, 0x300, 0x0, 0x3a1, 0x313, 0x0, 0x3a1, 0x313, 0x0, - 0x3a5, 0x342, 0x0, 0x3a5, 0x342, 0x0, 0x3a5, 0x308, 0x342, 0x0, 0x3a5, 0x308, 0x342, 0x0, 0x3a9, 0x342, - 0x0, 0x3a9, 0x342, 0x0, 0x1f08, 0x399, 0x0, 0x1f09, 0x399, 0x0, 0x1f0a, 0x399, 0x0, 0x1f0b, 0x399, 0x0, - 0x1f0c, 0x399, 0x0, 0x1f0d, 0x399, 0x0, 0x1f0e, 0x399, 0x0, 0x1f0f, 0x399, 0x0, 0x1f0f, 0x399, 0x0, 0x1f28, - 0x399, 0x0, 0x1f29, 0x399, 0x0, 0x1f2a, 0x399, 0x0, 0x1f2b, 0x399, 0x0, 0x1f2c, 0x399, 0x0, 0x1f2d, 0x399, - 0x0, 0x1f2e, 0x399, 0x0, 0x1f2f, 0x399, 0x0, 0x1f2f, 0x399, 0x0, 0x1f68, 0x399, 0x0, 0x1f69, 0x399, 0x0, - 0x1f6a, 0x399, 0x0, 0x1f6b, 0x399, 0x0, 0x1f6c, 0x399, 0x0, 0x1f6d, 0x399, 0x0, 0x1f6e, 0x399, 0x0, 0x1f6f, - 0x399, 0x0, 0x1f6f, 0x399, 0x0, 0x391, 0x399, 0x0, 0x391, 0x399, 0x0, 0x397, 0x399, 0x0, 0x397, 0x399, - 0x0, 0x3a9, 0x399, 0x0, 0x3a9, 0x399, 0x0, 0x1fba, 0x345, 0x0, 0x1fba, 0x399, 0x0, 0x386, 0x345, 0x0, - 0x386, 0x399, 0x0, 0x1fca, 0x345, 0x0, 0x1fca, 0x399, 0x0, 0x389, 0x345, 0x0, 0x389, 0x399, 0x0, 0x1ffa, - 0x345, 0x0, 0x1ffa, 0x399, 0x0, 0x38f, 0x345, 0x0, 0x38f, 0x399, 0x0, 0x391, 0x342, 0x345, 0x0, 0x391, - 0x342, 0x399, 0x0, 0x397, 0x342, 0x345, 0x0, 0x397, 0x342, 0x399, 0x0, 0x3a9, 0x342, 0x345, 0x0, 0x3a9, - 0x342, 0x399, 0x0 +static const ushort specialCaseMap[] = { + 0x53, 0x73, 0x0, + 0x53, 0x53, 0x0, + 0x69, 0x307, 0x0, + 0x46, 0x66, 0x0, + 0x46, 0x46, 0x0, + 0x46, 0x69, 0x0, + 0x46, 0x49, 0x0, + 0x46, 0x6c, 0x0, + 0x46, 0x4c, 0x0, + 0x46, 0x66, 0x69, 0x0, + 0x46, 0x46, 0x49, 0x0, + 0x46, 0x66, 0x6c, 0x0, + 0x46, 0x46, 0x4c, 0x0, + 0x53, 0x74, 0x0, + 0x53, 0x54, 0x0, + 0x535, 0x582, 0x0, + 0x535, 0x552, 0x0, + 0x544, 0x576, 0x0, + 0x544, 0x546, 0x0, + 0x544, 0x565, 0x0, + 0x544, 0x535, 0x0, + 0x544, 0x56b, 0x0, + 0x544, 0x53b, 0x0, + 0x54e, 0x576, 0x0, + 0x54e, 0x546, 0x0, + 0x544, 0x56d, 0x0, + 0x544, 0x53d, 0x0, + 0x2bc, 0x4e, 0x0, + 0x399, 0x308, 0x301, 0x0, + 0x3a5, 0x308, 0x301, 0x0, + 0x4a, 0x30c, 0x0, + 0x48, 0x331, 0x0, + 0x54, 0x308, 0x0, + 0x57, 0x30a, 0x0, + 0x59, 0x30a, 0x0, + 0x41, 0x2be, 0x0, + 0x3a5, 0x313, 0x0, + 0x3a5, 0x313, 0x300, 0x0, + 0x3a5, 0x313, 0x301, 0x0, + 0x3a5, 0x313, 0x342, 0x0, + 0x391, 0x342, 0x0, + 0x397, 0x342, 0x0, + 0x399, 0x308, 0x300, 0x0, + 0x399, 0x342, 0x0, + 0x399, 0x308, 0x342, 0x0, + 0x3a5, 0x308, 0x300, 0x0, + 0x3a1, 0x313, 0x0, + 0x3a5, 0x342, 0x0, + 0x3a5, 0x308, 0x342, 0x0, + 0x3a9, 0x342, 0x0, + 0x1f08, 0x399, 0x0, + 0x1f09, 0x399, 0x0, + 0x1f0a, 0x399, 0x0, + 0x1f0b, 0x399, 0x0, + 0x1f0c, 0x399, 0x0, + 0x1f0d, 0x399, 0x0, + 0x1f0e, 0x399, 0x0, + 0x1f0f, 0x399, 0x0, + 0x1f28, 0x399, 0x0, + 0x1f29, 0x399, 0x0, + 0x1f2a, 0x399, 0x0, + 0x1f2b, 0x399, 0x0, + 0x1f2c, 0x399, 0x0, + 0x1f2d, 0x399, 0x0, + 0x1f2e, 0x399, 0x0, + 0x1f2f, 0x399, 0x0, + 0x1f68, 0x399, 0x0, + 0x1f69, 0x399, 0x0, + 0x1f6a, 0x399, 0x0, + 0x1f6b, 0x399, 0x0, + 0x1f6c, 0x399, 0x0, + 0x1f6d, 0x399, 0x0, + 0x1f6e, 0x399, 0x0, + 0x1f6f, 0x399, 0x0, + 0x391, 0x399, 0x0, + 0x397, 0x399, 0x0, + 0x3a9, 0x399, 0x0, + 0x1fba, 0x345, 0x0, + 0x1fba, 0x399, 0x0, + 0x386, 0x345, 0x0, + 0x386, 0x399, 0x0, + 0x1fca, 0x345, 0x0, + 0x1fca, 0x399, 0x0, + 0x389, 0x345, 0x0, + 0x389, 0x399, 0x0, + 0x1ffa, 0x345, 0x0, + 0x1ffa, 0x399, 0x0, + 0x38f, 0x345, 0x0, + 0x38f, 0x399, 0x0, + 0x391, 0x342, 0x345, 0x0, + 0x391, 0x342, 0x399, 0x0, + 0x397, 0x342, 0x345, 0x0, + 0x397, 0x342, 0x399, 0x0, + 0x3a9, 0x342, 0x345, 0x0, + 0x3a9, 0x342, 0x399, 0x0 + }; #define SPECIAL_CASE_MAX_LEN 3 @@ -7700,7 +7765,7 @@ static const unsigned short uc_ligature_trie[] = { #define GET_LIGATURE_INDEX(u2) (u2 < 0x3100 ? uc_ligature_trie[uc_ligature_trie[u2>>5] + (u2 & 0x1f)] : 0xffff); -static const unsigned short uc_ligature_map [] = { +static const unsigned short uc_ligature_map[] = { 0x54, 0x41, 0xc0, 0x45, 0xc8, 0x49, 0xcc, 0x4e, 0x1f8, 0x4f, 0xd2, 0x55, 0xd9, 0x57, 0x1e80, 0x59, @@ -9401,5 +9466,4 @@ static const unsigned char uc_scripts[] = { } // namespace QUnicodeTables - QT_END_NAMESPACE diff --git a/src/corelib/tools/qunicodetables_p.h b/src/corelib/tools/qunicodetables_p.h index 9b0b7cf..5c7cc08 100644 --- a/src/corelib/tools/qunicodetables_p.h +++ b/src/corelib/tools/qunicodetables_p.h @@ -59,33 +59,37 @@ QT_BEGIN_NAMESPACE +#define UNICODE_DATA_VERSION QChar::Unicode_5_0 + +#define UNICODE_LAST_CODEPOINT 0x10ffff + namespace QUnicodeTables { + struct Properties { - ushort category : 8; - ushort line_break_class : 8; - ushort direction : 8; - ushort combiningClass :8; - ushort joining : 2; + ushort category : 8; /* 5 needed */ + ushort line_break_class : 8; /* 6 needed */ + ushort direction : 8; /* 5 needed */ + ushort combiningClass : 8; + ushort joining : 2; signed short digitValue : 6; /* 5 needed */ - ushort unicodeVersion : 4; + ushort unicodeVersion : 4; ushort lowerCaseSpecial : 1; ushort upperCaseSpecial : 1; ushort titleCaseSpecial : 1; - ushort caseFoldSpecial : 1; /* currently unused */ - signed short mirrorDiff : 16; + ushort caseFoldSpecial : 1; /* currently unused */ + signed short mirrorDiff : 16; signed short lowerCaseDiff : 16; signed short upperCaseDiff : 16; signed short titleCaseDiff : 16; - signed short caseFoldDiff : 16; - ushort graphemeBreak : 8; - ushort wordBreak : 8; - ushort sentenceBreak : 8; + signed short caseFoldDiff : 16; + ushort graphemeBreak : 8; /* 4 needed */ + ushort wordBreak : 8; /* 4 needed */ + ushort sentenceBreak : 8; /* 4 needed */ }; Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4); Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2); // See http://www.unicode.org/reports/tr24/tr24-5.html - enum Script { Common, Greek, @@ -172,19 +176,8 @@ namespace QUnicodeTables { }; - Q_CORE_EXPORT QUnicodeTables::LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4); - inline int lineBreakClass(const QChar &ch) { - return QUnicodeTables::lineBreakClass(ch.unicode()); - } - - Q_CORE_EXPORT int QT_FASTCALL script(uint ucs4); - inline int script(const QChar &ch) { - return script(ch.unicode()); - } - - enum GraphemeBreak { - GraphemeBreakOther, + GraphemeBreakOther, GraphemeBreakCR, GraphemeBreakLF, GraphemeBreakControl, @@ -224,8 +217,16 @@ namespace QUnicodeTables { }; -} + Q_CORE_EXPORT QUnicodeTables::LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4); + inline int lineBreakClass(const QChar &ch) + { return lineBreakClass(ch.unicode()); } + + Q_CORE_EXPORT int QT_FASTCALL script(uint ucs4); + inline int script(const QChar &ch) + { return script(ch.unicode()); } + +} // namespace QUnicodeTables QT_END_NAMESPACE -#endif +#endif // QUNICODETABLES_P_H -- cgit v0.12 From a07f8f6eea05729376ca19d221a5f8113f97cdca Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 5 Mar 2010 16:56:59 +0100 Subject: check in MAC_APPLICATION_MENU translations these are stolen directly from mac and should not be altered. extracted from patch by Prasanth. Task-number: QTBUG-4463 --- translations/qt_da.ts | 23 +++++++++++++++++++++++ translations/qt_de.ts | 23 +++++++++++++++++++++++ translations/qt_es.ts | 23 +++++++++++++++++++++++ translations/qt_fr.ts | 23 +++++++++++++++++++++++ translations/qt_ja_JP.ts | 23 +++++++++++++++++++++++ translations/qt_pl.ts | 23 +++++++++++++++++++++++ translations/qt_pt.ts | 23 +++++++++++++++++++++++ translations/qt_ru.ts | 23 +++++++++++++++++++++++ translations/qt_sv.ts | 23 +++++++++++++++++++++++ translations/qt_zh_CN.ts | 23 +++++++++++++++++++++++ translations/qt_zh_TW.ts | 23 +++++++++++++++++++++++ 11 files changed, 253 insertions(+) diff --git a/translations/qt_da.ts b/translations/qt_da.ts index 6267bb2..515ed50 100644 --- a/translations/qt_da.ts +++ b/translations/qt_da.ts @@ -2,6 +2,29 @@ + MAC_APPLICATION_MENU + + + Services + Tjenester + + + + Hide %1 + Skjul %1 + + + + Hide Others + Skjul andre + + + + Show All + Vis alle + + + AudioOutput diff --git a/translations/qt_de.ts b/translations/qt_de.ts index f02a7bb..2108774 100644 --- a/translations/qt_de.ts +++ b/translations/qt_de.ts @@ -2,6 +2,29 @@ + MAC_APPLICATION_MENU + + + Services + Dienste + + + + Hide %1 + %1 ausblenden + + + + Hide Others + Andere ausblenden + + + + Show All + Alle anzeigen + + + CloseButton diff --git a/translations/qt_es.ts b/translations/qt_es.ts index e65f092..596864a 100644 --- a/translations/qt_es.ts +++ b/translations/qt_es.ts @@ -2,6 +2,29 @@ + MAC_APPLICATION_MENU + + + Services + Servicios + + + + Hide %1 + Ocultar %1 + + + + Hide Others + Ocultar otros + + + + Show All + Mostrar todo + + + AudioOutput diff --git a/translations/qt_fr.ts b/translations/qt_fr.ts index 3186a1f..322fb65 100644 --- a/translations/qt_fr.ts +++ b/translations/qt_fr.ts @@ -2,6 +2,29 @@ + MAC_APPLICATION_MENU + + + Services + Services + + + + Hide %1 + Masquer %1 + + + + Hide Others + Masquer les autres + + + + Show All + Tout afficher + + + AudioOutput diff --git a/translations/qt_ja_JP.ts b/translations/qt_ja_JP.ts index 493f3a2..f0dae3a 100644 --- a/translations/qt_ja_JP.ts +++ b/translations/qt_ja_JP.ts @@ -2,6 +2,29 @@ + MAC_APPLICATION_MENU + + + Services + サービス + + + + Hide %1 + %1を隠す + + + + Hide Others + ほかを隠す + + + + Show All + すべてを表示 + + + CloseButton diff --git a/translations/qt_pl.ts b/translations/qt_pl.ts index e219c9a..bf6e1fe 100644 --- a/translations/qt_pl.ts +++ b/translations/qt_pl.ts @@ -2,6 +2,29 @@ + MAC_APPLICATION_MENU + + + Services + Usługi + + + + Hide %1 + Ukryj %1 + + + + Hide Others + Ukryj pozostałe + + + + Show All + Pokaż wszystko + + + CloseButton diff --git a/translations/qt_pt.ts b/translations/qt_pt.ts index 101267c..7ca7fe7 100644 --- a/translations/qt_pt.ts +++ b/translations/qt_pt.ts @@ -2,6 +2,29 @@ + MAC_APPLICATION_MENU + + + Services + Serviços + + + + Hide %1 + Ocultar %1 + + + + Hide Others + Ocultar Outros + + + + Show All + Mostrar Tudo + + + AudioOutput diff --git a/translations/qt_ru.ts b/translations/qt_ru.ts index f2d1af2..9079a6b 100644 --- a/translations/qt_ru.ts +++ b/translations/qt_ru.ts @@ -2,6 +2,29 @@ + MAC_APPLICATION_MENU + + + Services + Службы + + + + Hide %1 + Скрыть %1 + + + + Hide Others + Скрыть остальные + + + + Show All + Показать все + + + CloseButton diff --git a/translations/qt_sv.ts b/translations/qt_sv.ts index 61fc081..391af4a 100644 --- a/translations/qt_sv.ts +++ b/translations/qt_sv.ts @@ -2,6 +2,29 @@ + MAC_APPLICATION_MENU + + + Services + Tjänster + + + + Hide %1 + Göm %1 + + + + Hide Others + Göm övriga + + + + Show All + Visa alla + + + AudioOutput diff --git a/translations/qt_zh_CN.ts b/translations/qt_zh_CN.ts index a3f20a1..d6a995d 100644 --- a/translations/qt_zh_CN.ts +++ b/translations/qt_zh_CN.ts @@ -2,6 +2,29 @@ + MAC_APPLICATION_MENU + + + Services + 服务 + + + + Hide %1 + 隐藏%1 + + + + Hide Others + 隐藏其他 + + + + Show All + 全部显示 + + + AudioOutput diff --git a/translations/qt_zh_TW.ts b/translations/qt_zh_TW.ts index a2cd27e..50c0048 100644 --- a/translations/qt_zh_TW.ts +++ b/translations/qt_zh_TW.ts @@ -2,6 +2,29 @@ + MAC_APPLICATION_MENU + + + Services + 服務 + + + + Hide %1 + 隱藏%1 + + + + Hide Others + 隱藏其他 + + + + Show All + 顯示全部 + + + AudioOutput -- cgit v0.12 From 4d263d64e561a07518985be1a111207a9243bf8d Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Fri, 5 Mar 2010 17:04:30 +0100 Subject: fixed case of GL include directory Merge-request: 484 Reviewed-by: Thiago Macieira --- src/3rdparty/phonon/ds9/videorenderer_soft.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty/phonon/ds9/videorenderer_soft.cpp b/src/3rdparty/phonon/ds9/videorenderer_soft.cpp index f7d42cf..9c7993c 100644 --- a/src/3rdparty/phonon/ds9/videorenderer_soft.cpp +++ b/src/3rdparty/phonon/ds9/videorenderer_soft.cpp @@ -45,7 +45,7 @@ along with this library. If not, see . #endif #ifndef QT_NO_OPENGL -#include +#include #ifndef GL_FRAGMENT_PROGRAM_ARB #define GL_FRAGMENT_PROGRAM_ARB 0x8804 #define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 -- cgit v0.12 From e0534e6cb81894e1fb69ab5c1855aee09db31ead Mon Sep 17 00:00:00 2001 From: Bernhard Rosenkraenzer Date: Fri, 5 Mar 2010 17:06:36 +0100 Subject: Fix build with Mesa 7.8's EGL implementatioon Without this change, when Mesa 7.8 is used, qtextstream.h (included by qdebug.h) complains that it has to be included before any header that defines Status Merge-request: 483 Reviewed-by: Thiago Macieira --- src/gui/egl/qeglproperties.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/egl/qeglproperties.cpp b/src/gui/egl/qeglproperties.cpp index 236ec37..d0d5de7 100644 --- a/src/gui/egl/qeglproperties.cpp +++ b/src/gui/egl/qeglproperties.cpp @@ -39,13 +39,13 @@ ** ****************************************************************************/ +#include +#include + #include "qeglproperties_p.h" QT_BEGIN_NAMESPACE -#include -#include - #include "qegl_p.h" -- cgit v0.12 From 14d8e280407989181cc9581803ed1a080414e77b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kimmo=20Kotaj=C3=A4rvi?= Date: Fri, 5 Mar 2010 17:10:43 +0100 Subject: Added test for QTBUG-6962: Empty authority ignored by QUrl::setAuthority. Merge-request: 482 Reviewed-by: Thiago Macieira --- tests/auto/qurl/tst_qurl.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp index 83109b5..b7cbdb8 100644 --- a/tests/auto/qurl/tst_qurl.cpp +++ b/tests/auto/qurl/tst_qurl.cpp @@ -193,6 +193,7 @@ private slots: void fromUserInput(); void task_199967(); void task_240612(); + void taskQTBUG_6962(); #ifdef QT3_SUPPORT void dirPath(); @@ -3860,5 +3861,13 @@ void tst_QUrl::resolvedWithAbsoluteSchemes_data() const << QUrl::fromEncoded("http://www.foo.com:8080/newfile.html"); } +void tst_QUrl::taskQTBUG_6962() +{ + //bug 6962: empty authority ignored by setAuthority + QUrl url("http://example.com/something"); + url.setAuthority(QString()); + QCOMPARE(url.authority(), QString()); +} + QTEST_MAIN(tst_QUrl) #include "tst_qurl.moc" -- cgit v0.12 From 413bec8e5d1a60f965abece7f6901fd0a177161d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kimmo=20Kotaj=C3=A4rvi?= Date: Fri, 5 Mar 2010 17:10:48 +0100 Subject: Allow empty authority in QUrl::setAuthority as per docs. Merge-request: 482 Reviewed-by: Thiago Macieira --- src/corelib/io/qurl.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index 626bd3f..a60f206 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -3479,8 +3479,12 @@ QString QUrlPrivate::authority(QUrl::FormattingOptions options) const void QUrlPrivate::setAuthority(const QString &auth) { - if (auth.isEmpty()) + if (auth.isEmpty()) { + setUserInfo(QString()); + host.clear(); + port = -1; return; + } // find the port section of the authority by searching from the // end towards the beginning for numbers until a ':' is reached. -- cgit v0.12 From 0e049a27622a4002af8851fed68f37b71fc7ba54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kimmo=20Kotaj=C3=A4rvi?= Date: Fri, 5 Mar 2010 17:24:23 +0100 Subject: Partial overloading support for qdbus cli tool. Merge-request: 432 Reviewed-by: Thiago Macieira --- tools/qdbus/qdbus/qdbus.cpp | 175 +++++++++++++++++++++++--------------------- 1 file changed, 91 insertions(+), 84 deletions(-) diff --git a/tools/qdbus/qdbus/qdbus.cpp b/tools/qdbus/qdbus/qdbus.cpp index b08910a..ce18cb9 100644 --- a/tools/qdbus/qdbus/qdbus.cpp +++ b/tools/qdbus/qdbus/qdbus.cpp @@ -249,116 +249,123 @@ static QStringList readList(QStringList &args) } static int placeCall(const QString &service, const QString &path, const QString &interface, - const QString &member, QStringList args, bool try_prop=true) + const QString &member, const QStringList& arguments, bool try_prop=true) { QDBusInterface iface(service, path, interface, connection); // Don't check whether the interface is valid to allow DBus try to // activate the service if possible. + QList knownIds; + bool matchFound = false; + QStringList args = arguments; QVariantList params; if (!args.isEmpty()) { const QMetaObject *mo = iface.metaObject(); QByteArray match = member.toLatin1(); match += '('; - int midx = -1; for (int i = mo->methodOffset(); i < mo->methodCount(); ++i) { QMetaMethod mm = mo->method(i); QByteArray signature = mm.signature(); - if (signature.startsWith(match)) { - midx = i; - break; - } + if (signature.startsWith(match)) + knownIds += i; } - if (midx == -1) { - // Failed to set property after falling back? - // Bail out without displaying an error - if (!try_prop) + + while (!matchFound) { + args = arguments; // reset + params.clear(); + if (knownIds.isEmpty()) { + // Failed to set property after falling back? + // Bail out without displaying an error + if (!try_prop) + return 1; + if (try_prop && args.size() == 1) { + QStringList proparg; + proparg += interface; + proparg += member; + proparg += args.first(); + if (!placeCall(service, path, "org.freedesktop.DBus.Properties", "Set", proparg, false)) + return 0; + } + fprintf(stderr, "Cannot find '%s.%s' in object %s at %s\n", + qPrintable(interface), qPrintable(member), qPrintable(path), + qPrintable(service)); return 1; - if (try_prop && args.size() == 1) { - QStringList proparg; - proparg += interface; - proparg += member; - proparg += args.first(); - if (!placeCall(service, path, "org.freedesktop.DBus.Properties", "Set", proparg, false)) - return 0; } - fprintf(stderr, "Cannot find '%s.%s' in object %s at %s\n", - qPrintable(interface), qPrintable(member), qPrintable(path), - qPrintable(service)); - return 1; - } - QMetaMethod mm = mo->method(midx); - QList types = mm.parameterTypes(); - for (int i = 0; i < types.count(); ++i) { - if (types.at(i).endsWith('&')) { - // reference (and not a reference to const): output argument - // we're done with the inputs - while (types.count() > i) - types.removeLast(); - break; + QMetaMethod mm = mo->method(knownIds.takeFirst()); + QList types = mm.parameterTypes(); + for (int i = 0; i < types.count(); ++i) { + if (types.at(i).endsWith('&')) { + // reference (and not a reference to const): output argument + // we're done with the inputs + while (types.count() > i) + types.removeLast(); + break; + } } - } - for (int i = 0; !args.isEmpty() && i < types.count(); ++i) { - int id = QVariant::nameToType(types.at(i)); - if (id == QVariant::UserType) - id = QMetaType::type(types.at(i)); - Q_ASSERT(id); - - QVariant p; - QString argument; - if ((id == QVariant::List || id == QVariant::StringList) - && args.at(0) == QLatin1String("(")) - p = readList(args); - else - p = argument = args.takeFirst(); - - if (id == int(QMetaType::UChar)) { - // special case: QVariant::convert doesn't convert to/from - // UChar because it can't decide if it's a character or a number - p = qVariantFromValue(p.toUInt()); - } else if (id < int(QMetaType::User) && id != int(QVariant::Map)) { - p.convert(QVariant::Type(id)); - if (p.type() == QVariant::Invalid) { - fprintf(stderr, "Could not convert '%s' to type '%s'.\n", - qPrintable(argument), types.at(i).constData()); - return 1 ; - } - } else if (id == qMetaTypeId()) { - QDBusVariant tmp(p); - p = qVariantFromValue(tmp); - } else if (id == qMetaTypeId()) { - QDBusObjectPath path(argument); - if (path.path().isNull()) { - fprintf(stderr, "Cannot pass argument '%s' because it is not a valid object path.\n", - qPrintable(argument)); + for (int i = 0; !args.isEmpty() && i < types.count(); ++i) { + int id = QVariant::nameToType(types.at(i)); + if (id == QVariant::UserType) + id = QMetaType::type(types.at(i)); + Q_ASSERT(id); + + QVariant p; + QString argument; + if ((id == QVariant::List || id == QVariant::StringList) + && args.at(0) == QLatin1String("(")) + p = readList(args); + else + p = argument = args.takeFirst(); + + if (id == int(QMetaType::UChar)) { + // special case: QVariant::convert doesn't convert to/from + // UChar because it can't decide if it's a character or a number + p = qVariantFromValue(p.toUInt()); + } else if (id < int(QMetaType::User) && id != int(QVariant::Map)) { + p.convert(QVariant::Type(id)); + if (p.type() == QVariant::Invalid) { + fprintf(stderr, "Could not convert '%s' to type '%s'.\n", + qPrintable(argument), types.at(i).constData()); + return 1 ; + } + } else if (id == qMetaTypeId()) { + QDBusVariant tmp(p); + p = qVariantFromValue(tmp); + } else if (id == qMetaTypeId()) { + QDBusObjectPath path(argument); + if (path.path().isNull()) { + fprintf(stderr, "Cannot pass argument '%s' because it is not a valid object path.\n", + qPrintable(argument)); + return 1; + } + p = qVariantFromValue(path); + } else if (id == qMetaTypeId()) { + QDBusSignature sig(argument); + if (sig.signature().isNull()) { + fprintf(stderr, "Cannot pass argument '%s' because it is not a valid signature.\n", + qPrintable(argument)); + return 1; + } + p = qVariantFromValue(sig); + } else { + fprintf(stderr, "Sorry, can't pass arg of type '%s'.\n", + types.at(i).constData()); return 1; } - p = qVariantFromValue(path); - } else if (id == qMetaTypeId()) { - QDBusSignature sig(argument); - if (sig.signature().isNull()) { - fprintf(stderr, "Cannot pass argument '%s' because it is not a valid signature.\n", - qPrintable(argument)); - return 1; - } - p = qVariantFromValue(sig); - } else { - fprintf(stderr, "Sorry, can't pass arg of type '%s'.\n", - types.at(i).constData()); + params += p; + } + if (params.count() == types.count() && args.isEmpty()) + matchFound = true; + else if (knownIds.isEmpty()) { + fprintf(stderr, "Invalid number of parameters\n"); return 1; } - params += p; - } - if (params.count() != types.count() || !args.isEmpty()) { - fprintf(stderr, "Invalid number of parameters\n"); - return 1; - } - } + } // while (!matchFound) + } // if (!args.isEmpty() QDBusMessage reply = iface.callWithArgumentList(QDBus::Block, member, params); if (reply.type() == QDBusMessage::ErrorMessage) { -- cgit v0.12 From 4c4537d63a62d5ba0a2d8ddbc04026f81399268f Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Fri, 5 Mar 2010 16:57:46 +0100 Subject: Make QEgl::ConfigOptions use QFlags Reviewed-By: Trustme --- src/gui/egl/qegl_p.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/gui/egl/qegl_p.h b/src/gui/egl/qegl_p.h index ffb45aa..f500bd4 100644 --- a/src/gui/egl/qegl_p.h +++ b/src/gui/egl/qegl_p.h @@ -97,10 +97,14 @@ QT_END_INCLUDE_NAMESPACE #include +#include + QT_BEGIN_NAMESPACE #define QEGL_NO_CONFIG ((EGLConfig)-1) + + class QEglProperties; namespace QEgl { @@ -116,12 +120,14 @@ namespace QEgl { BestPixelFormat }; - enum ConfigOptions + enum ConfigOption { NoOptions = 0, Translucent = 0x01, Renderable = 0x02 // Config will be compatable with the paint engines (VG or GL) }; + Q_DECLARE_FLAGS(ConfigOptions, ConfigOption); + // Most of the time we use the same config for things like widgets & pixmaps, so rather than // go through the eglChooseConfig loop every time, we use defaultConfig, which will return @@ -153,6 +159,7 @@ namespace QEgl { #endif }; +Q_DECLARE_OPERATORS_FOR_FLAGS(QEgl::ConfigOptions); QT_END_NAMESPACE -- cgit v0.12 From ee07fff45d49e69d9a4f4474861a219af8d557f2 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Fri, 5 Mar 2010 16:59:06 +0100 Subject: Make QEgl::createSurface store the surface in the pixmapdata too This means the same surface can then later be used to bind the pixmap as a texture using eglBindTexImage2D. Reviewed-By: TrustMe --- src/gui/egl/qegl_x11.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index 483c01d..8608523 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -404,9 +404,11 @@ EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig config, const QEg else surfaceAttribs.setValue(EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGB); - return eglCreatePixmapSurface(QEgl::display(), config, - (EGLNativePixmapType) x11PixmapData->handle(), - surfaceAttribs.properties()); + EGLSurface surf = eglCreatePixmapSurface(QEgl::display(), config, + (EGLNativePixmapType) x11PixmapData->handle(), + surfaceAttribs.properties()); + x11PixmapData->gl_surface = (Qt::HANDLE)surf; + return surf; } return EGL_NO_SURFACE; -- cgit v0.12 From 7d587efef35b3adbb3433a4baec1c5ee7105cf0b Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Fri, 5 Mar 2010 17:29:53 +0100 Subject: Port QX11GLPixmapData & QX11GLWindowSurface to new QEgl API It's still just as buggy, but at least it allows us to remove a lot of crud from qgl_x11egl.cpp. Reviewed-By: TrustMe --- src/opengl/qgl_egl.cpp | 15 ++-- src/opengl/qgl_x11egl.cpp | 107 --------------------------- src/opengl/qgraphicssystem_gl.cpp | 1 - src/opengl/qpixmapdata_x11gl_egl.cpp | 138 ++++++++++++++--------------------- src/opengl/qpixmapdata_x11gl_p.h | 9 +++ 5 files changed, 74 insertions(+), 196 deletions(-) diff --git a/src/opengl/qgl_egl.cpp b/src/opengl/qgl_egl.cpp index 7bfcf27..91b271b 100644 --- a/src/opengl/qgl_egl.cpp +++ b/src/opengl/qgl_egl.cpp @@ -210,23 +210,26 @@ void QGLContextPrivate::destroyEglSurfaceForDevice() EGLSurface QGLContextPrivate::eglSurfaceForDevice() const { - if (paintDevice->devType() == QInternal::Widget) + // If a QPixmapData had to create the QGLContext, we don't have a paintDevice + if (!paintDevice) return eglSurface; - if (paintDevice->devType() == QInternal::Pixmap) { + #ifdef Q_WS_X11 + if (paintDevice->devType() == QInternal::Pixmap) { QPixmapData *pmd = static_cast(paintDevice)->data_ptr().data(); if (pmd->classId() == QPixmapData::X11Class) { QX11PixmapData* x11PixmapData = static_cast(pmd); return (EGLSurface)x11PixmapData->gl_surface; - } else -#endif - return eglSurface; + } } +#endif + if (paintDevice->devType() == QInternal::Pbuffer) { QGLPixelBuffer* pbuf = static_cast(paintDevice); return pbuf->d_func()->pbuf; } - return EGL_NO_SURFACE; + + return eglSurface; } void QGLWidget::setMouseTracking(bool enable) diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index 123bbdd..5ffecc5 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -358,113 +358,6 @@ void QGLWidgetPrivate::recreateEglSurface(bool force) } } -// Selects which configs should be used -EGLConfig Q_OPENGL_EXPORT qt_chooseEGLConfigForPixmap(bool hasAlpha, bool readOnly) -{ - // Cache the configs we select as they wont change: - static EGLConfig roPixmapRGBConfig = 0; - static EGLConfig roPixmapRGBAConfig = 0; - static EGLConfig rwPixmapRGBConfig = 0; - static EGLConfig rwPixmapRGBAConfig = 0; - - EGLConfig* targetConfig; - - if (hasAlpha) { - if (readOnly) - targetConfig = &roPixmapRGBAConfig; - else - targetConfig = &rwPixmapRGBAConfig; - } - else { - if (readOnly) - targetConfig = &roPixmapRGBConfig; - else - targetConfig = &rwPixmapRGBConfig; - } - - if (*targetConfig == 0) { - QEglProperties configAttribs; - configAttribs.setValue(EGL_SURFACE_TYPE, EGL_PIXMAP_BIT); - configAttribs.setRenderableType(QEgl::OpenGL); - if (hasAlpha) - configAttribs.setValue(EGL_BIND_TO_TEXTURE_RGBA, EGL_TRUE); - else - configAttribs.setValue(EGL_BIND_TO_TEXTURE_RGB, EGL_TRUE); - - // If this is going to be a render target, it needs to have a depth, stencil & sample buffer - if (!readOnly) { - configAttribs.setValue(EGL_DEPTH_SIZE, 1); - configAttribs.setValue(EGL_STENCIL_SIZE, 1); - configAttribs.setValue(EGL_SAMPLE_BUFFERS, 1); - } - - EGLint configCount = 0; - do { - eglChooseConfig(QEgl::display(), configAttribs.properties(), targetConfig, 1, &configCount); - if (configCount > 0) { - // Got one - qDebug() << "Found an" << (hasAlpha ? "ARGB" : "RGB") << (readOnly ? "readonly" : "target" ) - << "config to create a pixmap surface:"; - -// QEglProperties configProps(*targetConfig); -// qDebug() << configProps.toString(); - break; - } - qWarning("choosePixmapConfig() - No suitible config found, reducing requirements"); - } while (configAttribs.reduceConfiguration()); - } - - if (*targetConfig == 0) - qWarning("choosePixmapConfig() - Couldn't find a suitable config"); - - return *targetConfig; -} - -bool Q_OPENGL_EXPORT qt_createEGLSurfaceForPixmap(QPixmapData* pmd, bool readOnly) -{ - Q_ASSERT(pmd->classId() == QPixmapData::X11Class); - QX11PixmapData* pixmapData = static_cast(pmd); - - bool hasAlpha = pixmapData->hasAlphaChannel(); - - EGLConfig pixmapConfig = qt_chooseEGLConfigForPixmap(hasAlpha, readOnly); - - QEglProperties pixmapAttribs; - - // If the pixmap can't be bound to a texture, it's pretty useless - pixmapAttribs.setValue(EGL_TEXTURE_TARGET, EGL_TEXTURE_2D); - if (hasAlpha) - pixmapAttribs.setValue(EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGBA); - else - pixmapAttribs.setValue(EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGB); - - EGLSurface pixmapSurface; - pixmapSurface = eglCreatePixmapSurface(QEgl::display(), - pixmapConfig, - (EGLNativePixmapType) pixmapData->handle(), - pixmapAttribs.properties()); -// qDebug("qt_createEGLSurfaceForPixmap() created surface 0x%x for pixmap 0x%x", -// pixmapSurface, pixmapData->handle()); - if (pixmapSurface == EGL_NO_SURFACE) { - qWarning() << "Failed to create a pixmap surface:" << QEgl::errorString(); - return false; - } - - static bool doneOnce = false; - if (!doneOnce) { - // Make sure QGLTextureCache is instanciated so it can install cleanup hooks - // which cleanup the EGL surface. - QGLTextureCache::instance(); - doneOnce = true; - } - - Q_ASSERT(sizeof(Qt::HANDLE) >= sizeof(EGLSurface)); // Just to make totally sure! - pixmapData->gl_surface = (Qt::HANDLE)pixmapSurface; - QImagePixmapCleanupHooks::enableCleanupHooks(pixmapData); // Make sure the cleanup hook gets called - - return true; -} - QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmapData* pd, const qint64 key, QGLContext::BindOptions options) diff --git a/src/opengl/qgraphicssystem_gl.cpp b/src/opengl/qgraphicssystem_gl.cpp index 3a399ae..a282e4c 100644 --- a/src/opengl/qgraphicssystem_gl.cpp +++ b/src/opengl/qgraphicssystem_gl.cpp @@ -62,7 +62,6 @@ QPixmapData *QGLGraphicsSystem::createPixmapData(QPixmapData::PixelType type) co if (type == QPixmapData::PixmapType && QX11GLPixmapData::hasX11GLPixmaps()) return new QX11GLPixmapData(); #endif - return new QGLPixmapData(type); } diff --git a/src/opengl/qpixmapdata_x11gl_egl.cpp b/src/opengl/qpixmapdata_x11gl_egl.cpp index 811e554..34915f5 100644 --- a/src/opengl/qpixmapdata_x11gl_egl.cpp +++ b/src/opengl/qpixmapdata_x11gl_egl.cpp @@ -58,13 +58,12 @@ QT_BEGIN_NAMESPACE -extern EGLConfig qt_chooseEGLConfigForPixmap(bool hasAlpha, bool readOnly); // in qgl_x11egl.cpp -extern bool qt_createEGLSurfaceForPixmap(QPixmapData* pmd, bool readOnly); // in qgl_x11egl.cpp // On 16bpp systems, RGB & ARGB pixmaps are different bit-depths and therefore need // different contexts: -static EGLContext qPixmapARGBSharedEglContext = EGL_NO_CONTEXT; -static EGLContext qPixmapRGBSharedEglContext = EGL_NO_CONTEXT; +QEglContext* QX11GLPixmapData::rgbContext = 0; +QEglContext* QX11GLPixmapData::argbContext = 0; + bool QX11GLPixmapData::hasX11GLPixmaps() { @@ -76,68 +75,64 @@ bool QX11GLPixmapData::hasX11GLPixmaps() checkedForX11Pixmaps = true; - QX11PixmapData *argbPixmapData = 0; - QX11PixmapData *rgbPixmapData = 0; do { if (qgetenv("QT_USE_X11GL_PIXMAPS").isEmpty()) break; - // Check we actually have EGL configs which support pixmaps - EGLConfig argbConfig = qt_chooseEGLConfigForPixmap(true, false); - EGLConfig rgbConfig = qt_chooseEGLConfigForPixmap(false, false); + EGLConfig rgbConfig = QEgl::defaultConfig(QInternal::Pixmap, QEgl::OpenGL, QEgl::Renderable); + EGLConfig argbConfig = QEgl::defaultConfig(QInternal::Pixmap, QEgl::OpenGL, + QEgl::Renderable | QEgl::Translucent); + + if (!rgbContext) { + rgbContext = new QEglContext; + rgbContext->setConfig(rgbConfig); + rgbContext->createContext(); + } - if (argbConfig == 0 || rgbConfig == 0) + if (!rgbContext->isValid()) break; - // Create the shared contexts: - eglBindAPI(EGL_OPENGL_ES_API); - EGLint contextAttribs[] = { -#if defined(QT_OPENGL_ES_2) - EGL_CONTEXT_CLIENT_VERSION, 2, -#endif - EGL_NONE - }; - qPixmapARGBSharedEglContext = eglCreateContext(QEgl::display(), - argbConfig, 0, contextAttribs); - - if (argbConfig == rgbConfig) { - // If the configs are the same, we can re-use the same context. - qPixmapRGBSharedEglContext = qPixmapARGBSharedEglContext; - } else { - qPixmapRGBSharedEglContext = eglCreateContext(QEgl::display(), - rgbConfig, 0, contextAttribs); - } + // If the configs are the same, use the same egl contexts: + if (rgbConfig == argbConfig) + argbContext = rgbContext; - argbPixmapData = new QX11PixmapData(QPixmapData::PixmapType); - argbPixmapData->resize(100, 100); - argbPixmapData->fill(Qt::transparent); // Force ARGB + if (!argbContext) { + argbContext = new QEglContext; + argbContext->setConfig(argbConfig); + argbContext->createContext(); + } - if (!qt_createEGLSurfaceForPixmap(argbPixmapData, false)) + if (!argbContext->isValid()) break; - haveX11Pixmaps = eglMakeCurrent(QEgl::display(), - (EGLSurface)argbPixmapData->gl_surface, - (EGLSurface)argbPixmapData->gl_surface, - qPixmapARGBSharedEglContext); + { + QX11PixmapData *argbPixmapData = new QX11PixmapData(QPixmapData::PixmapType); + argbPixmapData->resize(100, 100); + argbPixmapData->fill(Qt::transparent); // Force ARGB + QPixmap argbPixmap(argbPixmapData); + EGLSurface argbPixmapSurface = QEgl::createSurface(&argbPixmap, argbConfig); + haveX11Pixmaps = argbContext->makeCurrent(argbPixmapSurface); + argbContext->doneCurrent(); + eglDestroySurface(QEgl::display(), argbPixmapSurface); + } + if (!haveX11Pixmaps) { - qWarning() << "Unable to make pixmap config current:" << QEgl::errorString(); + qWarning() << "Unable to make pixmap surface current:" << QEgl::errorString(); break; } - // If the ARGB & RGB configs are the same, we don't need to check RGB too - if (haveX11Pixmaps && (argbConfig != rgbConfig)) { - rgbPixmapData = new QX11PixmapData(QPixmapData::PixmapType); + // If the ARGB & RGB configs are different, check RGB too: + if (argbConfig != rgbConfig) { + QX11PixmapData *rgbPixmapData = new QX11PixmapData(QPixmapData::PixmapType); rgbPixmapData->resize(100, 100); rgbPixmapData->fill(Qt::red); - // Try to actually create an EGL pixmap surface - if (!qt_createEGLSurfaceForPixmap(rgbPixmapData, false)) - break; + QPixmap rgbPixmap(rgbPixmapData); + EGLSurface rgbPixmapSurface = QEgl::createSurface(&rgbPixmap, rgbConfig); + haveX11Pixmaps = rgbContext->makeCurrent(rgbPixmapSurface); + rgbContext->doneCurrent(); + eglDestroySurface(QEgl::display(), rgbPixmapSurface); - haveX11Pixmaps = eglMakeCurrent(QEgl::display(), - (EGLSurface)rgbPixmapData->gl_surface, - (EGLSurface)rgbPixmapData->gl_surface, - qPixmapRGBSharedEglContext); if (!haveX11Pixmaps) { qWarning() << "Unable to make pixmap config current:" << QEgl::errorString(); break; @@ -145,36 +140,15 @@ bool QX11GLPixmapData::hasX11GLPixmaps() } } while (0); - if (qPixmapARGBSharedEglContext || qPixmapRGBSharedEglContext) { - eglMakeCurrent(QEgl::display(), - EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - } - - if (argbPixmapData) { - if (argbPixmapData->gl_surface) - QGLContextPrivate::destroyGlSurfaceForPixmap(argbPixmapData); - delete argbPixmapData; - argbPixmapData = 0; - } - if (rgbPixmapData) { - if (rgbPixmapData->gl_surface) - QGLContextPrivate::destroyGlSurfaceForPixmap(rgbPixmapData); - delete rgbPixmapData; - rgbPixmapData = 0; - } - if (!haveX11Pixmaps) { - // Clean up the context(s) if we can't use X11GL pixmaps - if (qPixmapARGBSharedEglContext != EGL_NO_CONTEXT) - eglDestroyContext(QEgl::display(), qPixmapARGBSharedEglContext); - - if (qPixmapRGBSharedEglContext != qPixmapARGBSharedEglContext && - qPixmapRGBSharedEglContext != EGL_NO_CONTEXT) - { - eglDestroyContext(QEgl::display(), qPixmapRGBSharedEglContext); + if (argbContext && (argbContext != rgbContext)) { + delete argbContext; + argbContext = 0; + } + if (rgbContext) { + delete rgbContext; + rgbContext = 0; } - qPixmapRGBSharedEglContext = EGL_NO_CONTEXT; - qPixmapARGBSharedEglContext = EGL_NO_CONTEXT; } if (haveX11Pixmaps) @@ -209,11 +183,8 @@ QPaintEngine* QX11GLPixmapData::paintEngine() const // We need to create the context before beginPaint - do it here: if (!ctx) { ctx = new QGLContext(glFormat()); - if (ctx->d_func()->eglContext == 0) - ctx->d_func()->eglContext = new QEglContext(); - ctx->d_func()->eglContext->setApi(QEgl::OpenGL); - ctx->d_func()->eglContext->setContext(hasAlphaChannel() ? qPixmapARGBSharedEglContext - : qPixmapRGBSharedEglContext); + Q_ASSERT(ctx->d_func()->eglContext == 0); + ctx->d_func()->eglContext = hasAlphaChannel() ? argbContext : rgbContext; } QPaintEngine* engine; @@ -256,10 +227,13 @@ QPaintEngine* QX11GLPixmapData::paintEngine() const void QX11GLPixmapData::beginPaint() { // qDebug("QX11GLPixmapData::beginPaint()"); + // TODO: Check to see if the surface is renderable if ((EGLSurface)gl_surface == EGL_NO_SURFACE) { - qt_createEGLSurfaceForPixmap(this, false); + QPixmap tmpPixmap(this); + EGLConfig cfg = ctx->d_func()->eglContext->config(); + gl_surface = (Qt::HANDLE)QEgl::createSurface(&tmpPixmap, cfg); ctx->d_func()->eglSurface = (EGLSurface)gl_surface; - ctx->d_func()->valid = true; // ;-) + ctx->d_func()->valid = true; } QGLPaintDevice::beginPaint(); } diff --git a/src/opengl/qpixmapdata_x11gl_p.h b/src/opengl/qpixmapdata_x11gl_p.h index c9f4f56..83cd780 100644 --- a/src/opengl/qpixmapdata_x11gl_p.h +++ b/src/opengl/qpixmapdata_x11gl_p.h @@ -59,6 +59,10 @@ #include +#ifndef QT_NO_EGL +#include +#endif + QT_BEGIN_NAMESPACE class QX11GLPixmapData : public QX11PixmapData, public QGLPaintDevice @@ -76,6 +80,11 @@ public: static bool hasX11GLPixmaps(); static QGLFormat glFormat(); + +#ifndef QT_NO_EGL + static QEglContext* rgbContext; + static QEglContext* argbContext; +#endif private: mutable QGLContext* ctx; }; -- cgit v0.12 From e489e9bc82823f1922a38f1b0805ac8537b1dc77 Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Fri, 5 Mar 2010 17:31:32 +0100 Subject: fixed treatment of zlib on Mac when crossbuilding Merge-request: 478 Reviewed-by: Thiago Macieira --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 16c1fcd..369ace8 100755 --- a/configure +++ b/configure @@ -6324,7 +6324,7 @@ else QT_CONFIG="$QT_CONFIG freetype" fi -if [ "x$PLATFORM_MAC" = "xyes" ]; then +if [ "x$PLATFORM_MAC" = "xyes" ] && [ "$XPLATFORM" != "win32-g++" ]; then #On Mac we implicitly link against libz, so we #never use the 3rdparty stuff. [ "$CFG_ZLIB" = "yes" ] && CFG_ZLIB="system" -- cgit v0.12 From 4a72e2f1994324198d1a2c79382185dcca41a576 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Fri, 5 Mar 2010 10:00:01 -0800 Subject: Add some warnings when using DISABLE/WARN in DFB If you specify an operation that is not recognized in QT_DIRECTFB_WARN_ON_RASTERFALLBACKS or QT_DIRECTFB_DISABLE_RASTERFALLBACKS Reviewed-by: muthu --- .../gfxdrivers/directfb/qdirectfbpaintengine.cpp | 23 ++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp index 537baf5..e79dceb 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp @@ -204,21 +204,36 @@ static void initRasterFallbacksMasks(int *warningMask, int *disableMask) { 0, ALL } }; - const QStringList warning = QString::fromLatin1(qgetenv("QT_DIRECTFB_WARN_ON_RASTERFALLBACKS")).toUpper().split(QLatin1Char('|')); - const QStringList disable = QString::fromLatin1(qgetenv("QT_DIRECTFB_DISABLE_RASTERFALLBACKS")).toUpper().split(QLatin1Char('|')); + QStringList warning = QString::fromLatin1(qgetenv("QT_DIRECTFB_WARN_ON_RASTERFALLBACKS")).toUpper().split(QLatin1Char('|'), + QString::SkipEmptyParts); + QStringList disable = QString::fromLatin1(qgetenv("QT_DIRECTFB_DISABLE_RASTERFALLBACKS")).toUpper().split(QLatin1Char('|'), + QString::SkipEmptyParts); *warningMask = 0; *disableMask = 0; if (!warning.isEmpty() || !disable.isEmpty()) { for (int i=0; operations[i].name; ++i) { const QString name = QString::fromLatin1(operations[i].name); - if (warning.contains(name)) { + int idx = warning.indexOf(name); + if (idx != -1) { *warningMask |= operations[i].operation; + warning.remove(warning.begin() + idx); } - if (disable.contains(name)) { + idx = disable.indexOf(name); + if (idx != -1) { *disableMask |= operations[i].operation; + disable.remove(disable.begin() + idx); } } } + if (!warning.isEmpty()) { + qWarning("QDirectFBPaintEngine QT_DIRECTFB_WARN_ON_RASTERFALLBACKS Unknown operation(s): %s", + qPrintable(warning.join(QLatin1String("|")))); + } + if (!disable.isEmpty()) { + qWarning("QDirectFBPaintEngine QT_DIRECTFB_DISABLE_RASTERFALLBACKS Unknown operation(s): %s", + qPrintable(disable.join(QLatin1String("|")))); + } + } #endif -- cgit v0.12 From 2dd029993b16b8c696de61a0ead5a417d1f778f9 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Fri, 5 Mar 2010 10:17:59 -0800 Subject: QDirectFBPaintEngine optimization If you call fillRect(QBrush(QColor())); we should short-circuit before falling back to the raster engine. Reviewed-by: muthu --- src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp index e79dceb..1bd6dce 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp @@ -805,13 +805,14 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush) if (d->clipType != QDirectFBPaintEnginePrivate::ComplexClip) { switch (brush.style()) { case Qt::SolidPattern: { + const QColor color = brush.color(); + if (!color.isValid()) + return; + if (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_RectsUnsupported || !(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_Supported)) { break; } - const QColor color = brush.color(); - if (!color.isValid()) - return; d->setDFBColor(color); const QRect r = state()->matrix.mapRect(rect).toRect(); CLIPPED_PAINT(d->surface->FillRectangle(d->surface, r.x(), r.y(), r.width(), r.height())); -- cgit v0.12 From 888e05cc903c4a03a6571bb0e0befb86fd9443d5 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Fri, 5 Mar 2010 11:37:04 -0800 Subject: Compile with DirectFB version >= 1.2.0 && < 1.2.9 DSPF_DST was added in 1.2.9, not in 1.2.0 Reviewed-by: muthu --- src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp index 1bd6dce..7dce516 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp @@ -1005,7 +1005,7 @@ void QDirectFBPaintEnginePrivate::setCompositionMode(QPainter::CompositionMode m case QPainter::CompositionMode_DestinationOut: surface->SetPorterDuff(surface, DSPD_DST_OUT); break; -#if (Q_DIRECTFB_VERSION >= 0x010200) +#if (Q_DIRECTFB_VERSION >= 0x010209) case QPainter::CompositionMode_Destination: surface->SetPorterDuff(surface, DSPD_DST); break; -- cgit v0.12 From 35e939a0c9afb29f82e2aba774a117a35ea83a17 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Sun, 7 Mar 2010 06:25:25 +1000 Subject: fix corewlan detection error when building for 10.5 when 10.6 is also installed. --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 16c1fcd..5fccf22 100755 --- a/configure +++ b/configure @@ -5486,7 +5486,7 @@ if [ "$PLATFORM_MAC" = "yes" ]; then fi if [ "$CFG_COREWLAN" = "auto" ]; then - if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/mac/corewlan "CoreWlan" $L_FLAGS $I_FLAGS $l_FLAGS; then + if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/mac/corewlan "CoreWlan" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then CFG_COREWLAN=yes else CFG_COREWLAN=no -- cgit v0.12 From 66733e95351f0088fd206a9215bde9d14510bc1e Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Sun, 7 Mar 2010 11:20:48 +1000 Subject: Added missing tests to tests/auto/*.pro --- tests/auto/gui.pro | 1 + tests/auto/multimedia.pro | 14 ++++++++++++++ tests/auto/network.pro | 3 +++ tests/auto/opengl.pro | 2 ++ 4 files changed, 20 insertions(+) diff --git a/tests/auto/gui.pro b/tests/auto/gui.pro index a4ed04a..10a760c 100644 --- a/tests/auto/gui.pro +++ b/tests/auto/gui.pro @@ -159,6 +159,7 @@ SUBDIRS=\ qstandarditem \ qstandarditemmodel \ qstatemachine \ + qstatictext \ qstatusbar \ qstringlistmodel \ qstyle \ diff --git a/tests/auto/multimedia.pro b/tests/auto/multimedia.pro index 20d1f7f..9cfae84 100644 --- a/tests/auto/multimedia.pro +++ b/tests/auto/multimedia.pro @@ -6,6 +6,20 @@ SUBDIRS=\ qaudioformat \ qaudioinput \ qaudiooutput \ + qdeclarativeaudio \ + qdeclarativevideo \ + qgraphicsvideoitem \ + qmediacontent \ + qmediaobject \ + qmediaplayer \ + qmediaplaylist \ + qmediaplaylistnavigator \ + qmediapluginloader \ + qmediaresource \ + qmediaservice \ + qmediaserviceprovider \ + qmediatimerange \ qvideoframe \ qvideosurfaceformat \ + qvideowidget \ diff --git a/tests/auto/network.pro b/tests/auto/network.pro index bda03d3..6b24850 100644 --- a/tests/auto/network.pro +++ b/tests/auto/network.pro @@ -17,11 +17,14 @@ SUBDIRS=\ qhttpsocketengine \ qnativesocketengine \ qnetworkaddressentry \ + qnetworkconfigmanager \ + qnetworkconfiguration \ qnetworkcookie \ qnetworkcookiejar \ qnetworkinterface \ qnetworkproxy \ qnetworkrequest \ + qnetworksession \ qobjectperformance \ qsocketnotifier \ qsocks5socketengine \ diff --git a/tests/auto/opengl.pro b/tests/auto/opengl.pro index 0d23219..7220c45 100644 --- a/tests/auto/opengl.pro +++ b/tests/auto/opengl.pro @@ -1,4 +1,6 @@ TEMPLATE=subdirs SUBDIRS=\ qgl \ + qgl_threads \ + qglbuffer \ -- cgit v0.12 From 19e1b32bdeeeb5c7865038cab97b40dbac0e6c42 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Sat, 6 Mar 2010 19:05:53 +0100 Subject: Avoid memory allocations in conversion from Gb2312/Gb18030 to unicode The previous implementation was using QString::operator+=() for every converted character. This was resulting in thousands of malloc, making those conversions slow. Reviewed-by: Andreas Kling --- src/plugins/codecs/cn/qgb18030codec.cpp | 51 ++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/src/plugins/codecs/cn/qgb18030codec.cpp b/src/plugins/codecs/cn/qgb18030codec.cpp index 5537cf7..e683fc0 100644 --- a/src/plugins/codecs/cn/qgb18030codec.cpp +++ b/src/plugins/codecs/cn/qgb18030codec.cpp @@ -173,6 +173,9 @@ QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterSta int invalid = 0; QString result; + result.resize(len); + int unicodeLen = 0; + QChar *const resultData = result.data(); //qDebug("QGb18030Decoder::toUnicode(const char* chars, int len = %d)", len); for (int i = 0; i < len; i++) { uchar ch = chars[i]; @@ -180,14 +183,16 @@ QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterSta case 0: if (ch < 0x80) { // ASCII - result += QLatin1Char(ch); + resultData[unicodeLen] = QChar(ch); + ++unicodeLen; } else if (Is1stByte(ch)) { // GB18030? buf[0] = ch; nbuf = 1; } else { // Invalid - result += replacement; + resultData[unicodeLen] = replacement; + ++unicodeLen; ++invalid; } break; @@ -198,9 +203,11 @@ QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterSta int clen = 2; uint u = qt_Gb18030ToUnicode(buf, clen); if (clen == 2) { - result += QValidChar(u); + resultData[unicodeLen] = QValidChar(u); + ++unicodeLen; } else { - result += replacement; + resultData[unicodeLen] = replacement; + ++unicodeLen; ++invalid; } nbuf = 0; @@ -209,7 +216,8 @@ QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterSta nbuf = 2; } else { // Error - result += replacement; + resultData[unicodeLen] = replacement; + ++unicodeLen; ++invalid; nbuf = 0; } @@ -220,7 +228,8 @@ QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterSta buf[2] = ch; nbuf = 3; } else { - result += replacement; + resultData[unicodeLen] = replacement; + ++unicodeLen; ++invalid; nbuf = 0; } @@ -232,19 +241,24 @@ QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterSta int clen = 4; uint u = qt_Gb18030ToUnicode(buf, clen); if (clen == 4) { - result += QValidChar(u); + resultData[unicodeLen] = QValidChar(u); + ++unicodeLen; } else { - result += replacement; + resultData[unicodeLen] = replacement; + ++unicodeLen; ++invalid; } } else { - result += replacement; + resultData[unicodeLen] = replacement; + ++unicodeLen; ++invalid; } nbuf = 0; break; } } + result.resize(unicodeLen); + if (state) { state->remainingChars = nbuf; state->state_data[0] = (buf[0] << 24) + (buf[1] << 16) + (buf[2] << 8) + buf[3]; @@ -456,6 +470,9 @@ QString QGb2312Codec::convertToUnicode(const char* chars, int len, ConverterStat int invalid = 0; QString result; + result.resize(len); + int unicodeLen = 0; + QChar *const resultData = result.data(); //qDebug("QGb2312Decoder::toUnicode(const char* chars, int len = %d)", len); for (int i=0; iremainingChars = nbuf; -- cgit v0.12 From 987458462994497f764baf253baca0faabdb63cc Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Sat, 6 Mar 2010 19:33:14 +0100 Subject: Avoid conversion to/from QChar in the cn codec to unicode Half of the instructions were jumps to the constructor or QChar. We can assume the char are on 16 bits and do the assignation directly. Reviewed-by: Andreas Kling --- src/plugins/codecs/cn/qgb18030codec.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/plugins/codecs/cn/qgb18030codec.cpp b/src/plugins/codecs/cn/qgb18030codec.cpp index e683fc0..3f2eec7 100644 --- a/src/plugins/codecs/cn/qgb18030codec.cpp +++ b/src/plugins/codecs/cn/qgb18030codec.cpp @@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE #define Is3rdByte(c) (InRange((c), 0x81, 0xFE)) #define Is4thByte(c) (InRange((c), 0x30, 0x39)) -#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter)) +#define qValidChar(u) ((u) ? (u) : static_cast(QChar::ReplacementCharacter)) /* User-defined areas: UDA 1: 0xAAA1 - 0xAFFE (564/0) UDA 2: 0xF8A1 - 0xFEFE (658/0) @@ -160,7 +160,7 @@ QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterSta { uchar buf[4]; int nbuf = 0; - QChar replacement = QChar::ReplacementCharacter; + ushort replacement = QChar::ReplacementCharacter; if (state) { if (state->flags & ConvertInvalidToNull) replacement = QChar::Null; @@ -175,7 +175,7 @@ QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterSta QString result; result.resize(len); int unicodeLen = 0; - QChar *const resultData = result.data(); + ushort *const resultData = reinterpret_cast(result.data()); //qDebug("QGb18030Decoder::toUnicode(const char* chars, int len = %d)", len); for (int i = 0; i < len; i++) { uchar ch = chars[i]; @@ -183,7 +183,7 @@ QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterSta case 0: if (ch < 0x80) { // ASCII - resultData[unicodeLen] = QChar(ch); + resultData[unicodeLen] = ch; ++unicodeLen; } else if (Is1stByte(ch)) { // GB18030? @@ -203,7 +203,7 @@ QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterSta int clen = 2; uint u = qt_Gb18030ToUnicode(buf, clen); if (clen == 2) { - resultData[unicodeLen] = QValidChar(u); + resultData[unicodeLen] = qValidChar(static_cast(u)); ++unicodeLen; } else { resultData[unicodeLen] = replacement; @@ -241,7 +241,7 @@ QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterSta int clen = 4; uint u = qt_Gb18030ToUnicode(buf, clen); if (clen == 4) { - resultData[unicodeLen] = QValidChar(u); + resultData[unicodeLen] = qValidChar(u); ++unicodeLen; } else { resultData[unicodeLen] = replacement; @@ -356,7 +356,7 @@ QString QGbkCodec::convertToUnicode(const char* chars, int len, ConverterState * int clen = 2; uint u = qt_Gb18030ToUnicode(buf, clen); if (clen == 2) { - result += QValidChar(u); + result += qValidChar(u); } else { result += replacement; ++invalid; @@ -459,7 +459,7 @@ QString QGb2312Codec::convertToUnicode(const char* chars, int len, ConverterStat { uchar buf[2]; int nbuf = 0; - QChar replacement = QChar::ReplacementCharacter; + ushort replacement = QChar::ReplacementCharacter; if (state) { if (state->flags & ConvertInvalidToNull) replacement = QChar::Null; @@ -472,7 +472,7 @@ QString QGb2312Codec::convertToUnicode(const char* chars, int len, ConverterStat QString result; result.resize(len); int unicodeLen = 0; - QChar *const resultData = result.data(); + ushort *const resultData = reinterpret_cast(result.data()); //qDebug("QGb2312Decoder::toUnicode(const char* chars, int len = %d)", len); for (int i=0; i(u)); ++unicodeLen; } else { resultData[unicodeLen] = replacement; -- cgit v0.12 From 4e605d83b5966b08a82eb54e733c2f37bca6b5d6 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Mon, 8 Mar 2010 05:04:19 +1000 Subject: don't try to build corewlan plugin when corewlan was not found at configure --- src/plugins/bearer/bearer.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/bearer/bearer.pro b/src/plugins/bearer/bearer.pro index 7ba62b3..a67c8f6 100644 --- a/src/plugins/bearer/bearer.pro +++ b/src/plugins/bearer/bearer.pro @@ -6,7 +6,7 @@ TEMPLATE = subdirs #win32:SUBDIRS += nla win32:SUBDIRS += generic win32:!wince*:SUBDIRS += nativewifi -macx:SUBDIRS += corewlan +macx:contains(QT_CONFIG, corewlan):SUBDIRS += corewlan macx:SUBDIRS += generic symbian:SUBDIRS += symbian maemo6:contains(QT_CONFIG, dbus):SUBDIRS += icd -- cgit v0.12 From 038f6fc10092da1414fd2efff353671dbf862995 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Mon, 8 Mar 2010 11:42:31 +1000 Subject: Make test compile --- .../qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp index 4f9f21a..9adbc28 100644 --- a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp +++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp @@ -127,7 +127,7 @@ void tst_QDeclarativeWorkerScript::messaging() QCOMPARE(mo->property(mo->indexOfProperty("response")).read(worker).value(), value); qApp->processEvents(); - delete item; + delete worker; } void tst_QDeclarativeWorkerScript::messaging_data() @@ -164,7 +164,7 @@ void tst_QDeclarativeWorkerScript::messaging_sendQObjectList() QCOMPARE(result, (QVariantList() << QVariant() << QVariant() << QVariant())); qApp->processEvents(); - delete item; + delete worker; } void tst_QDeclarativeWorkerScript::messaging_sendJsObject() @@ -190,7 +190,7 @@ void tst_QDeclarativeWorkerScript::messaging_sendJsObject() QVERIFY(result.toBool()); qApp->processEvents(); - delete item; + delete worker; } QTEST_MAIN(tst_QDeclarativeWorkerScript) -- cgit v0.12 From 23440d84ddf78755e77cea75956cd7445647230a Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Mon, 8 Mar 2010 11:52:26 +1000 Subject: Fixed declarative demos not being installed. --- demos/declarative/calculator/calculator.pro | 13 +++++++++++++ demos/declarative/declarative.pro | 9 +++++++++ demos/declarative/flickr/flickr.pro | 16 ++++++++++++++++ demos/declarative/minehunt/minehunt.pro | 14 ++++++++++++++ demos/declarative/snake/snake.pro | 13 +++++++++++++ demos/declarative/twitter/twitter.pro | 13 +++++++++++++ demos/declarative/webbrowser/webbrowser.pro | 13 +++++++++++++ demos/demos.pro | 2 ++ 8 files changed, 93 insertions(+) create mode 100644 demos/declarative/calculator/calculator.pro create mode 100644 demos/declarative/declarative.pro create mode 100644 demos/declarative/flickr/flickr.pro create mode 100644 demos/declarative/snake/snake.pro create mode 100644 demos/declarative/twitter/twitter.pro create mode 100644 demos/declarative/webbrowser/webbrowser.pro diff --git a/demos/declarative/calculator/calculator.pro b/demos/declarative/calculator/calculator.pro new file mode 100644 index 0000000..efe6413 --- /dev/null +++ b/demos/declarative/calculator/calculator.pro @@ -0,0 +1,13 @@ +TEMPLATE=app +CONFIG -= qt separate_debug_info +LIBS = +QT = +QMAKE_LINK = @: dummy + +sources.files = \ + CalcButton.qml \ + calculator.js \ + calculator.qml +sources.path = $$[QT_INSTALL_DEMOS]/declarative/calculator +INSTALLS = sources + diff --git a/demos/declarative/declarative.pro b/demos/declarative/declarative.pro new file mode 100644 index 0000000..037ad85 --- /dev/null +++ b/demos/declarative/declarative.pro @@ -0,0 +1,9 @@ +TEMPLATE = subdirs +SUBDIRS = calculator \ + flickr \ + minehunt \ + samegame \ + snake \ + twitter \ + webbrowser + diff --git a/demos/declarative/flickr/flickr.pro b/demos/declarative/flickr/flickr.pro new file mode 100644 index 0000000..c4c1d44 --- /dev/null +++ b/demos/declarative/flickr/flickr.pro @@ -0,0 +1,16 @@ +TEMPLATE=app +CONFIG -= qt separate_debug_info +LIBS = +QT = +QMAKE_LINK = @: dummy + +sources.files = \ + flickr-desktop.qml \ + flickr-mobile-90.qml \ + flickr-mobile.qml \ + common \ + mobile + +sources.path = $$[QT_INSTALL_DEMOS]/declarative/flickr +INSTALLS = sources + diff --git a/demos/declarative/minehunt/minehunt.pro b/demos/declarative/minehunt/minehunt.pro index a497b0f..2f9a8ad 100644 --- a/demos/declarative/minehunt/minehunt.pro +++ b/demos/declarative/minehunt/minehunt.pro @@ -9,3 +9,17 @@ DESTDIR = MinehuntCore # Input SOURCES += minehunt.cpp + +sources.files = minehunt.qml +sources.path = $$[QT_INSTALL_DEMOS]/declarative/minehunt + +target.path = $$[QT_INSTALL_DEMOS]/declarative/minehunt/MinehuntCore + +MinehuntCore_sources.files = \ + MinehuntCore/Explosion.qml \ + MinehuntCore/pics \ + MinehuntCore/qmldir +MinehuntCore_sources.path = $$[QT_INSTALL_DEMOS]/declarative/minehunt/MinehuntCore + +INSTALLS = sources MinehuntCore_sources target + diff --git a/demos/declarative/snake/snake.pro b/demos/declarative/snake/snake.pro new file mode 100644 index 0000000..a206fd4 --- /dev/null +++ b/demos/declarative/snake/snake.pro @@ -0,0 +1,13 @@ +TEMPLATE=app +CONFIG -= qt separate_debug_info +LIBS = +QT = +QMAKE_LINK = @: dummy + +sources.files = \ + content \ + snake.qml + +sources.path = $$[QT_INSTALL_DEMOS]/declarative/snake +INSTALLS = sources + diff --git a/demos/declarative/twitter/twitter.pro b/demos/declarative/twitter/twitter.pro new file mode 100644 index 0000000..e1dd821 --- /dev/null +++ b/demos/declarative/twitter/twitter.pro @@ -0,0 +1,13 @@ +TEMPLATE=app +CONFIG -= qt separate_debug_info +LIBS = +QT = +QMAKE_LINK = @: dummy + +sources.files = \ + TwitterCore \ + twitter.qml + +sources.path = $$[QT_INSTALL_DEMOS]/declarative/twitter +INSTALLS = sources + diff --git a/demos/declarative/webbrowser/webbrowser.pro b/demos/declarative/webbrowser/webbrowser.pro new file mode 100644 index 0000000..c033ef9 --- /dev/null +++ b/demos/declarative/webbrowser/webbrowser.pro @@ -0,0 +1,13 @@ +TEMPLATE=app +CONFIG -= qt separate_debug_info +LIBS = +QT = +QMAKE_LINK = @: dummy + +sources.files = \ + content \ + webbrowser.qml + +sources.path = $$[QT_INSTALL_DEMOS]/declarative/webbrowser +INSTALLS = sources + diff --git a/demos/demos.pro b/demos/demos.pro index 4c2318c..83e9355 100644 --- a/demos/demos.pro +++ b/demos/demos.pro @@ -56,6 +56,7 @@ wince*:SUBDIRS += demos_sqlbrowser contains(QT_CONFIG, phonon):!static:SUBDIRS += demos_mediaplayer contains(QT_CONFIG, webkit):contains(QT_CONFIG, svg):!symbian:SUBDIRS += demos_browser contains(QT_CONFIG, multimedia):SUBDIRS += demos_multimedia +contains(QT_CONFIG, declarative):SUBDIRS += demos_declarative # install sources.files = README *.pro @@ -84,6 +85,7 @@ demos_undo.subdir = undo demos_qtdemo.subdir = qtdemo demos_mediaplayer.subdir = qmediaplayer demos_multimedia.subdir = multimedia +demos_declarative.subdir = declarative demos_browser.subdir = browser -- cgit v0.12 From a7856e3a5f6b9e5e2fd10690574b5f44ca50ba73 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Mon, 8 Mar 2010 12:30:34 +1000 Subject: Make compile following QDeclarativeMetaProperty renaming --- examples/declarative/extending/binding/happybirthday.cpp | 2 +- examples/declarative/extending/binding/happybirthday.h | 6 +++--- examples/declarative/extending/valuesource/happybirthday.cpp | 2 +- examples/declarative/extending/valuesource/happybirthday.h | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/declarative/extending/binding/happybirthday.cpp b/examples/declarative/extending/binding/happybirthday.cpp index 7d4d021..aa5f937 100644 --- a/examples/declarative/extending/binding/happybirthday.cpp +++ b/examples/declarative/extending/binding/happybirthday.cpp @@ -50,7 +50,7 @@ HappyBirthday::HappyBirthday(QObject *parent) timer->start(1000); } -void HappyBirthday::setTarget(const QDeclarativeMetaProperty &p) +void HappyBirthday::setTarget(const QDeclarativeProperty &p) { m_target = p; } diff --git a/examples/declarative/extending/binding/happybirthday.h b/examples/declarative/extending/binding/happybirthday.h index ee4d1ec..eb2da5e 100644 --- a/examples/declarative/extending/binding/happybirthday.h +++ b/examples/declarative/extending/binding/happybirthday.h @@ -42,7 +42,7 @@ #define HAPPYBIRTHDAY_H #include -#include +#include #include #include @@ -54,7 +54,7 @@ Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) public: HappyBirthday(QObject *parent = 0); - virtual void setTarget(const QDeclarativeMetaProperty &); + virtual void setTarget(const QDeclarativeProperty &); QString name() const; void setName(const QString &); @@ -67,7 +67,7 @@ signals: private: int m_line; QStringList m_lyrics; - QDeclarativeMetaProperty m_target; + QDeclarativeProperty m_target; QString m_name; }; QML_DECLARE_TYPE(HappyBirthday); diff --git a/examples/declarative/extending/valuesource/happybirthday.cpp b/examples/declarative/extending/valuesource/happybirthday.cpp index 7b9d05a..0dbbd6e 100644 --- a/examples/declarative/extending/valuesource/happybirthday.cpp +++ b/examples/declarative/extending/valuesource/happybirthday.cpp @@ -50,7 +50,7 @@ HappyBirthday::HappyBirthday(QObject *parent) timer->start(1000); } -void HappyBirthday::setTarget(const QDeclarativeMetaProperty &p) +void HappyBirthday::setTarget(const QDeclarativeProperty &p) { m_target = p; } diff --git a/examples/declarative/extending/valuesource/happybirthday.h b/examples/declarative/extending/valuesource/happybirthday.h index 3e68c35..b48c012 100644 --- a/examples/declarative/extending/valuesource/happybirthday.h +++ b/examples/declarative/extending/valuesource/happybirthday.h @@ -42,7 +42,7 @@ #define HAPPYBIRTHDAY_H #include -#include +#include #include #include @@ -57,7 +57,7 @@ Q_PROPERTY(QString name READ name WRITE setName) public: HappyBirthday(QObject *parent = 0); - virtual void setTarget(const QDeclarativeMetaProperty &); + virtual void setTarget(const QDeclarativeProperty &); // ![1] QString name() const; @@ -69,7 +69,7 @@ private slots: private: int m_line; QStringList m_lyrics; - QDeclarativeMetaProperty m_target; + QDeclarativeProperty m_target; QString m_name; // ![2] }; -- cgit v0.12 From 4ffb2a7a27ef5f06672e5f668e46d1657fa3e7ca Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Mon, 8 Mar 2010 12:28:32 +1000 Subject: Optimize Rectangle, Image, and Text creation. --- src/declarative/graphicsitems/qdeclarativeimage.cpp | 9 +++++++-- src/declarative/graphicsitems/qdeclarativeimage_p.h | 1 + src/declarative/graphicsitems/qdeclarativeimagebase.cpp | 12 ++++++++---- src/declarative/graphicsitems/qdeclarativeimagebase_p.h | 1 + src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h | 1 + src/declarative/graphicsitems/qdeclarativerectangle.cpp | 3 --- src/declarative/graphicsitems/qdeclarativerectangle_p_p.h | 15 ++++++--------- src/declarative/graphicsitems/qdeclarativetext.cpp | 2 -- src/declarative/graphicsitems/qdeclarativetext_p_p.h | 10 ++++++---- 9 files changed, 30 insertions(+), 24 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp index 2739ab8..a20d6bc 100644 --- a/src/declarative/graphicsitems/qdeclarativeimage.cpp +++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp @@ -127,7 +127,6 @@ QT_BEGIN_NAMESPACE QDeclarativeImage::QDeclarativeImage(QDeclarativeItem *parent) : QDeclarativeImageBase(*(new QDeclarativeImagePrivate), parent) { - connect(this, SIGNAL(pixmapChanged()), this, SLOT(updatePaintedGeometry())); } QDeclarativeImage::QDeclarativeImage(QDeclarativeImagePrivate &dd, QDeclarativeItem *parent) @@ -172,7 +171,7 @@ void QDeclarativeImagePrivate::setPixmap(const QPixmap &pixmap) status = pix.isNull() ? QDeclarativeImageBase::Null : QDeclarativeImageBase::Ready; q->update(); - emit q->pixmapChanged(); + q->pixmapChange(); } /*! @@ -384,4 +383,10 @@ void QDeclarativeImage::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWi } } +void QDeclarativeImage::pixmapChange() +{ + updatePaintedGeometry(); + QDeclarativeImageBase::pixmapChange(); +} + QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qdeclarativeimage_p.h b/src/declarative/graphicsitems/qdeclarativeimage_p.h index fb77ac9..7394774 100644 --- a/src/declarative/graphicsitems/qdeclarativeimage_p.h +++ b/src/declarative/graphicsitems/qdeclarativeimage_p.h @@ -85,6 +85,7 @@ Q_SIGNALS: protected: QDeclarativeImage(QDeclarativeImagePrivate &dd, QDeclarativeItem *parent); void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); + void pixmapChange(); protected Q_SLOTS: void updatePaintedGeometry(); diff --git a/src/declarative/graphicsitems/qdeclarativeimagebase.cpp b/src/declarative/graphicsitems/qdeclarativeimagebase.cpp index a8cce3f..0e9638d 100644 --- a/src/declarative/graphicsitems/qdeclarativeimagebase.cpp +++ b/src/declarative/graphicsitems/qdeclarativeimagebase.cpp @@ -52,7 +52,6 @@ QT_BEGIN_NAMESPACE QDeclarativeImageBase::QDeclarativeImageBase(QDeclarativeImageBasePrivate &dd, QDeclarativeItem *parent) : QDeclarativeItem(dd, parent) { - setFlag(QGraphicsItem::ItemHasNoContents, false); } QDeclarativeImageBase::~QDeclarativeImageBase() @@ -131,7 +130,7 @@ void QDeclarativeImageBase::load() setImplicitWidth(0); setImplicitHeight(0); emit statusChanged(d->status); - emit pixmapChanged(); + pixmapChange(); update(); } else { d->status = Loading; @@ -173,7 +172,7 @@ void QDeclarativeImageBase::load() d->progress = 1.0; emit statusChanged(d->status); emit progressChanged(d->progress); - emit pixmapChanged(); + pixmapChange(); update(); } } @@ -197,7 +196,7 @@ void QDeclarativeImageBase::requestFinished() d->progress = 1.0; emit statusChanged(d->status); emit progressChanged(1.0); - emit pixmapChanged(); + pixmapChange(); update(); } @@ -218,4 +217,9 @@ void QDeclarativeImageBase::componentComplete() load(); } +void QDeclarativeImageBase::pixmapChange() +{ + emit pixmapChanged(); +} + QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qdeclarativeimagebase_p.h b/src/declarative/graphicsitems/qdeclarativeimagebase_p.h index c8c50ac..cfebdca 100644 --- a/src/declarative/graphicsitems/qdeclarativeimagebase_p.h +++ b/src/declarative/graphicsitems/qdeclarativeimagebase_p.h @@ -81,6 +81,7 @@ Q_SIGNALS: protected: virtual void load(); virtual void componentComplete(); + virtual void pixmapChange(); QDeclarativeImageBase(QDeclarativeImageBasePrivate &dd, QDeclarativeItem *parent); private Q_SLOTS: diff --git a/src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h b/src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h index 2e062a8..c4a61f3 100644 --- a/src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h @@ -71,6 +71,7 @@ public: pendingPixmapCache(false), async(false) { + QGraphicsItemPrivate::flags = QGraphicsItemPrivate::flags & ~QGraphicsItem::ItemHasNoContents; } QPixmap pix; diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp index 05fe0f7..207d05e 100644 --- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp +++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp @@ -180,9 +180,6 @@ void QDeclarativeGradient::doUpdate() QDeclarativeRectangle::QDeclarativeRectangle(QDeclarativeItem *parent) : QDeclarativeItem(*(new QDeclarativeRectanglePrivate), parent) { - Q_D(QDeclarativeRectangle); - d->init(); - setFlag(QGraphicsItem::ItemHasNoContents, false); } void QDeclarativeRectangle::doUpdate() diff --git a/src/declarative/graphicsitems/qdeclarativerectangle_p_p.h b/src/declarative/graphicsitems/qdeclarativerectangle_p_p.h index b87c57f..6bae219 100644 --- a/src/declarative/graphicsitems/qdeclarativerectangle_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativerectangle_p_p.h @@ -67,6 +67,7 @@ public: QDeclarativeRectanglePrivate() : color(Qt::white), gradient(0), pen(0), radius(0), paintmargin(0) { + QGraphicsItemPrivate::flags = QGraphicsItemPrivate::flags & ~QGraphicsItem::ItemHasNoContents; } ~QDeclarativeRectanglePrivate() @@ -74,13 +75,13 @@ public: delete pen; } - void init() - { - } - - QColor getColor(); QColor color; QDeclarativeGradient *gradient; + QDeclarativePen *pen; + qreal radius; + qreal paintmargin; + QPixmap rectImage; + QDeclarativePen *getPen() { if (!pen) { Q_Q(QDeclarativeRectangle); @@ -89,10 +90,6 @@ public: } return pen; } - QDeclarativePen *pen; - qreal radius; - qreal paintmargin; - QPixmap rectImage; void setPaintMargin(qreal margin) { diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp index ca253df..05139f6 100644 --- a/src/declarative/graphicsitems/qdeclarativetext.cpp +++ b/src/declarative/graphicsitems/qdeclarativetext.cpp @@ -110,8 +110,6 @@ QT_BEGIN_NAMESPACE QDeclarativeText::QDeclarativeText(QDeclarativeItem *parent) : QDeclarativeItem(*(new QDeclarativeTextPrivate), parent) { - setAcceptedMouseButtons(Qt::LeftButton); - setFlag(QGraphicsItem::ItemHasNoContents, false); } QDeclarativeText::~QDeclarativeText() diff --git a/src/declarative/graphicsitems/qdeclarativetext_p_p.h b/src/declarative/graphicsitems/qdeclarativetext_p_p.h index a0c8abe..0d9a0a6 100644 --- a/src/declarative/graphicsitems/qdeclarativetext_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativetext_p_p.h @@ -70,14 +70,16 @@ class QDeclarativeTextPrivate : public QDeclarativeItemPrivate Q_DECLARE_PUBLIC(QDeclarativeText) public: QDeclarativeTextPrivate() - : color((QRgb)0), style(QDeclarativeText::Normal), imgDirty(true), + : color((QRgb)0), style(QDeclarativeText::Normal), hAlign(QDeclarativeText::AlignLeft), vAlign(QDeclarativeText::AlignTop), elideMode(QDeclarativeText::ElideNone), - dirty(true), wrap(false), richText(false), singleline(false), cache(true), doc(0), + imgDirty(true), dirty(true), wrap(false), richText(false), singleline(false), cache(true), doc(0), format(QDeclarativeText::AutoText) { #if defined(QML_NO_TEXT_CACHE) cache = false; #endif + QGraphicsItemPrivate::acceptedMouseButtons = Qt::LeftButton; + QGraphicsItemPrivate::flags = QGraphicsItemPrivate::flags & ~QGraphicsItem::ItemHasNoContents; } ~QDeclarativeTextPrivate(); @@ -106,12 +108,12 @@ public: QDeclarativeText::TextStyle style; QColor styleColor; QString activeLink; - bool imgDirty; QPixmap imgCache; QPixmap imgStyleCache; QDeclarativeText::HAlignment hAlign; QDeclarativeText::VAlignment vAlign; - QDeclarativeText::TextElideMode elideMode; + QDeclarativeText::TextElideMode elideMode; + bool imgDirty:1; bool dirty:1; bool wrap:1; bool richText:1; -- cgit v0.12 From 8429de44c2c5c046e403990ff04bc15ff1dee42a Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Mon, 8 Mar 2010 12:31:35 +1000 Subject: Stop benchmark from crashing. --- tests/benchmarks/declarative/creation/tst_creation.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/benchmarks/declarative/creation/tst_creation.cpp b/tests/benchmarks/declarative/creation/tst_creation.cpp index 4319208..5b0004f 100644 --- a/tests/benchmarks/declarative/creation/tst_creation.cpp +++ b/tests/benchmarks/declarative/creation/tst_creation.cpp @@ -163,6 +163,8 @@ void tst_creation::objects_qmltype() { QFETCH(QByteArray, type); QDeclarativeType *t = QDeclarativeMetaType::qmlType(type, 4, 6); + if (!t || !t->isCreatable()) + QSKIP("Non-creatable type", SkipSingle); QBENCHMARK { QObject *obj = t->create(); -- cgit v0.12 From d4073eadde0a9922d9247129d463d28182e32e76 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Mon, 8 Mar 2010 03:26:16 +0100 Subject: JPEG plugin: Use switch() instead of if() Reviewed-by: Olivier Goffart --- src/plugins/imageformats/jpeg/qjpeghandler.cpp | 33 +++++++++++++++++--------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/plugins/imageformats/jpeg/qjpeghandler.cpp b/src/plugins/imageformats/jpeg/qjpeghandler.cpp index 6eed824..0f0d6f6 100644 --- a/src/plugins/imageformats/jpeg/qjpeghandler.cpp +++ b/src/plugins/imageformats/jpeg/qjpeghandler.cpp @@ -793,15 +793,16 @@ bool QJpegHandler::supportsOption(ImageOption option) const QVariant QJpegHandler::option(ImageOption option) const { - if (option == Quality) { + switch(option) { + case Quality: return quality; - } else if (option == ScaledSize) { + case ScaledSize: return scaledSize; - } else if (option == ScaledClipRect) { + case ScaledClipRect: return scaledClipRect; - } else if (option == ClipRect) { + case ClipRect: return clipRect; - } else if (option == Size) { + case Size: if (canRead() && !device()->isSequential()) { qint64 pos = device()->pos(); int width = 0; @@ -810,7 +811,8 @@ QVariant QJpegHandler::option(ImageOption option) const device()->seek(pos); return QSize(width, height); } - } else if (option == ImageFormat) { + return QVariant(); + case ImageFormat: if (canRead() && !device()->isSequential()) { qint64 pos = device()->pos(); QImage::Format format = QImage::Format_Invalid; @@ -819,20 +821,29 @@ QVariant QJpegHandler::option(ImageOption option) const return format; } return QImage::Format_Invalid; + default: + return QVariant(); } - return QVariant(); } void QJpegHandler::setOption(ImageOption option, const QVariant &value) { - if (option == Quality) + switch(option) { + case Quality: quality = value.toInt(); - else if ( option == ScaledSize ) + break; + case ScaledSize: scaledSize = value.toSize(); - else if ( option == ScaledClipRect ) + break; + case ScaledClipRect: scaledClipRect = value.toRect(); - else if ( option == ClipRect ) + break; + case ClipRect: clipRect = value.toRect(); + break; + default: + break; + } } QByteArray QJpegHandler::name() const -- cgit v0.12 From 2d3323d239c9d20c98e09c9398931e60bb799cca Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Mon, 8 Mar 2010 12:38:17 +1000 Subject: Add PathView.isCurrentIndex and PathView.view attached properties Adding PathView attached properties to be in line with other views. Task-number: QT-319 --- .../graphicsitems/qdeclarativepathview.cpp | 196 +++++++++++++-------- .../graphicsitems/qdeclarativepathview_p.h | 51 +++++- .../graphicsitems/qdeclarativepathview_p_p.h | 7 +- .../qdeclarativepathview/data/pathview.qml | 11 +- .../tst_qdeclarativepathview.cpp | 46 ++++- 5 files changed, 235 insertions(+), 76 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativepathview.cpp b/src/declarative/graphicsitems/qdeclarativepathview.cpp index 50aa9ef..cc17157 100644 --- a/src/declarative/graphicsitems/qdeclarativepathview.cpp +++ b/src/declarative/graphicsitems/qdeclarativepathview.cpp @@ -44,7 +44,6 @@ #include #include - #include #include #include @@ -64,48 +63,31 @@ inline qreal qmlMod(qreal x, qreal y) return fmod(x, y); } +static QDeclarativeOpenMetaObjectType *qPathViewAttachedType = 0; -class QDeclarativePathViewAttached : public QObject +QDeclarativePathViewAttached::QDeclarativePathViewAttached(QObject *parent) +: QObject(parent), m_view(0), m_onPath(false), m_isCurrent(false) { - Q_OBJECT - - Q_PROPERTY(bool onPath READ isOnPath NOTIFY onPathChanged) -public: - QDeclarativePathViewAttached(QObject *parent) - : QObject(parent), mo(new QDeclarativeOpenMetaObject(this)), onPath(false) - { - } - - ~QDeclarativePathViewAttached() - { - QDeclarativePathView::attachedProperties.remove(parent()); - } - - QVariant value(const QByteArray &name) const - { - return mo->value(name); - } - void setValue(const QByteArray &name, const QVariant &val) - { - mo->setValue(name, val); - } - - bool isOnPath() const { return onPath; } - void setOnPath(bool on) { - if (on != onPath) { - onPath = on; - emit onPathChanged(); - } + if (qPathViewAttachedType) { + m_metaobject = new QDeclarativeOpenMetaObject(this, qPathViewAttachedType); + m_metaobject->setCached(true); + } else { + m_metaobject = new QDeclarativeOpenMetaObject(this); } +} -Q_SIGNALS: - void onPathChanged(); - -private: - QDeclarativeOpenMetaObject *mo; - bool onPath; -}; +QDeclarativePathViewAttached::~QDeclarativePathViewAttached() +{ +} +QVariant QDeclarativePathViewAttached::value(const QByteArray &name) const +{ + return m_metaobject->value(name); +} +void QDeclarativePathViewAttached::setValue(const QByteArray &name, const QVariant &val) +{ + m_metaobject->setValue(name, val); +} QDeclarativeItem *QDeclarativePathViewPrivate::getItem(int modelIndex) { @@ -113,8 +95,20 @@ QDeclarativeItem *QDeclarativePathViewPrivate::getItem(int modelIndex) requestedIndex = modelIndex; QDeclarativeItem *item = model->item(modelIndex, false); if (item) { - if (QObject *obj = QDeclarativePathView::qmlAttachedProperties(item)) - static_cast(obj)->setOnPath(true); + if (!attType) { + // pre-create one metatype to share with all attached objects + attType = new QDeclarativeOpenMetaObjectType(&QDeclarativePathViewAttached::staticMetaObject, qmlEngine(q)); + foreach(const QString &attr, path->attributes()) { + attType->createProperty(attr.toUtf8()); + } + } + qPathViewAttachedType = attType; + QDeclarativePathViewAttached *att = static_cast(qmlAttachedPropertiesObject(item)); + qPathViewAttachedType = 0; + if (att) { + att->m_view = q; + att->setOnPath(true); + } item->setParentItem(q); } requestedIndex = -1; @@ -125,14 +119,26 @@ void QDeclarativePathViewPrivate::releaseItem(QDeclarativeItem *item) { if (!item || !model) return; - if (QObject *obj = QDeclarativePathView::qmlAttachedProperties(item)) - static_cast(obj)->setOnPath(false); - if (model->release(item) == 0) { - if (QObject *obj = QDeclarativePathView::qmlAttachedProperties(item)) - static_cast(obj)->setOnPath(false); + if (QDeclarativePathViewAttached *att = attached(item)) + att->setOnPath(false); + model->release(item); +} + +QDeclarativePathViewAttached *QDeclarativePathViewPrivate::attached(QDeclarativeItem *item) +{ + return static_cast(qmlAttachedPropertiesObject(item, false)); +} + +void QDeclarativePathViewPrivate::clear() +{ + for (int i=0; iclear(); + if (d->attType) + d->attType->release(); if (d->ownModel) delete d->model; } @@ -185,6 +199,15 @@ QDeclarativePathView::~QDeclarativePathView() */ /*! + \qmlattachedproperty bool PathView::isCurrentItem + This attached property is true if this delegate is the current item; otherwise false. + + It is attached to each instance of the delegate. + + This property may be used to adjust the appearance of the current item. +*/ + +/*! \qmlproperty model PathView::model This property holds the model providing data for the view. @@ -275,8 +298,15 @@ void QDeclarativePathView::setPath(QDeclarativePath *path) Q_D(QDeclarativePathView); if (d->path == path) return; + if (d->path) + disconnect(d->path, SIGNAL(changed()), this, SLOT(refill())); d->path = path; connect(d->path, SIGNAL(changed()), this, SLOT(refill())); + d->clear(); + if (d->attType) { + d->attType->release(); + d->attType = 0; + } d->regenerate(); emit pathChanged(); } @@ -297,12 +327,25 @@ void QDeclarativePathView::setCurrentIndex(int idx) if (d->model && d->model->count()) idx = qAbs(idx % d->model->count()); if (d->model && idx != d->currentIndex) { + if (d->model->count()) { + int itemIndex = (d->currentIndex - d->firstIndex + d->model->count()) % d->model->count(); + if (itemIndex < d->items.count()) { + if (QDeclarativeItem *item = d->items.at(d->currentIndex)) { + if (QDeclarativePathViewAttached *att = d->attached(item)) + att->setIsCurrentItem(false); + } + } + } d->currentIndex = idx; if (d->model->count()) { d->snapToCurrent(); int itemIndex = (idx - d->firstIndex + d->model->count()) % d->model->count(); - if (itemIndex < d->items.count()) - d->items.at(itemIndex)->setFocus(true); + if (itemIndex < d->items.count()) { + QDeclarativeItem *item = d->items.at(itemIndex); + item->setFocus(true); + if (QDeclarativePathViewAttached *att = d->attached(item)) + att->setIsCurrentItem(true); + } } emit currentIndexChanged(); } @@ -649,11 +692,7 @@ void QDeclarativePathViewPrivate::regenerate() if (!q->isComponentComplete()) return; - for (int i=0; isetZValue(i); + qreal percent = i * (100. / numItems) + _offset; + percent = qAbs(qmlMod(percent, qreal(100.0))/100.0); + updateItem(item, percent); model->completeItem(); - if (currentIndex == index) + if (currentIndex == index) { item->setFocus(true); + if (QDeclarativePathViewAttached *att = attached(item)) + att->setIsCurrentItem(true); + } } - q->refill(); + if (pathItems != -1) + q->refill(); } void QDeclarativePathViewPrivate::updateItem(QDeclarativeItem *item, qreal percent) { - if (QObject *obj = QDeclarativePathView::qmlAttachedProperties(item)) { + if (QDeclarativePathViewAttached *att = attached(item)) { foreach(const QString &attr, path->attributes()) - static_cast(obj)->setValue(attr.toUtf8(), path->attributeAt(attr, percent)); + att->setValue(attr.toUtf8(), path->attributeAt(attr, percent)); } QPointF pf = path->pointAt(percent); item->setX(pf.x() - item->width()*item->scale()/2); @@ -735,8 +781,11 @@ void QDeclarativePathView::refill() QDeclarativeItem *item = d->getItem(index); item->setZValue(wrapIndex); d->model->completeItem(); - if (d->currentIndex == index) + if (d->currentIndex == index) { item->setFocus(true); + if (QDeclarativePathViewAttached *att = d->attached(item)) + att->setIsCurrentItem(true); + } d->items << item; d->pathOffset++; d->pathOffset=d->pathOffset % d->items.count(); @@ -752,8 +801,11 @@ void QDeclarativePathView::refill() QDeclarativeItem *item = d->getItem(d->firstIndex); item->setZValue(d->firstIndex); d->model->completeItem(); - if (d->currentIndex == d->firstIndex) + if (d->currentIndex == d->firstIndex) { item->setFocus(true); + if (QDeclarativePathViewAttached *att = d->attached(item)) + att->setIsCurrentItem(true); + } d->items.prepend(item); d->pathOffset--; if (d->pathOffset < 0) @@ -909,10 +961,21 @@ void QDeclarativePathViewPrivate::updateCurrent() return; int idx = calcCurrentIndex(); if (model && idx != currentIndex) { + int itemIndex = (currentIndex - firstIndex + model->count()) % model->count(); + if (itemIndex < items.count()) { + if (QDeclarativeItem *item = items.at(itemIndex)) { + if (QDeclarativePathViewAttached *att = attached(item)) + att->setIsCurrentItem(false); + } + } currentIndex = idx; - int itemIndex = (idx - firstIndex + model->count()) % model->count(); - if (itemIndex < items.count()) - items.at(itemIndex)->setFocus(true); + itemIndex = (idx - firstIndex + model->count()) % model->count(); + if (itemIndex < items.count()) { + QDeclarativeItem *item = items.at(itemIndex); + item->setFocus(true); + if (QDeclarativePathViewAttached *att = attached(item)) + att->setIsCurrentItem(true); + } emit q->currentIndexChanged(); } } @@ -993,17 +1056,10 @@ void QDeclarativePathViewPrivate::snapToCurrent() } } -QHash QDeclarativePathView::attachedProperties; -QObject *QDeclarativePathView::qmlAttachedProperties(QObject *obj) +QDeclarativePathViewAttached *QDeclarativePathView::qmlAttachedProperties(QObject *obj) { - QObject *rv = attachedProperties.value(obj); - if (!rv) { - rv = new QDeclarativePathViewAttached(obj); - attachedProperties.insert(obj, rv); - } - return rv; + return new QDeclarativePathViewAttached(obj); } QT_END_NAMESPACE -#include diff --git a/src/declarative/graphicsitems/qdeclarativepathview_p.h b/src/declarative/graphicsitems/qdeclarativepathview_p.h index df9c6ae..6dbd044 100644 --- a/src/declarative/graphicsitems/qdeclarativepathview_p.h +++ b/src/declarative/graphicsitems/qdeclarativepathview_p.h @@ -52,6 +52,7 @@ QT_BEGIN_NAMESPACE QT_MODULE(Declarative) class QDeclarativePathViewPrivate; +class QDeclarativePathViewAttached; class Q_DECLARATIVE_EXPORT QDeclarativePathView : public QDeclarativeItem { Q_OBJECT @@ -96,7 +97,7 @@ public: int pathItemCount() const; void setPathItemCount(int); - static QObject *qmlAttachedProperties(QObject *); + static QDeclarativePathViewAttached *qmlAttachedProperties(QObject *); Q_SIGNALS: void currentIndexChanged(); @@ -127,11 +128,57 @@ private Q_SLOTS: private: friend class QDeclarativePathViewAttached; - static QHash attachedProperties; Q_DISABLE_COPY(QDeclarativePathView) Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativePathView) }; +class QDeclarativeOpenMetaObject; +class QDeclarativePathViewAttached : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QDeclarativePathView *view READ view CONSTANT) + Q_PROPERTY(bool isCurrentItem READ isCurrentItem NOTIFY currentItemChanged) + Q_PROPERTY(bool onPath READ isOnPath NOTIFY pathChanged) + +public: + QDeclarativePathViewAttached(QObject *parent); + ~QDeclarativePathViewAttached(); + + QDeclarativePathView *view() { return m_view; } + + bool isCurrentItem() const { return m_isCurrent; } + void setIsCurrentItem(bool c) { + if (m_isCurrent != c) { + m_isCurrent = c; + emit currentItemChanged(); + } + } + + QVariant value(const QByteArray &name) const; + void setValue(const QByteArray &name, const QVariant &val); + + bool isOnPath() const { return m_onPath; } + void setOnPath(bool on) { + if (on != m_onPath) { + m_onPath = on; + emit pathChanged(); + } + } + +Q_SIGNALS: + void currentItemChanged(); + void pathChanged(); + +private: + friend class QDeclarativePathViewPrivate; + QDeclarativePathView *m_view; + QDeclarativeOpenMetaObject *m_metaobject; + bool m_onPath : 1; + bool m_isCurrent : 1; +}; + + QT_END_NAMESPACE QML_DECLARE_TYPE(QDeclarativePathView) diff --git a/src/declarative/graphicsitems/qdeclarativepathview_p_p.h b/src/declarative/graphicsitems/qdeclarativepathview_p_p.h index 6344a8a..4083ab5 100644 --- a/src/declarative/graphicsitems/qdeclarativepathview_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativepathview_p_p.h @@ -71,6 +71,8 @@ typedef struct PathViewItem{ QDeclarativeItem* item; }PathViewItem; +class QDeclarativeOpenMetaObjectType; +class QDeclarativePathViewAttached; class QDeclarativePathViewPrivate : public QDeclarativeItemPrivate { Q_DECLARE_PUBLIC(QDeclarativePathView) @@ -81,7 +83,7 @@ public: , lastElapsed(0), stealMouse(false), ownModel(false), activeItem(0) , snapPos(0), dragMargin(0), moveOffset(this, &QDeclarativePathViewPrivate::setOffset) , firstIndex(0), pathItems(-1), pathOffset(0), requestedIndex(-1) - , moveReason(Other) + , moveReason(Other), attType(0) { } @@ -97,6 +99,8 @@ public: QDeclarativeItem *getItem(int modelIndex); void releaseItem(QDeclarativeItem *item); + QDeclarativePathViewAttached *attached(QDeclarativeItem *item); + void clear(); bool isValid() const { return model && model->count() > 0 && model->isValid() && path; @@ -137,6 +141,7 @@ public: QVariant modelVariant; enum MovementReason { Other, Key, Mouse }; MovementReason moveReason; + QDeclarativeOpenMetaObjectType *attType; }; QT_END_NAMESPACE diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview.qml index c5d88cd..ae0c86a 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/pathview.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/pathview.qml @@ -1,6 +1,9 @@ import Qt 4.6 Rectangle { + id: root + property int currentA: -1 + property int currentB: -1 width: 240 height: 320 color: "#ffffff" @@ -12,7 +15,7 @@ Rectangle { objectName: "wrapper" height: 20 width: 60 - color: "white" + color: PathView.isCurrentItem ? "lightsteelblue" : "white" border.color: "black" Text { text: index @@ -29,6 +32,12 @@ Rectangle { objectName: "textNumber" text: number } + PathView.onCurrentItemChanged: { + if (PathView.isCurrentItem) { + root.currentA = index; + root.currentB = wrapper.PathView.view.currentIndex; + } + } } } ] diff --git a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp index fa4e9d3..62eb8c3 100644 --- a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp +++ b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp @@ -71,6 +71,7 @@ private slots: void pathview3(); void path(); void pathMoved(); + void setCurrentIndex(); void resetModel(); void propertyChanges(); void pathChanges(); @@ -207,6 +208,7 @@ void tst_QDeclarativePathView::items() model.addItem("Fred", "12345"); model.addItem("John", "2345"); model.addItem("Bob", "54321"); + model.addItem("Bill", "4321"); QDeclarativeContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); @@ -421,7 +423,6 @@ void tst_QDeclarativePathView::pathMoved() offset.setY(firstItem->height()/2); QCOMPARE(firstItem->pos() + offset, start); pathview->setOffset(10); - QTest::qWait(1000);//Moving is animated? for(int i=0; i(pathview, "wrapper", i); @@ -429,12 +430,53 @@ void tst_QDeclarativePathView::pathMoved() } pathview->setOffset(100); - QTest::qWait(1000);//Moving is animated? QCOMPARE(firstItem->pos() + offset, start); delete canvas; } +void tst_QDeclarativePathView::setCurrentIndex() +{ + QDeclarativeView *canvas = createView(); + + TestModel model; + model.addItem("Ben", "12345"); + model.addItem("Bohn", "2345"); + model.addItem("Bob", "54321"); + model.addItem("Bill", "4321"); + + QDeclarativeContext *ctxt = canvas->rootContext(); + ctxt->setContextProperty("testModel", &model); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/pathview.qml")); + qApp->processEvents(); + + QDeclarativePathView *pathview = findItem(canvas->rootObject(), "view"); + QVERIFY(pathview != 0); + + QDeclarativeRectangle *firstItem = findItem(pathview, "wrapper", 0); + QVERIFY(firstItem); + QDeclarativePath *path = qobject_cast(pathview->path()); + QVERIFY(path); + QPointF start = path->pointAt(0.0); + QPointF offset;//Center of item is at point, but pos is from corner + offset.setX(firstItem->width()/2); + offset.setY(firstItem->height()/2); + QCOMPARE(firstItem->pos() + offset, start); + QCOMPARE(canvas->rootObject()->property("currentA").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("currentB").toInt(), 0); + + pathview->setCurrentIndex(2); + QTest::qWait(1000); + + firstItem = findItem(pathview, "wrapper", 2); + QCOMPARE(firstItem->pos() + offset, start); + QCOMPARE(canvas->rootObject()->property("currentA").toInt(), 2); + QCOMPARE(canvas->rootObject()->property("currentB").toInt(), 2); + + delete canvas; +} + void tst_QDeclarativePathView::resetModel() { QDeclarativeView *canvas = createView(); -- cgit v0.12 From eb45d1cc264dbec26575b2bd6cd23b09e3ade653 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Mon, 8 Mar 2010 12:43:22 +1000 Subject: Remove code dupliation in fixupX/Y(), flickX/Y() Also some minor perf improvements by avoiding signal/slot connection --- .../graphicsitems/qdeclarativeflickable.cpp | 385 ++++++++++----------- .../graphicsitems/qdeclarativeflickable_p.h | 4 +- .../graphicsitems/qdeclarativeflickable_p_p.h | 79 +++-- .../graphicsitems/qdeclarativegridview.cpp | 33 +- .../graphicsitems/qdeclarativegridview_p.h | 1 - .../graphicsitems/qdeclarativelistview.cpp | 287 +++++---------- .../graphicsitems/qdeclarativelistview_p.h | 4 +- 7 files changed, 326 insertions(+), 467 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index 63c97e0..67068a0 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -90,7 +90,7 @@ void QDeclarativeFlickableVisibleArea::updateVisible() // Vertical const qreal viewheight = flickable->height(); const qreal maxyextent = -flickable->maxYExtent() + flickable->minYExtent(); - qreal pagePos = (-p->_moveY.value() + flickable->minYExtent()) / (maxyextent + viewheight); + qreal pagePos = (-p->vData.move.value() + flickable->minYExtent()) / (maxyextent + viewheight); qreal pageSize = viewheight / (maxyextent + viewheight); if (pageSize != m_heightRatio) { @@ -105,7 +105,7 @@ void QDeclarativeFlickableVisibleArea::updateVisible() // Horizontal const qreal viewwidth = flickable->width(); const qreal maxxextent = -flickable->maxXExtent() + flickable->minXExtent(); - pagePos = (-p->_moveX.value() + flickable->minXExtent()) / (maxxextent + viewwidth); + pagePos = (-p->hData.move.value() + flickable->minXExtent()) / (maxxextent + viewwidth); pageSize = viewwidth / (maxxextent + viewwidth); if (pageSize != m_widthRatio) { @@ -123,13 +123,13 @@ void QDeclarativeFlickableVisibleArea::updateVisible() QDeclarativeFlickablePrivate::QDeclarativeFlickablePrivate() : viewport(new QDeclarativeItem) - , _moveX(this, &QDeclarativeFlickablePrivate::setRoundedViewportX) - , _moveY(this, &QDeclarativeFlickablePrivate::setRoundedViewportY) - , vWidth(-1), vHeight(-1), overShoot(true), flicked(false), moving(false), stealMouse(false) - , pressed(false), atXEnd(false), atXBeginning(true), atYEnd(false), atYBeginning(true) + , hData(this, &QDeclarativeFlickablePrivate::setRoundedViewportX) + , vData(this, &QDeclarativeFlickablePrivate::setRoundedViewportY) + , overShoot(true), flicked(false), moving(false), stealMouse(false) + , pressed(false) , interactive(true), deceleration(500), maxVelocity(2000), reportedVelocitySmoothing(100) , delayedPressEvent(0), delayedPressTarget(0), pressDelay(0), fixupDuration(600) - , horizontalVelocity(this), verticalVelocity(this), vTime(0), visibleArea(0) + , vTime(0), visibleArea(0) , flickDirection(QDeclarativeFlickable::AutoFlickDirection) { } @@ -138,14 +138,24 @@ void QDeclarativeFlickablePrivate::init() { Q_Q(QDeclarativeFlickable); viewport->setParent(q); - QObject::connect(&timeline, SIGNAL(updated()), q, SLOT(ticked())); - QObject::connect(&timeline, SIGNAL(completed()), q, SLOT(movementEnding())); + static int timelineUpdatedIdx = -1; + static int timelineCompletedIdx = -1; + static int flickableTickedIdx = -1; + static int flickableMovementEndingIdx = -1; + if (timelineUpdatedIdx == -1) { + timelineUpdatedIdx = QDeclarativeTimeLine::staticMetaObject.indexOfSignal("updated()"); + timelineCompletedIdx = QDeclarativeTimeLine::staticMetaObject.indexOfSignal("completed()"); + flickableTickedIdx = QDeclarativeFlickable::staticMetaObject.indexOfSlot("ticked()"); + flickableMovementEndingIdx = QDeclarativeFlickable::staticMetaObject.indexOfSlot("movementEnding()"); + } + QMetaObject::connect(&timeline, timelineUpdatedIdx, + q, flickableTickedIdx, Qt::DirectConnection); + QMetaObject::connect(&timeline, timelineCompletedIdx, + q, flickableMovementEndingIdx, Qt::DirectConnection); q->setAcceptedMouseButtons(Qt::LeftButton); q->setFiltersChildEvents(true); - QObject::connect(viewport, SIGNAL(xChanged()), q, SIGNAL(contentXChanged())); - QObject::connect(viewport, SIGNAL(yChanged()), q, SIGNAL(contentYChanged())); - QObject::connect(q, SIGNAL(heightChanged()), q, SLOT(heightChange())); - QObject::connect(q, SIGNAL(widthChanged()), q, SLOT(widthChange())); + QDeclarativeItemPrivate *viewportPrivate = static_cast(QGraphicsItemPrivate::get(viewport)); + viewportPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry); } /* @@ -164,59 +174,43 @@ qreal QDeclarativeFlickablePrivate::overShootDistance(qreal velocity, qreal size return dist; } -void QDeclarativeFlickablePrivate::flickX(qreal velocity) +void QDeclarativeFlickablePrivate::itemGeometryChanged(QDeclarativeItem *item, const QRectF &newGeom, const QRectF &oldGeom) { Q_Q(QDeclarativeFlickable); - qreal maxDistance = -1; - // -ve velocity means list is moving up - if (velocity > 0) { - const qreal minX = q->minXExtent(); - if (_moveX.value() < minX) - maxDistance = qAbs(minX -_moveX.value() + (overShoot?overShootDistance(velocity,q->width()):0)); - flickTargetX = minX; - } else { - const qreal maxX = q->maxXExtent(); - if (_moveX.value() > maxX) - maxDistance = qAbs(maxX - _moveX.value()) + (overShoot?overShootDistance(velocity,q->width()):0); - flickTargetX = maxX; - } - if (maxDistance > 0) { - qreal v = velocity; - if (maxVelocity != -1 && maxVelocity < qAbs(v)) { - if (v < 0) - v = -maxVelocity; - else - v = maxVelocity; - } - timeline.reset(_moveX); - timeline.accel(_moveX, v, deceleration, maxDistance); - timeline.callback(QDeclarativeTimeLineCallback(&_moveX, fixupX_callback, this)); - if (!flicked) { - flicked = true; - emit q->flickingChanged(); - emit q->flickStarted(); - } - } else { - timeline.reset(_moveX); - fixupX(); + if (item == viewport) { + if (newGeom.x() != oldGeom.x()) + emit q->contentXChanged(); + if (newGeom.y() != oldGeom.y()) + emit q->contentYChanged(); } } +void QDeclarativeFlickablePrivate::flickX(qreal velocity) +{ + Q_Q(QDeclarativeFlickable); + flick(hData, q->minXExtent(), q->maxXExtent(), q->width(), fixupX_callback, velocity); +} + void QDeclarativeFlickablePrivate::flickY(qreal velocity) { Q_Q(QDeclarativeFlickable); + flick(vData, q->minYExtent(), q->maxYExtent(), q->height(), fixupY_callback, velocity); +} + +void QDeclarativeFlickablePrivate::flick(AxisData &data, qreal minExtent, qreal maxExtent, qreal vSize, + QDeclarativeTimeLineCallback::Callback fixupCallback, qreal velocity) +{ + Q_Q(QDeclarativeFlickable); qreal maxDistance = -1; // -ve velocity means list is moving up if (velocity > 0) { - const qreal minY = q->minYExtent(); - if (_moveY.value() < minY) - maxDistance = qAbs(minY -_moveY.value() + (overShoot?overShootDistance(velocity,q->height()):0)); - flickTargetY = minY; + if (data.move.value() < minExtent) + maxDistance = qAbs(minExtent - data.move.value() + (overShoot?overShootDistance(velocity,vSize):0)); + data.flickTarget = minExtent; } else { - const qreal maxY = q->maxYExtent(); - if (_moveY.value() > maxY) - maxDistance = qAbs(maxY - _moveY.value()) + (overShoot?overShootDistance(velocity,q->height()):0); - flickTargetY = maxY; + if (data.move.value() > maxExtent) + maxDistance = qAbs(maxExtent - data.move.value()) + (overShoot?overShootDistance(velocity,vSize):0); + data.flickTarget = maxExtent; } if (maxDistance > 0) { qreal v = velocity; @@ -226,55 +220,20 @@ void QDeclarativeFlickablePrivate::flickY(qreal velocity) else v = maxVelocity; } - timeline.reset(_moveY); - timeline.accel(_moveY, v, deceleration, maxDistance); - timeline.callback(QDeclarativeTimeLineCallback(&_moveY, fixupY_callback, this)); + timeline.reset(data.move); + timeline.accel(data.move, v, deceleration, maxDistance); + timeline.callback(QDeclarativeTimeLineCallback(&data.move, fixupCallback, this)); if (!flicked) { flicked = true; emit q->flickingChanged(); emit q->flickStarted(); } } else { - timeline.reset(_moveY); - fixupY(); + timeline.reset(data.move); + fixup(data, minExtent, maxExtent); } } -void QDeclarativeFlickablePrivate::fixupX() -{ - Q_Q(QDeclarativeFlickable); - if (!q->xflick() || _moveX.timeLine()) - return; - - if (_moveX.value() > q->minXExtent() || (q->maxXExtent() > q->minXExtent())) { - timeline.reset(_moveX); - if (_moveX.value() != q->minXExtent()) { - if (fixupDuration) { - qreal dist = q->minXExtent() - _moveX; - timeline.move(_moveX, q->minXExtent() - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4); - timeline.move(_moveX, q->minXExtent(), QEasingCurve(QEasingCurve::OutQuint), 3*fixupDuration/4); - } else { - _moveX.setValue(q->minXExtent()); - } - } - //emit flickingChanged(); - } else if (_moveX.value() < q->maxXExtent()) { - timeline.reset(_moveX); - if (fixupDuration) { - qreal dist = q->maxXExtent() - _moveX; - timeline.move(_moveX, q->maxXExtent() - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4); - timeline.move(_moveX, q->maxXExtent(), QEasingCurve(QEasingCurve::OutQuint), 3*fixupDuration/4); - } else { - _moveX.setValue(q->maxXExtent()); - } - //emit flickingChanged(); - } else { - flicked = false; - } - - vTime = timeline.time(); -} - void QDeclarativeFlickablePrivate::fixupY_callback(void *data) { ((QDeclarativeFlickablePrivate *)data)->fixupY(); @@ -285,32 +244,46 @@ void QDeclarativeFlickablePrivate::fixupX_callback(void *data) ((QDeclarativeFlickablePrivate *)data)->fixupX(); } +void QDeclarativeFlickablePrivate::fixupX() +{ + Q_Q(QDeclarativeFlickable); + if (!q->xflick() || hData.move.timeLine()) + return; + + fixup(hData, q->minXExtent(), q->maxXExtent()); +} + void QDeclarativeFlickablePrivate::fixupY() { Q_Q(QDeclarativeFlickable); - if (!q->yflick() || _moveY.timeLine()) + if (!q->yflick() || vData.move.timeLine()) return; - if (_moveY.value() > q->minYExtent() || (q->maxYExtent() > q->minYExtent())) { - timeline.reset(_moveY); - if (_moveY.value() != q->minYExtent()) { + fixup(vData, q->minYExtent(), q->maxYExtent()); +} + +void QDeclarativeFlickablePrivate::fixup(AxisData &data, qreal minExtent, qreal maxExtent) +{ + if (data.move.value() > minExtent || maxExtent > minExtent) { + timeline.reset(data.move); + if (data.move.value() != minExtent) { if (fixupDuration) { - qreal dist = q->minYExtent() - _moveY; - timeline.move(_moveY, q->minYExtent() - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4); - timeline.move(_moveY, q->minYExtent(), QEasingCurve(QEasingCurve::OutQuint), 3*fixupDuration/4); + qreal dist = minExtent - data.move; + timeline.move(data.move, minExtent - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4); + timeline.move(data.move, minExtent, QEasingCurve(QEasingCurve::OutQuint), 3*fixupDuration/4); } else { - _moveY.setValue(q->minYExtent()); + data.move.setValue(minExtent); } } //emit flickingChanged(); - } else if (_moveY.value() < q->maxYExtent()) { - timeline.reset(_moveY); + } else if (data.move.value() < maxExtent) { + timeline.reset(data.move); if (fixupDuration) { - qreal dist = q->maxYExtent() - _moveY; - timeline.move(_moveY, q->maxYExtent() - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4); - timeline.move(_moveY, q->maxYExtent(), QEasingCurve(QEasingCurve::OutQuint), 3*fixupDuration/4); + qreal dist = maxExtent - data.move; + timeline.move(data.move, maxExtent - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4); + timeline.move(data.move, maxExtent, QEasingCurve(QEasingCurve::OutQuint), 3*fixupDuration/4); } else { - _moveY.setValue(q->maxYExtent()); + data.move.setValue(maxExtent); } //emit flickingChanged(); } else { @@ -327,31 +300,31 @@ void QDeclarativeFlickablePrivate::updateBeginningEnd() // Vertical const int maxyextent = int(-q->maxYExtent()); - const qreal ypos = -_moveY.value(); + const qreal ypos = -vData.move.value(); bool atBeginning = (ypos <= -q->minYExtent()); bool atEnd = (maxyextent <= ypos); - if (atBeginning != atYBeginning) { - atYBeginning = atBeginning; + if (atBeginning != vData.atBeginning) { + vData.atBeginning = atBeginning; atBoundaryChange = true; } - if (atEnd != atYEnd) { - atYEnd = atEnd; + if (atEnd != vData.atEnd) { + vData.atEnd = atEnd; atBoundaryChange = true; } // Horizontal const int maxxextent = int(-q->maxXExtent()); - const qreal xpos = -_moveX.value(); + const qreal xpos = -hData.move.value(); atBeginning = (xpos <= -q->minXExtent()); atEnd = (maxxextent <= xpos); - if (atBeginning != atXBeginning) { - atXBeginning = atBeginning; + if (atBeginning != hData.atBeginning) { + hData.atBeginning = atBeginning; atBoundaryChange = true; } - if (atEnd != atXEnd) { - atXEnd = atEnd; + if (atEnd != hData.atEnd) { + hData.atEnd = atEnd; atBoundaryChange = true; } @@ -468,17 +441,17 @@ QDeclarativeFlickable::~QDeclarativeFlickable() qreal QDeclarativeFlickable::contentX() const { Q_D(const QDeclarativeFlickable); - return -d->_moveX.value(); + return -d->hData.move.value(); } void QDeclarativeFlickable::setContentX(qreal pos) { Q_D(QDeclarativeFlickable); pos = qRound(pos); - d->timeline.reset(d->_moveX); + d->timeline.reset(d->hData.move); d->vTime = d->timeline.time(); - if (-pos != d->_moveX.value()) { - d->_moveX.setValue(-pos); + if (-pos != d->hData.move.value()) { + d->hData.move.setValue(-pos); viewportMoved(); } } @@ -486,17 +459,17 @@ void QDeclarativeFlickable::setContentX(qreal pos) qreal QDeclarativeFlickable::contentY() const { Q_D(const QDeclarativeFlickable); - return -d->_moveY.value(); + return -d->vData.move.value(); } void QDeclarativeFlickable::setContentY(qreal pos) { Q_D(QDeclarativeFlickable); pos = qRound(pos); - d->timeline.reset(d->_moveY); + d->timeline.reset(d->vData.move); d->vTime = d->timeline.time(); - if (-pos != d->_moveY.value()) { - d->_moveY.setValue(-pos); + if (-pos != d->vData.move.value()) { + d->vData.move.setValue(-pos); viewportMoved(); } } @@ -543,13 +516,13 @@ void QDeclarativeFlickable::setInteractive(bool interactive) qreal QDeclarativeFlickable::horizontalVelocity() const { Q_D(const QDeclarativeFlickable); - return d->horizontalVelocity.value(); + return d->hData.smoothVelocity.value(); } qreal QDeclarativeFlickable::verticalVelocity() const { Q_D(const QDeclarativeFlickable); - return d->verticalVelocity.value(); + return d->vData.smoothVelocity.value(); } /*! @@ -564,25 +537,25 @@ qreal QDeclarativeFlickable::verticalVelocity() const bool QDeclarativeFlickable::isAtXEnd() const { Q_D(const QDeclarativeFlickable); - return d->atXEnd; + return d->hData.atEnd; } bool QDeclarativeFlickable::isAtXBeginning() const { Q_D(const QDeclarativeFlickable); - return d->atXBeginning; + return d->hData.atBeginning; } bool QDeclarativeFlickable::isAtYEnd() const { Q_D(const QDeclarativeFlickable); - return d->atYEnd; + return d->vData.atEnd; } bool QDeclarativeFlickable::isAtYBeginning() const { Q_D(const QDeclarativeFlickable); - return d->atYBeginning; + return d->vData.atBeginning; } void QDeclarativeFlickable::ticked() @@ -636,19 +609,19 @@ void QDeclarativeFlickable::setFlickDirection(FlickDirection direction) void QDeclarativeFlickablePrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event) { - if (interactive && timeline.isActive() && (qAbs(velocityX) > 10 || qAbs(velocityY) > 10)) + if (interactive && timeline.isActive() && (qAbs(hData.velocity) > 10 || qAbs(vData.velocity) > 10)) stealMouse = true; // If we've been flicked then steal the click. else stealMouse = false; pressed = true; timeline.clear(); - velocityX = 0; - velocityY = 0; + hData.velocity = 0; + vData.velocity = 0; lastPos = QPoint(); QDeclarativeItemPrivate::start(lastPosTime); pressPos = event->pos(); - pressX = _moveX.value(); - pressY = _moveY.value(); + hData.pressPos = hData.move.value(); + vData.pressPos = vData.move.value(); flicked = false; QDeclarativeItemPrivate::start(pressTime); QDeclarativeItemPrivate::start(velocityTime); @@ -666,7 +639,7 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent if (q->yflick()) { int dy = int(event->pos().y() - pressPos.y()); if (qAbs(dy) > QApplication::startDragDistance() || QDeclarativeItemPrivate::elapsed(pressTime) > 200) { - qreal newY = dy + pressY; + qreal newY = dy + vData.pressPos; const qreal minY = q->minYExtent(); const qreal maxY = q->maxYExtent(); if (newY > minY) @@ -682,7 +655,7 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent rejectY = true; } if (!rejectY && stealMouse) { - _moveY.setValue(newY); + vData.move.setValue(newY); moved = true; } if (qAbs(dy) > QApplication::startDragDistance()) @@ -693,7 +666,7 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent if (q->xflick()) { int dx = int(event->pos().x() - pressPos.x()); if (qAbs(dx) > QApplication::startDragDistance() || QDeclarativeItemPrivate::elapsed(pressTime) > 200) { - qreal newX = dx + pressX; + qreal newX = dx + hData.pressPos; const qreal minX = q->minXExtent(); const qreal maxX = q->maxXExtent(); if (newX > minX) @@ -709,7 +682,7 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent rejectX = true; } if (!rejectX && stealMouse) { - _moveX.setValue(newX); + hData.move.setValue(newX); moved = true; } @@ -725,20 +698,20 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent if (q->yflick()) { qreal diff = event->pos().y() - lastPos.y(); // average to reduce the effect of spurious moves - velocityY += diff / elapsed; - velocityY /= 2; + vData.velocity += diff / elapsed; + vData.velocity /= 2; } if (q->xflick()) { qreal diff = event->pos().x() - lastPos.x(); // average to reduce the effect of spurious moves - velocityX += diff / elapsed; - velocityX /= 2; + hData.velocity += diff / elapsed; + hData.velocity /= 2; } } - if (rejectY) velocityY = 0; - if (rejectX) velocityX = 0; + if (rejectY) vData.velocity = 0; + if (rejectX) hData.velocity = 0; if (moved) { q->movementStarting(); @@ -759,13 +732,13 @@ void QDeclarativeFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEv if (QDeclarativeItemPrivate::elapsed(lastPosTime) > 100) { // if we drag then pause before release we should not cause a flick. - velocityX = 0.0; - velocityY = 0.0; + hData.velocity = 0.0; + vData.velocity = 0.0; } vTime = timeline.time(); - if (qAbs(velocityY) > 10 && qAbs(event->pos().y() - pressPos.y()) > FlickThreshold) { - qreal velocity = velocityY; + if (qAbs(vData.velocity) > 10 && qAbs(event->pos().y() - pressPos.y()) > FlickThreshold) { + qreal velocity = vData.velocity; if (qAbs(velocity) < minimumFlickVelocity) // Minimum velocity to avoid annoyingly slow flicks. velocity = velocity < 0 ? -minimumFlickVelocity : minimumFlickVelocity; flickY(velocity); @@ -773,8 +746,8 @@ void QDeclarativeFlickablePrivate::handleMouseReleaseEvent(QGraphicsSceneMouseEv fixupY(); } - if (qAbs(velocityX) > 10 && qAbs(event->pos().x() - pressPos.x()) > FlickThreshold) { - qreal velocity = velocityX; + if (qAbs(hData.velocity) > 10 && qAbs(event->pos().x() - pressPos.x()) > FlickThreshold) { + qreal velocity = hData.velocity; if (qAbs(velocity) < minimumFlickVelocity) // Minimum velocity to avoid annoyingly slow flicks. velocity = velocity < 0 ? -minimumFlickVelocity : minimumFlickVelocity; flickX(velocity); @@ -832,19 +805,19 @@ void QDeclarativeFlickable::wheelEvent(QGraphicsSceneWheelEvent *event) QDeclarativeItem::wheelEvent(event); } else if (yflick()) { if (event->delta() > 0) - d->velocityY = qMax(event->delta() - d->verticalVelocity.value(), qreal(250.0)); + d->vData.velocity = qMax(event->delta() - d->vData.smoothVelocity.value(), qreal(250.0)); else - d->velocityY = qMin(event->delta() - d->verticalVelocity.value(), qreal(-250.0)); + d->vData.velocity = qMin(event->delta() - d->vData.smoothVelocity.value(), qreal(-250.0)); d->flicked = false; - d->flickY(d->velocityY); + d->flickY(d->vData.velocity); event->accept(); } else if (xflick()) { if (event->delta() > 0) - d->velocityX = qMax(event->delta() - d->horizontalVelocity.value(), qreal(250.0)); + d->hData.velocity = qMax(event->delta() - d->hData.smoothVelocity.value(), qreal(250.0)); else - d->velocityX = qMin(event->delta() - d->horizontalVelocity.value(), qreal(-250.0)); + d->hData.velocity = qMin(event->delta() - d->hData.smoothVelocity.value(), qreal(-250.0)); d->flicked = false; - d->flickX(d->velocityX); + d->flickX(d->hData.velocity); event->accept(); } else { QDeclarativeItem::wheelEvent(event); @@ -946,32 +919,56 @@ void QDeclarativeFlickable::viewportMoved() qreal prevX = d->lastFlickablePosition.y(); d->velocityTimeline.clear(); if (d->pressed) { - qreal horizontalVelocity = (prevX - d->_moveX.value()) * 1000 / elapsed; - qreal verticalVelocity = (prevY - d->_moveY.value()) * 1000 / elapsed; - d->velocityTimeline.move(d->horizontalVelocity, horizontalVelocity, d->reportedVelocitySmoothing); - d->velocityTimeline.move(d->horizontalVelocity, 0, d->reportedVelocitySmoothing); - d->velocityTimeline.move(d->verticalVelocity, verticalVelocity, d->reportedVelocitySmoothing); - d->velocityTimeline.move(d->verticalVelocity, 0, d->reportedVelocitySmoothing); + qreal horizontalVelocity = (prevX - d->hData.move.value()) * 1000 / elapsed; + qreal verticalVelocity = (prevY - d->vData.move.value()) * 1000 / elapsed; + d->velocityTimeline.move(d->hData.smoothVelocity, horizontalVelocity, d->reportedVelocitySmoothing); + d->velocityTimeline.move(d->hData.smoothVelocity, 0, d->reportedVelocitySmoothing); + d->velocityTimeline.move(d->vData.smoothVelocity, verticalVelocity, d->reportedVelocitySmoothing); + d->velocityTimeline.move(d->vData.smoothVelocity, 0, d->reportedVelocitySmoothing); } else { if (d->timeline.time() > d->vTime) { - qreal horizontalVelocity = (prevX - d->_moveX.value()) * 1000 / (d->timeline.time() - d->vTime); - qreal verticalVelocity = (prevY - d->_moveY.value()) * 1000 / (d->timeline.time() - d->vTime); - d->horizontalVelocity.setValue(horizontalVelocity); - d->verticalVelocity.setValue(verticalVelocity); + qreal horizontalVelocity = (prevX - d->hData.move.value()) * 1000 / (d->timeline.time() - d->vTime); + qreal verticalVelocity = (prevY - d->vData.move.value()) * 1000 / (d->timeline.time() - d->vTime); + d->hData.smoothVelocity.setValue(horizontalVelocity); + d->vData.smoothVelocity.setValue(verticalVelocity); } } - d->lastFlickablePosition = QPointF(d->_moveY.value(), d->_moveX.value()); + d->lastFlickablePosition = QPointF(d->vData.move.value(), d->hData.move.value()); d->vTime = d->timeline.time(); d->updateBeginningEnd(); } +void QDeclarativeFlickable::geometryChanged(const QRectF &newGeometry, + const QRectF &oldGeometry) +{ + Q_D(QDeclarativeFlickable); + QDeclarativeItem::geometryChanged(newGeometry, oldGeometry); + + bool changed = false; + if (newGeometry.width() != oldGeometry.width()) { + if (d->hData.viewSize < 0) { + d->viewport->setWidth(width()); + emit contentWidthChanged(); + } + } + if (newGeometry.height() != oldGeometry.height()) { + if (d->vData.viewSize < 0) { + d->viewport->setHeight(height()); + emit contentHeightChanged(); + } + } + + if (changed) + d->updateBeginningEnd(); +} + void QDeclarativeFlickable::cancelFlick() { Q_D(QDeclarativeFlickable); - d->timeline.reset(d->_moveX); - d->timeline.reset(d->_moveY); + d->timeline.reset(d->hData.move); + d->timeline.reset(d->vData.move); movementEnding(); } @@ -1038,15 +1035,15 @@ void QDeclarativeFlickable::setOverShoot(bool o) qreal QDeclarativeFlickable::contentWidth() const { Q_D(const QDeclarativeFlickable); - return d->vWidth; + return d->hData.viewSize; } void QDeclarativeFlickable::setContentWidth(qreal w) { Q_D(QDeclarativeFlickable); - if (d->vWidth == w) + if (d->hData.viewSize == w) return; - d->vWidth = w; + d->hData.viewSize = w; if (w < 0) d->viewport->setWidth(width()); else @@ -1058,38 +1055,18 @@ void QDeclarativeFlickable::setContentWidth(qreal w) d->updateBeginningEnd(); } -void QDeclarativeFlickable::widthChange() -{ - Q_D(QDeclarativeFlickable); - if (d->vWidth < 0) { - d->viewport->setWidth(width()); - emit contentWidthChanged(); - } - d->updateBeginningEnd(); -} - -void QDeclarativeFlickable::heightChange() -{ - Q_D(QDeclarativeFlickable); - if (d->vHeight < 0) { - d->viewport->setHeight(height()); - emit contentHeightChanged(); - } - d->updateBeginningEnd(); -} - qreal QDeclarativeFlickable::contentHeight() const { Q_D(const QDeclarativeFlickable); - return d->vHeight; + return d->vData.viewSize; } void QDeclarativeFlickable::setContentHeight(qreal h) { Q_D(QDeclarativeFlickable); - if (d->vHeight == h) + if (d->vData.viewSize == h) return; - d->vHeight = h; + d->vData.viewSize = h; if (h < 0) d->viewport->setHeight(height()); else @@ -1104,19 +1081,19 @@ void QDeclarativeFlickable::setContentHeight(qreal h) qreal QDeclarativeFlickable::vWidth() const { Q_D(const QDeclarativeFlickable); - if (d->vWidth < 0) + if (d->hData.viewSize < 0) return width(); else - return d->vWidth; + return d->hData.viewSize; } qreal QDeclarativeFlickable::vHeight() const { Q_D(const QDeclarativeFlickable); - if (d->vHeight < 0) + if (d->vData.viewSize < 0) return height(); else - return d->vHeight; + return d->vData.viewSize; } bool QDeclarativeFlickable::xflick() const @@ -1327,8 +1304,8 @@ void QDeclarativeFlickable::movementEnding() emit flickingChanged(); emit flickEnded(); } - d->horizontalVelocity.setValue(0); - d->verticalVelocity.setValue(0); + d->hData.smoothVelocity.setValue(0); + d->vData.smoothVelocity.setValue(0); } void QDeclarativeFlickablePrivate::updateVelocity() diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p.h index 4617688..7dcab98 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable_p.h +++ b/src/declarative/graphicsitems/qdeclarativeflickable_p.h @@ -174,8 +174,6 @@ protected Q_SLOTS: virtual void ticked(); void movementStarting(); void movementEnding(); - void heightChange(); - void widthChange(); protected: virtual qreal minXExtent() const; @@ -185,6 +183,8 @@ protected: qreal vWidth() const; qreal vHeight() const; virtual void viewportMoved(); + virtual void geometryChanged(const QRectF &newGeometry, + const QRectF &oldGeometry); bool sendMouseEvent(QGraphicsSceneMouseEvent *event); bool xflick() const; diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h index ad7a04d..c963c2b 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h @@ -56,6 +56,7 @@ #include "qdeclarativeflickable_p.h" #include "qdeclarativeitem_p.h" +#include "qdeclarativeitemchangelistener_p.h" #include #include @@ -66,17 +67,51 @@ QT_BEGIN_NAMESPACE class QDeclarativeFlickableVisibleArea; -class QDeclarativeFlickablePrivate : public QDeclarativeItemPrivate +class QDeclarativeFlickablePrivate : public QDeclarativeItemPrivate, public QDeclarativeItemChangeListener { Q_DECLARE_PUBLIC(QDeclarativeFlickable) public: QDeclarativeFlickablePrivate(); void init(); - virtual void flickX(qreal velocity); - virtual void flickY(qreal velocity); - virtual void fixupX(); - virtual void fixupY(); + + struct Velocity : public QDeclarativeTimeLineValue + { + Velocity(QDeclarativeFlickablePrivate *p) + : parent(p) {} + virtual void setValue(qreal v) { + if (v != value()) { + QDeclarativeTimeLineValue::setValue(v); + parent->updateVelocity(); + } + } + QDeclarativeFlickablePrivate *parent; + }; + + struct AxisData { + AxisData(QDeclarativeFlickablePrivate *fp, void (QDeclarativeFlickablePrivate::*func)(qreal)) + : move(fp, func), viewSize(-1), smoothVelocity(fp), atEnd(false), atBeginning(true) + {} + + QDeclarativeTimeLineValueProxy move; + qreal viewSize; + qreal pressPos; + qreal velocity; + qreal flickTarget; + QDeclarativeFlickablePrivate::Velocity smoothVelocity; + bool atEnd : 1; + bool atBeginning : 1; + }; + + void flickX(qreal velocity); + void flickY(qreal velocity); + virtual void flick(AxisData &data, qreal minExtent, qreal maxExtent, qreal vSize, + QDeclarativeTimeLineCallback::Callback fixupCallback, qreal velocity); + + void fixupX(); + void fixupY(); + virtual void fixup(AxisData &data, qreal minExtent, qreal maxExtent); + void updateBeginningEnd(); void captureDelayedPress(QGraphicsSceneMouseEvent *event); @@ -87,38 +122,30 @@ public: qreal overShootDistance(qreal velocity, qreal size); + void itemGeometryChanged(QDeclarativeItem *, const QRectF &, const QRectF &); + public: QDeclarativeItem *viewport; - QDeclarativeTimeLineValueProxy _moveX; - QDeclarativeTimeLineValueProxy _moveY; + + AxisData hData; + AxisData vData; + QDeclarativeTimeLine timeline; - qreal vWidth; - qreal vHeight; bool overShoot : 1; bool flicked : 1; bool moving : 1; bool stealMouse : 1; bool pressed : 1; - bool atXEnd : 1; - bool atXBeginning : 1; - bool atYEnd : 1; - bool atYBeginning : 1; bool interactive : 1; QTime lastPosTime; QPointF lastPos; QPointF pressPos; - qreal pressX; - qreal pressY; - qreal velocityX; - qreal velocityY; QTime pressTime; qreal deceleration; qreal maxVelocity; QTime velocityTime; QPointF lastFlickablePosition; qreal reportedVelocitySmoothing; - qreal flickTargetX; - qreal flickTargetY; QGraphicsSceneMouseEvent *delayedPressEvent; QGraphicsItem *delayedPressTarget; QBasicTimer delayedPressTimer; @@ -129,20 +156,6 @@ public: static void fixupX_callback(void *); void updateVelocity(); - struct Velocity : public QDeclarativeTimeLineValue - { - Velocity(QDeclarativeFlickablePrivate *p) - : parent(p) {} - virtual void setValue(qreal v) { - if (v != value()) { - QDeclarativeTimeLineValue::setValue(v); - parent->updateVelocity(); - } - } - QDeclarativeFlickablePrivate *parent; - }; - Velocity horizontalVelocity; - Velocity verticalVelocity; int vTime; QDeclarativeTimeLine velocityTimeline; QDeclarativeFlickableVisibleArea *visibleArea; diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 463b238..76ad9b7 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -236,6 +236,19 @@ public: return -1; // Not in visibleList } + void itemGeometryChanged(QDeclarativeItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) { + Q_Q(const QDeclarativeGridView); + QDeclarativeFlickablePrivate::itemGeometryChanged(item, newGeometry, oldGeometry); + if (item == q) { + if (newGeometry.height() != oldGeometry.height() + || newGeometry.width() != oldGeometry.width()) { + if (q->isComponentComplete()) { + updateGrid(); + layout(); + } + } + } + } // for debugging only void checkVisible() const { int skip = 0; @@ -288,9 +301,8 @@ void QDeclarativeGridViewPrivate::init() { Q_Q(QDeclarativeGridView); q->setFlag(QGraphicsItem::ItemIsFocusScope); - QObject::connect(q, SIGNAL(widthChanged()), q, SLOT(sizeChange())); - QObject::connect(q, SIGNAL(heightChanged()), q, SLOT(sizeChange())); q->setFlickDirection(QDeclarativeFlickable::VerticalFlick); + addItemChangeListener(this, Geometry); } void QDeclarativeGridViewPrivate::clear() @@ -1142,15 +1154,6 @@ void QDeclarativeGridView::setCellHeight(int cellHeight) } } -void QDeclarativeGridView::sizeChange() -{ - Q_D(QDeclarativeGridView); - if (isComponentComplete()) { - d->updateGrid(); - d->layout(); - } -} - void QDeclarativeGridView::viewportMoved() { Q_D(QDeclarativeGridView); @@ -1158,16 +1161,16 @@ void QDeclarativeGridView::viewportMoved() d->lazyRelease = true; if (d->flicked) { if (yflick()) { - if (d->velocityY > 0) + if (d->vData.velocity > 0) d->bufferMode = QDeclarativeGridViewPrivate::BufferBefore; - else if (d->velocityY < 0) + else if (d->vData.velocity < 0) d->bufferMode = QDeclarativeGridViewPrivate::BufferAfter; } if (xflick()) { - if (d->velocityX > 0) + if (d->hData.velocity > 0) d->bufferMode = QDeclarativeGridViewPrivate::BufferBefore; - else if (d->velocityX < 0) + else if (d->hData.velocity < 0) d->bufferMode = QDeclarativeGridViewPrivate::BufferAfter; } } diff --git a/src/declarative/graphicsitems/qdeclarativegridview_p.h b/src/declarative/graphicsitems/qdeclarativegridview_p.h index 22fcef6..7255d3d 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview_p.h +++ b/src/declarative/graphicsitems/qdeclarativegridview_p.h @@ -154,7 +154,6 @@ private Q_SLOTS: void destroyRemoved(); void createdItem(int index, QDeclarativeItem *item); void destroyingItem(QDeclarativeItem *item); - void sizeChange(); void layout(); private: diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index cd8d143..d54bb70 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -139,7 +139,7 @@ public: //---------------------------------------------------------------------------- -class QDeclarativeListViewPrivate : public QDeclarativeFlickablePrivate, private QDeclarativeItemChangeListener +class QDeclarativeListViewPrivate : public QDeclarativeFlickablePrivate { Q_DECLARE_PUBLIC(QDeclarativeListView) @@ -389,11 +389,14 @@ public: } } - void itemGeometryChanged(QDeclarativeItem *, const QRectF &newGeometry, const QRectF &oldGeometry) { - if ((orient == QDeclarativeListView::Vertical && newGeometry.height() != oldGeometry.height()) - || newGeometry.width() != oldGeometry.width()) { - layout(); - fixupPosition(); + void itemGeometryChanged(QDeclarativeItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) { + QDeclarativeFlickablePrivate::itemGeometryChanged(item, newGeometry, oldGeometry); + if (item != viewport) { + if ((orient == QDeclarativeListView::Vertical && newGeometry.height() != oldGeometry.height()) + || newGeometry.width() != oldGeometry.width()) { + layout(); + fixupPosition(); + } } } @@ -425,10 +428,9 @@ public: void updateHeader(); void updateFooter(); void fixupPosition(); - virtual void fixupY(); - virtual void fixupX(); - virtual void flickX(qreal velocity); - virtual void flickY(qreal velocity); + virtual void fixup(AxisData &data, qreal minExtent, qreal maxExtent); + virtual void flick(QDeclarativeFlickablePrivate::AxisData &data, qreal minExtent, qreal maxExtent, qreal vSize, + QDeclarativeTimeLineCallback::Callback fixupCallback, qreal velocity); QDeclarativeGuard model; QVariant modelVariant; @@ -1061,52 +1063,16 @@ void QDeclarativeListViewPrivate::fixupPosition() fixupX(); } -void QDeclarativeListViewPrivate::fixupY() +void QDeclarativeListViewPrivate::fixup(AxisData &data, qreal minExtent, qreal maxExtent) { Q_Q(QDeclarativeListView); - if (orient == QDeclarativeListView::Horizontal) - return; - if (!q->yflick() || _moveY.timeLine()) + if ((orient == QDeclarativeListView::Horizontal && &data == &vData) + || (orient == QDeclarativeListView::Vertical && &data == &hData)) return; - int oldDuration = fixupDuration; - fixupDuration = moveReason == Mouse ? fixupDuration : 0; - - if (haveHighlightRange && highlightRange == QDeclarativeListView::StrictlyEnforceRange) { - if (currentItem && currentItem->position() - position() != highlightRangeStart) { - qreal pos = currentItem->position() - highlightRangeStart; - timeline.reset(_moveY); - if (fixupDuration) - timeline.move(_moveY, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2); - else - _moveY.setValue(-pos); - vTime = timeline.time(); - } - } else if (snapMode != QDeclarativeListView::NoSnap) { - if (FxListItem *item = snapItemAt(position())) { - qreal pos = qMin(item->position() - highlightRangeStart, -q->maxYExtent()); - qreal dist = qAbs(_moveY + pos); - if (dist > 0) { - timeline.reset(_moveY); - if (fixupDuration) - timeline.move(_moveY, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2); - else - _moveY.setValue(-pos); - vTime = timeline.time(); - } - } - } else { - QDeclarativeFlickablePrivate::fixupY(); - } - fixupDuration = oldDuration; -} - -void QDeclarativeListViewPrivate::fixupX() -{ - Q_Q(QDeclarativeListView); - if (orient == QDeclarativeListView::Vertical) - return; - if (!q->xflick() || _moveX.timeLine()) + if ((&data == &vData && !q->yflick()) + || (&data == &hData && !q->xflick()) + || data.move.timeLine()) return; int oldDuration = fixupDuration; @@ -1115,161 +1081,62 @@ void QDeclarativeListViewPrivate::fixupX() if (haveHighlightRange && highlightRange == QDeclarativeListView::StrictlyEnforceRange) { if (currentItem && currentItem->position() - position() != highlightRangeStart) { qreal pos = currentItem->position() - highlightRangeStart; - timeline.reset(_moveX); + timeline.reset(data.move); if (fixupDuration) - timeline.move(_moveX, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration); + timeline.move(data.move, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2); else - _moveX.setValue(-pos); + data.move.setValue(-pos); vTime = timeline.time(); } } else if (snapMode != QDeclarativeListView::NoSnap) { if (FxListItem *item = snapItemAt(position())) { - qreal pos = qMin(item->position() - highlightRangeStart, -q->maxXExtent()); - qreal dist = qAbs(_moveX + pos); + qreal pos = qMin(item->position() - highlightRangeStart, -maxExtent); + qreal dist = qAbs(data.move + pos); if (dist > 0) { - timeline.reset(_moveX); + timeline.reset(data.move); if (fixupDuration) - timeline.move(_moveX, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration); + timeline.move(data.move, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2); else - _moveX.setValue(-pos); + data.move.setValue(-pos); vTime = timeline.time(); } } } else { - QDeclarativeFlickablePrivate::fixupX(); + QDeclarativeFlickablePrivate::fixup(data, minExtent, maxExtent); } fixupDuration = oldDuration; } -void QDeclarativeListViewPrivate::flickX(qreal velocity) -{ - Q_Q(QDeclarativeListView); - - moveReason = Mouse; - if ((!haveHighlightRange || highlightRange != QDeclarativeListView::StrictlyEnforceRange) && snapMode == QDeclarativeListView::NoSnap) { - QDeclarativeFlickablePrivate::flickX(velocity); - return; - } - qreal maxDistance = -1; - const qreal maxX = q->maxXExtent(); - const qreal minX = q->minXExtent(); - // -ve velocity means list is moving up - if (velocity > 0) { - if (snapMode == QDeclarativeListView::SnapOneItem) { - if (FxListItem *item = firstVisibleItem()) - maxDistance = qAbs(item->position() + _moveX.value()); - } else if (_moveX.value() < minX) { - maxDistance = qAbs(minX -_moveX.value() + (overShoot?overShootDistance(velocity, q->width()):0)); - } - if (snapMode != QDeclarativeListView::SnapToItem && highlightRange != QDeclarativeListView::StrictlyEnforceRange) - flickTargetX = minX; - } else { - if (snapMode == QDeclarativeListView::SnapOneItem) { - if (FxListItem *item = nextVisibleItem()) - maxDistance = qAbs(item->position() + _moveX.value()); - } else if (_moveX.value() > maxX) { - maxDistance = qAbs(maxX - _moveX.value()) + (overShoot?overShootDistance(velocity, q->width()):0); - } - if (snapMode != QDeclarativeListView::SnapToItem && highlightRange != QDeclarativeListView::StrictlyEnforceRange) - flickTargetX = maxX; - } - if (maxDistance > 0 && (snapMode != QDeclarativeListView::NoSnap || highlightRange == QDeclarativeListView::StrictlyEnforceRange)) { - // These modes require the list to stop exactly on an item boundary. - // The initial flick will estimate the boundary to stop on. - // Since list items can have variable sizes, the boundary will be - // reevaluated and adjusted as we approach the boundary. - qreal v = velocity; - if (maxVelocity != -1 && maxVelocity < qAbs(v)) { - if (v < 0) - v = -maxVelocity; - else - v = maxVelocity; - } - if (!flicked) { - // the initial flick - estimate boundary - qreal accel = deceleration; - qreal v2 = v * v; - qreal maxAccel = v2 / (2.0f * maxDistance); - if (maxAccel < accel) { - qreal dist = v2 / (accel * 2.0); - if (v > 0) - dist = -dist; - flickTargetX = -snapPosAt(-(_moveX.value() - highlightRangeStart) + dist) + highlightRangeStart; - dist = -flickTargetX + _moveX.value(); - accel = v2 / (2.0f * qAbs(dist)); - overshootDist = 0.0; - } else { - flickTargetX = velocity > 0 ? minX : maxX; - overshootDist = overShoot ? overShootDistance(v, q->width()) : 0; - } - timeline.reset(_moveX); - timeline.accel(_moveX, v, accel, maxDistance + overshootDist); - timeline.callback(QDeclarativeTimeLineCallback(&_moveX, fixupX_callback, this)); - flicked = true; - emit q->flickingChanged(); - emit q->flickStarted(); - correctFlick = true; - } else { - // reevaluate the target boundary. - qreal newtarget = flickTargetX; - if (snapMode != QDeclarativeListView::NoSnap || highlightRange == QDeclarativeListView::StrictlyEnforceRange) - newtarget = -snapPosAt(-(flickTargetX - highlightRangeStart)) + highlightRangeStart; - if (velocity < 0 && newtarget < maxX) - newtarget = maxX; - else if (velocity > 0 && newtarget > minX) - newtarget = minX; - if (newtarget == flickTargetX) // boundary unchanged - nothing to do - return; - flickTargetX = newtarget; - qreal dist = -newtarget + _moveX.value(); - if ((v < 0 && dist < 0) || (v > 0 && dist > 0)) { - correctFlick = false; - timeline.reset(_moveX); - fixupX(); - return; - } - timeline.reset(_moveX); - timeline.accelDistance(_moveX, v, -dist + (v < 0 ? -overshootDist : overshootDist)); - timeline.callback(QDeclarativeTimeLineCallback(&_moveX, fixupX_callback, this)); - } - } else { - correctFlick = false; - timeline.reset(_moveX); - fixupX(); - } -} - -void QDeclarativeListViewPrivate::flickY(qreal velocity) +void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal maxExtent, qreal vSize, + QDeclarativeTimeLineCallback::Callback fixupCallback, qreal velocity) { Q_Q(QDeclarativeListView); moveReason = Mouse; if ((!haveHighlightRange || highlightRange != QDeclarativeListView::StrictlyEnforceRange) && snapMode == QDeclarativeListView::NoSnap) { - QDeclarativeFlickablePrivate::flickY(velocity); + QDeclarativeFlickablePrivate::flick(data, minExtent, maxExtent, vSize, fixupCallback, velocity); return; } qreal maxDistance = -1; - const qreal maxY = q->maxYExtent(); - const qreal minY = q->minYExtent(); // -ve velocity means list is moving up if (velocity > 0) { if (snapMode == QDeclarativeListView::SnapOneItem) { if (FxListItem *item = firstVisibleItem()) - maxDistance = qAbs(item->position() + _moveY.value()); - } else if (_moveY.value() < minY) { - maxDistance = qAbs(minY -_moveY.value() + (overShoot?overShootDistance(velocity, q->height()):0)); + maxDistance = qAbs(item->position() + data.move.value()); + } else if (data.move.value() < minExtent) { + maxDistance = qAbs(minExtent - data.move.value() + (overShoot?overShootDistance(velocity, vSize):0)); } if (snapMode != QDeclarativeListView::SnapToItem && highlightRange != QDeclarativeListView::StrictlyEnforceRange) - flickTargetY = minY; + data.flickTarget = minExtent; } else { if (snapMode == QDeclarativeListView::SnapOneItem) { if (FxListItem *item = nextVisibleItem()) - maxDistance = qAbs(item->position() + _moveY.value()); - } else if (_moveY.value() > maxY) { - maxDistance = qAbs(maxY - _moveY.value()) + (overShoot?overShootDistance(velocity, q->height()):0); + maxDistance = qAbs(item->position() + data.move.value()); + } else if (data.move.value() > maxExtent) { + maxDistance = qAbs(maxExtent - data.move.value()) + (overShoot?overShootDistance(velocity, vSize):0); } if (snapMode != QDeclarativeListView::SnapToItem && highlightRange != QDeclarativeListView::StrictlyEnforceRange) - flickTargetY = maxY; + data.flickTarget = maxExtent; } if (maxDistance > 0 && (snapMode != QDeclarativeListView::NoSnap || highlightRange == QDeclarativeListView::StrictlyEnforceRange)) { // These modes require the list to stop exactly on an item boundary. @@ -1292,48 +1159,48 @@ void QDeclarativeListViewPrivate::flickY(qreal velocity) qreal dist = v2 / (accel * 2.0); if (v > 0) dist = -dist; - flickTargetY = -snapPosAt(-(_moveY.value() - highlightRangeStart) + dist) + highlightRangeStart; - dist = -flickTargetY + _moveY.value(); + data.flickTarget = -snapPosAt(-(data.move.value() - highlightRangeStart) + dist) + highlightRangeStart; + dist = -data.flickTarget + data.move.value(); accel = v2 / (2.0f * qAbs(dist)); overshootDist = 0.0; } else { - flickTargetY = velocity > 0 ? minY : maxY; - overshootDist = overShoot ? overShootDistance(v, q->height()) : 0; + data.flickTarget = velocity > 0 ? minExtent : maxExtent; + overshootDist = overShoot ? overShootDistance(v, vSize) : 0; } - timeline.reset(_moveY); - timeline.accel(_moveY, v, accel, maxDistance + overshootDist); - timeline.callback(QDeclarativeTimeLineCallback(&_moveY, fixupY_callback, this)); + timeline.reset(data.move); + timeline.accel(data.move, v, accel, maxDistance + overshootDist); + timeline.callback(QDeclarativeTimeLineCallback(&data.move, fixupCallback, this)); flicked = true; emit q->flickingChanged(); emit q->flickStarted(); correctFlick = true; } else { // reevaluate the target boundary. - qreal newtarget = flickTargetY; + qreal newtarget = data.flickTarget; if (snapMode != QDeclarativeListView::NoSnap || highlightRange == QDeclarativeListView::StrictlyEnforceRange) - newtarget = -snapPosAt(-(flickTargetY - highlightRangeStart)) + highlightRangeStart; - if (velocity < 0 && newtarget < maxY) - newtarget = maxY; - else if (velocity > 0 && newtarget > minY) - newtarget = minY; - if (newtarget == flickTargetY) // boundary unchanged - nothing to do + newtarget = -snapPosAt(-(data.flickTarget - highlightRangeStart)) + highlightRangeStart; + if (velocity < 0 && newtarget < maxExtent) + newtarget = maxExtent; + else if (velocity > 0 && newtarget > minExtent) + newtarget = minExtent; + if (newtarget == data.flickTarget) // boundary unchanged - nothing to do return; - flickTargetY = newtarget; - qreal dist = -newtarget + _moveY.value(); + data.flickTarget = newtarget; + qreal dist = -newtarget + data.move.value(); if ((v < 0 && dist < 0) || (v > 0 && dist > 0)) { correctFlick = false; - timeline.reset(_moveY); - fixupY(); + timeline.reset(data.move); + fixup(data, minExtent, maxExtent); return; } - timeline.reset(_moveY); - timeline.accelDistance(_moveY, v, -dist + (v < 0 ? -overshootDist : overshootDist)); - timeline.callback(QDeclarativeTimeLineCallback(&_moveY, fixupY_callback, this)); + timeline.reset(data.move); + timeline.accelDistance(data.move, v, -dist + (v < 0 ? -overshootDist : overshootDist)); + timeline.callback(QDeclarativeTimeLineCallback(&data.move, fixupCallback, this)); } } else { correctFlick = false; - timeline.reset(_moveY); - fixupY(); + timeline.reset(data.move); + fixup(data, minExtent, maxExtent); } } @@ -2107,33 +1974,33 @@ void QDeclarativeListView::viewportMoved() // Near an end and it seems that the extent has changed? // Recalculate the flick so that we don't end up in an odd position. if (yflick()) { - if (d->velocityY > 0) { + if (d->vData.velocity > 0) { const qreal minY = minYExtent(); - if ((minY - d->_moveY.value() < height()/2 || d->flickTargetY - d->_moveY.value() < height()/2) - && minY != d->flickTargetY) - d->flickY(-d->verticalVelocity.value()); + if ((minY - d->vData.move.value() < height()/2 || d->vData.flickTarget - d->vData.move.value() < height()/2) + && minY != d->vData.flickTarget) + d->flickY(-d->vData.smoothVelocity.value()); d->bufferMode = QDeclarativeListViewPrivate::BufferBefore; - } else if (d->velocityY < 0) { + } else if (d->vData.velocity < 0) { const qreal maxY = maxYExtent(); - if ((d->_moveY.value() - maxY < height()/2 || d->_moveY.value() - d->flickTargetY < height()/2) - && maxY != d->flickTargetY) - d->flickY(-d->verticalVelocity.value()); + if ((d->vData.move.value() - maxY < height()/2 || d->vData.move.value() - d->vData.flickTarget < height()/2) + && maxY != d->vData.flickTarget) + d->flickY(-d->vData.smoothVelocity.value()); d->bufferMode = QDeclarativeListViewPrivate::BufferAfter; } } if (xflick()) { - if (d->velocityX > 0) { + if (d->hData.velocity > 0) { const qreal minX = minXExtent(); - if ((minX - d->_moveX.value() < height()/2 || d->flickTargetX - d->_moveX.value() < height()/2) - && minX != d->flickTargetX) - d->flickX(-d->horizontalVelocity.value()); + if ((minX - d->hData.move.value() < width()/2 || d->hData.flickTarget - d->hData.move.value() < width()/2) + && minX != d->hData.flickTarget) + d->flickX(-d->hData.smoothVelocity.value()); d->bufferMode = QDeclarativeListViewPrivate::BufferBefore; - } else if (d->velocityX < 0) { + } else if (d->hData.velocity < 0) { const qreal maxX = maxXExtent(); - if ((d->_moveX.value() - maxX < height()/2 || d->_moveX.value() - d->flickTargetX < height()/2) - && maxX != d->flickTargetX) - d->flickX(-d->horizontalVelocity.value()); + if ((d->hData.move.value() - maxX < width()/2 || d->hData.move.value() - d->hData.flickTarget < width()/2) + && maxX != d->hData.flickTarget) + d->flickX(-d->hData.smoothVelocity.value()); d->bufferMode = QDeclarativeListViewPrivate::BufferAfter; } } diff --git a/src/declarative/graphicsitems/qdeclarativelistview_p.h b/src/declarative/graphicsitems/qdeclarativelistview_p.h index f9b7b50..d66ac2b 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview_p.h +++ b/src/declarative/graphicsitems/qdeclarativelistview_p.h @@ -300,10 +300,10 @@ Q_SIGNALS: public: QDeclarativeListView *m_view; - bool m_isCurrent; mutable QString m_section; QString m_prevSection; - bool m_delayRemove; + bool m_isCurrent : 1; + bool m_delayRemove : 1; }; -- cgit v0.12 From 69a3c7fc51fcab07a6a0a18a753546b45cf522c3 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Mon, 8 Mar 2010 12:36:12 +1000 Subject: Fixed declarative examples not being installed. --- examples/declarative/declarative.pro | 48 ++++++++++++++++++++++ examples/declarative/extending/adding/adding.pro | 4 ++ .../declarative/extending/attached/attached.pro | 4 ++ examples/declarative/extending/binding/binding.pro | 4 ++ .../declarative/extending/coercion/coercion.pro | 4 ++ examples/declarative/extending/default/default.pro | 4 ++ .../declarative/extending/extended/extended.pro | 4 ++ examples/declarative/extending/grouped/grouped.pro | 4 ++ .../extending/properties/properties.pro | 5 +++ examples/declarative/extending/signal/signal.pro | 4 ++ .../extending/valuesource/valuesource.pro | 4 ++ .../declarative/imageprovider/imageprovider.pro | 10 +++++ .../objectlistmodel/objectlistmodel.pro | 7 ++++ examples/declarative/plugins/plugins.pro | 2 +- 14 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 examples/declarative/declarative.pro diff --git a/examples/declarative/declarative.pro b/examples/declarative/declarative.pro new file mode 100644 index 0000000..b8c0200 --- /dev/null +++ b/examples/declarative/declarative.pro @@ -0,0 +1,48 @@ +TEMPLATE = subdirs + +# These examples contain some C++ and need to be built +SUBDIRS = \ + extending \ + imageprovider \ + objectlistmodel \ + plugins + +# These examples contain no C++ and can simply be copied +sources.files = \ + animations \ + aspectratio \ + behaviours \ + border-image \ + clocks \ + colorbrowser \ + connections \ + dial \ + dynamic \ + effects \ + fillmode \ + focusscope \ + fonts \ + gridview \ + layouts \ + listview \ + mousearea \ + package \ + parallax \ + progressbar \ + scrollbar \ + searchbox \ + slideswitch \ + sql \ + states \ + tabwidget \ + tic-tac-toe \ + tutorials \ + tvtennis \ + velocity \ + webview \ + workerlistmodel \ + workerscript \ + xmldata \ + xmlhttprequest +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative +INSTALLS += sources diff --git a/examples/declarative/extending/adding/adding.pro b/examples/declarative/extending/adding/adding.pro index c02a35f..6072de4 100644 --- a/examples/declarative/extending/adding/adding.pro +++ b/examples/declarative/extending/adding/adding.pro @@ -9,3 +9,7 @@ SOURCES += main.cpp \ person.cpp HEADERS += person.h RESOURCES += adding.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/adding +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS adding.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/adding +INSTALLS += target sources diff --git a/examples/declarative/extending/attached/attached.pro b/examples/declarative/extending/attached/attached.pro index b0f3fea..f6d76ed 100644 --- a/examples/declarative/extending/attached/attached.pro +++ b/examples/declarative/extending/attached/attached.pro @@ -11,3 +11,7 @@ SOURCES += main.cpp \ HEADERS += person.h \ birthdayparty.h RESOURCES += attached.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/attached +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS attached.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/attached +INSTALLS += target sources diff --git a/examples/declarative/extending/binding/binding.pro b/examples/declarative/extending/binding/binding.pro index 8298565..903712e 100644 --- a/examples/declarative/extending/binding/binding.pro +++ b/examples/declarative/extending/binding/binding.pro @@ -13,3 +13,7 @@ HEADERS += person.h \ birthdayparty.h \ happybirthday.h RESOURCES += binding.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/binding +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS binding.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/binding +INSTALLS += target sources diff --git a/examples/declarative/extending/coercion/coercion.pro b/examples/declarative/extending/coercion/coercion.pro index 136b210..c8daed8 100644 --- a/examples/declarative/extending/coercion/coercion.pro +++ b/examples/declarative/extending/coercion/coercion.pro @@ -11,3 +11,7 @@ SOURCES += main.cpp \ HEADERS += person.h \ birthdayparty.h RESOURCES += coercion.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/coercion +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS coercion.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/coercion +INSTALLS += target sources diff --git a/examples/declarative/extending/default/default.pro b/examples/declarative/extending/default/default.pro index 0d5d45c..32aff0b 100644 --- a/examples/declarative/extending/default/default.pro +++ b/examples/declarative/extending/default/default.pro @@ -11,3 +11,7 @@ SOURCES += main.cpp \ HEADERS += person.h \ birthdayparty.h RESOURCES += default.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/default +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS default.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/default +INSTALLS += target sources diff --git a/examples/declarative/extending/extended/extended.pro b/examples/declarative/extending/extended/extended.pro index 1182226..97af286 100644 --- a/examples/declarative/extending/extended/extended.pro +++ b/examples/declarative/extending/extended/extended.pro @@ -9,3 +9,7 @@ SOURCES += main.cpp \ lineedit.cpp HEADERS += lineedit.h RESOURCES += extended.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/extended +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS extended.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/extended +INSTALLS += target sources diff --git a/examples/declarative/extending/grouped/grouped.pro b/examples/declarative/extending/grouped/grouped.pro index 8fde8e8..576e1d2 100644 --- a/examples/declarative/extending/grouped/grouped.pro +++ b/examples/declarative/extending/grouped/grouped.pro @@ -11,3 +11,7 @@ SOURCES += main.cpp \ HEADERS += person.h \ birthdayparty.h RESOURCES += grouped.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/grouped +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS grouped.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/grouped +INSTALLS += target sources diff --git a/examples/declarative/extending/properties/properties.pro b/examples/declarative/extending/properties/properties.pro index 6355644..a8f4301 100644 --- a/examples/declarative/extending/properties/properties.pro +++ b/examples/declarative/extending/properties/properties.pro @@ -11,3 +11,8 @@ SOURCES += main.cpp \ HEADERS += person.h \ birthdayparty.h RESOURCES += properties.qrc + +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/properties +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS properties.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/properties +INSTALLS += target sources diff --git a/examples/declarative/extending/signal/signal.pro b/examples/declarative/extending/signal/signal.pro index 30e413f..6367a38 100644 --- a/examples/declarative/extending/signal/signal.pro +++ b/examples/declarative/extending/signal/signal.pro @@ -11,3 +11,7 @@ SOURCES += main.cpp \ HEADERS += person.h \ birthdayparty.h RESOURCES += signal.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/signal +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS signal.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/signal +INSTALLS += target sources diff --git a/examples/declarative/extending/valuesource/valuesource.pro b/examples/declarative/extending/valuesource/valuesource.pro index 9e54448..d3409b6 100644 --- a/examples/declarative/extending/valuesource/valuesource.pro +++ b/examples/declarative/extending/valuesource/valuesource.pro @@ -13,3 +13,7 @@ HEADERS += person.h \ birthdayparty.h \ happybirthday.h RESOURCES += valuesource.qrc +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/valuesource +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS valuesource.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/extending/valuesource +INSTALLS += target sources diff --git a/examples/declarative/imageprovider/imageprovider.pro b/examples/declarative/imageprovider/imageprovider.pro index e403bf8..86dbcca 100644 --- a/examples/declarative/imageprovider/imageprovider.pro +++ b/examples/declarative/imageprovider/imageprovider.pro @@ -9,3 +9,13 @@ DESTDIR = ImageProviderCore # Input SOURCES += imageprovider.cpp +sources.files = $$SOURCES imageprovider.qml imageprovider.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/imageprovider + +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/imageprovider/ImageProviderCore + +ImageProviderCore_sources.files = \ + ImageProviderCore/qmldir +ImageProviderCore_sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/imageprovider/ImageProviderCore + +INSTALLS = sources ImageProviderCore_sources target diff --git a/examples/declarative/objectlistmodel/objectlistmodel.pro b/examples/declarative/objectlistmodel/objectlistmodel.pro index ca61e4c..869cde3 100644 --- a/examples/declarative/objectlistmodel/objectlistmodel.pro +++ b/examples/declarative/objectlistmodel/objectlistmodel.pro @@ -9,3 +9,10 @@ SOURCES += main.cpp \ dataobject.cpp HEADERS += dataobject.h RESOURCES += objectlistmodel.qrc + +sources.files = $$SOURCES $$HEADERS $$RESOURCES objectlistmodel.pro view.qml +sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/objectlistmodel +target.path = $$[QT_INSTALL_EXAMPLES]/declarative/objectlistmodel + +INSTALLS += sources target + diff --git a/examples/declarative/plugins/plugins.pro b/examples/declarative/plugins/plugins.pro index c925cea..877a5ce 100644 --- a/examples/declarative/plugins/plugins.pro +++ b/examples/declarative/plugins/plugins.pro @@ -17,7 +17,7 @@ qdeclarativesources.files += \ qdeclarativesources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins/com/nokia/TimeExample -sources.files += plugins.pro plugin.cpp plugins.qml +sources.files += plugins.pro plugin.cpp plugins.qml README sources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins target.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins/com/nokia/TimeExample -- cgit v0.12 From c97e1e29aedaceead92cd231b3a77d60bab2af50 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Mon, 8 Mar 2010 12:52:11 +1000 Subject: Use a better method for installing declarative demos. Simply copy the demo directories, instead of writing a stub .pro file. --- demos/declarative/calculator/calculator.pro | 13 ------------- demos/declarative/declarative.pro | 22 +++++++++++++++------- demos/declarative/flickr/flickr.pro | 16 ---------------- demos/declarative/minehunt/minehunt.pro | 2 +- demos/declarative/snake/snake.pro | 13 ------------- demos/declarative/twitter/twitter.pro | 13 ------------- demos/declarative/webbrowser/webbrowser.pro | 13 ------------- 7 files changed, 16 insertions(+), 76 deletions(-) delete mode 100644 demos/declarative/calculator/calculator.pro delete mode 100644 demos/declarative/flickr/flickr.pro delete mode 100644 demos/declarative/snake/snake.pro delete mode 100644 demos/declarative/twitter/twitter.pro delete mode 100644 demos/declarative/webbrowser/webbrowser.pro diff --git a/demos/declarative/calculator/calculator.pro b/demos/declarative/calculator/calculator.pro deleted file mode 100644 index efe6413..0000000 --- a/demos/declarative/calculator/calculator.pro +++ /dev/null @@ -1,13 +0,0 @@ -TEMPLATE=app -CONFIG -= qt separate_debug_info -LIBS = -QT = -QMAKE_LINK = @: dummy - -sources.files = \ - CalcButton.qml \ - calculator.js \ - calculator.qml -sources.path = $$[QT_INSTALL_DEMOS]/declarative/calculator -INSTALLS = sources - diff --git a/demos/declarative/declarative.pro b/demos/declarative/declarative.pro index 037ad85..4d169e3 100644 --- a/demos/declarative/declarative.pro +++ b/demos/declarative/declarative.pro @@ -1,9 +1,17 @@ TEMPLATE = subdirs -SUBDIRS = calculator \ - flickr \ - minehunt \ - samegame \ - snake \ - twitter \ - webbrowser + +# These demos contain C++ and need to be compiled +SUBDIRS = \ + minehunt + +# These examples contain no C++ and can simply be copied +sources.files = \ + calculator \ + flickr \ + samegame \ + snake \ + twitter \ + webbrowser +sources.path = $$[QT_INSTALL_DEMOS]/declarative +INSTALLS += sources diff --git a/demos/declarative/flickr/flickr.pro b/demos/declarative/flickr/flickr.pro deleted file mode 100644 index c4c1d44..0000000 --- a/demos/declarative/flickr/flickr.pro +++ /dev/null @@ -1,16 +0,0 @@ -TEMPLATE=app -CONFIG -= qt separate_debug_info -LIBS = -QT = -QMAKE_LINK = @: dummy - -sources.files = \ - flickr-desktop.qml \ - flickr-mobile-90.qml \ - flickr-mobile.qml \ - common \ - mobile - -sources.path = $$[QT_INSTALL_DEMOS]/declarative/flickr -INSTALLS = sources - diff --git a/demos/declarative/minehunt/minehunt.pro b/demos/declarative/minehunt/minehunt.pro index 2f9a8ad..2df33e6 100644 --- a/demos/declarative/minehunt/minehunt.pro +++ b/demos/declarative/minehunt/minehunt.pro @@ -10,7 +10,7 @@ DESTDIR = MinehuntCore SOURCES += minehunt.cpp -sources.files = minehunt.qml +sources.files = minehunt.qml minehunt.pro sources.path = $$[QT_INSTALL_DEMOS]/declarative/minehunt target.path = $$[QT_INSTALL_DEMOS]/declarative/minehunt/MinehuntCore diff --git a/demos/declarative/snake/snake.pro b/demos/declarative/snake/snake.pro deleted file mode 100644 index a206fd4..0000000 --- a/demos/declarative/snake/snake.pro +++ /dev/null @@ -1,13 +0,0 @@ -TEMPLATE=app -CONFIG -= qt separate_debug_info -LIBS = -QT = -QMAKE_LINK = @: dummy - -sources.files = \ - content \ - snake.qml - -sources.path = $$[QT_INSTALL_DEMOS]/declarative/snake -INSTALLS = sources - diff --git a/demos/declarative/twitter/twitter.pro b/demos/declarative/twitter/twitter.pro deleted file mode 100644 index e1dd821..0000000 --- a/demos/declarative/twitter/twitter.pro +++ /dev/null @@ -1,13 +0,0 @@ -TEMPLATE=app -CONFIG -= qt separate_debug_info -LIBS = -QT = -QMAKE_LINK = @: dummy - -sources.files = \ - TwitterCore \ - twitter.qml - -sources.path = $$[QT_INSTALL_DEMOS]/declarative/twitter -INSTALLS = sources - diff --git a/demos/declarative/webbrowser/webbrowser.pro b/demos/declarative/webbrowser/webbrowser.pro deleted file mode 100644 index c033ef9..0000000 --- a/demos/declarative/webbrowser/webbrowser.pro +++ /dev/null @@ -1,13 +0,0 @@ -TEMPLATE=app -CONFIG -= qt separate_debug_info -LIBS = -QT = -QMAKE_LINK = @: dummy - -sources.files = \ - content \ - webbrowser.qml - -sources.path = $$[QT_INSTALL_DEMOS]/declarative/webbrowser -INSTALLS = sources - -- cgit v0.12 From baed547d0bccabf3ec92cafb54b6642d81c854f0 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Mon, 8 Mar 2010 13:42:44 +1000 Subject: Remove expected warning --- .../qdeclarativeworkerscript.pro | 3 +-- .../tst_qdeclarativeworkerscript.cpp | 18 +----------------- 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro b/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro index 0543ff6..e2b31c7 100644 --- a/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro +++ b/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro @@ -1,6 +1,5 @@ load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative -QT += script +contains(QT_CONFIG,declarative): QT += declarative script macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativeworkerscript.cpp diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp index 9adbc28..fe2dac2 100644 --- a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp +++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp @@ -60,7 +60,6 @@ public: tst_QDeclarativeWorkerScript() {} private slots: void source(); - void source_data(); void messaging(); void messaging_data(); void messaging_sendQObjectList(); @@ -83,13 +82,7 @@ private: void tst_QDeclarativeWorkerScript::source() { - QFETCH(QUrl, source); - QFETCH(bool, valid); - - if (!valid) { - QByteArray w = "WorkerScript: Cannot find source file \"" + source.toString().toUtf8() + "\""; - QTest::ignoreMessage(QtWarningMsg, w.constData()); - } + QUrl source = QUrl::fromLocalFile(SRCDIR "/data/worker.qml"); QDeclarativeComponent component(&m_engine); component.setData("import Qt 4.6\nWorkerScript { source: '" + source.toString().toUtf8() + "'; }", QUrl()); @@ -103,15 +96,6 @@ void tst_QDeclarativeWorkerScript::source() delete item; } -void tst_QDeclarativeWorkerScript::source_data() -{ - QTest::addColumn("source"); - QTest::addColumn("valid"); - - QTest::newRow("valid") << QUrl::fromLocalFile(SRCDIR "/data/worker.qml") << true; - QTest::newRow("invalid") << QUrl::fromLocalFile("asdjfk.js") << false; -} - void tst_QDeclarativeWorkerScript::messaging() { QFETCH(QVariant, value); -- cgit v0.12 From a7b6bb3537f359a406e3e8d0d0340137a73fc677 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Mon, 8 Mar 2010 14:18:42 +1000 Subject: Disallow upper case property, signal and method names in QML QT-2976 --- src/declarative/qml/qdeclarativecompiler.cpp | 6 ++++++ .../auto/declarative/qdeclarativelanguage/data/method.1.errors.txt | 1 + tests/auto/declarative/qdeclarativelanguage/data/method.1.qml | 5 +++++ .../declarative/qdeclarativelanguage/data/property.6.errors.txt | 1 + tests/auto/declarative/qdeclarativelanguage/data/property.6.qml | 6 ++++++ .../declarative/qdeclarativelanguage/data/property.7.errors.txt | 1 + tests/auto/declarative/qdeclarativelanguage/data/property.7.qml | 5 +++++ .../auto/declarative/qdeclarativelanguage/data/signal.4.errors.txt | 1 + tests/auto/declarative/qdeclarativelanguage/data/signal.4.qml | 6 ++++++ .../declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp | 5 +++++ 10 files changed, 37 insertions(+) create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/method.1.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/method.1.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/property.6.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/property.6.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/property.7.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/property.7.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/signal.4.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/signal.4.qml diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 3c6c949..ef1032b 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -2204,6 +2204,8 @@ bool QDeclarativeCompiler::checkDynamicMeta(QDeclarativeParser::Object *obj) if (propNames.contains(prop.name)) COMPILE_EXCEPTION(&prop, QCoreApplication::translate("QDeclarativeCompiler","Duplicate property name")); + if (QString::fromUtf8(prop.name).at(0).isUpper()) + COMPILE_EXCEPTION(&prop, QCoreApplication::translate("QDeclarativeCompiler","Property names cannot begin with an upper case letter")); propNames.insert(prop.name); } @@ -2211,12 +2213,16 @@ bool QDeclarativeCompiler::checkDynamicMeta(QDeclarativeParser::Object *obj) QByteArray name = obj->dynamicSignals.at(ii).name; if (methodNames.contains(name)) COMPILE_EXCEPTION(obj, QCoreApplication::translate("QDeclarativeCompiler","Duplicate signal name")); + if (QString::fromUtf8(name).at(0).isUpper()) + COMPILE_EXCEPTION(obj, QCoreApplication::translate("QDeclarativeCompiler","Signal names cannot begin with an upper case letter")); methodNames.insert(name); } for (int ii = 0; ii < obj->dynamicSlots.count(); ++ii) { QByteArray name = obj->dynamicSlots.at(ii).name; if (methodNames.contains(name)) COMPILE_EXCEPTION(obj, QCoreApplication::translate("QDeclarativeCompiler","Duplicate method name")); + if (QString::fromUtf8(name).at(0).isUpper()) + COMPILE_EXCEPTION(obj, QCoreApplication::translate("QDeclarativeCompiler","Method names cannot begin with an upper case letter")); methodNames.insert(name); } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/method.1.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/method.1.errors.txt new file mode 100644 index 0000000..b10984f --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/method.1.errors.txt @@ -0,0 +1 @@ +3:1:Method names cannot begin with an upper case letter diff --git a/tests/auto/declarative/qdeclarativelanguage/data/method.1.qml b/tests/auto/declarative/qdeclarativelanguage/data/method.1.qml new file mode 100644 index 0000000..d9794b4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/method.1.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +QtObject { + function MyMethod() {} +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/property.6.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/property.6.errors.txt new file mode 100644 index 0000000..9e8d454 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/property.6.errors.txt @@ -0,0 +1 @@ +4:5:Property names cannot begin with an upper case letter diff --git a/tests/auto/declarative/qdeclarativelanguage/data/property.6.qml b/tests/auto/declarative/qdeclarativelanguage/data/property.6.qml new file mode 100644 index 0000000..f39bed3 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/property.6.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +QtObject { + property int Hello +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/property.7.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/property.7.errors.txt new file mode 100644 index 0000000..9e8d454 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/property.7.errors.txt @@ -0,0 +1 @@ +4:5:Property names cannot begin with an upper case letter diff --git a/tests/auto/declarative/qdeclarativelanguage/data/property.7.qml b/tests/auto/declarative/qdeclarativelanguage/data/property.7.qml new file mode 100644 index 0000000..502eb22 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/property.7.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +QtObject { + property int Hello: 10 +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/signal.4.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/signal.4.errors.txt new file mode 100644 index 0000000..d96f9e3 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/signal.4.errors.txt @@ -0,0 +1 @@ +3:1:Signal names cannot begin with an upper case letter diff --git a/tests/auto/declarative/qdeclarativelanguage/data/signal.4.qml b/tests/auto/declarative/qdeclarativelanguage/data/signal.4.qml new file mode 100644 index 0000000..7279a46 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/signal.4.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +QtObject { + signal MySignal +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index da0bf1a..083c551 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -269,12 +269,17 @@ void tst_qdeclarativelanguage::errors_data() QTest::newRow("signal.1") << "signal.1.qml" << "signal.1.errors.txt" << false; QTest::newRow("signal.2") << "signal.2.qml" << "signal.2.errors.txt" << false; QTest::newRow("signal.3") << "signal.3.qml" << "signal.3.errors.txt" << false; + QTest::newRow("signal.4") << "signal.4.qml" << "signal.4.errors.txt" << false; + + QTest::newRow("method.1") << "method.1.qml" << "method.1.errors.txt" << false; QTest::newRow("property.1") << "property.1.qml" << "property.1.errors.txt" << false; QTest::newRow("property.2") << "property.2.qml" << "property.2.errors.txt" << false; QTest::newRow("property.3") << "property.3.qml" << "property.3.errors.txt" << false; QTest::newRow("property.4") << "property.4.qml" << "property.4.errors.txt" << false; QTest::newRow("property.5") << "property.5.qml" << "property.5.errors.txt" << false; + QTest::newRow("property.6") << "property.6.qml" << "property.6.errors.txt" << false; + QTest::newRow("property.7") << "property.7.qml" << "property.7.errors.txt" << false; QTest::newRow("Script.1") << "script.1.qml" << "script.1.errors.txt" << false; QTest::newRow("Script.2") << "script.2.qml" << "script.2.errors.txt" << false; -- cgit v0.12 From ef16993782b834cb34ed0281925ddfc49535e78b Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Mon, 8 Mar 2010 14:39:11 +1000 Subject: Fix Qt.tint() algorithm QT-2424 --- src/declarative/qml/qdeclarativeengine.cpp | 16 ++++++---------- tests/auto/declarative/qdeclarativeqt/data/tint.qml | 2 +- .../declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp | 4 ++-- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 1e60df4..41d55d7 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -1234,17 +1234,13 @@ QScriptValue QDeclarativeEnginePrivate::tint(QScriptContext *ctxt, QScriptEngine else if (a == 0x00) finalColor = color; else { - uint src = tintColor.rgba(); - uint dest = color.rgba(); + qreal a = tintColor.alphaF(); + qreal inv_a = 1.0 - a; - uint res = (((a * (src & 0xFF00FF)) + - ((0xFF - a) * (dest & 0xFF00FF))) >> 8) & 0xFF00FF; - res |= (((a * ((src >> 8) & 0xFF00FF)) + - ((0xFF - a) * ((dest >> 8) & 0xFF00FF)))) & 0xFF00FF00; - if ((src & 0xFF000000) == 0xFF000000) - res |= 0xFF000000; - - finalColor = QColor::fromRgba(res); + finalColor.setRgbF(tintColor.redF() * a + color.redF() * inv_a, + tintColor.greenF() * a + color.greenF() * inv_a, + tintColor.blueF() * a + color.blueF() * inv_a, + a + inv_a * color.alphaF()); } return qScriptValueFromValue(engine, qVariantFromValue(finalColor)); diff --git a/tests/auto/declarative/qdeclarativeqt/data/tint.qml b/tests/auto/declarative/qdeclarativeqt/data/tint.qml index da8afe2..478245f 100644 --- a/tests/auto/declarative/qdeclarativeqt/data/tint.qml +++ b/tests/auto/declarative/qdeclarativeqt/data/tint.qml @@ -3,7 +3,7 @@ import Qt 4.6 QtObject { property color test1: Qt.tint("red", "blue"); property color test2: Qt.tint(Qt.rgba(1, 0, 0), Qt.rgba(0, 0, 0, 0)); - property color test3: Qt.tint("red", Qt.rgba(0, 0, 1, 0.5)); // XXX - what should this be? + property color test3: Qt.tint("red", Qt.rgba(0, 0, 1, 0.5)); property color test4: Qt.tint("red", Qt.rgba(0, 0, 1, 0.5), 10); property color test5: Qt.tint("red") } diff --git a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp index 90afd4e..b70011b 100644 --- a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp +++ b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp @@ -254,8 +254,8 @@ void tst_qdeclarativeqt::tint() QCOMPARE(qvariant_cast(object->property("test1")), QColor::fromRgbF(0, 0, 1)); QCOMPARE(qvariant_cast(object->property("test2")), QColor::fromRgbF(1, 0, 0)); - QEXPECT_FAIL("", "QT-2424",Continue); - QCOMPARE(qvariant_cast(object->property("test3")), QColor::fromRgbF(1, 0, 0)); + QColor test3 = qvariant_cast(object->property("test3")); + QCOMPARE(test3.rgba(), 0xFF7F0080); QCOMPARE(qvariant_cast(object->property("test4")), QColor()); QCOMPARE(qvariant_cast(object->property("test5")), QColor()); -- cgit v0.12 From ad7e15422be2ae2d3bbae75d0fa1dd99b302283d Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Mon, 8 Mar 2010 14:49:03 +1000 Subject: Add Flipable example. Task-number: QT-2824 --- examples/declarative/flipable/back.png | Bin 0 -> 5048 bytes examples/declarative/flipable/flipable.qml | 37 +++++++++++++++ examples/declarative/flipable/front.png | Bin 0 -> 6431 bytes .../graphicsitems/qdeclarativeflipable.cpp | 51 ++++++--------------- 4 files changed, 50 insertions(+), 38 deletions(-) create mode 100644 examples/declarative/flipable/back.png create mode 100644 examples/declarative/flipable/flipable.qml create mode 100644 examples/declarative/flipable/front.png diff --git a/examples/declarative/flipable/back.png b/examples/declarative/flipable/back.png new file mode 100644 index 0000000..0b4cafc Binary files /dev/null and b/examples/declarative/flipable/back.png differ diff --git a/examples/declarative/flipable/flipable.qml b/examples/declarative/flipable/flipable.qml new file mode 100644 index 0000000..c837ebc --- /dev/null +++ b/examples/declarative/flipable/flipable.qml @@ -0,0 +1,37 @@ +//! [0] +import Qt 4.6 + +Flipable { + id: flipable + width: 240 + height: 240 + + property int angle: 0 + property bool flipped: false + + front: Image { source: "front.png" } + back: Image { source: "back.png" } + + transform: Rotation { + origin.x: flipable.width/2; origin.y: flipable.height/2 + axis.x: 0; axis.y: 1; axis.z: 0 // rotate around y-axis + angle: flipable.angle + } + + states: State { + name: "back" + PropertyChanges { target: flipable; angle: 180 } + when: flipable.flipped + } + + transitions: Transition { + NumberAnimation { properties: "angle"; duration: 1000 } + } + + MouseArea { + anchors.fill: parent + onClicked: flipable.flipped = !flipable.flipped + } +} +//! [0] + diff --git a/examples/declarative/flipable/front.png b/examples/declarative/flipable/front.png new file mode 100644 index 0000000..796b605 Binary files /dev/null and b/examples/declarative/flipable/front.png differ diff --git a/src/declarative/graphicsitems/qdeclarativeflipable.cpp b/src/declarative/graphicsitems/qdeclarativeflipable.cpp index b36127f..1ebbaee 100644 --- a/src/declarative/graphicsitems/qdeclarativeflipable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflipable.cpp @@ -68,56 +68,31 @@ public: \brief The Flipable item provides a surface that can be flipped. \inherits Item - Flipable allows you to specify a front and a back and then flip between those sides. + Flipable is an item that can be visibly "flipped" between its front and + back sides. It is used together with Rotation and State/Transition to + produce a flipping effect. - Here's an example that flips between the front and back sides when clicked: + Here is a Flipable that flips whenever it is clicked: - \qml - - Flipable { - id: flipable - width: 250; height: 250 - property int angle: 0 - - transform: Rotation { - id: rotation - origin.x: flipable.width/2; origin.y: flipable.height/2 - axis.x: 0; axis.y: 1; axis.z: 0 // rotate around y-axis - angle: flipable.angle - } - - front: Image { source: "front.png" } - back: Image { source: "back.png" } - - states: State { - name: "back" - PropertyChanges { target: flipable; angle: 180 } - } - - transitions: Transition { - NumberAnimation { properties: "angle"; duration: 2000 } - } - - MouseArea { - // change between default and 'back' states - onClicked: flipable.state = (flipable.state == 'back' ? '' : 'back') - anchors.fill: parent - } - } - \endqml + \snippet examples/declarative/flipable/flipable.qml 0 \image flipable.gif + + The Rotation element is used to specify the angle and axis of the flip, + and the State defines the changes in angle which produce the flipping + effect. Finally, the Transition creates the animation that changes the + angle over one second. */ /*! \internal \class QDeclarativeFlipable - \brief The QDeclarativeFlipable class provides a flipable surface. + \brief The Flipable item provides a surface that can be flipped. \ingroup group_widgets - QDeclarativeFlipable allows you to specify a front and a back, as well as an - axis for the flip. + Flipable is an item that can be visibly "flipped" between its front and + back sides. */ QDeclarativeFlipable::QDeclarativeFlipable(QDeclarativeItem *parent) -- cgit v0.12 From 03a2ed58778d500cc7eed285478d0e304b3c92dc Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Mon, 8 Mar 2010 15:32:16 +1000 Subject: Particles optimization and doc fixes. --- src/declarative/graphicsitems/qdeclarativeparticles.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeparticles.cpp b/src/declarative/graphicsitems/qdeclarativeparticles.cpp index deabdd6..ec0bf6c 100644 --- a/src/declarative/graphicsitems/qdeclarativeparticles.cpp +++ b/src/declarative/graphicsitems/qdeclarativeparticles.cpp @@ -758,11 +758,13 @@ void QDeclarativeParticles::setSource(const QUrl &name) The particles element emits particles until it has count active particles. When this number is reached, new particles are not emitted until - some of the current particles reach theend of their lifespan. + some of the current particles reach the end of their lifespan. If count is -1 then there is no maximum number of active particles, and particles will be constantly emitted at the rate specified by emissionRate. + The default value for count is 1. + If both count and emissionRate are set to -1, nothing will be emitted. */ @@ -1219,7 +1221,7 @@ void QDeclarativeParticles::burst(int count, int emissionRate) void QDeclarativeParticlesPainter::updateSize() { - if (!isComponentComplete()) + if (!d->_componentComplete) return; const int parentX = parentItem()->x(); @@ -1304,7 +1306,7 @@ void QDeclarativeParticles::componentComplete() { Q_D(QDeclarativeParticles); QDeclarativeItem::componentComplete(); - if (d->count) { + if (d->count && d->emissionRate) { d->paintItem->updateSize(); d->clock.start(); } -- cgit v0.12 From 2e501c4d45dddba3db2d8817a27380615c1ce8fd Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Mon, 8 Mar 2010 13:45:33 +1000 Subject: Refactor QSoundEffect. Reviewed-by: Dmytro Poplavskiy --- src/multimedia/effects/qsoundeffect.cpp | 76 +++------- src/multimedia/effects/qsoundeffect_p.h | 14 +- src/multimedia/effects/qsoundeffect_pulse_p.cpp | 183 ++++++++++------------- src/multimedia/effects/qsoundeffect_pulse_p.h | 39 +++-- src/multimedia/effects/qsoundeffect_qmedia_p.cpp | 99 +++++------- src/multimedia/effects/qsoundeffect_qmedia_p.h | 34 ++--- src/multimedia/effects/qsoundeffect_qsound_p.cpp | 153 ++++--------------- src/multimedia/effects/qsoundeffect_qsound_p.h | 55 ++----- src/multimedia/effects/wavedecoder_p.h | 4 +- 9 files changed, 217 insertions(+), 440 deletions(-) diff --git a/src/multimedia/effects/qsoundeffect.cpp b/src/multimedia/effects/qsoundeffect.cpp index 2694023..3ccca6e 100644 --- a/src/multimedia/effects/qsoundeffect.cpp +++ b/src/multimedia/effects/qsoundeffect.cpp @@ -39,9 +39,6 @@ ** ****************************************************************************/ -#include "qmediacontent.h" -#include "qmediaplayer.h" - #include "qsoundeffect_p.h" #if defined(QT_MULTIMEDIA_PULSEAUDIO) @@ -139,17 +136,12 @@ QT_BEGIN_NAMESPACE */ QSoundEffect::QSoundEffect(QObject *parent) : - QObject(parent), - m_loopCount(1), - m_vol(100), - m_muted(false), - m_runningCount(0) + QObject(parent) { d = new QSoundEffectPrivate(this); - connect(d, SIGNAL(volumeChanged(int)), SIGNAL(volumeChanged())); - connect(d, SIGNAL(mutedChanged(bool)), SIGNAL(mutedChanged())); - connect(d, SIGNAL(durationChanged(qint64)), SIGNAL(durationChanged())); - connect(d, SIGNAL(stateChanged(QMediaPlayer::State)), SLOT(repeat())); + connect(d, SIGNAL(volumeChanged()), SIGNAL(volumeChanged())); + connect(d, SIGNAL(mutedChanged()), SIGNAL(mutedChanged())); + connect(d, SIGNAL(durationChanged()), SIGNAL(durationChanged())); } QSoundEffect::~QSoundEffect() @@ -159,97 +151,69 @@ QSoundEffect::~QSoundEffect() QUrl QSoundEffect::source() const { - return d != 0 ? d->media().canonicalUrl() : QUrl(); + return d->source(); } void QSoundEffect::setSource(const QUrl &url) { - if (d != 0 && d->media().canonicalUrl() == url) + if (d->source() == url) return; - d->setVolume(m_vol); - d->setMuted(m_muted); - d->setMedia(url); - - if (url.isEmpty()) - return; + d->setSource(url); emit sourceChanged(); } int QSoundEffect::loopCount() const { - return m_loopCount; + return d->loopCount(); } void QSoundEffect::setLoopCount(int loopCount) { - if (m_loopCount == loopCount) + if (d->loopCount() == loopCount) return; - m_loopCount = loopCount; + d->setLoopCount(loopCount); emit loopCountChanged(); } int QSoundEffect::volume() const { - return d != 0 ? d->volume() : m_vol; + return d->volume(); } void QSoundEffect::setVolume(int volume) { - if (m_vol == volume) + if (d->volume() == volume) return; - m_vol = volume; - if (d != 0) - d->setVolume(volume); - else - emit volumeChanged(); + d->setVolume(volume); + emit volumeChanged(); } bool QSoundEffect::isMuted() const { - return d != 0 ? d->isMuted() : m_muted; + return d->isMuted(); } void QSoundEffect::setMuted(bool muted) { - if (m_muted == muted) + if (d->isMuted() == muted) return; - m_muted = muted; - if (d != 0) - d->setMuted(muted); - else - emit mutedChanged(); + d->setMuted(muted); + emit mutedChanged(); } int QSoundEffect::duration() const { - return d != 0 ? d->duration() : 0; + return d->duration(); } void QSoundEffect::play() { - m_runningCount = 0; - - if (d != 0) - d->play(); -} - -void QSoundEffect::stop() -{ - if (d != 0) - d->stop(); -} - -void QSoundEffect::repeat() -{ - if (d->state() == QMediaPlayer::StoppedState) { - if (++m_runningCount < m_loopCount) - d->play(); - } + d->play(); } QT_END_NAMESPACE diff --git a/src/multimedia/effects/qsoundeffect_p.h b/src/multimedia/effects/qsoundeffect_p.h index c5554bf..29cb16c 100644 --- a/src/multimedia/effects/qsoundeffect_p.h +++ b/src/multimedia/effects/qsoundeffect_p.h @@ -90,28 +90,18 @@ public: int duration() const; -signals: +Q_SIGNALS: void sourceChanged(); void loopCountChanged(); void volumeChanged(); void mutedChanged(); void durationChanged(); -public slots: +public Q_SLOTS: void play(); - void stop(); - -private slots: - void repeat(); private: Q_DISABLE_COPY(QSoundEffect) - - int m_loopCount; - int m_vol; - bool m_muted; - int m_runningCount; - QSoundEffectPrivate* d; }; diff --git a/src/multimedia/effects/qsoundeffect_pulse_p.cpp b/src/multimedia/effects/qsoundeffect_pulse_p.cpp index d99bf4b..aa5a14d 100644 --- a/src/multimedia/effects/qsoundeffect_pulse_p.cpp +++ b/src/multimedia/effects/qsoundeffect_pulse_p.cpp @@ -55,10 +55,6 @@ #include #include -#include "qmediacontent.h" -#include "qmediaplayer.h" -#include "qsoundeffect_p.h" - #include "wavedecoder_p.h" #include "qsoundeffect_pulse_p.h" @@ -240,11 +236,12 @@ QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): QObject(parent), m_muted(false), m_playQueued(false), - m_vol(100), + m_sampleLoaded(false), + m_volume(100), m_duration(0), m_dataUploaded(0), - m_state(QMediaPlayer::StoppedState), - m_status(QMediaPlayer::NoMedia), + m_loopCount(1), + m_runningCount(0), m_reply(0), m_stream(0), m_networkAccessManager(0) @@ -257,76 +254,53 @@ QSoundEffectPrivate::~QSoundEffectPrivate() unloadSample(); } -qint64 QSoundEffectPrivate::duration() const +QUrl QSoundEffectPrivate::source() const { - return m_duration; + return m_source; } -int QSoundEffectPrivate::volume() const +void QSoundEffectPrivate::setSource(const QUrl &url) { - return m_vol; -} + if (url.isEmpty()) { + m_source = QUrl(); + unloadSample(); + return; + } -bool QSoundEffectPrivate::isMuted() const -{ - return m_muted; -} + m_source = url; -QMediaContent QSoundEffectPrivate::media() const -{ - return m_media; + if (m_networkAccessManager == 0) + m_networkAccessManager = new QNetworkAccessManager(this); + + m_stream = m_networkAccessManager->get(QNetworkRequest(m_source)); + + unloadSample(); + loadSample(); } -QMediaPlayer::State QSoundEffectPrivate::state() const +int QSoundEffectPrivate::loopCount() const { - return m_state; + return m_loopCount; } -QMediaPlayer::MediaStatus QSoundEffectPrivate::mediaStatus() const +void QSoundEffectPrivate::setLoopCount(int loopCount) { - return m_status; + m_loopCount = loopCount; } -void QSoundEffectPrivate::play() +int QSoundEffectPrivate::volume() const { - if (m_status == QMediaPlayer::LoadingMedia) { - m_playQueued = true; - return; - } - - if (m_status != QMediaPlayer::BufferedMedia || - m_state == QMediaPlayer::PlayingState) - return; - - pa_volume_t m_vol = PA_VOLUME_NORM; - - daemon()->lock(); -#if defined(Q_WS_MAEMO_5) - m_vol = PA_VOLUME_NORM/100*((daemon()->volume()+m_vol)/2); -#endif - pa_operation_unref( - pa_context_play_sample(daemon()->context(), - m_name.constData(), - 0, - m_vol, - play_callback, - this) - ); - daemon()->unlock(); - - m_playbackTime.start(); - - emit stateChanged(m_state = QMediaPlayer::PlayingState); + return m_volume; } -void QSoundEffectPrivate::stop() +void QSoundEffectPrivate::setVolume(int volume) { - emit stateChanged(m_state = QMediaPlayer::StoppedState); + m_volume = volume; } -void QSoundEffectPrivate::setVolume(int volume) +bool QSoundEffectPrivate::isMuted() const { - m_vol = volume; + return m_muted; } void QSoundEffectPrivate::setMuted(bool muted) @@ -334,34 +308,28 @@ void QSoundEffectPrivate::setMuted(bool muted) m_muted = muted; } -void QSoundEffectPrivate::setMedia(const QMediaContent &media) +qint64 QSoundEffectPrivate::duration() const { - if (media.isNull()) { - m_media = QMediaContent(); - unloadSample(); + return m_duration; +} + +void QSoundEffectPrivate::play() +{ + if (!m_sampleLoaded) { + m_playQueued = true; return; } - if (m_media == media) - return; - m_media = media; - if (m_networkAccessManager == 0) - m_networkAccessManager = new QNetworkAccessManager(this); - - m_stream = m_networkAccessManager->get(QNetworkRequest(m_media.canonicalUrl())); - - unloadSample(); - loadSample(); + m_runningCount += m_loopCount; - emit mediaChanged(m_media); + playSample(); } void QSoundEffectPrivate::decoderReady() { if (m_waveDecoder->size() >= PA_SCACHE_ENTRY_SIZE_MAX) { - m_status = QMediaPlayer::InvalidMedia; - emit mediaStatusChanged(m_status); - qWarning("QtPulseAudio: attempting to load to large a sample"); + m_waveDecoder->deleteLater(); + qWarning("QSoundEffect(pulseaudio): Attempting to load to large a sample"); return; } @@ -380,52 +348,65 @@ void QSoundEffectPrivate::decoderReady() void QSoundEffectPrivate::decoderError() { - emit mediaStatusChanged(m_status = QMediaPlayer::InvalidMedia); + qWarning("QSoundEffect(pulseaudio): Error decoding source"); } void QSoundEffectPrivate::checkPlayTime() { int elapsed = m_playbackTime.elapsed(); - if (elapsed >= m_duration) { - m_state = QMediaPlayer::StoppedState; - emit stateChanged(m_state); - } - else + if (elapsed < m_duration) startTimer(m_duration - elapsed); } void QSoundEffectPrivate::loadSample() { + m_sampleLoaded = false; + m_dataUploaded = 0; m_waveDecoder = new WaveDecoder(m_stream); connect(m_waveDecoder, SIGNAL(formatKnown()), SLOT(decoderReady())); connect(m_waveDecoder, SIGNAL(invalidFormat()), SLOT(decoderError())); - - m_status = QMediaPlayer::LoadingMedia; - emit mediaStatusChanged(m_status); } void QSoundEffectPrivate::unloadSample() { - if (m_status != QMediaPlayer::BufferedMedia) + if (!m_sampleLoaded) return; - m_status = QMediaPlayer::NoMedia; - daemon()->lock(); pa_context_remove_sample(daemon()->context(), m_name.constData(), NULL, NULL); daemon()->unlock(); m_duration = 0; m_dataUploaded = 0; + m_sampleLoaded = false; +} + +void QSoundEffectPrivate::playSample() +{ + pa_volume_t volume = PA_VOLUME_NORM; + + daemon()->lock(); +#ifdef Q_WS_MAEMO_5 + volume = PA_VOLUME_NORM / 100 * ((daemon()->volume() + m_volume) / 2); +#endif + pa_operation_unref( + pa_context_play_sample(daemon()->context(), + m_name.constData(), + 0, + volume, + play_callback, + this) + ); + daemon()->unlock(); + + m_playbackTime.start(); } void QSoundEffectPrivate::timerEvent(QTimerEvent *event) { - if (m_state == QMediaPlayer::PlayingState) { - m_state = QMediaPlayer::StoppedState; - emit stateChanged(m_state); - } + if (m_runningCount > 0) + playSample(); killTimer(event->timerId()); } @@ -456,15 +437,12 @@ void QSoundEffectPrivate::stream_write_callback(pa_stream *s, size_t length, voi pa_stream_finish_upload(s); self->m_duration = self->m_waveDecoder->duration(); - emit self->durationChanged(self->m_duration); - - self->m_status = QMediaPlayer::BufferedMedia; - emit self->mediaStatusChanged(self->m_status); + emit self->durationChanged(); self->m_waveDecoder->deleteLater(); - if (!self->m_media.isNull()) - self->m_stream->deleteLater(); + self->m_stream->deleteLater(); + self->m_sampleLoaded = true; if (self->m_playQueued) { self->m_playQueued = false; QMetaObject::invokeMethod(self, "play"); @@ -474,8 +452,6 @@ void QSoundEffectPrivate::stream_write_callback(pa_stream *s, size_t length, voi void QSoundEffectPrivate::stream_state_callback(pa_stream *s, void *userdata) { - QSoundEffectPrivate *self = reinterpret_cast(userdata); - switch (pa_stream_get_state(s)) { case PA_STREAM_CREATING: case PA_STREAM_READY: @@ -484,8 +460,7 @@ void QSoundEffectPrivate::stream_state_callback(pa_stream *s, void *userdata) case PA_STREAM_FAILED: default: - self->m_status = QMediaPlayer::InvalidMedia; - emit self->mediaStatusChanged(self->m_status); + qWarning("QSoundEffect(pulseaudio): Error in pulse audio stream"); break; } } @@ -496,14 +471,10 @@ void QSoundEffectPrivate::play_callback(pa_context *c, int success, void *userda QSoundEffectPrivate *self = reinterpret_cast(userdata); - if (success == 1) + if (success == 1) { + self->m_runningCount--; QMetaObject::invokeMethod(self, "checkPlayTime", Qt::QueuedConnection); - else { - self->m_state = QMediaPlayer::StoppedState; - emit self->stateChanged(self->m_state); } } QT_END_NAMESPACE - - diff --git a/src/multimedia/effects/qsoundeffect_pulse_p.h b/src/multimedia/effects/qsoundeffect_pulse_p.h index 247f8a3..7353e4f 100644 --- a/src/multimedia/effects/qsoundeffect_pulse_p.h +++ b/src/multimedia/effects/qsoundeffect_pulse_p.h @@ -77,30 +77,25 @@ public: explicit QSoundEffectPrivate(QObject* parent); ~QSoundEffectPrivate(); - qint64 duration() const; + QUrl source() const; + void setSource(const QUrl &url); + int loopCount() const; + void setLoopCount(int loopCount); int volume() const; + void setVolume(int volume); bool isMuted() const; - QMediaContent media() const; - QMediaPlayer::State state() const; - QMediaPlayer::MediaStatus mediaStatus() const; + void setMuted(bool muted); + qint64 duration() const; public Q_SLOTS: void play(); - void stop(); - void setVolume(int volume); - void setMuted(bool muted); - void setMedia(const QMediaContent &media); Q_SIGNALS: - void mediaChanged(const QMediaContent &media); - void mediaStatusChanged(QMediaPlayer::MediaStatus status); - void stateChanged(QMediaPlayer::State newState); - void durationChanged(qint64 duration); - void volumeChanged(int volume); - void mutedChanged(bool muted); - void error(QMediaPlayer::Error error); - -private slots: + void durationChanged(); + void volumeChanged(); + void mutedChanged(); + +private Q_SLOTS: void decoderReady(); void decoderError(); void checkPlayTime(); @@ -108,6 +103,7 @@ private slots: private: void loadSample(); void unloadSample(); + void playSample(); void timerEvent(QTimerEvent *event); @@ -117,14 +113,15 @@ private: bool m_muted; bool m_playQueued; - int m_vol; + bool m_sampleLoaded; + int m_volume; int m_duration; int m_dataUploaded; + int m_loopCount; + int m_runningCount; + QUrl m_source; QTime m_playbackTime; - QMediaPlayer::State m_state; - QMediaPlayer::MediaStatus m_status; QByteArray m_name; - QMediaContent m_media; QNetworkReply *m_reply; WaveDecoder *m_waveDecoder; QIODevice *m_stream; diff --git a/src/multimedia/effects/qsoundeffect_qmedia_p.cpp b/src/multimedia/effects/qsoundeffect_qmedia_p.cpp index 48fb257..e670a36 100644 --- a/src/multimedia/effects/qsoundeffect_qmedia_p.cpp +++ b/src/multimedia/effects/qsoundeffect_qmedia_p.cpp @@ -50,117 +50,90 @@ // We mean it. // -#include +#include "qsoundeffect_qmedia_p.h" -#include "qmediacontent.h" -#include "qmediaplayer.h" +#include -#include "qsoundeffect_p.h" -#include "qsoundeffect_qmedia_p.h" +#include +#include QT_BEGIN_NAMESPACE QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): QObject(parent), - m_muted(false), - m_vol(100), + m_loopCount(1), + m_runningCount(0), m_player(0) { + m_player = new QMediaPlayer(this, QMediaPlayer::LowLatency); + connect(m_player, SIGNAL(volumeChanged(int)), SIGNAL(volumeChanged())); + connect(m_player, SIGNAL(mutedChanged(bool)), SIGNAL(mutedChanged())); + connect(m_player, SIGNAL(durationChanged(qint64)), SIGNAL(durationChanged())); + connect(m_player, SIGNAL(stateChanged(QMediaPlayer::State)), SLOT(stateChanged(QMediaPlayer::State))); } QSoundEffectPrivate::~QSoundEffectPrivate() { - if (m_player) delete m_player; } -qint64 QSoundEffectPrivate::duration() const +QUrl QSoundEffectPrivate::source() const { - if (m_player) return m_player->duration(); - - return 0; + return m_player->media().canonicalUrl(); } -int QSoundEffectPrivate::volume() const +void QSoundEffectPrivate::setSource(const QUrl &url) { - if (m_player) return m_player->volume(); - - return m_vol; + m_player->setMedia(url); } -bool QSoundEffectPrivate::isMuted() const +int QSoundEffectPrivate::loopCount() const { - if (m_player) return m_player->isMuted(); - - return m_muted; + return m_loopCount; } -QMediaContent QSoundEffectPrivate::media() const +void QSoundEffectPrivate::setLoopCount(int loopCount) { - if (m_player) return m_player->media(); - - return QMediaContent(); + m_loopCount = loopCount; } -QMediaPlayer::State QSoundEffectPrivate::state() const +int QSoundEffectPrivate::volume() const { - if (m_player) return m_player->state(); - - return QMediaPlayer::StoppedState; + return m_player->volume(); } -QMediaPlayer::MediaStatus QSoundEffectPrivate::mediaStatus() const +void QSoundEffectPrivate::setVolume(int volume) { - if (m_player) return m_player->mediaStatus(); - - return QMediaPlayer::UnknownMediaStatus; + m_player->setVolume(volume); } -void QSoundEffectPrivate::play() +bool QSoundEffectPrivate::isMuted() const { - if (m_player && !m_player->isMuted()) - m_player->play(); + return m_player->isMuted(); } -void QSoundEffectPrivate::stop() +void QSoundEffectPrivate::setMuted(bool muted) { - if (m_player) - m_player->stop(); + m_player->setMuted(muted); } -void QSoundEffectPrivate::setVolume(int volume) +int QSoundEffectPrivate::duration() const { - m_vol = volume; - - if (m_player) - m_player->setVolume(volume); + return m_player->duration(); } -void QSoundEffectPrivate::setMuted(bool muted) +void QSoundEffectPrivate::play() { - m_muted = muted; - - if (m_player) - m_player->setMuted(muted); + m_runningCount += m_loopCount; + m_player->play(); } -void QSoundEffectPrivate::setMedia(const QMediaContent &media) +void QSoundEffectPrivate::stateChanged(QMediaPlayer::State state) { - if (media.isNull()) - return; - - if (m_player == 0) { - m_player = new QMediaPlayer(this, QMediaPlayer::LowLatency); - m_player->setVolume(m_vol); - m_player->setMuted(m_muted); - - connect(m_player, SIGNAL(volumeChanged(int)), SIGNAL(volumeChanged(int))); - connect(m_player, SIGNAL(mutedChanged(bool)), SIGNAL(mutedChanged(bool))); - connect(m_player, SIGNAL(durationChanged(qint64)), SIGNAL(durationChanged(qint64))); - connect(m_player, SIGNAL(stateChanged(QMediaPlayer::State)), SIGNAL(stateChanged(QMediaPlayer::State))); + if (state == QMediaPlayer::StoppedState) { + if (--m_runningCount > 0) + m_player->play(); } - - m_player->setMedia(media.canonicalUrl()); } QT_END_NAMESPACE diff --git a/src/multimedia/effects/qsoundeffect_qmedia_p.h b/src/multimedia/effects/qsoundeffect_qmedia_p.h index 8267f79..73682ea 100644 --- a/src/multimedia/effects/qsoundeffect_qmedia_p.h +++ b/src/multimedia/effects/qsoundeffect_qmedia_p.h @@ -57,14 +57,12 @@ #include #include #include -#include "qsoundeffect_p.h" QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -class WaveDecoder; class QSoundEffectPrivate : public QObject { @@ -73,32 +71,30 @@ public: explicit QSoundEffectPrivate(QObject* parent); ~QSoundEffectPrivate(); - qint64 duration() const; + QUrl source() const; + void setSource(const QUrl &url); + int loopCount() const; + void setLoopCount(int loopCount); int volume() const; + void setVolume(int volume); bool isMuted() const; - QMediaContent media() const; - QMediaPlayer::State state() const; - QMediaPlayer::MediaStatus mediaStatus() const; + void setMuted(bool muted); + int duration() const; public Q_SLOTS: void play(); - void stop(); - void setVolume(int volume); - void setMuted(bool muted); - void setMedia(const QMediaContent &media); Q_SIGNALS: - void mediaChanged(const QMediaContent &media); - void mediaStatusChanged(QMediaPlayer::MediaStatus status); - void stateChanged(QMediaPlayer::State newState); - void durationChanged(qint64 duration); - void volumeChanged(int volume); - void mutedChanged(bool muted); - void error(QMediaPlayer::Error error); + void durationChanged(); + void volumeChanged(); + void mutedChanged(); + +private Q_SLOTS: + void stateChanged(QMediaPlayer::State); private: - bool m_muted; - int m_vol; + int m_loopCount; + int m_runningCount; QMediaPlayer *m_player; }; diff --git a/src/multimedia/effects/qsoundeffect_qsound_p.cpp b/src/multimedia/effects/qsoundeffect_qsound_p.cpp index df160a9..e6e889e 100644 --- a/src/multimedia/effects/qsoundeffect_qsound_p.cpp +++ b/src/multimedia/effects/qsoundeffect_qsound_p.cpp @@ -50,102 +50,72 @@ // We mean it. // +#include "qsoundeffect_qsound_p.h" + #include -#include -#include #include -#include -#include -#include "qmediacontent.h" -#include "qmediaplayer.h" -#include "qsoundeffect_p.h" - -#include "wavedecoder_p.h" - -#include "qsoundeffect_qsound_p.h" QT_BEGIN_NAMESPACE QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): QObject(parent), - m_queued(false), m_muted(false), - m_state(QMediaPlayer::StoppedState), - m_status(QMediaPlayer::NoMedia), - m_file(0), + m_loopCount(1), + m_volume(100), m_sound(0) { - m_timer = new QTimer(this); - connect(m_timer,SIGNAL(timeout()),SLOT(checkPlayTime())); - m_media = QMediaContent(); } QSoundEffectPrivate::~QSoundEffectPrivate() { - if (m_sound) delete m_sound; - if (m_waveDecoder) delete m_waveDecoder; - m_file->close(); } -qint64 QSoundEffectPrivate::duration() const +QUrl QSoundEffectPrivate::source() const { - if (m_waveDecoder) - return m_waveDecoder->size(); - - return 0; + return m_source; } -int QSoundEffectPrivate::volume() const +void QSoundEffectPrivate::setSource(const QUrl &url) { - return 100; -} + if (url.isEmpty() || url.scheme() != QLatin1String("file")) { + m_source = QUrl(); + return; + } -bool QSoundEffectPrivate::isMuted() const -{ - return m_muted; -} + if (m_sound != 0) + delete m_sound; -QMediaContent QSoundEffectPrivate::media() const -{ - return m_media; + m_source = url; + m_sound = new QSound(m_source.toLocalFile(), this); + m_sound->setLoops(m_loopCount); } -QMediaPlayer::State QSoundEffectPrivate::state() const +int QSoundEffectPrivate::loopCount() const { - return m_state; + return m_loopCount; } -QMediaPlayer::MediaStatus QSoundEffectPrivate::mediaStatus() const +void QSoundEffectPrivate::setLoopCount(int lc) { - return m_status; + m_loopCount = lc; + if (m_sound) + m_sound->setLoops(lc); } -void QSoundEffectPrivate::play() +int QSoundEffectPrivate::volume() const { - if (m_sound && !m_muted) { - m_queued = false; - m_timer->start(20); - m_playbackTime.start(); - m_sound->play(); - emit stateChanged(m_state = QMediaPlayer::PlayingState); - } else if (m_status == QMediaPlayer::LoadingMedia) - m_queued = true; + return m_volume; } -void QSoundEffectPrivate::stop() +void QSoundEffectPrivate::setVolume(int v) { - m_timer->stop(); - - if (m_sound) { - m_sound->stop(); - emit stateChanged(m_state = QMediaPlayer::StoppedState); - } + m_volume = v; } -void QSoundEffectPrivate::setVolume(int volume) +bool QSoundEffectPrivate::isMuted() const { - Q_UNUSED(volume) + return m_muted; } void QSoundEffectPrivate::setMuted(bool muted) @@ -153,73 +123,14 @@ void QSoundEffectPrivate::setMuted(bool muted) m_muted = muted; } -void QSoundEffectPrivate::setMedia(const QMediaContent &media) -{ - m_queued = false; - - if (media.isNull() || media.canonicalUrl().scheme() != QLatin1String("file")) { - m_media = QMediaContent(); - return; - } - if (m_media == media) - return; - - m_media = media; - m_file = new QFile(m_media.canonicalUrl().toLocalFile()); - m_file->open(QIODevice::ReadOnly|QIODevice::Unbuffered); - - unloadSample(); - loadSample(); - - emit mediaChanged(m_media); -} - -void QSoundEffectPrivate::decoderReady() -{ - m_file->close(); - m_sound = new QSound(m_media.canonicalUrl().toLocalFile()); - emit mediaStatusChanged(m_status = QMediaPlayer::LoadedMedia); - - if (m_queued) - play(); -} - -void QSoundEffectPrivate::decoderError() -{ - m_file->close(); - emit mediaStatusChanged(m_status = QMediaPlayer::InvalidMedia); -} - -void QSoundEffectPrivate::checkPlayTime() +int QSoundEffectPrivate::duration() const { - if (m_sound->isFinished()) { - m_timer->stop(); - m_state = QMediaPlayer::StoppedState; - emit stateChanged(m_state); - } + return 1000; } -void QSoundEffectPrivate::loadSample() -{ - m_waveDecoder = new WaveDecoder(m_file); - connect(m_waveDecoder, SIGNAL(formatKnown()), SLOT(decoderReady())); - connect(m_waveDecoder, SIGNAL(invalidFormat()), SLOT(decoderError())); - - m_status = QMediaPlayer::LoadingMedia; - emit mediaStatusChanged(m_status); -} - -void QSoundEffectPrivate::unloadSample() +void QSoundEffectPrivate::play() { - if (m_sound == 0) - return; - - m_status = QMediaPlayer::NoMedia; - - if (m_sound) - delete m_sound; - - m_sound = 0; + m_sound->play(); } QT_END_NAMESPACE diff --git a/src/multimedia/effects/qsoundeffect_qsound_p.h b/src/multimedia/effects/qsoundeffect_qsound_p.h index 45c0888..377c8a7 100644 --- a/src/multimedia/effects/qsoundeffect_qsound_p.h +++ b/src/multimedia/effects/qsoundeffect_qsound_p.h @@ -55,20 +55,14 @@ #include -#include -#include - -#include "qsoundeffect_p.h" +#include QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -class QTimer; class QSound; -class QFile; -class WaveDecoder; class QSoundEffectPrivate : public QObject { @@ -77,49 +71,30 @@ public: explicit QSoundEffectPrivate(QObject* parent); ~QSoundEffectPrivate(); - qint64 duration() const; + QUrl source() const; + void setSource(const QUrl &url); + int loopCount() const; + void setLoopCount(int loopCount); int volume() const; + void setVolume(int volume); bool isMuted() const; - QMediaContent media() const; - QMediaPlayer::State state() const; - QMediaPlayer::MediaStatus mediaStatus() const; + void setMuted(bool muted); + int duration() const; public Q_SLOTS: void play(); - void stop(); - void setVolume(int volume); - void setMuted(bool muted); - void setMedia(const QMediaContent &media); Q_SIGNALS: - void mediaChanged(const QMediaContent &media); - void mediaStatusChanged(QMediaPlayer::MediaStatus status); - void stateChanged(QMediaPlayer::State newState); - void durationChanged(qint64 duration); - void volumeChanged(int volume); - void mutedChanged(bool muted); - void error(QMediaPlayer::Error error); - -private slots: - void decoderReady(); - void decoderError(); - void checkPlayTime(); + void durationChanged(); + void volumeChanged(); + void mutedChanged(); private: - void loadSample(); - void unloadSample(); - - bool m_queued; - bool m_muted; - QTime m_playbackTime; - QMediaPlayer::State m_state; - QMediaPlayer::MediaStatus m_status; - QFile *m_file; - QByteArray m_name; - QMediaContent m_media; - WaveDecoder *m_waveDecoder; + bool m_muted; + int m_loopCount; + int m_volume; QSound *m_sound; - QTimer *m_timer; + QUrl m_source; }; QT_END_NAMESPACE diff --git a/src/multimedia/effects/wavedecoder_p.h b/src/multimedia/effects/wavedecoder_p.h index fa1f77e..c1892bb 100644 --- a/src/multimedia/effects/wavedecoder_p.h +++ b/src/multimedia/effects/wavedecoder_p.h @@ -77,11 +77,11 @@ public: bool isSequential() const; qint64 bytesAvailable() const; -signals: +Q_SIGNALS: void formatKnown(); void invalidFormat(); -private slots: +private Q_SLOTS: void handleData(); private: -- cgit v0.12 From 7a3a25e9a1b7d4925b12297c91b37a2aba03e277 Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Mon, 8 Mar 2010 15:02:54 +1000 Subject: Fix effects.pri. Reviewed-by: Dmytro Poplavskiy --- src/multimedia/effects/effects.pri | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/multimedia/effects/effects.pri b/src/multimedia/effects/effects.pri index ff762e8..be2b696 100644 --- a/src/multimedia/effects/effects.pri +++ b/src/multimedia/effects/effects.pri @@ -1,7 +1,7 @@ -unix { - unix:contains(QT_CONFIG, pulseaudio) { +unix:!mac { + contains(QT_CONFIG, pulseaudio) { DEFINES += QT_MULTIMEDIA_PULSEAUDIO HEADERS += $$PWD/qsoundeffect_pulse_p.h SOURCES += $$PWD/qsoundeffect_pulse_p.cpp -- cgit v0.12 From aa5df3c136a5c01d505d3005790907e1bccc4e26 Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Mon, 8 Mar 2010 15:03:40 +1000 Subject: Remove duration property from QSoundEffect. Reviewed-by: Dmytro Poplavskiy --- src/multimedia/effects/qsoundeffect.cpp | 17 ----------------- src/multimedia/effects/qsoundeffect_p.h | 4 ---- src/multimedia/effects/qsoundeffect_pulse_p.cpp | 6 ------ src/multimedia/effects/qsoundeffect_pulse_p.h | 2 -- src/multimedia/effects/qsoundeffect_qmedia_p.cpp | 6 ------ src/multimedia/effects/qsoundeffect_qmedia_p.h | 2 -- src/multimedia/effects/qsoundeffect_qsound_p.cpp | 5 ----- src/multimedia/effects/qsoundeffect_qsound_p.h | 2 -- 8 files changed, 44 deletions(-) diff --git a/src/multimedia/effects/qsoundeffect.cpp b/src/multimedia/effects/qsoundeffect.cpp index 3ccca6e..f64d9ee 100644 --- a/src/multimedia/effects/qsoundeffect.cpp +++ b/src/multimedia/effects/qsoundeffect.cpp @@ -100,12 +100,6 @@ QT_BEGIN_NAMESPACE */ /*! - \qmlproperty int SoundEffect::duration - - This property holds the duration in milliseconds of the current source audio. -*/ - -/*! \qmlsignal SoundEffect::sourceChanged() This handler is called when the source has changed. @@ -129,11 +123,6 @@ QT_BEGIN_NAMESPACE This handler is called when the mute state has changed. */ -/*! - \qmlsignal SoundEffect::durationChanged() - - This handler is called when the duration has changed. -*/ QSoundEffect::QSoundEffect(QObject *parent) : QObject(parent) @@ -141,7 +130,6 @@ QSoundEffect::QSoundEffect(QObject *parent) : d = new QSoundEffectPrivate(this); connect(d, SIGNAL(volumeChanged()), SIGNAL(volumeChanged())); connect(d, SIGNAL(mutedChanged()), SIGNAL(mutedChanged())); - connect(d, SIGNAL(durationChanged()), SIGNAL(durationChanged())); } QSoundEffect::~QSoundEffect() @@ -206,11 +194,6 @@ void QSoundEffect::setMuted(bool muted) emit mutedChanged(); } -int QSoundEffect::duration() const -{ - return d->duration(); -} - void QSoundEffect::play() { d->play(); diff --git a/src/multimedia/effects/qsoundeffect_p.h b/src/multimedia/effects/qsoundeffect_p.h index 29cb16c..ec6a2f7 100644 --- a/src/multimedia/effects/qsoundeffect_p.h +++ b/src/multimedia/effects/qsoundeffect_p.h @@ -70,7 +70,6 @@ class Q_MULTIMEDIA_EXPORT QSoundEffect : public QObject Q_PROPERTY(int loopCount READ loopCount WRITE setLoopCount NOTIFY loopCountChanged) Q_PROPERTY(int volume READ volume WRITE setVolume NOTIFY volumeChanged) Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) - Q_PROPERTY(int duration READ duration NOTIFY durationChanged) public: explicit QSoundEffect(QObject *parent = 0); @@ -88,14 +87,11 @@ public: bool isMuted() const; void setMuted(bool muted); - int duration() const; - Q_SIGNALS: void sourceChanged(); void loopCountChanged(); void volumeChanged(); void mutedChanged(); - void durationChanged(); public Q_SLOTS: void play(); diff --git a/src/multimedia/effects/qsoundeffect_pulse_p.cpp b/src/multimedia/effects/qsoundeffect_pulse_p.cpp index aa5a14d..c322722 100644 --- a/src/multimedia/effects/qsoundeffect_pulse_p.cpp +++ b/src/multimedia/effects/qsoundeffect_pulse_p.cpp @@ -308,11 +308,6 @@ void QSoundEffectPrivate::setMuted(bool muted) m_muted = muted; } -qint64 QSoundEffectPrivate::duration() const -{ - return m_duration; -} - void QSoundEffectPrivate::play() { if (!m_sampleLoaded) { @@ -437,7 +432,6 @@ void QSoundEffectPrivate::stream_write_callback(pa_stream *s, size_t length, voi pa_stream_finish_upload(s); self->m_duration = self->m_waveDecoder->duration(); - emit self->durationChanged(); self->m_waveDecoder->deleteLater(); self->m_stream->deleteLater(); diff --git a/src/multimedia/effects/qsoundeffect_pulse_p.h b/src/multimedia/effects/qsoundeffect_pulse_p.h index 7353e4f..3aed018 100644 --- a/src/multimedia/effects/qsoundeffect_pulse_p.h +++ b/src/multimedia/effects/qsoundeffect_pulse_p.h @@ -85,13 +85,11 @@ public: void setVolume(int volume); bool isMuted() const; void setMuted(bool muted); - qint64 duration() const; public Q_SLOTS: void play(); Q_SIGNALS: - void durationChanged(); void volumeChanged(); void mutedChanged(); diff --git a/src/multimedia/effects/qsoundeffect_qmedia_p.cpp b/src/multimedia/effects/qsoundeffect_qmedia_p.cpp index e670a36..43ba22f 100644 --- a/src/multimedia/effects/qsoundeffect_qmedia_p.cpp +++ b/src/multimedia/effects/qsoundeffect_qmedia_p.cpp @@ -69,7 +69,6 @@ QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): m_player = new QMediaPlayer(this, QMediaPlayer::LowLatency); connect(m_player, SIGNAL(volumeChanged(int)), SIGNAL(volumeChanged())); connect(m_player, SIGNAL(mutedChanged(bool)), SIGNAL(mutedChanged())); - connect(m_player, SIGNAL(durationChanged(qint64)), SIGNAL(durationChanged())); connect(m_player, SIGNAL(stateChanged(QMediaPlayer::State)), SLOT(stateChanged(QMediaPlayer::State))); } @@ -117,11 +116,6 @@ void QSoundEffectPrivate::setMuted(bool muted) m_player->setMuted(muted); } -int QSoundEffectPrivate::duration() const -{ - return m_player->duration(); -} - void QSoundEffectPrivate::play() { m_runningCount += m_loopCount; diff --git a/src/multimedia/effects/qsoundeffect_qmedia_p.h b/src/multimedia/effects/qsoundeffect_qmedia_p.h index 73682ea..6ad9d79 100644 --- a/src/multimedia/effects/qsoundeffect_qmedia_p.h +++ b/src/multimedia/effects/qsoundeffect_qmedia_p.h @@ -79,13 +79,11 @@ public: void setVolume(int volume); bool isMuted() const; void setMuted(bool muted); - int duration() const; public Q_SLOTS: void play(); Q_SIGNALS: - void durationChanged(); void volumeChanged(); void mutedChanged(); diff --git a/src/multimedia/effects/qsoundeffect_qsound_p.cpp b/src/multimedia/effects/qsoundeffect_qsound_p.cpp index e6e889e..ff30f67 100644 --- a/src/multimedia/effects/qsoundeffect_qsound_p.cpp +++ b/src/multimedia/effects/qsoundeffect_qsound_p.cpp @@ -123,11 +123,6 @@ void QSoundEffectPrivate::setMuted(bool muted) m_muted = muted; } -int QSoundEffectPrivate::duration() const -{ - return 1000; -} - void QSoundEffectPrivate::play() { m_sound->play(); diff --git a/src/multimedia/effects/qsoundeffect_qsound_p.h b/src/multimedia/effects/qsoundeffect_qsound_p.h index 377c8a7..6fb3cfa 100644 --- a/src/multimedia/effects/qsoundeffect_qsound_p.h +++ b/src/multimedia/effects/qsoundeffect_qsound_p.h @@ -79,13 +79,11 @@ public: void setVolume(int volume); bool isMuted() const; void setMuted(bool muted); - int duration() const; public Q_SLOTS: void play(); Q_SIGNALS: - void durationChanged(); void volumeChanged(); void mutedChanged(); -- cgit v0.12 From ac764b3d0e7b7b591481da5f4da821bc27400817 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Mon, 8 Mar 2010 15:56:31 +1000 Subject: Make the animation property of Behavior deferred. --- src/declarative/util/qdeclarativebehavior.cpp | 1 + src/declarative/util/qdeclarativebehavior_p.h | 1 + 2 files changed, 2 insertions(+) diff --git a/src/declarative/util/qdeclarativebehavior.cpp b/src/declarative/util/qdeclarativebehavior.cpp index dea2c02..d90ca33 100644 --- a/src/declarative/util/qdeclarativebehavior.cpp +++ b/src/declarative/util/qdeclarativebehavior.cpp @@ -157,6 +157,7 @@ void QDeclarativeBehavior::setEnabled(bool enabled) void QDeclarativeBehavior::write(const QVariant &value) { Q_D(QDeclarativeBehavior); + qmlExecuteDeferred(this); if (!d->animation || !d->enabled) { QDeclarativePropertyPrivate::write(d->property, value, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); return; diff --git a/src/declarative/util/qdeclarativebehavior_p.h b/src/declarative/util/qdeclarativebehavior_p.h index a633b55..ff58210 100644 --- a/src/declarative/util/qdeclarativebehavior_p.h +++ b/src/declarative/util/qdeclarativebehavior_p.h @@ -65,6 +65,7 @@ class Q_DECLARATIVE_EXPORT QDeclarativeBehavior : public QObject, public QDeclar Q_CLASSINFO("DefaultProperty", "animation") Q_PROPERTY(QDeclarativeAbstractAnimation *animation READ animation WRITE setAnimation) Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) + Q_CLASSINFO("DeferredPropertyNames", "animation") public: QDeclarativeBehavior(QObject *parent=0); -- cgit v0.12 From 4bd0dc0b6c07ff288c77f547792a62d5e8ad7356 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Mon, 8 Mar 2010 16:54:11 +1000 Subject: fix QDeclarativeItem sceneEvent handling --- src/declarative/graphicsitems/qdeclarativeitem.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index b0a7570..59dd43d 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -2217,7 +2217,7 @@ void QDeclarativeItem::setKeepMouseGrab(bool keep) \qmlmethod object Item::mapFromItem(Item item, int x, int y) Maps the point (\a x, \a y), which is in \a item's coordinate system, to - this item's coordinate system, and returns an object with \c x and \c y + this item's coordinate system, and returns an object with \c x and \c y properties matching the mapped cooordinate. If \a item is a \c null value, this maps the point from the coordinate @@ -2576,9 +2576,9 @@ bool QDeclarativeItem::sceneEvent(QEvent *event) !(k->modifiers() & (Qt::ControlModifier | Qt::AltModifier))) { keyPressEvent(static_cast(event)); if (!event->isAccepted()) - QGraphicsItem::sceneEvent(event); + return QGraphicsItem::sceneEvent(event); } else { - QGraphicsItem::sceneEvent(event); + return QGraphicsItem::sceneEvent(event); } } else { bool rv = QGraphicsItem::sceneEvent(event); -- cgit v0.12 From 4d8214afabd5e093c02b0de0e72f24139af6660f Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Mon, 8 Mar 2010 17:07:05 +1000 Subject: Remove expect fail from ListView currentIndex test --- .../qdeclarativelistview/tst_qdeclarativelistview.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp index 1df4448..75fbbf8 100644 --- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp +++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp @@ -1028,13 +1028,17 @@ void tst_QDeclarativeListView::currentIndex() QCOMPARE(listview->contentY(), 0.0); // Test keys - qApp->setActiveWindow(canvas); canvas->show(); - canvas->setFocus(); + qApp->setActiveWindow(canvas); +#ifdef Q_WS_X11 + // to be safe and avoid failing setFocus with window managers + qt_x11_wait_for_window_manager(canvas); +#endif + QVERIFY(canvas->hasFocus()); + QVERIFY(canvas->scene()->hasFocus()); qApp->processEvents(); QTest::keyClick(canvas, Qt::Key_Down); - QEXPECT_FAIL("", "QTBUG-8475", Abort); QCOMPARE(listview->currentIndex(), 1); QTest::keyClick(canvas, Qt::Key_Up); -- cgit v0.12 From 9b06c2dd119f3c4442f7b26756728bb9c7fefb4a Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Mon, 8 Mar 2010 17:17:15 +1000 Subject: clearFocus() before setParentItem(0) on an item with focus. --- src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp | 2 ++ .../qdeclarativegridview/tst_qdeclarativegridview.cpp | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp index 55f1c89..6bad4da 100644 --- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp +++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp @@ -927,6 +927,8 @@ QDeclarativeVisualDataModel::ReleaseFlags QDeclarativeVisualDataModel::release(Q if (inPackage) { emit destroyingPackage(qobject_cast(obj)); } else { + if (item->hasFocus()) + item->clearFocus(); item->setOpacity(0.0); static_cast(item)->setParentItem(0); } diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp index 7ade309..aeefea1 100644 --- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp +++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp @@ -659,9 +659,14 @@ void tst_QDeclarativeGridView::currentIndex() QCOMPARE(gridview->contentY(), 0.0); // Test keys - qApp->setActiveWindow(canvas); canvas->show(); - canvas->setFocus(); + qApp->setActiveWindow(canvas); +#ifdef Q_WS_X11 + // to be safe and avoid failing setFocus with window managers + qt_x11_wait_for_window_manager(canvas); +#endif + QVERIFY(canvas->hasFocus()); + QVERIFY(canvas->scene()->hasFocus()); qApp->processEvents(); QTest::keyClick(canvas, Qt::Key_Down); @@ -672,7 +677,6 @@ void tst_QDeclarativeGridView::currentIndex() gridview->setFlow(QDeclarativeGridView::TopToBottom); - QEXPECT_FAIL("", "QTBUG-8475", Abort); QTest::keyClick(canvas, Qt::Key_Right); QCOMPARE(gridview->currentIndex(), 5); -- cgit v0.12 From af68298d5470aca109e115c7a86dc88f8821e97d Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Mon, 8 Mar 2010 10:04:10 +0100 Subject: Fix build The dependency was wrong, should be src_webkit instead of webkit Reviewed-by: Tobias Hunger --- src/src.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/src.pro b/src/src.pro index 8c21ef7..809a078 100644 --- a/src/src.pro +++ b/src/src.pro @@ -112,7 +112,7 @@ src_declarative.target = sub-declarative 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 - src_imports.depends += webkit + src_imports.depends += src_webkit #exists($$QT_SOURCE_TREE/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro): src_webkit.depends += src_javascriptcore } contains(QT_CONFIG, qt3support): src_plugins.depends += src_qt3support -- cgit v0.12 From d2d519f72433d70c342ed4cf0827a10ab0cdfdad Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Mon, 8 Mar 2010 10:24:49 +0100 Subject: Enable cleanup hooks when creating an EGL surface for a pixmap Reviewed-By: TrustMe --- src/gui/egl/qegl_x11.cpp | 12 +++++++----- src/opengl/qgl_x11egl.cpp | 1 - 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index 8608523..53c4711 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -41,18 +41,19 @@ #include -#include +#include #include -#include -#include +#include +#include +#include #include #include #include #include -#include "qegl_p.h" -#include "qeglcontext_p.h" +#include "QtGui/private/qegl_p.h" +#include "QtGui/private/qeglcontext_p.h" QT_BEGIN_NAMESPACE @@ -408,6 +409,7 @@ EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig config, const QEg (EGLNativePixmapType) x11PixmapData->handle(), surfaceAttribs.properties()); x11PixmapData->gl_surface = (Qt::HANDLE)surf; + QImagePixmapCleanupHooks::enableCleanupHooks(x11PixmapData); return surf; } diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index 5ffecc5..fdcc412 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -42,7 +42,6 @@ #include "qgl.h" #include #include -#include #include #include #include "qgl_egl_p.h" -- cgit v0.12 From de20e4df5f6a212115d10c225f945ab1610319ba Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 8 Mar 2010 10:20:56 +0100 Subject: Mac: compile fix Needed to move the inclusion of qstringbuilder.h after any system headers has been included. Otherwise, strange compile errors occur. Reviewed-by: msorvig --- src/gui/styles/qstylehelper.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gui/styles/qstylehelper.cpp b/src/gui/styles/qstylehelper.cpp index 359e7e1..296c51c 100644 --- a/src/gui/styles/qstylehelper.cpp +++ b/src/gui/styles/qstylehelper.cpp @@ -44,7 +44,6 @@ #include #include #include -#include #include #include #include @@ -55,6 +54,8 @@ #include #endif +#include + QT_BEGIN_NAMESPACE // internal helper. Converts an integer value to an unique string token -- cgit v0.12 From 29ec793147054ea4beb1ad4adeebbbe1fe07b260 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 8 Mar 2010 11:18:43 +0100 Subject: Carbon: usage of menu bars can cause exceptions to be thrown The reason is that a function in the Qt menu bar code assumes that windows on screen are NSWindows (which is true for the cocoa-port). But when using carbon, this will fail. This simple patch will fix this. Reviewed-by: msorvig --- src/gui/widgets/qmenu_mac.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/widgets/qmenu_mac.mm b/src/gui/widgets/qmenu_mac.mm index 2570cb5..43722a1 100644 --- a/src/gui/widgets/qmenu_mac.mm +++ b/src/gui/widgets/qmenu_mac.mm @@ -1935,7 +1935,7 @@ static bool qt_mac_should_disable_menu(QMenuBar *menuBar) if (w->isVisible() && w->windowModality() == Qt::ApplicationModal) { for (int i=0; iisVisible()) { // INVARIANT: we found another visible window // on screen other than our modalWidget. We therefore // disable the menu bar to follow normal modality logic: -- cgit v0.12 From 76615ac642ffbe2730321623c5f298bde6109b11 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Mon, 8 Mar 2010 11:34:50 +0100 Subject: Fix failing autotest. This was probably a bug in the test data. --- tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml b/tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml index 3f00e68..408ad87 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml @@ -10,7 +10,7 @@ Rectangle { width: 100; height: 100 color: Qt.rgba(1,0,0) Behavior on x { - NumberAnimation { objectName: "MyAnim"; target: redRect; property: "y"; to: 300; repeat: true} + NumberAnimation { id: myAnim; objectName: "MyAnim"; target: redRect; property: "y"; to: 300; repeat: true} } } -- cgit v0.12 From 6f17a21647fe50ea79dd902220c1887b893f25b3 Mon Sep 17 00:00:00 2001 From: aavit Date: Mon, 8 Mar 2010 11:57:03 +0100 Subject: Fix crash on Win with 16bit screendepth when copy/pasting images Task-number: QTBUG-4687 Reviewed-by: Trond --- src/gui/kernel/qmime_win.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/kernel/qmime_win.cpp b/src/gui/kernel/qmime_win.cpp index e191d7b..331626c 100644 --- a/src/gui/kernel/qmime_win.cpp +++ b/src/gui/kernel/qmime_win.cpp @@ -948,6 +948,8 @@ bool QWindowsMimeImage::convertFromMime(const FORMATETC &formatetc, const QMimeD QDataStream s(&ba, QIODevice::WriteOnly); s.setByteOrder(QDataStream::LittleEndian);// Intel byte order #### if (cf == CF_DIB) { + if (img.format() > QImage::Format_ARGB32) + img = img.convertToFormat(QImage::Format_RGB32); if (qt_write_dib(s, img)) return setData(ba, pmedium); } else { -- cgit v0.12 From 7c3bb2f35b70605a0b0a535c8cd6090354b09b19 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Fri, 5 Mar 2010 11:13:43 +0100 Subject: Added two missing keys for X11 On X11 XF86XK_LaunchD is mapped to Qt::Key_LaunchF, however x11 keys LaunchE and LaunchF were not mapped to anything. Reviewed-by: Marius Storm-Olsen --- src/corelib/global/qnamespace.h | 3 +++ src/corelib/global/qnamespace.qdoc | 2 ++ src/gui/kernel/qkeymapper_x11.cpp | 2 ++ 3 files changed, 7 insertions(+) diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index f7aea36..89a0c0b 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -1059,6 +1059,9 @@ public: Key_Suspend = 0x0100010c, Key_ContrastAdjust = 0x0100010d, + Key_LaunchG = 0x0100010e, + Key_LaunchH = 0x0100010f, + Key_MediaLast = 0x0100ffff, // Keypad navigation keys diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index 74144b0..76541ca 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -1639,6 +1639,8 @@ \value Key_LaunchD On X11 this key is mapped to XF86XK_LaunchB key for legacy reasons. \value Key_LaunchE On X11 this key is mapped to XF86XK_LaunchC key for legacy reasons. \value Key_LaunchF On X11 this key is mapped to XF86XK_LaunchD key for legacy reasons. + \value Key_LaunchG On X11 this key is mapped to XF86XK_LaunchE key for legacy reasons. + \value Key_LaunchH On X11 this key is mapped to XF86XK_LaunchF key for legacy reasons. \value Key_MonBrightnessUp \value Key_MonBrightnessDown \value Key_KeyboardLightOnOff diff --git a/src/gui/kernel/qkeymapper_x11.cpp b/src/gui/kernel/qkeymapper_x11.cpp index b32b626..d6d1042 100644 --- a/src/gui/kernel/qkeymapper_x11.cpp +++ b/src/gui/kernel/qkeymapper_x11.cpp @@ -1186,6 +1186,8 @@ static const unsigned int KeyTbl[] = { XF86XK_LaunchB, Qt::Key_LaunchD, XF86XK_LaunchC, Qt::Key_LaunchE, XF86XK_LaunchD, Qt::Key_LaunchF, + XF86XK_LaunchE, Qt::Key_LaunchG, + XF86XK_LaunchF, Qt::Key_LaunchH, // Qtopia keys QTOPIAXK_Select, Qt::Key_Select, -- cgit v0.12 From 7695e48ed3ff7e2e1157bcdcb27188532dc75d20 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Mon, 8 Mar 2010 12:22:47 +0100 Subject: Fixed mouse wheel handling in scrollareas. When handling wheel events in the scrollbar we should ignore the event by default, so that if we cannot scroll it gets propagated (like in QAbstractSlider). Task-number: QTBUG-8325 Reviewed-by: Richard Moe Gustavsen --- src/gui/widgets/qscrollbar.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/widgets/qscrollbar.cpp b/src/gui/widgets/qscrollbar.cpp index 4eff260..c0eeb2f 100644 --- a/src/gui/widgets/qscrollbar.cpp +++ b/src/gui/widgets/qscrollbar.cpp @@ -523,6 +523,7 @@ bool QScrollBar::event(QEvent *event) break; #ifndef QT_NO_WHEELEVENT case QEvent::Wheel: { + event->ignore(); // override wheel event without adding virtual function override QWheelEvent *ev = static_cast(event); int delta = ev->delta(); -- cgit v0.12 From f471b125c04a559c6e76bb69b2875bddf01ed2f6 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Mon, 8 Mar 2010 12:49:01 +0100 Subject: qdoc: Added some debug output to track down a crash The crash doesn't happen on my OS X 10.4. --- tools/qdoc3/node.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp index 5415559..1dec17e 100644 --- a/tools/qdoc3/node.cpp +++ b/tools/qdoc3/node.cpp @@ -1305,8 +1305,8 @@ QString QmlClassNode::fileBase() const */ void QmlClassNode::addInheritedBy(const QString& base, Node* sub) { - //qDebug() << "QmlClassNode::addInheritedBy(): insert" << base << sub->name(); inheritedBy.insert(base,sub); + qDebug() << "QmlClassNode::addInheritedBy(): insert" << base << sub->name() << inheritedBy.size(); } /*! @@ -1318,7 +1318,7 @@ void QmlClassNode::subclasses(const QString& base, NodeList& subs) if (inheritedBy.count(base) > 0) { subs = inheritedBy.values(base); qDebug() << "QmlClassNode::subclasses():" << inheritedBy.count(base) << base - << "subs:" << subs.size(); + << "subs:" << subs.size() << "total size:" << inheritedBy.size(); } } -- cgit v0.12 From d6e302a1a9bb05f000709830d865441ca7ab8c45 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Mon, 8 Mar 2010 12:47:55 +0100 Subject: Fix build on Maemo X11 Reviewed-By: Tobias Hunger --- src/src.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/src.pro b/src/src.pro index 8c21ef7..403ffe1 100644 --- a/src/src.pro +++ b/src/src.pro @@ -112,7 +112,7 @@ src_declarative.target = sub-declarative 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 - src_imports.depends += webkit + src_imports.depends += src_webkit #exists($$QT_SOURCE_TREE/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro): src_webkit.depends += src_javascriptcore } contains(QT_CONFIG, qt3support): src_plugins.depends += src_qt3support -- cgit v0.12 From 9c44d272a924f4458a3f18ac13fd2e480042d481 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Mon, 8 Mar 2010 14:14:03 +0100 Subject: qdoc: Clear a static multimap after each qdocconf file. Task: QTBUG-8804 --- tools/qdoc3/generator.cpp | 1 + tools/qdoc3/node.cpp | 9 +++++++++ tools/qdoc3/node.h | 1 + 3 files changed, 11 insertions(+) diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp index c8a39ef..80f7e45 100644 --- a/tools/qdoc3/generator.cpp +++ b/tools/qdoc3/generator.cpp @@ -226,6 +226,7 @@ void Generator::terminate() imageFiles.clear(); imageDirs.clear(); outDir = ""; + QmlClassNode::clear(); } Generator *Generator::generatorForFormat(const QString& format) diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp index 1dec17e..d4e4196 100644 --- a/tools/qdoc3/node.cpp +++ b/tools/qdoc3/node.cpp @@ -1284,6 +1284,15 @@ QmlClassNode::~QmlClassNode() } /*! + Clear the multimap so that subsequent runs don't try to use + nodes from a previous run. + */ +void QmlClassNode::clear() +{ + inheritedBy.clear(); +} + +/*! The base file name for this kind of node has "qml_" prepended to it. diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h index fd39698..1017813 100644 --- a/tools/qdoc3/node.h +++ b/tools/qdoc3/node.h @@ -385,6 +385,7 @@ class QmlClassNode : public FakeNode virtual QString fileBase() const; static void addInheritedBy(const QString& base, Node* sub); static void subclasses(const QString& base, NodeList& subs); + static void clear(); public: static bool qmlOnly; -- cgit v0.12 From 395ebda9bd85b27662799b2b5a6ae465978ced1a Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Mon, 8 Mar 2010 14:54:37 +0100 Subject: Doc: add image for Qt Quick to "What's New" page. --- doc/src/images/quick_screens.png | Bin 0 -> 128730 bytes doc/src/qt4-intro.qdoc | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 doc/src/images/quick_screens.png diff --git a/doc/src/images/quick_screens.png b/doc/src/images/quick_screens.png new file mode 100644 index 0000000..76b25d9 Binary files /dev/null and b/doc/src/images/quick_screens.png differ diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc index c670c51..ba9821a 100644 --- a/doc/src/qt4-intro.qdoc +++ b/doc/src/qt4-intro.qdoc @@ -473,6 +473,8 @@ \section1 Declarative UI development with Qt Quick + \image quick_screens.png + Qt 4.7 introduces Quick, the Qt UI Creation Kit. that enables the creation of dynamic user interfaces, easier and more effective than possible with existing UI technologies. This UI Creation Kit consist of three -- cgit v0.12 From be87fa060360139c64dea6854e7667914db47bf4 Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Mon, 8 Mar 2010 15:17:21 +0100 Subject: Doc: mark methods as internal (as they were in previous releases) --- src/gui/painting/qcolormap.qdoc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/gui/painting/qcolormap.qdoc b/src/gui/painting/qcolormap.qdoc index 56fabf7..22a73fd 100644 --- a/src/gui/painting/qcolormap.qdoc +++ b/src/gui/painting/qcolormap.qdoc @@ -150,3 +150,13 @@ Assigns the given \a colormap to \e this color map and returns a reference to \e this color map. */ + +/*! + \fn void QColormap::initialize() + \internal +*/ + +/*! + \fn void QColormap::cleanup() + \internal +*/ -- cgit v0.12 From 2e8ee73bd681cfe5898b8c054b0cb4df51663c91 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 8 Mar 2010 14:59:56 +0100 Subject: Autotest: Fix failing QTextCodec tests --- src/corelib/codecs/qutfcodec.cpp | 2 +- tests/auto/qtextcodec/tst_qtextcodec.cpp | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp index 233bd8f..f747bf7 100644 --- a/src/corelib/codecs/qutfcodec.cpp +++ b/src/corelib/codecs/qutfcodec.cpp @@ -121,7 +121,7 @@ QByteArray QUtf8::convertFromUnicode(const QChar *uc, int len, QTextCodec::Conve } else { // is it one of the Unicode non-characters? if (isUnicodeNonCharacter(u)) { - *cursor = replacement; + *cursor++ = replacement; ++ch; ++invalid; continue; diff --git a/tests/auto/qtextcodec/tst_qtextcodec.cpp b/tests/auto/qtextcodec/tst_qtextcodec.cpp index aa97e87..86aa38a 100644 --- a/tests/auto/qtextcodec/tst_qtextcodec.cpp +++ b/tests/auto/qtextcodec/tst_qtextcodec.cpp @@ -384,9 +384,12 @@ void tst_QTextCodec::flagCodepointFFFF() const Q_ASSERT(codec); const QByteArray asDecoded(codec->fromUnicode(input)); + QCOMPARE(asDecoded, QByteArray("?")); + + QByteArray ffff("\357\277\277"); QTextCodec::ConverterState state(QTextCodec::ConvertInvalidToNull); - QVERIFY(codec->toUnicode(asDecoded.constData(), asDecoded.length(), &state) == QChar(0)); - QVERIFY(codec->toUnicode(asDecoded) == QChar(0xfffd)); + QVERIFY(codec->toUnicode(ffff.constData(), ffff.length(), &state) == QChar(0)); + QVERIFY(codec->toUnicode(ffff) == QChar(0xfffd)); } void tst_QTextCodec::flagF7808080() const @@ -447,12 +450,11 @@ void tst_QTextCodec::flagEFBFBF() const /* When 0xEFBFBF is preceeded by what seems to be an arbitrary character, * QTextCodec fails to flag it. */ { - QEXPECT_FAIL("", "This is a bug and needs to be fixed.", Continue); QByteArray start("B"); start.append(invalidInput); QTextCodec::ConverterState state(QTextCodec::ConvertInvalidToNull); - QVERIFY(codec->toUnicode(start.constData(), start.length(), &state) == QChar(0)); + QVERIFY(codec->toUnicode(start.constData(), start.length(), &state) == QString::fromLatin1("B\0", 2)); } } @@ -695,15 +697,15 @@ void tst_QTextCodec::utf8Codec_data() str = QChar(QChar::ReplacementCharacter); QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.3.3") << utf8 << str << -1; - // 2.3.4 U+0010FFFF + // 2.3.4 U+0010FFFD utf8.clear(); utf8 += char(0xf4); utf8 += char(0x8f); utf8 += char(0xbf); - utf8 += char(0xbf); + utf8 += char(0xbd); str.clear(); str += QChar(0xdbff); - str += QChar(0xdfff); + str += QChar(0xdffd); QTest::newRow("http://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html 2.3.4") << utf8 << str << -1; // 2.3.5 U+00110000 -- cgit v0.12 From e7673f836c351ea3599a73e1a28a185009fa7a65 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 8 Mar 2010 15:21:06 +0100 Subject: Modify the XML test suite not to use non-characters. The Unicode Consortium specifically says these codepoints may not be used for text interchange. So I'm modifying the XML test suite instead. --- tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml | 2 +- tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml | 2 +- .../qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml | 2 +- tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml | 2 +- .../auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml b/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml index 60479f4..2363b97 100644 --- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml +++ b/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P02/ibm02v01.xml @@ -5,6 +5,6 @@ discrete legal characters for production 02. --> +_20- _D7FF-퟿_6c0f-氏_E000-_FFFD-�_effd-_010000-𐀀_10FFFD-􏿽_08fffd-򏿽 This is a PI target ?> ]> diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml b/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml index 7ac675e..d7f7722 100644 --- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml +++ b/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/ibm66v01.xml @@ -11,6 +11,6 @@ Test all valid Charater references for P66: C C _ 힣 가 豈 � -𐀀 􏿿 +𐀀 􏿽 diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml b/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml index 1b04b6d..ed05e61 100644 --- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml +++ b/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/ibm/valid/P66/out/ibm66v01.xml @@ -1 +1 @@ - Test all valid Charater references for P66: « « Í Í ï ï C C _ 힣 가 豈 � 𐀀 􏿿 \ No newline at end of file + Test all valid Charater references for P66: « « Í Í ï ï C C _ 힣 가 豈 � 𐀀 􏿽 \ No newline at end of file diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml b/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml index 2d80c8f..42ffcb6 100644 --- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml +++ b/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/089.xml @@ -1,5 +1,5 @@ + ]> &e; diff --git a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml b/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml index e01d86e..f5a0484 100644 --- a/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml +++ b/tests/auto/qxmlstream/XML-Test-Suite/xmlconf/xmltest/valid/sa/out/089.xml @@ -1 +1 @@ -𐀀􏿽􏿿 \ No newline at end of file +𐀀􏿽 \ No newline at end of file -- cgit v0.12 From 00e358a2536b5730556f5b1f0538a7d851372664 Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Mon, 8 Mar 2010 15:27:56 +0100 Subject: Doc: mark QEasingCurve support functions as new in 4.7. --- src/corelib/kernel/qvariant.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 07c9e53..f5d7c0d 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -1511,6 +1511,7 @@ QVariant::QVariant(const char *val) */ /*! + \since 4.7 \fn QVariant::QVariant(const QEasingCurve &val) Constructs a new variant with an easing curve value, \a val. @@ -2204,6 +2205,7 @@ QDateTime QVariant::toDateTime() const } /*! + \since 4.7 \fn QEasingCurve QVariant::toEasingCurve() const Returns the variant as a QEasingCurve if the variant has type() \l -- cgit v0.12 From b4519f022e8b715991836894fe97b6338ef7ee2b Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Mon, 8 Mar 2010 15:30:14 +0100 Subject: fix to mainwindow demo the mask was not always correctly updated on the "blueTitleBar". Reviewed-by: gabi --- demos/mainwindow/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demos/mainwindow/mainwindow.cpp b/demos/mainwindow/mainwindow.cpp index 32066d7..3ddb74b 100644 --- a/demos/mainwindow/mainwindow.cpp +++ b/demos/mainwindow/mainwindow.cpp @@ -329,7 +329,7 @@ void MainWindow::setupDockWidgets(const QMap &customSizeHints) BlueTitleBar *titlebar = new BlueTitleBar(swatch); swatch->setTitleBarWidget(titlebar); connect(swatch, SIGNAL(topLevelChanged(bool)), titlebar, SLOT(updateMask())); - connect(swatch, SIGNAL(featuresChanged(QDockWidget::DockWidgetFeatures)), titlebar, SLOT(updateMask())); + connect(swatch, SIGNAL(featuresChanged(QDockWidget::DockWidgetFeatures)), titlebar, SLOT(updateMask()), Qt::QueuedConnection); #ifdef Q_WS_QWS QPalette pal = palette(); -- cgit v0.12 From d54484122b7653ad1a96e7ef361c6250bb666f3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Mon, 8 Mar 2010 12:20:53 +0100 Subject: Added text benchmarks from qtbench to tests/benchmarks Reviewed-by: Gunnar Sletta --- tests/benchmarks/gui/painting/painting.pro | 3 +- .../gui/painting/qtbench/benchmarktests.h | 800 +++++++++++++++++++++ tests/benchmarks/gui/painting/qtbench/qtbench.pro | 6 + .../gui/painting/qtbench/tst_qtbench.cpp | 254 +++++++ 4 files changed, 1062 insertions(+), 1 deletion(-) create mode 100644 tests/benchmarks/gui/painting/qtbench/benchmarktests.h create mode 100644 tests/benchmarks/gui/painting/qtbench/qtbench.pro create mode 100644 tests/benchmarks/gui/painting/qtbench/tst_qtbench.cpp diff --git a/tests/benchmarks/gui/painting/painting.pro b/tests/benchmarks/gui/painting/painting.pro index 2c042b5..76c26c1 100644 --- a/tests/benchmarks/gui/painting/painting.pro +++ b/tests/benchmarks/gui/painting/painting.pro @@ -3,4 +3,5 @@ SUBDIRS = \ qpainter \ qregion \ qtransform \ - qtracebench + qtracebench \ + qtbench diff --git a/tests/benchmarks/gui/painting/qtbench/benchmarktests.h b/tests/benchmarks/gui/painting/qtbench/benchmarktests.h new file mode 100644 index 0000000..8626ae7 --- /dev/null +++ b/tests/benchmarks/gui/painting/qtbench/benchmarktests.h @@ -0,0 +1,800 @@ +#ifndef BENCHMARKTESTS_H +#define BENCHMARKTESTS_H + +#include +#include +#include +#include +#include +#include + +#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) +# include +#endif + +class Benchmark +{ +public: + virtual ~Benchmark() {} + + Benchmark(const QSize &size) + : m_size(size) + { + for (int i=0; i<16; ++i) { + m_colors[i] = QColor::fromRgbF((rand() % 4) / 3.0, + (rand() % 4) / 3.0, + (rand() % 4) / 3.0, + 1); + } + } + + virtual void draw(QPainter *p, const QRect &rect, int iteration) = 0; + virtual QString name() const = 0; + + inline const QSize &size() const + { + return m_size; + } + virtual void begin(QPainter *, int iterations = 1) { Q_UNUSED(iterations); } + virtual void end(QPainter *) { } + + inline const QColor &randomColor(int i) { return m_colors[i % 16]; } + +protected: + QColor m_colors[16]; + QSize m_size; +}; + +class PaintingRectAdjuster +{ +public: + PaintingRectAdjuster() + : m_benchmark(0), + m_bounds(), + m_screen_filled(false) + { + } + + const QRect &newPaintingRect() { + m_rect.translate(m_rect.width(), 0); + + if (m_rect.right() > m_bounds.width()) { + m_rect.moveLeft(m_bounds.left()); + m_rect.translate(0,m_rect.height()); + if (m_rect.bottom() > m_bounds.height()) { + m_screen_filled = true; + m_rect.moveTo(m_bounds.topLeft()); + } + } + return m_rect; + } + + inline bool isScreenFilled() const + { return m_screen_filled; } + + void reset(const QRect &bounds) + { + m_bounds = bounds; + m_rect.moveTo(m_bounds.topLeft()); + m_rect = QRect(m_bounds.topLeft(),m_benchmark->size()); + m_rect.translate(-m_rect.width(),0); + m_screen_filled = false; + } + + inline void setNewBenchmark( Benchmark *benchmark ) + { + m_benchmark = benchmark; + } + +protected: + Benchmark *m_benchmark; + QRect m_rect; + QRect m_bounds; + bool m_screen_filled; +}; + +class FillRectBenchmark : public Benchmark +{ +public: + FillRectBenchmark(int size) + : Benchmark(QSize(size, size)) + { + } + + virtual void draw(QPainter *p, const QRect &rect, int iterationCount) { + p->fillRect(rect, randomColor(iterationCount)); + } + + virtual QString name() const { + return QString::fromLatin1("fillRect(%1)").arg(m_size.width()); + } +}; + +class ImageFillRectBenchmark : public Benchmark +{ +public: + ImageFillRectBenchmark(int size) + : Benchmark(QSize(size, size)) + { + int s = rand() % 24 + 8; + m_content = QImage(s, s, QImage::Format_ARGB32_Premultiplied); + QPainter p(&m_content); + p.fillRect(0, 0, s, s, Qt::white); + p.fillRect(s/2, 0, s/2, s/2, Qt::gray); + p.fillRect(0, s/2, s/2, s/2, Qt::gray); + p.end(); + + m_brush = QBrush(m_content); + } + + virtual void draw(QPainter *p, const QRect &rect, int) { + p->fillRect(rect, m_brush); + } + + virtual QString name() const { + return QString::fromLatin1("fillRect with image(%1)").arg(m_size.width()); + } + +private: + QImage m_content; + QBrush m_brush; +}; + + +class DrawRectBenchmark : public Benchmark +{ +public: + DrawRectBenchmark(int size) + : Benchmark(QSize(size, size)) + { + } + + virtual void begin(QPainter *p, int) { + p->setPen(Qt::NoPen); + p->setBrush(randomColor(m_size.width())); + } + + + virtual void draw(QPainter *p, const QRect &rect, int) { + p->drawRect(rect); + } + + virtual QString name() const { + return QString::fromLatin1("drawRect(%1)").arg(m_size.width()); + } +}; + + +class DrawRectWithBrushChangeBenchmark : public Benchmark +{ +public: + DrawRectWithBrushChangeBenchmark(int size) + : Benchmark(QSize(size, size)) + { + } + + virtual void begin(QPainter *p, int) { + p->setPen(Qt::NoPen); + } + + + virtual void draw(QPainter *p, const QRect &rect, int i) { + p->setBrush(randomColor(i)); + p->drawRect(rect); + } + + virtual QString name() const { + return QString::fromLatin1("drawRect with brushchange(%1)").arg(m_size.width()); + } +}; + +class RoundRectBenchmark : public Benchmark +{ +public: + RoundRectBenchmark(int size) + : Benchmark(QSize(size, size)) + { + m_roundness = size / 4.; + } + + virtual void begin(QPainter *p, int) { + p->setPen(Qt::NoPen); + p->setBrush(Qt::red); + } + + virtual void draw(QPainter *p, const QRect &rect, int) { + p->drawRoundedRect(rect, m_roundness, m_roundness); + } + + virtual QString name() const { + return QString::fromLatin1("drawRoundedRect(%1)").arg(m_size.width()); + } + + qreal m_roundness; +}; + + +class ArcsBenchmark : public Benchmark +{ +public: + enum Type { + Stroked = 0x0001, + Filled = 0x0002, + + ArcShape = 0x0010, + ChordShape = 0x0020, + PieShape = 0x0040, + CircleShape = 0x0080, + Shapes = 0x00f0 + + }; + + ArcsBenchmark(int size, uint type) + : Benchmark(QSize(size, size)), + m_type(type) + { + } + + virtual void begin(QPainter *p, int) { + if (m_type & Stroked) + p->setPen(Qt::black); + else + p->setPen(Qt::NoPen); + + if (m_type & Filled) + p->setBrush(Qt::red); + else + p->setBrush(Qt::NoBrush); + } + + virtual void draw(QPainter *p, const QRect &rect, int) { + switch (m_type & Shapes) { + case ArcShape: + p->drawArc(rect, 45*16, 120*16); + break; + case ChordShape: + p->drawChord(rect, 45*16, 120*16); + break; + case PieShape: + p->drawPie(rect, 45*16, 120*16); + break; + case CircleShape: + p->drawEllipse(rect); + break; + } + } + + virtual QString name() const { + QString fillStroke; + + if ((m_type & (Stroked|Filled)) == (Stroked|Filled)) { + fillStroke = QLatin1String("Fill & Outline"); + } else if (m_type & Stroked) { + fillStroke = QLatin1String("Outline"); + } else if (m_type & Filled) { + fillStroke = QLatin1String("Fill"); + } + + QString shape; + if (m_type & PieShape) shape = QLatin1String("drawPie"); + else if (m_type & ChordShape) shape = QLatin1String("drawChord"); + else if (m_type & ArcShape) shape = QLatin1String("drawArc"); + else if (m_type & CircleShape) shape = QLatin1String("drawEllipse"); + + return QString::fromLatin1("%1(%2) %3").arg(shape).arg(m_size.width()).arg(fillStroke); + } + + uint m_type; +}; + + +class DrawScaledImage : public Benchmark +{ +public: + DrawScaledImage(const QImage &image, qreal scale, bool asPixmap) + : Benchmark(QSize(image.width(), image.height())), + m_image(image), + m_type(m_as_pixmap ? "Pixmap" : "Image"), + m_scale(scale), + m_as_pixmap(asPixmap) + { + m_pixmap = QPixmap::fromImage(m_image); + } + DrawScaledImage(const QString& type, const QPixmap &pixmap, qreal scale) + : Benchmark(QSize(pixmap.width(), pixmap.height())), + m_type(type), + m_scale(scale), + m_as_pixmap(true), + m_pixmap(pixmap) + { + } + + virtual void begin(QPainter *p, int) { + p->scale(m_scale, m_scale); + } + + virtual void draw(QPainter *p, const QRect &rect, int) { + if (m_as_pixmap) + p->drawPixmap(rect.topLeft(), m_pixmap); + else + p->drawImage(rect.topLeft(), m_image); + } + + virtual QString name() const { + return QString::fromLatin1("draw%4(%1) at scale=%2, depth=%3") + .arg(m_size.width()) + .arg(m_scale) + .arg(m_as_pixmap ? m_pixmap.depth() : m_image.depth()) + .arg(m_type); + } + +private: + QImage m_image; + QString m_type; + qreal m_scale; + bool m_as_pixmap; + QPixmap m_pixmap; +}; + +class DrawTransformedImage : public Benchmark +{ +public: + DrawTransformedImage(const QImage &image, bool asPixmap) + : Benchmark(QSize(image.width(), image.height())), + m_image(image), + m_type(m_as_pixmap ? "Pixmap" : "Image"), + m_as_pixmap(asPixmap) + { + m_pixmap = QPixmap::fromImage(m_image); + } + DrawTransformedImage(const QString& type, const QPixmap &pixmap) + : Benchmark(QSize(pixmap.width(), pixmap.height())), + m_type(type), + m_as_pixmap(true), + m_pixmap(pixmap) + { + } + + virtual void draw(QPainter *p, const QRect &rect, int) { + QTransform oldTransform = p->transform(); + p->translate(0.5 * rect.width() + rect.left(), 0.5 * rect.height() + rect.top()); + p->shear(0.25, 0.0); + p->rotate(5.0); + if (m_as_pixmap) + p->drawPixmap(-0.5 * rect.width(), -0.5 * rect.height(), m_pixmap); + else + p->drawImage(-0.5 * rect.width(), -0.5 * rect.height(), m_image); + p->setTransform(oldTransform); + } + + virtual QString name() const { + return QString::fromLatin1("draw%3(%1) w/transform, depth=%2") + .arg(m_size.width()) + .arg(m_as_pixmap ? m_pixmap.depth() : m_image.depth()) + .arg(m_type); + } + +private: + QImage m_image; + QString m_type; + bool m_as_pixmap; + QPixmap m_pixmap; +}; + + +class DrawImage : public Benchmark +{ +public: + DrawImage(const QImage &image, bool asPixmap) + : Benchmark(QSize(image.width(), image.height())), + m_image(image), + m_type(m_as_pixmap ? "Pixmap" : "Image"), + m_as_pixmap(asPixmap) + { + m_pixmap = QPixmap::fromImage(image); + } + DrawImage(const QString& type, const QPixmap &pixmap) + : Benchmark(QSize(pixmap.width(), pixmap.height())), + m_type(type), + m_as_pixmap(true), + m_pixmap(pixmap) + { + } + + virtual void draw(QPainter *p, const QRect &rect, int) { + if (m_as_pixmap) + p->drawPixmap(rect.topLeft(), m_pixmap); + else + p->drawImage(rect.topLeft(), m_image); + } + + virtual QString name() const { + return QString::fromLatin1("draw%2(%1), depth=%3") + .arg(m_size.width()) + .arg(m_type) + .arg(m_as_pixmap ? m_pixmap.depth() : m_image.depth()); + } + +private: + QImage m_image; + QString m_type; + bool m_as_pixmap; + QPixmap m_pixmap; +}; + + +class DrawText : public Benchmark +{ +public: + enum Mode { + PainterMode, + PainterQPointMode, + LayoutMode, + DocumentMode, + PixmapMode + +#if QT_VERSION >= 0x040700 + , StaticTextMode, + StaticTextWithMaximumSizeMode, + StaticTextBackendOptimizations +#endif + }; + + DrawText(const QString &text, Mode mode) + : Benchmark(QSize()), m_mode(mode), m_text(text), m_document(text), m_layout(text) + { + } + + virtual void begin(QPainter *p, int iterations) { +#if QT_VERSION >= 0x040700 + m_staticTexts.clear(); + m_currentStaticText = 0; +#else + Q_UNUSED(iterations); +#endif + m_pixmaps.clear(); + m_currentPixmap = 0; + QRect m_bounds = QRect(0,0,p->device()->width(), p->device()->height()); + switch (m_mode) { + case PainterMode: + m_size = (p->boundingRect(m_bounds, 0, m_text)).size(); +// m_rect = m_rect.translated(-m_rect.topLeft()); + break; + case DocumentMode: + m_size = QSize(m_document.size().toSize()); + break; + case PixmapMode: + for (int i=0; i<4; ++i) { + m_size = (p->boundingRect(m_bounds, 0, m_text)).size(); + QPixmap pixmap = QPixmap(m_size); + pixmap.fill(Qt::transparent); + { + QPainter p(&pixmap); + p.drawText(pixmap.rect(), m_text); + } + m_pixmaps.append(pixmap); + } + break; + + case LayoutMode: { + QRect r = p->boundingRect(m_bounds, 0, m_text); + QStringList lines = m_text.split('\n'); + int height = 0; + int leading = p->fontMetrics().leading(); + m_layout.beginLayout(); + for (int i=0; i= 0x040700 + case StaticTextWithMaximumSizeMode: { + QStaticText staticText; + m_size = (p->boundingRect(m_bounds, 0, m_text)).size(); + staticText.setMaximumSize(m_size + QSize(10, 10)); + staticText.setText(m_text); + staticText.prepare(p->transform(), p->font()); + m_staticTexts.append(staticText); + break; + } + case StaticTextBackendOptimizations: { + m_size = (p->boundingRect(m_bounds, 0, m_text)).size(); + for (int i=0; itransform(), p->font()); + m_staticTexts.append(staticText); + } + + break; + } + case StaticTextMode: { + QStaticText staticText; + staticText.setText(m_text); + staticText.prepare(p->transform(), p->font()); + m_staticTexts.append(staticText); + + QFontMetrics fm(p->font()); + m_size = QSize(fm.width(m_text, m_text.length()), fm.height()); + + break; + } +#endif + + case PainterQPointMode: { + QFontMetrics fm(p->font()); + m_size = QSize(fm.width(m_text, m_text.length()), fm.height()); + break; + } + + } + } + + virtual void draw(QPainter *p, const QRect &rect, int) + { + switch (m_mode) { + case PainterMode: + p->drawText(rect, 0, m_text); + break; + case PainterQPointMode: + p->drawText(rect.topLeft(), m_text); + break; + case PixmapMode: + p->drawPixmap(rect.topLeft(), m_pixmaps.at(m_currentPixmap)); + m_currentPixmap = (m_currentPixmap + 1) % m_pixmaps.size(); + break; + case DocumentMode: + p->translate(rect.topLeft()); + m_document.drawContents(p); + p->translate(-rect.topLeft()); + break; + case LayoutMode: + m_layout.draw(p, rect.topLeft()); + break; + +#if QT_VERSION >= 0x040700 + case StaticTextWithMaximumSizeMode: + case StaticTextMode: + p->drawStaticText(rect.topLeft(), m_staticTexts.at(0)); + break; + case StaticTextBackendOptimizations: + p->drawStaticText(rect.topLeft(), m_staticTexts.at(m_currentStaticText)); + m_currentStaticText = (m_currentStaticText + 1) % m_staticTexts.size(); + break; +#endif + } + } + + virtual QString name() const { + int letters = m_text.length(); + int lines = m_text.count('\n'); + if (lines == 0) + lines = 1; + QString type; + switch (m_mode) { + case PainterMode: type = "drawText(rect)"; break; + case PainterQPointMode: type = "drawText(point)"; break; + case LayoutMode: type = "layout.draw()"; break; + case DocumentMode: type = "doc.drawContents()"; break; + case PixmapMode: type = "pixmap cached text"; break; + +#if QT_VERSION >= 0x040700 + case StaticTextMode: type = "drawStaticText()"; break; + case StaticTextWithMaximumSizeMode: type = "drawStaticText() w/ maxsize"; break; + case StaticTextBackendOptimizations: type = "drawStaticText() w/ backend optimizations"; break; +#endif + } + + return QString::fromLatin1("%3, len=%1, lines=%2") + .arg(letters) + .arg(lines) + .arg(type); + } + +private: + Mode m_mode; + QString m_text; + QTextDocument m_document; + QTextLayout m_layout; + + QList m_pixmaps; + int m_currentPixmap; + +#if QT_VERSION >= 0x040700 + int m_currentStaticText; + QList m_staticTexts; +#endif +}; + + + + +class ClippedDrawRectBenchmark : public Benchmark +{ +public: + enum ClipType { + RectClip, + TwoRectRegionClip, + EllipseRegionClip, + TwoRectPathClip, + EllipsePathClip, + AAEllipsePathClip, + EllipseRegionThenRectClip, + EllipsePathThenRectClip + }; + + ClippedDrawRectBenchmark(int size, ClipType type) + : Benchmark(QSize(size, size)), m_type(type) + { + } + + virtual void begin(QPainter *p, int) { + QRect m_bounds = QRect(0,0,p->device()->width(), p->device()->height()); + p->setPen(Qt::NoPen); + p->setBrush(Qt::red); + + switch (m_type) { + case RectClip: + p->setClipRect(m_bounds.adjusted(1, 1, -1, -1)); + break; + case TwoRectRegionClip: + p->setClipRegion(QRegion(m_bounds.adjusted(0, 0, -1, -1)) + | QRegion(m_bounds.adjusted(1, 1, 0, 0))); + break; + case EllipseRegionClip: + p->setClipRegion(QRegion(m_bounds, QRegion::Ellipse)); + break; + case TwoRectPathClip: + { + QPainterPath path; + path.addRect(m_bounds.adjusted(0, 0, -1, -1)); + path.addRect(m_bounds.adjusted(1, 1, 0, 0)); + path.setFillRule(Qt::WindingFill); + p->setClipPath(path); + } + break; + case EllipsePathClip: + { + QPainterPath path; + path.addEllipse(m_bounds); + p->setClipPath(path); + } + break; + case AAEllipsePathClip: + { + QPainterPath path; + path.addEllipse(m_bounds); + p->setRenderHint(QPainter::Antialiasing); + p->setClipPath(path); + p->setRenderHint(QPainter::Antialiasing, false); + } + break; + case EllipseRegionThenRectClip: + p->setClipRegion(QRegion(m_bounds, QRegion::Ellipse)); + p->setClipRegion(QRegion(m_bounds.width() / 4, + m_bounds.height() / 4, + m_bounds.width() / 2, + m_bounds.height() / 2), Qt::IntersectClip); + break; + case EllipsePathThenRectClip: + { + QPainterPath path; + path.addEllipse(m_bounds); + p->setClipPath(path); + p->setClipRegion(QRegion(m_bounds.width() / 4, + m_bounds.height() / 4, + m_bounds.width() / 2, + m_bounds.height() / 2), Qt::IntersectClip); + } + break; + } + } + + virtual void draw(QPainter *p, const QRect &rect, int) { + p->drawRect(rect); + } + + virtual QString name() const { + QString namedType; + switch (m_type) { + case RectClip: + namedType = "rect"; + break; + case TwoRectRegionClip: + namedType = "two-rect-region"; + break; + case EllipseRegionClip: + namedType = "ellipse-region"; + break; + case TwoRectPathClip: + namedType = "two-rect-path"; + break; + case EllipsePathClip: + namedType = "ellipse-path"; + break; + case AAEllipsePathClip: + namedType = "aa-ellipse-path"; + break; + case EllipseRegionThenRectClip: + namedType = "ellipseregion&rect"; + break; + case EllipsePathThenRectClip: + namedType = "ellipsepath&rect"; + break; + } + return QString::fromLatin1("%1-clipped-drawRect(%2)").arg(namedType).arg(m_size.width()); + } + + ClipType m_type; +}; + +class LinesBenchmark : public Benchmark +{ +public: + enum LineType { + Horizontal_Integer, + Diagonal_Integer, + Vertical_Integer, + Horizontal_Float, + Diagonal_Float, + Vertical_Float + }; + + LinesBenchmark(int length, LineType type) + : Benchmark(QSize(qAbs(length), qAbs(length))), + m_type(type), + m_length(length) + { + + } + + virtual void draw(QPainter *p, const QRect &rect, int) { + switch (m_type) { + case Horizontal_Integer: + p->drawLine(QLine(rect.x(), rect.y(), rect.x() + m_length, rect.y())); + break; + case Diagonal_Integer: + p->drawLine(QLine(rect.x(), rect.y(), rect.x() + m_length, rect.y() + m_length)); + break; + case Vertical_Integer: + p->drawLine(QLine(rect.x() + 4, rect.y(), rect.x() + 4, rect.y() + m_length)); + break; + case Horizontal_Float: + p->drawLine(QLineF(rect.x(), rect.y(), rect.x() + m_length, rect.y())); + break; + case Diagonal_Float: + p->drawLine(QLineF(rect.x(), rect.y(), rect.x() + m_length, rect.y() + m_length)); + break; + case Vertical_Float: + p->drawLine(QLineF(rect.x() + 4, rect.y(), rect.x() + 4, rect.y() + m_length)); + break; + } + } + + virtual QString name() const { + const char *names[] = { + "Hor_I", + "Diag_I", + "Ver_I", + "Hor_F", + "Diag_F", + "Ver_F" + }; + return QString::fromLatin1("drawLine(size=%1,type=%2)").arg(m_length).arg(names[m_type]); + } + + LineType m_type; + int m_length; +}; + +#endif // BENCHMARKTESTS_H diff --git a/tests/benchmarks/gui/painting/qtbench/qtbench.pro b/tests/benchmarks/gui/painting/qtbench/qtbench.pro new file mode 100644 index 0000000..91f416d --- /dev/null +++ b/tests/benchmarks/gui/painting/qtbench/qtbench.pro @@ -0,0 +1,6 @@ +load(qttest_p4) +TEMPLATE = app +TARGET = tst_qtbench + +SOURCES += tst_qtbench.cpp + diff --git a/tests/benchmarks/gui/painting/qtbench/tst_qtbench.cpp b/tests/benchmarks/gui/painting/qtbench/tst_qtbench.cpp new file mode 100644 index 0000000..8eef472 --- /dev/null +++ b/tests/benchmarks/gui/painting/qtbench/tst_qtbench.cpp @@ -0,0 +1,254 @@ +/**************************************************************************** +** +** 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 + +#include + +#include "benchmarktests.h" + +//TESTED_FILES= + +class BenchWidget : public QWidget +{ +public: + BenchWidget(Benchmark *benchmark); + + void paintEvent(QPaintEvent *event); + + bool done() const { return m_done; } + qreal result() const { return m_result; } + +public: + QTime timer; + + Benchmark *m_benchmark; + + bool m_done; + qreal m_result; + + uint m_total; + uint m_iteration; + + QVector iterationTimes; +}; + +void BenchWidget::paintEvent(QPaintEvent *) +{ + if (m_done) + return; + + QPainter p(this); + + m_benchmark->begin(&p, 100); + + PaintingRectAdjuster adjuster; + adjuster.setNewBenchmark(m_benchmark); + adjuster.reset(rect()); + + for (int i = 0; i < 100; ++i) + m_benchmark->draw(&p, adjuster.newPaintingRect(), i); + + m_benchmark->end(&p); + + ++m_iteration; + + uint currentElapsed = timer.isNull() ? 0 : timer.elapsed(); + timer.restart(); + + m_total += currentElapsed; + + // warm up for at most 5 iterations or half a second + if (m_iteration >= 5 || m_total >= 500) { + iterationTimes << currentElapsed; + + if (iterationTimes.size() >= 5) { + qreal mean = 0; + qreal stddev = 0; + uint min = INT_MAX; + + for (int i = 0; i < iterationTimes.size(); ++i) { + mean += iterationTimes.at(i); + min = qMin(min, iterationTimes.at(i)); + } + + mean /= qreal(iterationTimes.size()); + + for (int i = 0; i < iterationTimes.size(); ++i) { + qreal delta = iterationTimes.at(i) - mean; + stddev += delta * delta; + } + + stddev = qSqrt(stddev / iterationTimes.size()); + + stddev = 100 * stddev / mean; + // do 50 iterations, break earlier if we spend more than 5 seconds or have a low std deviation after 2 seconds + if (iterationTimes.size() >= 50 || m_total >= 5000 || (m_total >= 2000 && stddev < 4)) { + m_result = min; + m_done = true; + return; + } + } + } +} + +BenchWidget::BenchWidget(Benchmark *benchmark) + : m_benchmark(benchmark) + , m_done(false) + , m_result(0) + , m_total(0) + , m_iteration(0) +{ + setWindowTitle(benchmark->name()); + resize(640, 480); +} + +class tst_QtBench : public QObject +{ + Q_OBJECT + +private slots: + void qtBench(); + void qtBench_data(); +}; + +QString makeString(int length) +{ + const char chars[] = "abcd efgh ijkl mnop qrst uvwx yz!$. ABCD 1234"; + int len = strlen(chars); + + QString ret; + for (int j = 0; j < length; j++) { + ret += QChar(chars[(j * 97) % len]); + } + + return ret; +} + +void tst_QtBench::qtBench_data() +{ + QTest::addColumn("benchmark"); + + QString shortString = makeString(5); + QString middleString = makeString(50); + QString longString = makeString(35) + "\n" + + makeString(45) + "\n" + + makeString(75); + QString superLongString = "Lorem ipsum dolor sit am\n" + "et, consectetur adipisci\n" + "ng elit. Integer mi leo,\n" + "interdum ut congue at, p\n" + "ulvinar et tellus. Quisq\n" + "ue pretium eleifend laci\n" + "nia. Ut semper gravida l\n" + "ectus in commodo. Vestib\n" + "ulum pharetra arcu in en\n" + "im ultrices hendrerit. P\n" + "ellentesque habitant mor\n" + "bi tristique senectus et\n" + "netus et malesuada fames\n" + "ac turpis egestas. Ut er\n" + "os sem, feugiat in eleme\n" + "ntum in, porta sit amet \n" + "neque. Fusce mi tellus, \n" + "congue non dapibus eget,\n" + "pharetra quis quam. Duis\n" + "dui massa, pulvinar ac s\n" + "odales pharetra, dictum \n" + "in enim. Phasellus a nis\n" + "i erat, sed pellentesque\n" + "mi. Curabitur sed."; + + QList benchmarks; + benchmarks << (new DrawText(shortString, DrawText::PainterMode)); + benchmarks << (new DrawText(middleString, DrawText::PainterMode)); + benchmarks << (new DrawText(longString, DrawText::PainterMode)); + benchmarks << (new DrawText(superLongString, DrawText::PainterMode)); + + benchmarks << (new DrawText(shortString, DrawText::PainterQPointMode)); + benchmarks << (new DrawText(middleString, DrawText::PainterQPointMode)); + benchmarks << (new DrawText(longString, DrawText::PainterQPointMode)); + benchmarks << (new DrawText(superLongString, DrawText::PainterQPointMode)); + + benchmarks << (new DrawText(shortString, DrawText::PixmapMode)); + benchmarks << (new DrawText(middleString, DrawText::PixmapMode)); + benchmarks << (new DrawText(longString, DrawText::PixmapMode)); + benchmarks << (new DrawText(superLongString, DrawText::PixmapMode)); + +#if QT_VERSION >= 0x040700 + benchmarks << (new DrawText(shortString, DrawText::StaticTextMode)); + benchmarks << (new DrawText(middleString, DrawText::StaticTextMode)); + benchmarks << (new DrawText(longString, DrawText::StaticTextMode)); + benchmarks << (new DrawText(superLongString, DrawText::StaticTextMode)); + + benchmarks << (new DrawText(shortString, DrawText::StaticTextWithMaximumSizeMode)); + benchmarks << (new DrawText(middleString, DrawText::StaticTextWithMaximumSizeMode)); + benchmarks << (new DrawText(longString, DrawText::StaticTextWithMaximumSizeMode)); + benchmarks << (new DrawText(superLongString, DrawText::StaticTextWithMaximumSizeMode)); + + benchmarks << (new DrawText(shortString, DrawText::StaticTextBackendOptimizations)); + benchmarks << (new DrawText(middleString, DrawText::StaticTextBackendOptimizations)); + benchmarks << (new DrawText(longString, DrawText::StaticTextBackendOptimizations)); + benchmarks << (new DrawText(superLongString, DrawText::StaticTextBackendOptimizations)); +#endif + + foreach (Benchmark *benchmark, benchmarks) + QTest::newRow(qPrintable(benchmark->name())) << reinterpret_cast(benchmark); +} + +void tst_QtBench::qtBench() +{ + QFETCH(void *, benchmark); + + BenchWidget widget(reinterpret_cast(benchmark)); + widget.show(); + QTest::qWaitForWindowShown(&widget); + + while (!widget.done()) { + widget.update(); + QApplication::processEvents(); + } + + QTest::setBenchmarkResult(widget.result(), QTest::WalltimeMilliseconds); +} + +QTEST_MAIN(tst_QtBench) +#include "tst_qtbench.moc" -- cgit v0.12 From 7b500ed543bb86429ef6fdb82b103784d6cc6a0c Mon Sep 17 00:00:00 2001 From: Kim Motoyoshi Kalland Date: Fri, 5 Mar 2010 16:59:01 +0100 Subject: Fixed vector-effect property output from QSvgGenerator. The vector-effect property is not inherited by default, so it must be set on each item with a stroke. It is not sufficient to set it on G nodes. Task-number: QTBUG-8733 Reviewed-by: Trond --- src/svg/qsvggenerator.cpp | 27 +++++++++------------- .../referenceSvgs/fileName_output.svg | 6 ++--- .../referenceSvgs/radial_gradient.svg | 10 ++++---- 3 files changed, 19 insertions(+), 24 deletions(-) diff --git a/src/svg/qsvggenerator.cpp b/src/svg/qsvggenerator.cpp index 4a8fc0b..cb9086c 100644 --- a/src/svg/qsvggenerator.cpp +++ b/src/svg/qsvggenerator.cpp @@ -310,7 +310,6 @@ public: { *d_func()->stream << QLatin1String("fill=\"none\" "); *d_func()->stream << QLatin1String("stroke=\"black\" "); - *d_func()->stream << QLatin1String("vector-effect=\"non-scaling-stroke\" "); *d_func()->stream << QLatin1String("stroke-width=\"1\" "); *d_func()->stream << QLatin1String("fill-rule=\"evenodd\" "); *d_func()->stream << QLatin1String("stroke-linecap=\"square\" "); @@ -380,13 +379,10 @@ public: break; } - if (spen.widthF() == 0) { - width = QLatin1String("1"); - stream() << "vector-effect=\"non-scaling-stroke\" "; - } + if (spen.widthF() == 0) + stream() <<"stroke-width=\"1\" "; else - width = QString::number(spen.widthF()); - stream() <<"stroke-width=\""<stream << "stream << "\"nonzero\" "; - - *d->stream << "d=\""; + *d->stream << "pen().isCosmetic() ? "non-scaling-stroke" : "none") + << "\" fill-rule=\"" + << (p.fillRule() == Qt::OddEvenFill ? "evenodd" : "nonzero") + << "\" d=\""; for (int i=0; ipen().isCosmetic() ? "non-scaling-stroke" : "none") + << "\" points=\""; for (int i = 0; i < pointCount; ++i) { const QPointF &pt = points[i]; stream() << pt.x() << ',' << pt.y() << ' '; diff --git a/tests/auto/qsvggenerator/referenceSvgs/fileName_output.svg b/tests/auto/qsvggenerator/referenceSvgs/fileName_output.svg index 99926b3..f1f9e35 100644 --- a/tests/auto/qsvggenerator/referenceSvgs/fileName_output.svg +++ b/tests/auto/qsvggenerator/referenceSvgs/fileName_output.svg @@ -4,12 +4,12 @@ Generated with Qt - + - + diff --git a/tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg b/tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg index f61dd40..84afbf3 100644 --- a/tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg +++ b/tests/auto/qsvggenerator/referenceSvgs/radial_gradient.svg @@ -13,18 +13,18 @@ - + - + - + -- cgit v0.12 From ea9f2aeba6f18d19d6a82b3a829373ec032af14f Mon Sep 17 00:00:00 2001 From: Kim Motoyoshi Kalland Date: Mon, 8 Mar 2010 16:15:44 +0100 Subject: Fixed bounds calculation in QtSvg. This commit fixes an auto-test failure after fixing QTBUG-8733. The calculated element bounds should now be much tighter and respect the width of non-cosmetic pens. Task-number: QTBUG-8733 Reviewed-by: Trond --- src/svg/qsvggraphics.cpp | 178 +++++++++------------------ src/svg/qsvggraphics_p.h | 40 +++--- src/svg/qsvgnode.cpp | 65 ++++++---- src/svg/qsvgnode_p.h | 14 ++- src/svg/qsvgstructure.cpp | 13 +- src/svg/qsvgstructure_p.h | 3 +- src/svg/qsvgstyle.cpp | 46 +++---- src/svg/qsvgstyle_p.h | 28 ++--- src/svg/qsvgtinydocument.cpp | 7 +- src/svg/qsvgtinydocument_p.h | 5 +- tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp | 31 +++++ 11 files changed, 204 insertions(+), 226 deletions(-) diff --git a/src/svg/qsvggraphics.cpp b/src/svg/qsvggraphics.cpp index cd0e1ac..a29764a 100644 --- a/src/svg/qsvggraphics.cpp +++ b/src/svg/qsvggraphics.cpp @@ -78,33 +78,29 @@ void QSvgAnimation::draw(QPainter *, QSvgExtraStates &) qWarning(" no implemented"); } -static inline QRectF boundsOnStroke(const QPainterPath &path, qreal width) +static inline QRectF boundsOnStroke(QPainter *p, const QPainterPath &path, qreal width) { QPainterPathStroker stroker; stroker.setWidth(width); QPainterPath stroke = stroker.createStroke(path); - return stroke.boundingRect(); + return p->transform().map(stroke).boundingRect(); } -QSvgCircle::QSvgCircle(QSvgNode *parent, const QRectF &rect) +QSvgEllipse::QSvgEllipse(QSvgNode *parent, const QRectF &rect) : QSvgNode(parent), m_bounds(rect) { } -QRectF QSvgCircle::bounds() const +QRectF QSvgEllipse::bounds(QPainter *p, QSvgExtraStates &) const { - qreal sw = strokeWidth(); - if (qFuzzyIsNull(sw)) - return m_bounds; - else { - QPainterPath path; - path.addRect(m_bounds); - return boundsOnStroke(path, sw); - } + QPainterPath path; + path.addEllipse(m_bounds); + qreal sw = strokeWidth(p); + return qFuzzyIsNull(sw) ? p->transform().map(path).boundingRect() : boundsOnStroke(p, path, sw); } -void QSvgCircle::draw(QPainter *p, QSvgExtraStates &states) +void QSvgEllipse::draw(QPainter *p, QSvgExtraStates &states) { applyStyle(p, states); QT_SVG_DRAW_SHAPE(p->drawEllipse(m_bounds)); @@ -112,9 +108,8 @@ void QSvgCircle::draw(QPainter *p, QSvgExtraStates &states) } QSvgArc::QSvgArc(QSvgNode *parent, const QPainterPath &path) - : QSvgNode(parent), cubic(path) + : QSvgNode(parent), m_path(path) { - m_cachedBounds = path.boundingRect(); } void QSvgArc::draw(QPainter *p, QSvgExtraStates &states) @@ -123,36 +118,12 @@ void QSvgArc::draw(QPainter *p, QSvgExtraStates &states) if (p->pen().widthF() != 0) { qreal oldOpacity = p->opacity(); p->setOpacity(oldOpacity * states.strokeOpacity); - p->drawPath(cubic); + p->drawPath(m_path); p->setOpacity(oldOpacity); } revertStyle(p, states); } -QSvgEllipse::QSvgEllipse(QSvgNode *parent, const QRectF &rect) - : QSvgNode(parent), m_bounds(rect) -{ -} - -QRectF QSvgEllipse::bounds() const -{ - qreal sw = strokeWidth(); - if (qFuzzyIsNull(sw)) - return m_bounds; - else { - QPainterPath path; - path.addEllipse(m_bounds); - return boundsOnStroke(path, sw); - } -} - -void QSvgEllipse::draw(QPainter *p, QSvgExtraStates &states) -{ - applyStyle(p, states); - QT_SVG_DRAW_SHAPE(p->drawEllipse(m_bounds)); - revertStyle(p, states); -} - QSvgImage::QSvgImage(QSvgNode *parent, const QImage &image, const QRect &bounds) : QSvgNode(parent), m_image(image), @@ -173,7 +144,7 @@ void QSvgImage::draw(QPainter *p, QSvgExtraStates &states) QSvgLine::QSvgLine(QSvgNode *parent, const QLineF &line) - : QSvgNode(parent), m_bounds(line) + : QSvgNode(parent), m_line(line) { } @@ -184,7 +155,7 @@ void QSvgLine::draw(QPainter *p, QSvgExtraStates &states) if (p->pen().widthF() != 0) { qreal oldOpacity = p->opacity(); p->setOpacity(oldOpacity * states.strokeOpacity); - p->drawLine(m_bounds); + p->drawLine(m_line); p->setOpacity(oldOpacity); } revertStyle(p, states); @@ -203,19 +174,11 @@ void QSvgPath::draw(QPainter *p, QSvgExtraStates &states) revertStyle(p, states); } -QRectF QSvgPath::bounds() const +QRectF QSvgPath::bounds(QPainter *p, QSvgExtraStates &) const { - qreal sw = strokeWidth(); - if (qFuzzyIsNull(sw)) { - if (m_cachedBounds.isNull()) - //m_cachedBounds = m_path.controlPointRect(); - m_cachedBounds = m_path.boundingRect(); - - return m_cachedBounds; - } - else { - return boundsOnStroke(m_path, sw); - } + qreal sw = strokeWidth(p); + return qFuzzyIsNull(sw) ? p->transform().map(m_path).boundingRect() + : boundsOnStroke(p, m_path, sw); } QSvgPolygon::QSvgPolygon(QSvgNode *parent, const QPolygonF &poly) @@ -223,15 +186,15 @@ QSvgPolygon::QSvgPolygon(QSvgNode *parent, const QPolygonF &poly) { } -QRectF QSvgPolygon::bounds() const +QRectF QSvgPolygon::bounds(QPainter *p, QSvgExtraStates &) const { - qreal sw = strokeWidth(); - if (qFuzzyIsNull(sw)) - return m_poly.boundingRect(); - else { + qreal sw = strokeWidth(p); + if (qFuzzyIsNull(sw)) { + return p->transform().map(m_poly).boundingRect(); + } else { QPainterPath path; path.addPolygon(m_poly); - return boundsOnStroke(path, sw); + return boundsOnStroke(p, path, sw); } } @@ -274,15 +237,15 @@ QSvgRect::QSvgRect(QSvgNode *node, const QRectF &rect, int rx, int ry) { } -QRectF QSvgRect::bounds() const +QRectF QSvgRect::bounds(QPainter *p, QSvgExtraStates &) const { - qreal sw = strokeWidth(); - if (qFuzzyIsNull(sw)) - return m_rect; - else { + qreal sw = strokeWidth(p); + if (qFuzzyIsNull(sw)) { + return p->transform().mapRect(m_rect); + } else { QPainterPath path; path.addRect(m_rect); - return boundsOnStroke(path, sw); + return boundsOnStroke(p, path, sw); } } @@ -322,7 +285,7 @@ void QSvgText::setTextArea(const QSizeF &size) m_type = TEXTAREA; } -//QRectF QSvgText::bounds() const {} +//QRectF QSvgText::bounds(QPainter *p, QSvgExtraStates &) const {} void QSvgText::draw(QPainter *p, QSvgExtraStates &states) { @@ -593,80 +556,57 @@ QSvgNode::Type QSvgVideo::type() const return VIDEO; } -QRectF QSvgUse::bounds() const -{ - if (m_link && m_bounds.isEmpty()) { - m_bounds = m_link->bounds(); - m_bounds = QRectF(m_bounds.x()+m_start.x(), - m_bounds.y()+m_start.y(), - m_bounds.width(), - m_bounds.height()); - - return m_bounds; - } - return m_bounds; -} - -QRectF QSvgUse::transformedBounds(const QTransform &transform) const +QRectF QSvgUse::bounds(QPainter *p, QSvgExtraStates &states) const { QRectF bounds; - QTransform t = transform; - - if (m_link) { - QSvgTransformStyle *transStyle = m_style.transform; - if (transStyle) { - t = transStyle->qtransform() * t; - } - t.translate(m_start.x(), m_start.y()); - - bounds = m_link->transformedBounds(t); - - return bounds; + if (m_link) { + p->translate(m_start); + bounds = m_link->transformedBounds(p, states); + p->translate(-m_start); } return bounds; } -QRectF QSvgPolyline::bounds() const +QRectF QSvgPolyline::bounds(QPainter *p, QSvgExtraStates &) const { - qreal sw = strokeWidth(); - if (qFuzzyIsNull(sw)) - return m_poly.boundingRect(); - else { + qreal sw = strokeWidth(p); + if (qFuzzyIsNull(sw)) { + return p->transform().map(m_poly).boundingRect(); + } else { QPainterPath path; path.addPolygon(m_poly); - return boundsOnStroke(path, sw); + return boundsOnStroke(p, path, sw); } } -QRectF QSvgArc::bounds() const +QRectF QSvgArc::bounds(QPainter *p, QSvgExtraStates &) const { - qreal sw = strokeWidth(); - if (qFuzzyIsNull(sw)) - return m_cachedBounds; - else { - return boundsOnStroke(cubic, sw); - } + qreal sw = strokeWidth(p); + return qFuzzyIsNull(sw) ? p->transform().map(m_path).boundingRect() + : boundsOnStroke(p, m_path, sw); } -QRectF QSvgImage::bounds() const +QRectF QSvgImage::bounds(QPainter *p, QSvgExtraStates &) const { - return m_bounds; + return p->transform().mapRect(m_bounds); } -QRectF QSvgLine::bounds() const +QRectF QSvgLine::bounds(QPainter *p, QSvgExtraStates &) const { - qreal sw = strokeWidth(); + qreal sw = strokeWidth(p); if (qFuzzyIsNull(sw)) { - qreal minX = qMin(m_bounds.x1(), m_bounds.x2()); - qreal minY = qMin(m_bounds.y1(), m_bounds.y2()); - qreal maxX = qMax(m_bounds.x1(), m_bounds.x2()); - qreal maxY = qMax(m_bounds.y1(), m_bounds.y2()); - return QRectF(minX, minY, maxX-minX, maxY-minY); + QPointF p1 = p->transform().map(m_line.p1()); + QPointF p2 = p->transform().map(m_line.p2()); + qreal minX = qMin(p1.x(), p2.x()); + qreal minY = qMin(p1.y(), p2.y()); + qreal maxX = qMax(p1.x(), p2.x()); + qreal maxY = qMax(p1.y(), p2.y()); + return QRectF(minX, minY, maxX - minX, maxY - minY); } else { QPainterPath path; - path.moveTo(m_bounds.x1(), m_bounds.y1()); - path.lineTo(m_bounds.x2(), m_bounds.y2()); - return boundsOnStroke(path, sw); + path.moveTo(m_line.p1()); + path.lineTo(m_line.p2()); + return boundsOnStroke(p, path, sw); } } diff --git a/src/svg/qsvggraphics_p.h b/src/svg/qsvggraphics_p.h index ca06777..fdc770a 100644 --- a/src/svg/qsvggraphics_p.h +++ b/src/svg/qsvggraphics_p.h @@ -80,32 +80,27 @@ public: QSvgArc(QSvgNode *parent, const QPainterPath &path); virtual void draw(QPainter *p, QSvgExtraStates &states); virtual Type type() const; - virtual QRectF bounds() const; + virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; private: - QPainterPath cubic; - QRectF m_cachedBounds; + QPainterPath m_path; }; -class QSvgCircle : public QSvgNode +class QSvgEllipse : public QSvgNode { public: - QSvgCircle(QSvgNode *parent, const QRectF &rect); + QSvgEllipse(QSvgNode *parent, const QRectF &rect); virtual void draw(QPainter *p, QSvgExtraStates &states); virtual Type type() const; - virtual QRectF bounds() const; + virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; private: QRectF m_bounds; }; -class QSvgEllipse : public QSvgNode +class QSvgCircle : public QSvgEllipse { public: - QSvgEllipse(QSvgNode *parent, const QRectF &rect); - virtual void draw(QPainter *p, QSvgExtraStates &states); + QSvgCircle(QSvgNode *parent, const QRectF &rect) : QSvgEllipse(parent, rect) { } virtual Type type() const; - virtual QRectF bounds() const; -private: - QRectF m_bounds; }; class QSvgImage : public QSvgNode @@ -115,7 +110,7 @@ public: const QRect &bounds); virtual void draw(QPainter *p, QSvgExtraStates &states); virtual Type type() const; - virtual QRectF bounds() const; + virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; private: QImage m_image; QRect m_bounds; @@ -127,9 +122,9 @@ public: QSvgLine(QSvgNode *parent, const QLineF &line); virtual void draw(QPainter *p, QSvgExtraStates &states); virtual Type type() const; - virtual QRectF bounds() const; + virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; private: - QLineF m_bounds; + QLineF m_line; }; class QSvgPath : public QSvgNode @@ -138,14 +133,13 @@ public: QSvgPath(QSvgNode *parent, const QPainterPath &qpath); virtual void draw(QPainter *p, QSvgExtraStates &states); virtual Type type() const; - virtual QRectF bounds() const; + virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; QPainterPath *qpath() { return &m_path; } private: QPainterPath m_path; - mutable QRectF m_cachedBounds; }; class QSvgPolygon : public QSvgNode @@ -154,7 +148,7 @@ public: QSvgPolygon(QSvgNode *parent, const QPolygonF &poly); virtual void draw(QPainter *p, QSvgExtraStates &states); virtual Type type() const; - virtual QRectF bounds() const; + virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; private: QPolygonF m_poly; }; @@ -165,7 +159,7 @@ public: QSvgPolyline(QSvgNode *parent, const QPolygonF &poly); virtual void draw(QPainter *p, QSvgExtraStates &states); virtual Type type() const; - virtual QRectF bounds() const; + virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; private: QPolygonF m_poly; }; @@ -176,7 +170,7 @@ public: QSvgRect(QSvgNode *paren, const QRectF &rect, int rx=0, int ry=0); virtual Type type() const; virtual void draw(QPainter *p, QSvgExtraStates &states); - virtual QRectF bounds() const; + virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; private: QRectF m_rect; int m_rx, m_ry; @@ -205,7 +199,7 @@ public: void addLineBreak() {m_tspans.append(LINEBREAK);} void setWhitespaceMode(WhitespaceMode mode) {m_mode = mode;} - //virtual QRectF bounds() const; + //virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; private: static QSvgTspan * const LINEBREAK; @@ -248,13 +242,11 @@ public: QSvgUse(const QPointF &start, QSvgNode *parent, QSvgNode *link); virtual void draw(QPainter *p, QSvgExtraStates &states); virtual Type type() const; - virtual QRectF bounds() const; - virtual QRectF transformedBounds(const QTransform &transform) const; + virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; private: QSvgNode *m_link; QPointF m_start; - mutable QRectF m_bounds; }; class QSvgVideo : public QSvgNode diff --git a/src/svg/qsvgnode.cpp b/src/svg/qsvgnode.cpp index 86f2af5..f6bc1c0 100644 --- a/src/svg/qsvgnode.cpp +++ b/src/svg/qsvgnode.cpp @@ -45,6 +45,7 @@ #ifndef QT_NO_SVG #include "qdebug.h" +#include "qstack.h" QT_BEGIN_NAMESPACE @@ -114,12 +115,12 @@ void QSvgNode::appendStyleProperty(QSvgStyleProperty *prop, const QString &id) } } -void QSvgNode::applyStyle(QPainter *p, QSvgExtraStates &states) +void QSvgNode::applyStyle(QPainter *p, QSvgExtraStates &states) const { - m_style.apply(p, bounds(), this, states); + m_style.apply(p, this, states); } -void QSvgNode::revertStyle(QPainter *p, QSvgExtraStates &states) +void QSvgNode::revertStyle(QPainter *p, QSvgExtraStates &states) const { m_style.revert(p, states); } @@ -195,11 +196,40 @@ QSvgFillStyleProperty * QSvgNode::styleProperty(const QString &id) const return doc ? doc->namedStyle(rid) : 0; } -QRectF QSvgNode::bounds() const +QRectF QSvgNode::bounds(QPainter *, QSvgExtraStates &) const { return QRectF(0, 0, 0, 0); } +QRectF QSvgNode::transformedBounds() const +{ + if (!m_cachedBounds.isEmpty()) + return m_cachedBounds; + + QImage dummy(1, 1, QImage::Format_RGB32); + QPainter p(&dummy); + QSvgExtraStates states; + + QPen pen(Qt::NoBrush, 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin); + pen.setMiterLimit(4); + p.setPen(pen); + + QStack parentApplyStack; + QSvgNode *parent = m_parent; + while (parent) { + parentApplyStack.push(parent); + parent = parent->parent(); + } + + for (int i = parentApplyStack.size() - 1; i >= 0; --i) + parentApplyStack[i]->applyStyle(&p, states); + + p.setWorldTransform(QTransform()); + + m_cachedBounds = transformedBounds(&p, states); + return m_cachedBounds; +} + QSvgTinyDocument * QSvgNode::document() const { QSvgTinyDocument *doc = 0; @@ -274,19 +304,11 @@ void QSvgNode::setVisible(bool visible) m_visible = visible; } -QRectF QSvgNode::transformedBounds(const QTransform &transform) const +QRectF QSvgNode::transformedBounds(QPainter *p, QSvgExtraStates &states) const { - QTransform t = transform; - - QSvgTransformStyle *transStyle = m_style.transform; - if (transStyle) { - t = transStyle->qtransform() * t; - } - - QRectF rect = bounds(); - - rect = t.mapRect(rect); - + applyStyle(p, states); + QRectF rect = bounds(p, states); + revertStyle(p, states); return rect; } @@ -310,15 +332,12 @@ QSvgNode::DisplayMode QSvgNode::displayMode() const return m_displayMode; } -qreal QSvgNode::strokeWidth() const +qreal QSvgNode::strokeWidth(QPainter *p) { - QSvgStrokeStyle *stroke = static_cast( - styleProperty(QSvgStyleProperty::STROKE)); - if (!stroke) - return 0; - if (stroke->stroke().brush().style() == Qt::NoBrush) + QPen pen = p->pen(); + if (pen.style() == Qt::NoPen || pen.brush().style() == Qt::NoBrush || pen.isCosmetic()) return 0; - return stroke->width(); + return pen.widthF(); } QT_END_NAMESPACE diff --git a/src/svg/qsvgnode_p.h b/src/svg/qsvgnode_p.h index 15466f2..a34c7c0 100644 --- a/src/svg/qsvgnode_p.h +++ b/src/svg/qsvgnode_p.h @@ -118,16 +118,17 @@ public: QSvgNode *parent() const; void appendStyleProperty(QSvgStyleProperty *prop, const QString &id); - void applyStyle(QPainter *p, QSvgExtraStates &states); - void revertStyle(QPainter *p, QSvgExtraStates &states); + void applyStyle(QPainter *p, QSvgExtraStates &states) const; + void revertStyle(QPainter *p, QSvgExtraStates &states) const; QSvgStyleProperty *styleProperty(QSvgStyleProperty::Type type) const; QSvgFillStyleProperty *styleProperty(const QString &id) const; QSvgTinyDocument *document() const; virtual Type type() const =0; - virtual QRectF bounds() const; - virtual QRectF transformedBounds(const QTransform &transform) const; + virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; + virtual QRectF transformedBounds(QPainter *p, QSvgExtraStates &states) const; + QRectF transformedBounds() const; void setRequiredFeatures(const QStringList &lst); const QStringList & requiredFeatures() const; @@ -156,9 +157,9 @@ public: QString xmlClass() const; void setXmlClass(const QString &str); protected: - QSvgStyle m_style; + mutable QSvgStyle m_style; - qreal strokeWidth() const; + static qreal strokeWidth(QPainter *p); private: QSvgNode *m_parent; @@ -174,6 +175,7 @@ private: QString m_class; DisplayMode m_displayMode; + mutable QRectF m_cachedBounds; friend class QSvgTinyDocument; }; diff --git a/src/svg/qsvgstructure.cpp b/src/svg/qsvgstructure.cpp index 34426b7..db5cb9e 100644 --- a/src/svg/qsvgstructure.cpp +++ b/src/svg/qsvgstructure.cpp @@ -357,15 +357,12 @@ void QSvgSwitch::init() m_systemLanguagePrefix = m_systemLanguage.mid(0, idx); } -QRectF QSvgStructureNode::bounds() const +QRectF QSvgStructureNode::bounds(QPainter *p, QSvgExtraStates &states) const { - if (m_bounds.isEmpty()) { - foreach(QSvgNode *node, m_renderers) { - m_bounds |= node->transformedBounds(QTransform()); - } - } - - return m_bounds; + QRectF bounds; + foreach(QSvgNode *node, m_renderers) + bounds |= node->transformedBounds(p, states); + return bounds; } QSvgNode * QSvgStructureNode::previousSiblingNode(QSvgNode *n) const diff --git a/src/svg/qsvgstructure_p.h b/src/svg/qsvgstructure_p.h index fd6eb0a..dd82fc0 100644 --- a/src/svg/qsvgstructure_p.h +++ b/src/svg/qsvgstructure_p.h @@ -74,14 +74,13 @@ public: ~QSvgStructureNode(); QSvgNode *scopeNode(const QString &id) const; void addChild(QSvgNode *child, const QString &id); - virtual QRectF bounds() const; + virtual QRectF bounds(QPainter *p, QSvgExtraStates &states) const; QSvgNode *previousSiblingNode(QSvgNode *n) const; QList renderers() const { return m_renderers; } protected: QList m_renderers; QHash m_scope; QList m_linkedScopes; - mutable QRectF m_bounds; }; class QSvgG : public QSvgStructureNode diff --git a/src/svg/qsvgstyle.cpp b/src/svg/qsvgstyle.cpp index 2b12c49..0d1bad9 100644 --- a/src/svg/qsvgstyle.cpp +++ b/src/svg/qsvgstyle.cpp @@ -73,7 +73,7 @@ QSvgStyleProperty::~QSvgStyleProperty() { } -void QSvgFillStyleProperty::apply(QPainter *, const QRectF &, QSvgNode *, QSvgExtraStates &) +void QSvgFillStyleProperty::apply(QPainter *, const QSvgNode *, QSvgExtraStates &) { Q_ASSERT(!"This should not be called!"); } @@ -89,7 +89,7 @@ QSvgQualityStyle::QSvgQualityStyle(int color) { } -void QSvgQualityStyle::apply(QPainter *, const QRectF &, QSvgNode *, QSvgExtraStates &) +void QSvgQualityStyle::apply(QPainter *, const QSvgNode *, QSvgExtraStates &) { } @@ -136,7 +136,7 @@ void QSvgFillStyle::setBrush(QBrush brush) m_fillSet = 1; } -void QSvgFillStyle::apply(QPainter *p, const QRectF &, QSvgNode *, QSvgExtraStates &states) +void QSvgFillStyle::apply(QPainter *p, const QSvgNode *, QSvgExtraStates &states) { m_oldFill = p->brush(); m_oldFillRule = states.fillRule; @@ -169,7 +169,7 @@ QSvgViewportFillStyle::QSvgViewportFillStyle(const QBrush &brush) { } -void QSvgViewportFillStyle::apply(QPainter *p, const QRectF &, QSvgNode *, QSvgExtraStates &) +void QSvgViewportFillStyle::apply(QPainter *p, const QSvgNode *, QSvgExtraStates &) { m_oldFill = p->brush(); p->setBrush(m_viewportFill); @@ -224,7 +224,7 @@ int QSvgFontStyle::SVGToQtWeight(int weight) { return QFont::Normal; } -void QSvgFontStyle::apply(QPainter *p, const QRectF &, QSvgNode *, QSvgExtraStates &states) +void QSvgFontStyle::apply(QPainter *p, const QSvgNode *, QSvgExtraStates &states) { m_oldQFont = p->font(); m_oldSvgFont = states.svgFont; @@ -292,7 +292,7 @@ QSvgStrokeStyle::QSvgStrokeStyle() { } -void QSvgStrokeStyle::apply(QPainter *p, const QRectF &, QSvgNode *, QSvgExtraStates &states) +void QSvgStrokeStyle::apply(QPainter *p, const QSvgNode *, QSvgExtraStates &states) { m_oldStroke = p->pen(); m_oldStrokeOpacity = states.strokeOpacity; @@ -443,7 +443,7 @@ QSvgTransformStyle::QSvgTransformStyle(const QTransform &trans) { } -void QSvgTransformStyle::apply(QPainter *p, const QRectF &, QSvgNode *, QSvgExtraStates &) +void QSvgTransformStyle::apply(QPainter *p, const QSvgNode *, QSvgExtraStates &) { m_oldWorldTransform = p->worldTransform(); p->setWorldTransform(m_transform, true); @@ -501,7 +501,7 @@ QSvgCompOpStyle::QSvgCompOpStyle(QPainter::CompositionMode mode) } -void QSvgCompOpStyle::apply(QPainter *p, const QRectF &, QSvgNode *, QSvgExtraStates &) +void QSvgCompOpStyle::apply(QPainter *p, const QSvgNode *, QSvgExtraStates &) { m_oldMode = p->compositionMode(); p->setCompositionMode(m_mode); @@ -521,34 +521,34 @@ QSvgStyle::~QSvgStyle() { } -void QSvgStyle::apply(QPainter *p, const QRectF &rect, QSvgNode *node, QSvgExtraStates &states) +void QSvgStyle::apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) { if (quality) { - quality->apply(p, rect, node, states); + quality->apply(p, node, states); } if (fill) { - fill->apply(p, rect, node, states); + fill->apply(p, node, states); } if (viewportFill) { - viewportFill->apply(p, rect, node, states); + viewportFill->apply(p, node, states); } if (font) { - font->apply(p, rect, node, states); + font->apply(p, node, states); } if (stroke) { - stroke->apply(p, rect, node, states); + stroke->apply(p, node, states); } if (transform) { - transform->apply(p, rect, node, states); + transform->apply(p, node, states); } if (animateColor) { - animateColor->apply(p, rect, node, states); + animateColor->apply(p, node, states); } //animated transforms have to be applied @@ -572,16 +572,16 @@ void QSvgStyle::apply(QPainter *p, const QRectF &rect, QSvgNode *node, QSvgExtra // Apply the animateTransforms after and including the last one with additive="replace". for (; itr != animateTransforms.constEnd(); ++itr) { if ((*itr)->animActive(totalTimeElapsed)) - (*itr)->apply(p, rect, node, states); + (*itr)->apply(p, node, states); } } if (opacity) { - opacity->apply(p, rect, node, states); + opacity->apply(p, node, states); } if (compop) { - compop->apply(p, rect, node, states); + compop->apply(p, node, states); } } @@ -655,7 +655,7 @@ void QSvgAnimateTransform::setArgs(TransformType type, Additive additive, const m_count = args.count() / 3; } -void QSvgAnimateTransform::apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &) +void QSvgAnimateTransform::apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &) { m_oldWorldTransform = p->worldTransform(); resolveMatrix(node); @@ -669,7 +669,7 @@ void QSvgAnimateTransform::revert(QPainter *p, QSvgExtraStates &) m_transformApplied = false; } -void QSvgAnimateTransform::resolveMatrix(QSvgNode *node) +void QSvgAnimateTransform::resolveMatrix(const QSvgNode *node) { static const qreal deg2rad = qreal(0.017453292519943295769); qreal totalTimeElapsed = node->document()->currentElapsed(); @@ -834,7 +834,7 @@ void QSvgAnimateColor::setRepeatCount(qreal repeatCount) m_repeatCount = repeatCount; } -void QSvgAnimateColor::apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &) +void QSvgAnimateColor::apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &) { qreal totalTimeElapsed = node->document()->currentElapsed(); if (totalTimeElapsed < m_from || m_finished) @@ -912,7 +912,7 @@ QSvgOpacityStyle::QSvgOpacityStyle(qreal opacity) } -void QSvgOpacityStyle::apply(QPainter *p, const QRectF &, QSvgNode *, QSvgExtraStates &) +void QSvgOpacityStyle::apply(QPainter *p, const QSvgNode *, QSvgExtraStates &) { m_oldOpacity = p->opacity(); p->setOpacity(m_opacity * m_oldOpacity); diff --git a/src/svg/qsvgstyle_p.h b/src/svg/qsvgstyle_p.h index 202de93..af3b4e5 100644 --- a/src/svg/qsvgstyle_p.h +++ b/src/svg/qsvgstyle_p.h @@ -172,7 +172,7 @@ public: }; public: virtual ~QSvgStyleProperty(); - virtual void apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &states) =0; + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states) = 0; virtual void revert(QPainter *p, QSvgExtraStates &states) =0; virtual Type type() const=0; }; @@ -181,7 +181,7 @@ class QSvgFillStyleProperty : public QSvgStyleProperty { public: virtual QBrush brush(QPainter *p, QSvgExtraStates &states) = 0; - virtual void apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &states); + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); virtual void revert(QPainter *p, QSvgExtraStates &states); }; @@ -189,7 +189,7 @@ class QSvgQualityStyle : public QSvgStyleProperty { public: QSvgQualityStyle(int color); - virtual void apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &states); + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); virtual void revert(QPainter *p, QSvgExtraStates &states); virtual Type type() const; private: @@ -221,7 +221,7 @@ class QSvgOpacityStyle : public QSvgStyleProperty { public: QSvgOpacityStyle(qreal opacity); - virtual void apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &states); + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); virtual void revert(QPainter *p, QSvgExtraStates &states); virtual Type type() const; private: @@ -233,7 +233,7 @@ class QSvgFillStyle : public QSvgStyleProperty { public: QSvgFillStyle(); - virtual void apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &states); + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); virtual void revert(QPainter *p, QSvgExtraStates &states); virtual Type type() const; @@ -306,7 +306,7 @@ class QSvgViewportFillStyle : public QSvgStyleProperty { public: QSvgViewportFillStyle(const QBrush &brush); - virtual void apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &states); + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); virtual void revert(QPainter *p, QSvgExtraStates &states); virtual Type type() const; @@ -330,7 +330,7 @@ public: QSvgFontStyle(QSvgFont *font, QSvgTinyDocument *doc); QSvgFontStyle(); - virtual void apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &states); + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); virtual void revert(QPainter *p, QSvgExtraStates &states); virtual Type type() const; @@ -410,7 +410,7 @@ class QSvgStrokeStyle : public QSvgStyleProperty { public: QSvgStrokeStyle(); - virtual void apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &states); + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); virtual void revert(QPainter *p, QSvgExtraStates &states); virtual Type type() const; @@ -617,7 +617,7 @@ class QSvgTransformStyle : public QSvgStyleProperty { public: QSvgTransformStyle(const QTransform &transform); - virtual void apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &states); + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); virtual void revert(QPainter *p, QSvgExtraStates &states); virtual Type type() const; @@ -654,7 +654,7 @@ public: void setArgs(TransformType type, Additive additive, const QVector &args); void setFreeze(bool freeze); void setRepeatCount(qreal repeatCount); - virtual void apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &states); + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); virtual void revert(QPainter *p, QSvgExtraStates &states); virtual Type type() const; QSvgAnimateTransform::Additive additiveType() const @@ -688,7 +688,7 @@ public: } protected: - void resolveMatrix(QSvgNode *node); + void resolveMatrix(const QSvgNode *node); private: qreal m_from, m_to, m_by; qreal m_totalRunningTime; @@ -712,7 +712,7 @@ public: void setArgs(bool fill, const QList &colors); void setFreeze(bool freeze); void setRepeatCount(qreal repeatCount); - virtual void apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &states); + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); virtual void revert(QPainter *p, QSvgExtraStates &states); virtual Type type() const; private: @@ -732,7 +732,7 @@ class QSvgCompOpStyle : public QSvgStyleProperty { public: QSvgCompOpStyle(QPainter::CompositionMode mode); - virtual void apply(QPainter *p, const QRectF &, QSvgNode *node, QSvgExtraStates &states); + virtual void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); virtual void revert(QPainter *p, QSvgExtraStates &states); virtual Type type() const; @@ -766,7 +766,7 @@ public: {} ~QSvgStyle(); - void apply(QPainter *p, const QRectF &rect, QSvgNode *node, QSvgExtraStates &states); + void apply(QPainter *p, const QSvgNode *node, QSvgExtraStates &states); void revert(QPainter *p, QSvgExtraStates &states); QSvgRefCounter quality; QSvgRefCounter fill; diff --git a/src/svg/qsvgtinydocument.cpp b/src/svg/qsvgtinydocument.cpp index 17618f7..b21b99f 100644 --- a/src/svg/qsvgtinydocument.cpp +++ b/src/svg/qsvgtinydocument.cpp @@ -277,7 +277,7 @@ void QSvgTinyDocument::draw(QPainter *p, const QString &id, p->save(); - const QRectF elementBounds = node->transformedBounds(QTransform()); + const QRectF elementBounds = node->transformedBounds(); mapSourceToTarget(p, bounds, elementBounds); QTransform originalTransform = p->worldTransform(); @@ -299,7 +299,7 @@ void QSvgTinyDocument::draw(QPainter *p, const QString &id, for (int i = parentApplyStack.size() - 1; i >= 0; --i) parentApplyStack[i]->applyStyle(p, m_states); - + // Reset the world transform so that our parents don't affect // the position QTransform currentTransform = p->worldTransform(); @@ -432,8 +432,7 @@ QRectF QSvgTinyDocument::boundsOnElement(const QString &id) const const QSvgNode *node = scopeNode(id); if (!node) node = this; - - return node->transformedBounds(QTransform()); + return node->transformedBounds(); } bool QSvgTinyDocument::elementExists(const QString &id) const diff --git a/src/svg/qsvgtinydocument_p.h b/src/svg/qsvgtinydocument_p.h index c03c798..3b40770 100644 --- a/src/svg/qsvgtinydocument_p.h +++ b/src/svg/qsvgtinydocument_p.h @@ -173,9 +173,8 @@ inline bool QSvgTinyDocument::heightPercent() const inline QRectF QSvgTinyDocument::viewBox() const { - if (m_viewBox.isNull()) { - m_viewBox = transformedBounds(QTransform()); - } + if (m_viewBox.isNull()) + m_viewBox = transformedBounds(); return m_viewBox; } diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp index 16dd2b4..106fd8c 100644 --- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp +++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp @@ -74,6 +74,7 @@ private slots: void nestedQXmlStreamReader() const; void stylePropagation() const; void matrixForElement() const; + void boundsOnElement() const; void gradientStops() const; void gradientRefs(); void fillRule(); @@ -470,6 +471,36 @@ void tst_QSvgRenderer::matrixForElement() const compareTransforms(QTransform(painter.worldMatrix()), QTransform(renderer.matrixForElement(QLatin1String("firkant")))); } +void tst_QSvgRenderer::boundsOnElement() const +{ + QByteArray data("" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + ""); + + qreal sqrt2 = qSqrt(2); + QSvgRenderer renderer(data); + QCOMPARE(renderer.boundsOnElement(QLatin1String("sjokade")), QRectF(-10 * sqrt2, -10 * sqrt2, 20 * sqrt2, 20 * sqrt2)); + QCOMPARE(renderer.boundsOnElement(QLatin1String("kaviar")), QRectF(-10 * sqrt2, -10 * sqrt2, 20 * sqrt2, 20 * sqrt2)); + QCOMPARE(renderer.boundsOnElement(QLatin1String("nugatti")), QRectF(-11, -11, 22, 22)); + QCOMPARE(renderer.boundsOnElement(QLatin1String("nutella")), QRectF(-10 * sqrt2, -10 * sqrt2, 20 * sqrt2, 20 * sqrt2)); + QCOMPARE(renderer.boundsOnElement(QLatin1String("baconost")), QRectF(-10 * sqrt2, -10 * sqrt2, 20 * sqrt2, 20 * sqrt2)); + QCOMPARE(renderer.boundsOnElement(QLatin1String("hapaa")), QRectF(-13, -9, 22, 22)); + QCOMPARE(renderer.boundsOnElement(QLatin1String("prim")), QRectF(-10 * sqrt2 - 3, -10 * sqrt2 + 1, 20 * sqrt2, 20 * sqrt2)); +} + void tst_QSvgRenderer::gradientStops() const { { -- cgit v0.12 From 1866cb339a53893792e4c3b894510feb7744324f Mon Sep 17 00:00:00 2001 From: ck Date: Mon, 8 Mar 2010 18:01:19 +0100 Subject: Assistant: Fix compile warning for empty header. Reviewed-by: kh1 --- tools/assistant/tools/assistant/assistant.pro | 16 +++++++++++----- tools/assistant/tools/assistant/centralwidget.cpp | 8 ++++++-- tools/assistant/tools/assistant/helpviewer_qtb.cpp | 6 ------ tools/assistant/tools/assistant/helpviewer_qtb.h | 6 ------ tools/assistant/tools/assistant/helpviewer_qwv.cpp | 4 ---- tools/assistant/tools/assistant/helpviewer_qwv.h | 6 ------ 6 files changed, 17 insertions(+), 29 deletions(-) diff --git a/tools/assistant/tools/assistant/assistant.pro b/tools/assistant/tools/assistant/assistant.pro index ff0ecc5..bc4d495 100644 --- a/tools/assistant/tools/assistant/assistant.pro +++ b/tools/assistant/tools/assistant/assistant.pro @@ -30,8 +30,6 @@ HEADERS += aboutdialog.h \ filternamedialog.h \ helpenginewrapper.h \ helpviewer.h \ - helpviewer_qtb.h \ - helpviewer_qwv.h \ indexwindow.h \ installdialog.h \ mainwindow.h \ @@ -43,6 +41,11 @@ HEADERS += aboutdialog.h \ tracer.h \ xbelsupport.h \ ../shared/collectionconfiguration.h +contains(QT_CONFIG, webkit) { + HEADERS += helpviewer_qwv.h +} else { + HEADERS += helpviewer_qtb.h + } win32:HEADERS += remotecontrol_win.h SOURCES += aboutdialog.cpp \ @@ -59,8 +62,6 @@ SOURCES += aboutdialog.cpp \ filternamedialog.cpp \ helpenginewrapper.cpp \ helpviewer.cpp \ - helpviewer_qtb.cpp \ - helpviewer_qwv.cpp \ indexwindow.cpp \ installdialog.cpp \ main.cpp \ @@ -71,7 +72,12 @@ SOURCES += aboutdialog.cpp \ searchwidget.cpp \ topicchooser.cpp \ xbelsupport.cpp \ - ../shared/collectionconfiguration.cpp \ + ../shared/collectionconfiguration.cpp + contains(QT_CONFIG, webkit) { + SOURCES += helpviewer_qwv.cpp +} else { + SOURCES += helpviewer_qtb.cpp +} FORMS += bookmarkdialog.ui \ bookmarkmanagerwidget.ui \ diff --git a/tools/assistant/tools/assistant/centralwidget.cpp b/tools/assistant/tools/assistant/centralwidget.cpp index f56e9e3..2359479 100644 --- a/tools/assistant/tools/assistant/centralwidget.cpp +++ b/tools/assistant/tools/assistant/centralwidget.cpp @@ -43,12 +43,16 @@ #include "centralwidget.h" #include "findwidget.h" #include "helpenginewrapper.h" -#include "helpviewer_qtb.h" -#include "helpviewer_qwv.h" #include "searchwidget.h" #include "mainwindow.h" #include "../shared/collectionconfiguration.h" +#if defined(QT_NO_WEBKIT) +#include "helpviewer_qtb.h" +#else +#include "helpviewer_qwv.h" +#endif // QT_NO_WEBKIT + #include #include diff --git a/tools/assistant/tools/assistant/helpviewer_qtb.cpp b/tools/assistant/tools/assistant/helpviewer_qtb.cpp index bba2850..07b89eb 100644 --- a/tools/assistant/tools/assistant/helpviewer_qtb.cpp +++ b/tools/assistant/tools/assistant/helpviewer_qtb.cpp @@ -40,8 +40,6 @@ ****************************************************************************/ #include "helpviewer_qtb.h" -#if defined(QT_NO_WEBKIT) - #include "centralwidget.h" #include "helpenginewrapper.h" #include "tracer.h" @@ -287,7 +285,3 @@ bool HelpViewer::eventFilter(QObject *obj, QEvent *event) return true; return QTextBrowser::eventFilter(obj, event); } - -QT_END_NAMESPACE - -#endif // QT_NO_WEBKIT diff --git a/tools/assistant/tools/assistant/helpviewer_qtb.h b/tools/assistant/tools/assistant/helpviewer_qtb.h index 5b38870..a05782c 100644 --- a/tools/assistant/tools/assistant/helpviewer_qtb.h +++ b/tools/assistant/tools/assistant/helpviewer_qtb.h @@ -41,10 +41,6 @@ #ifndef HELPVIEWERQTB_H #define HELPVIEWERQTB_H -#include - -#if defined(QT_NO_WEBKIT) - #include "helpviewer.h" #include @@ -111,6 +107,4 @@ private: QT_END_NAMESPACE -#endif // QT_NO_WEBKIT - #endif // HELPVIEWERQTB_H diff --git a/tools/assistant/tools/assistant/helpviewer_qwv.cpp b/tools/assistant/tools/assistant/helpviewer_qwv.cpp index a656416..582d013 100644 --- a/tools/assistant/tools/assistant/helpviewer_qwv.cpp +++ b/tools/assistant/tools/assistant/helpviewer_qwv.cpp @@ -41,8 +41,6 @@ #include "helpviewer_qwv.h" -#if !defined(QT_NO_WEBKIT) - #include "centralwidget.h" #include "helpenginewrapper.h" #include "tracer.h" @@ -385,5 +383,3 @@ void HelpViewer::setLoadFinished(bool ok) } QT_END_NAMESPACE - -#endif // !QT_NO_WEBKIT diff --git a/tools/assistant/tools/assistant/helpviewer_qwv.h b/tools/assistant/tools/assistant/helpviewer_qwv.h index fbfbaac..41ee553 100644 --- a/tools/assistant/tools/assistant/helpviewer_qwv.h +++ b/tools/assistant/tools/assistant/helpviewer_qwv.h @@ -42,10 +42,6 @@ #ifndef HELPVIEWERQWV_H #define HELPVIEWERQWV_H -#include - -#if !defined(QT_NO_WEBKIT) - #include "helpviewer.h" #include @@ -120,6 +116,4 @@ private: QT_END_NAMESPACE -#endif // !QT_NO_WEBKIT - #endif // HELPVIEWERQWV_H -- cgit v0.12 From 5f0912e71b6f10c2987eccbc62ea36ab5928f9b8 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 8 Mar 2010 15:58:27 +0100 Subject: Always copy the qmldir files into the build directory ... even when -prefix is set --- src/imports/multimedia/multimedia.pro | 4 ++-- src/imports/qimportbase.pri | 2 +- src/imports/webkit/webkit.pro | 4 ++-- src/imports/widgets/widgets.pro | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/imports/multimedia/multimedia.pro b/src/imports/multimedia/multimedia.pro index 117aa9b..f7a1d1b 100644 --- a/src/imports/multimedia/multimedia.pro +++ b/src/imports/multimedia/multimedia.pro @@ -1,5 +1,5 @@ TARGET = multimedia -TARGETPATH = $$[QT_INSTALL_IMPORTS]/Qt/multimedia +TARGETPATH = Qt/multimedia include(../qimportbase.pri) QT += multimedia declarative @@ -21,6 +21,6 @@ QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/Qt/multimedia target.path = $$TARGETPATH qmldir.files += $$QT_BUILD_TREE/imports/Qt/multimedia/qmldir -qmldir.path += $$TARGETPATH +qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH INSTALLS += target qmldir diff --git a/src/imports/qimportbase.pri b/src/imports/qimportbase.pri index 363dd88..5433059 100644 --- a/src/imports/qimportbase.pri +++ b/src/imports/qimportbase.pri @@ -12,7 +12,7 @@ isEmpty(TARGET) { QMLDIRFILE = $${_PRO_FILE_PWD_}/qmldir copy2build.input = QMLDIRFILE -copy2build.output = $$TARGETPATH/qmldir +copy2build.output = $$QT_BUILD_TREE/imports/$$TARGETPATH/qmldir isEmpty(vcproj):copy2build.variable_out = PRE_TARGETDEPS copy2build.commands = $$QMAKE_COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT} copy2build.name = COPY ${QMAKE_FILE_IN} diff --git a/src/imports/webkit/webkit.pro b/src/imports/webkit/webkit.pro index 76b46f1..fdc12cc 100644 --- a/src/imports/webkit/webkit.pro +++ b/src/imports/webkit/webkit.pro @@ -1,5 +1,5 @@ TARGET = webkitqmlplugin -TARGETPATH = $$[QT_INSTALL_IMPORTS]/org/webkit +TARGETPATH = org/webkit include(../qimportbase.pri) QT += webkit declarative @@ -14,6 +14,6 @@ QTDIR_build:DESTDIR = $$TARGETPATH target.path = $$TARGETPATH qmldir.files += $$QT_BUILD_TREE/imports/org/webkit/qmldir -qmldir.path += $$TARGETPATH +qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH INSTALLS += target qmldir diff --git a/src/imports/widgets/widgets.pro b/src/imports/widgets/widgets.pro index b98be59..02223d7 100644 --- a/src/imports/widgets/widgets.pro +++ b/src/imports/widgets/widgets.pro @@ -1,5 +1,5 @@ TARGET = widgets -TARGETPATH = $$[QT_INSTALL_IMPORTS]/Qt/widgets +TARGETPATH = Qt/widgets include(../qimportbase.pri) QT += declarative @@ -17,6 +17,6 @@ target.path = $$TARGETPATH # install qmldir file qmldir.files += qmldir -qmldir.path = $$TARGETPATH +qmldir.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH INSTALLS += target qmldir -- cgit v0.12 From d4abbfdd1959a65ecfb997c962aa8ea132c77eaf Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Tue, 9 Mar 2010 09:38:41 +1000 Subject: Use one thread for all instances. Task-number: QT-2831 --- src/declarative/util/qdeclarativexmllistmodel.cpp | 34 +++++++++++++---------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/declarative/util/qdeclarativexmllistmodel.cpp b/src/declarative/util/qdeclarativexmllistmodel.cpp index 53e08b0..49dbb27 100644 --- a/src/declarative/util/qdeclarativexmllistmodel.cpp +++ b/src/declarative/util/qdeclarativexmllistmodel.cpp @@ -61,9 +61,6 @@ QT_BEGIN_NAMESPACE - - - typedef QPair QDeclarativeXmlListRange; /*! @@ -114,9 +111,6 @@ class QDeclarativeXmlQuery : public QThread { Q_OBJECT public: - QDeclarativeXmlQuery(QObject *parent=0) - : QThread(parent), m_quit(false), m_restart(false), m_abort(false), m_queryId(0) { - } ~QDeclarativeXmlQuery() { m_mutex.lock(); m_quit = true; @@ -126,6 +120,11 @@ public: wait(); } + static QDeclarativeXmlQuery *instance() { + static QDeclarativeXmlQuery *query = new QDeclarativeXmlQuery; + return query; + } + void abort() { QMutexLocker locker(&m_mutex); m_abort = true; @@ -164,6 +163,11 @@ public: return m_removedItemRanges; } +private: + QDeclarativeXmlQuery(QObject *parent=0) + : QThread(parent), m_quit(false), m_restart(false), m_abort(false), m_queryId(0) { + } + Q_SIGNALS: void queryCompleted(int queryId, int size); @@ -213,6 +217,8 @@ private: QList m_removedItemRanges; }; +//Q_GLOBAL_STATIC(QDeclarativeXmlQuery, QDeclarativeXmlQuery::instance()); + void QDeclarativeXmlQuery::doQueryJob() { QString r; @@ -404,7 +410,6 @@ public: QNetworkReply *reply; QDeclarativeXmlListModel::Status status; qreal progress; - QDeclarativeXmlQuery qmlXmlQuery; int queryId; QList roleObjects; static void append_role(QDeclarativeListProperty *list, QDeclarativeXmlListModelRole *role); @@ -488,8 +493,7 @@ void QDeclarativeXmlListModelPrivate::clear_role(QDeclarativeListPropertyqmlXmlQuery, SIGNAL(queryCompleted(int,int)), + connect(QDeclarativeXmlQuery::instance(), SIGNAL(queryCompleted(int,int)), this, SLOT(queryCompleted(int,int))); } @@ -722,7 +726,7 @@ void QDeclarativeXmlListModel::reload() if (!d->isComponentComplete) return; - d->qmlXmlQuery.abort(); + QDeclarativeXmlQuery::instance()->abort(); d->queryId = -1; int count = d->size; @@ -754,7 +758,7 @@ void QDeclarativeXmlListModel::reload() } if (!d->xml.isEmpty()) { - d->queryId = d->qmlXmlQuery.doQuery(d->query, d->namespaces, d->xml.toUtf8(), &d->roleObjects); + d->queryId = QDeclarativeXmlQuery::instance()->doQuery(d->query, d->namespaces, d->xml.toUtf8(), &d->roleObjects); d->progress = 1.0; d->status = Ready; emit progressChanged(d->progress); @@ -785,7 +789,7 @@ void QDeclarativeXmlListModel::requestFinished() } else { d->status = Ready; QByteArray data = d->reply->readAll(); - d->queryId = d->qmlXmlQuery.doQuery(d->query, d->namespaces, data, &d->roleObjects); + d->queryId = QDeclarativeXmlQuery::instance()->doQuery(d->query, d->namespaces, data, &d->roleObjects); disconnect(d->reply, 0, this, 0); d->reply->deleteLater(); d->reply = 0; @@ -811,10 +815,10 @@ void QDeclarativeXmlListModel::queryCompleted(int id, int size) return; bool sizeChanged = size != d->size; d->size = size; - d->data = d->qmlXmlQuery.modelData(); + d->data = QDeclarativeXmlQuery::instance()->modelData(); - QList removed = d->qmlXmlQuery.removedItemRanges(); - QList inserted = d->qmlXmlQuery.insertedItemRanges(); + QList removed = QDeclarativeXmlQuery::instance()->removedItemRanges(); + QList inserted = QDeclarativeXmlQuery::instance()->insertedItemRanges(); for (int i=0; i Date: Tue, 9 Mar 2010 10:33:52 +1000 Subject: Minor anchors.fill optimization. Task-number: QT-716 --- .../graphicsitems/qdeclarativeanchors.cpp | 10 ++++++++-- .../graphicsitems/qdeclarativeanchors_p_p.h | 1 + src/declarative/graphicsitems/qdeclarativeitem.cpp | 21 +++++++++++++++++++++ src/declarative/graphicsitems/qdeclarativeitem.h | 2 ++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeanchors.cpp b/src/declarative/graphicsitems/qdeclarativeanchors.cpp index 274d778..dc1f09d 100644 --- a/src/declarative/graphicsitems/qdeclarativeanchors.cpp +++ b/src/declarative/graphicsitems/qdeclarativeanchors.cpp @@ -168,8 +168,7 @@ void QDeclarativeAnchorsPrivate::fillChanged() } else if (fill->parentItem() == item->parentItem()) { //siblings setItemPos(QPointF(fill->x()+leftMargin, fill->y()+topMargin)); } - setItemWidth(fill->width()-leftMargin-rightMargin); - setItemHeight(fill->height()-topMargin-bottomMargin); + setItemSize(QSizeF(fill->width()-leftMargin-rightMargin, fill->height()-topMargin-bottomMargin)); --updatingFill; } else { @@ -314,6 +313,13 @@ void QDeclarativeAnchorsPrivate::setItemPos(const QPointF &v) updatingMe = false; } +void QDeclarativeAnchorsPrivate::setItemSize(const QSizeF &v) +{ + updatingMe = true; + item->setSize(v); + updatingMe = false; +} + void QDeclarativeAnchorsPrivate::updateMe() { if (updatingMe) { diff --git a/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h b/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h index d9d7ffa..ca32211 100644 --- a/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h @@ -122,6 +122,7 @@ public: void setItemX(qreal); void setItemY(qreal); void setItemPos(const QPointF &); + void setItemSize(const QSizeF &); void updateOnComplete(); void updateMe(); diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index b0a7570..ff3a790 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -2855,6 +2855,27 @@ bool QDeclarativeItem::heightValid() const return d->heightValid; } +/*! \internal */ +void QDeclarativeItem::setSize(const QSizeF &size) +{ + Q_D(QDeclarativeItem); + d->heightValid = true; + d->widthValid = true; + + if (d->height == size.height() && d->width == size.width()) + return; + + qreal oldHeight = d->height; + qreal oldWidth = d->width; + + prepareGeometryChange(); + d->height = size.height(); + d->width = size.width(); + + geometryChanged(QRectF(x(), y(), width(), height()), + QRectF(x(), y(), oldWidth, oldHeight)); +} + /*! \qmlproperty bool Item::wantsFocus diff --git a/src/declarative/graphicsitems/qdeclarativeitem.h b/src/declarative/graphicsitems/qdeclarativeitem.h index f6fedc7..d326925 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.h +++ b/src/declarative/graphicsitems/qdeclarativeitem.h @@ -143,6 +143,8 @@ public: void resetHeight(); qreal implicitHeight() const; + void setSize(const QSizeF &size); + TransformOrigin transformOrigin() const; void setTransformOrigin(TransformOrigin); -- cgit v0.12 From 3deecc3084cd7fe3a1bb3f5941e5ec6eb66f97fa Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Tue, 9 Mar 2010 11:02:59 +1000 Subject: Add highlightRangeMode and snapMode to GridView. Brings ListView and GridView APIs closer. Task-number: QTBUG-8779 --- .../graphicsitems/qdeclarativegridview.cpp | 377 +++++++++++++++++++-- .../graphicsitems/qdeclarativegridview_p.h | 27 ++ .../data/gridview-enforcerange.qml | 56 +++ .../tst_qdeclarativegridview.cpp | 48 +++ 4 files changed, 488 insertions(+), 20 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativegridview/data/gridview-enforcerange.qml diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 76ad9b7..60ffbe2 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -50,6 +50,8 @@ #include #include +#include + QT_BEGIN_NAMESPACE @@ -97,12 +99,13 @@ public: : currentItem(0), flow(QDeclarativeGridView::LeftToRight) , visiblePos(0), visibleIndex(0) , currentIndex(-1) , cellWidth(100), cellHeight(100), columns(1), requestedIndex(-1) + , highlightRangeStart(0), highlightRangeEnd(0), highlightRange(QDeclarativeGridView::NoHighlightRange) , highlightComponent(0), highlight(0), trackedItem(0) , moveReason(Other), buffer(0), highlightXAnimator(0), highlightYAnimator(0) - , bufferMode(NoBuffer) + , bufferMode(NoBuffer), snapMode(QDeclarativeGridView::NoSnap) , ownModel(false), wrap(false), autoHighlight(true) , fixCurrentVisibility(false), lazyRelease(false), layoutScheduled(false) - , deferredRelease(false) {} + , deferredRelease(false), haveHighlightRange(false) {} void init(); void clear(); @@ -119,6 +122,7 @@ public: void createHighlight(); void updateHighlight(); void updateCurrent(int modelIndex); + void fixupPosition(); FxGridItem *visibleItem(int modelIndex) const { if (modelIndex >= visibleIndex && modelIndex < visibleIndex + visibleItems.count()) { @@ -236,7 +240,33 @@ public: return -1; // Not in visibleList } - void itemGeometryChanged(QDeclarativeItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) { + qreal snapPosAt(qreal pos) { + qreal snapPos = 0; + if (!visibleItems.isEmpty()) { + pos += rowSize()/2; + snapPos = visibleItems.first()->rowPos() - visibleIndex / columns * rowSize(); + snapPos = pos - fmodf(pos - snapPos, qreal(rowSize())); + } + return snapPos; + } + + int snapIndex() { + int index = currentIndex; + for (int i = 0; i < visibleItems.count(); ++i) { + FxGridItem *item = visibleItems[i]; + if (item->index == -1) + continue; + qreal itemTop = item->rowPos(); + if (itemTop >= highlight->rowPos()-rowSize()/2 && itemTop < highlight->rowPos()+rowSize()/2) { + index = item->index; + if (item->colPos() >= highlight->colPos()-colSize()/2 && item->colPos() < highlight->colPos()+colSize()/2) + return item->index; + } + } + return index; + } + + virtual void itemGeometryChanged(QDeclarativeItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) { Q_Q(const QDeclarativeGridView); QDeclarativeFlickablePrivate::itemGeometryChanged(item, newGeometry, oldGeometry); if (item == q) { @@ -249,6 +279,11 @@ public: } } } + + virtual void fixup(AxisData &data, qreal minExtent, qreal maxExtent); + virtual void flick(AxisData &data, qreal minExtent, qreal maxExtent, qreal vSize, + QDeclarativeTimeLineCallback::Callback fixupCallback, qreal velocity); + // for debugging only void checkVisible() const { int skip = 0; @@ -277,6 +312,9 @@ public: int cellHeight; int columns; int requestedIndex; + qreal highlightRangeStart; + qreal highlightRangeEnd; + QDeclarativeGridView::HighlightRangeMode highlightRange; QDeclarativeComponent *highlightComponent; FxGridItem *highlight; FxGridItem *trackedItem; @@ -287,6 +325,7 @@ public: QDeclarativeEaseFollow *highlightYAnimator; enum BufferMode { NoBuffer = 0x00, BufferBefore = 0x01, BufferAfter = 0x02 }; BufferMode bufferMode; + QDeclarativeGridView::SnapMode snapMode; bool ownModel : 1; bool wrap : 1; @@ -295,6 +334,7 @@ public: bool lazyRelease : 1; bool layoutScheduled : 1; bool deferredRelease : 1; + bool haveHighlightRange : 1; }; void QDeclarativeGridViewPrivate::init() @@ -683,6 +723,122 @@ void QDeclarativeGridViewPrivate::updateCurrent(int modelIndex) releaseItem(oldCurrentItem); } +void QDeclarativeGridViewPrivate::fixupPosition() +{ + moveReason = Other; + if (flow == QDeclarativeGridView::LeftToRight) + fixupY(); + else + fixupX(); +} + +void QDeclarativeGridViewPrivate::fixup(AxisData &data, qreal minExtent, qreal maxExtent) +{ + Q_Q(QDeclarativeGridView); + + if ((&data == &vData && !q->yflick()) + || (&data == &hData && !q->xflick()) + || data.move.timeLine()) + return; + + int oldDuration = fixupDuration; + fixupDuration = moveReason == Mouse ? fixupDuration : 0; + + if (haveHighlightRange && highlightRange == QDeclarativeGridView::StrictlyEnforceRange) { + if (currentItem && currentItem->rowPos() - position() != highlightRangeStart) { + qreal pos = currentItem->rowPos() - highlightRangeStart; + timeline.reset(data.move); + if (fixupDuration) + timeline.move(data.move, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2); + else + data.move.setValue(-pos); + vTime = timeline.time(); + } + } else if (snapMode != QDeclarativeGridView::NoSnap) { + qreal pos = qMax(qMin(snapPosAt(position()) - highlightRangeStart, -maxExtent), -minExtent); + qreal dist = qAbs(data.move + pos); + if (dist > 0) { + timeline.reset(data.move); + if (fixupDuration) + timeline.move(data.move, -pos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2); + else + data.move.setValue(-pos); + vTime = timeline.time(); + } + } else { + QDeclarativeFlickablePrivate::fixup(data, minExtent, maxExtent); + } + fixupDuration = oldDuration; +} + +void QDeclarativeGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal maxExtent, qreal vSize, + QDeclarativeTimeLineCallback::Callback fixupCallback, qreal velocity) +{ + Q_Q(QDeclarativeGridView); + + moveReason = Mouse; + if ((!haveHighlightRange || highlightRange != QDeclarativeGridView::StrictlyEnforceRange) && snapMode == QDeclarativeGridView::NoSnap) { + QDeclarativeFlickablePrivate::flick(data, minExtent, maxExtent, vSize, fixupCallback, velocity); + return; + } + qreal maxDistance = -1; + // -ve velocity means list is moving up + if (velocity > 0) { + if (snapMode == QDeclarativeGridView::SnapOneRow) { + if (FxGridItem *item = firstVisibleItem()) + maxDistance = qAbs(item->rowPos() + data.move.value()); + } else if (data.move.value() < minExtent) { + maxDistance = qAbs(minExtent - data.move.value() + (overShoot?overShootDistance(velocity, vSize):0)); + } + if (snapMode != QDeclarativeGridView::SnapToRow && highlightRange != QDeclarativeGridView::StrictlyEnforceRange) + data.flickTarget = minExtent; + } else { + if (snapMode == QDeclarativeGridView::SnapOneRow) { + qreal pos = snapPosAt(-data.move.value()) + rowSize(); + maxDistance = qAbs(pos + data.move.value()); + } else if (data.move.value() > maxExtent) { + maxDistance = qAbs(maxExtent - data.move.value()) + (overShoot?overShootDistance(velocity, vSize):0); + } + if (snapMode != QDeclarativeGridView::SnapToRow && highlightRange != QDeclarativeGridView::StrictlyEnforceRange) + data.flickTarget = maxExtent; + } + if (maxDistance > 0 && (snapMode != QDeclarativeGridView::NoSnap || highlightRange == QDeclarativeGridView::StrictlyEnforceRange)) { + // This mode requires the grid to stop exactly on a row boundary. + qreal v = velocity; + if (maxVelocity != -1 && maxVelocity < qAbs(v)) { + if (v < 0) + v = -maxVelocity; + else + v = maxVelocity; + } + qreal accel = deceleration; + qreal v2 = v * v; + qreal maxAccel = v2 / (2.0f * maxDistance); + qreal overshootDist = 0.0; + if (maxAccel < accel) { + qreal dist = v2 / (accel * 2.0); + if (v > 0) + dist = -dist; + data.flickTarget = -snapPosAt(-(data.move.value() - highlightRangeStart) + dist) + highlightRangeStart; + dist = -data.flickTarget + data.move.value(); + accel = v2 / (2.0f * qAbs(dist)); + } else { + data.flickTarget = velocity > 0 ? minExtent : maxExtent; + overshootDist = overShoot ? overShootDistance(v, vSize) : 0; + } + timeline.reset(data.move); + timeline.accel(data.move, v, accel, maxDistance + overshootDist); + timeline.callback(QDeclarativeTimeLineCallback(&data.move, fixupCallback, this)); + flicked = true; + emit q->flickingChanged(); + emit q->flickStarted(); + } else { + timeline.reset(data.move); + fixup(data, minExtent, maxExtent); + } +} + + //---------------------------------------------------------------------------- /*! @@ -1031,6 +1187,87 @@ void QDeclarativeGridView::setHighlightFollowsCurrentItem(bool autoHighlight) } /*! + \qmlproperty real GridView::preferredHighlightBegin + \qmlproperty real GridView::preferredHighlightEnd + \qmlproperty enumeration GridView::highlightRangeMode + + These properties set the preferred range of the highlight (current item) + within the view. + + Note that this is the correct way to influence where the + current item ends up when the view scrolls. For example, if you want the + currently selected item to be in the middle of the list, then set the + highlight range to be where the middle item would go. Then, when the view scrolls, + the currently selected item will be the item at that spot. This also applies to + when the currently selected item changes - it will scroll to within the preferred + highlight range. Furthermore, the behaviour of the current item index will occur + whether or not a highlight exists. + + If highlightRangeMode is set to \e ApplyRange the view will + attempt to maintain the highlight within the range, however + the highlight can move outside of the range at the ends of the list + or due to a mouse interaction. + + If highlightRangeMode is set to \e StrictlyEnforceRange the highlight will never + move outside of the range. This means that the current item will change + if a keyboard or mouse action would cause the highlight to move + outside of the range. + + The default value is \e NoHighlightRange. + + Note that a valid range requires preferredHighlightEnd to be greater + than or equal to preferredHighlightBegin. +*/ +qreal QDeclarativeGridView::preferredHighlightBegin() const +{ + Q_D(const QDeclarativeGridView); + return d->highlightRangeStart; +} + +void QDeclarativeGridView::setPreferredHighlightBegin(qreal start) +{ + Q_D(QDeclarativeGridView); + if (d->highlightRangeStart == start) + return; + d->highlightRangeStart = start; + d->haveHighlightRange = d->highlightRange != NoHighlightRange && d->highlightRangeStart <= d->highlightRangeEnd; + emit preferredHighlightBeginChanged(); +} + +qreal QDeclarativeGridView::preferredHighlightEnd() const +{ + Q_D(const QDeclarativeGridView); + return d->highlightRangeEnd; +} + +void QDeclarativeGridView::setPreferredHighlightEnd(qreal end) +{ + Q_D(QDeclarativeGridView); + if (d->highlightRangeEnd == end) + return; + d->highlightRangeEnd = end; + d->haveHighlightRange = d->highlightRange != NoHighlightRange && d->highlightRangeStart <= d->highlightRangeEnd; + emit preferredHighlightEndChanged(); +} + +QDeclarativeGridView::HighlightRangeMode QDeclarativeGridView::highlightRangeMode() const +{ + Q_D(const QDeclarativeGridView); + return d->highlightRange; +} + +void QDeclarativeGridView::setHighlightRangeMode(HighlightRangeMode mode) +{ + Q_D(QDeclarativeGridView); + if (d->highlightRange == mode) + return; + d->highlightRange = mode; + d->haveHighlightRange = d->highlightRange != NoHighlightRange && d->highlightRangeStart <= d->highlightRangeEnd; + emit highlightRangeModeChanged(); +} + + +/*! \qmlproperty enumeration GridView::flow This property holds the flow of the grid. @@ -1153,6 +1390,36 @@ void QDeclarativeGridView::setCellHeight(int cellHeight) d->layout(); } } +/*! + \qmlproperty enumeration GridView::snapMode + + This property determines where the view will settle following a drag or flick. + The allowed values are: + + \list + \o NoSnap (default) - the view will stop anywhere within the visible area. + \o SnapToRow - the view will settle with a row (or column for TopToBottom flow) + aligned with the start of the view. + \o SnapOneRow - the view will settle no more than one row (or column for TopToBottom flow) + away from the first visible row at the time the mouse button is released. + This mode is particularly useful for moving one page at a time. + \endlist + +*/ +QDeclarativeGridView::SnapMode QDeclarativeGridView::snapMode() const +{ + Q_D(const QDeclarativeGridView); + return d->snapMode; +} + +void QDeclarativeGridView::setSnapMode(SnapMode mode) +{ + Q_D(QDeclarativeGridView); + if (d->snapMode != mode) { + d->snapMode = mode; + emit snapModeChanged(); + } +} void QDeclarativeGridView::viewportMoved() { @@ -1175,6 +1442,32 @@ void QDeclarativeGridView::viewportMoved() } } refill(); + if (isFlicking() || d->moving) + d->moveReason = QDeclarativeGridViewPrivate::Mouse; + if (d->moveReason != QDeclarativeGridViewPrivate::SetIndex) { + if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange && d->highlight) { + // reposition highlight + qreal pos = d->highlight->rowPos(); + qreal viewPos = qRound(d->position()); + if (pos > viewPos + d->highlightRangeEnd - 1 - d->rowSize()) + pos = viewPos + d->highlightRangeEnd - 1 - d->rowSize(); + if (pos < viewPos + d->highlightRangeStart) + pos = viewPos + d->highlightRangeStart; + d->highlight->setPosition(d->highlight->colPos(), pos); + + // update current index + int idx = d->snapIndex(); + if (idx >= 0 && idx != d->currentIndex) { + d->updateCurrent(idx); + if (d->currentItem && d->currentItem->colPos() != d->highlight->colPos() && d->autoHighlight) { + if (d->flow == LeftToRight) + d->highlightXAnimator->setSourceValue(d->currentItem->item->x()); + else + d->highlightYAnimator->setSourceValue(d->currentItem->item->y()); + } + } + } + } } qreal QDeclarativeGridView::minYExtent() const @@ -1182,7 +1475,10 @@ qreal QDeclarativeGridView::minYExtent() const Q_D(const QDeclarativeGridView); if (d->flow == QDeclarativeGridView::TopToBottom) return QDeclarativeFlickable::minYExtent(); - return -d->startPosition(); + qreal extent = -d->startPosition(); + if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) + extent += d->highlightRangeStart; + return extent; } qreal QDeclarativeGridView::maxYExtent() const @@ -1190,7 +1486,11 @@ qreal QDeclarativeGridView::maxYExtent() const Q_D(const QDeclarativeGridView); if (d->flow == QDeclarativeGridView::TopToBottom) return QDeclarativeFlickable::maxYExtent(); - qreal extent = -(d->endPosition() - height()); + qreal extent; + if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) + extent = -(d->rowPosAt(count()-1) - d->highlightRangeEnd); + else + extent = -(d->endPosition() - height()); const qreal minY = minYExtent(); if (extent > minY) extent = minY; @@ -1202,7 +1502,10 @@ qreal QDeclarativeGridView::minXExtent() const Q_D(const QDeclarativeGridView); if (d->flow == QDeclarativeGridView::LeftToRight) return QDeclarativeFlickable::minXExtent(); - return -d->startPosition(); + qreal extent = -d->startPosition(); + if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) + extent += d->highlightRangeStart; + return extent; } qreal QDeclarativeGridView::maxXExtent() const @@ -1210,7 +1513,11 @@ qreal QDeclarativeGridView::maxXExtent() const Q_D(const QDeclarativeGridView); if (d->flow == QDeclarativeGridView::LeftToRight) return QDeclarativeFlickable::maxXExtent(); - qreal extent = -(d->endPosition() - width()); + qreal extent; + if (d->haveHighlightRange && d->highlightRange == StrictlyEnforceRange) + extent = -(d->rowPosAt(count()-1) - d->highlightRangeEnd); + else + extent = -(d->endPosition() - height()); const qreal minX = minXExtent(); if (extent > minX) extent = minX; @@ -1381,6 +1688,7 @@ void QDeclarativeGridView::positionViewAtIndex(int index) for (int i = 0; i < oldVisible.count(); ++i) d->releaseItem(oldVisible.at(i)); } + d->fixupPosition(); } @@ -1394,6 +1702,7 @@ void QDeclarativeGridView::componentComplete() d->updateCurrent(0); else d->updateCurrent(d->currentIndex); + d->fixupPosition(); } void QDeclarativeGridView::trackedPositionChanged() @@ -1402,22 +1711,50 @@ void QDeclarativeGridView::trackedPositionChanged() if (!d->trackedItem || !d->currentItem) return; if (!isFlicking() && !d->moving && d->moveReason == QDeclarativeGridViewPrivate::SetIndex) { + const qreal trackedPos = d->trackedItem->rowPos(); const qreal viewPos = d->position(); - if (d->trackedItem->rowPos() < viewPos && d->currentItem->rowPos() < viewPos) { - d->setPosition(d->currentItem->rowPos() < d->trackedItem->rowPos() ? d->trackedItem->rowPos() : d->currentItem->rowPos()); - } else if (d->trackedItem->endRowPos() > viewPos + d->size() - && d->currentItem->endRowPos() > viewPos + d->size()) { - qreal pos; - if (d->trackedItem->endRowPos() < d->currentItem->endRowPos()) { - pos = d->trackedItem->endRowPos() - d->size(); - if (d->rowSize() > d->size()) - pos = d->trackedItem->rowPos(); + if (d->haveHighlightRange) { + if (d->highlightRange == StrictlyEnforceRange) { + qreal pos = viewPos; + if (trackedPos > pos + d->highlightRangeEnd - d->rowSize()) + pos = trackedPos - d->highlightRangeEnd + d->rowSize(); + if (trackedPos < pos + d->highlightRangeStart) + pos = trackedPos - d->highlightRangeStart; + d->setPosition(pos); } else { - pos = d->currentItem->endRowPos() - d->size(); - if (d->rowSize() > d->size()) - pos = d->currentItem->rowPos(); + qreal pos = viewPos; + if (trackedPos < d->startPosition() + d->highlightRangeStart) { + pos = d->startPosition(); + } else if (d->trackedItem->endRowPos() > d->endPosition() - d->size() + d->highlightRangeEnd) { + pos = d->endPosition() - d->size(); + if (pos < d->startPosition()) + pos = d->startPosition(); + } else { + if (trackedPos < viewPos + d->highlightRangeStart) { + pos = trackedPos - d->highlightRangeStart; + } else if (trackedPos > viewPos + d->highlightRangeEnd - d->rowSize()) { + pos = trackedPos - d->highlightRangeEnd + d->rowSize(); + } + } + d->setPosition(pos); + } + } else { + if (trackedPos < viewPos && d->currentItem->rowPos() < viewPos) { + d->setPosition(d->currentItem->rowPos() < trackedPos ? trackedPos : d->currentItem->rowPos()); + } else if (d->trackedItem->endRowPos() > viewPos + d->size() + && d->currentItem->endRowPos() > viewPos + d->size()) { + qreal pos; + if (d->trackedItem->endRowPos() < d->currentItem->endRowPos()) { + pos = d->trackedItem->endRowPos() - d->size(); + if (d->rowSize() > d->size()) + pos = trackedPos; + } else { + pos = d->currentItem->endRowPos() - d->size(); + if (d->rowSize() > d->size()) + pos = d->currentItem->rowPos(); + } + d->setPosition(pos); } - d->setPosition(pos); } } } diff --git a/src/declarative/graphicsitems/qdeclarativegridview_p.h b/src/declarative/graphicsitems/qdeclarativegridview_p.h index 7255d3d..787c04c 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview_p.h +++ b/src/declarative/graphicsitems/qdeclarativegridview_p.h @@ -67,11 +67,20 @@ class Q_DECLARATIVE_EXPORT QDeclarativeGridView : public QDeclarativeFlickable Q_PROPERTY(QDeclarativeItem *highlightItem READ highlightItem NOTIFY highlightItemChanged) Q_PROPERTY(bool highlightFollowsCurrentItem READ highlightFollowsCurrentItem WRITE setHighlightFollowsCurrentItem) + Q_PROPERTY(qreal preferredHighlightBegin READ preferredHighlightBegin WRITE setPreferredHighlightBegin NOTIFY preferredHighlightBeginChanged) + Q_PROPERTY(qreal preferredHighlightEnd READ preferredHighlightEnd WRITE setPreferredHighlightEnd NOTIFY preferredHighlightEndChanged) + Q_PROPERTY(HighlightRangeMode highlightRangeMode READ highlightRangeMode WRITE setHighlightRangeMode NOTIFY highlightRangeModeChanged) + Q_PROPERTY(Flow flow READ flow WRITE setFlow NOTIFY flowChanged) Q_PROPERTY(bool keyNavigationWraps READ isWrapEnabled WRITE setWrapEnabled NOTIFY keyNavigationWrapsChanged) Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer NOTIFY cacheBufferChanged) Q_PROPERTY(int cellWidth READ cellWidth WRITE setCellWidth NOTIFY cellWidthChanged) Q_PROPERTY(int cellHeight READ cellHeight WRITE setCellHeight NOTIFY cellHeightChanged) + + Q_PROPERTY(SnapMode snapMode READ snapMode WRITE setSnapMode NOTIFY snapModeChanged) + + Q_ENUMS(HighlightRangeMode) + Q_ENUMS(SnapMode) Q_CLASSINFO("DefaultProperty", "data") public: @@ -97,6 +106,16 @@ public: bool highlightFollowsCurrentItem() const; void setHighlightFollowsCurrentItem(bool); + enum HighlightRangeMode { NoHighlightRange, ApplyRange, StrictlyEnforceRange }; + HighlightRangeMode highlightRangeMode() const; + void setHighlightRangeMode(HighlightRangeMode mode); + + qreal preferredHighlightBegin() const; + void setPreferredHighlightBegin(qreal); + + qreal preferredHighlightEnd() const; + void setPreferredHighlightEnd(qreal); + Q_ENUMS(Flow) enum Flow { LeftToRight, TopToBottom }; Flow flow() const; @@ -114,6 +133,10 @@ public: int cellHeight() const; void setCellHeight(int); + enum SnapMode { NoSnap, SnapToRow, SnapOneRow }; + SnapMode snapMode() const; + void setSnapMode(SnapMode mode); + static QDeclarativeGridViewAttached *qmlAttachedProperties(QObject *); public Q_SLOTS: @@ -130,11 +153,15 @@ Q_SIGNALS: void cellHeightChanged(); void highlightChanged(); void highlightItemChanged(); + void preferredHighlightBeginChanged(); + void preferredHighlightEndChanged(); + void highlightRangeModeChanged(); void modelChanged(); void delegateChanged(); void flowChanged(); void keyNavigationWrapsChanged(); void cacheBufferChanged(); + void snapModeChanged(); protected: virtual void viewportMoved(); diff --git a/tests/auto/declarative/qdeclarativegridview/data/gridview-enforcerange.qml b/tests/auto/declarative/qdeclarativegridview/data/gridview-enforcerange.qml new file mode 100644 index 0000000..e45c4c3 --- /dev/null +++ b/tests/auto/declarative/qdeclarativegridview/data/gridview-enforcerange.qml @@ -0,0 +1,56 @@ +import Qt 4.6 + +Rectangle { + width: 240 + height: 320 + color: "#ffffff" + Component { + id: myDelegate + Item { + id: wrapper + objectName: "wrapper" + height: 100 + width: 100 + Text { + text: index + } + Text { + y: 25 + id: textName + objectName: "textName" + text: name + } + Text { + y: 50 + id: textNumber + objectName: "textNumber" + text: number + } + Text { + y: 75 + text: wrapper.y + } + } + } + + Component { + id: myHighlight + Rectangle { + color: "lightsteelblue" + } + } + + GridView { + id: grid + objectName: "grid" + width: 240 + height: 320 + model: testModel + delegate: myDelegate + highlight: myHighlight + preferredHighlightBegin: 100 + preferredHighlightEnd: 100 + highlightRangeMode: "StrictlyEnforceRange" + focus: true + } +} diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp index aeefea1..a1edc53 100644 --- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp +++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp @@ -72,6 +72,7 @@ private slots: void modelChanges(); void positionViewAtIndex(); void resetModel(); + void enforceRange(); void QTBUG_8456(); private: @@ -1042,6 +1043,53 @@ void tst_QDeclarativeGridView::resetModel() } } +void tst_QDeclarativeGridView::enforceRange() +{ + QDeclarativeView *canvas = createView(); + + TestModel model; + for (int i = 0; i < 30; i++) + model.addItem("Item" + QString::number(i), ""); + + QDeclarativeContext *ctxt = canvas->rootContext(); + ctxt->setContextProperty("testModel", &model); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview-enforcerange.qml")); + qApp->processEvents(); + + QDeclarativeGridView *gridview = findItem(canvas->rootObject(), "grid"); + QVERIFY(gridview != 0); + + QCOMPARE(gridview->preferredHighlightBegin(), 100.0); + QCOMPARE(gridview->preferredHighlightEnd(), 100.0); + QCOMPARE(gridview->highlightRangeMode(), QDeclarativeGridView::StrictlyEnforceRange); + + QDeclarativeItem *viewport = gridview->viewport(); + QVERIFY(viewport != 0); + + // view should be positioned at the top of the range. + QDeclarativeItem *item = findItem(viewport, "wrapper", 0); + QVERIFY(item); + QCOMPARE(gridview->contentY(), -100.0); + + QDeclarativeText *name = findItem(viewport, "textName", 0); + QVERIFY(name != 0); + QCOMPARE(name->text(), model.name(0)); + QDeclarativeText *number = findItem(viewport, "textNumber", 0); + QVERIFY(number != 0); + QCOMPARE(number->text(), model.number(0)); + + // Check currentIndex is updated when viewport moves + gridview->setContentY(0); + QCOMPARE(gridview->currentIndex(), 2); + + gridview->setCurrentIndex(5); + QTest::qWait(500); + QCOMPARE(gridview->contentY(), 100.); + + delete canvas; +} + void tst_QDeclarativeGridView::QTBUG_8456() { QDeclarativeView *canvas = createView(); -- cgit v0.12 From 5fac3f48019263e8544edffb2dd053238d8670bf Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 9 Mar 2010 11:06:54 +1000 Subject: Minor cleanup. --- .../graphicsitems/qdeclarativeanchors_p_p.h | 39 +++++++++------------- src/declarative/graphicsitems/qdeclarativeitem.h | 2 -- 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h b/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h index ca32211..5840868 100644 --- a/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h @@ -59,12 +59,9 @@ QT_BEGIN_NAMESPACE -class QDeclarativeAnchorLine +struct QDeclarativeAnchorLine { -public: - QDeclarativeAnchorLine() : item(0), anchorLine(Invalid) - { - } + QDeclarativeAnchorLine() : item(0), anchorLine(Invalid) {} enum AnchorLine { Invalid = 0x0, @@ -81,27 +78,22 @@ public: QDeclarativeItem *item; AnchorLine anchorLine; - - bool operator==(const QDeclarativeAnchorLine& other) const - { - return item == other.item && anchorLine == other.anchorLine; - } }; +inline bool operator==(const QDeclarativeAnchorLine& a, const QDeclarativeAnchorLine& b) +{ + return a.item == b.item && a.anchorLine == b.anchorLine; +} + class QDeclarativeAnchorsPrivate : public QObjectPrivate, public QDeclarativeItemChangeListener { Q_DECLARE_PUBLIC(QDeclarativeAnchors) public: QDeclarativeAnchorsPrivate(QDeclarativeItem *i) - : updatingMe(false), updatingHorizontalAnchor(0), + : componentComplete(true), updatingMe(false), updatingHorizontalAnchor(0), updatingVerticalAnchor(0), updatingFill(0), updatingCenterIn(0), item(i), usedAnchors(0), fill(0), centerIn(0), leftMargin(0), rightMargin(0), topMargin(0), bottomMargin(0), - margins(0), vCenterOffset(0), hCenterOffset(0), baselineOffset(0), - componentComplete(true) - { - } - - void init() + margins(0), vCenterOffset(0), hCenterOffset(0), baselineOffset(0) { } @@ -111,11 +103,12 @@ public: void remDepend(QDeclarativeItem *); bool isItemComplete() const; - bool updatingMe; - int updatingHorizontalAnchor; - int updatingVerticalAnchor; - int updatingFill; - int updatingCenterIn; + bool componentComplete:1; + bool updatingMe:1; + uint updatingHorizontalAnchor:2; + uint updatingVerticalAnchor:2; + uint updatingFill:2; + uint updatingCenterIn:2; void setItemHeight(qreal); void setItemWidth(qreal); @@ -164,8 +157,6 @@ public: qreal vCenterOffset; qreal hCenterOffset; qreal baselineOffset; - - bool componentComplete; }; QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qdeclarativeitem.h b/src/declarative/graphicsitems/qdeclarativeitem.h index d326925..2053eba 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.h +++ b/src/declarative/graphicsitems/qdeclarativeitem.h @@ -211,8 +211,6 @@ protected: QDeclarativeItem(QDeclarativeItemPrivate &dd, QDeclarativeItem *parent = 0); private: - friend class QDeclarativeStatePrivate; - friend class QDeclarativeAnchors; Q_DISABLE_COPY(QDeclarativeItem) Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeItem) }; -- cgit v0.12 From 9bd895158915313bb0ffae7fcfb24598cb1721fa Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Tue, 9 Mar 2010 11:43:03 +1000 Subject: Move pixmapChanged signal to QDeclarativeImage Task-number: QTBUG-6334 --- src/declarative/graphicsitems/qdeclarativeimage.cpp | 2 +- src/declarative/graphicsitems/qdeclarativeimage_p.h | 1 + src/declarative/graphicsitems/qdeclarativeimagebase.cpp | 11 +++++------ src/declarative/graphicsitems/qdeclarativeimagebase_p.h | 1 - 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp index a20d6bc..425976f 100644 --- a/src/declarative/graphicsitems/qdeclarativeimage.cpp +++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp @@ -386,7 +386,7 @@ void QDeclarativeImage::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWi void QDeclarativeImage::pixmapChange() { updatePaintedGeometry(); - QDeclarativeImageBase::pixmapChange(); + emit pixmapChanged(); } QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qdeclarativeimage_p.h b/src/declarative/graphicsitems/qdeclarativeimage_p.h index 7394774..da6cbd5 100644 --- a/src/declarative/graphicsitems/qdeclarativeimage_p.h +++ b/src/declarative/graphicsitems/qdeclarativeimage_p.h @@ -79,6 +79,7 @@ public: void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); Q_SIGNALS: + void pixmapChanged(); void fillModeChanged(); void paintedGeometryChanged(); diff --git a/src/declarative/graphicsitems/qdeclarativeimagebase.cpp b/src/declarative/graphicsitems/qdeclarativeimagebase.cpp index 0e9638d..e65c9d1 100644 --- a/src/declarative/graphicsitems/qdeclarativeimagebase.cpp +++ b/src/declarative/graphicsitems/qdeclarativeimagebase.cpp @@ -144,19 +144,19 @@ void QDeclarativeImageBase::load() static int thisRequestProgress = -1; static int thisRequestFinished = -1; if (replyDownloadProgress == -1) { - replyDownloadProgress = + replyDownloadProgress = QDeclarativePixmapReply::staticMetaObject.indexOfSignal("downloadProgress(qint64,qint64)"); - replyFinished = + replyFinished = QDeclarativePixmapReply::staticMetaObject.indexOfSignal("finished()"); - thisRequestProgress = + thisRequestProgress = QDeclarativeImageBase::staticMetaObject.indexOfSlot("requestProgress(qint64,qint64)"); thisRequestFinished = QDeclarativeImageBase::staticMetaObject.indexOfSlot("requestFinished()"); } - QMetaObject::connect(reply, replyFinished, this, + QMetaObject::connect(reply, replyFinished, this, thisRequestFinished, Qt::DirectConnection); - QMetaObject::connect(reply, replyDownloadProgress, this, + QMetaObject::connect(reply, replyDownloadProgress, this, thisRequestProgress, Qt::DirectConnection); } else { //### should be unified with requestFinished @@ -219,7 +219,6 @@ void QDeclarativeImageBase::componentComplete() void QDeclarativeImageBase::pixmapChange() { - emit pixmapChanged(); } QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qdeclarativeimagebase_p.h b/src/declarative/graphicsitems/qdeclarativeimagebase_p.h index cfebdca..b215193 100644 --- a/src/declarative/graphicsitems/qdeclarativeimagebase_p.h +++ b/src/declarative/graphicsitems/qdeclarativeimagebase_p.h @@ -75,7 +75,6 @@ Q_SIGNALS: void sourceChanged(const QUrl &); void statusChanged(Status); void progressChanged(qreal progress); - void pixmapChanged(); void asynchronousChanged(); protected: -- cgit v0.12 From e7edb6de8c1d24163bdb9eb83fbec6a7c7208790 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Tue, 9 Mar 2010 11:50:13 +1000 Subject: use Qt's private mac functions, reduce code redundancy --- src/plugins/bearer/corewlan/qcorewlanengine.mm | 56 ++++++-------------------- 1 file changed, 13 insertions(+), 43 deletions(-) diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm index 9a213e7..cb278d9 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.mm +++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm @@ -65,6 +65,7 @@ #include #include +#include "private/qcore_mac_p.h" QMap networkInterfaces; @@ -132,37 +133,6 @@ QNSListener *listener = 0; QT_BEGIN_NAMESPACE -inline QString cfstringRefToQstring(CFStringRef cfStringRef) { - QString retVal; - CFIndex maxLength = 2 * CFStringGetLength(cfStringRef) + 1/*zero term*/; // max UTF8 - char *cstring = new char[maxLength]; - if (CFStringGetCString(CFStringRef(cfStringRef), cstring, maxLength, kCFStringEncodingUTF8)) { - retVal = QString::fromUtf8(cstring); - } - delete[] cstring; - return retVal; -} - -inline CFStringRef qstringToCFStringRef(const QString &string) -{ - return CFStringCreateWithCharacters(0, reinterpret_cast(string.unicode()), - string.length()); -} - -inline NSString *qstringToNSString(const QString &qstr) -{ return [reinterpret_cast(qstringToCFStringRef(qstr)) autorelease]; } - -inline QString nsstringToQString(const NSString *nsstr) -{ return cfstringRefToQstring(reinterpret_cast(nsstr)); } - -inline QStringList nsarrayToQStringList(void *nsarray) -{ - QStringList result; - NSArray *array = static_cast(nsarray); - for (NSUInteger i=0; i<[array count]; ++i) - result << nsstringToQString([array objectAtIndex:i]); - return result; -} static QString qGetInterfaceType(const QString &interfaceString) { @@ -173,8 +143,8 @@ void networkChangeCallback(SCDynamicStoreRef/* store*/, CFArrayRef changedKeys, { for ( long i = 0; i < CFArrayGetCount(changedKeys); i++) { - CFStringRef changed = (CFStringRef)CFArrayGetValueAtIndex(changedKeys, i); - if( cfstringRefToQstring(changed).contains("/Network/Global/IPv4")) { + QString changed = QCFString::toQString((CFStringRef)CFArrayGetValueAtIndex(changedKeys, i)); + if( changed.contains("/Network/Global/IPv4")) { QCoreWlanEngine* wlanEngine = static_cast(info); wlanEngine->requestUpdate(); } @@ -228,7 +198,7 @@ void QCoreWlanEngine::connectToId(const QString &id) if(networkInterfaces.value(interfaceString) == "WLAN") { #if defined(MAC_SDK_10_6) - CWInterface *wifiInterface = [CWInterface interfaceWithName: qstringToNSString(interfaceString)]; + CWInterface *wifiInterface = [CWInterface interfaceWithName: qt_mac_QStringToNSString(interfaceString)]; CWConfiguration *userConfig = [ wifiInterface configuration]; NSSet *remNets = [userConfig rememberedNetworks]; //CWWirelessProfile @@ -245,7 +215,7 @@ void QCoreWlanEngine::connectToId(const QString &id) while ((wProfile = [enumerator nextObject])) { //CWWirelessProfile - if(id == QString::number(qHash(QLatin1String("corewlan:") + nsstringToQString([wProfile ssid])))) { + if(id == QString::number(qHash(QLatin1String("corewlan:") + qt_mac_NSStringToQString([wProfile ssid])))) { user8021XProfile = nil; user8021XProfile = [ wProfile user8021XProfile]; @@ -299,7 +269,7 @@ void QCoreWlanEngine::disconnectFromId(const QString &id) if(networkInterfaces.value(getInterfaceFromId(id)) == "WLAN") { //wifi only for now #if defined(MAC_SDK_10_6) NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init]; - CWInterface *wifiInterface = [CWInterface interfaceWithName: qstringToNSString(interfaceString)]; + CWInterface *wifiInterface = [CWInterface interfaceWithName: qt_mac_QStringToNSString(interfaceString)]; [wifiInterface disassociate]; if([[wifiInterface interfaceState]intValue] != kCWInterfaceStateInactive) { emit connectionError(id, DisconnectionError); @@ -414,7 +384,7 @@ QStringList QCoreWlanEngine::scanForSsids(const QString &interfaceName) #if defined(MAC_SDK_10_6) QMacCocoaAutoReleasePool pool; - CWInterface *currentInterface = [CWInterface interfaceWithName:qstringToNSString(interfaceName)]; + CWInterface *currentInterface = [CWInterface interfaceWithName:qt_mac_QStringToNSString(interfaceName)]; if([currentInterface power]) { NSError *err = nil; NSDictionary *parametersDict = nil; @@ -426,7 +396,7 @@ QStringList QCoreWlanEngine::scanForSsids(const QString &interfaceName) apNetwork = [apArray objectAtIndex:row]; - const QString networkSsid = nsstringToQString([apNetwork ssid]); + const QString networkSsid = qt_mac_NSStringToQString([apNetwork ssid]); const QString id = QString::number(qHash(QLatin1String("corewlan:") + networkSsid)); found.append(id); @@ -434,7 +404,7 @@ QStringList QCoreWlanEngine::scanForSsids(const QString &interfaceName) QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Undefined; if ([currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) { - if (networkSsid == nsstringToQString([currentInterface ssid])) + if (networkSsid == qt_mac_NSStringToQString([currentInterface ssid])) state = QNetworkConfiguration::Active; } else { if (isKnownSsid(interfaceName, networkSsid)) @@ -499,7 +469,7 @@ bool QCoreWlanEngine::isWifiReady(const QString &wifiDeviceName) QMutexLocker locker(&mutex); #if defined(MAC_SDK_10_6) - CWInterface *defaultInterface = [CWInterface interfaceWithName: qstringToNSString(wifiDeviceName)]; + CWInterface *defaultInterface = [CWInterface interfaceWithName: qt_mac_QStringToNSString(wifiDeviceName)]; if([defaultInterface power]) return true; #else @@ -513,11 +483,11 @@ bool QCoreWlanEngine::isKnownSsid(const QString &interfaceName, const QString &s QMutexLocker locker(&mutex); #if defined(MAC_SDK_10_6) - CWInterface *wifiInterface = [CWInterface interfaceWithName: qstringToNSString(interfaceName)]; + CWInterface *wifiInterface = [CWInterface interfaceWithName: qt_mac_QStringToNSString(interfaceName)]; CWConfiguration *userConfig = [wifiInterface configuration]; NSSet *remNets = [userConfig rememberedNetworks]; for (CWWirelessProfile *wProfile in remNets) { - if(ssid == nsstringToQString([wProfile ssid])) + if(ssid == qt_mac_NSStringToQString([wProfile ssid])) return true; } #else @@ -536,7 +506,7 @@ bool QCoreWlanEngine::getWifiInterfaces() NSArray *wifiInterfaces = [CWInterface supportedInterfaces]; for(uint row=0; row < [wifiInterfaces count]; row++ ) { - networkInterfaces.insert( nsstringToQString([wifiInterfaces objectAtIndex:row]),"WLAN"); + networkInterfaces.insert( qt_mac_NSStringToQString([wifiInterfaces objectAtIndex:row]),"WLAN"); } return true; -- cgit v0.12 From 49c7b60628ae53a171f60c7c2b59180e8bce6299 Mon Sep 17 00:00:00 2001 From: Kurt Korbatits Date: Tue, 9 Mar 2010 11:52:06 +1000 Subject: Updates to qsoundeffect backends. - pulseaudio backend: moved write code out of callback to reduce upload failure (30%->10%) - pulseaudio backend: add recovery code to retry on failed upload - changed delete to deleteLater, unit test was craching on cleanup - qmedia backend: removed connect to mutedChanged and volumeChanged signals, not needed, emitted by main class. Reviewed-by:Derick Hawcroft --- src/multimedia/effects/qsoundeffect.cpp | 2 +- src/multimedia/effects/qsoundeffect_pulse_p.cpp | 87 +++++++++++++++--------- src/multimedia/effects/qsoundeffect_pulse_p.h | 4 ++ src/multimedia/effects/qsoundeffect_qmedia_p.cpp | 2 - 4 files changed, 61 insertions(+), 34 deletions(-) diff --git a/src/multimedia/effects/qsoundeffect.cpp b/src/multimedia/effects/qsoundeffect.cpp index f64d9ee..548ec74 100644 --- a/src/multimedia/effects/qsoundeffect.cpp +++ b/src/multimedia/effects/qsoundeffect.cpp @@ -134,7 +134,7 @@ QSoundEffect::QSoundEffect(QObject *parent) : QSoundEffect::~QSoundEffect() { - delete d; + d->deleteLater(); } QUrl QSoundEffect::source() const diff --git a/src/multimedia/effects/qsoundeffect_pulse_p.cpp b/src/multimedia/effects/qsoundeffect_pulse_p.cpp index c322722..e379259 100644 --- a/src/multimedia/effects/qsoundeffect_pulse_p.cpp +++ b/src/multimedia/effects/qsoundeffect_pulse_p.cpp @@ -234,6 +234,7 @@ Q_GLOBAL_STATIC(PulseDaemon, daemon) QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): QObject(parent), + m_retry(false), m_muted(false), m_playQueued(false), m_sampleLoaded(false), @@ -250,7 +251,7 @@ QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): QSoundEffectPrivate::~QSoundEffectPrivate() { - delete m_reply; + m_reply->deleteLater(); unloadSample(); } @@ -310,6 +311,12 @@ void QSoundEffectPrivate::setMuted(bool muted) void QSoundEffectPrivate::play() { + if (m_retry) { + m_retry = false; + setSource(m_source); + return; + } + if (!m_sampleLoaded) { m_playQueued = true; return; @@ -338,6 +345,7 @@ void QSoundEffectPrivate::decoderReady() pa_stream_set_state_callback(stream, stream_state_callback, this); pa_stream_set_write_callback(stream, stream_write_callback, this); pa_stream_connect_upload(stream, (size_t)m_waveDecoder->size()); + m_pulseStream = stream; daemon()->unlock(); } @@ -377,6 +385,52 @@ void QSoundEffectPrivate::unloadSample() m_sampleLoaded = false; } +void QSoundEffectPrivate::uploadSample() +{ + daemon()->lock(); + + size_t bufferSize = qMin(pa_stream_writable_size(m_pulseStream), + size_t(m_waveDecoder->bytesAvailable())); + char buffer[bufferSize]; + + size_t len = 0; + while (len < (m_waveDecoder->size())) { + qint64 read = m_waveDecoder->read(buffer, qMin((int)bufferSize, + (int)(m_waveDecoder->size()-len))); + if (read > 0) { + if (pa_stream_write(m_pulseStream, buffer, size_t(read), 0, 0, PA_SEEK_RELATIVE) == 0) + len += size_t(read); + else + break; + } + } + + m_dataUploaded += len; + pa_stream_set_write_callback(m_pulseStream, NULL, NULL); + + if (m_waveDecoder->size() == m_dataUploaded) { + int err = pa_stream_finish_upload(m_pulseStream); + if(err != 0) { + qWarning("pa_stream_finish_upload() err=%d",err); + pa_stream_disconnect(m_pulseStream); + m_retry = true; + m_playQueued = false; + QMetaObject::invokeMethod(this, "play"); + daemon()->unlock(); + return; + } + m_duration = m_waveDecoder->duration(); + m_waveDecoder->deleteLater(); + m_stream->deleteLater(); + m_sampleLoaded = true; + if (m_playQueued) { + m_playQueued = false; + QMetaObject::invokeMethod(this, "play"); + } + } + daemon()->unlock(); +} + void QSoundEffectPrivate::playSample() { pa_volume_t volume = PA_VOLUME_NORM; @@ -412,36 +466,7 @@ void QSoundEffectPrivate::stream_write_callback(pa_stream *s, size_t length, voi QSoundEffectPrivate *self = reinterpret_cast(userdata); - size_t bufferSize = qMin(pa_stream_writable_size(s), - size_t(self->m_waveDecoder->bytesAvailable())); - char buffer[bufferSize]; - - size_t len = 0; - while (len < length) { - qint64 read = self->m_waveDecoder->read(buffer, qMin(bufferSize, length -len)); - if (read > 0) { - if (pa_stream_write(s, buffer, size_t(read), 0, 0, PA_SEEK_RELATIVE) == 0) - len += size_t(read); - else - break; - } - } - self->m_dataUploaded += len; - - if (self->m_waveDecoder->size() == self->m_dataUploaded) { - pa_stream_finish_upload(s); - - self->m_duration = self->m_waveDecoder->duration(); - - self->m_waveDecoder->deleteLater(); - self->m_stream->deleteLater(); - - self->m_sampleLoaded = true; - if (self->m_playQueued) { - self->m_playQueued = false; - QMetaObject::invokeMethod(self, "play"); - } - } + QMetaObject::invokeMethod(self, "uploadSample", Qt::QueuedConnection); } void QSoundEffectPrivate::stream_state_callback(pa_stream *s, void *userdata) diff --git a/src/multimedia/effects/qsoundeffect_pulse_p.h b/src/multimedia/effects/qsoundeffect_pulse_p.h index 3aed018..aff729c 100644 --- a/src/multimedia/effects/qsoundeffect_pulse_p.h +++ b/src/multimedia/effects/qsoundeffect_pulse_p.h @@ -97,6 +97,7 @@ private Q_SLOTS: void decoderReady(); void decoderError(); void checkPlayTime(); + void uploadSample(); private: void loadSample(); @@ -109,6 +110,9 @@ private: static void stream_state_callback(pa_stream *s, void *userdata); static void play_callback(pa_context *c, int success, void *userdata); + pa_stream *m_pulseStream; + + bool m_retry; bool m_muted; bool m_playQueued; bool m_sampleLoaded; diff --git a/src/multimedia/effects/qsoundeffect_qmedia_p.cpp b/src/multimedia/effects/qsoundeffect_qmedia_p.cpp index 43ba22f..36c36dd 100644 --- a/src/multimedia/effects/qsoundeffect_qmedia_p.cpp +++ b/src/multimedia/effects/qsoundeffect_qmedia_p.cpp @@ -67,8 +67,6 @@ QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent): m_player(0) { m_player = new QMediaPlayer(this, QMediaPlayer::LowLatency); - connect(m_player, SIGNAL(volumeChanged(int)), SIGNAL(volumeChanged())); - connect(m_player, SIGNAL(mutedChanged(bool)), SIGNAL(mutedChanged())); connect(m_player, SIGNAL(stateChanged(QMediaPlayer::State)), SLOT(stateChanged(QMediaPlayer::State))); } -- cgit v0.12 From f7fe4701713aff5f5af146fafbb38fa852ebde33 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 9 Mar 2010 09:32:12 +0100 Subject: Add license header --- .../gui/painting/qtbench/benchmarktests.h | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tests/benchmarks/gui/painting/qtbench/benchmarktests.h b/tests/benchmarks/gui/painting/qtbench/benchmarktests.h index 8626ae7..362d121 100644 --- a/tests/benchmarks/gui/painting/qtbench/benchmarktests.h +++ b/tests/benchmarks/gui/painting/qtbench/benchmarktests.h @@ -1,3 +1,44 @@ +/**************************************************************************** +** +** 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 FOO 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 BENCHMARKTESTS_H #define BENCHMARKTESTS_H -- cgit v0.12 From 8870d7173fce840277d15cab9daf75aa1b587a87 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Mon, 8 Mar 2010 13:35:41 +0100 Subject: Add a benchmark comparing single shot timer with invokeMethod Reviewed-by: joao --- .../qtimer_vs_qmetaobject.pro | 11 +++ .../tst_qtimer_vs_qmetaobject.cpp | 96 ++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/qtimer_vs_qmetaobject.pro create mode 100644 tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp diff --git a/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/qtimer_vs_qmetaobject.pro b/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/qtimer_vs_qmetaobject.pro new file mode 100644 index 0000000..9c6b16b --- /dev/null +++ b/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/qtimer_vs_qmetaobject.pro @@ -0,0 +1,11 @@ +load(qttest_p4) +TEMPLATE = app +TARGET = qtimer_vs_qmetaobject +DEPENDPATH += . +INCLUDEPATH += . + +CONFIG += release +#CONFIG += debug + + +SOURCES += tst_qtimer_vs_qmetaobject.cpp diff --git a/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp b/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp new file mode 100644 index 0000000..2f265bf --- /dev/null +++ b/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** 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 +#include + +#define INVOKE_COUNT 10000 + +class qtimer_vs_qmetaobject : public QObject +{ + Q_OBJECT +private slots: + void testZeroTimerSingleShot(); + void testQueuedInvokeMethod(); +}; + +class InvokeCounter : public QObject { + Q_OBJECT +public: + InvokeCounter() : count(0) { }; +public slots: + void invokeSlot() { + count++; + if (count == INVOKE_COUNT) + QTestEventLoop::instance().exitLoop(); + } +protected: + int count; +}; + +void qtimer_vs_qmetaobject::testZeroTimerSingleShot() +{ + QBENCHMARK { + InvokeCounter invokeCounter; + for(int i = 0; i < INVOKE_COUNT; ++i) { + QTimer::singleShot(0, &invokeCounter, SLOT(invokeSlot())); + } + QTestEventLoop::instance().enterLoop(10); + QVERIFY(!QTestEventLoop::instance().timeout()); + } +} + +void qtimer_vs_qmetaobject::testQueuedInvokeMethod() +{ + QBENCHMARK { + InvokeCounter invokeCounter; + for(int i = 0; i < INVOKE_COUNT; ++i) { + QMetaObject::invokeMethod(&invokeCounter, "invokeSlot", Qt::QueuedConnection); + } + QTestEventLoop::instance().enterLoop(10); + QVERIFY(!QTestEventLoop::instance().timeout()); + } +} + + +QTEST_MAIN(qtimer_vs_qmetaobject) + +#include "tst_qtimer_vs_qmetaobject.moc" -- cgit v0.12 From 7a52e5948c0305ca41a9b66d591a12d171fd2bae Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Mon, 8 Mar 2010 15:21:38 +0100 Subject: Improve performance of QTimer::singleShot Avoid allocation of QObject and OS timer. Reviewed-by: Olivier Goffart --- src/corelib/kernel/qtimer.cpp | 14 +++++++++++++- tests/auto/qtimer/tst_qtimer.cpp | 12 ++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp index e17c995..7650f6a 100644 --- a/src/corelib/kernel/qtimer.cpp +++ b/src/corelib/kernel/qtimer.cpp @@ -339,8 +339,20 @@ QT_END_INCLUDE_NAMESPACE void QTimer::singleShot(int msec, QObject *receiver, const char *member) { - if (receiver && member) + if (receiver && member) { + if (msec == 0) { + // special code shortpath for 0-timers + const char* bracketPosition = strchr(member, '('); + if (!bracketPosition || !(member[0] >= '0' && member[0] <= '3')) { + qWarning("QTimer::singleShot: Invalid slot specification"); + return; + } + QByteArray methodName(member+1, bracketPosition - 1 - member); // extract method name + QMetaObject::invokeMethod(receiver, methodName.constData(), Qt::QueuedConnection); + return; + } (void) new QSingleShotTimer(msec, receiver, member); + } } /*! diff --git a/tests/auto/qtimer/tst_qtimer.cpp b/tests/auto/qtimer/tst_qtimer.cpp index cc97e4e..a0408ef 100644 --- a/tests/auto/qtimer/tst_qtimer.cpp +++ b/tests/auto/qtimer/tst_qtimer.cpp @@ -85,6 +85,7 @@ private slots: void timerFiresOnlyOncePerProcessEvents(); void timerIdPersistsAfterThreadExit(); void cancelLongTimer(); + void singleShotStaticFunctionZeroTimeout(); }; class TimerHelper : public QObject @@ -611,5 +612,16 @@ void tst_QTimer::cancelLongTimer() QVERIFY(!timer.isActive()); } +void tst_QTimer::singleShotStaticFunctionZeroTimeout() +{ + TimerHelper helper; + + QTimer::singleShot(0, &helper, SLOT(timeout())); + QTest::qWait(500); + QCOMPARE(helper.count, 1); + QTest::qWait(500); + QCOMPARE(helper.count, 1); +} + QTEST_MAIN(tst_QTimer) #include "tst_qtimer.moc" -- cgit v0.12 From d0794c43f21aab3d1ce926f38c315ba2ac999c41 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 9 Mar 2010 11:06:30 +0100 Subject: Cocoa: Native filedialog does not apply filters on app-bundles The native file dialog (and finder) handles bundles (like .app) like normal files rather than directories, unless specified otherwise. But since they are directories at the same time, we skip sending them through the name filters. This patch makes sure that we are more consistent on this matter for the cocoa port. Task-number: QTBUG-834 Reviewed-by: msorvig --- src/gui/dialogs/qfiledialog_mac.mm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/gui/dialogs/qfiledialog_mac.mm b/src/gui/dialogs/qfiledialog_mac.mm index 67daced..da8cab5 100644 --- a/src/gui/dialogs/qfiledialog_mac.mm +++ b/src/gui/dialogs/qfiledialog_mac.mm @@ -295,10 +295,14 @@ QT_USE_NAMESPACE if (!mQDirFilterEntryList->contains(info.fileName())) return NO; - // Always accept directories regardless of their names: + // Always accept directories regardless of their names (unless it is a bundle): BOOL isDir; - if ([[NSFileManager defaultManager] fileExistsAtPath:filename isDirectory:&isDir] && isDir) - return YES; + if ([[NSFileManager defaultManager] fileExistsAtPath:filename isDirectory:&isDir] && isDir) { + if ([mSavePanel treatsFilePackagesAsDirectories] == NO) { + if ([[NSWorkspace sharedWorkspace] isFilePackageAtPath:filename] == NO) + return YES; + } + } // No filter means accept everything if (mSelectedNameFilter->isEmpty()) -- cgit v0.12 From 382cbd618fe4f5093bb1ca3f4fca3bb35614a18d Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 9 Mar 2010 11:33:58 +0100 Subject: Carbon: Native filedialog does not apply filters on app-bundles The native file dialog (and finder) handles bundles (like .app) like normal files rather than directories, unless specified otherwise. But since they are directories at the same time, we skip sending them through the name filters. This patch makes sure that we are more consistent on this matter for the carbon port. Task-number: QTBUG-834 Reviewed-by: msorvig --- src/gui/dialogs/qfiledialog_mac.mm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/gui/dialogs/qfiledialog_mac.mm b/src/gui/dialogs/qfiledialog_mac.mm index da8cab5..14a5f15 100644 --- a/src/gui/dialogs/qfiledialog_mac.mm +++ b/src/gui/dialogs/qfiledialog_mac.mm @@ -729,6 +729,7 @@ Boolean QFileDialogPrivate::qt_mac_filedialog_filter_proc(AEDesc *theItem, void NavFileOrFolderInfo *theInfo = static_cast(info); QString file; + QString path; const QtMacFilterName &fn = fileDialogPrivate->filterInfo.filters.at(fileDialogPrivate->filterInfo.currentSelection); if (theItem->descriptorType == typeFSRef) { @@ -736,10 +737,12 @@ Boolean QFileDialogPrivate::qt_mac_filedialog_filter_proc(AEDesc *theItem, void AEGetDescData(theItem, &ref, sizeof(ref)); UInt8 str_buffer[1024]; FSRefMakePath(&ref, str_buffer, 1024); - file = QString::fromUtf8(reinterpret_cast(str_buffer)); - int slsh = file.lastIndexOf(QLatin1Char('/')); + path = QString::fromUtf8(reinterpret_cast(str_buffer)); + int slsh = path.lastIndexOf(QLatin1Char('/')); if (slsh != -1) - file = file.right(file.length() - slsh - 1); + file = path.right(path.length() - slsh - 1); + else + file = path; } QStringList reg = fn.regexp.split(QLatin1String(";")); for (QStringList::const_iterator it = reg.constBegin(); it != reg.constEnd(); ++it) { @@ -751,7 +754,13 @@ Boolean QFileDialogPrivate::qt_mac_filedialog_filter_proc(AEDesc *theItem, void if (rg.exactMatch(file)) return true; } - return (theInfo->isFolder && !file.endsWith(QLatin1String(".app"))); + + if (theInfo->isFolder) { + if ([[NSWorkspace sharedWorkspace] isFilePackageAtPath:qt_mac_QStringToNSString(path)]) + return false; + return true; + } + return false; } void QFileDialogPrivate::qt_mac_filedialog_event_proc(const NavEventCallbackMessage msg, -- cgit v0.12 From 3b58b103bfa2e2b9bb12a042cbba36fb0a1baf9f Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 9 Mar 2010 11:58:40 +0100 Subject: QTreeView: let the dataChanged signal refresh the hasChildren attribute. That is required for the Locals & Watchers view in Creator. Task-number: QTBUG-7115 Reviewed-by: Thierry --- src/gui/itemviews/qtreeview.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp index 1145235..78184a9 100644 --- a/src/gui/itemviews/qtreeview.cpp +++ b/src/gui/itemviews/qtreeview.cpp @@ -679,16 +679,20 @@ void QTreeView::dataChanged(const QModelIndex &topLeft, const QModelIndex &botto d->defaultItemHeight = indexRowSizeHint(topLeft); bool sizeChanged = false; if (topViewIndex != -1) { - if (topLeft == bottomRight) { + if (topLeft.row() == bottomRight.row()) { int oldHeight = d->itemHeight(topViewIndex); d->invalidateHeightCache(topViewIndex); sizeChanged = (oldHeight != d->itemHeight(topViewIndex)); + if (topLeft.column() == 0) + d->viewItems[topViewIndex].hasChildren = d->hasVisibleChildren(topLeft); } else { int bottomViewIndex = d->viewIndex(bottomRight); for (int i = topViewIndex; i <= bottomViewIndex; ++i) { int oldHeight = d->itemHeight(i); d->invalidateHeightCache(i); sizeChanged |= (oldHeight != d->itemHeight(i)); + if (topLeft.column() == 0) + d->viewItems[i].hasChildren = d->hasVisibleChildren(d->viewItems.at(i).index); } } } -- cgit v0.12 From 8c904712aa658dd0dd405b64913b8e6ade17f3df Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Tue, 9 Mar 2010 12:04:59 +0100 Subject: doc: Fixed several qdoc errors. --- .../declarative/imageprovider/imageprovider.cpp | 1 + src/corelib/concurrent/qfuturewatcher.cpp | 2 +- src/corelib/global/qnamespace.qdoc | 2 +- src/corelib/tools/qeasingcurve.cpp | 4 ++-- src/corelib/tools/qstring.cpp | 22 +++++++++--------- .../graphicsitems/qdeclarativelistview.cpp | 5 ---- src/declarative/qml/qdeclarativeengine.cpp | 4 ++-- src/declarative/qml/qdeclarativeexpression.cpp | 27 +++++++++++----------- .../qml/qdeclarativeextensionplugin.cpp | 2 +- src/declarative/qml/qdeclarativeimageprovider.cpp | 4 ++++ src/declarative/qml/qdeclarativeproperty.cpp | 3 ++- src/declarative/util/qdeclarativeanimation.cpp | 8 ++++--- .../util/qdeclarativestateoperations.cpp | 3 --- src/gui/painting/qcolor.cpp | 11 ++------- src/gui/painting/qpainter.cpp | 8 +++---- src/gui/text/qstatictext.cpp | 6 +++-- src/multimedia/effects/qsoundeffect.cpp | 2 -- 17 files changed, 54 insertions(+), 60 deletions(-) diff --git a/examples/declarative/imageprovider/imageprovider.cpp b/examples/declarative/imageprovider/imageprovider.cpp index 253dbf5..011a63b 100644 --- a/examples/declarative/imageprovider/imageprovider.cpp +++ b/examples/declarative/imageprovider/imageprovider.cpp @@ -104,4 +104,5 @@ public: #include "imageprovider.moc" Q_EXPORT_PLUGIN(ImageProviderExtensionPlugin); +//![0] diff --git a/src/corelib/concurrent/qfuturewatcher.cpp b/src/corelib/concurrent/qfuturewatcher.cpp index 3b808b8..d4573c6 100644 --- a/src/corelib/concurrent/qfuturewatcher.cpp +++ b/src/corelib/concurrent/qfuturewatcher.cpp @@ -505,7 +505,7 @@ void QFutureWatcherBasePrivate::sendCallOutEvent(QFutureCallOutEvent *event) finished signal will be emitted. To avoid a race condition, it is important to call this function - \i after doing the connections. + \e after doing the connections. */ /*! \fn QFuture QFutureWatcher::future() const diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index 76541ca..f8f3c49 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -2990,7 +2990,7 @@ \value IgnoredGesturesPropagateToParent Since Qt 4.7, this flag allows you to fine-tune gesture event propagation. By setting the flag when - \l{QGraphicsObject::grabGesture}{grabbing} a gesture all ignored partial + \l{QGraphicsObject::grabGesture()}{grabbing} a gesture all ignored partial gestures will propagate to their parent items. \sa QWidget::grabGesture(), QGraphicsObject::grabGesture() diff --git a/src/corelib/tools/qeasingcurve.cpp b/src/corelib/tools/qeasingcurve.cpp index d4b2c27..9c65d5d 100644 --- a/src/corelib/tools/qeasingcurve.cpp +++ b/src/corelib/tools/qeasingcurve.cpp @@ -877,8 +877,8 @@ QDataStream &operator<<(QDataStream &stream, const QEasingCurve &easing) \fn QDataStream &operator>>(QDataStream &stream, QEasingCurve &easing) \relates QQuaternion - Reads an easing curve from the given \a stream into the given \a quaternion - and returns a reference to the stream. + Reads an easing curve from the given \a stream into the given \a + easing curve and returns a reference to the stream. \sa {Format of the QDataStream Operators} */ diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 5ed3db5..b54315c 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -2135,7 +2135,7 @@ bool QString::operator==(const QLatin1String &other) const The \a other byte array is converted to a QString using the fromAscii() function. This function stops conversion at the - first NUL character found, or the end of the \a ba byte array. + first NUL character found, or the end of the byte array. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This @@ -2197,7 +2197,7 @@ bool QString::operator<(const QLatin1String &other) const The \a other byte array is converted to a QString using the fromAscii() function. If any NUL characters ('\0') are embedded - in the \a ba byte array, they will be included in the transformation. + in the byte array, they will be included in the transformation. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This @@ -2240,7 +2240,7 @@ bool QString::operator<(const QLatin1String &other) const The \a other byte array is converted to a QString using the fromAscii() function. If any NUL characters ('\0') are embedded - in the \a ba byte array, they will be included in the transformation. + in the byte array, they will be included in the transformation. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This @@ -2299,7 +2299,7 @@ bool QString::operator>(const QLatin1String &other) const The \a other byte array is converted to a QString using the fromAscii() function. If any NUL characters ('\0') are embedded - in the \a ba byte array, they will be included in the transformation. + in the byte array, they will be included in the transformation. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This @@ -2341,8 +2341,8 @@ bool QString::operator>(const QLatin1String &other) const \overload operator>=() The \a other byte array is converted to a QString using the - fromAscii() function. If any NUL characters ('\0') are embedded - in the \a ba byte array, they will be included in the transformation. + fromAscii() function. If any NUL characters ('\0') are embedded in + the byte array, they will be included in the transformation. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This can be useful if you want @@ -2357,10 +2357,10 @@ bool QString::operator>(const QLatin1String &other) const The \a other const char pointer is converted to a QString using the fromAscii() function. - You can disable this operator by defining \c - QT_NO_CAST_FROM_ASCII when you compile your applications. This - can be useful if you want to ensure that all user-visible strings - go through QObject::tr(), for example. + You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII + when you compile your applications. This can be useful if you want + to ensure that all user-visible strings go through QObject::tr(), + for example. */ /*! \fn bool QString::operator!=(const QString &other) const @@ -2385,7 +2385,7 @@ bool QString::operator>(const QLatin1String &other) const The \a other byte array is converted to a QString using the fromAscii() function. If any NUL characters ('\0') are embedded - in the \a ba byte array, they will be included in the transformation. + in the byte array, they will be included in the transformation. You can disable this operator by defining \c QT_NO_CAST_FROM_ASCII when you compile your applications. This can be useful if you want diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index eaf90f2..d54bb70 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -1650,11 +1650,6 @@ void QDeclarativeListView::setPreferredHighlightEnd(qreal end) emit preferredHighlightEndChanged(); } -/*! - \property QDeclarativeListView::highlightRangeMode - - This property contains the highlight range mode for the listview. - */ QDeclarativeListView::HighlightRangeMode QDeclarativeListView::highlightRangeMode() const { Q_D(const QDeclarativeListView); diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 9bff7b2..c23b17c 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -542,9 +542,9 @@ QNetworkAccessManager *QDeclarativeEngine::networkAccessManager() const This example creates a provider with id \e colors: - \snippet examples/declarative/imageprovider/main.cpp 0 + \snippet examples/declarative/imageprovider/imageprovider.cpp 0 - \snippet examples/declarative/imageprovider/view.qml 0 + \snippet examples/declarative/imageprovider/imageprovider.qml 0 \sa removeImageProvider() */ diff --git a/src/declarative/qml/qdeclarativeexpression.cpp b/src/declarative/qml/qdeclarativeexpression.cpp index e528e9e..899f402 100644 --- a/src/declarative/qml/qdeclarativeexpression.cpp +++ b/src/declarative/qml/qdeclarativeexpression.cpp @@ -512,19 +512,20 @@ bool QDeclarativeExpression::notifyOnValueChanged() const } /*! -Sets whether the valueChanged() signal is emitted when the expression's evaluated -value changes. - -If true, the QDeclarativeExpression will monitor properties involved in the expression's -evaluation, and emit QDeclarativeExpression::valueChanged() if they have changed. This allows -an application to ensure that any value associated with the result of the expression -remains up to date. - -If false, the QDeclarativeExpression will not montitor properties involved in the expression's -evaluation, and QDeclarativeExpression::valueChanged() will never be emitted. This is more efficient -if an application wants a "one off" evaluation of the expression. - -By default, notifyOnChange is false. + Sets whether the valueChanged() signal is emitted when the + expression's evaluated value changes. + + If \a notifyOnChange is true, the QDeclarativeExpression will + monitor properties involved in the expression's evaluation, and emit + QDeclarativeExpression::valueChanged() if they have changed. This + allows an application to ensure that any value associated with the + result of the expression remains up to date. + + If \a notifyOnChange is false (default), the QDeclarativeExpression + will not montitor properties involved in the expression's + evaluation, and QDeclarativeExpression::valueChanged() will never be + emitted. This is more efficient if an application wants a "one off" + evaluation of the expression. */ void QDeclarativeExpression::setNotifyOnValueChanged(bool notifyOnChange) { diff --git a/src/declarative/qml/qdeclarativeextensionplugin.cpp b/src/declarative/qml/qdeclarativeextensionplugin.cpp index 3d44d63..7617977 100644 --- a/src/declarative/qml/qdeclarativeextensionplugin.cpp +++ b/src/declarative/qml/qdeclarativeextensionplugin.cpp @@ -87,7 +87,7 @@ QDeclarativeExtensionPlugin::~QDeclarativeExtensionPlugin() /*! \fn void QDeclarativeExtensionPlugin::initializeEngine(QDeclarativeEngine *engine, const char *uri) - Initializes the extension specified in the given \a engine. + Initializes the extension from the \a uri using the \a engine. */ void QDeclarativeExtensionPlugin::initializeEngine(QDeclarativeEngine *engine, const char *uri) diff --git a/src/declarative/qml/qdeclarativeimageprovider.cpp b/src/declarative/qml/qdeclarativeimageprovider.cpp index daa2e87..9ef8545 100644 --- a/src/declarative/qml/qdeclarativeimageprovider.cpp +++ b/src/declarative/qml/qdeclarativeimageprovider.cpp @@ -52,6 +52,10 @@ QT_BEGIN_NAMESPACE \sa QDeclarativeEngine::addImageProvider() */ + +/*! + The destructor is virtual. + */ QDeclarativeImageProvider::~QDeclarativeImageProvider() { } diff --git a/src/declarative/qml/qdeclarativeproperty.cpp b/src/declarative/qml/qdeclarativeproperty.cpp index d223502..945d098 100644 --- a/src/declarative/qml/qdeclarativeproperty.cpp +++ b/src/declarative/qml/qdeclarativeproperty.cpp @@ -773,7 +773,8 @@ QVariant QDeclarativeProperty::read(QObject *object, const QString &name) } /*! - Return the \a name property value of \a object. This method is + Return the \a name property value of \a object using the + \l{QDeclarativeContext} {context} \a ctxt. This method is equivalent to: \code diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index 8c8dd95..20449d7 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -838,10 +838,10 @@ void QDeclarativePropertyAction::setProperty(const QString &n) } /*! + \qmlproperty list PropertyAction::targets \qmlproperty string PropertyAction::property \qmlproperty string PropertyAction::properties \qmlproperty Object PropertyAction::target - \qmlproperty list PropertyAction::targets These properties are used as a set to determine which properties should be affected by this action. @@ -876,6 +876,7 @@ QDeclarativeListProperty QDeclarativePropertyAction::targets() /*! \qmlproperty list PropertyAction::exclude This property holds the objects not to be affected by this animation. + \sa targets */ QDeclarativeListProperty QDeclarativePropertyAction::exclude() @@ -2220,7 +2221,7 @@ QDeclarativeListProperty QDeclarativePropertyAnimation::targets() /*! \qmlproperty list PropertyAnimation::exclude This property holds the items not to be affected by this animation. - \sa targets + \sa PropertyAnimation::targets */ QDeclarativeListProperty QDeclarativePropertyAnimation::exclude() { @@ -2428,11 +2429,12 @@ void QDeclarativePropertyAnimation::transition(QDeclarativeStateActions &actions be run in parallel (like those in a ParallelAnimation group). In some cases, such as reparenting between items with clipping, it's useful - to animate the parent change \i via another item with no clipping. + to animate the parent change via another item with no clipping. When used in a transition, ParentAnimation will by default animate all ParentChanges. */ + /*! \internal \class QDeclarativeParentAnimation diff --git a/src/declarative/util/qdeclarativestateoperations.cpp b/src/declarative/util/qdeclarativestateoperations.cpp index cd06380..766d1bc 100644 --- a/src/declarative/util/qdeclarativestateoperations.cpp +++ b/src/declarative/util/qdeclarativestateoperations.cpp @@ -561,9 +561,6 @@ QString QDeclarativeStateChangeScript::typeName() const \qmlclass AnchorChanges QDeclarativeAnchorChanges \brief The AnchorChanges element allows you to change the anchors of an item in a state. - In the following example we change the top and bottom anchors of an item: - \snippet examples/declarative/anchors/anchor-changes.qml 0 - AnchorChanges will 'inject' \c x, \c y, \c width, and \c height changes into the transition, so you can animate them as you would normally changes to these properties: \qml diff --git a/src/gui/painting/qcolor.cpp b/src/gui/painting/qcolor.cpp index cd448a7..08d5572 100644 --- a/src/gui/painting/qcolor.cpp +++ b/src/gui/painting/qcolor.cpp @@ -543,7 +543,8 @@ void QColor::setNamedColor(const QString &name) be used to construct a valid QColor object, otherwise returns false. - The algorithm used is the same as with \a setNamedColor(). + It uses the same algorithm used in setNamedColor(). + \sa setNamedColor() */ bool QColor::isValidColor(const QString &name) @@ -2716,12 +2717,4 @@ QDataStream &operator>>(QDataStream &stream, QColor &color) \sa QColor::rgb(), QColor::rgba() */ -/*! \fn void QColormap::initialize() - \internal -*/ - -/*! \fn void QColormap::cleanup() - \internal -*/ - QT_END_NAMESPACE diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 9d83718..066725e 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -5758,18 +5758,18 @@ void QPainterPrivate::drawGlyphs(const quint32 *glyphArray, const QPointF *posit /*! \fn void QPainter::drawStaticText(const QPoint &position, const QStaticText &staticText) - \since 4.7 - \overload + + Draws the \a staticText at the \a position. */ /*! \fn void QPainter::drawStaticText(int x, int y, const QStaticText &staticText) - \since 4.7 - \overload + + Draws the \a staticText at coordinates \a x and \a y. */ /*! diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp index 8fe4c47..1fabf12 100644 --- a/src/gui/text/qstatictext.cpp +++ b/src/gui/text/qstatictext.cpp @@ -282,8 +282,10 @@ QString QStaticText::text() const } /*! - Sets the performance hint of the QStaticText. This hint can be used to customize how much - caching is done internally to improve performance. + Sets the performance hint of the QStaticText according to the \a + performanceHint provided. The \a performanceHint is used to + customize how much caching is done internally to improve + performance. The default is QStaticText::ModerateCaching. diff --git a/src/multimedia/effects/qsoundeffect.cpp b/src/multimedia/effects/qsoundeffect.cpp index f64d9ee..a5cb20f 100644 --- a/src/multimedia/effects/qsoundeffect.cpp +++ b/src/multimedia/effects/qsoundeffect.cpp @@ -71,8 +71,6 @@ QT_BEGIN_NAMESPACE } } \endqml - - \sa SoundEffect */ /*! -- cgit v0.12 From bb966fe9dd8be25530da5a66727c7fe2123fafbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Tue, 9 Mar 2010 12:26:51 +0100 Subject: Renamed QPainter::Fragment/Hint -> QPainter::PixmapFragment/Hint Reviewed-by: Kim --- .../graphicsitems/qdeclarativeparticles.cpp | 2 +- src/gui/painting/qdrawutil.cpp | 4 +-- src/gui/painting/qpaintengineex.cpp | 4 +-- src/gui/painting/qpaintengineex_p.h | 3 +- src/gui/painting/qpainter.cpp | 40 +++++++++++----------- src/gui/painting/qpainter.h | 12 +++---- .../gl2paintengineex/qpaintengineex_opengl2.cpp | 7 ++-- .../gl2paintengineex/qpaintengineex_opengl2_p.h | 6 ++-- src/openvg/qpaintengine_vg.cpp | 4 +-- src/openvg/qpaintengine_vg_p.h | 3 +- tests/auto/qpainter/tst_qpainter.cpp | 10 +++--- 11 files changed, 50 insertions(+), 45 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeparticles.cpp b/src/declarative/graphicsitems/qdeclarativeparticles.cpp index ec0bf6c..593c80a 100644 --- a/src/declarative/graphicsitems/qdeclarativeparticles.cpp +++ b/src/declarative/graphicsitems/qdeclarativeparticles.cpp @@ -1263,7 +1263,7 @@ void QDeclarativeParticlesPainter::paint(QPainter *p, const QStyleOptionGraphics const int myY = y() + parentItem()->y(); #if (QT_VERSION >= QT_VERSION_CHECK(4,7,0)) - QVarLengthArray pixmapData; + QVarLengthArray pixmapData; #else QVarLengthArray pixmapData; #endif diff --git a/src/gui/painting/qdrawutil.cpp b/src/gui/painting/qdrawutil.cpp index d76c709..a62f06b 100644 --- a/src/gui/painting/qdrawutil.cpp +++ b/src/gui/painting/qdrawutil.cpp @@ -1081,7 +1081,7 @@ void qDrawItem(QPainter *p, Qt::GUIStyle gs, according to the \a margins structure. */ -typedef QVarLengthArray QPixmapFragmentsArray; +typedef QVarLengthArray QPixmapFragmentsArray; /*! \since 4.6 @@ -1102,7 +1102,7 @@ void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargin const QPixmap &pixmap, const QRect &sourceRect,const QMargins &sourceMargins, const QTileRules &rules, QDrawBorderPixmap::DrawingHints hints) { - QPainter::Fragment d; + QPainter::PixmapFragment d; d.opacity = 1.0; d.rotation = 0.0; diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp index 98762f0..1fd622d 100644 --- a/src/gui/painting/qpaintengineex.cpp +++ b/src/gui/painting/qpaintengineex.cpp @@ -970,8 +970,8 @@ void QPaintEngineEx::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, con fill(path, brush); } -void QPaintEngineEx::drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, - const QPixmap &pixmap, QPainter::FragmentHints /*hints*/) +void QPaintEngineEx::drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, + const QPixmap &pixmap, QPainter::PixmapFragmentHints /*hints*/) { qreal oldOpacity = state()->opacity; QTransform oldTransform = state()->matrix; diff --git a/src/gui/painting/qpaintengineex_p.h b/src/gui/painting/qpaintengineex_p.h index 2401b94..6c654bd 100644 --- a/src/gui/painting/qpaintengineex_p.h +++ b/src/gui/painting/qpaintengineex_p.h @@ -197,7 +197,8 @@ public: virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s); - virtual void drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QFlags hints); + virtual void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, + QFlags hints); virtual void updateState(const QPaintEngineState &state); diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 9d83718..50279e4 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -8914,11 +8914,11 @@ QTransform QPainter::combinedTransform() const This function is potentially faster than multiple calls to drawPixmap(), since the backend can optimize state changes. - \sa QPainter::Fragment, QPainter::FragmentHint + \sa QPainter::PixmapFragment, QPainter::PixmapFragmentHint */ -void QPainter::drawPixmapFragments(const Fragment *fragments, int fragmentCount, - const QPixmap &pixmap, FragmentHints hints) +void QPainter::drawPixmapFragments(const PixmapFragment *fragments, int fragmentCount, + const QPixmap &pixmap, PixmapFragmentHints hints) { Q_D(QPainter); @@ -8959,7 +8959,7 @@ void QPainter::drawPixmapFragments(const Fragment *fragments, int fragmentCount, /*! \since 4.7 - \class QPainter::Fragment + \class QPainter::PixmapFragment \brief This class is used in conjunction with the QPainter::drawPixmapFragments() function to specify how a pixmap, or @@ -8980,73 +8980,73 @@ void QPainter::drawPixmapFragments(const Fragment *fragments, int fragmentCount, /*! \since 4.7 - This is a convenience function that returns a QPainter::Fragment that is + This is a convenience function that returns a QPainter::PixmapFragment that is initialized with the \a pos, \a sourceRect, \a scaleX, \a scaleY, \a rotation, \a opacity parameters. */ -QPainter::Fragment QPainter::Fragment::create(const QPointF &pos, const QRectF &sourceRect, +QPainter::PixmapFragment QPainter::PixmapFragment::create(const QPointF &pos, const QRectF &sourceRect, qreal scaleX, qreal scaleY, qreal rotation, qreal opacity) { - Fragment fragment = {pos.x(), pos.y(), sourceRect.x(), sourceRect.y(), sourceRect.width(), - sourceRect.height(), scaleX, scaleY, rotation, opacity}; + PixmapFragment fragment = {pos.x(), pos.y(), sourceRect.x(), sourceRect.y(), sourceRect.width(), + sourceRect.height(), scaleX, scaleY, rotation, opacity}; return fragment; } /*! - \variable QPainter::Fragment::x + \variable QPainter::PixmapFragment::x \brief the x coordinate of center point in the target rectangle. */ /*! - \variable QPainter::Fragment::y + \variable QPainter::PixmapFragment::y \brief the y coordinate of the center point in the target rectangle. */ /*! - \variable QPainter::Fragment::sourceLeft + \variable QPainter::PixmapFragment::sourceLeft \brief the left coordinate of the source rectangle. */ /*! - \variable QPainter::Fragment::sourceTop + \variable QPainter::PixmapFragment::sourceTop \brief the top coordinate of the source rectangle. */ /*! - \variable QPainter::Fragment::width + \variable QPainter::PixmapFragment::width \brief the width of the source rectangle and is used to calculate the width of the target rectangle. */ /*! - \variable QPainter::Fragment::height + \variable QPainter::PixmapFragment::height \brief the height of the source rectangle and is used to calculate the height of the target rectangle. */ /*! - \variable QPainter::Fragment::scaleX + \variable QPainter::PixmapFragment::scaleX \brief the horizontal scale of the target rectangle. */ /*! - \variable QPainter::Fragment::scaleY + \variable QPainter::PixmapFragment::scaleY \brief the vertical scale of the target rectangle. */ /*! - \variable QPainter::Fragment::rotation + \variable QPainter::PixmapFragment::rotation \brief the rotation of the target rectangle in degrees. The target rectangle is rotated after it has been scaled. */ /*! - \variable QPainter::Fragment::opacity + \variable QPainter::PixmapFragment::opacity \brief the opacity of the target rectangle, where 0.0 is fully transparent and 1.0 is fully opaque. @@ -9055,12 +9055,12 @@ QPainter::Fragment QPainter::Fragment::create(const QPointF &pos, const QRectF & /*! \since 4.7 - \enum QPainter::FragmentHint + \enum QPainter::PixmapFragmentHint \value OpaqueHint Indicates that the pixmap fragments to be drawn are opaque. Opaque fragments are potentially faster to draw. - \sa QPainter::drawPixmapFragments(), QPainter::Fragment + \sa QPainter::drawPixmapFragments(), QPainter::PixmapFragment */ void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivate::DrawOperation operation) diff --git a/src/gui/painting/qpainter.h b/src/gui/painting/qpainter.h index bcb0b50..443925b 100644 --- a/src/gui/painting/qpainter.h +++ b/src/gui/painting/qpainter.h @@ -99,7 +99,7 @@ public: Q_DECLARE_FLAGS(RenderHints, RenderHint) - class Fragment { + class PixmapFragment { public: qreal x; qreal y; @@ -111,16 +111,16 @@ public: qreal scaleY; qreal rotation; qreal opacity; - static Fragment Q_GUI_EXPORT create(const QPointF &pos, const QRectF &sourceRect, + static PixmapFragment Q_GUI_EXPORT create(const QPointF &pos, const QRectF &sourceRect, qreal scaleX = 1, qreal scaleY = 1, qreal rotation = 0, qreal opacity = 1); }; - enum FragmentHint { + enum PixmapFragmentHint { OpaqueHint = 0x01 }; - Q_DECLARE_FLAGS(FragmentHints, FragmentHint) + Q_DECLARE_FLAGS(PixmapFragmentHints, PixmapFragmentHint) QPainter(); explicit QPainter(QPaintDevice *); @@ -375,8 +375,8 @@ public: inline void drawPixmap(const QRect &r, const QPixmap &pm); inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm); - void drawPixmapFragments(const Fragment *fragments, int fragmentCount, - const QPixmap &pixmap, FragmentHints hints = 0); + void drawPixmapFragments(const PixmapFragment *fragments, int fragmentCount, + const QPixmap &pixmap, PixmapFragmentHints hints = 0); void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect, Qt::ImageConversionFlags flags = Qt::AutoColor); diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index 8eb72b0..2b5f2f4 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -1641,7 +1641,8 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp s->matrix = old; } -void QGL2PaintEngineEx::drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::FragmentHints hints) +void QGL2PaintEngineEx::drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, + QPainter::PixmapFragmentHints hints) { Q_D(QGL2PaintEngineEx); // Use fallback for extended composition modes. @@ -1655,9 +1656,9 @@ void QGL2PaintEngineEx::drawPixmapFragments(const QPainter::Fragment *fragments, } -void QGL2PaintEngineExPrivate::drawPixmapFragments(const QPainter::Fragment *fragments, +void QGL2PaintEngineExPrivate::drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, - QPainter::FragmentHints hints) + QPainter::PixmapFragmentHints hints) { GLfloat dx = 1.0f / pixmap.size().width(); GLfloat dy = 1.0f / pixmap.size().height(); diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h index 5d3608b..ed8fbbc 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h @@ -125,7 +125,8 @@ public: virtual void drawTexture(const QRectF &r, GLuint textureId, const QSize &size, const QRectF &sr); virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr); - virtual void drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::FragmentHints hints); + virtual void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, + QPainter::PixmapFragmentHints hints); virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor); virtual void drawTextItem(const QPointF &p, const QTextItem &textItem); @@ -196,7 +197,8 @@ public: void fill(const QVectorPath &path); void stroke(const QVectorPath &path, const QPen &pen); void drawTexture(const QGLRect& dest, const QGLRect& src, const QSize &textureSize, bool opaque, bool pattern = false); - void drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::FragmentHints hints); + void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, + QPainter::PixmapFragmentHints hints); void drawCachedGlyphs(QFontEngineGlyphCache::Type glyphType, QStaticTextItem *staticTextItem, bool includeMatrixInCache); diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index 4df894a..2c850c9 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -3041,8 +3041,8 @@ void QVGPaintEngine::drawTiledPixmap // (i.e. no opacity), no rotation or scaling, and drawing the full // pixmap rather than parts of the pixmap. Even having just one of // these conditions will improve performance. -void QVGPaintEngine::drawPixmapFragments(const QPainter::Fragment *drawingData, int dataCount, - const QPixmap &pixmap, QFlags hints) +void QVGPaintEngine::drawPixmapFragments(const QPainter::PixmapFragment *drawingData, int dataCount, + const QPixmap &pixmap, QFlags hints) { #if !defined(QT_SHIVAVG) Q_D(QVGPaintEngine); diff --git a/src/openvg/qpaintengine_vg_p.h b/src/openvg/qpaintengine_vg_p.h index 1203af5..1e7e26c 100644 --- a/src/openvg/qpaintengine_vg_p.h +++ b/src/openvg/qpaintengine_vg_p.h @@ -137,7 +137,8 @@ public: void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s); - void drawPixmapFragments(const QPainter::Fragment *drawingData, int dataCount, const QPixmap &pixmap, QFlags hints); + void drawPixmapFragments(const QPainter::PixmapFragment *drawingData, int dataCount, const QPixmap &pixmap, + QFlags hints); void drawTextItem(const QPointF &p, const QTextItem &textItem); void drawStaticTextItem(QStaticTextItem *staticTextItem); diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp index a03b2c7..701dc2e 100644 --- a/tests/auto/qpainter/tst_qpainter.cpp +++ b/tests/auto/qpainter/tst_qpainter.cpp @@ -999,10 +999,10 @@ void tst_QPainter::drawPixmapFragments() { QPixmap origPixmap(20, 20); QPixmap resPixmap(20, 20); - QPainter::Fragment fragments[4] = { {15, 15, 0, 0, 10, 10, 1, 1, 0, 1}, - { 5, 15, 10, 0, 10, 10, 1, 1, 0, 1}, - {15, 5, 0, 10, 10, 10, 1, 1, 0, 1}, - { 5, 5, 10, 10, 10, 10, 1, 1, 0, 1} }; + QPainter::PixmapFragment fragments[4] = { {15, 15, 0, 0, 10, 10, 1, 1, 0, 1}, + { 5, 15, 10, 0, 10, 10, 1, 1, 0, 1}, + {15, 5, 0, 10, 10, 10, 1, 1, 0, 1}, + { 5, 5, 10, 10, 10, 10, 1, 1, 0, 1} }; { QPainter p(&origPixmap); p.fillRect(0, 0, 10, 10, Qt::red); @@ -1025,7 +1025,7 @@ void tst_QPainter::drawPixmapFragments() QVERIFY(resImage.pixel(15, 15) == origImage.pixel(5, 5)); - QPainter::Fragment fragment = QPainter::Fragment::create(QPointF(20, 20), QRectF(30, 30, 2, 2)); + QPainter::PixmapFragment fragment = QPainter::PixmapFragment::create(QPointF(20, 20), QRectF(30, 30, 2, 2)); QVERIFY(fragment.x == 20); QVERIFY(fragment.y == 20); QVERIFY(fragment.sourceLeft == 30); -- cgit v0.12 From 53795b645d82afc30a0527523e3fad2a763779e2 Mon Sep 17 00:00:00 2001 From: Zeno Albisser Date: Mon, 8 Mar 2010 18:15:57 +0100 Subject: Changed TEST_COMPILER from CC to CXX in configure script. We are using a cpp file for testing the compiler. Because of that we have to use a c++ compiler for the test as well. But if there was a CC variable defined, this one was used instead of CXX for the compiler test. This resulted in a missing QMAKE_LFLAGS definition in .qmake.cache. Due to this, the -L/path/to/QTDIR/lib was missing too and assistant could not be linked to libQtCLucene.so.4. Reviewed-by: Marius Storm-Olsen Task-number: QTBUG-8808,QTBUG-5471,QTBUG-5385,QTBUG-5774 --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 56fd067..71056b6 100755 --- a/configure +++ b/configure @@ -2976,7 +2976,7 @@ else fi QMAKE_CONF_COMPILER=`getQMakeConf "$XQMAKESPEC" | grep "^QMAKE_CXX[^_A-Z0-9]" | sed "s,.* *= *\(.*\)$,\1," | tail -1` -TEST_COMPILER="$CC" +TEST_COMPILER="$CXX" [ -z "$TEST_COMPILER" ] && TEST_COMPILER=$QMAKE_CONF_COMPILER if [ -z "$TEST_COMPILER" ]; then echo "ERROR: Cannot set the compiler for the configuration tests" -- cgit v0.12 From 0edda17e2edb4da968b026ac6658f740323d6dd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Tue, 9 Mar 2010 12:20:21 +0100 Subject: Revert 12b6987031be9faee3886d7623888feb4e1762af The CI system found lots of focus-related regressions, this is probably the offending change. (I can't reproduce the regressions locally.) --- src/gui/kernel/qcocoaview_mac.mm | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm index 6261429..f7cb21f 100644 --- a/src/gui/kernel/qcocoaview_mac.mm +++ b/src/gui/kernel/qcocoaview_mac.mm @@ -1047,13 +1047,6 @@ static int qCocoaViewCount = 0; return YES; } -- (BOOL)becomeFirstResponder -{ - if (QApplication::focusWidget() == 0) - QApplicationPrivate::setFocusWidget([self QT_MANGLE_NAMESPACE(qt_qwidget)], Qt::OtherFocusReason); - return YES; -} - - (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal { Q_UNUSED(isLocal); -- cgit v0.12 From d85b149a5c7f3532f8e1a593a79298c9ae38a95f Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Tue, 9 Mar 2010 14:13:58 +0100 Subject: Fix alignment of text with negative right bearing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In change 5364fd96a72c89b281f0540da909fe64d0575ccf and some related changes, we made sure that the natural text width used for calculating bounding rects and line breaks in the text, takes the right bearing of the last glyph into consideration. As a side-effect, this broke alignment of text, as we want to align based on the accumulated advance of the glyphs, not based on the actual width. This is in particular important when aligning monospaced text, since the text can become misaligned if the glyphs extend beyond their advance. The bug was visible e.g. in line numbers ending with 2 in Qt Creator on X11, which would be shifted one pixel to the left compared to other line numbers. Task-number: QTBUG-8864 Reviewed-by: Thorbjørn --- src/gui/painting/qpainter.cpp | 5 +++-- src/gui/text/qtextengine_p.h | 1 + src/gui/text/qtextlayout.cpp | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index dc96c17..9e2fc82 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -7994,10 +7994,11 @@ start_lengthVariant: for (int i = 0; i < textLayout.lineCount(); i++) { QTextLine line = textLayout.lineAt(i); + qreal advance = textLayout.engine()->lines[i].textAdvance.toReal(); if (tf & Qt::AlignRight) - xoff = r.width() - line.naturalTextWidth(); + xoff = r.width() - advance; else if (tf & Qt::AlignHCenter) - xoff = (r.width() - line.naturalTextWidth())/2; + xoff = (r.width() - advance)/2; line.draw(painter, QPointF(r.x() + xoff + line.x(), r.y() + yoff)); } diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h index f36cbd2..5054b66 100644 --- a/src/gui/text/qtextengine_p.h +++ b/src/gui/text/qtextengine_p.h @@ -382,6 +382,7 @@ struct Q_AUTOTEST_EXPORT QScriptLine QFixed y; QFixed width; QFixed textWidth; + QFixed textAdvance; int from; signed int length : 29; mutable uint justified : 1; diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp index af91603..cc6793d 100644 --- a/src/gui/text/qtextlayout.cpp +++ b/src/gui/text/qtextlayout.cpp @@ -1875,6 +1875,7 @@ void QTextLine::layout_helper(int maxGlyphs) line.textWidth += lbh.softHyphenWidth; } + line.textAdvance = line.textWidth; line.textWidth += lbh.rightBearing; goto found; @@ -1885,6 +1886,7 @@ void QTextLine::layout_helper(int maxGlyphs) } LB_DEBUG("reached end of line"); lbh.checkFullOtherwiseExtend(line); + line.textAdvance = line.textWidth; line.textWidth += lbh.rightBearing; found: -- cgit v0.12 From b0514ccdd318e2e508edab57bfd7ed064a550308 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Tue, 9 Mar 2010 14:45:54 +0100 Subject: Minimal fix to get the svgalib example to compile Confirmed to work in 16 and 32 bit modes. Patch made by David Boddie. Testing and README by me. Task-number: QTBUG-7403 Reviewed-by: David Boddie --- doc/src/examples/svgalib.qdoc | 3 -- examples/qws/svgalib/README | 12 +++++--- examples/qws/svgalib/svgalibpaintdevice.cpp | 2 +- examples/qws/svgalib/svgalibpaintengine.cpp | 45 ++++++++++++++--------------- examples/qws/svgalib/svgalibpaintengine.h | 6 ++-- 5 files changed, 34 insertions(+), 34 deletions(-) diff --git a/doc/src/examples/svgalib.qdoc b/doc/src/examples/svgalib.qdoc index cf6512c..9142112 100644 --- a/doc/src/examples/svgalib.qdoc +++ b/doc/src/examples/svgalib.qdoc @@ -43,9 +43,6 @@ \example qws/svgalib \title Accelerated Graphics Driver Example - \warning This example was designed to work with Qt 4.4 and will not work - with current versions of Qt. It will be removed from Qt 4.7. - The Accelerated Graphics Driver example shows how you can write your own accelerated graphics driver and \l {add your graphics driver to Qt for Embedded Linux}. In \l{Qt for Embedded Linux}, diff --git a/examples/qws/svgalib/README b/examples/qws/svgalib/README index 0b2831f..227c066 100644 --- a/examples/qws/svgalib/README +++ b/examples/qws/svgalib/README @@ -1,5 +1,9 @@ -This is the SVGA screen driver plugin example from Qt 4.4. The code does -not compile with Qt 4.5, because the internal graphics engine has changed. +This is the SVGA screen driver plugin example for QWS. -This is unsupported code, provided for convenience in case there is -interest in porting it to Qt 4.5. +You may need to set the SVGALIB_DEFAULT_MODE environment +variable. These values have been confirmed to work on one specific +machine using svgalib 1.4.3: 18, 24, 34, 35, 36 + +There is a bug in the example causing missing updates in 8-bit mode +(e.g. modes 10 and 12). Fixing this bug is left as an exercise for the +reader. diff --git a/examples/qws/svgalib/svgalibpaintdevice.cpp b/examples/qws/svgalib/svgalibpaintdevice.cpp index 090311f..86613d2 100644 --- a/examples/qws/svgalib/svgalibpaintdevice.cpp +++ b/examples/qws/svgalib/svgalibpaintdevice.cpp @@ -48,7 +48,7 @@ SvgalibPaintDevice::SvgalibPaintDevice(QWidget *w) : QCustomRasterPaintDevice(w) { - pengine = new SvgalibPaintEngine; + pengine = new SvgalibPaintEngine(this); } SvgalibPaintDevice::~SvgalibPaintDevice() diff --git a/examples/qws/svgalib/svgalibpaintengine.cpp b/examples/qws/svgalib/svgalibpaintengine.cpp index 8713863..59740da 100644 --- a/examples/qws/svgalib/svgalibpaintengine.cpp +++ b/examples/qws/svgalib/svgalibpaintengine.cpp @@ -45,7 +45,8 @@ #include #include -SvgalibPaintEngine::SvgalibPaintEngine() +SvgalibPaintEngine::SvgalibPaintEngine(QPaintDevice *device) + : QRasterPaintEngine(device) { } @@ -61,7 +62,7 @@ bool SvgalibPaintEngine::begin(QPaintDevice *dev) simplePen = true; brush = Qt::NoBrush; simpleBrush = true; - matrix = QMatrix(); + matrix = QTransform(); simpleMatrix = true; setClip(QRect(0, 0, device->width(), device->height())); opaque = true; @@ -81,54 +82,52 @@ bool SvgalibPaintEngine::end() //! [1] //! [2] -void SvgalibPaintEngine::updateState(const QPaintEngineState &state) +void SvgalibPaintEngine::updateState() { - QPaintEngine::DirtyFlags flags = state.state(); + QRasterPaintEngineState *s = state(); - if (flags & DirtyTransform) { - matrix = state.matrix(); + if (s->dirty & DirtyTransform) { + matrix = s->matrix; simpleMatrix = (matrix.m12() == 0 && matrix.m21() == 0); } - if (flags & DirtyPen) { - pen = state.pen(); + if (s->dirty & DirtyPen) { + pen = s->pen; simplePen = (pen.width() == 0 || pen.widthF() <= 1) && (pen.style() == Qt::NoPen || pen.style() == Qt::SolidLine) && (pen.color().alpha() == 255); } - if (flags & DirtyBrush) { - brush = state.brush(); + if (s->dirty & DirtyBrush) { + brush = s->brush; simpleBrush = (brush.style() == Qt::SolidPattern || brush.style() == Qt::NoBrush) && (brush.color().alpha() == 255); } - if (flags & DirtyClipRegion) - setClip(state.clipRegion()); + if (s->dirty & DirtyClipRegion) + setClip(s->clipRegion); - if (flags & DirtyClipEnabled) { - clipEnabled = state.isClipEnabled(); + if (s->dirty & DirtyClipEnabled) { + clipEnabled = s->isClipEnabled(); updateClip(); } - if (flags & DirtyClipPath) { + if (s->dirty & DirtyClipPath) { setClip(QRegion()); simpleClip = false; } - if (flags & DirtyCompositionMode) { - const QPainter::CompositionMode m = state.compositionMode(); + if (s->dirty & DirtyCompositionMode) { + const QPainter::CompositionMode m = s->composition_mode; sourceOver = (m == QPainter::CompositionMode_SourceOver); } - if (flags & DirtyOpacity) - opaque = (state.opacity() == 256); + if (s->dirty & DirtyOpacity) + opaque = (s->opacity == 256); - if (flags & DirtyHints) - aliased = !(state.renderHints() & QPainter::Antialiasing); - - QRasterPaintEngine::updateState(state); + if (s->dirty & DirtyHints) + aliased = !(s->flags.antialiased); } //! [2] diff --git a/examples/qws/svgalib/svgalibpaintengine.h b/examples/qws/svgalib/svgalibpaintengine.h index f43d201..27b77ee 100644 --- a/examples/qws/svgalib/svgalibpaintengine.h +++ b/examples/qws/svgalib/svgalibpaintengine.h @@ -48,12 +48,12 @@ class SvgalibPaintEngine : public QRasterPaintEngine { public: - SvgalibPaintEngine(); + SvgalibPaintEngine(QPaintDevice *device); ~SvgalibPaintEngine(); bool begin(QPaintDevice *device); bool end(); - void updateState(const QPaintEngineState &state); + void updateState(); void drawRects(const QRect *rects, int rectCount); private: @@ -64,7 +64,7 @@ private: bool simplePen; QBrush brush; bool simpleBrush; - QMatrix matrix; + QTransform matrix; bool simpleMatrix; QRegion clip; bool clipEnabled; -- cgit v0.12 From 65dc878e857ec97c1dbccddc3809eb68ed379fc9 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 11 Feb 2010 11:41:28 +0100 Subject: TextCodec on Symbian: use the native symbian backend for text codecs. On symbian, we would use the native textcodec for anything but UTF and Latin1. Some codec that are not present by default in symbian are still present inside Qt, but if there is symbian codecs that exists for those, Symbian codecs have priority. Most of code has been contributed by the Obrit i18n team. Task-number: QT-2471 (Symbian part) Task-number: QT-2627 Reviewed-by: axis --- src/corelib/codecs/codecs.pri | 3 +- src/corelib/codecs/qsimplecodec.cpp | 12 +- src/corelib/codecs/qsimplecodec_p.h | 4 + src/corelib/codecs/qtextcodec.cpp | 41 +- src/corelib/codecs/qtextcodec_symbian.cpp | 678 ++++++++++++++++++++++++++++++ tests/auto/qtextcodec/test/test.pro | 1 + tests/auto/qtextcodec/tst_qtextcodec.cpp | 250 ++++++++++- 7 files changed, 972 insertions(+), 17 deletions(-) create mode 100644 src/corelib/codecs/qtextcodec_symbian.cpp diff --git a/src/corelib/codecs/codecs.pri b/src/corelib/codecs/codecs.pri index 17f4d91..c572e08 100644 --- a/src/corelib/codecs/codecs.pri +++ b/src/corelib/codecs/codecs.pri @@ -31,7 +31,7 @@ unix { DEFINES += GNU_LIBICONV !mac:LIBS_PRIVATE *= -liconv - } else { + } else:!symbian { # no iconv, so we put all plugins in the library HEADERS += \ ../plugins/codecs/cn/qgb18030codec.h \ @@ -52,3 +52,4 @@ unix { ../plugins/codecs/jp/qfontjpcodec.cpp } } +symbian:LIBS += -lcharconv diff --git a/src/corelib/codecs/qsimplecodec.cpp b/src/corelib/codecs/qsimplecodec.cpp index 4cc7912..a6f5c9e 100644 --- a/src/corelib/codecs/qsimplecodec.cpp +++ b/src/corelib/codecs/qsimplecodec.cpp @@ -54,6 +54,7 @@ static const struct { int mib; quint16 values[128]; } unicodevalues[QSimpleTextCodec::numSimpleCodecs] = { +#ifndef Q_OS_SYMBIAN // from RFC 1489, ftp://ftp.isi.edu/in-notes/rfc1489.txt { "KOI8-R", { "csKOI8R", 0 }, 2084, { 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, @@ -288,6 +289,7 @@ static const struct { 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, 0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF} }, +#endif { "ISO-8859-16", { "iso-ir-226", "latin10", 0 }, 112, { 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F, @@ -309,7 +311,7 @@ static const struct { // next bits generated again from tables on the Unicode 3.0 CD. // $ for a in CP* ; do (awk '/^0x[89ABCDEF]/{ print $1, $2 }' < $a) | sort | sed -e 's/#UNDEF.*$/0xFFFD/' | cut -c6- | paste '-d ' - - - - - - - - | sed -e 's/ /, /g' -e 's/$/,/' -e '$ s/,$/} },/' -e '1 s/^/{ /' > ~/tmp/$a ; done - +#ifndef Q_OS_SYMBIAN { "IBM850", { "CP850", "csPC850Multilingual", 0 }, 2009, { 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, @@ -344,6 +346,7 @@ static const struct { 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F, 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57, 0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD} }, +#endif //Q_OS_SYMBIAN { "IBM866", { "CP866", "csIBM866", 0 }, 2086, { 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, @@ -362,6 +365,7 @@ static const struct { 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E, 0x00B0, 0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0} }, +#ifndef Q_OS_SYMBIAN { "windows-1250", { "CP1250", 0 }, 2250, { 0x20AC, 0xFFFD, 0x201A, 0xFFFD, 0x201E, 0x2026, 0x2020, 0x2021, 0xFFFD, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, @@ -516,6 +520,7 @@ static const struct { 0x0111, 0x00F1, 0x0323, 0x00F3, 0x00F4, 0x01A1, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x01B0, 0x20AB, 0x00FF} }, +#endif { "Apple Roman", { "macintosh", "MacRoman", 0 }, -168, { 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, @@ -534,8 +539,6 @@ static const struct { 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7} }, - - // This one is based on the charmap file // /usr/share/i18n/charmaps/SAMI-WS2.gz, which is manually adapted // to this format by Boerre Gaup @@ -557,7 +560,7 @@ static const struct { 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF} }, - +#ifndef Q_OS_SYMBIAN // this one is generated from the charmap file located in /usr/share/i18n/charmaps // on most Linux distributions. The thai character set tis620 is byte by byte equivalent // to iso8859-11, so we name it 8859-11 here, but recognise the name tis620 too. @@ -581,6 +584,7 @@ static const struct { 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57, 0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD } }, +#endif /* Name: hp-roman8 [HP-PCL5,RFC1345,KXS2] MIBenum: 2004 diff --git a/src/corelib/codecs/qsimplecodec_p.h b/src/corelib/codecs/qsimplecodec_p.h index b53eb95..57503b2 100644 --- a/src/corelib/codecs/qsimplecodec_p.h +++ b/src/corelib/codecs/qsimplecodec_p.h @@ -64,7 +64,11 @@ template class QAtomicPointer; class QSimpleTextCodec: public QTextCodec { public: +#ifdef Q_OS_SYMBIAN + enum { numSimpleCodecs = 5 }; +#else enum { numSimpleCodecs = 30 }; +#endif explicit QSimpleTextCodec(int); ~QSimpleTextCodec(); diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp index ca5e658..4034218 100644 --- a/src/corelib/codecs/qtextcodec.cpp +++ b/src/corelib/codecs/qtextcodec.cpp @@ -64,6 +64,7 @@ #ifndef QT_NO_CODECS # include "qtsciicodec_p.h" # include "qisciicodec_p.h" +#ifndef Q_OS_SYMBIAN # if defined(QT_NO_ICONV) && !defined(QT_BOOTSTRAPPED) // no iconv(3) support, must build all codecs into the library # include "../../plugins/codecs/cn/qgb18030codec.h" @@ -77,6 +78,7 @@ # include "qfontlaocodec_p.h" # include "../../plugins/codecs/jp/qfontjpcodec.h" # endif +#endif // QT_NO_SYMBIAN #endif // QT_NO_CODECS #include "qlocale.h" #include "qmutex.h" @@ -93,6 +95,11 @@ # define QT_NO_SETLOCALE #endif +#ifdef Q_OS_SYMBIAN +#include "qtextcodec_symbian.cpp" +#endif + + // enabling this is not exception safe! // #define Q_DEBUG_TEXTCODEC @@ -537,6 +544,12 @@ static QTextCodec *checkForCodec(const QByteArray &name) { */ static void setupLocaleMapper() { +#ifdef Q_OS_SYMBIAN + localeMapper = QSymbianTextCodec::localeMapper; + if (localeMapper) + return; +#endif + #if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) localeMapper = QTextCodec::codecForName("System"); #else @@ -680,6 +693,17 @@ static void setup() (void) createQTextCodecCleanup(); #ifndef QT_NO_CODECS + (void)new QTsciiCodec; + for (int i = 0; i < 9; ++i) + (void)new QIsciiCodec(i); + + for (int i = 0; i < QSimpleTextCodec::numSimpleCodecs; ++i) + (void)new QSimpleTextCodec(i); + +#ifdef Q_OS_SYMBIAN + localeMapper = QSymbianTextCodec::init(); +#endif + # if defined(Q_WS_X11) && !defined(QT_BOOTSTRAPPED) // no font codecs when bootstrapping (void)new QFontLaoCodec; @@ -696,12 +720,8 @@ static void setup() # endif // QT_NO_ICONV && !QT_BOOTSTRAPPED # endif // Q_WS_X11 - (void)new QTsciiCodec; - - for (int i = 0; i < 9; ++i) - (void)new QIsciiCodec(i); - +#ifndef Q_OS_SYMBIAN # if defined(QT_NO_ICONV) && !defined(QT_BOOTSTRAPPED) // no asian codecs when bootstrapping, sorry (void)new QGb18030Codec; @@ -715,6 +735,7 @@ static void setup() (void)new QBig5Codec; (void)new QBig5hkscsCodec; # endif // QT_NO_ICONV && !QT_BOOTSTRAPPED +#endif //Q_OS_SYMBIAN #endif // QT_NO_CODECS #if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) @@ -727,17 +748,18 @@ static void setup() (void)new QUtf32Codec; (void)new QUtf32BECodec; (void)new QUtf32LECodec; +#ifndef Q_OS_SYMBIAN (void)new QLatin15Codec; +#endif (void)new QLatin1Codec; (void)new QUtf8Codec; - for (int i = 0; i < QSimpleTextCodec::numSimpleCodecs; ++i) - (void)new QSimpleTextCodec(i); - +#ifndef Q_OS_SYMBIAN #if defined(Q_OS_UNIX) && !defined(QT_NO_ICONV) && !defined(QT_BOOTSTRAPPED) // QIconvCodec depends on the UTF-16 codec, so it needs to be created last (void) new QIconvCodec(); #endif +#endif if (!localeMapper) setupLocaleMapper(); @@ -1124,6 +1146,9 @@ QList QTextCodec::availableMibs() */ void QTextCodec::setCodecForLocale(QTextCodec *c) { +#ifndef QT_NO_THREAD + QMutexLocker locker(textCodecsMutex()); +#endif localeMapper = c; if (!localeMapper) setupLocaleMapper(); diff --git a/src/corelib/codecs/qtextcodec_symbian.cpp b/src/corelib/codecs/qtextcodec_symbian.cpp new file mode 100644 index 0000000..e4db9d7 --- /dev/null +++ b/src/corelib/codecs/qtextcodec_symbian.cpp @@ -0,0 +1,678 @@ +/**************************************************************************** +** +** 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 QtCore 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 "qtextcodec_p.h" + +#include +#include +#include + +#include + +struct QSymbianCodecInitData { + uint charsetId; + int mib; + const char *aliases; +}; + +/* This table contains the known Symbian codecs aliases. It is ordered by charsetId. + It is required as symbian does not provide have aliases. + */ +static const QSymbianCodecInitData codecsData[] = { + { /*268439485*/ KCharacterSetIdentifierShiftJis, 17, "Shift_JIS\0MS_Kanji\0csShiftJIS\0MS_KANJI\0SJIS\0" }, + { /*268439486*/ KCharacterSetIdentifierGb2312, 57, "GB2312\0csGB2312\0CN-GB\0EUC-CN\0" }, + { /*268439487*/ KCharacterSetIdentifierBig5, 2026, "Big5\0csBig5\0Big5-ETen\0CP950\0BIG-FIVE\0CN-BIG5\0" }, + { /*268440246*/ KCharacterSetIdentifierCodePage1252, 2252, "windows-1252\0Code Page 1252\0CP1252\0MS-ANSI\0" }, +// { /*268450576*/ KCharacterSetIdentifierIso88591, 4, "ISO-8859-1\0ISO_8859-1:1987\0iso-ir-100\0ISO_8859-1\0latin1\0l1\0IBM819\0CP819\0csISOLatin1\0ISO-IR-100\0ISO8859-1\0L1\0LATIN1\0CSISOLATIN1\0" }, + { /*268451531*/ KCharacterSetIdentifierGbk, 113, "GBK\0MS936\0windows-936\0CP936\0" }, + { /*268451866*/ KCharacterSetIdentifierGb12345, 0, "GB12345\0" }, + { /*268455110*/ KCharacterSetIdentifierAscii, 3, "US-ASCII\0ANSI_X3.4-1968\0iso-ir-6\0ANSI_X3.4-1986\0ISO_646.irv:1991\0ASCII\0ISO646-US\0us\0IBM367\0cp367\0csASCII\0ISO-IR-6\0ISO_646.IRV:1991\0"}, + { /*268456062*/ KCharacterSetIdentifierIso88592, 5, "ISO-8859-2\0ISO_8859-2:1987\0iso-ir-101\0latin2\0l2\0csISOLatin2\0" }, + { /*268456063*/ KCharacterSetIdentifierIso88594, 7, "ISO-8859-4\0ISO_8859-4:1988\0iso-ir-110\0latin4\0l4\0csISOLatin4\0" }, + { /*268456064*/ KCharacterSetIdentifierIso88595, 8, "ISO-8859-5\0ISO_8859-5:1988\0iso-ir-144\0cyrillic\0csISOLatinCyrillic\0" }, + { /*268456065*/ KCharacterSetIdentifierIso88597, 10, "ISO-8859-7\0ISO_8859-7:1987\0iso-ir-126\0ELOT_928\0ECMA-118\0greek\0greek8\0csISOLatinGreek\0" }, + { /*268456066*/ KCharacterSetIdentifierIso88599, 12, "ISO-8859-9\0ISO_8859-9:1989\0iso-ir-148\0latin5\0l5\0csISOLatin5\0" }, + { /*268456875*/ KCharacterSetIdentifierSms7Bit, 0, "SMS 7-bit\0" }, + { /*268458028*/ KCharacterSetIdentifierUtf7, 103, "UTF-7\0UNICODE-1-1-UTF-7\0CSUNICODE11UTF7\0" }, +// { /*268458029*/ KCharacterSetIdentifierUtf8, 106, "UTF-8\0" }, + { /*268458030*/ KCharacterSetIdentifierImapUtf7, 0, "IMAP UTF-7\0" }, + { /*268458031*/ KCharacterSetIdentifierJavaConformantUtf8, 0, "JAVA UTF-8\0" }, + { /*268458454*/ 268458454, 2250, "Windows-1250\0CP1250\0MS-EE\0" }, + { /*268458455*/ 268458455, 2251, "Windows-1251\0CP1251\0MS-CYRL\0" }, + { /*268458456*/ 268458456, 2253, "Windows-1253\0CP1253\0MS-GREEK\0" }, + { /*268458457*/ 268458457, 2254, "Windows-1254\0CP1254\0MS-TURK\0" }, + { /*268458458*/ 268458458, 2257, "Windows-1257\0CP1257\0WINBALTRIM\0" }, + { /*268460133*/ KCharacterSetIdentifierHz, 2085, "HZ-GB-2312\0HZ\0" }, + { /*268460134*/ KCharacterSetIdentifierJis, 16, "JIS_Encoding\0JIS\0" }, + { /*268460135*/ KCharacterSetIdentifierEucJpPacked, 18, "EUC-JP\0Extended_UNIX_Code_Packed_Format_for_Japanese\0csEUCPkdFmtJapanese\0EUCJP_PACKED\0" }, + { /*268461728*/ KCharacterSetIdentifierIso2022Jp, 39, "ISO-2022-JP\0csISO2022JP\0JIS7\0" }, + { /*268461731*/ KCharacterSetIdentifierIso2022Jp1, 0, "ISO2022JP1\0" }, + { /*268470824*/ KCharacterSetIdentifierIso88593, 6, "ISO-8859-3\0ISO_8859-3:1988\0iso-ir-109\0latin3\0l3\0csISOLatin3\0" }, + { /*268470825*/ KCharacterSetIdentifierIso88596, 9, "ISO-8859-6\0ISO_8859-6:1987\0iso-ir-127\0ECMA-114\0ASMO-708\0arabic\0ISO88596\0csISOLatinArabic\0ARABIC\0" }, + { /*268470826*/ KCharacterSetIdentifierIso88598, 11, "ISO-8859-8\0ISO_8859-8:1988\0iso-ir-138\0hebrew\0csISOLatinHebrew\0" }, + { /*268470827*/ KCharacterSetIdentifierIso885910, 13, "ISO-8859-10\0iso-ir-157\0l6\0ISO_8859-10:1992\0csISOLatin6\0latin6\0" }, + { /*268470828*/ KCharacterSetIdentifierIso885913, 109, "ISO-8859-13\0ISO885913\0ISO-IR-179\0ISO8859-13\0L7\0LATIN7\0CSISOLATIN7\0" }, + { /*268470829*/ KCharacterSetIdentifierIso885914, 110, "ISO-8859-14\0iso-ir-199\0ISO_8859-14:1998\0latin8\0iso-celtic\0l8\0" }, + { /*268470830*/ KCharacterSetIdentifierIso885915, 111, "ISO-8859-15\0latin-9\0ISO-IR-203\0" }, +// { /*270483374*/ KCharacterSetIdentifierUnicodeLittle, 1014, "UTF-16LE\0Little-Endian UNICODE\0" }, +// { /*270483538*/ KCharacterSetIdentifierUnicodeBig, 1013, "UTF-16BE\0Big-Endian UNICODE\0" }, + { /*270501191*/ 270501191, 2255, "Windows-1255\0CP1255\0MS-HEBR\0" }, + { /*270501192*/ 270501192, 2256, "Windows-1256\0CP1256\0MS-ARAB\0" }, + { /*270501193*/ 270501193, 2259, "TIS-620\0ISO-IR-166\0TIS620-0\0TIS620.2529-1\0TIS620.2533-0\0TIS620.2533-1\0" }, + { /*270501194*/ 270501194, 0, "windows-874\0CP874\0IBM874\0" }, + { /*270501325*/ 270501325, 0, "SmsStrict\0" }, + { /*270501521*/ 270501521, 0, "ShiftJisDirectmap\0" }, + { /*270501542*/ 270501542, 0, "EucJpDirectmap\0" }, + /* 270501691 (duplicate) Windows-1252 | windows-1252 |Windows-1252 |Code Page 1252 |CP1252 |MS-ANSI |WINDOWS-1252 |2252 */ + { /*270501729*/ 270501729, 2088, "KOI8-U\0" }, + { /*270501752*/ 270501752, 2084, "KOI8-R\0csKOI8R\0" }, + { /*270529682*/ 270529682, 1000, "ISO-10646-UCS-2\0UCS-2\0CSUNICODE\0" }, + { /*270562232*/ 270562232, 2258, "Windows-1258\0CP1258\0WINDOWS-1258\0" }, + { /*270586888*/ 270586888, 0, "J5\0" }, + { /*271011982*/ 271011982, 0, "ISCII\0" }, + { /*271066541*/ 271066541, 2009, "CP850\0IBM850\0""850\0csPC850Multilingual\0" }, + { /*271082493*/ 271082493, 0, "EXTENDED_SMS_7BIT\0" }, + { /*271082494*/ 271082494, 0, "gsm7_turkish_single\0" }, + { /*271082495*/ 271082495, 0, "turkish_locking_gsm7ext\0" }, + { /*271082496*/ 271082496, 0, "turkish_locking_single\0" }, + { /*536929574*/ 536929574, 38, "EUC-KR\0" }, + { /*536936703*/ 536936703, 0, "CP949\0" }, + { /*536936705*/ 536936705, 37, "ISO-2022-KR\0" }, + { /*536941517*/ 536941517, 36, "KS_C_5601-1987\0" } + }; + + +class QSymbianTextCodec : public QTextCodec +{ +public: + QString convertToUnicode(const char*, int, ConverterState*) const; + QByteArray convertFromUnicode(const QChar*, int, ConverterState*) const; + QList aliases() const; + QByteArray name() const; + int mibEnum() const; + + explicit QSymbianTextCodec(uint charsetId, int staticIndex = -1) : m_charsetId(charsetId), m_staticIndex(staticIndex) { } + + static QSymbianTextCodec *init(); + static QSymbianTextCodec *localeMapper; +private: + static CCnvCharacterSetConverter *converter(); + static uint getLanguageDependentCharacterSet(); + uint m_charsetId; + int m_staticIndex; +}; + +QSymbianTextCodec *QSymbianTextCodec::localeMapper = 0; + +class QSymbianTextCodecWithName : public QSymbianTextCodec +{ +public: + QSymbianTextCodecWithName(uint charsetId, const QByteArray &name) + : QSymbianTextCodec(charsetId) , m_name(name) { } + QByteArray name() const { return m_name; } + QList aliases() const { return QList(); } +private: + QByteArray m_name; +}; + +Q_GLOBAL_STATIC(QThreadStorage,gs_converterStore); + +CCnvCharacterSetConverter *QSymbianTextCodec::converter() +{ + CCnvCharacterSetConverter *&conv = gs_converterStore()->localData(); + if (!conv) + QT_TRAP_THROWING(conv = CCnvCharacterSetConverter::NewL()) + return conv; +} + + +QByteArray QSymbianTextCodec::name() const +{ + if (m_staticIndex >= 0) + return QByteArray(codecsData[m_staticIndex].aliases); + QScopedPointer buf; + QT_TRAP_THROWING(buf.reset(converter()->ConvertCharacterSetIdentifierToStandardNameL(m_charsetId, qt_s60GetRFs()))) + if (buf) + return QByteArray(reinterpret_cast(buf->Ptr()), buf->Length()); + return QByteArray(); +} + +int QSymbianTextCodec::mibEnum() const +{ + if (m_staticIndex >= 0) + return codecsData[m_staticIndex].mib; + int mib; + QT_TRAP_THROWING(mib = converter()->ConvertCharacterSetIdentifierToMibEnumL(m_charsetId, qt_s60GetRFs())) + return mib; +} + +QList QSymbianTextCodec::aliases() const +{ + QList result; + if (m_staticIndex >= 0) { + const char *aliases = codecsData[m_staticIndex].aliases; + aliases += strlen(aliases) + 1; + while (*aliases) { + int len = strlen(aliases); + result += QByteArray(aliases, len); + aliases += len + 1; + } + } + return result; +} + + +QString QSymbianTextCodec::convertToUnicode(const char *str, int len, ConverterState *state) const +{ + uint charsetId = m_charsetId; + + // no support for utf7 with state + if (state && (charsetId == KCharacterSetIdentifierUtf7 || + charsetId == KCharacterSetIdentifierImapUtf7)) { + return QString(); + } + CCnvCharacterSetConverter *converter = QSymbianTextCodec::converter(); + if (!str) { + return QString(); + } + + //Search the character set array containing all of the character sets for which conversion is available + CCnvCharacterSetConverter::TAvailability av; + QT_TRAP_THROWING(av = converter->PrepareToConvertToOrFromL(charsetId, qt_s60GetRFs())) + if (av == CCnvCharacterSetConverter::ENotAvailable) { + return QString(); + } + + char *str2; + int len2; + QByteArray helperBA; + if (state && (state->remainingChars > 0)) { + // we should prepare the input string ourselves + // the real size + len2 = len + state->remainingChars; + helperBA.resize(len2); + str2 = helperBA.data(); + if (state->remainingChars > 3) { // doesn't happen usually + memcpy(str2, state->d, state->remainingChars); + qFree(state->d); + state->d = 0; + } else { + char charTbl[3]; + charTbl[0] = state->state_data[0]; + charTbl[1] = state->state_data[1]; + charTbl[2] = state->state_data[2]; + memcpy(str2, charTbl, state->remainingChars); + } + memcpy(str2+state->remainingChars, str, len); + } + else { + len2 = len; + str2 = const_cast(str); + } + + QString UnicodeText(len2, Qt::Uninitialized); + TPtrC8 remainderOfForeignText; + remainderOfForeignText.Set(reinterpret_cast(str2), len2); + + int numberOfUnconvertibleCharacters = 0; + int indexOfFirstUnconvertibleCharacter; + + // Use null character as replacement, if it is asked + bool convertToNull = (state && (state->flags & QTextCodec::ConvertInvalidToNull)); + if (convertToNull) { + _LIT8(KReplacement, "\x00"); + QT_TRAP_THROWING(converter->SetReplacementForUnconvertibleUnicodeCharactersL(KReplacement)) + } + // use state->invalidChars for keeping symbian state + int sState = CCnvCharacterSetConverter::KStateDefault; + if (state && (state->invalidChars != CCnvCharacterSetConverter::KStateDefault)) { + sState = state->invalidChars; + } + //Convert text encoded in a non-Unicode character set into the Unicode character set (UCS-2). + int remainingChars = -1; + int initial_size=0; + while (1) { + TPtr16 UnicodePtr(reinterpret_cast(UnicodeText.data()+initial_size), UnicodeText.size()); + QT_TRAP_THROWING(remainingChars = converter->ConvertToUnicode(UnicodePtr, + remainderOfForeignText, + sState, + numberOfUnconvertibleCharacters, + indexOfFirstUnconvertibleCharacter)) + + initial_size += UnicodePtr.Length(); + // replace 0xFFFD with 0x0000 and only if state set to convert to it + if (numberOfUnconvertibleCharacters>0 && convertToNull) { + int len2 = UnicodePtr.Length(); + for (int i = indexOfFirstUnconvertibleCharacter; i < len2; i++) { + UnicodePtr[i] = 0x0000; + } + } + // success + if (remainingChars==KErrNone) { + break; + } + // if ConvertToUnicode could not consume the foreign text at all + // UTF-8: EErrorIllFormedInput = KErrCorrupt + // UCS-2: KErrNotFound + if (remainingChars == CCnvCharacterSetConverter::EErrorIllFormedInput || + remainingChars == KErrNotFound) { + remainingChars = remainderOfForeignText.Size(); + break; + } + else { + if (remainingChars < 0) { + return QString(); + } + } + // + UnicodeText.resize(UnicodeText.size() + remainingChars*2); + remainderOfForeignText.Set(reinterpret_cast(str2+len2-remainingChars), remainingChars); + } + // save symbian state + if (state) { + state->invalidChars = sState; + } + + if (remainingChars > 0) { + if (!state) { + // No way to signal, if there is still remaining chars, for ex. UTF-8 still can have + // some characters hanging around. + return QString(); + } + const unsigned char *charPtr = remainderOfForeignText.Right(remainingChars).Ptr(); + if (remainingChars > 3) { // doesn't happen usually + state->d = (void*)qMalloc(remainingChars); + if (!state->d) + return QString(); + // copy characters there + memcpy(state->d, charPtr, remainingChars); + } + else { + // fallthru is correct + switch (remainingChars) { + case 3: + state->state_data[2] = charPtr[2]; + case 2: + state->state_data[1] = charPtr[1]; + case 1: + state->state_data[0] = charPtr[0]; + } + } + state->remainingChars = remainingChars; + } + else { + if (state) { + // If we continued from an earlier iteration + state->remainingChars = 0; + } + } + // check if any ORIGINAL headers should be left + if (initial_size > 0) { + if (!state || (state && !(state->flags & QTextCodec::IgnoreHeader))) { + // always skip headers on following state loops + if (state) { + state->flags |= QTextCodec::IgnoreHeader; + } + const TUint16 *ptr = reinterpret_cast(UnicodeText.data()); + if (ptr[0] == QChar::ByteOrderMark || ptr[0] == QChar::ByteOrderSwapped) { + return UnicodeText.mid(1, initial_size - 1); + } + } + } + if (initial_size >= 0) { + UnicodeText.resize(initial_size); + return UnicodeText; + } + else { + return QString(); + } +} + + +QByteArray QSymbianTextCodec::convertFromUnicode(const QChar *str, int len, ConverterState *state) const +{ + uint charsetId = m_charsetId; + CCnvCharacterSetConverter *converter = QSymbianTextCodec::converter(); + if (!str) + return QByteArray(); + + if (len == 0) + return QByteArray(); + + // no support for utf7 with state + if (state && (charsetId == KCharacterSetIdentifierUtf7 || + charsetId == KCharacterSetIdentifierImapUtf7)) + return QByteArray(); + + //Get reference file session from backend + RFs &fileSession = qt_s60GetRFs(); + + //Search the character set array containing all of the character sets for which conversion is available + CCnvCharacterSetConverter::TAvailability av = CCnvCharacterSetConverter::ENotAvailable; + QT_TRAP_THROWING(av = converter->PrepareToConvertToOrFromL(charsetId, fileSession)) + if (av == CCnvCharacterSetConverter::ENotAvailable) + return QByteArray(); + + // Use null character as replacement, if it is asked + if (state && (state->flags & QTextCodec::ConvertInvalidToNull)) { + _LIT8(KReplacement, "\x00"); + QT_TRAP_THROWING(converter->SetReplacementForUnconvertibleUnicodeCharactersL(KReplacement)) + } + else { + _LIT8(KReplacement, "?"); + QT_TRAP_THROWING(converter->SetReplacementForUnconvertibleUnicodeCharactersL(KReplacement)) + } + QByteArray outputBuffer; + + // add header if no state (one run), or if no ignoreheader (from first state) + int bomofs = 0; + if (!state || (state && !(state->flags & QTextCodec::IgnoreHeader))) { + + QChar bom(QChar::ByteOrderMark); + + if (state) + state->flags |= QTextCodec::IgnoreHeader; // bom handling only on first state + + switch (charsetId) { + case KCharacterSetIdentifierUcs2: + outputBuffer.append(bom.row()); + outputBuffer.append(bom.cell()); + bomofs = 2; + break; + + case KCharacterSetIdentifierUtf8: // we don't add bom for UTF-8 + case KCharacterSetIdentifierJavaConformantUtf8: + /*outputBuffer.append("\xef\xbb\xbf"); + bomofs = 3; + */ + break; + + case KCharacterSetIdentifierUnicodeLittle: + outputBuffer.append(bom.cell()); + outputBuffer.append(bom.row()); + bomofs = 2; + break; + + case KCharacterSetIdentifierUnicodeBig: + outputBuffer.append(bom.row()); + outputBuffer.append(bom.cell()); + bomofs = 2; + break; + + default: + break; + } + } + + // len is 16bit chars, reserve 3 8bit chars for each input char + // jsz - it could be differentiated, to allocate less + outputBuffer.resize(len * 3 + bomofs); + + // loop for too short output buffer + int unconverted; + int numberOfUnconvertibleCharacters = len; + int indexOfFirstUnconvertibleCharacter; + int convertedSize; + int lastUnconverted = 0; + int initial_size=0; + int remainderToConvert = len; + while (1) { + TPtr8 outputPtr(reinterpret_cast(outputBuffer.data() + bomofs + initial_size), outputBuffer.size() - bomofs); + + TPtrC16 UnicodeText(reinterpret_cast(str+len-remainderToConvert), remainderToConvert); + + //Convert text encoded in the Unicode character set (UCS-2) into other character sets + unconverted = -1; + QT_TRAP_THROWING( unconverted = converter->ConvertFromUnicode(outputPtr, + UnicodeText, + numberOfUnconvertibleCharacters, + indexOfFirstUnconvertibleCharacter)) + initial_size += outputPtr.Length(); + if (unconverted < 0) { + return QByteArray(); + } + + + if (unconverted == 0 ) { + convertedSize = initial_size; + break; + } + + // check what means unconverted > 0 + if (indexOfFirstUnconvertibleCharacter<0) { + // 8859-6 and 8859-8 break with certain input (string of \xc0 - \xd9 converted to unicode and back) + if (unconverted == lastUnconverted) { + return QByteArray(); + } + lastUnconverted = unconverted; + } + else { + // were some character not possible to convert + + } + remainderToConvert = unconverted; // len - indexOfFirstUnconvertibleCharacter; + // resize output buffer, use =op for the null check + outputBuffer.resize(outputBuffer.size() + remainderToConvert * 3 + bomofs); + }; + + // shorten output + outputBuffer.resize(convertedSize + bomofs); + + if (state) { + state->invalidChars = numberOfUnconvertibleCharacters; + + // check if any Symbian CONVERTED headers should be removed + if (state->flags & QTextCodec::IgnoreHeader && state->state_data[0] == 0) { + + state->state_data[0] = 0xff; // bom handling only on first state + + if (charsetId == KCharacterSetIdentifierUcs2 && outputBuffer.size() > 1) { + + QChar bom(QChar::ByteOrderMark); + if (outputBuffer.at(0) == bom.row() && outputBuffer.at(1) == bom.cell()) { + outputBuffer.remove(0, 2); + } else if (outputBuffer.at(0) == bom.cell() && outputBuffer.at(1) == bom.row()) { + outputBuffer.remove(0, 2); + } + + } else if ((charsetId == KCharacterSetIdentifierUtf8 || + charsetId == KCharacterSetIdentifierJavaConformantUtf8) && + outputBuffer.size() > 2) { + if (outputBuffer.at(0) == 0xef && outputBuffer.at(1) == 0xbb && outputBuffer.at(2) == 0xbf) { + outputBuffer.remove(0, 3); + } + + } else if (charsetId == KCharacterSetIdentifierUnicodeLittle && + outputBuffer.size() > 1) { + + QChar bom(QChar::ByteOrderMark); + if (outputBuffer.at(0) == bom.row() && outputBuffer.at(1) == bom.cell()) { + outputBuffer.remove(0, 2); + } + + } else if (charsetId == KCharacterSetIdentifierUnicodeBig && + outputBuffer.size() > 1) { + + QChar bom(QChar::ByteOrderSwapped); + if (outputBuffer.at(0) == bom.row() && outputBuffer.at(1) == bom.cell()) { + outputBuffer.remove(0, 2); + } + } + + } + } + + return outputBuffer; +} + + +uint QSymbianTextCodec::getLanguageDependentCharacterSet() +{ + TLanguage lang = User::Language(); + + uint langIndex = 0; + + switch (lang) { + case 14: //ELangTurkish + langIndex = KCharacterSetIdentifierIso88599; break; + case 16: //ELangRussian + langIndex = KCharacterSetIdentifierIso88595; break; + case 17: //ELangHungarian + langIndex = KCharacterSetIdentifierIso88592; break; + case 25: //ELangCzec + case 26: //ELangSlovak + case 27: //ELangPolish + case 28: //ELangSlovenian + langIndex = KCharacterSetIdentifierIso88592; break; + case 29: //ELangTaiwanChinese + case 30: //ELangHongKongChinese + langIndex = KCharacterSetIdentifierBig5; break; + case 31: //ELangPrcChinese + langIndex = KCharacterSetIdentifierGbk; break; + case 32: //ELangJapanese + langIndex = KCharacterSetIdentifierShiftJis; break; + case 33: //ELangThai + langIndex = 270501193 /*KCharacterSetIdentifierTis620*/; break; + case 37: //ELangArabic + langIndex = KCharacterSetIdentifierIso88596; break; + case 40: //ELangBelarussian + case 42: //ELangBulgarian + langIndex = KCharacterSetIdentifierIso88595; break; + case 45: //ELangCroatian + langIndex = KCharacterSetIdentifierIso88592; break; + case 49: //ELangEstonian + langIndex = KCharacterSetIdentifierIso88594; break; + case 54: //ELangGreek + case 55: //ELangCyprusGreek + langIndex = KCharacterSetIdentifierIso88597; break; + case 57: //ELangHebrew + langIndex = KCharacterSetIdentifierIso88598; break; + case 58: //ELangHindi + langIndex = 271011982/*KCharacterSetIdentifierIscii*/; break; + case 67: //ELangLatvian + case 68: //ELangLithuanian + langIndex = KCharacterSetIdentifierIso88594; break; + case 69: //ELangMacedonian + langIndex = KCharacterSetIdentifierIso88595; break; + case 78: //ELangRomanian + langIndex = KCharacterSetIdentifierIso88592; break; + case 79: //ELangSerbian + langIndex = KCharacterSetIdentifierIso88592; break; + case 91: //ELangCyprusTurkish + langIndex = KCharacterSetIdentifierIso88599; break; + case 93: //ELangUkrainian + langIndex = KCharacterSetIdentifierIso88595; break; + case 94: //ELangUrdu + langIndex = KCharacterSetIdentifierIso88596; break; + case 157: //ELangEnglish_Taiwan + case 158: //ELangEnglish_HongKong + langIndex = KCharacterSetIdentifierBig5; break; + case 159: //ELangEnglish_Prc + langIndex = KCharacterSetIdentifierGbk; break; + case 160: + langIndex = KCharacterSetIdentifierShiftJis; break; + case 161: //ELangEnglish_Thailand + langIndex = 270501193/*KCharacterSetIdentifierTis620*/; break; + } + + if (langIndex > 0) { + return langIndex; + } + return KCharacterSetIdentifierCodePage1252; +} + +/* Create the codecs that have aliases and return the locale mapper*/ +QSymbianTextCodec *QSymbianTextCodec::init() +{ + const uint localeMapperId = getLanguageDependentCharacterSet(); + QScopedPointer > array; + QT_TRAP_THROWING(array.reset(CCnvCharacterSetConverter::CreateArrayOfCharacterSetsAvailableL(qt_s60GetRFs()))) + CCnvCharacterSetConverter *converter = QSymbianTextCodec::converter(); + int count = array->Count(); + for (int i = 0; i < count; i++) { + int charsetId = array->At(i).Identifier(); + + // skip builtin Qt codecs + if (charsetId == KCharacterSetIdentifierUtf8 || charsetId == KCharacterSetIdentifierUnicodeLittle + || charsetId == KCharacterSetIdentifierUnicodeLittle || charsetId == KCharacterSetIdentifierUnicodeBig + || charsetId == KCharacterSetIdentifierIso88591 + || charsetId == 270501691 /* skip Windows-1252 duplicate*/) { + continue; + } + + int begin = 0; + int n = sizeof(codecsData) / sizeof(codecsData[0]); + int half; + + while (n > 0) { + half = n >> 1; + int middle = begin + half; + if (codecsData[middle].charsetId < charsetId) { + begin = middle + 1; + n -= half + 1; + } else { + n = half; + } + } + if (codecsData[begin].charsetId == charsetId) { + QSymbianTextCodec *c = new QSymbianTextCodec(charsetId, begin); + if (charsetId == localeMapperId) + localeMapper = c; + } else { + QScopedPointer buf; + QT_TRAP_THROWING(buf.reset(converter->ConvertCharacterSetIdentifierToStandardNameL(charsetId, qt_s60GetRFs()))) + QByteArray name; + if (buf && buf->Length()) { + name = QByteArray(reinterpret_cast(buf->Ptr()), buf->Length()); + } else { + TPtrC charSetName = array->At(i).NameIsFileName() ? TParsePtrC(array->At(i).Name()).Name() : array->At(i).Name(); + int len = charSetName.Length(); + QString str; + str.setUnicode(reinterpret_cast(charSetName.Ptr()), len); + name = str.toLatin1(); + } + if (!name.isEmpty()) + new QSymbianTextCodecWithName(charsetId, name); + } + + } + return localeMapper; +} diff --git a/tests/auto/qtextcodec/test/test.pro b/tests/auto/qtextcodec/test/test.pro index afd7f5e..efa2e85 100644 --- a/tests/auto/qtextcodec/test/test.pro +++ b/tests/auto/qtextcodec/test/test.pro @@ -27,6 +27,7 @@ wince*: { DEFINES += SRCDIR=\\\"\\\" }else:symbian { # Symbian can't define SRCDIR meaningfully here + LIBS += -lcharconv -lconvnames -lgb2312_shared -ljisx0201 -ljisx0208 -lefsrv } else { DEFINES += SRCDIR=\\\"$$PWD/../\\\" } diff --git a/tests/auto/qtextcodec/tst_qtextcodec.cpp b/tests/auto/qtextcodec/tst_qtextcodec.cpp index aa97e87..07fd480 100644 --- a/tests/auto/qtextcodec/tst_qtextcodec.cpp +++ b/tests/auto/qtextcodec/tst_qtextcodec.cpp @@ -99,6 +99,13 @@ private slots: #ifdef Q_OS_UNIX void toLocal8Bit(); #endif + + void invalidNames(); + void checkAliases_data(); + void checkAliases(); + + void moreToFromUnicode_data(); + void moreToFromUnicode(); }; void tst_QTextCodec::toUnicode_data() @@ -119,6 +126,7 @@ void tst_QTextCodec::toUnicode() if ( file.open( QIODevice::ReadOnly ) ) { QByteArray ba = file.readAll(); + QVERIFY(!ba.isEmpty()); QTextCodec *c = QTextCodec::codecForName( codecName.toLatin1() ); QVERIFY(c != 0); QString uniString = c->toUnicode( ba ); @@ -126,6 +134,7 @@ void tst_QTextCodec::toUnicode() QCOMPARE(uniString, QString::fromUtf8(ba)); QCOMPARE(ba, uniString.toUtf8()); } + QVERIFY(!uniString.isEmpty()); QCOMPARE( ba, c->fromUnicode( uniString ) ); if (codecName == QLatin1String("eucKR")) { @@ -185,7 +194,9 @@ void tst_QTextCodec::fromUnicode_data() QTest::newRow("data16") << "ISO-8859-16" << true; QTest::newRow("data18") << "IBM850" << true; +#ifndef Q_OS_SYMBIAN //symbian implementation will return empty string if all char are invalid QTest::newRow("data19") << "IBM874" << true; +#endif QTest::newRow("data20") << "IBM866" << true; QTest::newRow("data21") << "windows-1250" << true; @@ -193,7 +204,9 @@ void tst_QTextCodec::fromUnicode_data() QTest::newRow("data23") << "windows-1252" << true; QTest::newRow("data24") << "windows-1253" << true; QTest::newRow("data25") << "windows-1254" << true; +#ifndef Q_OS_SYMBIAN //symbian implementation will return empty string if all char are invalid QTest::newRow("data26") << "windows-1255" << true; +#endif QTest::newRow("data27") << "windows-1256" << true; QTest::newRow("data28") << "windows-1257" << true; QTest::newRow("data28") << "windows-1258" << true; @@ -205,6 +218,39 @@ void tst_QTextCodec::fromUnicode_data() QTest::newRow("data32") << "SJIS" << false; QTest::newRow("data33") << "EUC-KR" << false; + + // all codecs from documentation + QTest::newRow("doc2") << "Big5" << false; + QTest::newRow("doc3") << "Big5-HKSCS" << false; + QTest::newRow("doc4") << "CP949" << false; + QTest::newRow("doc5") << "EUC-JP" << false; + QTest::newRow("doc6") << "EUC-KR" << false; + //QTest::newRow("doc7") << "GB18030-0" << false; // only GB18030 works + QTest::newRow("doc7-bis") << "GB18030" << false; + QTest::newRow("doc8") << "IBM 850" << false; + QTest::newRow("doc9") << "IBM 866" << false; + QTest::newRow("doc10") << "IBM 874" << false; + QTest::newRow("doc11") << "ISO 2022-JP" << false; + //ISO 8859-1 to 10 and ISO 8859-13 to 16 tested previously + // Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml tested in Iscii test + //QTest::newRow("doc12") << "JIS X 0201" << false; //actually not there + //QTest::newRow("doc13") << "JIS X 0208" << false; // actually not there + QTest::newRow("doc14") << "KOI8-R" << false; + QTest::newRow("doc15") << "KOI8-U" << false; + //QTest::newRow("doc16") << "MuleLao-1" << false; //only on x11 + QTest::newRow("doc17") << "ROMAN8" << false; + QTest::newRow("doc18") << "Shift-JIS" << false; + QTest::newRow("doc19") << "TIS-620" << false; + QTest::newRow("doc20") << "TSCII" << false; + QTest::newRow("doc21") << "UTF-8" << false; + QTest::newRow("doc22") << "UTF-16" << false; + QTest::newRow("doc23") << "UTF-16BE" << false; + QTest::newRow("doc24") << "UTF-16LE" << false; + QTest::newRow("doc25") << "UTF-32" << false; + QTest::newRow("doc26") << "UTF-32BE" << false; + QTest::newRow("doc27") << "UTF-32LE" << false; + //Windows-1250 to 1258 tested previously + QTest::newRow("doc3") << "WINSAMI2" << false; } void tst_QTextCodec::fromUnicode() @@ -222,6 +268,7 @@ void tst_QTextCodec::fromUnicode() chars[i] = i + 128; QString s = codec->toUnicode(chars, 128); QByteArray c = codec->fromUnicode(s); + QCOMPARE(c.size(), 128); int numberOfQuestionMarks = 0; for (int i = 0; i < 128; ++i) { @@ -360,7 +407,7 @@ void tst_QTextCodec::asciiToIscii() const /* For each codec. */ const QTextCodec *const textCodec = QTextCodec::codecForName(isciiCodecs[i]); - Q_ASSERT(textCodec); + QVERIFY(textCodec); for(int i2 = 0; i2 < len; ++i2) { /* For each character in ascii. */ @@ -478,7 +525,9 @@ void tst_QTextCodec::aliasForUTF16() const void tst_QTextCodec::mibForTSCII() const { - QCOMPARE(QTextCodec::codecForName("TSCII")->mibEnum(), 2107); + QTextCodec *codec = QTextCodec::codecForName("TSCII"); + QVERIFY(codec); + QCOMPARE(codec->mibEnum(), 2107); } static QString fromInvalidUtf8Sequence(const QByteArray &ba) @@ -1938,17 +1987,210 @@ static int loadAndConvertMIB(int mib) void tst_QTextCodec::threadSafety() { + QList codecList = QTextCodec::availableCodecs(); + QList mibList = QTextCodec::availableMibs(); +#ifndef QT_NO_CONCURRENT QThreadPool::globalInstance()->setMaxThreadCount(12); - QList codecList = QTextCodec::availableCodecs(); QFuture res = QtConcurrent::mapped(codecList, loadAndConvert); - QList mibList = QTextCodec::availableMibs(); + QFuture res2 = QtConcurrent::mapped(mibList, loadAndConvertMIB); QCOMPARE(res.results(), codecList); QCOMPARE(res2.results(), mibList); +#endif } +void tst_QTextCodec::invalidNames() +{ + QVERIFY(!QTextCodec::codecForName("")); + QVERIFY(!QTextCodec::codecForName(QByteArray())); + QVERIFY(!QTextCodec::codecForName("-")); + QVERIFY(!QTextCodec::codecForName("\1a\2b\3a\4d\5c\6s\7a\xffr\xec_\x9c_")); + QVERIFY(!QTextCodec::codecForName("\n")); + QVERIFY(!QTextCodec::codecForName("don't exist")); + QByteArray huge = "azertyuiop^$qsdfghjklm("codecName"); + QList codecList = QTextCodec::availableCodecs(); + foreach (const QByteArray &a, codecList) { + QTest::newRow( a.constData() ) << a; + } +} + +void tst_QTextCodec::checkAliases() +{ + QFETCH( QByteArray, codecName ); + QTextCodec *c = QTextCodec::codecForName(codecName); + QVERIFY(c); + QCOMPARE(QTextCodec::codecForName(codecName), c); + QCOMPARE(QTextCodec::codecForName(c->name()), c); + + foreach(const QByteArray &a, c->aliases()) { + QCOMPARE(QTextCodec::codecForName(a), c); + } +} + + +void tst_QTextCodec::moreToFromUnicode_data() { + QTest::addColumn("codecName"); + QTest::addColumn("testData"); + + QTest::newRow("russian") << QByteArray("ISO-8859-5") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\x00"); + + QTest::newRow("arabic") << QByteArray("ISO-8859-6") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA4\xAC\xAD\xBB\xBF\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2"); + + QTest::newRow("greek") << QByteArray("ISO-8859-7") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA6\xA7\xA8\xA9\xAB\xAC\xAD\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE"); + + QTest::newRow("turkish") << QByteArray("ISO-8859-9") + << QByteArray("\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + +#ifdef Q_OS_SYMBIAN + QTest::newRow("thai") << QByteArray("TIS-620") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB"); +#endif + + QTest::newRow("latin1") << QByteArray("ISO-8859-1") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QByteArray sms7bit_ba; + for (int i=1; i <= 0x7f; ++i) { + if (i!='\x1b') { + sms7bit_ba.append(i); + } + } +#ifdef Q_OS_SYMBIAN + QTest::newRow("sms7bit") << QByteArray("SMS 7-bit") << sms7bit_ba; +#endif + + QTest::newRow("latin2") << QByteArray("ISO-8859-2") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("latin3") << QByteArray("ISO-8859-3") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBF\xC0\xC1\xC2\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("latin4") << QByteArray("ISO-8859-4") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("russian 2") << QByteArray("ISO-8859-5") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("arabic 2") << QByteArray("ISO-8859-6") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA4\xAC\xAD\xBB\xBF\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2"); + + QTest::newRow("greek 2") << QByteArray("ISO-8859-7") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA6\xA7\xA8\xA9\xAB\xAC\xAD\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE"); + +#ifdef Q_OS_SYMBIAN + QTest::newRow("hebriew") << QByteArray("ISO-8859-8") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFD\xFE"); +#endif + + QTest::newRow("latin5") << QByteArray("ISO-8859-9") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("latin6") << QByteArray("ISO-8859-10") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + +#if 0 + QByteArray iso8859_11_ba; + for (int x=0x20; x<=0x7f; ++x) { + iso8859_11_ba.append(x); + } + for (int x=0xa0; x<0xff; ++x) { + if ((x>=0xdb && x<0xdf) || x>0xfb){ + continue; + } + iso8859_11_ba.append(x); + } + QTest::newRow("latin-thai") << QByteArray("ISO-8859-11") << iso8859_11_ba; +#endif + + QTest::newRow("latin7") << QByteArray("ISO-8859-13") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("celtic") << QByteArray("ISO-8859-14") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("latin9") << QByteArray("ISO-8859-15") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("latin10") << QByteArray("ISO-8859-16") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("cp850") << QByteArray("CP850") + << QByteArray("\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"); + + QTest::newRow("cp874") << QByteArray("CP874") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x85\x91\x92\x93\x94\x95\x96\x97\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB"); + + QTest::newRow("cp1250") << QByteArray("CP1250") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x84\x85\x86\x87\x89\x8A\x8B\x8C\x8D\x8E\x8F\x91\x92\x93\x94\x95\x96\x97\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("cp1251") << QByteArray("CP1251") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("cp1252") << QByteArray("CP1252") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8E\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("cp1253") << QByteArray("CP1253") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x83\x84\x85\x86\x87\x89\x8B\x91\x92\x93\x94\x95\x96\x97\x99\x9B\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE"); + + QTest::newRow("cp1254") << QByteArray("CP1254") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("cp1255") << QByteArray("CP1255") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x83\x84\x85\x86\x87\x88\x89,x8B\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9B\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFD\xFE"); + + QTest::newRow("cp1256") << QByteArray("CP1256") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("cp1257") << QByteArray("CP1257") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x84\x85\x86\x87\x89\x8B\x8D\x8E\x8F\x91\x92\x93\x94\x95\x96\x97\x99\x9B\x9D\x9E\xA0\xA2\xA3\xA4\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QTest::newRow("cp1258") << QByteArray("CP1258") + << QByteArray("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x5B\x5C\x5D\x5E\x5F\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x7B\x7C\x7D\x7E\x7F\x80\x82\x83\x84\x85\x86\x87\x88\x89\x8B\x8C\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9B\x9C\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"); + + QByteArray koi8_r_ba; + for (int x=0x20; x<=0xff; ++x) { + if (x!=0x9A && x!=0xbf) { + koi8_r_ba.append(x); + } + } + QTest::newRow("KOI8-R") << QByteArray("KOI8-R") << koi8_r_ba; + + QByteArray koi8_u_ba; + for (int x=0x20; x<=0xff; ++x) { + koi8_u_ba.append(x); + } + QTest::newRow("KOI8-U") << QByteArray("KOI8-U") << koi8_u_ba; +} + +void tst_QTextCodec::moreToFromUnicode() +{ + QFETCH( QByteArray, codecName ); + QFETCH( QByteArray, testData ); + + QTextCodec *c = QTextCodec::codecForName( codecName.data() ); + QVERIFY(c); + + QString uStr = c->toUnicode(testData); + QByteArray cStr = c->fromUnicode(uStr); + QCOMPARE(testData, cStr); +} + + QTEST_MAIN(tst_QTextCodec) #include "tst_qtextcodec.moc" -- cgit v0.12 From 7837de27309c958dc5a5985afc55492ec3054ee0 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Tue, 9 Mar 2010 18:01:09 +0100 Subject: Don't write byte-order-mark after seek() Ideally, we should write a BOM after seek(0) if setGenerateByteOrderMark has been called, but we don't store that information. This commit is an improvement for the default case when generateByteOrderMark is false, and also when seeking to any other position than 0. Task-number: QTBUG-6295 Reviewed-by: Olivier --- src/corelib/io/qtextstream.cpp | 3 +- tests/auto/qtextstream/tst_qtextstream.cpp | 58 ++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/src/corelib/io/qtextstream.cpp b/src/corelib/io/qtextstream.cpp index 9e79894..b1c403f 100644 --- a/src/corelib/io/qtextstream.cpp +++ b/src/corelib/io/qtextstream.cpp @@ -70,7 +70,7 @@ static const int QTEXTSTREAM_BUFFERSIZE = 16384; have reached the end of the data stream, with stdin. The reason for this is that as long as stdin doesn't give any input to the QTextStream, \c atEnd() will return true even if the stdin is open and waiting for more characters. - + Besides using QTextStream's constructors, you can also set the device or string QTextStream operates on by calling setDevice() or setString(). You can seek to a position by calling seek(), and @@ -1196,6 +1196,7 @@ bool QTextStream::seek(qint64 pos) resetCodecConverterStateHelper(&d->writeConverterState); delete d->readConverterSavedState; d->readConverterSavedState = 0; + d->writeConverterState.flags |= QTextCodec::IgnoreHeader; #endif return true; } diff --git a/tests/auto/qtextstream/tst_qtextstream.cpp b/tests/auto/qtextstream/tst_qtextstream.cpp index 9146be2..4c78ef0 100644 --- a/tests/auto/qtextstream/tst_qtextstream.cpp +++ b/tests/auto/qtextstream/tst_qtextstream.cpp @@ -221,6 +221,7 @@ private slots: void nanInf(); void utf8IncompleteAtBufferBoundary_data(); void utf8IncompleteAtBufferBoundary(); + void writeSeekWriteNoBOM(); // status void status_real_read_data(); @@ -1847,6 +1848,63 @@ void tst_QTextStream::utf8IncompleteAtBufferBoundary() } // ------------------------------------------------------------------------------ + +// Make sure we don't write a BOM after seek()ing + +void tst_QTextStream::writeSeekWriteNoBOM() +{ + + //First with the default codec (normally either latin-1 or UTF-8) + + QBuffer out; + out.open(QIODevice::WriteOnly); + QTextStream stream(&out); + + int number = 0; + QString sizeStr = QLatin1String("Size=") + + QString::number(number).rightJustified(10, QLatin1Char('0')); + stream << sizeStr << endl; + stream << "Version=" << QString::number(14) << endl; + stream << "blah blah blah" << endl; + stream.flush(); + + QCOMPARE(out.buffer().constData(), "Size=0000000000\nVersion=14\nblah blah blah\n"); + + // Now overwrite the size header item + number = 42; + stream.seek(0); + sizeStr = QLatin1String("Size=") + + QString::number(number).rightJustified(10, QLatin1Char('0')); + stream << sizeStr << endl; + stream.flush(); + + // Check buffer is still OK + QCOMPARE(out.buffer().constData(), "Size=0000000042\nVersion=14\nblah blah blah\n"); + + + //Then UTF-16 + + QBuffer out16; + out16.open(QIODevice::WriteOnly); + QTextStream stream16(&out16); + stream16.setCodec("UTF-16"); + + stream16 << "one" << "two" << QLatin1String("three"); + stream16.flush(); + + // save that output + QByteArray first = out16.buffer(); + + stream16.seek(0); + stream16 << "one"; + stream16.flush(); + + QCOMPARE(out16.buffer(), first); +} + + + +// ------------------------------------------------------------------------------ void tst_QTextStream::generateOperatorCharData(bool for_QString) { QTest::addColumn("input"); -- cgit v0.12 From ed3a55e5453e6c58ada021f70f7fa648b4db9ba4 Mon Sep 17 00:00:00 2001 From: Kurt Korbatits Date: Wed, 10 Mar 2010 09:16:37 +1000 Subject: Added unit test for qsoundeffect class. Reviewed-by:Dmytro Poplavskiy --- tests/auto/multimedia.pro | 1 + tests/auto/qsoundeffect/qsoundeffect.pro | 20 ++++ tests/auto/qsoundeffect/test.wav | Bin 0 -> 38316 bytes tests/auto/qsoundeffect/tst_qsoundeffect.cpp | 144 +++++++++++++++++++++++++++ 4 files changed, 165 insertions(+) create mode 100644 tests/auto/qsoundeffect/qsoundeffect.pro create mode 100644 tests/auto/qsoundeffect/test.wav create mode 100644 tests/auto/qsoundeffect/tst_qsoundeffect.cpp diff --git a/tests/auto/multimedia.pro b/tests/auto/multimedia.pro index 9cfae84..f55d6e4 100644 --- a/tests/auto/multimedia.pro +++ b/tests/auto/multimedia.pro @@ -6,6 +6,7 @@ SUBDIRS=\ qaudioformat \ qaudioinput \ qaudiooutput \ + qsoundeffect \ qdeclarativeaudio \ qdeclarativevideo \ qgraphicsvideoitem \ diff --git a/tests/auto/qsoundeffect/qsoundeffect.pro b/tests/auto/qsoundeffect/qsoundeffect.pro new file mode 100644 index 0000000..eaa35b2 --- /dev/null +++ b/tests/auto/qsoundeffect/qsoundeffect.pro @@ -0,0 +1,20 @@ +load(qttest_p4) + +SOURCES += tst_qsoundeffect.cpp + +QT = core multimedia + +wince* { + deploy.sources += 4.wav + DEPLOYMENT = deploy + DEFINES += SRCDIR=\\\"\\\" + QT += gui +} else { + DEFINES += SRCDIR=\\\"$$PWD/\\\" +} + +unix:!mac { + !contains(QT_CONFIG, pulseaudio) { + DEFINES += QT_MULTIMEDIA_QMEDIAPLAYER + } +} diff --git a/tests/auto/qsoundeffect/test.wav b/tests/auto/qsoundeffect/test.wav new file mode 100644 index 0000000..e4088a9 Binary files /dev/null and b/tests/auto/qsoundeffect/test.wav differ diff --git a/tests/auto/qsoundeffect/tst_qsoundeffect.cpp b/tests/auto/qsoundeffect/tst_qsoundeffect.cpp new file mode 100644 index 0000000..b918816 --- /dev/null +++ b/tests/auto/qsoundeffect/tst_qsoundeffect.cpp @@ -0,0 +1,144 @@ +/**************************************************************************** +** +** 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 +#include +#include +#include +#include +#include + + +class tst_QSoundEffect : public QObject +{ + Q_OBJECT +public: + tst_QSoundEffect(QObject* parent=0) : QObject(parent) {} + +private slots: + void initTestCase(); + void testSource(); + void testLooping(); + void testVolume(); + void testMuting(); + +private: + QSoundEffect* sound; +}; + +void tst_QSoundEffect::initTestCase() +{ +#ifndef QT_MULTIMEDIA_QMEDIAPLAYER + sound = new QSoundEffect; + + QVERIFY(sound->source().isEmpty()); + QVERIFY(sound->loopCount() == 1); + QVERIFY(sound->volume() == 100); + QVERIFY(sound->isMuted() == false); +#endif +} + +void tst_QSoundEffect::testSource() +{ +#ifndef QT_MULTIMEDIA_QMEDIAPLAYER + QSignalSpy readSignal(sound, SIGNAL(sourceChanged())); + + QUrl url = QUrl::fromLocalFile(QString("%1%2").arg(SRCDIR).arg("test.wav")); + sound->setSource(url); + + QCOMPARE(sound->source(),url); + QCOMPARE(readSignal.count(),1); + + QTestEventLoop::instance().enterLoop(1); + sound->play(); + + QTest::qWait(3000); +#endif +} + +void tst_QSoundEffect::testLooping() +{ +#ifndef QT_MULTIMEDIA_QMEDIAPLAYER + QSignalSpy readSignal(sound, SIGNAL(loopCountChanged())); + + sound->setLoopCount(5); + QCOMPARE(sound->loopCount(),5); + + sound->play(); + + // test.wav is about 200ms, wait until it has finished playing 5 times + QTest::qWait(3000); +#endif +} + +void tst_QSoundEffect::testVolume() +{ +#ifndef QT_MULTIMEDIA_QMEDIAPLAYER + QSignalSpy readSignal(sound, SIGNAL(volumeChanged())); + + sound->setVolume(50); + QCOMPARE(sound->volume(),50); + + QTest::qWait(20); + QCOMPARE(readSignal.count(),1); +#endif +} + +void tst_QSoundEffect::testMuting() +{ +#ifndef QT_MULTIMEDIA_QMEDIAPLAYER + QSignalSpy readSignal(sound, SIGNAL(mutedChanged())); + + sound->setMuted(true); + QCOMPARE(sound->isMuted(),true); + + QTest::qWait(20); + QCOMPARE(readSignal.count(),1); + + delete sound; +#endif +} + +QTEST_MAIN(tst_QSoundEffect) + +#include "tst_qsoundeffect.moc" -- cgit v0.12 From cbda8ea64d8492d7c8f125cc1b43396b91ecdd8e Mon Sep 17 00:00:00 2001 From: Aaron McCarthy Date: Wed, 10 Mar 2010 10:16:51 +1000 Subject: Don't wait forever when scanning for wifi networks on win32 fails. --- .../bearer/nativewifi/qnativewifiengine.cpp | 23 +++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp index 952a6a3..b6522ad 100644 --- a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp +++ b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp @@ -111,8 +111,6 @@ void QNativeWifiEngine::scanComplete() { QMutexLocker locker(&mutex); - QStringList previous = accessPointConfigurations.keys(); - // enumerate interfaces WLAN_INTERFACE_INFO_LIST *interfaceList; DWORD result = local_WlanEnumInterfaces(handle, 0, &interfaceList); @@ -120,9 +118,15 @@ void QNativeWifiEngine::scanComplete() #ifdef BEARER_MANAGEMENT_DEBUG qDebug("%s: WlanEnumInterfaces failed with error %ld\n", __FUNCTION__, result); #endif + + locker.unlock(); + emit updateCompleted(); + return; } + QStringList previous = accessPointConfigurations.keys(); + for (unsigned int i = 0; i < interfaceList->dwNumberOfItems; ++i) { const WLAN_INTERFACE_INFO &interface = interfaceList->InterfaceInfo[i]; @@ -458,18 +462,31 @@ void QNativeWifiEngine::requestUpdate() #ifdef BEARER_MANAGEMENT_DEBUG qDebug("%s: WlanEnumInterfaces failed with error %ld\n", __FUNCTION__, result); #endif + + locker.unlock(); + emit updateCompleted(); + return; } + bool requested = false; for (unsigned int i = 0; i < interfaceList->dwNumberOfItems; ++i) { result = local_WlanScan(handle, &interfaceList->InterfaceInfo[i].InterfaceGuid, 0, 0, 0); + if (result != ERROR_SUCCESS) { #ifdef BEARER_MANAGEMENT_DEBUG - if (result != ERROR_SUCCESS) qDebug("%s: WlanScan failed with error %ld\n", __FUNCTION__, result); #endif + } else { + requested = true; + } } local_WlanFreeMemory(interfaceList); + + if (!requested) { + locker.unlock(); + emit updateCompleted(); + } } QNetworkSession::State QNativeWifiEngine::sessionStateForId(const QString &id) -- cgit v0.12 From 3ae7c0ca536c82659f401c3bed0370f765de8aee Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Wed, 10 Mar 2010 10:31:50 +0100 Subject: Don't show resize cursor for fixed-size windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-8144 Reviewed-by: Jørgen Lind --- src/gui/embedded/qwsmanager_qws.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gui/embedded/qwsmanager_qws.cpp b/src/gui/embedded/qwsmanager_qws.cpp index d6ef148..79076c5 100644 --- a/src/gui/embedded/qwsmanager_qws.cpp +++ b/src/gui/embedded/qwsmanager_qws.cpp @@ -267,8 +267,10 @@ void QWSManager::mouseMoveEvent(QMouseEvent *e) #ifndef QT_NO_CURSOR - QWSDisplay *qwsd = QApplication::desktop()->qwsDisplay(); - qwsd->selectCursor(d->managed, regionToShape(d->cachedRegionAt())); + if (d->managed->minimumSize() != d->managed->maximumSize()) { + QWSDisplay *qwsd = QApplication::desktop()->qwsDisplay(); + qwsd->selectCursor(d->managed, regionToShape(d->cachedRegionAt())); + } #endif //QT_NO_CURSOR if (d->activeRegion) -- cgit v0.12 From 79a83854bcae35c22e02212a775fcbf825c1439d Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Mon, 8 Mar 2010 15:10:25 +0100 Subject: Make sure pixmap hooks get installed so EGL surfaces are cleaned up Reviewed-By: TrustMe --- src/opengl/qpixmapdata_x11gl_egl.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/opengl/qpixmapdata_x11gl_egl.cpp b/src/opengl/qpixmapdata_x11gl_egl.cpp index 34915f5..b6c33f2 100644 --- a/src/opengl/qpixmapdata_x11gl_egl.cpp +++ b/src/opengl/qpixmapdata_x11gl_egl.cpp @@ -138,6 +138,10 @@ bool QX11GLPixmapData::hasX11GLPixmaps() break; } } + + // The pixmap surface destruction hooks are installed by QGLTextureCache, so we + // must make sure this is instanciated: + QGLTextureCache::instance(); } while (0); if (!haveX11Pixmaps) { -- cgit v0.12 From 4737daef1c8d7a181117d6482f5b57cfc433e050 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Mon, 8 Mar 2010 15:26:33 +0100 Subject: Handle EGLSurfaces better, including more error detection Note: This changes QX11PixmapData::gl_surface to a void* to enable build on 64-bit systems where EGLSurface is a pointer. Reviewed-By: TrustMe --- src/gui/egl/qegl.cpp | 7 ++++++- src/gui/egl/qegl_x11.cpp | 2 +- src/gui/image/qpixmap_x11_p.h | 2 +- src/opengl/qgl_x11.cpp | 2 +- src/opengl/qgl_x11egl.cpp | 8 ++++---- src/opengl/qpixmapdata_x11gl_egl.cpp | 10 ++++++++-- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp index 485bfbf..6e0331f 100644 --- a/src/gui/egl/qegl.cpp +++ b/src/gui/egl/qegl.cpp @@ -392,6 +392,11 @@ bool QEglContext::makeCurrent(EGLSurface surface) return false; } + if (surface == EGL_NO_SURFACE) { + qWarning() << "QEglContext::makeCurrent(): Cannot make invalid surface current"; + return false; + } + // If lazyDoneCurrent() was called on the surface, then we may be able // to assume that it is still current within the thread. if (surface == currentSurface && currentContext(apiType) == this) { @@ -417,7 +422,7 @@ bool QEglContext::makeCurrent(EGLSurface surface) bool ok = eglMakeCurrent(QEgl::display(), surface, surface, ctx); if (!ok) - qWarning() << "QEglContext::makeCurrent():" << QEgl::errorString(); + qWarning() << "QEglContext::makeCurrent(" << surface << "):" << QEgl::errorString(); return ok; } diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index 53c4711..91423c8 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -408,7 +408,7 @@ EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig config, const QEg EGLSurface surf = eglCreatePixmapSurface(QEgl::display(), config, (EGLNativePixmapType) x11PixmapData->handle(), surfaceAttribs.properties()); - x11PixmapData->gl_surface = (Qt::HANDLE)surf; + x11PixmapData->gl_surface = (void*)surf; QImagePixmapCleanupHooks::enableCleanupHooks(x11PixmapData); return surf; } diff --git a/src/gui/image/qpixmap_x11_p.h b/src/gui/image/qpixmap_x11_p.h index 521a612..7575838 100644 --- a/src/gui/image/qpixmap_x11_p.h +++ b/src/gui/image/qpixmap_x11_p.h @@ -94,7 +94,7 @@ public: static Qt::HANDLE createBitmapFromImage(const QImage &image); - Qt::HANDLE gl_surface; + void* gl_surface; #ifndef QT_NO_XRENDER void convertToARGB32(bool preserveContents = true); #endif diff --git a/src/opengl/qgl_x11.cpp b/src/opengl/qgl_x11.cpp index f0b06ef5..4fa1467 100644 --- a/src/opengl/qgl_x11.cpp +++ b/src/opengl/qgl_x11.cpp @@ -1753,7 +1753,7 @@ QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmapData *pmd, con if (!glxPixmap) return 0; - pixmapData->gl_surface = (Qt::HANDLE)glxPixmap; + pixmapData->gl_surface = (void*)glxPixmap; // Make sure the cleanup hook gets called so we can delete the glx pixmap QImagePixmapCleanupHooks::enableCleanupHooks(pixmapData); diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index fdcc412..81eb35c 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -243,7 +243,7 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) if (x11PixmapData->gl_surface) eglDestroySurface(d->eglContext->display(), (EGLSurface)x11PixmapData->gl_surface); - x11PixmapData->gl_surface = (Qt::HANDLE)QEgl::createSurface(device(), d->eglContext->config()); + x11PixmapData->gl_surface = (void*)QEgl::createSurface(device(), d->eglContext->config()); } return true; @@ -404,8 +404,8 @@ QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmapData* pd, cons hasAlpha ? QEgl::Translucent : QEgl::NoOptions); QPixmap tmpPixmap(pixmapData); //### - pixmapData->gl_surface = (Qt::HANDLE)QEgl::createSurface(&tmpPixmap, config); - if (pixmapData->gl_surface == (Qt::HANDLE)EGL_NO_SURFACE) { + pixmapData->gl_surface = (void*)QEgl::createSurface(&tmpPixmap, config); + if (pixmapData->gl_surface == (void*)EGL_NO_SURFACE) { haveTFP = false; return 0; } @@ -423,7 +423,7 @@ QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmapData* pd, cons if (success == EGL_FALSE) { qWarning() << "eglBindTexImage() failed:" << QEgl::errorString(); eglDestroySurface(eglContext->display(), (EGLSurface)pixmapData->gl_surface); - pixmapData->gl_surface = (Qt::HANDLE)EGL_NO_SURFACE; + pixmapData->gl_surface = (void*)EGL_NO_SURFACE; haveTFP = false; return 0; } diff --git a/src/opengl/qpixmapdata_x11gl_egl.cpp b/src/opengl/qpixmapdata_x11gl_egl.cpp index b6c33f2..797fe6b 100644 --- a/src/opengl/qpixmapdata_x11gl_egl.cpp +++ b/src/opengl/qpixmapdata_x11gl_egl.cpp @@ -235,8 +235,14 @@ void QX11GLPixmapData::beginPaint() if ((EGLSurface)gl_surface == EGL_NO_SURFACE) { QPixmap tmpPixmap(this); EGLConfig cfg = ctx->d_func()->eglContext->config(); - gl_surface = (Qt::HANDLE)QEgl::createSurface(&tmpPixmap, cfg); - ctx->d_func()->eglSurface = (EGLSurface)gl_surface; + + EGLSurface surface = QEgl::createSurface(&tmpPixmap, cfg); + if (surface == EGL_NO_SURFACE) { + qWarning() << "Error creating EGL surface for pixmap:" << QEgl::errorString(); + return; + } + gl_surface = (void*)surface; + ctx->d_func()->eglSurface = surface; ctx->d_func()->valid = true; } QGLPaintDevice::beginPaint(); -- cgit v0.12 From b0eeab376fc9f698a899be6dbc4c1fe6cef02982 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Wed, 10 Mar 2010 09:28:53 +0100 Subject: Make the EGL contexts in QX11GLPixmapData Q_GLOBAL_STATIC Still not ideal, but this should do for now. Reviewed-By: TrustMe --- src/opengl/qpixmapdata_x11gl_egl.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/opengl/qpixmapdata_x11gl_egl.cpp b/src/opengl/qpixmapdata_x11gl_egl.cpp index 797fe6b..d7fae16 100644 --- a/src/opengl/qpixmapdata_x11gl_egl.cpp +++ b/src/opengl/qpixmapdata_x11gl_egl.cpp @@ -61,6 +61,10 @@ QT_BEGIN_NAMESPACE // On 16bpp systems, RGB & ARGB pixmaps are different bit-depths and therefore need // different contexts: + +Q_GLOBAL_STATIC(QEglContext, qt_x11gl_rgbContext); +Q_GLOBAL_STATIC(QEglContext, qt_x11gl_argbContext) + QEglContext* QX11GLPixmapData::rgbContext = 0; QEglContext* QX11GLPixmapData::argbContext = 0; @@ -75,6 +79,9 @@ bool QX11GLPixmapData::hasX11GLPixmaps() checkedForX11Pixmaps = true; + EGLint rgbConfigId; + EGLint argbConfigId; + do { if (qgetenv("QT_USE_X11GL_PIXMAPS").isEmpty()) break; @@ -83,8 +90,11 @@ bool QX11GLPixmapData::hasX11GLPixmaps() EGLConfig argbConfig = QEgl::defaultConfig(QInternal::Pixmap, QEgl::OpenGL, QEgl::Renderable | QEgl::Translucent); + eglGetConfigAttrib(QEgl::display(), rgbConfig, EGL_CONFIG_ID, &rgbConfigId); + eglGetConfigAttrib(QEgl::display(), argbConfig, EGL_CONFIG_ID, &argbConfigId); + if (!rgbContext) { - rgbContext = new QEglContext; + rgbContext = qt_x11gl_rgbContext(); rgbContext->setConfig(rgbConfig); rgbContext->createContext(); } @@ -97,7 +107,7 @@ bool QX11GLPixmapData::hasX11GLPixmaps() argbContext = rgbContext; if (!argbContext) { - argbContext = new QEglContext; + argbContext = qt_x11gl_argbContext(); argbContext->setConfig(argbConfig); argbContext->createContext(); } @@ -156,7 +166,7 @@ bool QX11GLPixmapData::hasX11GLPixmaps() } if (haveX11Pixmaps) - qDebug("QX11GLPixmapData is supported"); + qDebug("Using QX11GLPixmapData with EGL config %d for ARGB and config %d for RGB", argbConfigId, rgbConfigId); else qDebug("QX11GLPixmapData is *NOT* being used"); -- cgit v0.12 From 620a584c20c1aeb059803dfe246597daaf4f4e04 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Wed, 10 Mar 2010 10:16:23 +0100 Subject: Make sure 16-bit EGL configs are chosen over 32-bit configs We want to make sure 16-bit configs are chosen over 32-bit configs as they will provide the best performance. The EGL config selection algorithm is a bit stange in this regard: The selection criteria for EGL_BUFFER_SIZE is "AtLeast", so we can't use it to discard 32-bit configs completely from the selection. So it then comes to the sorting algorithm. The red/green/blue sizes have a sort priority of 3, so they are sorted by first. The sort order is special and described as "by larger _total_ number of color bits.". So EGL will put 32-bit configs in the list before the 16-bit configs. However, the spec also goes on to say "If the requested number of bits in attrib_list for a particular component is 0, then the number of bits for that component is not considered". This part of the spec also seems to imply that setting the red/green/blue bits to zero means none of the components are considered and EGL disregards the entire sorting rule. It then looks to the next highest priority rule, which is EGL_BUFFER_SIZE. Despite the selection criteria being "AtLeast" for EGL_BUFFER_SIZE, it's sort order is "smaller" meaning 16-bit configs are put in the list before 32-bit configs. So, to make sure 16-bit is preffered over 32-bit, we must set the red/green/blue sizes to zero. This has an unfortunate consequence that if the application sets the red/green/blue size to 5/6/5 on the QGLFormat, they will probably get a 32-bit config, even when there's an RGB565 config avaliable. Oh well. Reviewed-By: TrustMe --- src/opengl/qgl_egl.cpp | 83 +++++++++++++++++++++++++++++++---------------- src/opengl/qgl_x11egl.cpp | 4 --- 2 files changed, 55 insertions(+), 32 deletions(-) diff --git a/src/opengl/qgl_egl.cpp b/src/opengl/qgl_egl.cpp index 91b271b..3d146b7 100644 --- a/src/opengl/qgl_egl.cpp +++ b/src/opengl/qgl_egl.cpp @@ -53,35 +53,62 @@ QT_BEGIN_NAMESPACE void qt_eglproperties_set_glformat(QEglProperties& eglProperties, const QGLFormat& glFormat) { - // NOTE: QGLFormat uses a magic value of -1 to indicate "don't care", even when a buffer of that - // type has been requested. - if (glFormat.depth()) { - int depthSize = glFormat.depthBufferSize(); - eglProperties.setValue(EGL_DEPTH_SIZE, depthSize == -1 ? 1 : depthSize); + int redSize = glFormat.redBufferSize(); + int greenSize = glFormat.greenBufferSize(); + int blueSize = glFormat.blueBufferSize(); + int alphaSize = glFormat.alphaBufferSize(); + int depthSize = glFormat.depthBufferSize(); + int stencilSize = glFormat.stencilBufferSize(); + int sampleCount = glFormat.samples(); + + // QGLFormat uses a magic value of -1 to indicate "don't care", even when a buffer of that + // type has been requested. So we must check QGLFormat's booleans too if size is -1: + if (glFormat.alpha() && alphaSize <= 0) { + qDebug("QGLFormat::alpha() returned true"); + alphaSize = 1; } - if (glFormat.stencil()) { - int stencilSize = glFormat.stencilBufferSize(); - eglProperties.setValue(EGL_STENCIL_SIZE, stencilSize == -1 ? 1 : stencilSize); - } - if (glFormat.sampleBuffers()) { - int sampleCount = glFormat.samples(); - eglProperties.setValue(EGL_SAMPLES, sampleCount == -1 ? 1 : sampleCount); - eglProperties.setValue(EGL_SAMPLE_BUFFERS, 1); - } - if (glFormat.alpha()) { - int alphaSize = glFormat.alphaBufferSize(); - eglProperties.setValue(EGL_ALPHA_SIZE, alphaSize == -1 ? 1 : alphaSize); - } - - int redSize = glFormat.redBufferSize(); - int greenSize = glFormat.greenBufferSize(); - int blueSize = glFormat.blueBufferSize(); - int alphaSize = glFormat.alphaBufferSize(); - - eglProperties.setValue(EGL_RED_SIZE, redSize > 0 ? redSize : 1); - eglProperties.setValue(EGL_GREEN_SIZE, greenSize > 0 ? greenSize : 1); - eglProperties.setValue(EGL_BLUE_SIZE, blueSize > 0 ? blueSize : 1); - eglProperties.setValue(EGL_ALPHA_SIZE, alphaSize > 0 ? alphaSize : 0); + if (glFormat.depth() && depthSize <= 0) + depthSize = 1; + if (glFormat.stencil() && stencilSize <= 0) + stencilSize = 1; + if (glFormat.sampleBuffers() && sampleCount <= 0) + sampleCount = 1; + + // We want to make sure 16-bit configs are chosen over 32-bit configs as they will provide + // the best performance. The EGL config selection algorithm is a bit stange in this regard: + // The selection criteria for EGL_BUFFER_SIZE is "AtLeast", so we can't use it to discard + // 32-bit configs completely from the selection. So it then comes to the sorting algorithm. + // The red/green/blue sizes have a sort priority of 3, so they are sorted by first. The sort + // order is special and described as "by larger _total_ number of color bits.". So EGL will + // put 32-bit configs in the list before the 16-bit configs. However, the spec also goes on + // to say "If the requested number of bits in attrib_list for a particular component is 0, + // then the number of bits for that component is not considered". This part of the spec also + // seems to imply that setting the red/green/blue bits to zero means none of the components + // are considered and EGL disregards the entire sorting rule. It then looks to the next + // highest priority rule, which is EGL_BUFFER_SIZE. Despite the selection criteria being + // "AtLeast" for EGL_BUFFER_SIZE, it's sort order is "smaller" meaning 16-bit configs are + // put in the list before 32-bit configs. So, to make sure 16-bit is preffered over 32-bit, + // we must set the red/green/blue sizes to zero. This has an unfortunate consequence that + // if the application sets the red/green/blue size to 5/6/5 on the QGLFormat, they will + // probably get a 32-bit config, even when there's an RGB565 config avaliable. Oh well. + + // Now normalize the values so -1 becomes 0 + redSize = redSize > 0 ? redSize : 0; + greenSize = greenSize > 0 ? greenSize : 0; + blueSize = blueSize > 0 ? blueSize : 0; + alphaSize = alphaSize > 0 ? alphaSize : 0; + depthSize = depthSize > 0 ? depthSize : 0; + stencilSize = stencilSize > 0 ? stencilSize : 0; + sampleCount = sampleCount > 0 ? sampleCount : 0; + + eglProperties.setValue(EGL_RED_SIZE, redSize); + eglProperties.setValue(EGL_GREEN_SIZE, greenSize); + eglProperties.setValue(EGL_BLUE_SIZE, blueSize); + eglProperties.setValue(EGL_ALPHA_SIZE, alphaSize); + eglProperties.setValue(EGL_DEPTH_SIZE, depthSize); + eglProperties.setValue(EGL_STENCIL_SIZE, stencilSize); + eglProperties.setValue(EGL_SAMPLES, sampleCount); + eglProperties.setValue(EGL_SAMPLE_BUFFERS, sampleCount ? 1 : 0); } diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index 81eb35c..a7c92cf 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -198,10 +198,6 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) configProps.setRenderableType(QEgl::OpenGL); qt_eglproperties_set_glformat(configProps, d->glFormat); - // Use EGL_BUFFER_SIZE to make sure we prefer a 16-bit config over a 32-bit config - if (device()->depth() == 16 && !d->glFormat.alpha()) - configProps.setValue(EGL_BUFFER_SIZE, 16); - if (!d->eglContext->chooseConfig(configProps, QEgl::BestPixelFormat)) { delete d->eglContext; d->eglContext = 0; -- cgit v0.12 From 66e22b5b65b09cf4824dbfbc91e8dea04e8e4214 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Wed, 10 Mar 2010 09:41:11 +0100 Subject: MAke the SIMD fiunctions be used even when the QT_NO_DEBUG macro is used Reviewed-by: Benjamin Poulain --- src/gui/painting/qdrawhelper.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 5f70cb7..581b538 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -7820,7 +7820,6 @@ void qInitDrawhelperAsm() CompositionFunction *functionForModeAsm = 0; CompositionFunctionSolid *functionForModeSolidAsm = 0; -#ifdef QT_NO_DEBUG const uint features = qDetectCPUFeatures(); if (false) { #ifdef QT_HAVE_SSE2 @@ -7944,8 +7943,6 @@ void qInitDrawhelperAsm() } #endif // IWMMXT -#endif // QT_NO_DEBUG - #if defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6) functionForModeAsm = qt_functionForMode_ARMv6; functionForModeSolidAsm = qt_functionForModeSolid_ARMv6; -- cgit v0.12 From 960ff0590e99b28bc72d3aa104794bfa13eda2e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Wed, 10 Mar 2010 12:58:33 +0100 Subject: Compile with Qt3Support in a ScratchBox environment. Reviewed-by: Tom Cooksey --- src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index 2b5f2f4..5f0d920 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -64,6 +64,7 @@ // #define QT_OPENGL_CACHE_AS_VBOS +#include "qglgradientcache_p.h" #include "qpaintengineex_opengl2_p.h" #include //for memcpy @@ -80,7 +81,6 @@ #include #include -#include "qglgradientcache_p.h" #include "qglengineshadermanager_p.h" #include "qgl2pexvertexarray_p.h" #include "qtriangulatingstroker_p.h" -- cgit v0.12 From c0eeb2af8f6a023ac1c67f3cf955be3e4b13f998 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Wed, 10 Mar 2010 13:17:32 +0100 Subject: Update def files for latest QtDeclarative API The QDeclarativeBinding API is new since last week's freeze. Froze the def files again, so that applications that use this API will be able to link. Task-number: QTBUG-8909 Reviewed-by: Trust Me --- src/s60installs/bwins/QtDeclarativeu.def | 59 ++++++++++++++++++++++++++++++ src/s60installs/eabi/QtDeclarativeu.def | 61 ++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def index 05d7ae1..ba8d183 100644 --- a/src/s60installs/bwins/QtDeclarativeu.def +++ b/src/s60installs/bwins/QtDeclarativeu.def @@ -3437,4 +3437,63 @@ EXPORTS ?staticMetaObject@QDeclarativeDrag@@2UQMetaObject@@B @ 3436 NONAME ; struct QMetaObject const QDeclarativeDrag::staticMetaObject ?staticMetaObject@QDeclarativeDebugClient@@2UQMetaObject@@B @ 3437 NONAME ; struct QMetaObject const QDeclarativeDebugClient::staticMetaObject ?staticMetaObject@QDeclarativeComponent@@2UQMetaObject@@B @ 3438 NONAME ; struct QMetaObject const QDeclarativeComponent::staticMetaObject + ??0QDeclarativeAbstractBinding@@QAE@XZ @ 3439 NONAME ; QDeclarativeAbstractBinding::QDeclarativeAbstractBinding(void) + ??0QDeclarativeBinding@@QAE@ABVQString@@PAVQObject@@PAVQDeclarativeContext@@1@Z @ 3440 NONAME ; QDeclarativeBinding::QDeclarativeBinding(class QString const &, class QObject *, class QDeclarativeContext *, class QObject *) + ??0QDeclarativeBinding@@QAE@PAXPAVQDeclarativeRefCount@@PAVQObject@@PAVQDeclarativeContext@@ABVQString@@H2@Z @ 3441 NONAME ; QDeclarativeBinding::QDeclarativeBinding(void *, class QDeclarativeRefCount *, class QObject *, class QDeclarativeContext *, class QString const &, int, class QObject *) + ??0QDeclarativePropertyPrivate@@QAE@ABV0@@Z @ 3442 NONAME ; QDeclarativePropertyPrivate::QDeclarativePropertyPrivate(class QDeclarativePropertyPrivate const &) + ??0QDeclarativePropertyPrivate@@QAE@XZ @ 3443 NONAME ; QDeclarativePropertyPrivate::QDeclarativePropertyPrivate(void) + ??1QDeclarativeAbstractBinding@@UAE@XZ @ 3444 NONAME ; QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding(void) + ??1QDeclarativeBinding@@UAE@XZ @ 3445 NONAME ; QDeclarativeBinding::~QDeclarativeBinding(void) + ??1QDeclarativePropertyPrivate@@QAE@XZ @ 3446 NONAME ; QDeclarativePropertyPrivate::~QDeclarativePropertyPrivate(void) + ??_EQDeclarativeAbstractBinding@@UAE@I@Z @ 3447 NONAME ; QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding(unsigned int) + ??_EQDeclarativeBinding@@UAE@I@Z @ 3448 NONAME ; QDeclarativeBinding::~QDeclarativeBinding(unsigned int) + ?addToObject@QDeclarativeAbstractBinding@@QAEXPAVQObject@@@Z @ 3449 NONAME ; void QDeclarativeAbstractBinding::addToObject(class QObject *) + ?binding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@@Z @ 3450 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::binding(class QDeclarativeProperty const &) + ?canConvert@QDeclarativePropertyPrivate@@SA_NPBUQMetaObject@@0@Z @ 3451 NONAME ; bool QDeclarativePropertyPrivate::canConvert(struct QMetaObject const *, struct QMetaObject const *) + ?clear@QDeclarativeAbstractBinding@@IAEXXZ @ 3452 NONAME ; void QDeclarativeAbstractBinding::clear(void) + ?d_func@QDeclarativeBinding@@AAEPAVQDeclarativeBindingPrivate@@XZ @ 3453 NONAME ; class QDeclarativeBindingPrivate * QDeclarativeBinding::d_func(void) + ?d_func@QDeclarativeBinding@@ABEPBVQDeclarativeBindingPrivate@@XZ @ 3454 NONAME ; class QDeclarativeBindingPrivate const * QDeclarativeBinding::d_func(void) const + ?destroy@QDeclarativeAbstractBinding@@UAEXXZ @ 3455 NONAME ; void QDeclarativeAbstractBinding::destroy(void) + ?enabled@QDeclarativeBinding@@QBE_NXZ @ 3456 NONAME ; bool QDeclarativeBinding::enabled(void) const + ?equal@QDeclarativePropertyPrivate@@SA_NPBUQMetaObject@@0@Z @ 3457 NONAME ; bool QDeclarativePropertyPrivate::equal(struct QMetaObject const *, struct QMetaObject const *) + ?expression@QDeclarativeAbstractBinding@@UBE?AVQString@@XZ @ 3458 NONAME ; class QString QDeclarativeAbstractBinding::expression(void) const + ?expression@QDeclarativeBinding@@UBE?AVQString@@XZ @ 3459 NONAME ; class QString QDeclarativeBinding::expression(void) const + ?getStaticMetaObject@QDeclarativeBinding@@SAABUQMetaObject@@XZ @ 3460 NONAME ; struct QMetaObject const & QDeclarativeBinding::getStaticMetaObject(void) + ?initDefault@QDeclarativePropertyPrivate@@QAEXPAVQObject@@@Z @ 3461 NONAME ; void QDeclarativePropertyPrivate::initDefault(class QObject *) + ?initProperty@QDeclarativePropertyPrivate@@QAEXPAVQObject@@ABVQString@@@Z @ 3462 NONAME ; void QDeclarativePropertyPrivate::initProperty(class QObject *, class QString const &) + ?isValueType@QDeclarativePropertyPrivate@@QBE_NXZ @ 3463 NONAME ; bool QDeclarativePropertyPrivate::isValueType(void) const + ?metaObject@QDeclarativeBinding@@UBEPBUQMetaObject@@XZ @ 3464 NONAME ; struct QMetaObject const * QDeclarativeBinding::metaObject(void) const + ?property@QDeclarativeBinding@@QBE?AVQDeclarativeProperty@@XZ @ 3465 NONAME ; class QDeclarativeProperty QDeclarativeBinding::property(void) const + ?propertyIndex@QDeclarativeBinding@@UAEHXZ @ 3466 NONAME ; int QDeclarativeBinding::propertyIndex(void) + ?propertyType@QDeclarativePropertyPrivate@@QBEHXZ @ 3467 NONAME ; int QDeclarativePropertyPrivate::propertyType(void) const + ?propertyTypeCategory@QDeclarativePropertyPrivate@@QBE?AW4PropertyTypeCategory@QDeclarativeProperty@@XZ @ 3468 NONAME ; enum QDeclarativeProperty::PropertyTypeCategory QDeclarativePropertyPrivate::propertyTypeCategory(void) const + ?qt_metacall@QDeclarativeBinding@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 3469 NONAME ; int QDeclarativeBinding::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacast@QDeclarativeBinding@@UAEPAXPBD@Z @ 3470 NONAME ; void * QDeclarativeBinding::qt_metacast(char const *) + ?rawMetaObjectForType@QDeclarativePropertyPrivate@@SAPBUQMetaObject@@PAVQDeclarativeEnginePrivate@@H@Z @ 3471 NONAME ; struct QMetaObject const * QDeclarativePropertyPrivate::rawMetaObjectForType(class QDeclarativeEnginePrivate *, int) + ?readValueProperty@QDeclarativePropertyPrivate@@QAE?AVQVariant@@XZ @ 3472 NONAME ; class QVariant QDeclarativePropertyPrivate::readValueProperty(void) + ?removeFromObject@QDeclarativeAbstractBinding@@QAEXXZ @ 3473 NONAME ; void QDeclarativeAbstractBinding::removeFromObject(void) + ?restore@QDeclarativePropertyPrivate@@SA?AVQDeclarativeProperty@@ABVQByteArray@@PAVQObject@@PAVQDeclarativeContext@@@Z @ 3474 NONAME ; class QDeclarativeProperty QDeclarativePropertyPrivate::restore(class QByteArray const &, class QObject *, class QDeclarativeContext *) + ?saveProperty@QDeclarativePropertyPrivate@@SA?AVQByteArray@@PBUQMetaObject@@H@Z @ 3475 NONAME ; class QByteArray QDeclarativePropertyPrivate::saveProperty(struct QMetaObject const *, int) + ?saveValueType@QDeclarativePropertyPrivate@@SA?AVQByteArray@@PBUQMetaObject@@H0H@Z @ 3476 NONAME ; class QByteArray QDeclarativePropertyPrivate::saveValueType(struct QMetaObject const *, int, struct QMetaObject const *, int) + ?setBinding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@PAV2@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 3477 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::setBinding(class QDeclarativeProperty const &, class QDeclarativeAbstractBinding *, class QFlags) + ?setBinding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@PAVQObject@@ABUData@QDeclarativePropertyCache@@PAV2@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 3478 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::setBinding(class QObject *, struct QDeclarativePropertyCache::Data const &, class QDeclarativeAbstractBinding *, class QFlags) + ?setEnabled@QDeclarativeAbstractBinding@@QAEX_N@Z @ 3479 NONAME ; void QDeclarativeAbstractBinding::setEnabled(bool) + ?setEnabled@QDeclarativeAbstractBinding@@UAEX_NV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 3480 NONAME ; void QDeclarativeAbstractBinding::setEnabled(bool, class QFlags) + ?setEnabled@QDeclarativeBinding@@UAEX_NV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 3481 NONAME ; void QDeclarativeBinding::setEnabled(bool, class QFlags) + ?setSignalExpression@QDeclarativePropertyPrivate@@SAPAVQDeclarativeExpression@@ABVQDeclarativeProperty@@PAV2@@Z @ 3482 NONAME ; class QDeclarativeExpression * QDeclarativePropertyPrivate::setSignalExpression(class QDeclarativeProperty const &, class QDeclarativeExpression *) + ?setTarget@QDeclarativeBinding@@QAEXABVQDeclarativeProperty@@@Z @ 3483 NONAME ; void QDeclarativeBinding::setTarget(class QDeclarativeProperty const &) + ?signalExpression@QDeclarativePropertyPrivate@@SAPAVQDeclarativeExpression@@ABVQDeclarativeProperty@@@Z @ 3484 NONAME ; class QDeclarativeExpression * QDeclarativePropertyPrivate::signalExpression(class QDeclarativeProperty const &) + ?tr@QDeclarativeBinding@@SA?AVQString@@PBD0@Z @ 3485 NONAME ; class QString QDeclarativeBinding::tr(char const *, char const *) + ?tr@QDeclarativeBinding@@SA?AVQString@@PBD0H@Z @ 3486 NONAME ; class QString QDeclarativeBinding::tr(char const *, char const *, int) + ?trUtf8@QDeclarativeBinding@@SA?AVQString@@PBD0@Z @ 3487 NONAME ; class QString QDeclarativeBinding::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeBinding@@SA?AVQString@@PBD0H@Z @ 3488 NONAME ; class QString QDeclarativeBinding::trUtf8(char const *, char const *, int) + ?update@QDeclarativeAbstractBinding@@QAEXXZ @ 3489 NONAME ; void QDeclarativeAbstractBinding::update(void) + ?update@QDeclarativeBinding@@QAEXXZ @ 3490 NONAME ; void QDeclarativeBinding::update(void) + ?update@QDeclarativeBinding@@UAEXV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 3491 NONAME ; void QDeclarativeBinding::update(class QFlags) + ?valueTypeCoreIndex@QDeclarativePropertyPrivate@@SAHABVQDeclarativeProperty@@@Z @ 3492 NONAME ; int QDeclarativePropertyPrivate::valueTypeCoreIndex(class QDeclarativeProperty const &) + ?write@QDeclarativePropertyPrivate@@SA_NABVQDeclarativeProperty@@ABVQVariant@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 3493 NONAME ; bool QDeclarativePropertyPrivate::write(class QDeclarativeProperty const &, class QVariant const &, class QFlags) + ?write@QDeclarativePropertyPrivate@@SA_NPAVQObject@@ABUData@QDeclarativePropertyCache@@ABVQVariant@@PAVQDeclarativeContext@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 3494 NONAME ; bool QDeclarativePropertyPrivate::write(class QObject *, struct QDeclarativePropertyCache::Data const &, class QVariant const &, class QDeclarativeContext *, class QFlags) + ?writeEnumProperty@QDeclarativePropertyPrivate@@SA_NABVQMetaProperty@@HPAVQObject@@ABVQVariant@@H@Z @ 3495 NONAME ; bool QDeclarativePropertyPrivate::writeEnumProperty(class QMetaProperty const &, int, class QObject *, class QVariant const &, int) + ?writeValueProperty@QDeclarativePropertyPrivate@@QAE_NABVQVariant@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 3496 NONAME ; bool QDeclarativePropertyPrivate::writeValueProperty(class QVariant const &, class QFlags) + ?staticMetaObject@QDeclarativeBinding@@2UQMetaObject@@B @ 3497 NONAME ; struct QMetaObject const QDeclarativeBinding::staticMetaObject diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def index 3708e21..e4fc7a3 100644 --- a/src/s60installs/eabi/QtDeclarativeu.def +++ b/src/s60installs/eabi/QtDeclarativeu.def @@ -3476,4 +3476,65 @@ EXPORTS _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 3475 NONAME _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 3476 NONAME _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 3477 NONAME + _ZN19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 3478 NONAME + _ZN19QDeclarativeBinding11qt_metacallEN11QMetaObject4CallEiPPv @ 3479 NONAME + _ZN19QDeclarativeBinding11qt_metacastEPKc @ 3480 NONAME + _ZN19QDeclarativeBinding13propertyIndexEv @ 3481 NONAME + _ZN19QDeclarativeBinding16staticMetaObjectE @ 3482 NONAME DATA 16 + _ZN19QDeclarativeBinding19getStaticMetaObjectEv @ 3483 NONAME + _ZN19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 3484 NONAME + _ZN19QDeclarativeBinding9setTargetERK20QDeclarativeProperty @ 3485 NONAME + _ZN19QDeclarativeBindingC1EPvP20QDeclarativeRefCountP7QObjectP19QDeclarativeContextRK7QStringiS4_ @ 3486 NONAME + _ZN19QDeclarativeBindingC1ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 3487 NONAME + _ZN19QDeclarativeBindingC2EPvP20QDeclarativeRefCountP7QObjectP19QDeclarativeContextRK7QStringiS4_ @ 3488 NONAME + _ZN19QDeclarativeBindingC2ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 3489 NONAME + _ZN19QDeclarativeBindingD0Ev @ 3490 NONAME + _ZN19QDeclarativeBindingD1Ev @ 3491 NONAME + _ZN19QDeclarativeBindingD2Ev @ 3492 NONAME + _ZN27QDeclarativeAbstractBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 3493 NONAME + _ZN27QDeclarativeAbstractBinding11addToObjectEP7QObject @ 3494 NONAME + _ZN27QDeclarativeAbstractBinding16removeFromObjectEv @ 3495 NONAME + _ZN27QDeclarativeAbstractBinding5clearEv @ 3496 NONAME + _ZN27QDeclarativeAbstractBinding7destroyEv @ 3497 NONAME + _ZN27QDeclarativeAbstractBindingC2Ev @ 3498 NONAME + _ZN27QDeclarativeAbstractBindingD0Ev @ 3499 NONAME + _ZN27QDeclarativeAbstractBindingD1Ev @ 3500 NONAME + _ZN27QDeclarativeAbstractBindingD2Ev @ 3501 NONAME + _ZN27QDeclarativePropertyPrivate10canConvertEPK11QMetaObjectS2_ @ 3502 NONAME + _ZN27QDeclarativePropertyPrivate10setBindingEP7QObjectRKN25QDeclarativePropertyCache4DataEP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 3503 NONAME + _ZN27QDeclarativePropertyPrivate10setBindingERK20QDeclarativePropertyP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 3504 NONAME + _ZN27QDeclarativePropertyPrivate11initDefaultEP7QObject @ 3505 NONAME + _ZN27QDeclarativePropertyPrivate12initPropertyEP7QObjectRK7QString @ 3506 NONAME + _ZN27QDeclarativePropertyPrivate12savePropertyEPK11QMetaObjecti @ 3507 NONAME + _ZN27QDeclarativePropertyPrivate13saveValueTypeEPK11QMetaObjectiS2_i @ 3508 NONAME + _ZN27QDeclarativePropertyPrivate16signalExpressionERK20QDeclarativeProperty @ 3509 NONAME + _ZN27QDeclarativePropertyPrivate17readValuePropertyEv @ 3510 NONAME + _ZN27QDeclarativePropertyPrivate17writeEnumPropertyERK13QMetaPropertyiP7QObjectRK8QVarianti @ 3511 NONAME + _ZN27QDeclarativePropertyPrivate18valueTypeCoreIndexERK20QDeclarativeProperty @ 3512 NONAME + _ZN27QDeclarativePropertyPrivate18writeValuePropertyERK8QVariant6QFlagsINS_9WriteFlagEE @ 3513 NONAME + _ZN27QDeclarativePropertyPrivate19setSignalExpressionERK20QDeclarativePropertyP22QDeclarativeExpression @ 3514 NONAME + _ZN27QDeclarativePropertyPrivate20rawMetaObjectForTypeEP25QDeclarativeEnginePrivatei @ 3515 NONAME + _ZN27QDeclarativePropertyPrivate5equalEPK11QMetaObjectS2_ @ 3516 NONAME + _ZN27QDeclarativePropertyPrivate5writeEP7QObjectRKN25QDeclarativePropertyCache4DataERK8QVariantP19QDeclarativeContext6QFlagsINS_9WriteFlagEE @ 3517 NONAME + _ZN27QDeclarativePropertyPrivate5writeERK20QDeclarativePropertyRK8QVariant6QFlagsINS_9WriteFlagEE @ 3518 NONAME + _ZN27QDeclarativePropertyPrivate7bindingERK20QDeclarativeProperty @ 3519 NONAME + _ZN27QDeclarativePropertyPrivate7restoreERK10QByteArrayP7QObjectP19QDeclarativeContext @ 3520 NONAME + _ZNK19QDeclarativeBinding10expressionEv @ 3521 NONAME + _ZNK19QDeclarativeBinding10metaObjectEv @ 3522 NONAME + _ZNK19QDeclarativeBinding7enabledEv @ 3523 NONAME + _ZNK19QDeclarativeBinding8propertyEv @ 3524 NONAME + _ZNK27QDeclarativeAbstractBinding10expressionEv @ 3525 NONAME + _ZNK27QDeclarativePropertyPrivate11isValueTypeEv @ 3526 NONAME + _ZNK27QDeclarativePropertyPrivate12propertyTypeEv @ 3527 NONAME + _ZNK27QDeclarativePropertyPrivate20propertyTypeCategoryEv @ 3528 NONAME + _ZTI19QDeclarativeBinding @ 3529 NONAME + _ZTI27QDeclarativeAbstractBinding @ 3530 NONAME + _ZTV19QDeclarativeBinding @ 3531 NONAME + _ZTV27QDeclarativeAbstractBinding @ 3532 NONAME + _ZThn8_N19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 3533 NONAME + _ZThn8_N19QDeclarativeBinding13propertyIndexEv @ 3534 NONAME + _ZThn8_N19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 3535 NONAME + _ZThn8_N19QDeclarativeBindingD0Ev @ 3536 NONAME + _ZThn8_N19QDeclarativeBindingD1Ev @ 3537 NONAME + _ZThn8_NK19QDeclarativeBinding10expressionEv @ 3538 NONAME -- cgit v0.12 From 9bba92715d96939e4d36c6ea42e8b466756bf891 Mon Sep 17 00:00:00 2001 From: Alexader Karaivanov Date: Wed, 10 Mar 2010 12:42:39 +0100 Subject: Fixes Q3ListViewItem grandchildren not sorted if item has one child Q3ListViewItem::sortChildItems() used to exits early if there is only 1 child item and leaves grandchildren unsorted. Merge-request: 2260 Reviewed-by: Olivier Goffart --- src/qt3support/itemviews/q3listview.cpp | 9 ++- tests/auto/q3listview/tst_q3listview.cpp | 126 ++++++++++++++++++++++++++++++- 2 files changed, 133 insertions(+), 2 deletions(-) diff --git a/src/qt3support/itemviews/q3listview.cpp b/src/qt3support/itemviews/q3listview.cpp index 12dad84..4900827 100644 --- a/src/qt3support/itemviews/q3listview.cpp +++ b/src/qt3support/itemviews/q3listview.cpp @@ -1324,8 +1324,15 @@ void Q3ListViewItem::sortChildItems(int column, bool ascending) const int nColumns = (listView() ? listView()->columns() : 0); // and don't sort if we already have the right sorting order - if (column > nColumns || childItem == 0 || childItem->siblingItem == 0) + if (column > nColumns || childItem == 0) return; + + // If there is just one child, just sort its children + if (childItem->siblingItem == 0) { + if (childItem->isOpen()) + childItem->sortChildItems(column, ascending); + return; + } // make an array for qHeapSort() Q3ListViewPrivate::SortableItem * siblings diff --git a/tests/auto/q3listview/tst_q3listview.cpp b/tests/auto/q3listview/tst_q3listview.cpp index 4de6f95..56fa25f 100644 --- a/tests/auto/q3listview/tst_q3listview.cpp +++ b/tests/auto/q3listview/tst_q3listview.cpp @@ -39,6 +39,7 @@ ** ****************************************************************************/ +#include #include @@ -87,6 +88,8 @@ public slots: private slots: void getSetCheck(); void sortchild(); + void sortchild2(); // item -> item -> 3 items + void sortchild3(); // item -> 3 items void takeItem_data(); void takeItem(); void selections_mouseClick_data(); @@ -262,7 +265,7 @@ void tst_Q3ListView::sortchild() QVERIFY( item == item1 ); listview->setSorting( 0, FALSE ); - + item = listview->firstChild(); QVERIFY( item == item1 ); item = item->itemBelow(); @@ -291,6 +294,127 @@ void tst_Q3ListView::sortchild() delete listview; } +void tst_Q3ListView::sortchild2() +{ + Q3ListView* listview = new Q3ListView( 0 ); + + listview->addColumn( "" ); + + Q3ListViewItem* item1 = new Q3ListViewItem( listview, "zzz" ); + Q3ListViewItem* item2 = new Q3ListViewItem( listview, "hhh" ); + Q3ListViewItem* item3 = new Q3ListViewItem( listview, "bbb" ); + Q3ListViewItem* item4 = new Q3ListViewItem( listview, "jjj" ); + Q3ListViewItem* item5 = new Q3ListViewItem( listview, "ddd" ); + Q3ListViewItem* item6 = new Q3ListViewItem( listview, "lll" ); + + Q3ListViewItem* item31 = new Q3ListViewItem( item3, "bbb-level2" ); + + Q3ListViewItem* item31b = new Q3ListViewItem( item31, "234" ); + Q3ListViewItem* item31c = new Q3ListViewItem( item31, "345" ); + Q3ListViewItem* item31a = new Q3ListViewItem( item31, "123" ); + + listview->setOpen( item3, TRUE ); + listview->setOpen( item31, TRUE ); + + listview->setSorting( 0, TRUE ); + listview->show(); + + Q3ListViewItem *item = listview->firstChild(); + QVERIFY( item == item3 ); + item = item->itemBelow(); + QVERIFY( item == item31 ); + item = item->itemBelow(); + QVERIFY( item == item31a ); + item = item->itemBelow(); + QVERIFY( item == item31b ); + item = item->itemBelow(); + QVERIFY( item == item31c ); + item = item->itemBelow(); + QVERIFY( item == item5 ); + item = item->itemBelow(); + QVERIFY( item == item2 ); + item = item->itemBelow(); + QVERIFY( item == item4 ); + item = item->itemBelow(); + QVERIFY( item == item6 ); + item = item->itemBelow(); + QVERIFY( item == item1 ); + + listview->setSorting( 0, FALSE ); + + item = listview->firstChild(); + QVERIFY( item == item1 ); + item = item->itemBelow(); + QVERIFY( item == item6 ); + item = item->itemBelow(); + QVERIFY( item == item4 ); + item = item->itemBelow(); + QVERIFY( item == item2 ); + item = item->itemBelow(); + QVERIFY( item == item5 ); + item = item->itemBelow(); + QVERIFY( item == item3 ); + item = item->itemBelow(); + QVERIFY( item == item31 ); + item = item->itemBelow(); + QVERIFY( item == item31c ); + item = item->itemBelow(); + QVERIFY( item == item31b ); + item = item->itemBelow(); + QVERIFY( item == item31a ); + + item = listview->firstChild(); + item->moveItem( item->itemBelow() ); + + listview->setSorting( 0, FALSE ); + QVERIFY( item == listview->firstChild() ); + + delete listview; +} + +void tst_Q3ListView::sortchild3() +{ + Q3ListView* listview = new Q3ListView( 0 ); + + listview->addColumn( "" ); + + Q3ListViewItem* item3 = new Q3ListViewItem( listview, "bbb" ); + + + Q3ListViewItem* item31b = new Q3ListViewItem( item3, "234" ); + Q3ListViewItem* item31c = new Q3ListViewItem( item3, "345" ); + Q3ListViewItem* item31a = new Q3ListViewItem( item3, "123" ); + + listview->setOpen( item3, TRUE ); + + listview->setSorting( 0, TRUE ); + listview->show(); + + Q3ListViewItem *item = listview->firstChild(); + QVERIFY( item == item3 ); + item = item->itemBelow(); + QVERIFY( item == item31a ); + item = item->itemBelow(); + QVERIFY( item == item31b ); + item = item->itemBelow(); + QVERIFY( item == item31c ); + item = item->itemBelow(); + + listview->setSorting( 0, FALSE ); + + item = listview->firstChild(); + QVERIFY( item == item3 ); + item = item->itemBelow(); + QVERIFY( item == item31c ); + item = item->itemBelow(); + QVERIFY( item == item31b ); + item = item->itemBelow(); + QVERIFY( item == item31a ); + + delete listview; +} + + void tst_Q3ListView::takeItem_data() { QTest::addColumn("selectionMode"); -- cgit v0.12 From 01a045084ad45da37e6b79938354c82419c0a83e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Lind?= Date: Wed, 10 Mar 2010 13:34:51 +0100 Subject: Added configure check to diasable building QtDeclarative when Qt is not building the QtScript module --- configure | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/configure b/configure index 71056b6..60bcc67 100755 --- a/configure +++ b/configure @@ -5962,19 +5962,6 @@ if [ "$CFG_NETWORKMANAGER" = "auto" ]; then fi fi -if [ -f "$relpath/src/declarative/declarative.pro" ]; then - if [ "$CFG_DECLARATIVE" = "auto" ]; then - CFG_DECLARATIVE=yes - fi -else - if [ "$CFG_DECLARATIVE" = "auto" ] || [ "$CFG_DECLARATIVE" = "no" ]; then - CFG_DECLARATIVE=no - else - echo "Error: Unable to locate the qt-declarative package. Refer to the documentation on how to build the package." - exit 1 - fi -fi - if [ "$CFG_JAVASCRIPTCORE_JIT" = "yes" ] || [ "$CFG_JAVASCRIPTCORE_JIT" = "auto" ]; then if [ "$CFG_ARCH" = "arm" ] || [ "$CFG_ARCH" = "armv6" ]; then "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/javascriptcore-jit "javascriptcore-jit" $L_FLAGS $I_FLAGS $l_FLAGS @@ -6629,12 +6616,6 @@ else QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SVG" fi -if [ "$CFG_DECLARATIVE" = "yes" ]; then - QT_CONFIG="$QT_CONFIG declarative" -else - QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_DECLARATIVE" -fi - if [ "$CFG_WEBKIT" = "auto" ]; then CFG_WEBKIT="$canBuildWebKit" fi @@ -6674,6 +6655,27 @@ else QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SCRIPTTOOLS" fi + +if [ "$CFG_DECLARATIVE" = "yes" ]; then + if [ "$CFG_SCRIPT" = "no" ]; then + echo "Error: QtDeclarative was requested, but it can't be built due to QtScript being disabled." + exit 1 + fi +fi +if [ "$CFG_DECLARATIVE" = "auto" ]; then + if [ "$CFG_SCRIPT" = "no" ]; then + CFG_DECLARATIVE=no + else + CFG_DECLARATIVE=yes + fi +fi + +if [ "$CFG_DECLARATIVE" = "yes" ]; then + QT_CONFIG="$QT_CONFIG declarative" +else + QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_DECLARATIVE" +fi + if [ "$CFG_EXCEPTIONS" = "no" ]; then case "$COMPILER" in g++*) -- cgit v0.12 From ef9e7168a8ed3e8149204cf6c604a38db35245c0 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Wed, 10 Mar 2010 14:44:37 +0100 Subject: Cocoa: Fix misaligned text between format changes This reverts part of commit e008504b5ec34975e34adf3b1a2b7170d0e4dd38. The original commit aimed to round up all fractional numbers for the font to "improve appearance". Rounding up the last advance of a set of advances in a glyph layout, however, breaks text layout completely, since the layout of text will be different depending on how many text lines is used to represent it (since the last glyph in each line will have a higher advance than the others.) This was e.g. visible in Qt Creator when turning on whitespace visualization, as all spaces then created a format change, thus a new text line in the text layout, and hence an increase of X pixels in the positioning of the text after the space, where 0.0 < X < 1.0. I see no negative results of removing the rounding, but if there are any problems, it has to be fixed in the usage of the advances not in the advances themselves. Task-number: QTCREATORBUG-381, QTBUG-8791 Reviewed-by: mae --- src/gui/text/qfontengine_mac.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/text/qfontengine_mac.mm b/src/gui/text/qfontengine_mac.mm index 48bc635..8588214 100644 --- a/src/gui/text/qfontengine_mac.mm +++ b/src/gui/text/qfontengine_mac.mm @@ -308,7 +308,7 @@ bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLay CTFontGetAdvancesForGlyphs(runFont, kCTFontHorizontalOrientation, tmpGlyphs + glyphCount - 1, &lastGlyphAdvance, 1); outGlyphs[rtl ? 0 : (glyphCount - 1)] = tmpGlyphs[glyphCount - 1] | fontIndex; - outAdvances_x[rtl ? 0 : (glyphCount - 1)] = QFixed::fromReal(lastGlyphAdvance.width).ceil(); + outAdvances_x[rtl ? 0 : (glyphCount - 1)] = QFixed::fromReal(lastGlyphAdvance.width); } outGlyphs += glyphCount; outAttributes += glyphCount; -- cgit v0.12 From c94db224c6abb8ed9e214bb96a14b69eb1c557ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Wed, 10 Mar 2010 15:22:21 +0100 Subject: Compile fix when Qt3Support is enabled for devices using EGL. Reviewed-by: Samuel --- src/opengl/gl2paintengineex/qglgradientcache.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/opengl/gl2paintengineex/qglgradientcache.cpp b/src/opengl/gl2paintengineex/qglgradientcache.cpp index 192e01c..a1495dd 100644 --- a/src/opengl/gl2paintengineex/qglgradientcache.cpp +++ b/src/opengl/gl2paintengineex/qglgradientcache.cpp @@ -39,10 +39,10 @@ ** ****************************************************************************/ +#include "qglgradientcache_p.h" #include #include -#include "qglgradientcache_p.h" QT_BEGIN_NAMESPACE -- cgit v0.12 From 7ddf13c8fba2aadf00c0d6c822c6b4acbd3bd54f Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Wed, 10 Mar 2010 13:34:52 +0100 Subject: Make calls to QGLFormat::set*BufferSize also update flags Reviewed-By: Trond --- src/opengl/qgl.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index 73cd6a8..7839191 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -766,6 +766,7 @@ void QGLFormat::setSamples(int numSamples) return; } d->numSamples = numSamples; + setSampleBuffers(numSamples > 0); } /*! @@ -904,6 +905,7 @@ void QGLFormat::setDepthBufferSize(int size) return; } d->depthSize = size; + setDepth(size > 0); } /*! @@ -1017,7 +1019,7 @@ void QGLFormat::setAlphaBufferSize(int size) return; } d->alphaSize = size; - setOption(QGL::AlphaChannel); + setAlpha(size > 0); } /*! @@ -1044,6 +1046,7 @@ void QGLFormat::setAccumBufferSize(int size) return; } d->accumSize = size; + setAccum(size > 0); } /*! @@ -1069,6 +1072,7 @@ void QGLFormat::setStencilBufferSize(int size) return; } d->stencilSize = size; + setStencil(size > 0); } /*! -- cgit v0.12 From 9bf426a2af27ad5bfdb35706c3ed48e77f654f4d Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Wed, 10 Mar 2010 14:50:59 +0100 Subject: Update QGLFormat from EGLConfig properly Previously, some members of QGLFormat (like alphaBufferSize) would be left to the initial -1 value. Reviewed-By: TrustMe --- src/opengl/qgl_egl.cpp | 70 ++++++++++++++++++--------------------- src/opengl/qgl_egl_p.h | 2 +- src/opengl/qgl_qws.cpp | 2 +- src/opengl/qgl_wince.cpp | 2 +- src/opengl/qgl_x11egl.cpp | 5 ++- src/opengl/qglpixelbuffer_egl.cpp | 2 +- 6 files changed, 38 insertions(+), 45 deletions(-) diff --git a/src/opengl/qgl_egl.cpp b/src/opengl/qgl_egl.cpp index 3d146b7..c08d6fd 100644 --- a/src/opengl/qgl_egl.cpp +++ b/src/opengl/qgl_egl.cpp @@ -111,46 +111,40 @@ void qt_eglproperties_set_glformat(QEglProperties& eglProperties, const QGLForma eglProperties.setValue(EGL_SAMPLE_BUFFERS, sampleCount ? 1 : 0); } - // Updates "format" with the parameters of the selected configuration. -void qt_egl_update_format(const QEglContext& context, QGLFormat& format) +void qt_glformat_from_eglconfig(QGLFormat& format, const EGLConfig config) { - EGLint value = 0; - - if (context.configAttrib(EGL_RED_SIZE, &value)) - format.setRedBufferSize(value); - if (context.configAttrib(EGL_GREEN_SIZE, &value)) - format.setGreenBufferSize(value); - if (context.configAttrib(EGL_BLUE_SIZE, &value)) - format.setBlueBufferSize(value); - if (context.configAttrib(EGL_ALPHA_SIZE, &value)) { - format.setAlpha(value != 0); - if (format.alpha()) - format.setAlphaBufferSize(value); - } - - if (context.configAttrib(EGL_DEPTH_SIZE, &value)) { - format.setDepth(value != 0); - if (format.depth()) - format.setDepthBufferSize(value); - } - - if (context.configAttrib(EGL_LEVEL, &value)) - format.setPlane(value); - - if (context.configAttrib(EGL_SAMPLE_BUFFERS, &value)) { - format.setSampleBuffers(value != 0); - if (format.sampleBuffers()) { - context.configAttrib(EGL_SAMPLES, &value); - format.setSamples(value); - } - } - - if (context.configAttrib(EGL_STENCIL_SIZE, &value)) { - format.setStencil(value != 0); - if (format.stencil()) - format.setStencilBufferSize(value); - } + EGLint redSize = 0; + EGLint greenSize = 0; + EGLint blueSize = 0; + EGLint alphaSize = 0; + EGLint depthSize = 0; + EGLint stencilSize = 0; + EGLint sampleCount = 0; + EGLint level = 0; + + EGLDisplay display = QEgl::display(); + eglGetConfigAttrib(display, config, EGL_RED_SIZE, &redSize); + eglGetConfigAttrib(display, config, EGL_GREEN_SIZE, &greenSize); + eglGetConfigAttrib(display, config, EGL_BLUE_SIZE, &blueSize); + eglGetConfigAttrib(display, config, EGL_ALPHA_SIZE, &alphaSize); + eglGetConfigAttrib(display, config, EGL_DEPTH_SIZE, &depthSize); + eglGetConfigAttrib(display, config, EGL_STENCIL_SIZE, &stencilSize); + eglGetConfigAttrib(display, config, EGL_SAMPLES, &sampleCount); + eglGetConfigAttrib(display, config, EGL_LEVEL, &level); + + format.setRedBufferSize(redSize); + format.setGreenBufferSize(greenSize); + format.setBlueBufferSize(blueSize); + format.setAlphaBufferSize(alphaSize); + format.setDepthBufferSize(depthSize); + format.setStencilBufferSize(stencilSize); + format.setSamples(sampleCount); + format.setPlane(level + 1); // EGL calls level 0 "normal" whereas Qt calls 1 "normal" + format.setDirectRendering(true); // All EGL contexts are direct-rendered + format.setRgba(true); // EGL doesn't support colour index rendering + format.setStereo(false); // EGL doesn't support stereo buffers + format.setAccumBufferSize(0); // EGL doesn't support accululation buffers // Clear the EGL error state because some of the above may // have errored out because the attribute is not applicable diff --git a/src/opengl/qgl_egl_p.h b/src/opengl/qgl_egl_p.h index 6b65227..43793cd 100644 --- a/src/opengl/qgl_egl_p.h +++ b/src/opengl/qgl_egl_p.h @@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE class QGLFormat; void qt_eglproperties_set_glformat(QEglProperties& props, const QGLFormat& format); -void qt_egl_update_format(const QEglContext& context, QGLFormat& format); +void qt_glformat_from_eglconfig(QGLFormat& format, const EGLConfig config); QT_END_NAMESPACE diff --git a/src/opengl/qgl_qws.cpp b/src/opengl/qgl_qws.cpp index f72f051..96b2454 100644 --- a/src/opengl/qgl_qws.cpp +++ b/src/opengl/qgl_qws.cpp @@ -200,7 +200,7 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) } // Inform the higher layers about the actual format properties. - qt_egl_update_format(*(d->eglContext), d->glFormat); + qt_glformat_from_eglconfig(d->glFormat, d->eglContext->config()); // Create a new context for the configuration. if (!d->eglContext->createContext diff --git a/src/opengl/qgl_wince.cpp b/src/opengl/qgl_wince.cpp index 3bf7f3a..fefcca2 100644 --- a/src/opengl/qgl_wince.cpp +++ b/src/opengl/qgl_wince.cpp @@ -163,7 +163,7 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) } // Inform the higher layers about the actual format properties. - qt_egl_update_format(*(d->eglContext), d->glFormat); + qt_glformat_from_eglconfig(d->glFormat, d->eglContext->config()); // Create a new context for the configuration. if (!d->eglContext->createContext diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index a7c92cf..fe87c65 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -216,9 +216,8 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) const_cast(shareContext)->d_func()->sharing = true; } - // Inform the higher layers about the actual format properties. - qt_egl_update_format(*(d->eglContext), d->glFormat); - + // Inform the higher layers about the actual format properties + qt_glformat_from_eglconfig(d->glFormat, d->eglContext->config()); // Do don't create the EGLSurface for everything. // QWidget - yes, create the EGLSurface and store it in QGLContextPrivate::eglSurface diff --git a/src/opengl/qglpixelbuffer_egl.cpp b/src/opengl/qglpixelbuffer_egl.cpp index ee0714f..db9e754 100644 --- a/src/opengl/qglpixelbuffer_egl.cpp +++ b/src/opengl/qglpixelbuffer_egl.cpp @@ -113,7 +113,7 @@ bool QGLPixelBufferPrivate::init(const QSize &size, const QGLFormat &f, QGLWidge } // Retrieve the actual format properties. - qt_egl_update_format(*ctx, format); + qt_glformat_from_eglconfig(format, ctx->config()); // Create the attributes needed for the pbuffer. QEglProperties attribs; -- cgit v0.12 From 1ceb2ec18056c41c040e3087f79860b7eb7b9d3f Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Wed, 10 Mar 2010 15:25:38 +0100 Subject: Update tst_QGL::getSetCheck to check for new (correct) behaviour Reviewed-By: Trond --- tests/auto/qgl/tst_qgl.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp index d89e463..15c0b66 100644 --- a/tests/auto/qgl/tst_qgl.cpp +++ b/tests/auto/qgl/tst_qgl.cpp @@ -227,12 +227,12 @@ void tst_QGL::getSetCheck() QCOMPARE(false, obj1.alpha()); QVERIFY(!obj1.testOption(QGL::AlphaChannel)); QVERIFY(obj1.testOption(QGL::NoAlphaChannel)); - obj1.setAlphaBufferSize(0); + obj1.setAlphaBufferSize(1); QCOMPARE(true, obj1.alpha()); // setAlphaBufferSize() enables alpha. - QCOMPARE(0, obj1.alphaBufferSize()); + QCOMPARE(1, obj1.alphaBufferSize()); QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setAlphaBufferSize: Cannot set negative alpha buffer size -2147483648"); obj1.setAlphaBufferSize(TEST_INT_MIN); - QCOMPARE(0, obj1.alphaBufferSize()); // Makes no sense with a negative buffer size + QCOMPARE(1, obj1.alphaBufferSize()); // Makes no sense with a negative buffer size obj1.setAlphaBufferSize(3); QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setAlphaBufferSize: Cannot set negative alpha buffer size -1"); obj1.setAlphaBufferSize(-1); @@ -243,11 +243,11 @@ void tst_QGL::getSetCheck() // int QGLFormat::stencilBufferSize() // void QGLFormat::setStencilBufferSize(int) QCOMPARE(-1, obj1.stencilBufferSize()); - obj1.setStencilBufferSize(0); - QCOMPARE(0, obj1.stencilBufferSize()); + obj1.setStencilBufferSize(1); + QCOMPARE(1, obj1.stencilBufferSize()); QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setStencilBufferSize: Cannot set negative stencil buffer size -2147483648"); obj1.setStencilBufferSize(TEST_INT_MIN); - QCOMPARE(0, obj1.stencilBufferSize()); // Makes no sense with a negative buffer size + QCOMPARE(1, obj1.stencilBufferSize()); // Makes no sense with a negative buffer size obj1.setStencilBufferSize(3); QTest::ignoreMessage(QtWarningMsg, "QGLFormat::setStencilBufferSize: Cannot set negative stencil buffer size -1"); obj1.setStencilBufferSize(-1); @@ -352,6 +352,7 @@ void tst_QGL::getSetCheck() // bool QGLFormat::accum() // void QGLFormat::setAccum(bool) + obj1.setAccumBufferSize(0); QCOMPARE(false, obj1.accum()); QVERIFY(!obj1.testOption(QGL::AccumBuffer)); QVERIFY(obj1.testOption(QGL::NoAccumBuffer)); -- cgit v0.12 From 477a3f2720710130dad88a1e8391f7eaf24ffb38 Mon Sep 17 00:00:00 2001 From: Kim Motoyoshi Kalland Date: Wed, 10 Mar 2010 14:17:50 +0100 Subject: Fixed assert failure when drawing dashes with raster engine. Reviewed-by: Samuel --- src/gui/painting/qpaintengine_raster.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index bfcf7db..03d0825 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -1725,9 +1725,10 @@ void QRasterPaintEngine::stroke(const QVectorPath &path, const QPen &pen) if (patternLength > 0) { int n = qFloor(dashOffset / patternLength); dashOffset -= n * patternLength; - while (dashOffset > pattern.at(dashIndex)) { + while (dashOffset >= pattern.at(dashIndex)) { dashOffset -= pattern.at(dashIndex); - dashIndex = (dashIndex + 1) % pattern.size(); + if (++dashIndex >= pattern.size()) + dashIndex = 0; inDash = !inDash; } } @@ -1738,7 +1739,6 @@ void QRasterPaintEngine::stroke(const QVectorPath &path, const QPen &pen) const QLineF *lines = reinterpret_cast(path.points()); for (int i = 0; i < lineCount; ++i) { - dashOffset = s->lastPen.dashOffset(); if (lines[i].p1() == lines[i].p2()) { if (s->lastPen.capStyle() != Qt::FlatCap) { QPointF p = lines[i].p1(); @@ -3626,13 +3626,14 @@ void QRasterPaintEnginePrivate::rasterizeLine_dashed(QLineF line, } else { *dashOffset = 0; *inDash = !(*inDash); - *dashIndex = (*dashIndex + 1) % pattern.size(); + if (++*dashIndex >= pattern.size()) + *dashIndex = 0; length -= dash; l.setLength(dash); line.setP1(l.p2()); } - if (rasterize && dash != 0) + if (rasterize && dash > 0) rasterizer->rasterizeLine(l.p1(), l.p2(), width / dash, squareCap); } } -- cgit v0.12 From ee6c26115959f46621f5a45f3fbe4a49989fd095 Mon Sep 17 00:00:00 2001 From: Kim Motoyoshi Kalland Date: Wed, 10 Mar 2010 12:51:46 +0100 Subject: Added clipping to the dashed stroke processor in the GL2 engine. Without clipping, the stroker could consume a huge amount of memory when scaling up cosmetic, dashed strokes. I also made QDashStroker clip more aggressively. Task-number: QTBUG-7832 Reviewed-by: Samuel --- src/gui/painting/qstroker.cpp | 116 +++++++++++++++++---- .../gl2paintengineex/qpaintengineex_opengl2.cpp | 10 +- .../gl2paintengineex/qtriangulatingstroker.cpp | 5 +- .../gl2paintengineex/qtriangulatingstroker_p.h | 4 +- 4 files changed, 105 insertions(+), 30 deletions(-) diff --git a/src/gui/painting/qstroker.cpp b/src/gui/painting/qstroker.cpp index 16e3c38..9740fce 100644 --- a/src/gui/painting/qstroker.cpp +++ b/src/gui/painting/qstroker.cpp @@ -1043,6 +1043,47 @@ QVector QDashStroker::patternForStyle(Qt::PenStyle style) return pattern; } +static inline bool lineRectIntersectsRect(qfixed2d p1, qfixed2d p2, const qfixed2d &tl, const qfixed2d &br) +{ + return ((p1.x > tl.x || p2.x > tl.x) && (p1.x < br.x || p2.x < br.x) + && (p1.y > tl.y || p2.y > tl.y) && (p1.y < br.y || p2.y < br.y)); +} + +// If the line intersects the rectangle, this function will return true. +static bool lineIntersectsRect(qfixed2d p1, qfixed2d p2, const qfixed2d &tl, const qfixed2d &br) +{ + if (!lineRectIntersectsRect(p1, p2, tl, br)) + return false; + if (p1.x == p2.x || p1.y == p2.y) + return true; + + if (p1.y > p2.y) + qSwap(p1, p2); // make p1 above p2 + qfixed2d u; + qfixed2d v; + qfixed2d w = {p2.x - p1.x, p2.y - p1.y}; + if (p1.x < p2.x) { + // backslash + u.x = tl.x - p1.x; u.y = br.y - p1.y; + v.x = br.x - p1.x; v.y = tl.y - p1.y; + } else { + // slash + u.x = tl.x - p1.x; u.y = tl.y - p1.y; + v.x = br.x - p1.x; v.y = br.y - p1.y; + } +#if defined(QFIXED_IS_26_6) || defined(QFIXED_IS_16_16) + qint64 val1 = qint64(u.x) * qint64(w.y) - qint64(u.y) * qint64(w.x); + qint64 val2 = qint64(v.x) * qint64(w.y) - qint64(v.y) * qint64(w.x); + return (val1 < 0 && val2 > 0) || (val1 > 0 && val2 < 0); +#elif defined(QFIXED_IS_32_32) + // Cannot do proper test because it may overflow. + return true; +#else + qreal val1 = u.x * w.y - u.y * w.x; + qreal val2 = v.x * w.y - v.y * w.x; + return (val1 < 0 && val2 > 0) || (val1 > 0 && val2 < 0); +#endif +} void QDashStroker::processCurrentSubpath() { @@ -1067,9 +1108,11 @@ void QDashStroker::processCurrentSubpath() if (qFuzzyIsNull(sumLength)) return; + qreal invSumLength = qreal(1) / sumLength; + Q_ASSERT(dashCount > 0); - dashCount = (dashCount / 2) * 2; // Round down to even number + dashCount = dashCount & -2; // Round down to even number int idash = 0; // Index to current dash qreal pos = 0; // The position on the curve, 0 <= pos <= path.length @@ -1077,11 +1120,12 @@ void QDashStroker::processCurrentSubpath() qreal doffset = m_dashOffset * m_stroke_width; // make sure doffset is in range [0..sumLength) - doffset -= qFloor(doffset / sumLength) * sumLength; + doffset -= qFloor(doffset * invSumLength) * sumLength; while (doffset >= dashes[idash]) { doffset -= dashes[idash]; - idash = (idash + 1) % dashCount; + if (++idash >= dashCount) + idash = 0; } qreal estart = 0; // The elements starting position @@ -1119,12 +1163,41 @@ void QDashStroker::processCurrentSubpath() estop = estart + elen; bool done = pos >= estop; + + if (clipping) { + // Check if the entire line can be clipped away. + if (!lineIntersectsRect(prev, e, clip_tl, clip_br)) { + // Cut away full dash sequences. + elen -= qFloor(elen * invSumLength) * sumLength; + // Update dash offset. + while (!done) { + qreal dpos = pos + dashes[idash] - doffset - estart; + + Q_ASSERT(dpos >= 0); + + if (dpos > elen) { // dash extends this line + doffset = dashes[idash] - (dpos - elen); // subtract the part already used + pos = estop; // move pos to next path element + done = true; + } else { // Dash is on this line + pos = dpos + estart; + done = pos >= estop; + if (++idash >= dashCount) + idash = 0; + doffset = 0; // full segment so no offset on next. + } + } + hasMoveTo = false; + move_to_pos = e; + } + } + // Dash away... while (!done) { QPointF p2; - int idash_incr = 0; bool has_offset = doffset > 0; + bool evenDash = (idash & 1) == 0; qreal dpos = pos + dashes[idash] - doffset - estart; Q_ASSERT(dpos >= 0); @@ -1138,39 +1211,36 @@ void QDashStroker::processCurrentSubpath() p2 = cline.pointAt(dpos/elen); pos = dpos + estart; done = pos >= estop; - idash_incr = 1; + if (++idash >= dashCount) + idash = 0; doffset = 0; // full segment so no offset on next. } - if (idash % 2 == 0) { + if (evenDash) { line_to_pos.x = qt_real_to_fixed(p2.x()); line_to_pos.y = qt_real_to_fixed(p2.y()); - // If we have an offset, we're continuing a dash - // from a previous element and should only - // continue the current dash, without starting a - // new subpath. - if (!has_offset || !hasMoveTo) { - emitMoveTo(move_to_pos.x, move_to_pos.y); - hasMoveTo = true; - } - if (!clipping - // if move_to is inside... - || (move_to_pos.x > clip_tl.x && move_to_pos.x < clip_br.x - && move_to_pos.y > clip_tl.y && move_to_pos.y < clip_br.y) - // Or if line_to is inside... - || (line_to_pos.x > clip_tl.x && line_to_pos.x < clip_br.x - && line_to_pos.y > clip_tl.y && line_to_pos.y < clip_br.y)) + || lineRectIntersectsRect(move_to_pos, line_to_pos, clip_tl, clip_br)) { + // If we have an offset, we're continuing a dash + // from a previous element and should only + // continue the current dash, without starting a + // new subpath. + if (!has_offset || !hasMoveTo) { + emitMoveTo(move_to_pos.x, move_to_pos.y); + hasMoveTo = true; + } + emitLineTo(line_to_pos.x, line_to_pos.y); + } else { + hasMoveTo = false; } + move_to_pos = line_to_pos; } else { move_to_pos.x = qt_real_to_fixed(p2.x()); move_to_pos.y = qt_real_to_fixed(p2.y()); } - - idash = (idash + idash_incr) % dashCount; } // Shuffle to the next cycle... diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index 5f0d920..d68a268 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -1155,16 +1155,20 @@ void QGL2PaintEngineExPrivate::stroke(const QVectorPath &path, const QPen &pen) // prepareForDraw() down below. updateMatrix(); + QRectF clip = q->state()->matrix.inverted().mapRect(q->state()->clipEnabled + ? q->state()->rectangleClip + : QRectF(0, 0, width, height)); + if (penStyle == Qt::SolidLine) { - stroker.process(path, pen); + stroker.process(path, pen, clip); } else { // Some sort of dash - dasher.process(path, pen); + dasher.process(path, pen, clip); QVectorPath dashStroke(dasher.points(), dasher.elementCount(), dasher.elementTypes()); - stroker.process(dashStroke, pen); + stroker.process(dashStroke, pen, clip); } if (opaque) { diff --git a/src/opengl/gl2paintengineex/qtriangulatingstroker.cpp b/src/opengl/gl2paintengineex/qtriangulatingstroker.cpp index 5229d3f..d952988 100644 --- a/src/opengl/gl2paintengineex/qtriangulatingstroker.cpp +++ b/src/opengl/gl2paintengineex/qtriangulatingstroker.cpp @@ -73,7 +73,7 @@ void QTriangulatingStroker::endCapOrJoinClosed(const qreal *start, const qreal * } -void QTriangulatingStroker::process(const QVectorPath &path, const QPen &pen) +void QTriangulatingStroker::process(const QVectorPath &path, const QPen &pen, const QRectF &) { const qreal *pts = path.points(); const QPainterPath::ElementType *types = path.elements(); @@ -480,7 +480,7 @@ QDashedStrokeProcessor::QDashedStrokeProcessor() m_dash_stroker.setCubicToHook(qdashprocessor_cubicTo); } -void QDashedStrokeProcessor::process(const QVectorPath &path, const QPen &pen) +void QDashedStrokeProcessor::process(const QVectorPath &path, const QPen &pen, const QRectF &clip) { const qreal *pts = path.points(); @@ -497,6 +497,7 @@ void QDashedStrokeProcessor::process(const QVectorPath &path, const QPen &pen) m_dash_stroker.setDashPattern(pen.dashPattern()); m_dash_stroker.setStrokeWidth(pen.isCosmetic() ? width * m_inv_scale : width); m_dash_stroker.setMiterLimit(pen.miterLimit()); + m_dash_stroker.setClipRect(clip); qreal curvyness = sqrt(width) * m_inv_scale / 8; if (count < 2) diff --git a/src/opengl/gl2paintengineex/qtriangulatingstroker_p.h b/src/opengl/gl2paintengineex/qtriangulatingstroker_p.h index 06b8a44..956d7cc 100644 --- a/src/opengl/gl2paintengineex/qtriangulatingstroker_p.h +++ b/src/opengl/gl2paintengineex/qtriangulatingstroker_p.h @@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE class QTriangulatingStroker { public: - void process(const QVectorPath &path, const QPen &pen); + void process(const QVectorPath &path, const QPen &pen, const QRectF &clip); inline int vertexCount() const { return m_vertices.size(); } inline const float *vertices() const { return m_vertices.data(); } @@ -96,7 +96,7 @@ class QDashedStrokeProcessor public: QDashedStrokeProcessor(); - void process(const QVectorPath &path, const QPen &pen); + void process(const QVectorPath &path, const QPen &pen, const QRectF &clip); inline void addElement(QPainterPath::ElementType type, qreal x, qreal y) { m_points.add(x); -- cgit v0.12 From 9b016ce33e4d63725239945a2fcf19a8d6af14cf Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Wed, 10 Mar 2010 15:55:23 +0100 Subject: Re-enable tst_QGL::glWidgetRenderPixmap on X11/EGL QGLWidget::renderPixmap now works under X11/EGL. Tested on both Fremantle and Harmattan. Reviewed-By: TrustMe --- tests/auto/qgl/tst_qgl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp index 15c0b66..8ee494f 100644 --- a/tests/auto/qgl/tst_qgl.cpp +++ b/tests/auto/qgl/tst_qgl.cpp @@ -1402,8 +1402,8 @@ void tst_QGL::glWidgetRenderPixmap() QImage reference(fb.size(), QImage::Format_RGB32); reference.fill(0xffff0000); -#ifdef QGL_EGL - QSKIP("renderPixmap() not yet supported under EGL", SkipAll); +#if defined(QGL_EGL) && !defined(Q_WS_X11) + QSKIP("renderPixmap() not yet supported under EGL on your platform", SkipAll); #endif QFUZZY_COMPARE_IMAGES(fb, reference); -- cgit v0.12 From 1436c4f2e41100b45eed58edc5fc290fa94c976b Mon Sep 17 00:00:00 2001 From: Kim Motoyoshi Kalland Date: Wed, 10 Mar 2010 17:11:47 +0100 Subject: Fixed "inconsistent dll linkage" warning on Windows. qt_memrotate90() was declared twice, once with and once without Q_GUI_EXPORT. Reviewed-by: Trond --- src/gui/painting/qmemrotate_p.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gui/painting/qmemrotate_p.h b/src/gui/painting/qmemrotate_p.h index 8df0520..2911860 100644 --- a/src/gui/painting/qmemrotate_p.h +++ b/src/gui/painting/qmemrotate_p.h @@ -82,8 +82,9 @@ QT_BEGIN_NAMESPACE void Q_GUI_QWS_EXPORT qt_memrotate270(const srctype*, int, int, int, desttype*, int) void Q_GUI_EXPORT qt_memrotate90(const quint32*, int, int, int, quint32*, int); +void Q_GUI_QWS_EXPORT qt_memrotate180(const quint32*, int, int, int, quint32*, int); +void Q_GUI_QWS_EXPORT qt_memrotate270(const quint32*, int, int, int, quint32*, int); -QT_DECL_MEMROTATE(quint32, quint32); QT_DECL_MEMROTATE(quint32, quint16); QT_DECL_MEMROTATE(quint16, quint32); QT_DECL_MEMROTATE(quint16, quint16); -- cgit v0.12 From 7baaea978200c82fdf65e3934cfa373edeca6524 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Wed, 10 Mar 2010 16:53:06 +0100 Subject: Slow QTreeView::layout() with many (> 10000) children When updating the QTreeViewItem::total field in layout(), we used to call QTreeViewPrivate::viewIndex() to get the parent item, which is O(n). We have now introduced 'parentItem' in QTreeViewItem wich makes this O(1), with a small penality when inserting and removing elements in QTreeViewPrivate::viewItems. The QTreeViewPrivate::checkViewItems() is left inside the code for further debugging. Reviewed-by: Olivier Task-number: QTBUG-8885 --- src/gui/itemviews/qtreeview.cpp | 57 +++++++++++++++++++++++++++++++---------- src/gui/itemviews/qtreeview_p.h | 9 ++++++- 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp index 78184a9..2d9f9c6 100644 --- a/src/gui/itemviews/qtreeview.cpp +++ b/src/gui/itemviews/qtreeview.cpp @@ -2480,6 +2480,7 @@ void QTreeView::rowsInserted(const QModelIndex &parent, int start, int end) for (int i = 0; i < delta; ++i) { QTreeViewItem &item = insertedItems[i]; item.index = d->model->index(i + start, 0, parent); + item.parentItem = parentItem; item.level = childLevel; item.hasChildren = d->hasVisibleChildren(item.index); item.hasMoreSiblings = !((i == delta - 1) && (parentRowCount == end +1)); @@ -2518,7 +2519,7 @@ void QTreeView::rowsInserted(const QModelIndex &parent, int start, int end) } } - d->viewItems.insert(insertPos, delta, insertedItems.at(0)); + d->insertViewItems(insertPos, delta, insertedItems.at(0)); if (delta > 1) { qCopy(insertedItems.begin() + 1, insertedItems.end(), d->viewItems.begin() + insertPos + 1); @@ -2952,6 +2953,37 @@ void QTreeViewPrivate::expand(int item, bool emitSignal) } } +void QTreeViewPrivate::insertViewItems(int pos, int count, const QTreeViewItem &viewItem) +{ + viewItems.insert(pos, count, viewItem); + for (int i = pos + count; i < viewItems.count(); i++) + if (viewItems[i].parentItem >= pos) + viewItems[i].parentItem += count; +} + +void QTreeViewPrivate::removeViewItems(int pos, int count) +{ + viewItems.remove(pos, count); + for (int i = pos; i < viewItems.count(); i++) + if (viewItems[i].parentItem >= pos) + viewItems[i].parentItem -= count; +} + +#if 0 +bool QTreeViewPrivate::checkViewItems() const +{ + for (int i = 0; i < viewItems.count(); ++i) { + const QTreeViewItem &vi = viewItems.at(i); + if (vi.parentItem == -1) { + Q_ASSERT(!vi.index.parent().isValid() || vi.index.parent() == root); + } else { + Q_ASSERT(vi.index.parent() == viewItems.at(vi.parentItem).index); + } + } + return true; +} +#endif + void QTreeViewPrivate::collapse(int item, bool emitSignal) { Q_Q(QTreeView); @@ -2980,14 +3012,11 @@ void QTreeViewPrivate::collapse(int item, bool emitSignal) expandedIndexes.erase(it); viewItems[item].expanded = false; int index = item; - QModelIndex parent = modelIndex; - while (parent.isValid() && parent != root) { - Q_ASSERT(index > -1); + while (index > -1) { viewItems[index].total -= total; - parent = parent.parent(); - index = viewIndex(parent); + index = viewItems[index].parentItem; } - viewItems.remove(item + 1, total); // collapse + removeViewItems(item + 1, total); // collapse q->setState(oldState); if (emitSignal) { @@ -3152,7 +3181,7 @@ void QTreeViewPrivate::layout(int i) } viewItems.resize(count); } else if (viewItems[i].total != (uint)count) { - viewItems.insert(i + 1, count, QTreeViewItem()); // expand + insertViewItems(i + 1, count, QTreeViewItem()); // expand } else { expanding = false; } @@ -3174,6 +3203,7 @@ void QTreeViewPrivate::layout(int i) item->hasMoreSiblings = true; item = &viewItems[last]; item->index = current; + item->parentItem = i; item->level = level; item->height = 0; item->spanning = q->isFirstColumnSpanned(current.row(), parent); @@ -3195,16 +3225,14 @@ void QTreeViewPrivate::layout(int i) // remove hidden items if (hidden > 0) - viewItems.remove(last + 1, hidden); // collapse + removeViewItems(last + 1, hidden); // collapse if (!expanding) return; // nothing changed - while (parent != root) { - Q_ASSERT(i > -1); + while (i > -1) { viewItems[i].total += count - hidden; - parent = parent.parent(); - i = viewIndex(parent); + i = viewItems[i].parentItem; } } @@ -3757,7 +3785,7 @@ void QTreeViewPrivate::rowsRemoved(const QModelIndex &parent, item += count; } else if (modelIndex.row() <= end) { // removed - viewItems.remove(item, count); + removeViewItems(item, count); removedCount += count; lastChildItem -= count; } else { @@ -3765,6 +3793,7 @@ void QTreeViewPrivate::rowsRemoved(const QModelIndex &parent, // moved; update the model index viewItems[item].index = model->index( modelIndex.row() - delta, modelIndex.column(), parent); +// viewItems[item].parentItem = parentItem; } item += count; } diff --git a/src/gui/itemviews/qtreeview_p.h b/src/gui/itemviews/qtreeview_p.h index 589a224..7893e04 100644 --- a/src/gui/itemviews/qtreeview_p.h +++ b/src/gui/itemviews/qtreeview_p.h @@ -62,9 +62,10 @@ QT_BEGIN_NAMESPACE struct QTreeViewItem { - QTreeViewItem() : expanded(false), spanning(false), hasChildren(false), + QTreeViewItem() : parentItem(-1), expanded(false), spanning(false), hasChildren(false), hasMoreSiblings(false), total(0), level(0), height(0) {} QModelIndex index; // we remove items whenever the indexes are invalidated + int parentItem; // parent item index in viewItems uint expanded : 1; uint spanning : 1; uint hasChildren : 1; // if the item has visible children (even if collapsed) @@ -136,6 +137,12 @@ public: int viewIndex(const QModelIndex &index) const; QModelIndex modelIndex(int i, int column = 0) const; + void insertViewItems(int pos, int count, const QTreeViewItem &viewItem); + void removeViewItems(int pos, int count); +#if 0 + bool checkViewItems() const; +#endif + int firstVisibleItem(int *offset = 0) const; int columnAt(int x) const; bool hasVisibleChildren( const QModelIndex& parent) const; -- cgit v0.12